搭建ELFK日志采集系统

优采云 发布时间: 2020-08-15 06:29

  最近的工作涉及搭建一套日志采集系统,采用了业界成熟的ELFK方案,这里将搭建过程记录一下。

  环境打算操作系统信息

  系统系统:centos7.2

  三台服务器:10.211.55.11/12/13

  安装包:

  服务器规划

  服务器host11

  服务器host12

  服务器host13

  elasticsearch(master,data,client)

  elasticsearch(master,data,client)

  elasticsearch(master,data,client)

  kibana

  logstash

  logstash

  logstash

  filebeat

  filebeat

  filebeat

  整个ELFK的布署构架图大致如下图:

  日志采集系统搭建安装elasticsearch集群

  照*敏*感*词*教你搭建一个 Elasticsearch 集群文章所述,elasticsearch集群中节点有多种类型:

  以上就是节点几种类型,一个节点虽然可以对应不同的类型,如一个节点可以同时成为主节点和数据节点和预处理节点,但若果一个节点既不是主节点也不是数据节点,那么它就是负载均衡节点。具体的类型可以通过具体的配置文件来设置。

  我布署的环境服务器较少,只有三台,因此布署在每位节点上的elasticsearch实例只得饰演master、data、client三种角色了。

  在三台服务器上均执行以下命令关掉selinux:

  setenforce 0

sed -i -e 's/^SELINUX=.*$/SELINUX=disabled/g' /etc/selinux/config

  在三台服务器上均安装java:

  yum install -y java

  在三台服务器上均安装elasticsearch的rpm包:

  yum install -y https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.2.rpm

  在三台服务器上更改elasticsearch的配置文件:

  cat /etc/elasticsearch/elasticsearch.yml

cluster.name: DemoESCluster

# 注意不同节点的node.name要设置得不一样

node.name: demo-es-node-1

path.data: /var/lib/elasticsearch

path.logs: /var/log/elasticsearch

network.host: 0.0.0.0

http.port: 9200

discovery.zen.ping.unicast.hosts: ["10.211.55.11", "10.211.55.12", "10.211.55.13"]

discovery.zen.minimum_master_nodes: 2

gateway.recover_after_nodes: 2

EOF

  在三台服务器上启动elasticsearch:

  systemctl daemon-reload

systemctl enable elasticsearch

systemctl start elasticsearch

  在任意服务器上检测集群中的节点列表:

  yum install -y jq

curl --silent -XGET 'http://localhost:9200/_cluster/state?pretty'|jq '.nodes'

  在上述命令的输出里可以看见集群的相关信息,同时 nodes 字段上面收录了每位节点的详尽信息,这样一个基本的elasticsearch集群就布署好了。

  安装 Kibana

  接下来我们须要安装一个 Kibana 来帮助可视化管理 Elasticsearch,在host12上安装kibana:

  yum install -y https://artifacts.elastic.co/downloads/kibana/kibana-6.3.2-x86_64.rpm

  修改kibana的配置文件:

  cat /etc/kibana/kibana.yml

server.port: 5601

server.host: "0.0.0.0"

elasticsearch.url: "http://localhost:9200"

EOF

  注意这儿配置的elasticsearch.url为本机的es实例,这样虽然还是存在单点故障的,在本机布署一个Elasticsearch 协调(Coordinating only node) 的节点,这里配置成协调节点的地址。

  启动kibana:

  systemctl daemon-reload

systemctl enable kibana

systemctl start kibana

  配置认证须要升级License,我这儿是在外网使用,就不进行这个配置了。如果需要配置访问认证可参考这儿。

  另外还可以启用SSL,可参考进行配置。

  为了防止单点故障,kibana可布署多个,然后由nginx作反向代理,实现对kibana服务的负载均衡访问。

  安装logstash

  在每台服务器上安装logstash:

  yum install -y https://artifacts.elastic.co/downloads/logstash/logstash-6.3.2.rpm

  修改logstash的配置文件:

  cat /etc/logstash/logstash.yml

path.data: /var/lib/logstash

path.logs: /var/log/logstash

xpack.monitoring.enabled: true

xpack.monitoring.elasticsearch.url: ["http://10.211.55.11:9200", "http://10.211.55.12:9200", "http://10.211.55.13:9200"]

EOF

cat /etc/logstash/conf.d/beat-elasticsearch.conf

input {

beats {

port => 5044

ssl => false

}

}

filter {

}

output {

elasticsearch {

hosts => ["10.211.55.11:9200","10.211.55.12:9200","10.211.55.13:9200"]

index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"

document_type => "%{[@metadata][type]}"

}

}

EOF

  为了从原创日志中解析出一些有意义的field数组,可以启用一些filter,可用的filter列表在这里。

  启动logstash:

  systemctl daemon-reload

systemctl enable logstash

systemctl start logstash

  安装filebeat

  在每台服务器上安装filebeat:

  yum install -y https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.3.2-x86_64.rpm

  修改每台服务器上的filebeat配置文件:

  # 这里根据在采集的日志路径,编写合适的inputs规则

cat /etc/filebeat/filebeat.yml

filebeat.inputs:

- type: log

enabled: true

paths:

- /var/log/*.log

filebeat.config.modules:

path: ${path.config}/modules.d/*.yml

reload.enabled: false

output.logstash:

hosts: ["10.211.55.11:5044", "10.211.55.12:5044", "10.211.55.13:5044"]

ssl.enabled: false

index: 'var_log'

EOF

  filebeat配置文件选项比较多,完整的参考可查看这儿。

  在每台服务器上启动filebeat:

  systemctl daemon-reload

systemctl enable filebeat

systemctl start filebeat

  其它安全设置

  为保证数据安全,filebeat与logstash、filebeat与elasticsearch、logstash与elasticsearch、kibana与elasticsearch之间的通信及kibana自身均能启用SSL加密,具体启用办法就是在配置文件中配一配SSL证书就可以了,这个比较简单,不再赘言。

  kibana登陆认证须要升级License,这一点比较不爽,如果考虑成本,还是在前置机nginx上配个HTTP Basic认证处理好了。

  部署测试

  至此一个较完整的ELFK日志采集系统就搭建好了,用浏览器访问:5601/,在kibana的界面上简单设置下就可以查看到抓取的日志了:

  总结

  分布式日志采集,ELFK这一套比较成熟了,部署也很方便,不过布署上去还是稍显麻烦。好在还有自动化布署的ansible脚本:ansible-beats、ansible-elasticsearch、ansible-role-logstash、ansible-role-kibana,所以假如有时常布署这一套,还是拿那些ansible脚本成立自动化布署工具集吧。

  参考

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线