目录:
- 事先准备与环境介绍
- ES
- Kibana
- Logstash
- Filebeat
- Reference
听说6.0版本出来了,人有多大胆,版本就能刷多快,于是乎某强迫症就把集群全部挂了(主要是没有生产数据)。学习新知识的时候看官方指南确实很有效,然后人就疯了。上一篇文章基于强迫症,已删,在下方提供原文下载。
step1,事先准备与环境介绍
- 配置NTP
- 配置HostName
- 添加一个非root的用户
- 安装 java8 或以上环境
环境依然是 ESXI 6.5虚拟化下的64位Centos 7系统,这一次采用zip和tar包安装,方便管理。拓扑关系如下:
IP | Hostname | Packets |
---|---|---|
192.168.1.201 | host01 | elasticsearch-6.0.0.zip,logstash-6.0.0.zip,kibana-6.0.0-linux-x86_64.tar.gz,jdk-8u144-linux-x64.rpm |
192.168.1.204 | host04 | filebeat-6.0.0-linux-x86_64.tar.gz,nginx-1.12.2-1.el7_4.ngx.x86_64 |
step2,ES
[root@host01 elasticsearch-5.6.4]# cat config/elasticsearch.yml | grep -v “^#”
cluster.name: cluster01
node.name: node01
bootstrap.memory_lock: false
network.host: 192.168.1.201
http.port: 9200
discovery.zen.ping.unicast.hosts: [“192.168.1.201”]
discovery.zen.minimum_master_nodes: 1
[root@host01 elasticsearch-5.6.4]#
运行ES后,打开浏览器或者输入命令,检查ES状态:
[root@host01 ~]# curl -XGET ‘192.168.1.201:9200/?pretty’
step3,kibana
[root@host01 config]# cat kibana.yml | grep -Evn “^$|#”
7:server.host: “192.168.1.201”
21:elasticsearch.url: “http://192.168.1.201:9200"
[root@host01 config]#
step4,logstash
估计ELK中,最难理解和操作的就是logstash的部分,因为grok这玩意听说和正则有点不一样。这一部分也是我学习的重点,官方的图很好的解释logstash用途
1 >bin/logstash -e 'input { stdin { } } output { stdout {} }' //简单的屏幕会回显数据
配置logstash的ssl证书,看资料的时候发现Ubuntu和centos的配置细节上略有差异,但是逻辑上要做的事情是一样的。配置ssl证书有基于IP的和基于域名的,域名需要使用FQDN,我是centos7基于IP的ssl生成,先修改/etc/pki/tls下openssl.cnf
subjectAltName=ip:192.168.1.201
生成ssl证书
[root@host01 tls]# openssl req -config /etc/pki/tls/openssl.cnf -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt
因为客户端计划用的是filebeat ,可以到官网查阅文档,这里我并没有使用filter和ssl,这样就是最简单的
[root@host01 config]# cat filebeat2es.conf
input {beats { port => 10086 type => "logs" ssl => false ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt" ssl_key => "/etc/pki/tls/private/logstash-forwarder.key" }
}
filter {
# It is difficult for me to using gork….
}
output {
# For more info: https://www.elastic.co/guide/en/logstash/current/plugins-outputs-elasticsearch.html
elasticsearch {
hosts => “192.168.1.201:9200”
}
stdout {
codec => rubydebug
}
}
测试配置文件
[root@host01 logstash-6.0.0]# ./bin/logstash -t -f config/filebeat2es.conf
因为博客引擎的问题,文章发表渲染后的代码格式会略有变化,filebeat的配置文件是基于YAML,YAML是对缩进的要求很严格。
Beats config files are based on YAML, a file format that is easier to read and write than other common data formats like XML or JSON.
在host04的客户端下,利用filebeat发送到logstash,不采用ssl加密
[root@host04 filebeat]# cat filebeat.yml
filebeat.prospectors:
- type: log
enabled: true
paths:
- /var/log/nginx/*
output:
logstash:
hosts:- 192.168.1.201:10086
shipper: {}
logging: {}
runoptions: {}
最后ELK+filebeat都跑起来,注意防火墙放行数据,done。在第一篇也提到了用防火墙实现5601端口转发到80端口,其实用nginx也是可以实现反向代理+登录认证的,网上很多资料,略过。