设为首页 收藏本站
查看: 2747|回复: 1

[经验分享] Elasticsearch、Fluentd与Kibana:开源的日志搜索与可视化方案

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-11-10 09:13:25 | 显示全部楼层 |阅读模式
前言

Elasticsearch、Fluentd与Kibana的组合(EFK)可以进行日志数据的采集、索引、搜索以及可视化。该组合是商业软件Splunk的替代:Splunk在一开始用的时候也是免费的,但如果数据多了则需要收费。

本文介绍如何用该组合构建你的日志解决方案。
前提条件

    安装了Ubuntu 14.04的云主机
    在该主机上具有sudo权限的用户

Elasticsearch的安装配置
安装Java

Elasticsearch需要Java,所以先安装Java。

sudo apt-get update
sudo apt-get install openjdk-7-jre-headless --yes

检查一下Java是否成功安装了:

java -version

输出应该是这个样子:

java version "1.7.0_55"
OpenJDK Runtime Environment (IcedTea 2.4.7) (7u55-2.4.7-1ubuntu1)
OpenJDK 64-Bit Server VM (build 24.51-b03, mixed mode)

获取Elasticsearch

下一步,下载Elasticsearch的deb安装包,安装之。

sudo wget https://download.elasticsearch.o ... ticsearch-1.2.2.deb
sudo dpkg -i elasticsearch-1.2.2.deb

Elasticsearch安全加固

到1.2版本为止,Elasticsearch的动态脚本功能是默认开启的。因为本文将把Kibana仪表盘设置为从公网可以访问,所以为了安全起见最好关闭这个功能。进入/etc/elasticsearch/elasticsearch.yml文件,在末尾加入如下一行内容:

script.disable_dynamic: true

启动Elasticsearch

运行如下命令运行Elasticsearch:

sudo service elasticsearch start

Kibana的安装配置
获取Kibana

进入你的用户主目录:

cd ~

输入如下命令以下载Kibana:

curl -L https://download.elasticsearch.o ... kibana-3.1.0.tar.gz | tar xzf -
sudo cp -r kibana-3.1.0 /usr/share/

配置Kibana

我们需要Kibana使用80端口与Elasticsearch进行通讯,而不是默认的9200端口,因此我们需要更改Kibana的配置文件config.js。

用编辑器打开/usr/share/kibana-3.1.0/config.js,找到下面这行:

elasticsearch: "http://"+window.location.hostname+":9200",

把它替换成下面这行:

elasticsearch: "http://"+window.location.hostname+":80",

安装配置Nginx(代理服务器)

我们使用Nginx作为代理服务器,让经过身份认证的用户可以从公网访问Kibana的仪表盘。

首先,安装Nginx:

sudo apt-get install nginx --yes

Kibana自带的nginx.conf写得已经比较好,我们只需要做一点点修改即可。

首先,下载安装配置文件:

wget https://assets.digitalocean.com/articles/fluentd/nginx.conf
sudo cp nginx.conf /etc/nginx/sites-available/default

注:该配置文件来源于这个Github仓库。

然后,在编辑器中打开/etc/nginx/sites-available/default,进行如下修改(主要是server_name、access_log、location三部分):

