ELK搭建环境之配置logstash监听文件并利用grok插件进行切割利于统计

一、配置ELK环境在logstash和elasticsearch之间建立通信,并能查看对应的索引、日志信息

1.本地下载logstash6.4.2运行包,不会装请移步 (ElasticSearch+LogStash+Kibana)ELK搭建在Mac/Linux系统上6.4.2版本

2.解压并进行基础配置,配置如下:

默认配置文件在安装目录 logstash6.4.2/config/logstash-sample.conf

# 监听本地目录下的test.log日志文件
input {
  file {
      path => ["/Users/chenhailong/daily-test/test.log"]
  }
}
# 配置日志发送的目标elasticsearch服务
output {
  elasticsearch {
    hosts => ["http://xxxx.xx.xxx.xx:9200"]
    index => "grok-test"
    user => "username"
    password => "password"
  }
}

3.确保elasticsearch服务是可以访问的,(开启代理、翻墙、防火墙、IP不通可能造成无法通信)

在浏览器键入对应地址:http://xxxx.xx.xxx.xx:9200

显示如下:

{
  "name" : "wqbVDEq",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "lq8YkTH4Q7eslqvd0pn9Kg",
  "version" : {
    "number" : "6.4.2",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "04711c2",
    "build_date" : "2018-09-26T13:34:09.098244Z",
    "build_snapshot" : false,
    "lucene_version" : "7.4.0",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

4.在客户端保证有效的日志文件,日志记录有序的生成。

客户端的

日志文件为:/Users/chenhailong/daily-test/test.log

日志格式为:2018-12-31,16:12:1546245470 INFO sdklog &event_id=10003&uuid=90b7786d-a905-48aa-93e9-bc1cf64ffce2&event_type=2&device_id=37037&session_id=1545899195566_37037&uid=2D9CBA4701227157E050840AF2422B52&date=2018-12-27&time=16:26:36&ts=1545899196409&

在需要测试时,执行脚本追加日志记录务必保证日志文件中有新的追加记录,确保监听到了新的数据。否则,没有新数据可能看不到效果

5.启动logstash

#指定配置文件启动

./bin/logstash -f ../conf/logstash-sample.conf

6.如果一切顺利的话,可以在kibana控制台看到相关信息

a. kibana 》系统管理 》 Index Mangement 》 可以搜索查看到对应的 “grok-test” 索引名称
b. kibana 》系统管理 》 Index Patterns 》可以创建索引前缀
c. kibana 》发现 》 可以搜索到 “grok-test”索引文件下的所有日志记录,如下

二:对日志进行切割

1.前期了解:

https://github.com/logstash-plugins/logstash-patterns-core/blob/master/patterns/grok-patterns

2.在kibana后台 》开发工具 》 Grok Debugger进行测试,如下图

不会用,请移步 使用kibana的开发工具console做一些elasticsearch的基本查询和设置

3.日志切割请参考,注意格式

%{TIMESTAMP_ISO8601:date} %{LOGLEVEL:level} %{WORD:type} &event_id=%{NUMBER:event_id}&uuid=%{USERNAME:uuid}&event_type=%{INT:event_type}&device_id=%{INT:device_id}&session_id=%{USERNAME:session_id}&uid=%{WORD:uid}&date=%{USERNAME:ymd}&time=%{TIME:time}&ts=%{NUMBER:ts}&url=%{URI:url}

4.修改配置文件,增加grok插件

# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.

input {
  file {
      path => ["/Users/chenhailong/daily-test/test.log"]
  }
}

filter {
  #定义数据的格式
  grok {
    match => { "message" => "%{TIMESTAMP_ISO8601:date} %{LOGLEVEL:level} %{WORD:type} &event_id=%{NUMBER:event_id}&uuid=%{USERNAME:uuid}&event_type=%{INT:event_type}&device_id=%{INT:device_id}&session_id=%{USERNAME:session_id}&uid=%{WORD:uid}&date=%{USERNAME:ymd}&time=%{TIME:time}&ts=%{NUMBER:ts}&url=%{URI:url}"}
  }
}

output {
  elasticsearch {
    hosts => ["http://xxx.xx.xxx.xx:9200"]
    index => "grok-test"
    user => "username"
    password => "password"
  }
}

5.打开kibana 》 发现 》 搜索grok-test索引

会发现日志已经按照设定的格式进行切切割。这样就可以进行数据的报表分析,更加直观化。更有效的利用日志数据。

不局限于日常日志,也可以针对性的记录相关业务数据。

6.配置文件中还可以增加多种插件配合处理

具体可以移步查看官方文件,更加详细,更加专业

https://www.elastic.co/guide/en/logstash/current/filter-plugins.html

至此:ELK的学习使用就告一段落,有需要再去细致研究。

发布于:2019-10-17 09:20:38