marathon事件日志收集

marathon 事件日志收集到ES中

marathon 有配置可以主动把 marathon 的事件日志发送到 http 接口上。这里的事件包括,发布容器的json内容,docker容器死掉、启动,运行、kill,健康检查等日志。也可以说 marathon 所有的动作日志这上都会有。所有我要把这个日志收集起来,并可以做监控,历史查询等等。
先说一下我的方案:
启动一个logstash实例,并配置http接口,把收集到的日志存到ES索引中。
marathon 配置 logstash 的 http 接口地址,把日志发送到这里即可。
后期可以在ES中查询你想要的事件日志,并报警,或用kibana出图等。

logstash 配置

#####logstash 配置文件
vim /etc/logstash.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
input {
http {
host => "0.0.0.0"
port => 7882
codec => json
add_field => {
"marathon" => "base-marathon"
}
}
}

output {
elasticsearch {
hosts => ["10.214.193.27:9250","10.214.193.28:9250","10.214.193.29:9250"]
index => "logstash-marathon-%{+YYYY.MM.dd}"
flush_size => 10000
idle_flush_time => 60
template_overwrite => true
}
}

其中 add_field 添加一个字段 “marathon”:”base-marathon”
这样 ES的一个索引所可以放多个marathon的日志,但是需要启动多个logstash,每个配置不同,因为marathon的日志是一样的,区别不出来是哪个集群的日志。

启动

可以用supervisor或docker方式启动。就不在这里说了。

marathon 配置

我用的是 yum 安装的marathon,版本是 1.4.9 , 配置是:

1
2
3
4
mkdir -p /etc/marathon/conf/

echo "http_callback" > /etc/marathon/conf/event_subscriber
echo "http://logstashIP:7882" > /etc/marathon/conf/http_endpoints

二进制配置的参数是一样的。

重启服务加载配置

1
systemctl restart marathon

ES 上查询日志

这样配置完成之后,等marathon有动作的话,ES上就会有数据了,

如:
marathon-es-data

这只是一个事件,还还有好多时间呢!

感觉文章还可以的话,帮忙点点下面的广告哦! 谢谢支持!

感谢您的支持!