在Debian(Wheezy)上安装fluentd、Elasticsearch和Kibana

首先

首先,在Debian(Wheezy)上安装fluentd和Elasticsearch,并进行Kibana的配置。
我们先试试在Kibana上查看Apache的日志。
因为这篇文章写得很好,我就参考这篇文章进行实施了。

你可以参考一下关于Fluentd的内容,可以帮你形成一个相当清晰的印象。
我整体上是参考了这里的内容。

准备

引入 Fluentd (td-agent)

因为这篇文章最易懂,所以参考它进行了引入。
关键在于版本。
使用 fluentd(td-agent)的版本是1.1.17-1。
使用 libssl 的版本是 0.9.8。
在安装完成后,可以使用命令来确认是否正常运行。

附注:已在2015年11月05日提供了td-agent v2的安装说明。这个方法明显更简单,建议参考这个。

通过引入Elasticsearch来实现。

OpenJDK7 可以被解释为开放式Java开发工具包第7版。

在进行前准备时,需要安装OpenJDK7。
可以使用dpkg -l openjdk*等命令来确认是否已经安装。
完成安装后,要确认版本。

hoge@fuga:~# java -version
java version "1.6.0_36"
OpenJDK Runtime Environment (IcedTea6 1.13.8) (6b36-1.13.8-1~deb7u1)
OpenJDK 64-Bit Server VM (build 23.25-b01, mixed mode)

如果存在不同版本的运行情况,请参考此信息执行JVM切换。
使用命令update-java-alternatives -s java-1.7.0-openjdk-amd64指定为1.7.0,然后再次确认。
如果update-java-alternatives命令本身无法使用,请通过apt-get install java-common进行安装。
切换时出现“mozilla-javaplugin.so的alternatives不存在”的提示,目前尚不清楚是否存在问题。(未调查)

hoge@fuga:~# java -version
java version "1.7.0_85"
OpenJDK Runtime Environment (IcedTea 2.6.1) (7u85-2.6.1-6~deb7u1)
OpenJDK 64-Bit Server VM (build 24.85-b03, mixed mode)

如果是这样的话就可以了。

Elasticsearch 是一种搜索引擎。

根据官方信息并参考这个情况,使用apt-get安装。安装完成后启动Elasticsearch试一试。

hoge@fuga:~# /etc/init.d/elasticsearch start
[ ok ] Starting Elasticsearch Server:.

可以使用curl命令来确认实际是否正在运行,并检查响应。
如果收到以下响应,则表示正在运行。

hoge@fuga:~# curl http://localhost:9200
{
  "name" : "Typhon",
  "cluster_name" : "elasticsearch",
  "version" : {
    "number" : "2.0.0",
    "build_hash" : "de54438d6af8f9340d50c5c786151783ce7d6be5",
    "build_timestamp" : "2015-10-22T08:09:48Z",
    "build_snapshot" : false,
    "lucene_version" : "5.2.1"
  },
  "tagline" : "You Know, for Search"
}

Kibana的安装和配置

请参考这个安装指南进行安装。
文章创建时的最新版本是Kibana 4.2.0。

起動脚本基于这里的基础上进行修正,使其可以在Debian(Wheezy)上运行。
关键点是/etc/init.d/functions的位置不同。(详细信息请参见此处)
此外,还更改了killproc的处理方式。(详细信息请参见此处)

在原始脚本中,进程不会停止且不删除pid文件,所以即使解决了不停止问题,第二次启动时仍会有pidfile残留导致无法启动。
现在改为确认进程已停止并删除pidfile和lockfile两者都执行。

#!/bin/sh
#
# kibana -- startup script for kibana4
#
# chkconfig: - 85 15
# processname: kibana
# pidfile: /var/run/kibana.pid
# description: Kibana is a webui to visualize data
#
### BEGIN INIT INFO
# Provides: kibana
# Required-Start: $local_fs $remote_fs $network
# Required-Stop: $local_fs $remote_fs $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: start and stop kibana
### END INIT INFO
#
#
. /lib/lsb/init-functions

PIDFILE="/var/run/kibana.pid"
LOCKFILE="/var/lock/subsys/kibana"
KIBANA_DIR="/opt/kibana/"

start() {
        echo -n "Starting Kibana Daemon: "
        if [ -f $PIDFILE ]; then
                PID=`cat $PIDFILE`
                echo Kibana already running: $PID
                exit 1;
        else
                cd $KIBANA_DIR
                PID=`./bin/kibana >/dev/null 2>&1 & echo $! > $PIDFILE`
                echo `cat $PIDFILE`
        fi

}

stop() {
        echo -n "Shutting down Kibana Daemon: "
        echo
        killproc -p $PIDFILE
        RETVAL=$?
        echo
        [ $RETVAL = 0 ] && rm -f $LOCKFILE $PIDFILE
        return 0
}

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    status)
        status kibana
        ;;
    restart)
        stop
        start
        ;;
    *)
        echo "Usage:  {start|stop|status|restart}"
        exit 1
        ;;
