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

一个完整的日志系统,需要包含以下几个主要特点:`

收集-能够采集多种来源的日志数据

传输-能够稳定的把日志数据传输到中央系统

存储-如何存储日志数据

分析-可以支持 UI 分析

警告-能够提供错误报告,监控机制

为了提供分布式的实时日志搜集和分析的监控系统,我们采用了业界通用的日志数据管理解决方案 - 它主要包括 Elasticsearch 、 Logstash 和 Kibana 三个系统。通常,业界把这套方案简称为ELK,取三个系统的首字母,但是我们实践之后将其进一步优化为EFK,F代表Filebeat,用以解决Logstash导致的问题。其实Logstash 包含多种替代方案(Filebeat、Fluentd、rsyslog、syslog-ng 以及 Logagent。而EFK中的F究竟指Filebeat还是Fluentd,也有不同的说法。

Fluentd是一个消息采集,转化,抓发工具,目的是提供中心化的日志服务。基于CRuby实现,并对性能表现关键的一些组件用C语言重新实现,整体性能不错。支持所有主流日志类型,插件支持较多,性能表现较好。

Logstash支持所有主流日志类型,插件支持最丰富,可以灵活DIY,但性能较差,JVM容易导致内存使用量高。

Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能

Kibana 也是一个开源和免费的工具,Kibana可以为 td-agent和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。

Elasticsearch

一个节点(node)就是一个Elasticsearch实例,一个集群(cluster)由一个或多个节点组成,它们具有相同的cluster.name,它们协同工作,分享数据和负载。当加入新的节点或者删除一个节点时,集群就会感知到并平衡数据。

集群中一个节点会被选举为主节点(master),它将临时管理集群级别的一些变更,例如新建或删除索引、增加或移除节点等。主节点不参与文档级别的变更或搜索,这意味着在流量增长的时候,该主节点不会成为集群的瓶颈。

做为用户,我们能够与集群中的任何节点通信,包括主节点。每一个节点都知道文档存在于哪个节点上,它们可以转发请求到相应的节点上。我们访问的节点负责收集各节点返回的数据,最后一起返回给客户端。这一切都由Elasticsearch处理。

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

# curlhttp://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 //查看状态

# curlhttp://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/

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容