ELK日志系统入门

filebeat -> logstash -> elasticsearch

filebeat 安装

brew install filebeat

filebeat下载地址

进入到filebeat的安装目录后,首先对filebeat.yml进行备份

cp filebeat.yml filebeat.yml.bak

开始编写第一个filebeat.yml

修改filebeat.yml,在 input_type 中修改日志paths,根据不同的输出修改output的值。

  • 项目中会采集多个日志文件,那么可以通过document_type来区分不同的日志源,方便根据不同的type来做后续处理。

比如;

paths:
   - /var/log/test.log
 input_type: log
 document_type: test

filebeat启动

./filebeat -e -c filebeat.yml -d "publish"

logstash 安装

Mac

brew install logstash

Linux

wget https://artifacts.elastic.co/downloads/logstash/logstash-5.2.1.tar.gz
tar -zxvf logstash-5.2.1.tar.gz    

安装之后先测试一下:

cd logstash-5.2.1
bin/logstash -e 'input { stdin { } } output { stdout {} }'

可以看见以下输出:

The stdin plugin is now waiting for input:

此时在控制台输入 hello world

1
2
3
4
5
6
7
hello world
{
"@version" => "1",
"@timestamp" => 2018-12-15T08:33:42.910Z,
"message" => "hello world",
"host" => "pangrou"
}

就就表示logstash已经安装成功啦!

安装beats

logstash的输入源是filebeat,那么我们需要安装一下beats:

./bin/logstash-plugin prepare-offline-pack logstash-input-beats
bin/logstash-plugin install file:///home/bigData/logstash-5.5.0/logstash-offline-plugins-5.5.0.zip

开始编写

读取本地日志文件,输出到elasticsearch

log格式为

log_fmt = '%(asctime)s %(filename)s,line %(lineno)s,%(levelname)s: %(message)s'

进入logstash/bin目录,新建pangrou.conf:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
input{
file{
path =>"pangrou/logs/*.log"
start_position=>"beginning"
sincedb_path=>"/dev/null"
}
}
filter{
grok{
match=>{
"message"=>"%{TIMESTAMP_ISO8601:accessTime} %{DATA:fileName},line %{NUMBER:lineNo},%{DATA:levelName}: %{GREEDYDATA:msg}"
}
remove_field=>"message"
}
date{
match=>["accessTime","yyyy-MM-dd HH:mm:ss,SSS"]
}
}
output {
if [levelName] == "ERROR"
{
elasticsearch {
hosts => "127.0.0.1:9200"
index => "pangrou"
}
}
stdout { codec => rubydebug}
}
运行:
./logstash -f pangrou.conf
接收filebeat数据,输出到elasticsearch

配置 5044 端口作为 Filebeat 的连接

1
2
3
4
5
6
7
8
9
10
11
12
13
input {
beats {
port => 5044
}
}
output {
elastic search {
hosts => "127.0.0.1:9200"
manage_template => false
index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}”
document_type => "%{[@metadata][type]}”
}
}

在elasticsearch中的索引为 filebeat-*

结尾

logstash运行起来后,开启filebeat,就可以在elasticsearch中查看日志了。