#
# 针对Elasticsearch + Kibana的Nginx代理配置
#
# 此处将为仪表盘设置密码保护。
# 你也可以考虑为所有路径设置密码。
#
# 浏览器在首次触发访问该路径的ajax请求时,
# 会弹出用户名/密码的输入框。
#
# 如果你使用本功能,请将config.js配置为 http://FQDN:80/
# 取代原来的 http://FQDN:9200
#
server {
listen                *:80 ;
server_name           localhost;
access_log            /var/log/nginx/kibana.log;
location / {
   root  /usr/share/kibana-3.1.0;
   index  index.html  index.htm;
}

最后,重启nginx:

$ sudo service nginx restart

现在,在浏览器里打开服务器的IP地址或域名,就应该能看到Kibana的仪表盘了:

Fluentd的安装配置

最后是Fluentd的安装。我们将使用Fluetd的软件包版本td-agent,该软件包由Treasure Data维护。
从td-agent软件包安装Fluentd

使用如下命令安装Fluentd:

wget http://packages.treasuredata.com ... t_2.0.4-0_amd64.deb
sudo dpkg -i td-agent_2.0.4-0_amd64.deb

安装插件

我们需要安装如下几个插件:

    out_elasticsearch:该插件将Fluentd的数据流导给Elasticsearch。
    outrecordreformer:该插件可以将数据处理成更多格式。

输入以下命令安装插件(第一个apt-get用于安装out_elasticsearch,这会需要服务器上安装过make和libcurl):

sudo apt-get install make libcurl4-gnutls-dev --yes
sudo /opt/td-agent/embedded/bin/fluent-gem install fluent-plugin-elasticsearch
sudo /opt/td-agent/embedded/bin/fluent-gem install fluent-plugin-record-reformer

然后,配置Fluentd以监听syslog并将其发送给Elasticsearch。用编辑器打开/etc/td-agent/td-agent.conf,在文件开头处添加如下内容:

<source>
type syslog
port 5140
tag  system
</source>
<match system.*.*>
type record_reformer
tag elasticsearch
facility ${tag_parts[1]}
severity ${tag_parts[2]}
</match>
<match elasticsearch>
type copy
<store>
   type stdout
</store>
<store>
type elasticsearch
logstash_format true
flush_interval 5s #debug
</store>
</match>

启动Fluentd

输入如下命令启动Fluentd:

sudo service td-agent start

将rsyslog流量转发给Fluentd

Ubuntu 14.04自带了rsyslogd。我们需要对它做一些配置,以将syslog事件转发到Fluentd监听的端口(本文使用了5140端口)。

用编辑器打开/etc/rsyslog.conf(需要sudo权限),在文件首部添加如下内容:

*.* @127.0.0.1:5140

保存退出,重启rsyslogd:

sudo service rsyslog restart

自定义Kibana仪表盘

Kibana默认的仪表盘只显示了最通用的内容,所以可以考虑做一下自定义。以下展示两种方法。
方法1:使用模板(Template)

Fluentd团队提供了另一个Kibana配置文件,如果使用模板进行自定义的话,那么这个配置文件会比Kibana的默认配置好用。运行如下命令以获取该配置文件:

wget -O default.json https://assets.digitalocean.com/articles/fluentd/default.json
sudo cp default.json /usr/share/kibana-3.1.0/app/dashboards/default.json

注:源文件来自这个GitHub gist。

现在到浏览器里刷新页面,应该看到Kibana现在已经根据syslog的严重等级(severity)和程序模块(facility)显示矩形图,并在一个表格里展示出最近的日志内容。
方法2:手动配置

在浏览器里访问Kibana仪表盘首页:


选择最下面的Blank Dashboard: I’m comfortable configuring on my own(空白模板):

在本页面,点击右侧的+ ADD A ROW(添加行)按钮,会弹出添加新行的配置界面(一个“行”可以包含一个或多个“板块”(panel))。输入一个名称,然后点击Create Row(创建行)按钮,然后点Save(保存)。现在就可以看到新建的行了。

空白行创建后,Kibana在页面左侧会提醒Add panel to empty row(在空白行里添加板块)。点击该按钮,会弹出新建板块的配置界面。在下拉餐单中选择histogram(矩形图)。矩形图是时间图表,详见Kibana文档。

矩形图的配置涉及很多参数,不过我们可以简单的下拉到页面底部,点击Save按钮。如此,新的板块就创建完毕了。




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-298256-1-1.html 上篇帖子: ELK 日志管理平台之 ElasticSearch 安装 下篇帖子: 如何在Ubuntu 14.04上利用Logstash与Kibana实现日志信息集中化
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表