两大日志存储工具elasticsearch
和loki
。loki
是个轻量级存储,不建立全文索引,因此查全文则比较复杂。
由两个日志存储工具引出两类日志收集工具。
es
: fluentd
(安装了fluentd es
插件),filebeat
loki
:fluentd
(安装了fluentd loki
插件),promtail
,针对纯docker
容器可以使用docker log plugin loki
进行docker
容器日志收集。
docker
插件docker log plugin loki
安装命令如下
sudo docker plugin install grafana/loki-docker-driver:latest --alias loki --grant-all-permissions
离线安装
首先,在一台联网机器使用上述命令安装完docker log plugin loki
。然后执行下面打包命令。
cd /var/lib/docker
tar -czf plugins.tar.gz plugin
然后,拷贝plugins.tar.gz
包文件到离线节点上。
在离线节点上执行以下命令安装插件docker log plugin loki
。
docker plugin disable grafana/loki-docker-driver:latest -f
docker plugin rm grafana/loki-docker-driver:latest -f
tar -zxf plugins.tar.gz -C /var/lib/docker
service docker restart
docker plugin enable grafana/loki-docker-driver:latest
使用,则是加上logging
配置。例如
version: '2'
services:
ui:
image: nginx:1.15
volumes:
- ./static/:/usr/share/nginx/html
ports:
- "8888:80"
network_mode: "bridge"
links:
- "loki"
logging:
driver: loki
options:
loki-url: "http://loki:3100/loki/api/v1/push"
loki:
...
- 日志工具部署选择
工具fluentd
和promtail
均有容器和二进制部署方式。
不过,fluentd
二进制安装依赖ruby
环境。promtail
和filebeat
二进制运行均无其他依赖。
建议:
如果节点支持docker
:
采用容器化应用fluentd
和promtail
收集日志;
日志存储用loki
且仅仅收集容器应用日志则使用插件docker log plugin loki
。
如果节点不支持docker
,
日志存储用es
选择二进制安装filebeat
收集日志;
日志存储用loki
选择二进制安装promtail
收集日志。