博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用 logstash, elasticsearch, kibana 搭建日志分析系统
阅读量:7240 次
发布时间:2019-06-29

本文共 2431 字,大约阅读时间需要 8 分钟。

简介

:接收,处理,转发日志

:文档型数据库,实时的分布式搜索和分析引擎
:查询、生成报表的web GUI

Logstash

配置

在安装目录bin文件夹里新建一个logstash.conf

填入以下配置

input { stdin {} }filter {    grok {        match => ["message",  "%{COMBINEDAPACHELOG}"]    }}output { stdout { codec => rubydebug } }

配置文件语法类似Ruby

  • input: 数据的来源,可以是文件,tcp等等
  • filter 以何种规则从字符串中提取出结构化的信息,grok是logstash里的一款插件,可以使用正则表达式匹配日志,上文中的%{COMBINEDAPACHELOG}是内置的正则,用来匹配apache access日志,更多pattern在*
  • output 配置保存解析结果,可以是文件,es数据库等多种方式

* patterns本地路径大致为:logstash-1.5.0\vendor\bundle\jruby\1.9\gems\logstash-patterns-core-0.1.10\patterns

然后执行 logstash -f logstash.conf ,windows下是logstash.bat

windows有个坑,路径中有空格会启动失败,编辑logstash.bat文件,替换第6行为

CALL "%SCRIPT_DIR%\setup.bat"

测试日志

在控制台输入一条apache日志

127.0.0.1 - - [05/May/2015:15:45:21 +0800] "GET /t/10002 HTTP/1.1" 200 7593 "http://127.0.0.1/index" "Mozilla/4.0 (compatib1e; MSIE 6.1; Windows NT)"

返回结果

可以看到原来的一行字符串,经过logstash的处理后,输出json格式的结果,得到有语义的结构化文档

以上就是Logstash的主要功能:

1. 接收日志 (input)
2. 处理成json格式的文档 (filter)
3. 输出日志 (output)

日志文件处理

再试试文件的

input {    file {        path => "D:/Program Files/logstash-1.5.0/log/access_test.log"        type => "apache"        start_position => "beginning"    }}filter {     grok {         match => {            "message" => "%{COMBINEDAPACHELOG}"        }    }    date {        locale => "en"        match => [ "timestamp" , "dd/MMM/YYYY:HH:mm:ss Z", "ISO8601" ]    }}output {    file {        path => "D:/Program Files/logstash-1.5.0/log/logstash-access_test.log"        type => "apache"        start_position => "beginning"    }}

Elasticsearch

启动与管理

安装管理监控工具Marvel

./bin/plugin -i elasticsearch/marvel/latest

启动Elasticsearch

./bin/elasticsearch

ubuntu有个,主机重启后,service启动es报touch的pid文件不存在,按修改/etc/init.d/elasticsearch

访问查看引擎是否启动

Marvel管理地址:

导入数据

修改logstash.conf的output部分

output {    elasticsearch {        host => "127.0.0.1"        protocol => "http"        index => "logstash-test-%{type}-%{host}"        workers => 5        template_overwrite => true    }}

再运行一次logstash,输出的结果就导入elasticsearch了

Documents代表文档数量,大约有两万多个

kibana

启动

./bin/kibana

然后访问

创建一个索引模式,再点击顶部的“Discover”

默认的过滤器只显示15分钟以内的日志,需要点右上角的钟表图标修改一下时间段,切换到“Absolute”标签

这里改成日志的起止时间2014-11-012015-06-1

Discover

Discover界面功能主要分四部分

1. 搜索功能,可以是Lucene语法,也开始是DSL
2. 左边可以按字段过滤,查看数量最多的Top 5
3. 很直观的反映访问量的直方图,可以自定义时间频率,右上角是当前的结果总数
4. 筛选后的文档结果

在搜索框输入 response: not 200

Visualize

下面用独立IP简单统计用户都用什么浏览器

点击 Visualize - Data Table - From a new search,填入下图左侧的查询条件

至此,日志分析平台雏形已现,已经可以从海量日志中查询我们想要的数据,更多功能及应用见下篇。


转载地址:http://rpfbm.baihongyu.com/

你可能感兴趣的文章
给asterisk1.8.7添加menuselct选项
查看>>
小白学数据分析----->在clementine基于两步聚类算法的次日留存分析探索
查看>>
01hibernate_first
查看>>
对LigerUI控件库进行扩展,自定义extend和override,并扩展事件前与事件后
查看>>
Tengine——安装起来真费劲
查看>>
关于Oracle过程,函数的经典例子及解析
查看>>
Android-PullToRefresh(一)
查看>>
JavaScript+XML+VBA导出报表初步构想
查看>>
UVA1452|LA4727-----Jump------经典的约瑟夫公式的变形(DP)
查看>>
Android SDK安装教程
查看>>
sourceinsight 相对路径设置
查看>>
mysql describe
查看>>
程序员的自我修养 学习笔记(5)
查看>>
DNS安全浅议、域名A记录(ANAME),MX记录,CNAME记录 专题
查看>>
数据字典生成工具之旅(9):多线程使用及介绍
查看>>
Java编程思想学习笔记——注解
查看>>
使用HTML5新特性Mutation Observer实现编辑器的撤销和撤销回退操作
查看>>
Java可变参数传递中可以接收多个对象
查看>>
Python中的正则表达式(re)
查看>>
2016 新学++ , 回顾过去展望未来
查看>>