博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于Elasticsearch+Fluentd+Kibana的日志收集分析系统
阅读量:5877 次
发布时间:2019-06-19

本文共 3067 字,大约阅读时间需要 10 分钟。

我们平时分析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都下载

#yum install java 下载java环境
#java -version
#wget
#rpm -ih elasticsearch-6.3.1.rpm
Node1(主)
#vim /etc/elasticsearch/elasticsearch.yml
cluster.name: my-application //集群名称
node.name: node-1 //主机名称
node.master: true //主为true
network.host: 172.21.0.9 //主机ip
http.port: 9200 //端口

Node2 (从)

#vim /etc/elasticsearch/elasticsearch.yml
cluster.name: my-application
node.name: node-2
node.master: false
network.host: 172.21.0.37
http.port: 9200discovery.zen.ping.unicast.hosts: ["host1", "172.21.0.9”] //集群

#/etc/init.d/elasticsearch start

#/etc/init.d/elasticsearch status
#curl //测试
#curl //测试

Fluentd (tdagent) //收集那台机器的log在那安装

#wget

#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 172.21.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

#chmod 777 -R /var/log/httpd/
#tail -f /var/log/td-agent/td-agent.log //测试
#curl '’ //测试

Kibana

#wget

#rpm -ivh kibana-6.3.1-x86_64.rpm
#vim /etc/kibana/kibana.yml
server.port: 5601 //端口
server.host: “172.21.0.9"
elasticsearch.url: "”
kibana.index: ".kibana”

#/etc/init.d/kibana restart //重启服务

#tail -f /var/log/kibana/kibana.stderr //查看
浏览器访问 172.21.0.9:5601
然后在kibana客户端web界面设置Fluentd-log选项

附加'elasticsearch 常用的操作'
  1. 查看当前集群的状态
    curl ''
    2.查看当前node
    curl ''
    3.查看所有的index
    curl ''
    4.创建一个index
    curl -XPUT 'IP:PORT/customer?pretty'
    5.创建一个index 带有文档的
    curl -XPUT 'IP:PORT/customer/external/1?pretty' -d '
    {
    "name": "John Doe"
    }'
    6.删除一个index
    curl -XDELETE 'IP:PORT/customer?pretty'
    curl -XDELETE 'IP:PORT/onland-*?pretty’

转载于:https://blog.51cto.com/13767724/2152883

你可能感兴趣的文章
Android 集成支付宝支付详解
查看>>
SQL分布式查询、跨数据库查询
查看>>
C#------连接SQLServer和MySQL字符串
查看>>
Arcgis Licensemanager 不能启动的原因之一(转载)
查看>>
(原)Android在子线程用handler发送的消息,主线程是怎么loop到的?
查看>>
$digest already in progress 解决办法——续
查看>>
虚拟机 centos设置代理上网
查看>>
Struts2中Date日期转换的问题
查看>>
mysql 数据类型
查看>>
Ubuntu 设置当前用户sudo免密码
查看>>
设置tomcat远程debug
查看>>
android 电池(一):锂电池基本原理篇【转】
查看>>
Total Command 常用快捷键
查看>>
ionic 调用手机的打电话功能
查看>>
怎么使用阿里云直播服务应用到现在主流直播平台中
查看>>
Xcode全局替换内容,一键Replace
查看>>
1000 加密算法
查看>>
exif_imagetype() 函数在linux下的php中不存在
查看>>
Ruby的case语句
查看>>
Linux的链接文件-ln命令
查看>>