# deploy-loki **Repository Path**: attacker/deploy-loki ## Basic Information - **Project Name**: deploy-loki - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-05-08 - **Last Updated**: 2025-05-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Loki + Promtail 日志系统部署文档 ### @author Loganli ## 项目介绍 本项目提供了使用Docker Compose快速部署Grafana Loki和Promtail的配置文件。Loki是一个水平可扩展、高可用性、多租户的日志聚合系统,而Promtail是一个专为Loki设计的日志收集客户端。 ## 组件版本 - Loki: `grafana/loki:2.8.11` - Promtail: `docker.io/grafana/promtail:3.0.0` ## 目录结构 ``` deploy-loki/ ├── loki/ # Loki服务目录 │ ├── docker-compose.yml # Loki的Docker Compose配置 │ ├── conf/ # Loki配置文件目录 │ │ └── config.yaml # Loki配置文件 │ ├── data/ # Loki数据存储目录(自动创建) │ └── start.sh # Loki启动脚本 ├── promtail/ # Promtail服务目录 │ ├── docker-compose.yml # Promtail的Docker Compose配置 │ ├── conf/ # Promtail配置文件目录 │ │ └── config.yaml # Promtail配置文件 │ └── start.sh # Promtail启动脚本 └── README.md # 部署文档 ``` ## 部署步骤 ### 1. 环境准备 确保已安装Docker和Docker Compose: ```bash docker --version docker-compose --version ``` 如未安装Docker Compose,可执行: ```bash curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/sbin/docker-compose chmod +x /usr/local/sbin/docker-compose docker-compose version ``` ### 2. 部署方式 分别部署Loki和Promtail服务: ```bash # 先启动Loki服务 cd loki chmod +x start.sh ./start.sh # 或者直接使用 # docker-compose up -d # 再启动Promtail服务 cd ../promtail chmod +x start.sh ./start.sh # 或者直接使用 # docker-compose up -d ``` 注意:必须先启动Loki服务,再启动Promtail服务,因为Promtail需要连接到Loki。 ### 3. 配置AWS凭证(如果使用S3存储) 在启动Loki服务前,创建`.env`文件并设置AWS凭证: ```bash cd loki echo "AWS_ACCESS_KEY_ID=your-access-key-id" > .env echo "AWS_SECRET_ACCESS_KEY=your-secret-access-key" >> .env ``` 或者直接在`loki/docker-compose.yml`中修改环境变量。 ### 4. 验证服务状态 ```bash # 检查Loki容器状态 cd loki docker-compose ps # 查看Loki日志 docker-compose logs loki # 检查Promtail容器状态 cd ../promtail docker-compose ps # 查看Promtail日志 docker-compose logs promtail ``` ### 5. 访问Loki API Loki API默认在3100端口提供服务: ```bash # 测试Loki是否正常运行 curl http://localhost:3100/ready ``` ## 与Grafana集成 要在Grafana中查看收集的日志,请按照以下步骤操作: 1. 在Grafana中添加Loki数据源: - 访问Grafana界面 (通常是 http://your-grafana-host:3000) - 导航到 Configuration > Data Sources > Add data source - 选择Loki - 设置URL为 `http://loki:3100` (如果Grafana与Loki在同一网络) 或 `http://your-host-ip:3100` (如果Grafana在外部) 2. 创建日志查询: - 创建新的Dashboard - 添加新的Panel - 选择Loki数据源 - 使用LogQL查询语言查询日志,例如: `{job="varlogs"}` ## 常见问题排查 ### Loki无法启动 检查配置文件和存储权限: ```bash cd loki docker-compose logs loki ``` ### Promtail无法连接到Loki 确保网络配置正确,并且Loki服务已经启动: ```bash cd promtail docker-compose logs promtail ``` ### 日志未被收集 检查Promtail配置中的路径是否正确,以及是否有足够的权限访问这些路径。 ## 维护操作 ### 更新服务 ```bash # 更新Loki服务 cd loki docker-compose pull docker-compose up -d # 更新Promtail服务 cd ../promtail docker-compose pull docker-compose up -d ``` ### 备份数据 Loki数据存储在`loki/data`目录中,可以按需备份此目录。 ### 清理数据 ```bash # 停止Loki服务 cd loki docker-compose down # 清理数据目录 rm -rf data # 重新启动服务 docker-compose up -d ``` ## 安全注意事项 - 生产环境中应启用认证 (`auth_enabled: true`) - 避免将AWS凭证直接硬编码在配置文件中 - 限制Loki API的访问范围,避免暴露到公网 ## Docker容器日志配置 要让其他Docker容器将日志发送到Loki,可以在容器的docker-compose.yml中添加以下配置: ```yaml logging: driver: loki options: loki-url: "http://localhost:3100/loki/api/v1/push" max-size: "50m" max-file: "4" loki-external-labels: "client=demo,job=servername-docker" ``` 配置完成后,重启容器即可。 ## 参考资料 - [Grafana Loki 官方文档](https://grafana.com/docs/loki/latest/) - [Promtail 官方文档](https://grafana.com/docs/loki/latest/clients/promtail/) - [LogQL 查询语言](https://grafana.com/docs/loki/latest/logql/)