架构:

Grafana + Prometheus + 第三方Exporter

  • Grafana:查询数据,通过面板展示监控项,统一展示。
  • Prometheus:配置不同的job,获取多方面监控指标数据,供Grafana查询获取展示。
  • 第三方Exporter:获取相关数据,供Prometheus获取存储。比如: node_exporterblackbox_exporterredis_exporterpostgres_exporternginx-module-vts

大概流程:

1.部署第三方Exporter,可以获取相应的指标,比如:

  • node_exporter可以获取系统内存,CPU,磁盘,负载等数据;
  • blackbox_exporter:允许通过 HTTP、HTTPS、DNS、TCP、ICMP 和 gRPC 对端点进行黑盒探测。
  • redis_exporter:获取Redis相关指标
  • postgres_exporter:获取PostgreSQL数据库相关指标
  • nginx-module-vts:Nginx第三方模块,编译Nginx的时候添加,可以通过接口获取Nginx相关指标,5xx请求数,200请求数,连接数等;

2.部署Prometheus,配置job,请求不同Exporter获取指标,按照时间序列数据存储

3.部署Grafana,添加Prometheus数据源,进行查询指标,展示数据,告警监控,统一面板展示所有监控项

注意:

这里仅提供一个架构大概流程的说明,详细步骤需要自己完善。

一.部署第三方Exporter

可以通过Prometheus 出口商和集成,查看获取第三方Exporter,一些常用的Exporter都在其中展示。也可以通过自己开发Exporter获取指标。

根据自己需要监控什么项目,根据对应的Exporter官方文档部署即可,常用的Exporter

比如安装node_exporter,默认监听 9100 端口

docker run -d \
  --net="host" \
  --pid="host" \
  -v "/:/host:ro,rslave" \
  quay.io/prometheus/node-exporter:latest \
  --path.rootfs=/host

二.部署Prometheus采集指标

Prometheus安装文档

在 Docker 上运行 Prometheus 非常简单docker run -p 9090:9090 prom/prometheus。这将使用示例配置启动 Prometheus,并将其公开在端口 9090 上。

根据自己的需求定制部署Prometheus,比如挂载配置文件,挂载数据存储目录,映射端口等

# 挂载配置文件
docker run \
    -p 9090:9090 \
    -v /path/to/prometheus.yml:/etc/prometheus/prometheus.yml \
    prom/prometheus

# 保存Prometheus数据
# Create persistent volume for your data
docker volume create prometheus-data
# Start Prometheus container
docker run \
    -p 9090:9090 \
    -v /path/to/prometheus.yml:/etc/prometheus/prometheus.yml \
    -v prometheus-data:/prometheus \
    prom/prometheus

配置prometheus采集数据

prometheus.yml配置文件示例

global:
  scrape_interval:     15s
  evaluation_interval: 15s

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
    - targets: ['localhost:9090']
  # 监控主机信息
  - job_name: 'node_exporter'
    file_sd_configs:
    - refresh_interval: 1m
      files:
      - ./conf/node.yml

  # 监控docker容器
  - job_name: 'cadvisor'
    file_sd_configs:
    - refresh_interval: 1m
      files:
      - ./conf/docker.yml
  # 监控指定http地址状态
  - job_name: 'blackbox-http'
    metrics_path: /probe
    params:
      module: [http_2xx]
    file_sd_configs:
    - refresh_interval: 1m
      files:
      - ./conf/http.yml
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: 192.168.10000.15:9115
  # 通过blackbox监控tcp地址的状态
  - job_name: 'blackbox-tcp'
    metrics_path: /probe
    params:
      module: [tcp_connect]
    file_sd_configs:
    - refresh_interval: 1m
      files:
      - ./conf/tcp.yml
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: 192.168.10000.15:9115
  # 监控Nginx指标
  - job_name: 'nginx-vts'
    metrics_path: /status/format/prometheus
    static_configs:
    - targets: ['192.168.10000.51:12584']
  # 监控Redis指标
  - job_name: 'redis'
    static_configs:
    - targets: ['192.168.10000.15:12586','192.168.10000.100:12586']

  # 监控Postgres数据库指标
  - job_name: 'postgresql'
    file_sd_configs:
    - refresh_interval: 10s
      files:
      - ./conf/postgres.yml

这里有两种指定后端节点的方式

1.通过file_sd_configs指定,基于文件的服务发现提供了一种更通用的方法来配置静态目标,并用作插入自定义服务发现机制的接口。

files文件格式为

- targets:
  [ - '<host>' ]
  labels:
    [ <labelname>: <labelvalue> ... ]

示例

- targets:
  - http://192.168.100.10:10100
  labels:
    name: eureka

- targets:
  - http://192.168.100.10:8080/v1/healthcheck
  labels:
    name: gateway

2.通过static_configs指定,static_config 允许指定目标列表以及目标的通用标签集。它是在刮擦配置中指定静态目标的典型方法。

# The targets specified by the static config.
targets:
  [ - '<host>' ]

# Labels assigned to all metrics scraped from the targets.
labels:
  [ <labelname>: <labelvalue> ... ]

三.部署Grafana进行监控

Grafana安装文档

参考Grafana官方安装文档安装即可,提供多种方式

比如Docker安装

docker run -d --name=grafana -p 3000:3000 grafana/grafana-enterprise:12.0.0-ubuntu

四.添加监控面板

可以通过Grafana模板库查询对应exporter和对应数据源的dashboard,进行添加和调整。

1.登录Grafana

2.添加Prometheus数据源

3.添加面板,通过查询语句查询数据

4.添加监控项,alert rule

5.配置联络点,警报策略,警报模板等

标签: Grafana

添加新评论