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

来自第Fluentd

概述

Elasticsearch,Fluentd和Kibana(EFK)允许您收集,索引,搜索和可视化日志数据。 这是专有软件Splunk的一个很好的选择,它允许您免费入门,但是一旦数据量增加,需要付费许可。

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

先决条件

  • Ubuntu 14.04Droplet
  • 用户使用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.org/elasticsearch/elasticsearch/elasticsearch-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.org/kibana/kibana/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作为代理服务器,允许从公共互联网访问仪表板(使用基本认证)。

安装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

注:原始文件是从这个Kibana GitHub的信息库

然后,编辑/etc/nginx/sites-available/default如下(红色标记的变化):

#
# Nginx proxy for Elasticsearch + Kibana
#
# In this setup, we are password protecting the saving of dashboards. You may
# wish to extend the password protection to all paths.
#
# Even though these paths are being called as the result of an ajax request, the
# browser will prompt for a username/password on the first request
#
# If you use this, you'll want to point config.js at http://FQDN:80/ instead of
# 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仪表板。

Kibana欢迎

安装和配置Fluentd

最后,让我们安装Fluentd 我们将使用TD-剂,Fluentd的打包版本,通过建立和维护宝藏数据

通过td-agent包安装Fluentd

使用以下命令安装Fluentd:

wget http://packages.treasuredata.com/2/ubuntu/trusty/pool/contrib/t/td-agent/td-agent_2.0.4-0_amd64.deb
sudo dpkg -i td-agent_2.0.4-0_amd64.deb

安装插件

我们需要几个插件:

  1. out_elasticsearch:此插件允许Fluentd将数据流式传输到Elasticsearch。
  2. 唱片的改革者:这个插件可以让我们处理数据成一个有用的格式。

下面的命令同时安装插件(第apt-get是为out_elasticsearch:它需要makelibcurl

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:使用模板

Fluentd团队提供了一个备用的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的依据

如果您在服务器的URL上刷新Kibana仪表板主页,Kibana现在应配置为按syslog严重性和功能显示直方图,以及表中的最近日志行。

方法2:手动配置

转到服务器的IP地址或域以查看Kibana仪表板。

Kibana欢迎

有一对夫妇的入门模板,但我们选择了空白的一个叫做空白板:我对我自己的舒适配置 ,在欢迎文本的底部。

Kibana空白模板

接下来,点击+添加仪表盘上的右侧的行按钮。 新行A配置屏幕( 由一个或多个板)应显示。 输入标题,按创建行按钮,然后保存 这将创建一行。

Kibana行

当创建一个空行,Kibana显示提示添加面板空行左侧。 单击此按钮。 它将带您进入配置屏幕,添加一个新面板。 选择从下拉菜单中的直方图 直方图是时间图; 有关更多信息,请参阅Kibana的文档

Kibana直方图

有许多参数来配置一个新的直方图,但你可以向下滚动,然后按保存按钮。 这将创建一个新面板。

Kibana直方图详细信息

更多信息

有关配置Kibana的详细信息,请参阅Kibana文档页面

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