# 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-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## Prometheus 监控告警栈 **Consul + Prometheus + Alertmanager + Grafana** 完整监控方案 ## 快速开始 ### Kubernetes 部署(推荐) **适用场景**:生产环境、标准 K8s 集群(基于节点) ```bash kubectl apply -f deploy-kubernetes/ ``` [详细文档](deploy-kubernetes/README.md) ### Serverless Kubernetes **适用场景**:无服务器环境(EKS Fargate、GKE Autopilot、AKS Virtual Nodes)、按需计费 ```bash kubectl apply -f deploy-kubernetes-serverless/ ``` [详细文档](deploy-kubernetes-serverless/README.md) ### Docker Compose **适用场景**:单机部署、开发测试、传统主机环境 ```bash cd deploy-docker && docker-compose up -d ``` [详细文档](deploy-docker/README.md) --- ## 架构 ### Prometheus 监控架构 ```mermaid graph TB subgraph "Application Containers" App1[App Container 1] App2[App Container 2] App3[App Container 3] end subgraph "监控指标来源" NodeExporter[Node Exporter
节点指标] AppMetrics[Application Metrics
应用指标 :8080/metrics] end App1 -->|注册服务| Consul[Consul
服务发现] App2 -->|注册服务| Consul App3 -->|注册服务| Consul Consul -->|自动发现| Prometheus[Prometheus
指标采集] NodeExporter -->|静态配置| Prometheus AppMetrics -->|静态配置 targets| Prometheus Prometheus -->|触发告警| Alertmanager[Alertmanager
告警管理] Alertmanager -->|发送告警| OPSX[OPSX Webhook
告警转发] Prometheus -->|查询数据| Grafana[Grafana
可视化大屏] OPSX -->|通知| DD[钉钉] OPSX -->|通知| FS[飞书] OPSX -->|通知| TG[Telegram] style OPSX fill:#f9f,stroke:#333,stroke-width:2px style Grafana fill:#ff9,stroke:#333,stroke-width:2px style Prometheus fill:#9cf,stroke:#333,stroke-width:2px ``` ### 告警通知流程 1. **Prometheus** 采集指标并触发告警规则 2. **Alertmanager** 接收告警并根据配置路由 3. **OPSX Webhook** 统一接收告警并转发到各通知平台 **配置示例**(参考 `04-alertmanager.yaml` L38-53): ```yaml receivers: # 钉钉通知(通过 OPSX Webhook) - name: 'dingtalk' webhook_configs: - url: 'http://opsx-webhook:9000/api/v1/hook?type=dd&tpl=prometheus-dd&url=https://oapi.dingtalk.com/robot/send?access_token=YOUR_DINGTALK_TOKEN' send_resolved: true # 飞书通知(通过 OPSX Webhook) - name: 'feishu' webhook_configs: - url: 'http://opsx-webhook:9000/api/v1/hook?type=fs&tpl=prometheus-fs&url=https://open.larksuite.com/open-apis/bot/v2/hook/YOUR_FEISHU_TOKEN' send_resolved: true ``` **URL 格式说明**: - 钉钉:`http://opsx-webhook:9000/api/v1/hook?type=dd&tpl=prometheus-dd&url=https://oapi.dingtalk.com/robot/send?access_token=YOUR_TOKEN` - 飞书:`http://opsx-webhook:9000/api/v1/hook?type=fs&tpl=prometheus-fs&url=https://open.larksuite.com/open-apis/bot/v2/hook/YOUR_TOKEN` - Telegram:`http://opsx-webhook:9000/api/v1/hook?type=tg&tpl=telegram&url=https://api.telegram.org/botYOUR_BOT_TOKEN/sendMessage&chat_id=YOUR_CHAT_ID` **说明**: - ✅ 无需修改钉钉/飞书/Telegram webhook 配置 - ✅ 仅需在 Alertmanager 中配置目标 URL - ✅ OPSX Webhook 自动处理消息格式转换 - ✅ 支持多平台同时通知 ## 组件端口 | 组件 | 端口 | 说明 | |------|------|------| | Consul | 8500 | 服务发现 | | Prometheus | 9090 | 指标采集 | | Alertmanager | 9093 | 告警管理 | | Grafana | 3000 | 可视化(admin/admin) | | OPSX Webhook | 9000 | 统一告警转发(admin/admin) | ## 服务注册示例 ```bash curl -X PUT http://localhost:8500/v1/agent/service/register -d '{ "ID": "app-1", "Name": "application", "Address": "172.16.2.23", "Port": 8000, "Meta": { "prometheus_scrape": "true", "prometheus_path": "/actuator/prometheus" }, "Check": { "HTTP": "http://172.16.2.23:8000/actuator/health", "Interval": "10s" } }' ``` ## 告警测试 ```bash curl -X POST http://localhost:9093/api/v2/alerts \ -H 'Content-Type: application/json' \ -d '[{ "labels": { "alertname": "TestAlert", "severity": "warning" }, "annotations": { "summary": "测试告警" } }]' ``` ## 配置文件 - Prometheus: `prometheus/prometheus.yml` - 告警规则: `prometheus/rules/*.yml` - Alertmanager: `alertmanager/alertmanager.yml` - Grafana: `grafana/provisioning/`