EFK:免费的日志采集与可视化搜索套件

我们收集日志是为了做进一步的分析。收集是第一步,收集到日志后还需要进行存储、索引,以便进行快速查询分析。我们还需要一个友好的查询界面,来方便用户使用日志。
本文介绍一个免费的开源软件组合,正好可以实现上述目的。它们就是Fluentd + Elasticsearch + Kibana,简称EFK。
Fluentd用于采集日志。Elasticsearch是一个开源的搜索引擎,以使用方便而著称。Kibana是一个开源的Web UI,为Elasticsearch提供了一个友好的使用界面。
使用EFK的日志系统,一般采用如下架构:
下边,我们简单介绍一下如何搭建及使用EFK日志采集分析系统。
  1. 准备工作
    Elasticsearch依赖Java,请安装Java 8(或更高版本)
    java version "1.8.0_221"Java(TM) SE Runtime Environment (build 1.8.0_221-b11)Java HotSpot(TM) 64-Bit Server VM (build 25.221-b11, mixed mode)
  2. 安装Elasticsearch
    可以直接从Elasticsearch官网上下载安装包,并解压。需要注意的是,elasticsearch不可以使用root身份用户,得创建单独的运行用户,并赋予其elasticsearch目录权限。
    我们这里通过yum的方式在CentOS6.5 x86_64系统上使用rpm包进行安装。
    1. 创建并编辑/etc/yum.repos.d/elasticsearch.repo
      [elasticsearch]name=Elasticsearch repository for 7.x packagesbaseurl=https://artifacts.elastic.co/packages/7.x/yumgpgcheck=1gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearchenabled=0autorefresh=1type=rpm-md
    2. 通过yum进行安装
      sudo yum install --enablerepo=elasticsearch elasticsearch
    3. 启动elasticsearch
      sudo chkconfig --add elasticsearchsudo service elasticsearch start
  3. 安装Kibana
    可以直接从Kibana官网上下载安装包,并解压。和elasticsearch一样,也需要为kibana创建单独的运行用户并赋予相关权限,才可以运行kibana。
    我们这里通过yum的方式在CentOS6.5 x86_64系统上使用rpm包进行安装。
    1. 创建并编辑/etc/yum.repos.d/kibana.repo
      [kibana-7.x]name=Kibana repository for 7.x packagesbaseurl=https://artifacts.elastic.co/packages/7.x/yumgpgcheck=1gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearchenabled=1autorefresh=1type=rpm-md
    2. 通过yum进行安装
      sudo yum install kibana
    3. 启动Kibana
      sudo chkconfig --add kibanasudo service kibana start
  4. 安装Fluentd
    1. 请参考我们之前的文章来安装td-agent
    2. 为Fluentd安装elasticsearch插件
      $ sudo /usr/sbin/td-agent-gem install fluent-plugin-elasticsearch --no-document
    3. 在td-agent.conf中使用elasticsearch
      # get logs from syslog<source> @type syslog port 42185 tag syslog</source>
      # get logs from fluent-logger, fluent-cat or other fluentd instances<source> @type forward</source>
      <match syslog.**> @type elasticsearch logstash_format true <buffer> flush_interval 10s # for testing </buffer></match>

      这里syslog会经由Fluentd写入elasticsearch,并在elasticsearch中以logstash-%Y.%m.%d的命名方式创建索引。

    4. 启动td-agent
      sudo /etc/init.d/td-agent start
  5. 配置rsyslogd
    最后一步,我们需要在/etc/rsyslog.conf中添加如下配置,这样系统日志就可以从rsyslogd转发到Fluentd(端口为42185),并由Fluentd转发到elasticsearch中。
    *.* @127.0.0.1:42185

    重启rsyslogd:

    sudo /etc/init.d/rsyslog restart
  6. 存储并搜索日志
    一旦Fluentd接收到了rsyslogd发送来的日志,并将这些日志写入到elasticsearch,我们就可以通过kibana进行可视化的数据查询了。
    打开kibana(http://localhost:5601),创建索引:
    设置索引模式为logstash-*,选择@timestamp作为Time Filter字段名称。
    然后就可以在“Discover”面板看到rsyslogd发送过来的日志了。
  7. 结语
    至此,我们介绍了Fluentd的一个典型应用场景。事实上,Fluentd社区提供了各种各样的插件供我们处理日志。我们会在后续的插件系列文章中进一步学习。
(0)

相关推荐