1 基础环境服务器端
-
使用docker-compose安装loki,grafana
loki是主服务器,负责存储日志和处理查询。
Grafana用于日志分析检索界面操作。linux查看端口是否被占用
netstat -nultp
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 grafana: image: grafana/grafana:master restart: always environment: - TZ=Asia/Shanghai - LANG=zh_CN.UTF-8 ports: - 3000:3000 networks: - loki
docker-compose up -d
访问ip:3000,设置grafana数据源url
2 所有需要监控日志的服务器端
-
docker配置文件添加loki地址及相关参数
vim /etc/docker/daemon.json
{ "log-driver": "loki", "log-opts": { "loki-url": "http://部署loki的服务器IP:3100/loki/api/v1/push", "max-size": "30m", "max-file": "10" } }
其中max-size表示日志文件最大大小,max-file表示最多10个日志文件,都是对单个容器来说的。
-
安装loki的docker插件收集容器的日志文件
docker plugin install grafana/loki-docker-driver:latest --alias loki --grant-all-permissions
-
loki日志收集插件更新操作如下:
docker plugin disable loki --force docker plugin upgrade loki grafana/loki-docker-driver:latest --grant-all-permissions docker plugin enable loki systemctl restart docker
-
重启docker后,所有重新拉的镜像都可被收集到日志并发送到loki服务器
service docker restart
3 3小时踩坑
互相ping通的两台内网服务器无法实时获取日志信息的问题