Prometheus 监控(3):基础服务监控(Linux、windows、jvm)

1,012 阅读3分钟

前言

这节主要介绍三种常用的基础服务监控,包括 Linux、windows、jvm。期望能够通过 Prometheus + Grafana 来实现这三种常用类型的服务监控。三个服务的版本为 centos7.8、windows 10、jdk8。在上小节中,Prometheus 为了能够监控某些指标,例如主机的使用率,内存,硬盘等信息,需要目标主机暴露服务地址,周期性的从这些地址上面拉取暴露的服务指标,常见的就是 Exporter,它是一个相对开放的概念,可以独立运行于监控目标之外,也可以直接内置在监控目标中,而下面,我们将通过 Prometheus + Grafana 监控系统的方式实现这三者的监控。

一、Linux 监控

去官网 获取最新的 node exporter 版本的二进制包,下载的地址如下:

prometheus.io/download/

使用这个暴露器可以将 Linux 系统的各项指标和运行参数通过默认 9100 端口和 url 接口的 metrics 暴露给外部。

具体步骤如下:

  • 1、解压启动:

    # 上传 node_exporter-1.2.2.linux-amd64.tar.gz 到虚拟机的/opt/software 目录# 解压到/opt/module 目录下:
    tar  -zxvf  node_exporter-1.2.2.linux-amd64.tar.gz  -C  /opt/module
      
    # 修改目录名:
    cd /opt/module 
    mv node_exporter-1.2.2.linux-amd64  node_exporter-1.2.2  
    ​
    # 启动:
    nohup ./node_exporter &
    
  • 2、显示

    浏览器输入当前 http:/ip:9100/metrics ,可以看到当前 node exporter 获取到的当前主机的所有监控数据。

  • 3、在 prometheus 中 加入 node_exporter 监控

     # 添加 Node Exporter 监控配置
      - job_name: 'node exporter'
        static_configs:
        - targets: ['192.168.81.102:9100', '192.168.81.103:9100', '192.168.81.104:9100']
    
  • 4、重启 prometheus

    curl -XPOST http://localhost:9090/-/reload 
    
  • 5、进入 grafana 中,进行图表展示

    图表展示的模板在 grafana.com/grafana/das… 中查找,我这边推荐用中文版监控

    名称为:Node Exporter for Prometheus Dashboard CN 20201010
    序列号为 8919

    image-20220120172049564

    在汉化版本中,存在一个问题需要解决。由于版本使用的是6.x 版本,所以会跟一些模板出现不匹配的现象,建议下载 json 文件,将里面的 table-old 改为 table。如果是7.x 及以上版本则不需要。

    最后导入展示的效果如下

    image-20220121090812643

二、windows 监控

首先在需要监控的 windows 机器上安装 wmi_exporter 。

它的下载地址:

github.com/martinlindh…

image-20220118085839906

这里有两种类型的安装包,其中 exe 是以程序的形式启动,而 msi 以后台服务的形式启动。我在这台 windows10 上面使用管理员 安装 msi 启动出现了权限不足的问题,因此使用 exe 安装包,且这块没有使用最新的支持包,因为发现该版本可能存在点兼容的问题(只是可能,确实没有获取到数据),然后我使用了 windows_exporter-0.16 的exe 包,获取到目标数据。

在这里也提个醒,有时候流程不同时,可以考虑下软件版本的问题。

安装的过程比较简单,直接双击安装即可,windows 默认 9182 端口,安装后自动启动,如果存在防火墙,注意开放端口。

浏览器访问:http://IP:9182/metrics

image-20220118090146085

此时,windows 和 prometheus 都已经启动着,我们需要将二者关联起来,让 Prometheus 来定时抓取 Exporter 提供的数据,修改 Prometheus.yml 具体配置如下:

# 添加 windows 的配置
  - job_name: 'windows-exporter'
    static_configs:
    - targets: ['192.168.81.15:9182']

最后,重启 prometheus,访问 prometheus 查看节点监控的 Windows是否获取到,以及是否正常显示。

image-20220118091425795

展示方面,Grafana 配置推荐使用 grafana.com/grafana/das… 面板

模板存在一样的问题,需要修改 json 的 table-old 为 table,否则最上面的概览无法显示:

image-20220118092434376

修改完成后的效果如下:

image-20220121092700771

三、JVM 监控

1、下载 JVM_exporter 架构包

jvm_exporter 利用 Java 的 JMX 机制来读取 JVM 运行时的一些监控数据,然后将其转化成 metrics 格式,以便 Prometheus 对其进行监控采集。

repo1.maven.org/maven2/io/p…

2、添加 配置文件

vim jvm-config.yml 。下面文件的大致意思是 取 metric 的 Gauge 瞬时值。

lowercaseOutputLabelNames: true
lowercaseOutputName: true
whitelistObjectNames: ["java.lang:type=OperatingSystem"]
rules:
 - pattern: 'java.lang<type=OperatingSystem><>((?!process_cpu_time)\w+):'
   name: os_$1
   type: GAUGE
   attrNameSnakeCase: true

3、启动代理 jar 包

直接路径。

[root@localhost jvm_export]# java -javaagent:/opt/software/jvm_export/jmx_prometheus_javaagent-0.15.0.jar=3010:/opt/software/jvm_export/jvm_config.yml -jar /home/server/giant-cloud-server-file-1.0.0.jar  &

4、修改 prometheus.yml

  - job_name: 'jmx'
    static_configs:
    - targets: ['localhost:3010']

5、重启 prometheus,Grafana 选择模板 id 为 7727

如果没有监控到 jvm数据,修改变量 Regex 为 jvm。

image-20220119163852985

\