Elastic Stack:Elasticsearch 、 Logstash和Kibana +Beats
(1)Elasticsearch是个开源分布式搜索引擎,用于搜集、分析、存储日志。
(2)Logstash用于搜集,分析,过滤日志的工具,将日志进行过滤,修改等操作发往Elasticsearch。
(3)Kibana是开源免费的可视化组件,将ElasticSearch提供的日志数据通过 Web 界面展示。
(4)Beats是轻量级日志采集器,Logstash对内存、CPU等资源消耗比较高,相比Beats所占系统的CPU和内存几乎可以忽略不计。
Beats的六个成员:Filebeat:日志文件;Metricbeat:指标;Packetbeat:网络数据;Winlogbeat:windows日志文件;Auditbeat:审计数据;Heartbeat:运行时间监控。
一、环境配置
(一)、虚拟机准备
节点IP及节点规划 | 主机名 |
---|---|
10.30.59.205:Elasticsearch+Kibana(主) | elk-1 |
10.30.59.206:Elasticsearch+Logstash(数据) | elk-2 |
10.30.59.207:Elasticsearch(数据)+Beats | elk-3 |
(二)、三个节点修改主机名并关闭防火墙
205节点主机:hostnamectl set-hostname elk-1
206节点主机:hostnamectl set-hostname elk-2
207节点主机:hostnamectl set-hostname elk-3
(三)、配置hosts文件
三个节点配置相同
(四)、三个节点全部安装openjdk1.8
yum install -y java-1.8.0-openjdk
安装完成检查jdk版本
二、安装Elasticserach
(一)在elk-1上下载rpm包
(1)yum install wget -y
(2)wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.0.0.rpm
用scp命令将rpm包拷贝在elk-2和elk-3的root目录下
1.scp elasticsearch-6.0.0.rpm root@elk-2:/root
2.scp elasticsearch-6.0.0.rpm root@elk-3:/root
(二)三个节点安装Elasticserach
rpm -ivh elasticsearch-6.0.0.rpm
(三)、配置Elasticsearch
修改配置文件:/etc/elasticsearch/elasticsearch.yml
elk-1节点:对配置文件添加或修改
cluster.name: ELK //配置es的集群名称
node.name: elk-1 //节点名
node.master: true //指定该节点是否有资格被选举成为node
node.data: false //指定该节点是否存储索引数据
network.host: 10.30.59.205 //设置绑定的ip地址
http.port: 9200 //启动的es对外访问的http端口,默认9200
discovery.zen.ping.unicast.hosts: ["elk-1","elk-2","elk-3"] //设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点
elk-2节点:对配置文件添加或修改
cluster.name: ELK
node.name: elk-2
node.master: false
node.data: true
network.host: 10.30.59.206
http.port: 9200
discovery.zen.ping.unicast.hosts: ["elk-1","elk-2","elk-3"]
elk-3节点:对配置文件添加或修改
cluster.name: ELK
node.name: elk-3
node.master: false
node.data: true
network.host: 10.30.59.207
http.port: 9200
discovery.zen.ping.unicast.hosts: ["elk-1","elk-2","elk-3"]
(四)、启动服务并查看端口
systemctl start elasticsearch
(五)、检测集群状态
节点elk-1上执行:curl '10.30.59.205:9200/_cluster/health?pretty'
[root@elk-1 ~]# curl '10.30.59.205:9200/_cluster/health?pretty'
{
"cluster_name" : "elk",
"status" : "green", //为green则代表健康没问题,yellow或者red,则是集群有问题
"timed_out" : false, //是否有超时
"number_of_nodes" : 3, //集群中的节点数量
"number_of_data_nodes" : 2, //集群中data节点的数量
"active_primary_shards" : 0,
"active_shards" : 0,
"relocating_shards" : 0,
"initializing_shards" : 0,
"unassigned_shards" : 0,
"delayed_unassigned_shards" : 0,
"number_of_pending_tasks" : 0,
"number_of_in_flight_fetch" : 0,
"task_max_waiting_in_queue_millis" : 0,
"active_shards_percent_as_number" : 100.0
}
三、主节点部署Kibana
注意:只需elk-1节点部署
(一)下载Kibana的rpm包并安装Kibana
1.wget https://artifacts.elastic.co/downloads/kibana/kibana-6.0.0-x86_64.rpm
2.rpm -ivh kibana-6.0.0-x86_64.rpm
(二)配置Kibana
修改配置文件:/etc/kibana/kibana.yml
(三)启动服务并查看端口
1.systemctl start kibana
2.netstat -ntpl
(四)访问网页
四、数据节点Logstash部署
注意:只需elk-2 节点 部署
(一)下载并安装Logstash的rpm包
1.wget https://artifacts.elastic.co/downloads/logstash/logstash-6.0.0.rpm
2.rpm -ivh logstash-6.0.0.rpm
(二)配置logstash收集syslog日志
(1)新建配置文件:/etc/logstash/conf.d/syslog.conf
在配置文件中添加以下内容;
input { //定义日志源
syslog {
type => "system-syslog" //定义类型
port => 10514
}
}
output { //定义日志输出
elasticsearch {
hosts => ["10.30.59.206:9200"]
index => "system-syslog-%{+YYYY.MM}"
}
}
检查配置文件是否错误:
1.ln -s /usr/share/logstash/bin/logstash /usr/bin //创建软连接,方便使用logstash命令
2.logstash --path.settings /etc/logstash/ -f /etc/logstash/conf.d/syslog.conf --config.test_and_exit
// --path.settings : 用于指定logstash的配置文件所在的目录
//-f : 指定需要被检测的配置文件的路径
//--config.test_and_exit : 指定检测完之后就退出
(2)修改配置文件:/etc/rsyslog.conf
在#### RULES下面增加一行
*.* @@10.30.59.206:10514
重启服务:systemctl restart rsyslog
(3)修改配置文件:/etc/logstash/logstash.yml
http.host: "10.30.59.206"
(三)修改日志权限
1.ll /var/lib/logstash/
2.chown -R logstash /var/lib/logstash/
(四)启动服务并查看端口
1.systemctl start logstash
2.netstat -lntp
(五)在Kibana服务器上查看日志索引
curl '10.30.59.206:9200/_cat/indices?v'
(六)web界面
四、数据节点Logstash部署收集Nginx日志
注意:只需在elk-2节点操作
(一)下载并安装nginx的rpm包
1.wget http://rpmfind.net/linux/centos/7.9.2009/updates/x86_64/Packages/openssl-libs-1.0.2k-21.el7_9.x86_64.rpm
2.rpm -ivh openssl-libs-1.0.2k-21.el7_9.x86_64.rpm --force
3.wget http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.16.1-1.el7.ngx.x86_64.rpm
4.rpm -ivh nginx-1.16.1-1.el7.ngx.x86_64.rpm
(二)编辑Nginx配置文件
配置文件:/etc/logstash/conf.d/nginx.conf
配置文件中添加以下内容:
input {
file {
path => "/tmp/elk_access.log"
start_position => "beginning"
type => "nginx"
}
}
filter {
grok {
match => { "message" => "%{IPORHOST:http_host} %{IPORHOST:clientip} - %{USERNAME:remote_user} \[%{HTTPDATE:timestamp}\] \"(?:%{WORD:http_verb} %{NOTSPACE:http_request}(?: HTTP/%{NUMBER:http_version})?|%{DATA:raw_http_request})\" %{NUMBER:response} (?:%{NUMBER:bytes_read}|-) %{QS:referrer} %{QS:agent} %{QS:xforwardedfor} %{NUMBER:request_time:float}"}
}
geoip {
source => "clientip"
}
}
output {
stdout { codec => rubydebug }
elasticsearch {
hosts => ["10.30.59.206:9200"]
index => "nginx-test-%{+YYYY.MM.dd}"
}
}
(三)检查配置文件是否错误
logstash --path.settings /etc/logstash/ -f /etc/logstash/conf.d/nginx.conf --config.test_and_exit
(四)编辑监听Nginx日志配置文件
配置文件:/etc/nginx/conf.d/elk.conf
在配置文件中添加以下内容
server {
listen 80;
server_name elk.com;
location / {
proxy_pass http://10.30.59.205:5601;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
access_log /tmp/elk_access.log main2;
}
(五)修改Nginx日志配置文件
配置文件:/etc/nginx/nginx.conf
增加如下内容
log_format main2 '$http_host $remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$upstream_addr" $request_time';
(六)检测nginx配置文件并启动服务
1.nginx -t
2.systemctl start nginx
(七)重启Logstash,在Kibana服务器上查看日志索引
1.systemctl restart logstash
2.curl '10.30.59.206:9200/_cat/indices?v'
(八)web界面配置索引
五、数据节点Beats采集日志
注意:只需在elk-3节点操作
(一)下载并安装Beats
1.wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.0.0-x86_64.rpm
2.rpm -ivh filebeat-6.0.0-x86_64.rpm
(二)配置Beats
配置文件:/etc/filebeat/filebeat.yml
#=========================== Filebeat prospectors =============================
# Change to true to enable this prospector configuration.
# enabled: false
paths:
- /var/log/elasticsearch/elk.log
#-------------------------- Elasticsearch output ------------------------------
output.elasticsearch:
hosts: ["10.30.59.205:9200"]
(三)启动服务并在Kibana服务器上查看日志索引
1.systemctl start filebeat
2.curl '10.30.59.206:9200/_cat/indices?v'
(四)web界面配置索引