分布式日志收集系统
日志收集系统采用elasticsearch+fluentd+kibana,用fluentd代替elk社区里的logstash,logstas的插件是最多的,同时logstash的性能和资源消耗太高,经某站大佬压力测试,在环境为2核4g的云计算服务器上,logstash写入qps极限为8000,通过结合易瑞现有询报价系统,同时也是用户3000+的项目产品,logstash负载压力显然承受不住,服务器资源消耗太严重,所以基于以上考虑采用新型日志收集产品fluentd来代替logstash,相应的技术资料为下图:
题外话:亚马逊云用的fluentd,阿里云用的自研logtail,logtail是性能目前是最高的。
分布式日志系统架构图初步设计为:
系统环境:centos6
运行环境:jdk1.8, ruby2.0, fluentd2.3.5, elasticsearch1.7.1, kibana5.0.2
fluentd官方网站: http://www.fluentd.org/
fluentd插件下载地址:https://www.fluentd.org/plugins/all
elasticsearch: https://www.elastic.co/products/elasticsearch
kibana:https://www.elastic.co/products/kibana
相互依赖的关系:fluentd需求ruby≥2.0,elasticsearch需求 jdk环境≥1.8。
ruby中网https://ruby-china.org/topics/node1
环境实例:
架构:堡垒机负责收集存储日志信息并对提供对外访问展示(fluentd,elsticsearch,kinbana)
服务器列表:nginx01/172.17.96.200
nginx02/172.17.96.201
堡垒机:172.17.180.114
安装fluentd
官方技术文档请参考https://docs.fluentd.org/v0.12/categories/installation
官方下载地址:https://www.fluentd.org/download
fluentd 的运行环境为ruby
ruby环境:
tar zxvf ruby-2.3.1.tar.gz
cd ruby-2.3.1
./configure
make
make install
然后加入环境变量
vim /etc/profile
export path=/usr/local/src/ruby-2.3.1/bin:$path
source /etc/profile
runy --version
安装成功
fluentd系统采用2.3.6版本
wget http://packages.treasuredata.com.s3.amazonaws.com/2/redhat/6/x86_64/td-agent-2.3.5-0.el6.x86_64.rpm
rpm –ivh td-agent-2.3.5-0.el6.x86_64.rpm
安装后的目录为:/etc/td-agent
配置文件默认存放位置:/etc/td-agent/td-agent.conf
安装fluentd的必要插件(重要)
与elasticsearch通信.或者安装mongo插件,数据存放mongodb中,或者直接安装kibana插件,数据输出到kibana,上面插件地址有介绍,根据自己实际环境需要进行操作
td-agent-gem install fluent-plugin-elasticsearch
字段插件(fluentd为模块化产品,借助各种模块实现收集功能类似nginx):
td-agent-gem install fluent-plugin-typecast
td-agent-gem install fluent-plugin-secure-forward
安装fluentd三个必要插件
启动fluentd
fluentd安装成功
启动成功,然后我们修改一下fluentd配置文件与elasticsearch进行通信存储:
<source>
@type tail
path /usr/local/nginx/logs/access.log
format /^(?<host>[^ ]) [^ ] (?<user>[^ ]) [(?<time>[^]])] "(?<method>\S+)(?: +(?<path>[^ ]) +\S)?" (?<code>[^ ]) (?<size>[^ ])(?: "(?<referer>[^\"])" "(?<agent>[^\"])")?$/
time_format %d/%b/%Y:%H:%M:%S %z
tag 200nginx.access
pos_file /opt/log/nginx.access.log.pos
</source>
<match **>
@type elasticsearch
flush_interval 1s
host 172.17.180.114
port 9200
include_tag_key true
tag_key @log_name
logstash_format true
</match>
elasticsearch安装
环境需求:jdk1.8
wget https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-1.7.1.tar.gz
tar zxvf elasticsearch-1.7.1.tar.gz
cd elasticsearch-1.7.1
下载kopf和head插件kopf是集群资源,数据的查询插件,注意kopf和els有版本依赖,head数据查询配合kopf一起使用更佳
./elasticsearch-1.7.1/bin/plugin install lmenezes/elasticsearch-kopf/1.0
./elasticsearch-1.7.1/bin/plugin install mobz/elasticsearch-head
git地址:https://github.com/lmenezes/elasticsearch-kopf
安装后访问http://localhost:9200/_plgin/head
访问http://localhost:9200/_plugin/kopf
注意画红线的这段内容,表示我们上面fluentd配置已经收集到我们需要的日志,下一步安装kibana让es中的字段以图形化显示出来
安装kibana
wget https://artifacts.elastic.co/downloads/kibana/kibana-5.0.2-linux-x86_64.tar.gz
tar -xzf kibana-5.0.2-linux-x86_64.tar.gz
最新版本为6.0
与es进行关联:
cd kibana-5.0.2-linux-x86_64/config
vim kibana.yml(需要修改下列host列和es的url)
kibana使用时会首先创建模版(可用默认)
然后我们需要查看刚才抓取的日志
注意:1,es中的日志数据区分是按天算每天生成新文件,从这里可以按我们每台服务器定义的文件名进行查看,可根据该tag名进行分类查看
2,查看/显示需要的字段值
3,产生的点击数
4,查找/类别(时间段)
原文地址:http://blog.51cto.com/13654063/2087516