步骤:
一、下载ELK的三大组件
Elasticsearch下载地址: https://www.elastic.co/downloads/elasticsearch
Logstash下载地址: https://www.elastic.co/downloads/logstash
Kibana下载地址: https://www.elastic.co/downloads/kibana
下载后将其解压到某个目录即可.
注:这3个组件相互之间的关系及作用如下:
Logstash(收集服务器上的日志文件) --》然后保存到 ElasticSearch(搜索引擎) --》Kibana提供友好的web界面(从ElasticSearch读取数据进行展示)
二、安装elasticsearch
2.1 启动elasticsearch
进入elasticsearch目录\bin
./elasticsearch
顺利的话,启动成功后,在浏览器里输入http://localhost:9200/ 应该能看到类似下面的输出:
{
"name" : "Shi'ar Gladiator",
"cluster_name" : "elasticsearch",
"version" : {
"number" : "2.3.2",
"build_hash" : "b9e4a6acad4008027e4038f6abed7f7dba346f94",
"build_timestamp" : "2016-04-21T16:03:47Z",
"build_snapshot" : false,
"lucene_version" : "5.5.0"
},
"tagline" : "You Know, for Search"
}
2.2 安装kopf插件
先按Ctrl+C停止elasticsearch,接下来准备安装插件,elasticsearch有大量插件资源,用于增加其功能,bin目录下,输入
./plugin list 可以查看当前安装的插件列表,我们刚刚全新安装,输出的是一个空列表,继续输入
./plugin install mobz/elasticsearch-head
安装完成后,再次用./plugin list确认下:
Installed plugins in /Users/liaomengge/ELK/elasticsearch-2.3.2/plugins:
- head
- kopf
如果输出上述类似,表明head安装成功。
然后重启elasticsearch,浏览器里输入http://localhost:9200/_plugin/head/,将会看到类似下面的界面
以上操作都ok后,建议Ctrl+C关掉,改用nohup ./elasticsearch & 将其做为后台进程运行,以免退出。
三、logstash的启动与配置
说明:
- 多个独立的agent(Shipper)负责收集不同来源的数据,一个中心agent(Indexer)负责汇总和分析数据,在中心agent前的Broker(使用redis实现)作为缓冲区,中心agent后的ElasticSearch用于存储和搜索数据,前端的Kibana提供丰富的图表展示
- Shipper表示日志收集,使用LogStash收集各种来源的日志数据,可以是系统日志、文件、redis、mq等等
- Broker作为远程agent与中心agent之间的缓冲区,使用redis实现,一是可以提高系统的性能,二是可以提高系统的可靠性,当中心agent提取数据失败时,数据保存在redis中,而不至于丢失
- 中心agent也是LogStash,从Broker中提取数据,可以执行相关的分析和处理(Filter)
进入logstash的bin目录下
mkdir conf
vi conf/logstash-indexer.conf
内容如下:
input {
file {
path => ["/Users/liaomengge/ELK/log/error.log"]
type => "log-error"
}
log4j {
mode => "server"
host => "127.0.0.1"
port => "8066"
type => "log4j"
}
redis {
host => "127.0.0.1"
port => "6379"
data_type =>"list"
key => "logstash:redis"
codec => "json"
type => "redis-input"
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
}
stdout {
codec => rubydebug
}
}
以上配置了3中方式:
1) file
2) log4j
表示通过Apache的log4j记录
3) redis
将日志数据先通过redis缓存容器,减轻大量日志写入的请求
此处有个隐患:当redis以RDB方式进行持久化时,可能存在宕机情况,导致部分数据丢失,故可以考虑使用kafka做缓存容器
上面的type,是指定如下图中类型的:
Logstash中的其他字段可以参考https://www.elastic.co/guide/en/logstash/current/plugins-inputs-log4j.html
3.2 启动
继续保持在logstash的bin目录下,输入
./logstash -f conf/logstash-indexer.conf
稍等片刻,如果看到Logstash startup completed,则表示启动成功[注:此时的elasticsearch必须启动]。然后另开一个终端窗口,向redis中写入一些东西,比如`hello world`,然后保存。观察logstash的终端运行窗口,是否有东西输出,如果有以下类似输出:
{
"message" => "hello, world",
"tags" => [
[0] "_jsonparsefailure"
],
"@version" => "1",
"@timestamp" => "2016-04-30T10:07:38.881Z",
"type" => "redis-input"
}
说明logstash工作正常,此时浏览http://localhost:9200/_plugin/head/ 可以看到如下数据:
四、kibana的配置及启动
4.1 修改配置文件
进入到kibana/config,下有一个配置文件kibana.yml,改成下面这样:
server.port: 5601
server.host: “127.0.0.1”
elasticsearch.url: http://127.0.0.1:9200
kibana.index: “.kibana”
即:指定elasticsearch的访问位置,ip以及端口
4.2 启动
进入kibana/bin 下,输入:
./kibana
启动完成后,在浏览器里输入http://localhost:5601/ 即可看到kibana界面,首次运行,会提示创建index,可以直接点击Create按钮或者以前面我们设置的`type`作为索引即可。
然后,就能看到类似下面的界面了:
github: https://github.com/liaomengge/elk-demo
参考文章:
http://www.cnblogs.com/yjmyzz/p/ELK-install-tutorial.html
http://www.open-open.com/lib/view/open1451801542042.html
https://www.elastic.co/products
http://www.cnblogs.com/yjf512/p/4199105.html