log-pilot能够通过配置一定的规则收集单台部署机器的所有容器日志,是一款来自阿里云的类似filebeat的轻量级容器日志收集工具。
log-pilot具有如下特性
§1. 启动log-pilot
使用docker启动log-pilot
1 docker run -d \
2 -v /var/run/docker.sock:/var/run/docker.sock \
3 -v /etc/localtime:/etc/localtime \
4 -v /:/host:ro \
5 -e PILOT_TYPE=filebeat \
6 -e LOGGING_OUTPUT=logstash \
7 -e LOGSTASH_HOST=${LOGSTASH_HOST} \
8 -e LOGSTASH_PORT=${LOGSTASH_PORT} \
9 --privileged \
10 registry.cn-hangzhou.aliyuncs.com/acs-sample/log-pilot:0.1
参数解析:
也可以直接跳过logstash,将日志输出到elasticsearch,配置详情见log-pilot-docs
§2. 启动elasticsearch
设置/etc/sysctl.conf
vm.max_map_count=262144
1 docker run -d \
2 --name elasticsearch \
3 -p 9200:9200 \
4 -p 9300:9300 \
5 -e "discovery.type=single-node" \
6 elasticsearch:6.5.4
§3. 启动logstash
默认的配置文件可以先从logstash测试容器中拷出到/opt/logstash/pipeline/
1 docker run -d \
2 -v /opt/logstash/pipeline/:/usr/share/logstash/pipeline/ \
3 -p 5000:5000 \
4 -p 5044:5044 \
5 logstash:6.5.4
其中/opt/logstash/pipeline/pipelines.yml
- pipeline.id: main
path.config: "/usr/share/logstash/pipeline/conf.d/*.conf"
/opt/logstash/pipeline/conf.d/elasticsearch.yml
input {
beats {
port => 5044
type => beats
}
tcp {
port => 5000
type => syslog
}
}
filter {
}
output {
elasticsearch {
hosts => ["elasticsearch01:9200", "elasticsearch02:9200"]
}
stdout { codec => rubydebug }
}
§4. 收集日志
当服务以docker容器方式启动时,需要指定label来让log-pilot自动触发收集,以下以tomcat为例:
1 docker run -d \
2 -p 10080:8080 \
3 -v /usr/local/tomcat/logs \
4 --label aliyun.logs.catalina=stdout \
5 --label aliyun.logs.access=/usr/local/tomcat/logs/localhost_access_log.*.txt \
6 tomcat
启动tomcat的时候,我们声明了这样下面两个,告诉log-pilot这个容器的日志位置,还可以在应用容器上添加更多的标签
aliyun.logs.$name = $path
变量name是日志名称,具体指随便是什么,你高兴就好。只能包含0-9a-zA-Z_和-变量path是要收集的日志路径,必须具体到文件,不能只写目录。文件名部分可以使用通配符。/var/log/he.log和/var/log/*.log都是正确的值,但/var/log不行,不能只写到目录。stdout是一个特殊值,表示标准输出
aliyun.logs.$name.format:日志格式,目前支持
aliyun.logs.$name.tags: 上报日志的时候,额外增加的字段,格式为k1=v1,k2=v2,每个key-value之间使用逗号分隔,例如
aliyun.logs.access.tags=“name=hello,stage=test”,上报到存储的日志里就会出现name字段和stage字段如果使用elasticsearch作为日志存储,target这个tag具有特殊含义,表示elasticsearch里对应的index
§5. 索引日志
产生的日志都讲发送到elasticsearch里。打开kibana,这时候你应该还看不到新日志,需要先创建index。log-pilot会把日志写到elasticsearch特定的index下,规则如下
1. 如果应用上使用了标签aliyun.logs.tags,并且tags里包含target,使用target作为elasticsearch里的index,否则
2. 使用标签aliyun.logs.XXX里的XXX作为index
留言与评论(共有 0 条评论) |