在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 就可以了。
如果一切正常,效果会是这样的。
最后
在快速的步调下,引入了 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中,问题轻松解决。我认为这是一个相当棘手的问题。