一篇来自流媒体)的文章
概述
ElasticSearch、Fluentd和Kibana(EFK)允许您收集、索引、搜索和可视化日志数据。这是专有软件Splunk的一个很好的替代方案,Splunk允许您免费入门,但在数据量增加时需要付费许可证。
本教程介绍如何使用三个开源软件组件构建日志解决方案:Elasticsearch,Fluentd和Kibana.
前提条件
- Drop with Ubuntu 14.04**
- 具有sudo权限的用户
安装配置Elasticearch
获取Java
ElasticSearch需要Java,因此第一步是安装Java。
1sudo apt-get update
2sudo apt-get install openjdk-7-jre-headless --yes
检查Java是否已安装。运行:
1java -version
输出应如下所示:
1java version "1.7.0_55"
2OpenJDK Runtime Environment (IcedTea 2.4.7) (7u55-2.4.7-1ubuntu1)
3OpenJDK 64-Bit Server VM (build 24.51-b03, mixed mode)
获取Elasticearch
接下来,下载并安装Elasticearch的Deb包,如下所示。
1sudo wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.2.2.deb
2sudo dpkg -i elasticsearch-1.2.2.deb
保护Elasticearch安全
在1.2版之前,Elasticearch的动态脚本功能是默认启用的。由于本教程将Kibana仪表板设置为可从公共Internet访问,因此我们在/etc/ElasticSearch/elasticearch.yml
的末尾添加以下行来禁用动态脚本:
1script.disable_dynamic: true
启动Elasticearch
使用以下命令开始运行Elasticearch。
1sudo service elasticsearch start
Kibana安装配置
获取Kibana
移至您的主目录:
1cd ~
我们将下载Kibana如下:
1curl -L https://download.elasticsearch.org/kibana/kibana/kibana-3.1.0.tar.gz | tar xzf -
2sudo cp -r kibana-3.1.0 /usr/share/
配置Kibana
由于Kibana将使用端口80(而不是默认端口9200)与Elasticearch通信,因此必须更新Kibana的config.js
。
打开/usr/share/kibana-3.1.0/config.js
并查找以下行:
1elasticsearch: "http://"+window.location.hostname+":9200",
并将其替换为以下行:
1elasticsearch: "http://"+window.location.hostname+":80",
安装配置Nginx(代理服务器)
我们将使用Nginx作为代理服务器,以允许从公共互联网访问仪表板(使用基本身份验证)。
安装Nginx的步骤如下:
1sudo apt-get install nginx --yes
Kibana提供了一个很好的默认nginx.conf,我们将对其稍作修改。
首先,安装配置文件如下:
1wget https://assets.digitalocean.com/articles/fluentd/nginx.conf
2sudo cp nginx.conf /etc/nginx/sites-available/default
注:原始文件来自此Kibana GitHub repository.
然后,按如下方式编辑/etc/nginx/ites-available/default
(更改为红色):
1#
2# Nginx proxy for Elasticsearch + Kibana
3#
4# In this setup, we are password protecting the saving of dashboards. You may
5# wish to extend the password protection to all paths.
6#
7# Even though these paths are being called as the result of an ajax request, the
8# browser will prompt for a username/password on the first request
9#
10# If you use this, you'll want to point config.js at http://FQDN:80/ instead of
11# http://FQDN:9200
12#
13server {
14 listen *:80 ;
15 server_name localhost;
16 access_log /var/log/nginx/kibana.log;
17 location / {
18 root /usr/share/kibana-3.1.0;
19 index index.html index.htm;
20 }
最后,重启nginx,如下所示:
1$ sudo service nginx restart
现在,您应该能够使用您喜欢的浏览器在服务器的IP地址或域中看到通用Kibana仪表板。
安装配置Fluentd
最后,让我们安装Fluentd.我们将使用由珍宝数据.)构建和维护的TD-AGENT,这是Fluentd的打包版本
通过TD-AGENT包安装Fluentd
使用以下命令安装Fluentd:
1wget http://packages.treasuredata.com/2/ubuntu/trusty/pool/contrib/t/td-agent/td-agent_2.0.4-0_amd64.deb
2sudo dpkg -i td-agent_2.0.4-0_amd64.deb
安装插件
我们需要几个插件:
1.out_ElasticSearch:这个插件允许Fluentd将数据流传输到Elasticearch。 2.OUT_RECORD_REFORGER:这个插件允许我们将数据处理成更有用的格式。
下面的命令安装两个插件(第一个apt-get用于out_ElasticSearch:它需要make
和libcurl
)
1sudo apt-get install make libcurl4-gnutls-dev --yes
2sudo /opt/td-agent/embedded/bin/fluent-gem install fluent-plugin-elasticsearch
3sudo /opt/td-agent/embedded/bin/fluent-gem install fluent-plugin-record-reformer
接下来,我们将Fluentd配置为侦听syslog消息并将它们发送到Elasticearch。打开/etc/td-agent/td-agent.conf
,在文件顶部添加以下几行:
1<source>
2 type syslog
3 port 5140
4 tag system
5</source>
6<match system.*.*>
7 type record_reformer
8 tag elasticsearch
9 facility ${tag_parts[1]}
10 severity ${tag_parts[2]}
11</match>
12<match elasticsearch>
13 type copy
14 <store>
15 type stdout
16 </store>
17 <store>
18 type elasticsearch
19 logstash_format true
20 flush_interval 5s #debug
21 </store>
22</match>
启动Fluentd
使用以下命令启动Fluentd:
1sudo service td-agent start
将rsyslog流量转发到Fluentd
Ubuntu 14.04附带了rsyslogd。需要将其重新配置为将syslog事件转发到Fluentd侦听的端口(在本例中为端口5140)。
打开/etc/rsyslog.conf
(需要sudo
),并在顶部添加以下行
1*.* @127.0.0.1:5140
保存并退出编辑器后,重新启动rsyslogd,如下所示:
1sudo service rsyslog restart
设置Kibana仪表板面板
Kibana的默认面板非常通用,因此建议对其进行定制。在这里,我们展示两种方法。
方法一:使用模板
Fluentd团队提供了一个替代的Kibana配置,该配置与此设置配合使用的效果比默认配置更好。要使用此替代配置,请运行以下命令:
1wget -O default.json https://assets.digitalocean.com/articles/fluentd/default.json
2sudo cp default.json /usr/share/kibana-3.1.0/app/dashboards/default.json
注:原始配置文件来自作者的GitHub Gist.
如果您在服务器的URL上刷新Kibana仪表板主页,Kibana现在应该配置为按系统日志严重性和工具显示直方图,以及在表中显示最近的日志行。
方法二:手动配置
转到您的服务器的IP地址或域以查看Kibana仪表板。
有几个启动模板,但让我们选择一个名为 Blank Dashboard:I'm comfortable configuring on my own 的空白模板,显示在欢迎文本的底部。
接下来,单击仪表板右侧的**+添加行** 按钮。新行(** 行** 由一个或多个面板组成)的配置屏幕应该会出现。输入标题,按** 创建行** 按钮,然后** 保存** 。这将创建一个行。
当创建空行时,Kibana会在左侧显示提示将面板添加到空行 。点击此按钮。它会将您带到配置屏幕,以添加新的面板。从下拉菜单中选择[直方图]。直方图是时间图;有关更多信息,请参见Kibana‘s documentation.
有许多参数需要为新的直方图配置,但您只需向下滚动并按下保存 按钮即可。这将创建一个新面板。
[Kibana直方图细节]
更多信息
有关配置Kibana的更多信息,请参阅Kibana文档page.