ELK 不是一款软件,而是 Elasticsearch、Logstash 和 Kibana 三种软件产品的首字母缩写。这三者都是开源软件,通常配合使用,而且又先后归于 Elastic.co 公司名下,所以被简称为 ELK Stack。根据 Google Trend 的信息显示,ELK Stack 已经成为目前最流行的集中式日志解决方案。
Elasticsearch:分布式搜索和分析引擎,具有高可伸缩、高可靠和易管理等特点。基于 Apache Lucene 构建,能对大容量的数据进行接近实时的存储、搜索和分析操作。通常被用作某些应用的基础搜索引擎,使其具有复杂的搜索功能;
Logstash:数据收集引擎。它支持动态的从各种数据源搜集数据,并对数据进行过滤、分析、丰富、统一格式等操作,然后存储到用户指定的位置;
Kibana:数据分析和可视化平台。通常与 Elasticsearch 配合使用,对其中数据进行搜索、分析和以统计图表的方式展示;
Filebeat:ELK 协议栈的新成员,一个轻量级开源日志文件数据搜集器,基于 Logstash-Forwarder 源代码开发,是对它的替代。在需要采集日志数据的 server 上安装 Filebeat,并指定日志目录或日志文件后,Filebeat 就能读取数据,迅速发送到 Logstash 进行解析,亦或直接发送到 Elasticsearch 进行集中式存储和分析。
ELK可以在MAC、 WINDOWS、 LINUX上部署,根据具体情况,只介绍在centos下的ELK 通过 tar包解压编译的方式部署,在部署之前,需要在环境中安装Java 1.8或以上版本。如有别的需要,可自行查看官网:https://www.elastic.co/products
Elasticsearch:
1. curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.6.1.tar.gz (版本号自行决定,但必须统一)
2. tar -xvf elasticsearch-6.6.1.tar.gz
3. cd elasticsearch-6.6.1/bin
4. ./elasticsearch
Logstash:
1. curl -L -O https://artifacts.elastic.co/downloads/logstash/logstash-6.6.1.tar.gz
2. tar -xvf logstash-6.6.1.tar.gz
3. cd logstash-6.6.1.tar.gz
4. ./logstash –f {config-file}
Kibana:
1. curl -O https://artifacts.elastic.co/downloads/kibana/kibana-6.6.1-linux-x86_64.tar.gz
2. shasum -a 512 kibana-6.6.1-linux-x86_64.tar.gz
3. tar -xzf kibana-6.6.1-linux-x86_64.tar.gz
4. cd kibana-6.6.1-linux-x86_64/
Filebeat:
1. curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.6.1-linux-x86_64.tar.gz
2. tar xzvf filebeat-6.6.1-linux-x86_64.tar.gz
filebeats主要在服务器上监控日志的生成和增量监控,一旦有新的日志生成,就会将新的日志发送到logstash服务器上。如果要监控日志,需要在filebeats根目录下的filebeats.yml添加配置。配置信息参考如下:
1. filebeat.prospectors:
2. - input_type: log #输入源
3. enabled: true
4. paths: #日志路径配置
5. - /home/workspace/Kettle/jobLog.log
6. #exclude_lines: '-----' #输出时忽略匹配行
7. include_lines: 'ERROR' #只输出匹配行
8. fields: #自定义域,将会加到输出的json格式数据中
9. feature: kettle_log_test #日志类型
10. ip: 172.17.128.18 #服务器IP
11. env: dev #环境
12. multiline: #如果有输出则输出多少行
13. pattern: '[0-9]{4}/[0-9]{2}/[0-9]{2}\s[0]{2}:[0-9]{2}:[0-9]{2}\s-\s.{10,20}\.0'
14. negate: false
15. match: before
16. max_lines: 3
17. - input_type: log #如果有多个日志需要监控,只需要加-input_type即可
18. enabled: true
19. paths:
20. - /home/workspace/Calculation/WeQuantNightlyTaskRun.log
21. include_lines: 'ERROR'
22. fields:
23. feature: cal_log_test
24. ip: 172.17.128.18
25. env: dev
26. multilone:
27. pattern: '[0-9]{4}/[0-9]{2}/[0-9]{2}\s[0]{2}:[0-9]{2}:[0-9]{2}\s-\s.{10,20}\.0'
28. negare: false
29. match: before
30. max_lines: 3
31. output.logstash: #输出配置,此处输出到logstash服务器上
32. hosts: ["10.6.11.156:5044"]
以上的参考配置,如需要更详细的配置信息,请访问:https://www.elastic.co/guide/en/beats/filebeat/current/index.html
在此环境中,logstash不需要去监控日志的生成和增量。Logstash只需要接收filebeats传输过来的数据,并且过滤垃圾数据,最后将收集的日志按文件输出或者输出到Elasticsearch中存储即可。以下是logstash配置信息参考:
1. input { #输入配置,此处是监听filebeats数据传输端口
2. beats {
3. port => 5044
4. }
5.
6. }
7.
8. filter { #过滤器,支持grok表达式(此处只是简单配置,具体请去官
9. grok { #网查看相关文档)
10. patterns_dir => ["/home/zhenqinghe/elk/logstash-6.6.0/config/patterns"]
11. match => {
12. "message" => "%{KETTLE_DATE:kettle_date}"
13. }
14. }
15.
16. date {
17. match => ["kettle_date", "yyyy/MM/dd HH:mm:ss"]
18. }
19. }
20.
21. output { #输出配置,此处是按环境和日志内容进行分类存储
22. if [fields][env] == "dev" {
23. if [fields][feature] == "cal_log_test" {
24. file {
25. path => "/home/zhenqinghe/elk/resultlog/test_dev_cal_%{+YYYYMMdd}.log"
26. }
27. }
28. if [fields][feature] == "kettle_log_test" {
29. file {
30. path => "/home/zhenqinghe/elk/resultlog/test_dev_kettle_%{+YYYYMMdd}.log"
31. }
32. }
33. }
34. if [fields][env] == "uat" {
35. if [fields][feature] == "cal_log_test" {
36. file {
37. path => "/home/zhenqinghe/elk/resultlog/test_uat_cal_%{+YYYYMMdd}.log"
38. }
39. }
40. if [fields][feature] == "kettle_log_test" {
41. file {
42. path => "/home/zhenqinghe/elk/resultlog/test_uat_kettle_%{+YYYYMMdd}.log"
43. }
44. }
45. }
46. stdout{
47. }
48. }
由于logstash配置文件信息过于复杂,以上只是简单演示,具体信息还请查看官网:https://www.elastic.co/guide/en/logstash/current/getting-started-with-logstash.html
或者:
https://doc.yonyoucloud.com/doc/logstash-best-practice-cn/get_start/index.html
WARNING: logstash在启动的时候需要指定配置文件:./logstash –f {config-file-name}