基于Elasticsearch+Fluentd+Kibana的日志收集分析系统

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于Elasticsearch+Fluentd+Kibana的日志收集分析系统相关的知识,希望对你有一定的参考价值。

我们平时分析log直接在日志文件中 grep、awk 就可以获得自己想要的信息,此方法效率低下,生产中需要集中化的日志管理,所有服务器上的日志收集汇总

Elasticsearch
一个节点(node)就是一个Elasticsearch实例,一个集群(cluster)由一个或多个节点组成,它们具有相同的cluster.name,它们协同工作,分享数据和负载。当加入新的节点或者删除一个节点时,集群就会感知到并平衡数据。
集群中一个节点会被选举为主节点(master),它将临时管理集群级别的一些变更,例如新建或删除索引、增加或移除节点等。主节点不参与文档级别的变更或搜索,这意味着在流量增长的时候,该主节点不会成为集群的瓶颈。
做为用户,我们能够与集群中的任何节点通信,包括主节点。每一个节点都知道文档存在于哪个节点上,它们可以转发请求到相应的节点上。我们访问的节点负责收集各节点返回的数据,最后一起返回给客户端。这一切都由Elasticsearch处理。

一个完整的集中式日志系统,需要包含以下几个主要特点:
收集-能够采集多种来源的日志数据
传输-能够稳定的把日志数据传输到中央系统
存储-如何存储日志数据
分析-可以支持 UI 分析
警告-能够提供错误报告,监控机制

fluentd基于CRuby实现,并对性能表现关键的一些组件用C语言重新实现,整体性能不错。
fluentd支持所有主流日志类型,插件支持较多,性能表现较好
logstash支持所有主流日志类型,插件支持最丰富,可以灵活DIY,但性能较差,JVM容易导致内存使用量高。
Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能
Kibana 也是一个开源和免费的工具,Kibana可以为 td-agent和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。

node-1
#yum -y install java   //下载java
#java -version //检测版本号 
openjdk version "1.8.0_171"
OpenJDK Runtime Environment (build 1.8.0_171-b10)
OpenJDK 64-Bit Server VM (build 25.171-b10, mixed mode)
#wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.1.rpm
# rpm -ivh elasticsearch-6.3.1.rpm   //安装
# vim /etc/elasticsearch/elasticsearch.yml  //修改配置文件
cluster.name: my-application
node.name: node-1
node.master: true
network.host: 172.21.0.9
http.port: 9200
/etc/init.d/elasticsearch start  //启动
curl http://192.168.124.173:9200/_cat/  //尝试链接 如果链接失败,关闭防火墙,查看配置文件
#curl http://192.168.124.173:9200/_cat/health
# curl http://192.168.124.173:9200/_cat/nodes
node-2
# yum install java
# java -version
#wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.1.rpm
# rpm -ivh elasticsearch-6.3.1.rpm 
# vim /etc/elasticsearch/elasticsearch.yml   //更改配置
cluster.name: my-application
node.name: node-2
node.master: false
network.host: 192.168.124.251
http.port: 9200
discovery.zen.ping.unicast.hosts: ["host1", "192.168.124.173"]
# /etc/init.d/elasticsearch start  //启动服务
# /etc/init.d/elasticsearch status  //查看状态
# curl http://192.168.124.251:9200/_cat
node-1
Fluentd(tdagent)
 wget http://packages.treasuredata.com.s3.amazonaws.com/3/redhat/7/x86_64/td-agent-3.2.0-0.el7.x86_64.rpm  
rpm -ivh td-agent-3.2.0-0.el7.x86_64.rpm  --force --nodeps
yum install -y libcurl-devel
opt/td-agent/embedded/bin/fluent-gem install fluent-plugin-elasticsearch
 #cd /etc/td-agent/
 #cat td-agent.conf
 <source>
  @type forward
  port 24224
</source>

####################################
<source>
  @type tail
  path /var/log/httpd/access_log
  pos_file /var/log/td-agent/httpd-access.log.pos
  tag apache.access
  <parse>
    @type apache2
  </parse>
</source>
####################################
<match debug.**>
  @type stdout
</match>
####################################

<match *.**>
  @type copy
  <store>
    @type elasticsearch
    host 10.0.0.9
    port 9200
    logstash_format true
    logstash_prefix fluentd-${tag}
    logstash_dateformat %Y%m%d
    include_tag_key true
    type_name access_log
    tag_key @log_name
    flush_interval 1s
  </store>
  <store>
    @type stdout
  </store>
</match>
# /etc/init.d/td-agent restart
# yum -y install http
# systemctl start httpd
# chmod 777 /var/log/httpd/
# curl ‘http://192.168.124.173:9200/_cat/indices?v‘
# systemctl stop firewalld
# wget https://artifacts.elastic.co/downloads/kibana/kibana-6.3.1-x86_64.rpm
# rpm -ivh kibana-6.3.1-x86_64.rpm 
# vim /etc/kibana/kibana.yml 
server.port: 5601
server.host: “192.168.124.173"
elasticsearch.url: "http://192.168.124.173:9200
kibana.index: ".kibana”
# /etc/init.d/kibana restart
#tail -f /var/log/kibana/kibana.stderr

访问kibana web界面

http://192.168.124.173:5601/

添加监控项

技术分享图片
file:///root/%E4%B8%8B%E8%BD%BD/%E7%81%AB%E7%8B%90%E6%88%AA%E5%9B%BE_2018-07-14T06-39-23.568Z.png技术分享图片

技术分享图片

以上是关于基于Elasticsearch+Fluentd+Kibana的日志收集分析系统的主要内容,如果未能解决你的问题,请参考以下文章

windows下fluentd传输日志到elasticsearch (fluentd elasticsearch https)

将 id_key 与 fluentd/elasticsearch 一起使用

elk/elasticsearch+fluentd+kibana

EFK(elasticsearch + fluentd + kibana)日志系统

Nginx容器日志收集方案fluentd+elasticsearch+kilbana

fluentd 丢失毫秒,现在日志消息在 elasticsearch 中乱序存储