Elasticsearch、Fluentd 和 Kibana:开源日志搜索和可视化

一篇来自流媒体)的文章

概述

ElasticSearch、Fluentd和Kibana(EFK)允许您收集、索引、搜索和可视化日志数据。这是专有软件Splunk的一个很好的替代方案,Splunk允许您免费入门,但在数据量增加时需要付费许可证。

本教程介绍如何使用三个开源软件组件构建日志解决方案:ElasticsearchFluentdKibana.

前提条件

  • 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仪表板。

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:它需要makelibcurl)

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仪表板。

Kibana Welcome

有几个启动模板,但让我们选择一个名为 Blank Dashboard:I'm comfortable configuring on my own 的空白模板,显示在欢迎文本的底部。

Kibana Blank Template

接下来,单击仪表板右侧的**+添加行** 按钮。新行(** 行** 由一个或多个面板组成)的配置屏幕应该会出现。输入标题,按** 创建行** 按钮,然后** 保存** 。这将创建一个行。

Kibana Row

当创建空行时,Kibana会在左侧显示提示将面板添加到空行 。点击此按钮。它会将您带到配置屏幕,以添加新的面板。从下拉菜单中选择[直方图]。直方图是时间图;有关更多信息,请参见Kibana‘s documentation.

KibanaHistogram

有许多参数需要为新的直方图配置,但您只需向下滚动并按下保存 按钮即可。这将创建一个新面板。

[Kibana直方图细节]

更多信息

有关配置Kibana的更多信息,请参阅Kibana文档page.

Published At
Categories with 技术
comments powered by Disqus