目录:

  1. 事先准备与环境介绍
  2. ES
  3. Kibana
  4. Logstash
  5. Filebeat
  6. Reference

听说6.0版本出来了,人有多大胆,版本就能刷多快,于是乎某强迫症就把集群全部挂了(主要是没有生产数据)。学习新知识的时候看官方指南确实很有效,然后人就疯了。上一篇文章基于强迫症,已删,在下方提供原文下载。

图片来自shildon.leanote.com

step1,事先准备与环境介绍

环境依然是 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
2
>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

  • step5,filebeat

因为博客引擎的问题,文章发表渲染后的代码格式会略有变化,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也是可以实现反向代理+登录认证的,网上很多资料,略过。

  • Reference

ELK deployment in centos7 download

Kibana known plugins