环境,服务器ip:192.168.140.2
工程目录如下:

第一步:搭建loki
1)创建目录:
mkdir -p /data/lai/Loki_Grafana_Promtail/loki
1)在loki文件夹内创建一个docker-compose.yaml文件
version: "3.8"
services:
loki:
image: grafana/loki:2.9.0
container_name: loki
user: "0:0"
ports:
- "3100:3100"
volumes:
- ./loki_config.yaml:/etc/loki/loki_config.yaml:ro
- /data/loki:/data/loki
command: -config.file=/etc/loki/loki_config.yaml
restart: unless-stopped
2)创建一个loki_config.yaml文件
auth_enabled: false
server:
http_listen_port: 3100
grpc_listen_port: 9096
common:
instance_addr: 127.0.0.1
path_prefix: /data/loki
storage:
filesystem:
chunks_directory: /data/loki/chunks
rules_directory: /data/loki/rules
replication_factor: 1
ring:
kvstore:
store: inmemory
schema_config:
configs:
- from: 2020-10-24
store: boltdb-shipper
object_store: filesystem
schema: v11
index:
prefix: index_
period: 24h
ruler:
alertmanager_url: http://localhost:9093
3)创建loki所需的目录,并且启动
创建所需目录并设置正确权限
sudo mkdir -p /data/loki/{chunks,rules,rules-temp}
sudo chown -R 10001:10001 /data/loki
sudo chmod -R 775 /data/loki
启动
docker-compose down && docker-compose up -d
第二步:搭建promtail
1)创建一个promtail文件夹,在创建docker-compose.yaml文件
version: "3"
services:
promtail:
user: "0:0"
image: grafana/promtail:2.9.0
container_name: promtail
ports:
- "9080:9080"
volumes:
- /data/lai/Loki_Grafana_Promtail/promtail/promtail_config.yaml:/etc/promtail/config.yml:ro
- /data/shao_jun/ziyuanku_data/aishare/logs:/var/log/app:ro
- /data/lai/Loki_Grafana_Promtail/promtail/:/promtail_data/
command: -config.file=/etc/promtail/config.yml
restart: unless-stopped
2)创建一个promtail_config.yaml配置文件
server:
http_listen_port: 9080
grpc_listen_port: 0
positions:
filename: /promtail_data/positions.yaml #容器内的positions.yaml文件路径
clients:
- url: http://192.168.140.2:3100/loki/api/v1/push #推送日志流到Loki中的api
scrape_configs:
- job_name: inferservice
static_configs:
targets:
localhost
labels:
job: inferservice
path: /var/log/app/*.log #容器内的日志文件路径
3)启动
docker-compose up -d
第三步:创建一个grafana文件夹,在grafana文件夹中创建docker-compose.yaml文件
version: "3.8"
services:
grafana:
image: grafana/grafana:9.2.10
container_name: grafana
ports:
- "3000:3000"
restart: unless-stopped
environment:
- GF_SECURITY_ADMIN_PASSWORD=admin
volumes:
- /data/grafana:/var/lib/grafana
user: "0:0"
2)创建grafana所需要的目录
创建grafana数据目录
sudo mkdir -p /data/grafana
设置目录权限
sudo chmod -R 775 /data/grafana
设置目录所有者
sudo chown -R 10001:10001 /data/grafana
3)启动
启动
docker-compose down && docker-compose up -d
附录:
1、对promtail的解读
Promtail 启动说明
Promtail 是 Grafana Loki 的日志收集代理,负责从日志文件中收集日志并发送到 Loki 服务器。
配置文件说明
promtail_config.yaml
- 日志文件路径 :
/var/log/app/*.log(容器内路径)- 目标服务器 :Loki 服务器
http://192.168.140.2:3100/loki/api/v1/push- 端口监控:9080(用于健康检查和指标)
docker-compose.yml
- 镜像版本:grafana/promtail:2.9.0
- 容器名称:promtail
- 端口映射:9080:9080
- 挂载卷 :
- 配置文件:
promtail_config.yaml→/etc/promtail/config.yml- 日志目录:
/data/shao_jun/ziyuanku_data/aishare/logs→/var/log/app- 数据目录:
./→/promtail_data/启动步骤
1. 启动 Promtail 服务
cd /data/lai/Loki_Grafana_Promtail/promtail docker-compose up -d2. 检查服务状态
# 检查容器状态 docker ps | grep promtail # 查看容器日志 docker logs promtail --tail 20 # 检查目标状态 curl http://192.168.140.2:9080/targets3. 验证日志收集
# 检查日志文件是否被正确监控 docker exec promtail ls -la /var/log/app/ # 查看 Promtail 监控的目标文件 docker logs promtail | grep "Adding target"服务管理
停止服务
cd /data/lai/Loki_Grafana_Promtail/promtail docker-compose down重启服务
cd /data/lai/Loki_Grafana_Promtail/promtail docker-compose restart查看实时日志
docker logs promtail -f故障排除
常见问题
目标状态显示 0/1 ready
- 检查日志文件路径是否正确
- 确认日志文件存在且有读取权限
- 查看 Promtail 日志获取详细信息
无法连接到 Loki 服务器
- 确认 Loki 服务正在运行
- 检查网络连接和防火墙设置
日志文件未被监控
- 确认日志文件路径配置正确
- 检查文件通配符模式是否匹配
健康检查
相关服务
- Loki 服务器 :http://192.168.140.2:3100
- Grafana 界面 :http://192.168.140.2:3000
注意事项
- 确保日志目录
/data/shao_jun/ziyuanku_data/aishare/logs存在且有读取权限- Promtail 会自动监控该目录下所有
.log文件- 配置文件修改后需要重启服务生效
- 使用
docker-compose down && docker-compose up -d完全重启服务