主要解决问题:项目负载均衡后,日志文件分散在多个位置,需要登录主机查看日志文件,在不确定那一个节点记录日志的情况下,很不方便,因此,使用Grafana+Promtail+Loki的访问收集到同一个服务上。(内容已验证,仅供参考,有更好的方式,请留言)
部署前说明:
- server 服务端使用loki存储和过滤数据,grafana界面展示。
- client 客户端,推送特定类型文件内容到服务端。
标题Server端服务安装,容器 docker-compose.yaml 文件:
yaml
version: "3.9"
networks:
loki:
services:
loki:
image: grafana/loki:2.9.2
ports:
- "3100:3100"
command:
- "-config.file=/etc/loki/local-config.yaml"
networks:
- loki
grafana:
image: grafana/grafana:latest
ports:
- "3000:3000"
networks:
- loki
environment:
- GF_PATHS_PROVISIONING=/etc/grafana/provisioning
- GF_AUTH_ANONYMOUS_ENABLED=false # 禁用匿名访问
- GF_AUTH_BASIC_ENABLED=true # 启用基本认证
- GF_SECURITY_ADMIN_USER=admin # 设置登录用户名
- GF_SECURITY_ADMIN_PASSWORD=admin # 设置登录账号密码
volumes:
- "./grafana-provisioning:/etc/grafana/provisioning" # 数据源配置文件
volumes:
grafana-provisioning:
验证安全
bash
curl -v http://[ip]:3100/loki/api/v1/push
telnet [ip] 3100
或者
nc -vz [ip] 3100
promtail 部署
下载地址:https://github.com/grafana/loki/releases/download/v2.9.2/promtail-linux-amd64.zip
解压 promtail-linux-amd64.zip 同级目录编辑配置文件 promtail.yaml
yaml
server:
http_listen_port: 9080
grpc_listen_port: 0
positions:
filename: /tmp/positions.yaml
clients:
- url: https://[ip]:3100/loki/api/v1/push
scrape_configs:
- job_name: jike-master # job名称,自定义
static_configs:
- targets: # 如测试环境多个应用多个路径,从此行开始复制修改对应的标签
- localhost
labels:
job: prod # 监控类型
project: jike-master # 项目名称自定义
host: jike-master # 建议修改为本机ip,方便过滤
__path__: /home/project/logs/*.log # 本机日志文件目录,*.log
运行命令
bash
nohup ./promtail-linux-amd64 --config.file=promtail.yaml &
登录,配置服务
登录地址: http://[url]:3000
配置数据源