借用ElasticStack的一张图,很好的阐述了LEK的在数据处理中的位置
![在这里插入图片描述](https://img8.php1.cn/3cdc5/18414/a6e/e942df8c86e1b76a.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9wZW5nc2hpeXUuYmxvZy5jc2RuLm5ldA==,size_16,color_FFFFFF,t_70)
一、环境:
版本均未5.2.0
https://www.elastic.co/cn/downloads/past-releases
1、filebeat:
https://www.elastic.co/cn/downloads/past-releases/filebeat-5-2-0
2、logstash
https://www.elastic.co/cn/downloads/past-releases/logstash-5-2-0
3、elasticsearch:
https://www.elastic.co/cn/downloads/past-releases/elasticsearch-5-2-0
4、kibana:
https://www.elastic.co/cn/downloads/past-releases/kibana-5-2-0
二、日志准备
使用python脚本定时生成模拟日志
generator_log.py
import time
from chinesename import ChineseNamecn = ChineseName()while True:now = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())message = "{} {}\n".format(now, cn.getName())print(message)with open("demo.log", "a", encoding="utf-8") as f:f.write(message)time.sleep(3)
日志示例(日期 姓名):
2019-06-13 18:01:31 容休
三、filebeat
1、配置
修改配置文件filebeat.yml
可以选择直接将数据传入Elasticsearch,也可以传入Logstash处理
filebeat.prospectors:
- input_type: logpaths:
- /var/log/*.log
output.logstash:hosts: ["localhost:5044"]
2、启动:
./filebeat -e -c filebeat.yml -d "publish"
参考:开始使用Filebeat
![在这里插入图片描述](https://img8.php1.cn/3cdc5/18414/a6e/3fb0eb2d2ddc6079.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9wZW5nc2hpeXUuYmxvZy5jc2RuLm5ldA==,size_16,color_FFFFFF,t_70)
四、logstash
1、匹配说明
(1)内置匹配
%{SYNTAX:SEMANTIC}
(2)ruby正则
(?pattern)
关于Ruby的正则:
Ruby 正则表达式: https://www.runoob.com/ruby/ruby-regular-expressions.html
Ruby 正则匹配测试: https://rubular.com/
2、配置
新建一个文件夹存放自定义匹配模式
$ mkdir ./patterns
$ cat ./patterns/datetime.re
DATETIME \d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}
es-pipeline.conf
input {beats {port => "5044"}
}
filter {grok {patterns_dir => ["./patterns"]match => { "message" => "%{DATETIME:logdate} (?(.*))"}remove_field => "message"}date {match => ["logdate", "yyyy-MM-dd HH:mm:ss"]}
}
output {stdout { codec => rubydebug }elasticsearch {hosts => [ "localhost:9200" ]}
}
3、启动logstash
$ ./bin/logstash -f es-pipeline.conf --config.test_and_exit
$ ./bin/logstash -f es-pipeline.conf --config.reload.automatic
![在这里插入图片描述](https://img8.php1.cn/3cdc5/18414/a6e/7a25acc431eaf02e.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9wZW5nc2hpeXUuYmxvZy5jc2RuLm5ldA==,size_16,color_FFFFFF,t_70)
五、kibana中查询结果
1、启动
$ elasticsearch
$ kibana
2、查询
GET /logstash-2019.06.13/_search
{"sort": [{"@timestamp": {"order": "desc"}}]
}# 查询结果
{"_index": "logstash-2019.06.13","_type": "log","_id": "AWtQTwv8vaBpxF8s4wUp","_score": null,"_source": {"@timestamp": "2019-06-13T10:08:02.000Z","offset": 197738,"logdate": "2019-06-13 18:08:02","@version": "1","beat": {"hostname": "bogon","name": "bogon","version": "5.2.0"},"input_type": "log","host": "bogon","source": "/Users/qmp/Desktop/log/demo.log","text": "伯镟","type": "log","tags": ["beats_input_codec_plain_applied"]},"sort": [1560420482000]
}
图形化查看日志数量曲线图
![在这里插入图片描述](https://img8.php1.cn/3cdc5/18414/a6e/5522272578b94107.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9wZW5nc2hpeXUuYmxvZy5jc2RuLm5ldA==,size_16,color_FFFFFF,t_70)
参考
使用Logstash filter grok过滤日志文件
Logstash使用grok进行日志过滤
Logstash介绍