ELK安装配置

1.ELK是什么

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安装配置_第1张图片

 

2.安装部署ELK

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

 

 

3.filebeats日记监控客户端部署和配置

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

 

 

4、logstash服务器端接收、过滤日志配置

在此环境中,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}

你可能感兴趣的:(linux,java)