Prometheus监控报警系统

一、介绍

Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB)

二、原理

Prometheus的基本原理是通过HTTP协议周期性抓取被监控组件的状态,任意组件只要提供对应的HTTP接口就可以接入监控。不需要任何SDK或者其他的集成过程。这样做非常适合做虚拟化环境监控系统,比如VM、Docker、Kubernetes等。输出被监控组件信息的HTTP接口被叫做exporter 。目前互联网公司常用的组件大部分都有exporter可以直接使用,比如Varnish、Haproxy、Nginx、MySQL、Linux系统信息(包括磁盘、内存、CPU、网络等等)。

三、服务过程

  • Prometheus Daemon负责定时去目标上抓取metrics(指标)数据,每个抓取目标需要暴露一个http服务的接口给它定时抓取。Prometheus支持通过配置文件、文本文件、Zookeeper、Consul、DNS SRV Lookup等方式指定抓取目标。Prometheus采用PULL的方式进行监控,即服务器可以直接通过目标PULL数据或者间接地通过中间网关来Push数据。
  • Prometheus在本地存储抓取的所有数据,并通过一定规则进行清理和整理数据,并把得到的结果存储到新的时间序列中。
  • Prometheus通过PromQL和其他API可视化地展示收集的数据。Prometheus支持很多方式的图表可视化,例如Grafana、自带的Promdash以及自身提供的模版引擎等等。Prometheus还提供HTTP API的查询方式,自定义所需要的输出。
  • PushGateway支持Client主动推送metrics到PushGateway,而Prometheus只是定时去Gateway上抓取数据。
  • Alertmanager是独立于Prometheus的一个组件,可以支持Prometheus的查询语句,提供十分灵活的报警方式。

四、三大套件

    1、server主要负责数据采集和存储,提供PromQL查询语言的支持。

    2、Alertmanager警告管理器,用来进行报警。

    3、Push Gateay支持临时性Job主动推送指标的中间网关。

五、安装prometheus server

    (1)直接安装

          1、从官网下载页面(Download | Prometheus)下载Promethues的最新版,并进行解压。(注:下载时注意自己的操作系统和下载的版本)

[root@ecs-3ec9 ~]# tar xfzv prometheus-2.27.0-rc.0.linux-amd64.tar.gz

          2、 切换到解压目录,检查版本

[root@ecs-3ec9 ~]# cd prometheus-2.27.0-rc.0.linux-amd64
[root@ecs-3ec9 prometheus-2.27.0-rc.0.linux-amd64]# ./prometheus --version
prometheus, version 2.27.0-rc.0 (branch: HEAD, revision: aedd4fa95cf304870da35ab6ee7376a38d8e0c49)
  build user:       root@be3fd1fa26a3
  build date:       20210509-23:01:47
  go version:       go1.16.4
  platform:         linux/amd64

            3、运行Prometheus server :

[root@ecs-3ec9 ~]# cd prometheus-2.27.0-rc.0.linux-amd64
[root@ecs-3ec9 prometheus-2.27.0-rc.0.linux-amd64]# ./prometheus --version
prometheus, version 2.27.0-rc.0 (branch: HEAD, revision: aedd4fa95cf304870da35ab6ee7376a38d8e0c49)
  build user:       root@be3fd1fa26a3
  build date:       20210509-23:01:47
  go version:       go1.16.4
  platform:         linux/amd64

           4、访问页面

(2)使用docker镜像安装

    1、执行如下命令:

[root@web2 ~]# docker pull prom/prometheus
#拉取prometheus镜像

[root@web2 ~]# docker run -d --name prometheus2020 prom/prometheus
#启动容器

[root@web2 ~]# docker cp -a prometheus2020:/etc/prometheus/ $PWD/prometheus
#复制容器内部的配置文件到宿主机,不用事先创建$PWD/prometheus目录

[root@web2 ~]# docker rm -f prometheus2020
#删除容器

[root@web2 ~]# docker run -d --name prometheus2020 -p 9090:9090 -v $PWD/prometheus:/etc/prometheus prom/prometheus
#启动容器

   2、访问页面

六、Prometheus配置文件详解

  配置文件名为:prometheus.yml

[root@web2 prometheus]# cat prometheus
cat: prometheus: Is a directory
[root@web2 prometheus]# cat prometheus.yml 
# my global config
global:
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
    - targets: ['localhost:9090']

  prometheus配置文件的四个模块:

   1、globle:Prometheus 的全局配置,比如 scrape_interval 表示 Prometheus 多久抓取一次数据,evaluation_interval 表示多久检测一次告警规则

   2、altering:

   3、rule_files:告警规则

   4、scrape_configs:定义了prometheus要抓取的目标,默认为抓取自己。

七、安装客户端提供metrics接口

1、docker操作

docker pull prom/node-exporter
#拉取镜像

docker run -d --name node-exporter2020 -p 9100:9100 -v "/proc:/host/proc:ro" -v "/sys:/host/sys:ro" -v "/:/rootfs:ro" --net="host" prom/node-exporter
#启动容器

2、修改配置文件

[root@web2 ~]# cat /root/prometheus/prometheus.yml 
# my global config
global:
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
    - targets: ['localhost:9090']
      labels:
         instance: prometheus
  - job_name: 'client'
    static_configs:
    - targets: ['172.17.0.1:9100'] #此处IP地址为docker内的ip分配
      labels:
         instance: client

3、重启容器

docker restart prometheus2020

4、访问

八、安装grafana

 1、docker安装

[root@web2 prometheus]# docker pull grafana/grafana
#拉取镜像

[root@web2 ~]# mkdir grafana
[root@web2 ~]# chmod 777 -R ./grafana/

[root@web2 ~]# docker run -d --name=grafana2020 -p 3000:3000 -v $PWD/grafana:/var/lib/grafana grafana/grafana
#启动容器

 2、访问 (默认密码 : admin   admin)

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值