基于CentOS 6.9搭建ELK环境指南(2)

grok: 通过正则解析和结构化任何文本。Grok 目前是logstash最好的方式对非结构化日志数据解析成结构化和可查询化。logstash内置了120个匹配模式,满足大部分需求。

mutate: 在事件字段执行一般的转换。可以重命名、删除、替换和修改事件字段。

drop: 完全丢弃事件,如debug事件。

clone: 复制事件,可能添加或者删除字段。

geoip: 添加有关IP地址地理位置信息。

output 是logstash工作的最后一个阶段,负责将数据输出到指定位置,兼容大多数应用,常用的有:

elasticsearch: 发送事件数据到 Elasticsearch,便于查询,分析,绘图。

file: 将事件数据写入到磁盘文件上。

mongodb:将事件数据发送至高性能NoSQL mongodb,便于永久存储,查询,分析,大数据分片。

redis:将数据发送至redis-server,常用于中间层暂时缓存。

graphite: 发送事件数据到graphite。

statsd: 发送事件数据到 statsd。

其中input和output是必须的,logstash由一个e参数,可以在终端调试配置文件

最简单的输入输出

/usr/share/logstash/bin# ./logstash -e 'input { stdin { } } output { stdout {} }'

基于CentOS 6.9搭建ELK环境指南

采用格式化输出

logstash -e 'input { stdin { } } output { stdout { codec => rubydebug } }'

基于CentOS 6.9搭建ELK环境指南

这边,我们是从终端输入,同时也从终端输出,但在实际状况中几乎不可能这么做,那先打通输出环节吧,把输出的内容发送到

Elasticsearch

首先启动Elasticsearch,确保9200端口开着,前边已经启动了。然后执行

./logstash -e 'input { stdin { } } output { elasticsearch { hosts => localhost } }'

基于CentOS 6.9搭建ELK环境指南

确认一下

curl 'http://localhost:9200/_search?pretty'

基于CentOS 6.9搭建ELK环境指南

logstash的e参数调试是很方便,但是内容多的话就不方便了,logstash还有一个f参数,用来从配置文件中读取信息,简单示例

#logstash_simple.conf input { stdin { } } output { elasticsearch { hosts => localhost } } # ./logstash -f ../config/logstash_simple.conf ![75879570.png](!small) ![75898507.png](!small) 然后说一下过滤器 #logstash.conf input { stdin {} } filter { grok { match => ["message", "%{COMBINEDAPACHELOG}"] } } output { elasticsearch { hosts => localhost } }

filter 以何种规则从字符串中提取出结构化的信息,grok是logstash里的一款插件,可以使用正则表达式匹配日志,上文中的%{COMBINEDAPACHELOG}是内置的正则,用来匹配apache access日志.

测试信息

127.0.0.1 - - [11/Dec/2013:00:01:45 -0800] "GET /xampp/status.php HTTP/1.1" 200 3891 "http://cadenza/xampp/navi.php" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:25.0) Gecko/20100101 Firefox/25.0"

基于CentOS 6.9搭建ELK环境指南

curl 'http://localhost:9200/_search?pretty'

基于CentOS 6.9搭建ELK环境指南

分析本地的apache日志文件

首先启动elasticsearch

/etc/init.d/elasticsearch start

然后创建logstash的json文件

#logstash_apache.conf input { file { path => "/tmp/access.log" type => "apache" start_position => "beginning" } } filter { grok { match => { "message" => "%{COMBINEDAPACHELOG}" } } date { match => [ "timestamp" , "dd/MMM/YYYY:HH:mm:ss Z"] } } output { elasticsearch { hosts => localhost } }

启动logstash

./logstash -f ../config/logstash_apache.conf

基于CentOS 6.9搭建ELK环境指南

根据日志的时间修改一下时间段

基于CentOS 6.9搭建ELK环境指南

然后是我最喜欢的功能,基于IP的地理位置显示

基于CentOS 6.9搭建ELK环境指南

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/3c8ae6e99a79f3f7a42764a1d095272f.html