# deploy-prometheus **Repository Path**: attacker/deploy-prometheus ## Basic Information - **Project Name**: deploy-prometheus - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-10-25 - **Last Updated**: 2025-11-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Prometheus 监控告警栈 完整的监控告警解决方案:**Consul + Prometheus + Alertmanager + Grafana** ## 🚀 部署方式 项目提供三种部署方式: ### 1、Docker Compose 部署(推荐) 适用于单机部署、开发测试环境。 ```bash cd deploy-docker docker-compose up -d ``` 详见:[`deploy-docker/README.md`](deploy-docker/README.md) ### 2、Kubernetes 部署 适用于生产环境、标准 Kubernetes 集群。 ```bash kubectl apply -f deploy-kubernetes/ ``` 详见:[`deploy-kubernetes/README.md`](deploy-kubernetes/README.md) ### 3、Serverless Kubernetes 部署 适用于 Serverless Kubernetes 环境(EKS Fargate、GKE Autopilot、AKS Virtual Nodes 等)。 ```bash kubectl apply -f deploy-kubernetes-serverless/ ``` 详见:[`deploy-kubernetes-serverless/README.md`](deploy-kubernetes-serverless/README.md) --- ## 🏛️ 架构说明 ``` 应用实例 → Consul (服务注册) → Prometheus (指标采集) → Grafana (可视化) ↓ Alertmanager (告警管理) → 钉钉/飞书/Telegram ``` --- ## 📚 文档指引 - **部署指南**: - [Docker Compose 部署](deploy-docker/README.md) - [Kubernetes 部署](deploy-kubernetes/README.md) - [Serverless Kubernetes 部署](deploy-kubernetes-serverless/README.md) --- ## 📦 组件说明 | 组件 | 端口 | 说明 | |------|------|------| | **Consul** | 8500 | 服务发现与注册中心 | | **Prometheus** | 9090 | 指标采集和存储 | | **Alertmanager** | 9093 | 告警管理和路由 | | **Grafana** | 3000 | 可视化仪表板(默认账号:admin/admin) | --- ## 🌐 访问地址 启动后访问以下地址: - **Consul UI**: http://localhost:8500 - **Prometheus**: http://localhost:9090 - **Alertmanager**: http://localhost:9093 - **Grafana**: http://localhost:3000 (admin/admin) --- ## ⚙️ 配置说明 ### Prometheus 配置 - **主配置**: `prometheus/prometheus.yml` - **告警规则**: `prometheus/rules.yml` ### Alertmanager 配置 - **配置文件**: `alertmanager/alertmanager.yml` ### Grafana 配置 - **数据源**: `grafana/provisioning/datasources/prometheus.yaml` - **默认账号**: admin / admin --- ## 🔧 常用命令 ```bash # 启动服务 docker-compose up -d # 停止服务 docker-compose down # 查看服务状态 docker-compose ps # 查看日志 docker-compose logs -f # 重启某个服务 docker-compose restart prometheus # 重新加载 Prometheus 配置(无需重启) curl -X POST http://localhost:9090/-/reload # 重新加载 Alertmanager 配置(无需重启) curl -X POST http://localhost:9093/-/reload ``` --- ## 📝 使用示例 ### 注册服务到 Consul ```bash curl -X PUT http://localhost:8500/v1/agent/service/register \ -d '{ "ID": "app-1", "Name": "application", "Address": "172.16.2.23", "Port": 8000, "Tags": ["production"], "Meta": { "prometheus_scrape": "true", "prometheus_path": "/actuator/prometheus" }, "Check": { "HTTP": "http://172.16.2.23:8000/actuator/health", "Interval": "10s" } }' ``` ### 查看注册的服务 ```bash # 查看所有服务 curl http://localhost:8500/v1/catalog/services # 查看具体服务实例 curl http://localhost:8500/v1/catalog/service/application # 注销服务 curl -X PUT http://localhost:8500/v1/agent/service/deregister/app-1 ``` --- ## 🔔 手动测试告警 ### 发送测试告警到钉钉 使用以下命令手动触发测试告警,验证钉钉通知功能是否正常: ```bash curl -X POST http://localhost:9093/api/v2/alerts \ -H 'Content-Type: application/json' \ -d '[{ "labels": { "alertname": "DingTalkTest", "severity": "warning", "instance": "test-server" }, "annotations": { "summary": "钉钉告警功能测试", "description": "这是一条来自 Prometheus 监控系统的测试告警消息,用于验证钉钉通知功能是否正常工作。" } }]' ``` **预期结果**: - ✅ Alertmanager 接收到告警 - ✅ webhook-dingtalk 转发告警 - ✅ 钉钉群收到告警消息 **钉钉消息示例**: ``` ## 🔥 告警触发 (1条) --- 告警名称: DingTalkTest 告警级别: warning 告警实例: test-server 告警详情: 钉钉告警功能测试 告警描述: 这是一条来自 Prometheus 监控系统的测试告警消息,用于验证钉钉通知功能是否正常工作。 --- > 来源: Prometheus 监控系统 > 时间: 2025-10-24 18:07:50 ``` **查看告警日志**: ```bash # 查看 webhook-dingtalk 日志(确认是否成功发送) docker logs webhook-dingtalk --tail 20 # 查看 Alertmanager 日志 docker logs alertmanager --tail 20 ``` **验证步骤**: 1. 执行上述 curl 命令 2. 等待 5-10 秒 3. 检查钉钉群是否收到消息 4. 查看日志确认发送状态(resp_status=200 表示成功) --- ## 🔍 常见问题 ### Prometheus 无法发现服务 ```bash # 检查 Consul 服务 curl http://localhost:8500/v1/catalog/services # 检查 Prometheus targets curl http://localhost:9090/api/v1/targets ``` ### 告警没有发送到钉钉 **检查步骤**: 1. **验证 webhook-dingtalk 服务运行正常** ```bash docker ps | grep webhook-dingtalk ``` 2. **检查 Prometheus 到 Alertmanager 的连接** ```bash curl http://localhost:9090/api/v1/alertmanagers ``` 3. **查看 webhook-dingtalk 日志** ```bash docker logs webhook-dingtalk --tail 50 | grep -E "send|POST|error" ``` 4. **手动发送测试告警**(见上方"手动测试告警"章节) ### 查看日志 ```bash # 查看所有服务日志 docker-compose logs -f # 查看单个服务日志 docker-compose logs -f prometheus # 查看最近的告警日志 docker logs alertmanager --tail 50 docker logs webhook-dingtalk --tail 50 ``` --- **开始部署!** 🚀 ```bash docker-compose up -d ``` ```