# 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/`