Prometheus

一、简介

       开源监控系统和警报工具包,从2012年开始由Google工程师在Soundcloud以开源软件形式研发,于2015年早期对外发布早期版本。2016年5月继Kubernates之后成为第二个正式加入CNCF基金会的项目,同年6月正式发布1.0版本。2017年底发布了基于全新存储层的2.0版本,能更好的与容器平台,云平台配合。

 二、特点

  1. 支持多维数据模型由指标名称和键值对标识的时间序列数据。
  2. 内置时间序列库TSDB(Time Serices Database)。
  3. 支持PromQL(Prometheus Query Language)   ,对数据的查询和分析、图形展示和监控告警。  
  4. 不依赖分布式存储;单个服务器节点是自治的。
  5. 支持HTTP的拉取(pull)方式收集时间序列数据。
  6. 通过中间网关Pushgateway推送时间序列。
  7. 通过服务发现与静态配置2种方式发现目标。
  8. 支持多种可视化和仪表盘。如grafana。

三、核心组件

  1. prometheus Server。主要用于抓取数据和存储时序数据,另外还提供查询和Alert Rule 配置管理。   
  2. client libraries。用于检测应用程序代码的客户端库。
  3. push gateway。用于批量,短期的监控数据的汇总节点,主要用于业务数据汇报等。
  4. exporters。收集监控样本数据,并以标准格式向Prometheus提供。例如:收集服务器系统数据的node_exporter,收集MySql监控样本数据的MySql exporter等等。
  5. alertmanager。用于告警通知管理。  

 四、基础架构

      【业务逻辑】

  1.  Prometheus server 定期从静态配置的targets或者服务发现的targets拉取数据(Targets是Prometheus采集Agent需要抓取的采集目标)。
  2. 当新拉取的数据大于配置内存缓存区的时候,Prometheus会将数据持久化到硬盘(如果使用remote storage将持久化到云端)。
  3. Prometheus可以配置rules,然后定时查询数据,当条件触发的时候,会将alerts推送到配置的Alertmanager。
  4. Alertmanager收到告警的时候,可以根据配置(163,钉钉等),聚合,去重,降噪,最后发送警告。
  5. 可以使用AP,Prometheus Console或者Grafana查询和聚合数据。 

五、Prometheus与Zabbix的对比           

        小结:监控系统没有绝对的最好,只有最适合。可以参考以下要点:

    1.  物理机、硬件设配的监控推荐使用Zabbix。
    2. Docker容器,Kunernates监控推荐使用Prometheus。
    3. 云服务器厂商自带监控系统,有的监控系统不全面,也可以Zabbix和Prometheus混合使用。

六、安装和配置

        说明:安装环境使用Centos7。

        6.1、ntp时间同步

                说明:安装Prometheus之前必须先安装ntp时间同步,因为prometheus server谁系统时间的准确性要求很高,必须保证本机时间实时同步。执行命令如下:             

timedatectl set-timezone Asia/Shanghai
contab -e

       6.2、Prometheus server 下载

              官网下载最新版本。这里我们下载prometheus-2.49.0-rc.1.linux-amd64.tar.gz。

              也可以通过Github下载。

              Docker镜像也是可以下载的。

      6.3、安装与启动Prometheus server

               解压即可,然后执行命令可直接启动·。记得修改压缩包名称:  prometheus-2.49.0-rc.1.linux-amd64.tar.gz 为  

prometheus.tar.gz   
tar zxvf prometheus.tar.gz     

      6.4、修改配置文件

              默认解压后其实不用修改配置文件prometheus.yml的,不过不修改的话,它只会监测本机信息。

              使用vim命令编辑配置文件。             

vim prometheus.yml             
# 全局配置
global:
  scrape_interval: 15s # 每隔15秒采集一次数据
  evaluation_interval: 15s # 每隔15秒做一次告警监测
  # scrape_timeout is set to the global default (10s).

# 告警配置
alerting:
  alertmanagers:
    - static_configs:
        - targets:
           - 127.0.0.1:9093 #alertmanager配置的ip和端口

# 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:
      # 可以监控多个节点。节点需要安装node_exporter和Alertmanager
      - targets: ["localhost:9090",'172.2.3.21:9100','172.2.4.21:9101'] 
   # job可以有多个,多个时,也是同样格式,示例如下:
  - job_name: "nginx"
    metrics_path: /status/format/prometheus
    static_configs:
       - targets: ["172.16.5.21:9080"] 

 

       

 

 

 

 

 

 

 

 

 

 

                 

 

posted on 2023-12-27 09:24  木乃伊人  阅读(16)  评论(0编辑  收藏  举报

导航