Loki 部署验证
介绍
在完成Grafana Loki的部署后,验证其是否正常运行是至关重要的步骤。本章将指导您通过一系列检查来确认Loki组件是否按预期工作,包括服务健康状态检查、日志摄取测试和查询验证。我们还将介绍常见问题及其解决方案。
基础健康检查
1. 检查Loki服务状态
使用systemctl
或kubectl
(如果部署在Kubernetes中)验证服务状态:
bash
# 使用systemctl(单机部署)
systemctl status loki
# 使用kubectl(Kubernetes部署)
kubectl get pods -n loki
预期输出应显示服务状态为active (running)
或Pod状态为Running
。
2. 访问Loki API
Loki提供健康检查API端点:
bash
curl http://localhost:3100/ready
成功响应应为 ready
。
提示
如果使用Kubernetes,可能需要通过端口转发访问服务:
bash
kubectl port-forward -n loki service/loki 3100:3100
日志摄取测试
1. 推送测试日志
使用Loki的Push API发送测试日志:
bash
curl -v -H "Content-Type: application/json" -XPOST \
-s "http://localhost:3100/loki/api/v1/push" \
--data-raw '{"streams": [{ "stream": { "test": "true" }, "values": [ [ "'$(date +%s%N)'", "测试日志消息" ] ] }]}'
2. 验证日志存储
通过LogCLI或Grafana验证日志是否被正确存储:
bash
logcli query '{test="true"}' --limit=1
预期输出应包含您发送的测试日志消息。
查询验证
1. 基础LogQL查询
在Grafana中或使用LogCLI执行简单查询:
bash
logcli query '{job="varlogs"}' --limit=5
2. 指标查询
验证指标是否能正确计算:
bash
logcli query 'rate({job="varlogs"} [5m])'
备注
如果使用Docker或Kubernetes部署,job
标签可能为docker
或kubernetes
。
实际案例:验证生产部署
假设您已经部署了一个多节点的Loki集群,以下是完整的验证流程:
- 检查每个节点的
/ready
端点 - 通过多个客户端并发推送日志
- 查询时应能获取所有节点的日志数据
常见问题排查
1. 连接被拒绝
错误示例:
bash
curl: (7) Failed to connect to localhost port 3100: Connection refused
解决方案:
- 确认Loki进程正在运行
- 检查防火墙设置
- 验证配置文件中的
server.http_listen_port
2. 查询返回空结果
可能原因:
- 日志未被正确标记
- 查询时间范围不正确
- 存储配置有问题
调试方法:
bash
# 查看已存储的标签
logcli labels
总结
通过本章学习,您应该能够:
- 检查Loki服务的基本健康状态
- 验证日志摄取功能
- 执行基础查询测试
- 排查常见部署问题
延伸练习
- 尝试部署一个包含3个Loki实例的微服务集群并验证高可用性
- 配置日志保留策略并验证其效果
- 模拟网络分区场景并观察系统行为