【云平台监控】Prometheus 监控平台部署与应用

Prometheus 监控系统

概述

  • 定义:开源服务监控系统 & 时序数据库,提供通用数据模型、高效采集、存储和查询接口。
  • 核心组件:Prometheus Server
    • 数据采集:定期从静态配置或服务发现的目标中拉取数据(HTTP Pull,默认15秒/次)。
    • 数据存储:内存暂存后持久化到磁盘(默认2小时回刷),支持WAL日志崩溃恢复。
    • 告警处理:根据规则计算指标,触发告警后发送至Alertmanager。
  • 数据源
    • Exporter:部署于被监控主机,暴露HTTP接口供Prometheus拉取指标。
    • Pushgateway:接收短期任务主动推送的数据,供Prometheus拉取。
  • 服务发现:支持静态配置或动态发现(如Kubernetes API集成)。

TSDB 存储引擎特点

  • 适用场景
    • 海量时序数据存储,顺序写入为主。
    • 数据按时间排序,极少更新。
    • 块删除(按时间范围),非随机删除。
    • 大体积数据,顺序读取为主,缓存效率低。

核心特点

  1. 多维数据模型:时间序列由指标名称 + 键值对标签标识。
  2. 内置时序数据库(TSDB):高效存储本地短期数据(默认15天)。
  3. PromQL查询语言:支持复杂多维查询。
  4. 混合采集模式
    • 默认HTTP Pull拉取。
    • 通过Pushgateway支持Push模式。
  5. 动态服务发现:集成Kubernetes等系统,自动管理监控目标。
  6. 可视化集成:与Grafana无缝对接,提供仪表盘展示。

生态组件

组件 功能
Prometheus Server 核心组件,负责数据采集、存储、告警规则计算及PromQL查询。
Client Library 为应用提供内置指标采集SDK(如Go、Java等语言支持)。
Exporters 采集第三方系统指标并转换为Prometheus格式。常见Exporter:
- Node Exporter:主机资源监控(CPU/内存/磁盘等)。
- cAdvisor:容器资源监控。
- kube-state-metrics:K8S资源对象状态监控(Pod/Deployment等)。
- Blackbox Exporter:网络探测(HTTP/TCP/ICMP等)。
Service Discovery 动态发现监控目标(支持Kubernetes、Consul、DNS等)。
Alertmanager 告警路由、去重、静默,支持邮件/钉钉/企业微信等通知渠道。
Pushgateway 临时存储短期任务的推送数据,供Prometheus拉取。
Grafana 可视化平台,集成Prometheus数据源,提供丰富的监控仪表盘。

工作流程

  1. 数据采集:Prometheus Server 基于服务发现或静态配置获取目标,并通过 exporter 拉取指标数据。
  2. 数据存储:采集到的数据通过 TSDB 存储到本地存储设备中。
  3. 告警生成:根据配置的告警规则,触发告警并发送到 Alertmanager。
  4. 告警通知:Alertmanager 发送告警通知到指定的接收方,如邮件、钉钉或企业微信。
  5. 数据查询:通过 Prometheus 自带的 Web UI 界面和 PromQL 查询语言查询监控数据。
  6. 数据可视化:Grafana 接入 Prometheus 数据源,将监控数据以图形化形式展示。

局限性

  • 数据场景限制:适合指标监控,不适用于日志/事件存储。

  • 长期存储:本地存储设计为短期保留,需借助InfluxDB等外部方案。

  • 集群支持:原生集群机制不完善,可通过Thanos/Cortex实现高可用。

  • 官网prometheus.io

  • GitHubgithub.com/prometheus

  • Node Exporter指标说明链接


部署 Prometheus