esac
exit $?

查看Apache日志

将 Apache 的日志传输到 Fluentd → Elasticsearch,以便在 Kibana 中查看。
需要进行以下设置。
在执行 /etc/td-agent/td-agent.conf 的配置之后,只需重新启动 td-agent 就可以了。
如果一切正常,效果会是这样的。

スクリーンショット 2015-10-31 02.10.52.png

最后

在快速的步调下,引入了 fluentd、Elasticsearch 和 Kibana。
需要仔细学习每个工具的使用方法。
Elasticsearch 提供了许多可以通过 Rest API 注入各种数据来进行玩耍的元素。
Kibana 也是一个有趣的地方,所以我打算继续玩下去。

额外补充:2015年10月31日

由于td-agent.conf文件的设置不够完善,所以进行了几处修正。
以下简要解释。
type http可以使用curl将数据发送到fluentd。
可以以http://:/的形式发送JSON数据。
在本示例中,我们使用它将来自RaspberryPi2的温度数据发送到fluentd。

type tail的部分是用于将Apache日志发送到Elasticsearch的。
通过match将其发送到Elasticsearch中。

<source>
    type http
    port 8888
</source>

<source>
    type tail
    format apache2
    path /var/log/apache2/access.log
    tag apache.local
</source>

<match apache.*>
    logstash_prefix apache-access
    type_name access_log
    type elasticsearch
    include_tag_key true
    tag_key @log_name
    host localhost
    port 9200
    logstash_format true
    flush_interval 3s
</match>

<match temper.*>
    logstash_prefix temper-log
    type_name hash
    type elasticsearch
    include_tag_key true
    tag_key @log_name
    host localhost
    port 9200
    logstash_format true
    flush_interval 3s
</match>

追加说明:2015/11/01 删除elasticsearch的数据。

试过很多方法后,Elasticsearch可能会保留一些不完整或试错的数据。在这种情况下,可以通过以下方式使用curl进行索引的搜索和删除。
搜索已注册的索引:curl -X GET http://localhost:9200/_aliases?pretty
删除索引:curl -X DELETE http://localhost:9200/<索引>*

更新:2015/11/03引入elasticsearch-head。

我试着引入elasticsearch-head进行测试。
我参考了elasticsearch-head的安装步骤,非常方便。
因为我使用的是Debian(Wheezy)环境,所以有些环境上的差异需要记录下来。
以下是安装的命令(不是-install而是install,可以通过-h获取详细帮助):
/usr/share/elasticsearch/bin/plugin install mobz/elasticsearch-head

要查看已安装的插件,请输入以下命令:
curl -X GET ‘http://localhost:9200/_nodes?plugin=true&pretty’

虽然我希望使用elasticsearch-analysis-kuromoji,但它不支持ES2.0…

补充说明:2015/11/05进行td-agent的v2迁移

将td-agent移动到v2很容易。(早点注意就好了……)
参考Streaming Import by Treasure Agent (td-agent)的概述,安装了td-agent。
安装很顺利。
由于使用Debian Wheezy环境,只需执行以下一条命令即可。
$ curl -L http://toolbelt.treasuredata.com/sh/install-debian-wheezy-td-agent2.sh | sh

使用 dkg -l 命令来确认版本。
ii td-agent 2.2.1-0 amd64 Treasure Agent:一款数据收集器。

重新安装Elasticsearch插件。
/opt/td-agent/embedded/bin/fluent-gem install fluent-plugin-elasticsearch
或者td-agent-gem install fluent-plugin-elasticsearch也可以。

请参考”所有插件列表”以获取有关插件的信息。

附注:2015年11月15日引入了Kuromoji。

我在elasticsearch2.0中发现了kuromoji的安装方法,所以我进行了补充。
参考了日语(kuromoji)分析插件的安装方法后,非常容易地成功了。

例如:hoge@fuga:~# /usr/share/elasticsearch/bin/plugin install analysis-kuromoji 成功安装。

如果将参数设为列表,就可以确认已安装的插件。

hoge@fuga:~# /usr/share/elasticsearch/bin/plugin list
Installed plugins in /usr/share/elasticsearch/plugins:
    - analysis-kuromoji
    - head

如果达到了这样的情况,就可以进行导入了。

补充说明:2016/04/23 安装Kibana的apt-get方法

将Kibana的安装方式更改为使用apt-get。
通过这个操作,今后可以使用apt-get来更新Kibana。

按照这个参考手册的步骤来实施,可以顺利地引入。
考虑到未来的版本升级等因素,我认为这种引入方法不错。

补充说明:2016年04月23日的elasticsearch.yml配置。

尽管已经安装了elasticsearch-head,但不知为何一直无法从浏览器访问,放着不管,但终于解决了。参考那个能在1分钟内运行的一键脚本给陷入Elasticsearch2.3和kibana4.5困扰的你,只需将network.host: 0.0.0.0添加到elasticsearch.yml中,问题轻松解决。我认为这是一个相当棘手的问题。

广告
将在 10 秒后关闭
bannerAds