每一个Golang的容器实例中需要有一个Logstash的服务用于读取日志文件并上传到ES中,这里为了方便提前制作了一个镜像,可以直接使用
docker pull jasonleemz/golang:231219
https://hub.docker.com/r/jasonleemz/golang/tags
附上 logstash-config.conf
input {
file {
path => "/home/app/logs/log1/*.log" # 监听 log1 目录下的日志文件
start_position => "beginning"
sincedb_path => "/dev/null"
ignore_older => 0
tags => ["log1"] # 使用标签区分不同的日志文件
}
file {
path => "/home/app/logs/log2/*.log" # 监听 log2 目录下的日志文件
start_position => "beginning"
sincedb_path => "/dev/null"
ignore_older => 0
tags => ["log2"] # 使用标签区分不同的日志文件
}
}
filter {
if "log1" in [tags] {
mutate {
add_field => { "es_index" => "index_for_log1" } # 设置 log1 对应的 Elasticsearch 索引名
}
}
if "log2" in [tags] {
mutate {
add_field => { "es_index" => "index_for_log2" } # 设置 log2 对应的 Elasticsearch 索引名
}
}
}
output {
elasticsearch {
hosts => ["elasticsearch:9200"] # 这里修改成真实的ES地址
index => "%{es_index}" # 使用动态设置的索引名
}
}
修改配置文件
因为镜像中的服务由supervisor托管,需要将logstash-config修改成自己对应的服务路径后重新启动
cd /etc/supervisor/conf.d/
mv logstash.ini.example logstash.ini
supervisorctl reload
Create an index pattern
进入Kibana - Management - Stack Management - Index patterns
回到 Analytics - Discover 可以看到日志已经收集上来了
评论区