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,添加以下配置:

yaml
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,添加:

yaml
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 数据源

  1. 访问 http://<服务器IP>:3000,默认账号/密码:admin/admin

  2. 进入 Configuration > Data Sources > Add data source,选择 Prometheus

    • URLhttp://localhost:9090(Prometheus 地址)

    • 点击 Save & Test,确认连接成功。


3. 导入 Docker 监控仪表盘(ID: 193)

方法一:通过 Web 界面导入

  1. 进入 Create > Import

  2. 输入仪表盘 ID 193,点击 Load

  3. 选择 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

四、验证与查看

  1. 域名/端口监控

    • Grafana 中新建仪表盘,使用以下 PromQL 查询:

      promql
      # HTTP 可用性
      probe_success{job="blackbox-http"}
      # TCP 端口连通性
      probe_success{job="blackbox-tcp"}
  2. 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

六、关键说明

  1. Blackbox Exporter:通过 probe_success 指标判断服务状态(1 为正常,0 为异常)。

  2. cAdvisor:自动监控所有容器,无需手动配置目标。

  3. Grafana 仪表盘 193:提供容器 CPU/内存/网络/健康状态的可视化图表。

通过以上步骤,您将实现从数据采集(Prometheus)、探测(Blackbox Exporter)、容器监控(cAdvisor)到可视化(Grafana)的完整监控链路。

 
posted @ 2025-04-25 22:04  Johny_Zhao  阅读(252)  评论(0)    收藏  举报