Loki采集docker日志
<h5>部署loki和grafana</h5>
<ul>
<li>使用docker运行,如果只用docker plugin来收集日志则可以把promtail部分删除;</li>
</ul>
<pre><code class="language-yaml">version: "3"
networks:
loki:
services:
loki:
image: grafana/loki
restart: always
environment:
- TZ=Asia/Shanghai
- LANG=zh_CN.UTF-8
ports:
- 3100:3100
networks:
- loki
promtail:
image: grafana/promtail
restart: always
environment:
- TZ=Asia/Shanghai
- LANG=zh_CN.UTF-8
networks:
- loki
grafana:
image: grafana/grafana:master
restart: always
environment:
- TZ=Asia/Shanghai
- LANG=zh_CN.UTF-8
volumes:
- ./data:/var/lib/grafana/
ports:
- 3000:3000
networks:
- loki</code></pre>
<h5>配置docker日志</h5>
<ul>
<li>安装loki的docker-plugin,执行如下命令;</li>
</ul>
<pre><code class="language-bash">docker plugin install grafana/loki-docker-driver:latest --alias loki --grant-all-permissions
docker plugin ls</code></pre>
<ul>
<li>配置docker日志输出,这种方式采集全局的容器日志,并重启服务;</li>
</ul>
<pre><code class="language-bash"># vim /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"graph": "/data/docker",
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn/"],
"live-restore": true,
"insecure-registries":["0.0.0.0/0"],
"log-driver": "loki",
"log-opts": {
"loki-url": "http://10.0.0.21:3100/loki/api/v1/push",
"max-size": "50m",
"max-file": "10"
}
}</code></pre>
<ul>
<li>如果不想采集全局,针对单个容器进行配置即可;</li>
</ul>
<pre><code class="language-bash"># &loki-logging表示定义模板
# *loki-logging表示引用模板。对于多个服务就只需要对应加上一行 logging: *loki-logging 即可
# 对于3.4极其以上版本可以通过定义模板来减少配置
version: "3.4"
# set template
x-logging:
&loki-logging
driver: loki
options:
loki-url: "http://YOUR_IP:3100/loki/api/v1/push"
max-size: "50m"
max-file: "10"
# get template
services:
host:
container_name: grafana
image: grafana/grafana
logging: *loki-logging
environment:
- TZ=Asia/Shanghai
- LANG=zh_CN.UTF-8</code></pre>