前言
这节主要介绍三种常用的基础服务监控,包括 Linux、windows、jvm。期望能够通过 Prometheus + Grafana 来实现这三种常用类型的服务监控。三个服务的版本为 centos7.8、windows 10、jdk8。在上小节中,Prometheus 为了能够监控某些指标,例如主机的使用率,内存,硬盘等信息,需要目标主机暴露服务地址,周期性的从这些地址上面拉取暴露的服务指标,常见的就是 Exporter,它是一个相对开放的概念,可以独立运行于监控目标之外,也可以直接内置在监控目标中,而下面,我们将通过 Prometheus + Grafana 监控系统的方式实现这三者的监控。
一、Linux 监控
去官网 获取最新的 node exporter 版本的二进制包,下载的地址如下:
使用这个暴露器可以将 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。在汉化版本中,存在一个问题需要解决。由于版本使用的是6.x 版本,所以会跟一些模板出现不匹配的现象,建议下载 json 文件,将里面的 table-old 改为 table。如果是7.x 及以上版本则不需要。
最后导入展示的效果如下
二、windows 监控
首先在需要监控的 windows 机器上安装 wmi_exporter 。
它的下载地址:
这里有两种类型的安装包,其中 exe 是以程序的形式启动,而 msi 以后台服务的形式启动。我在这台 windows10 上面使用管理员 安装 msi 启动出现了权限不足的问题,因此使用 exe 安装包,且这块没有使用最新的支持包,因为发现该版本可能存在点兼容的问题(只是可能,确实没有获取到数据),然后我使用了 windows_exporter-0.16 的exe 包,获取到目标数据。
在这里也提个醒,有时候流程不同时,可以考虑下软件版本的问题。
安装的过程比较简单,直接双击安装即可,windows 默认 9182 端口,安装后自动启动,如果存在防火墙,注意开放端口。
浏览器访问:http://IP:9182/metrics
此时,windows 和 prometheus 都已经启动着,我们需要将二者关联起来,让 Prometheus 来定时抓取 Exporter 提供的数据,修改 Prometheus.yml 具体配置如下:
# 添加 windows 的配置
- job_name: 'windows-exporter'
static_configs:
- targets: ['192.168.81.15:9182']
最后,重启 prometheus,访问 prometheus 查看节点监控的 Windows是否获取到,以及是否正常显示。
展示方面,Grafana 配置推荐使用 grafana.com/grafana/das… 面板
模板存在一样的问题,需要修改 json 的 table-old 为 table,否则最上面的概览无法显示:
修改完成后的效果如下:
三、JVM 监控
1、下载 JVM_exporter 架构包
jvm_exporter 利用 Java 的 JMX 机制来读取 JVM 运行时的一些监控数据,然后将其转化成 metrics 格式,以便 Prometheus 对其进行监控采集。
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。
\