更新内容: - 移除 `dashboard.json` 文件,清理不再需要的 Grafana 仪表板配置。 - 简化项目目录结构,删除多余的监控配置以优化维护。
238 lines
3.9 KiB
Markdown
238 lines
3.9 KiB
Markdown
# Loki 快速参考
|
|
|
|
## 常用命令
|
|
|
|
### 服务管理
|
|
|
|
```bash
|
|
# 启动所有服务
|
|
cd deployment && docker-compose up -d
|
|
|
|
# 查看服务状态
|
|
docker-compose ps
|
|
|
|
# 查看日志
|
|
docker-compose logs -f loki
|
|
docker-compose logs -f promtail
|
|
|
|
# 重启服务
|
|
docker-compose restart loki promtail
|
|
|
|
# 停止服务
|
|
docker-compose down
|
|
```
|
|
|
|
### 健康检查
|
|
|
|
```bash
|
|
# Loki
|
|
curl http://localhost:3100/ready
|
|
|
|
# Promtail
|
|
curl http://localhost:9080/ready
|
|
|
|
# 验证脚本
|
|
./scripts/verify_loki.sh
|
|
```
|
|
|
|
## 常用 LogQL 查询
|
|
|
|
### 基础查询
|
|
|
|
```logql
|
|
# 所有日志
|
|
{job="functional-scaffold-app"}
|
|
|
|
# 错误日志
|
|
{job="functional-scaffold-app", level="ERROR"}
|
|
|
|
# 特定时间范围
|
|
{job="functional-scaffold-app"}[5m]
|
|
```
|
|
|
|
### 文本过滤
|
|
|
|
```logql
|
|
# 包含文本
|
|
{job="functional-scaffold-app"} |= "error"
|
|
|
|
# 不包含文本
|
|
{job="functional-scaffold-app"} != "healthz"
|
|
|
|
# 正则匹配
|
|
{job="functional-scaffold-app"} |~ "error|exception"
|
|
```
|
|
|
|
### JSON 提取
|
|
|
|
```logql
|
|
# 提取 request_id
|
|
{job="functional-scaffold-app"} | json | request_id != ""
|
|
|
|
# 按 request_id 过滤
|
|
{job="functional-scaffold-app"} | json | request_id = "abc123"
|
|
```
|
|
|
|
### 聚合统计
|
|
|
|
```logql
|
|
# 日志数量
|
|
count_over_time({job="functional-scaffold-app"}[5m])
|
|
|
|
# 按级别统计
|
|
sum by (level) (count_over_time({job="functional-scaffold-app"}[5m]))
|
|
|
|
# 错误率
|
|
sum(rate({job="functional-scaffold-app", level="ERROR"}[5m]))
|
|
/
|
|
sum(rate({job="functional-scaffold-app"}[5m]))
|
|
```
|
|
|
|
## API 查询
|
|
|
|
### 查询日志
|
|
|
|
```bash
|
|
# 查询最近的日志
|
|
curl -G -s "http://localhost:3100/loki/api/v1/query_range" \
|
|
--data-urlencode 'query={job="functional-scaffold-app"}' \
|
|
--data-urlencode 'limit=10' \
|
|
| jq '.data.result'
|
|
|
|
# 查询错误日志
|
|
curl -G -s "http://localhost:3100/loki/api/v1/query_range" \
|
|
--data-urlencode 'query={job="functional-scaffold-app", level="ERROR"}' \
|
|
| jq '.data.result'
|
|
```
|
|
|
|
### 查询标签
|
|
|
|
```bash
|
|
# 查询所有 job 标签值
|
|
curl -s "http://localhost:3100/loki/api/v1/label/job/values" | jq
|
|
|
|
# 查询所有 level 标签值
|
|
curl -s "http://localhost:3100/loki/api/v1/label/level/values" | jq
|
|
```
|
|
|
|
## 配置切换
|
|
|
|
### 启用文件日志
|
|
|
|
编辑 `deployment/docker-compose.yml`:
|
|
|
|
```yaml
|
|
environment:
|
|
- LOG_FILE_ENABLED=true
|
|
```
|
|
|
|
重启服务:
|
|
|
|
```bash
|
|
docker-compose up -d app
|
|
```
|
|
|
|
### 调整日志级别
|
|
|
|
编辑 `deployment/docker-compose.yml`:
|
|
|
|
```yaml
|
|
environment:
|
|
- LOG_LEVEL=WARNING # DEBUG, INFO, WARNING, ERROR, CRITICAL
|
|
```
|
|
|
|
### 修改保留期
|
|
|
|
编辑 `monitoring/loki.yaml`:
|
|
|
|
```yaml
|
|
limits_config:
|
|
retention_period: 72h # 改为 3 天
|
|
```
|
|
|
|
重启 Loki:
|
|
|
|
```bash
|
|
docker-compose restart loki
|
|
```
|
|
|
|
## 访问地址
|
|
|
|
| 服务 | 地址 | 凭据 |
|
|
|------|------|------|
|
|
| Grafana | http://localhost:3000 | admin/admin |
|
|
| Loki API | http://localhost:3100 | - |
|
|
| Promtail | http://localhost:9080 | - |
|
|
| Prometheus | http://localhost:9090 | - |
|
|
| App | http://localhost:8111 | - |
|
|
|
|
## 故障排查
|
|
|
|
### 看不到日志
|
|
|
|
```bash
|
|
# 1. 检查 Promtail 日志
|
|
docker-compose logs promtail | tail -50
|
|
|
|
# 2. 检查容器标签
|
|
docker inspect deployment-app-1 | grep -A 5 Labels
|
|
|
|
# 3. 查询 Loki
|
|
curl -s "http://localhost:3100/loki/api/v1/label/job/values" | jq
|
|
```
|
|
|
|
### Docker socket 权限
|
|
|
|
```bash
|
|
sudo chmod 666 /var/run/docker.sock
|
|
```
|
|
|
|
### 清理日志数据
|
|
|
|
```bash
|
|
# 停止 Loki
|
|
docker-compose stop loki
|
|
|
|
# 清理数据
|
|
docker-compose exec loki rm -rf /loki/chunks/*
|
|
|
|
# 重启 Loki
|
|
docker-compose start loki
|
|
```
|
|
|
|
## 性能优化
|
|
|
|
### 减少日志量
|
|
|
|
```yaml
|
|
# docker-compose.yml
|
|
environment:
|
|
- LOG_LEVEL=WARNING # 只记录警告和错误
|
|
```
|
|
|
|
### 过滤健康检查日志
|
|
|
|
编辑 `monitoring/promtail.yaml`:
|
|
|
|
```yaml
|
|
pipeline_stages:
|
|
- drop:
|
|
expression: ".*healthz.*"
|
|
```
|
|
|
|
### 限制查询范围
|
|
|
|
```logql
|
|
# 好:限制时间范围
|
|
{job="functional-scaffold-app"}[5m]
|
|
|
|
# 差:查询所有时间
|
|
{job="functional-scaffold-app"}
|
|
```
|
|
|
|
## 文档链接
|
|
|
|
- 完整文档: `docs/loki-integration.md`
|
|
- 实施总结: `docs/loki-implementation-summary.md`
|
|
- 验证脚本: `scripts/verify_loki.sh`
|