Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

example-metric

example-metric是一个具有业务metric的系统程序,模拟了真实业务场景,目的是用于对接prometheus监控来业务指标。

在真实业务场景中除了会对主机资源、容器资源进行监控,还会对业务指标进行监控。比如网站每天访问量是多少、后端服务每天的 API 请求的成功率怎么样、每天执行的任务调度数量如何、成功失败比例如何等。对于这些业务指标项,peometheus 也给出了监控方案,只需要业务代码按照 prometheus 的 metrics 格式进行编写,prometheus 会对其定时抓取。 业务监控方案以 go 语言程序为例,使用prometheus抓取业务指标,自定义业务metric,模拟业务场景。

前置条件

  • 部署prometheus
  • 部署cadvisor
  • 部署grafana

一、需求

  1. 对任务数量进行监控。公式如下
1. 探测任务总数 = 即时任务 + 周期性任务
2. 运行中任务 = 运行中的即时任务 + 运行中的周期性任务
3. 已完成的任务 = 完成的即使任务
  1. 对探测类型数量监控。统计不同类型任务的数量。
IP资产探测
域名资产探测
网络质量测试
区块链联通性测试
区块链连通性探测
资产漏洞威胁发现
网站资产探测

二、简单设计

  1. 即时任务默认值100个(完成)周期任务默认值2个完成。
  2. 运行中的即时任务为20以内随机数据,运行中的周期任务为10以内的随机数。运行中任务 = 运行中的即时任务 + 运行中的周期性任务
  3. 即时任务 = 即时任务(默认值)+ 即时任务(进行中)
  4. 周期任务 = 周期任务(默认值)+ 周期任务(进行中)
  5. 探测任务总数 = 即时任务 + 周期性任务
  6. 每日完成即时任务(30以内随机数)
  7. 每日完成周期任务(10以内随机数)

三、代码原理

prometheus 定期读取指定服务metrics进行数据采集。因此,example-metrics要提供/metrics页面供prometheus采集。

go-prometheus第三方库

四、快速开始

1. clone代码

  $ git clone https://github.com/likai1130/example-metrics.git

2. go mod

  $ go mod tidy

3. 系统启动

  $ go run main.go

运行后执行,访问 http://localhost:28256/metrics

img_3.png

4. 部署

将其部署后进行prometheus配置即可抓取数据

4.1 编译镜像

  go build -t example-metrics:v0.1 .

4.2 修改docker-compose.yml

version: '3.8'  # Docker Compose 文件版本

services:
  example-metrics:
    image: 'example-metrics:v0.1'
    container_name: example-metrics
    ports:
      - "28256:28256"
    networks:
      - bridge-network
    environment:
      # 300s 采集一次 FIX ME
      "COLLECT_INTERVAL_SEC": 300
networks:
  bridge-network:
    driver: bridge

4.3 运行容器

在业务服务器运行

  $ docker-compose up -d

5. 对接peometheuse

5.1 修改prometheus.yml文件

......
# 采集配置
scrape_configs:
  ......
  # 监控指定服务器的业务指标 FIX ME
  - job_name: "bus_tasks"
    static_configs:
      - targets:
          - "x.x.x.x:28256"
          - "x.x.x.x:28256"
          - "x.x.x.x:28256"

5.2 完整配置文件

# 告警配置
alerting:
  alertmanagers:
    - static_configs:
        - targets:
          - x.x.x.x:9093  # 默认为 -alertmanager:9093,修改为alertmanager服务器IP地址+9093

# rules为告警规则配置文件所在的目录,需要自行创建
rule_files:
  - "/usr/local/prometheus/rules/*.yml"

# 采集配置
scrape_configs:
  # 1. 监控Prometheus自身
  - job_name: "prometheus"
    static_configs:
      - targets: ["x.x.x.x:9090"]  # Prometheus自身地址

  # 2. 监控所有服务器的node-exporter(节点指标:CPU、内存、磁盘等)
  - job_name: "node_exporter"
    static_configs:
      - targets:
          - "x.x.x.x:9100"  # 本机node-exporter
          - "x.x.x.x:9100"  # 第二台服务器node-exporter
          - "x.x.x.x:9100"  # 第三台服务器node-exporter

  # 3. 监控所有服务器的容器指标(通过cadvisor)
  - job_name: "docker_containers"
    static_configs:
      - targets:
          - "x.x.x.x:8080"  # 本机cadvisor
          - "x.x.x.x:8080"  # 第二台服务器cadvisor
          - "x.x.x.x:8080"  # 第三台服务器cadvisor
  # 4. 监控指定服务器的业务指标
  - job_name: "bus_tasks"
    static_configs:
      - targets:
          - "x.x.x.x:28256" # 220服务器上有
          - "x.x.x.x:28256"
          - "x.x.x.x:28256"
  # 5. 添加监控Alertmanager主机
  - job_name: "alertmanager"
    static_configs:
      - targets:
          - "x.x.x.x:9093" # 告警服务器

5.3 重启prometheus

  $ docker restart prometheus

5.4 验证是否能发现example-metrics服务

访问你的prometheus http://x.x.x.x:9090可看到服务已被监控。

img_4.png

6. 对接grafana

6.1 找一个模板

业务grafana的json模板,已经调试好,可以直接用

grafana-example-metrics-template.json

6.2 导入模板

grafana_import.png

grafana-import2.png

6.3 效果展示

img_5.png img_6.png img_7.png

END

About

使用prometheus抓取业务指标,模拟业务场景

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages