Prometheus 监控域名可用性和Docker容器状态及 Grafana仪表盘配置
以下是整合 Prometheus + Blackbox Exporter + cAdvisor + Grafana 的完整监控配置步骤,包含 域名/端口监控、Docker容器状态监控 及 Grafana仪表盘配置:
一、监控域名可用性及端口连通性
1. 安装并配置 Blackbox Exporter
# 下载安装
wget https://github.com/prometheus/blackbox_exporter/releases/download/v0.24.0/blackbox_exporter-0.24.0.linux-amd64.tar.gz
tar -xzf blackbox_exporter-*.tar.gz
sudo mv blackbox_exporter-*/blackbox_exporter /usr/local/bin/
# 创建配置文件
sudo mkdir -p /etc/blackbox_exporter
sudo tee /etc/blackbox_exporter/config.yml <<EOF
modules:
http_2xx:
prober: http
http:
valid_status_codes: [200]
method: GET
follow_redirects: true
tcp_connect:
prober: tcp
EOF
# 创建 Systemd 服务
sudo tee /etc/systemd/system/blackbox_exporter.service <<EOF
[Unit]
Description=Blackbox Exporter
After=network.target
[Service]
ExecStart=/usr/local/bin/blackbox_exporter \
--config.file=/etc/blackbox_exporter/config.yml \
--web.listen-address=:9115
Restart=always
[Install]
WantedBy=multi-user.target
EOF
# 启动服务
sudo systemctl daemon-reload
sudo systemctl start blackbox_exporter
sudo systemctl enable blackbox_exporter
2. 配置 Prometheus 抓取规则
修改 /etc/prometheus/prometheus.yml
,添加以下配置:
scrape_configs:
- job_name: 'blackbox-http'
metrics_path: /probe
params:
module: [http_2xx]
static_configs:
- targets:
- http://example.com
- https://api.example.com
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: localhost:9115 # Blackbox Exporter 地址
- job_name: 'blackbox-tcp'
metrics_path: /probe
params:
module: [tcp_connect]
static_configs:
- targets:
- example.com:22
- db.example.com:3306
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: localhost:9115
重启 Prometheus:
sudo systemctl restart prometheus
二、监控 Docker 容器状态及健康状态
1. 安装 cAdvisor(容器资源监控)
docker run -d \
--name=cadvisor \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:ro \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--volume=/dev/disk/:/dev/disk:ro \
--publish=8080:8080 \
--privileged \
--device=/dev/kmsg \
gcr.io/cadvisor/cadvisor:v0.47.0
2. 配置 Prometheus 抓取 cAdvisor
修改 /etc/prometheus/prometheus.yml
,添加:
scrape_configs:
- job_name: 'docker-containers'
static_configs:
- targets: ['localhost:8080']
重启 Prometheus:
sudo systemctl restart prometheus
三、配置 Grafana 展示监控数据
1. 安装 Grafana
# Ubuntu/Debian
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee /etc/apt/sources.list.d/grafana.list
sudo apt update && sudo apt install grafana
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
# CentOS/RHEL
sudo tee /etc/yum.repos.d/grafana.repo <<EOF
[grafana]
name=grafana
baseurl=https://packages.grafana.com/oss/rpm
repo_gpgcheck=1
enabled=1
gpgcheck=1
gpgkey=https://packages.grafana.com/gpg.key
EOF
sudo yum install grafana
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
2. 配置 Grafana 数据源
-
访问
http://<服务器IP>:3000
,默认账号/密码:admin/admin
。 -
进入 Configuration > Data Sources > Add data source,选择 Prometheus:
-
URL:
http://localhost:9090
(Prometheus 地址) -
点击 Save & Test,确认连接成功。
-
3. 导入 Docker 监控仪表盘(ID: 193)
方法一:通过 Web 界面导入
-
进入 Create > Import。
-
输入仪表盘 ID
193
,点击 Load。 -
选择 Prometheus 数据源,点击 Import。
方法二:通过命令行导入(需 API Key)
# 生成 API Key(Grafana Web 界面 -> Configuration -> API Keys)
API_KEY="Bearer YOUR_API_KEY"
# 导入仪表盘
curl -X POST \
-H "Authorization: $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"dashboard": {
"id": 193
},
"overwrite": true
}' \
http://localhost:3000/api/dashboards/import
四、验证与查看
-
域名/端口监控:
-
Grafana 中新建仪表盘,使用以下 PromQL 查询:
# HTTP 可用性 probe_success{job="blackbox-http"} # TCP 端口连通性 probe_success{job="blackbox-tcp"}
-
-
Docker 容器监控:
-
访问导入的仪表盘
http://<服务器IP>:3000/dashboards
,选择 ID 193 的仪表盘,查看容器资源使用和健康状态。
-
五、补充命令
防火墙开放端口(如需)
# Grafana
sudo ufw allow 3000
# cAdvisor
sudo ufw allow 8080
# Blackbox Exporter
sudo ufw allow 9115
检查服务状态
systemctl status prometheus blackbox_exporter grafana-server
docker ps -f name=cadvisor
六、关键说明
-
Blackbox Exporter:通过
probe_success
指标判断服务状态(1
为正常,0
为异常)。 -
cAdvisor:自动监控所有容器,无需手动配置目标。
-
Grafana 仪表盘 193:提供容器 CPU/内存/网络/健康状态的可视化图表。
通过以上步骤,您将实现从数据采集(Prometheus)、探测(Blackbox Exporter)、容器监控(cAdvisor)到可视化(Grafana)的完整监控链路。