一、配置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的学习使用就告一段落,有需要再去细致研究。