1. Prometheus Server 部署

  1. 安装 Prometheus

    • 上传并解压 Prometheus 安装包:
      cd /opt/
      tar xf prometheus-2.35.0.linux-amd64.tar.gz
      mv prometheus-2.35.0.linux-amd64 /usr/local/prometheus
      
    • 配置文件 prometheus.yml 解析:
      global:
        scrape_interval: 15s      # 数据采集间隔
        evaluation_interval: 15s  # 告警规则评估间隔
        scrape_timeout: 10s       # 数据采集超时时间
      
      alerting:
        alertmanagers:
          - static_configs:
              - targets:
                # - alertmanager:9093
      
      rule_files:
        # - "first_rules.yml"
        # - "second_rules.yml"
      
      scrape_configs:
        - job_name: "prometheus"
          static_configs:
            - targets: ["localhost:9090"]
      
  2. 配置系统启动文件

    • 创建 prometheus.service
      cat > /usr/lib/systemd/system/prometheus.service <<'EOF'
      [Unit]
      Description=Prometheus Server
      Documentation=https://prometheus.io
      After=network.target
      
      [Service]
      Type=simple
      ExecStart=/usr/local/prometheus/prometheus \
      --config.file=/usr/local/prometheus/prometheus.yml \
      --storage.tsdb.path=/usr/local/prometheus/data/ \
      --storage.tsdb.retention.time=15d \
      --web.enable-lifecycle
      
      ExecReload=/bin/kill -HUP $MAINPID
      Restart=on-failure
      
      [Install]
      WantedBy=multi-user.target
      EOF
      
  3. 启动 Prometheus

    systemctl start prometheus
    systemctl enable prometheus
    netstat -natp | grep :9090
    
    • 访问 http://<Prometheus_IP>:9090 查看 Web UI。

2. 部署 Exporters

  1. Node Exporter(系统级监控)

    • 安装 Node Exporter:
      cd /opt/
      tar xf node_exporter-1.3.1.linux-amd64.tar.gz
      mv node_exporter-1.3.1.linux-amd64/node_exporter /usr/local/bin
      
    • 配置启动文件:
      cat > /usr/lib/systemd/system/node_exporter.service <<'EOF'
      [Unit]
      Description=node_exporter
      Documentation=https://prometheus.io/
      After=network.target
      
      [Service]
      Type=simple
      ExecStart=/usr/local/bin/node_exporter \
      --collector.ntp \
      --collector.mountstats \
      --collector.systemd \
      --collector.tcpstat
      
      ExecReload=/bin/kill -HUP $MAINPID
      Restart=on-failure
      
      [Install]
      WantedBy=multi-user.target
      EOF
      
    • 启动 Node Exporter:
      systemctl start node_exporter
      systemctl enable node_exporter
      netstat -natp | grep :9100
      
    • 修改 Prometheus 配置文件,添加 Node Exporter 目标:
      - job_name: nodes
        metrics_path: "/metrics"
        static_configs:
          - targets:
              - 192.168.80.30:9100
              - 192.168.80.11:9100
              - 192.168.80.12:9100
            labels:
              service: kubernetes
      
    • 重新加载配置:
      curl -X POST http://192.168.80.30:9090/-/reload
      
  2. MySQL Exporter

    • 安装 MySQL Exporter:
      cd /opt/
      tar xf mysqld_exporter-0.14.0.linux-amd64.tar.gz
      mv mysqld_exporter-0.14.0.linux-amd64/mysqld_exporter /usr/local/bin/
      
    • 配置 MySQL 用户权限:
      GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'localhost' IDENTIFIED BY 'abc123';
      
    • 启动 MySQL Exporter:
      systemctl start mysqld_exporter
      systemctl enable mysqld_exporter
      netstat -natp | grep :9104
      
    • 修改 Prometheus 配置文件,添加 MySQL Exporter 目标:
      - job_name: mysqld
        metrics_path: "/metrics"
        static_configs:
          - targets:
              - 192.168.80.15:9104
            labels:
              service: mysqld
      
  3. Nginx Exporter

    • 安装 Nginx 和 Nginx VTS 模块:
      ./configure --prefix=/usr/local/nginx \
      --add-module=/usr/local/nginx-module-vts
      make && make install
      
    • 配置 Nginx:
      http {
          vhost_traffic_status_zone;
          vhost_traffic_status_filter_by_host on;
          server {
              listen 8080;
              location /status {
                  vhost_traffic_status_display;
                  vhost_traffic_status_display_format html;
              }
          }
      }
      
    • 启动 Nginx Exporter:
      systemctl start nginx-exporter
      systemctl enable nginx-exporter
      netstat -natp | grep :9913
      
    • 修改 Prometheus 配置文件,添加 Nginx Exporter 目标:
      - job_name: nginx
        metrics_path: "/metrics"
        static_configs:
          - targets:
              - 192.168.80.15:9913
            labels:
              service: nginx
      

3. 部署 Grafana

  1. 安装 Grafa

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值