Prometheus监控系统之入门篇(一)

1. 简介

Prometheus: (简称Prom)是由SoundCloud开发的开源监控报警系统。是大名鼎鼎的CNCF云原生基金会下的第二大开源项目。具有如下特点:

  • 使用Go语言开发
  • 内置时序数据库
  • 性能足够支撑上万台规模的集群
  • 多维度数据模型,灵活的查询语言
  • 通过HTTP的pull方式采集时序数据
  • 可以通过中间网关进行时序列数据推送
  • 服务发现或者静态配置来发现被监控对象
  • 支持多种多样的图表和界面展示,比如Grafana等

架构图

工作流程

  1. Prometheus Server通过http协议周期性的pull被监控对象的metrics,然后保存在本地的TSDB(时序数据库)中。
  2. Prometheus Server判断监控数据是否触发告警,如果触发,将告警发送给Alertmanager。
  3. Alertmanager处理告警,并通过邮件等方式进行通知。
  4. Prometheus监控数据也可以通过Grafana等可视化工具进行展示。

2. Prometheus环境搭建

主要组件(括号内表示搭建环境使用的docker镜像)

  • Prometheus Server( prom/prometheus:v2.7.2)
  • 被监控对象exporter(prom/node-exporter,输出被监控对象信息的http接口,我们叫做exporter)
  • Alertmanager(prom/alertmanager,告警系统)
  • Grafana (grafana/grafana, 数据可视化工具)

2.1 安装Prometheus Server

主要涉及到两个配置文件:

  • prometheus.yml #主配置文件
  • rules.yml #告警规则配置文件

主配置文件:prometheus.yml

global:
  scrape_interval: 15s #默认采集监控数据时间间隔
  external_labels:
    monitor: 'codelab-monitor'
rule_files:
  - /etc/prometheus/rules.yml   #告警规则文件位置,后面Alertmanager章节会具体介绍
scrape_configs:  #监控对象设置
  - job_name: prometheus #任务名称
    scrape_interval: 5s #每隔5s获取一次监控数据
    static_configs: #监控对象地址
      - targets: ['192.168.71.92:9090']  #prometheus将自己加入到监控对象中
      - targets: ['192.168.71.92:9100']  # 监控node节点,如cpu、内存使用和磁盘等
        labels:
          group: 'client-node-exporter'
alerting:   #告警管理器设置,后面Alertmanager章节会具体介绍
  alertmanagers:
    - static_configs:
      - targets: ['192.168.71.92:9093']

** 告警规则配置文件**

groups:
  - name: cqh
    rules:
      - alert: cqh测试
        expr: dead_lift > 150
        for: 1m
        labels:
          status: warning
        annotations:
          summary: "{{$labels.instance}}:硬拉超标! lightweight bady!!!"
          description: "{{$labels.instance}}: 硬拉超标!! lightweight baby!!!"

启动prometheus服务

docker run --name=prometheus -d \ #设置容器启动名称
-p 9090:9090 \ #暴露prometheus服务端口
-v 本地绝对路径/prometheus.yml:/etc/prometheus/prometheus.yml \ #挂载本地prometheus.yaml
-v 本地绝对路径/rules.yml:/etc/prometheus/rules.yml \ #挂载本地rules.yml
prom/prometheus:v2.7.2 \ #prometheus容器镜像
--config.file=/etc/prometheus/prometheus.yml \ #设置prometheus服务使用的配置文件
--web.enable-lifecycle #用于prometheus热加载配置文件,方式:curl -X POST http://localhost:9090/-/reload

猜你喜欢

转载自www.cnblogs.com/informatics/p/12215255.html
今日推荐