Prometheus 监控(2) : Prometheus+Grafana 监控系统搭建

945 阅读5分钟

这是我参与2022首次更文挑战的第2天,活动详情查看:2022首次更文挑战

引言

在调研中,我们期望能够实现对 windows、Linux、mysql数据库、JVM 等数据源进行实时监控和告警。并且讨论出一套Prometheus + Grafana 的监控方案。

这套方案的关系如下图,而本小节主要针对 Prometheus 和 Grafana 进行监控系统的初步搭建。

image-20220119175753991

一、Prometheus 监控部署

1.1 工作原理

  • 1、Prometheus server 可以定期从活跃的目标主机上拉取监控指标数据,目标主机的监控数据可以通过配置静态 job 或者服务发现的方式被 prometheus server 采集到,默认为拉取的方式。

  • 2、Prometheus server 把采集到的监控指标数据保存到本地磁盘或者数据库。

  • 3、Prometheus 采集的监控指标数据按时间序列存储,在配置告警规则后,把触发的报警发送到 alertmanager

  • 4、Alertmanager 通过配置规则,发送报警到邮件或微信等

  • 5、Prometheus 自带的 web ui 界面提供 PromQL 查询语言,但具备学习成本,不要求掌握,我们可以通过后面的 Grafana 展示平台将数据以图表的形式展示出来。

1.2 安装部署

​ 由前面调研,我们大概了解了 Prometheus 的架构和功能,它是一款开源的系统监控和报警工具包,prometheus 在 2016 年加入了云原生计算基金会,成为继K8s 之后的第二个项目。下面,我们将直接部署这套系统。

官网:prometheus.io/

下载到对应的安装包后进行后续步骤,我这边使用的版本为 2.29.1

  • 1、解压 prometheus

    	[root@localhost package]# tar -zxvf prometheus-2.29.1.linux-amd64.tar.gz -C /opt/software/ 
    
  • 2、修改配置文件 , 这里先配置个 Node Export

    # 这里表示要抓取对象的配置
    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"]
    

    参数说明:

    1、global 配置块:此片段指定的是 prometheus 的全局配置, 比如采集间隔,抓取超时时间等。

    ​ ➢ scrape_interval:拉取数据的时间间隔,默认为 1 分钟默认继承 global 值。

    ​ scrape_timeout: 抓取超时时间,默认继承 global 值。

    ​ ➢ evaluation_interval:规则验证(生成 alert)的时间间隔,默认为 1 分钟。

    2、rule_files 配置块:此片段指定报警规则文件, prometheus 根据这些规则信息,会推送报警信息到alertmanager 中。

    3、scrape_configs 配置块:配置采集目标相关, prometheus 监视的目标。Prometheus自身的运行信息可以通过 HTTP 访问,所以Prometheus 可以监控自己的运行数据。指定抓取配置,prometheus 的数据采集通过此片段配置。

    ​ ➢ job_name:监控作业的名称。他的下一集是instance,也就是target

    ​ ➢ static_configs:表示静态目标配置,就是固定从某个 target 拉取数据。一个 scrape_config 片段指定一组目标和参数, 目标就是实例,指定采集的端点, 参数描述如何采集这些实例, 主要参数如下

    ​ ➢ targets : 指定监控的目标, 其实就是从哪儿拉取数据。

    ​ metric_path: 抓取路径, 默认是/metrics

    ​ *_sd_configs: 指定服务发现配置

  • 3、启动运行

    nohup ./prometheus --config.file=prometheus.yml > ./prometheus.log 2>&1 --web.enable-lifecycle &
    

    --web.enable-lifecycle启用远程热加载配置文件

  • 4、访问地址

    http://192.168.81.104:9090/

    可以看到当前 Prometheus 已经能够收集到自身的数据。

    image-20220120145506499

  • 5、远程加载配置文件(更改配置后重启)

    curl -X POST http://localhost:9090/-/reload
    

二、Grafana 监控部署

2.1 概述

grafana 是一款采用 Go 语言编写的开源应用,主要用于大规模指标数据的可视化展现,是网络架构和应用分析中最流行的时序数据展示工具,目前已经支持绝大部分常用的时序数据库。它具备以下几个特点:

  • grafana 拥有快速灵活的客户端图表,面板插件有很多不同方式的可视化指标和日志。
  • Grafana支持许多个不同的时间序列数据源存储数据。
  • Grafana 中的警报允许将消息发送给对应配置的负责人。
  • Grafana 使用来自不同数据源的丰富事件注释图表,将鼠标悬停在事件上会显示完整的事件元数据和标记。

官网地址:grafana.com/grafana

2.2 安装

本次安装的环境在 centos7.8 ,由于系统需要支持汉化要求,所以,尽可能的将系统进行汉化满足阅读习惯。而汉化的方案不是很多,自己去挨个汉化,需要付出很多的时间成本。因此,本次汉化主要针对市面上的一些开源组件进行使用。而查阅下来,比较符合要求的是 grafana-6.7.4 版本的汉化。因此,我们就针对该版本进行部署应用。

安装步骤:

  • 1、下载与汉化版本相同的开发版本

     wget https://dl.grafana.com/oss/release/grafana-6.7.4-1.x86_64.rpm
    
  • 2、解压

    [root@localhost package]# sudo yum install grafana-6.7.4-1.x86_64.rpm 
    
  • 3、修改端口为 4000 (非必要,我这边冲突了),然后重启

    vi /etc/grafana/grafaba.ini
    # 查找 port
    /port
    
  • 4、下载 汉化版本 然后上传解压 /opt/package/grafana-chinese-master

    git clone https://github.com/tghfly/grafana-chinese.git
    
  • 5、进入 grafana-chinese-master 目录,复制文件

    [root@localhost grafana-chinese]# /bin/cp -rp bin/linux-amd64/grafana-server /usr/sbin/
    
    [root@localhost grafana-chinese]# /bin/cp -rp bin/linux-amd64/grafana-cli /usr/sbin/
    
    [root@localhost grafana-chinese]# /bin/cp -rp public /usr/share/grafana/
    
    [root@localhost grafana-chinese]# systemctl start grafana-server
    
  • 6、展示如下

访问 : http://192.168.81.104:4000/

汉化的内容主要是侧边栏和一些设置,而面板内的内容不会被针对翻译过来,不过这也满足基本的使用了。

image-20220120152049532

  • 7、新增数据源,保存即可。

image-20220120152245612