公司新上线了ELK分布式日志系统,本着好奇的心态自己动手搭建一套单机系统,特此记录。本文主要参考了ELK实践(一):基础入门,有些小坑做了改动。
整体架构
Step 1 准备一台干净的虚拟机
准备一台干净的虚拟机接入本地局域网,可参考本人文章Ubuntu 16虚拟机原型创建,之后ELK所有的软件都在这一台服务器上安装并运行。
Step 2 安装JDK1.8环境
这个就不再赘述,网上有很多教程,后面有时间会整理一期。
Step 3 安装ELK和Filebeat
总共安装四个软件:ElasticSearch,Logstash,Kibana和Filebeat。以ElasticSearch为例:
- 首先下载软件
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.2.tar.gz
- 解压
tar zxvf elasticsearch-5.6.2.tar.gz -C /usr/local/elk
把解压后的目录重命名为elasticsearch
- 配置权限:ELK需要用非root用户操作
chown -R elk:elk /usr/local/elk/elasticsearch
- 修改JVM设置,把内存调小一点。
vi /usr/local/elk/elasticsearch/config/jvm.options
-Xms256m
-Xmx1g
- 运行
/usr/local/elk/elasticsearch/bin/elasticsearch -d
查看是否运行成功
$ netstat -lntup | grep 9200
tcp 0 0 127.0.0.1:9200 0.0.0.0:* LISTEN 121/java
$ curl http://127.0.0.1:9200
{
"name" : "6e1PMnr",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "Uahv9iLnSLyMjIxX57lbMQ",
"version" : {
"number" : "5.6.2",
"build_hash" : "bd92e7f",
"build_date" : "2017-12-17T20:23:25.338Z",
"build_snapshot" : false,
"lucene_version" : "7.1.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}
注意下载时保证相同版本:
-
elasticsearch
artifacts.elastic.co/downloads/e… -
logstash
artifacts.elastic.co/downloads/l… -
filebeat
artifacts.elastic.co/downloads/b…
Step 4 Logstash配置
调小Logstash JVM内存
vim /usr/local/elk/logstash/config/jvm.options
测试运行,默认运行在5044端口
$ ./logstash/bin/logstash -e 'input { stdin { } } output { stdout {}}'
Step 5 Kibana配置:
只需要更改一个地方,不需要显式指定ElasticSearch的url,Kibana会自动采集http://127.0.0.1:9200 这个url
vim /usr/local/elk/kibana/config/kibana.yml
改为
server.host: "0.0.0.0"
测试运行,默认运行在5601端口
/usr/local/elk/kibana/bin/kibana
打开浏览器 http://ip地址:5601 就可以看到 kibana 的界面了
Step 6 整合ELK
模拟两个日志文件
echo "test - test2" >> /tmp/test1.log
echo "test - test2" >> /tmp/test2.log
新建一个Filebeat配置文件:
cd /usr/local/elk
vim beats/filebeat/filebeat.test.yml
配置内容:
filebeat.prospectors:
- type: log
paths:
- /tmp/test1.log
tags: ["test1"]
- type: log
paths:
- /tmp/test2.log
tags: ["test2"]
output.logstash:
hosts: ["127.0.0.1:5046"]
修改Logstash的stdin为Filebeat,stdout为ElasticSearch
vim /usr/local/elk/logstash/config/logstash.yml
改为
path.config: /usr/local/elk/logstash/config/conf.d
在conf.d目录下新建一个配置文件
vim logstash/config/conf.d/filebeat.test.conf
内容为
input {
beats {
port => 5046
}
}
output {
elasticsearch {
hosts => ["127.0.0.1:9200"]
index => "test-filebeat"
}
stdout { codec => rubydebug }
}
启动Logstash和Filebeat
./logstash/bin/logstash &
./beats/filebeat/filebeat -c beats/filebeat/filebeat.test.yml
Step 7 整体ELK测试
往模拟的日志文件里新增内容:
echo "new msg" >> /tmp/test2.log
echo "new msg3" >> /tmp/test2.log
稍等几秒钟,就可以在ELK里看到内容,Kibana可视化界面也可以查询到。