Grafana+Prometheus+jmx实现微服务与多台服务器的jvm监控

Grafana+Prometheus安装文档 ——基于 RPM 的 Linux(CentOS、Fedora、OpenSuse、Red Hat)上安装

文章目录

  • Grafana+Prometheus安装文档 ——基于 RPM 的 Linux(CentOS、Fedora、OpenSuse、Red Hat)上安装
  • 工具版本
  • 一、下载安装配置Grafana
    • 1.下载Grafana
    • 2.安装Grafana
    • 3.启动服务器
    • 4.默认配置
    • 5.登录
  • 二、下载安装配置node_exporter节点导出器
    • 1.下载node_exporter
    • 2.安装node_exporter
  • 三、下载安装配置JMX Exporter
    • 1.下载
    • 2.运行
  • 四、配置Prometheus
    • 1、安装 Prometheus
    • 2、在 Grafana Explore 视图中检查 Prometheus 指标
  • 五、监控jvm相关配置
    • 1、配置jmx_exporter
    • 2、配置Prometheus
  • 采集每台服务器node exporter监控数据
  • 六、在Grafana上配置Prometheus数据源并创建仪表盘
  • 七、多台服务器部署监控
    • 1、在所监控的服务器上安装**node_exporter**与 **jmx**
    • 2、修改配置
  • 采集每台服务器node exporter监控数据

工具版本

jmx_prometheus_javaagent-0.16.1.jar
grafana-enterprise-8.3.3-1.x86_64
node_exporter-1.3.1.linux-amd64
prometheus-2.32.1.linux-amd64
仪表盘官网 https://grafana.com/grafana/dashboards/8563

一、下载安装配置Grafana

1.下载Grafana

linux环境下输入命令:
wget https://dl.grafana.com/enterprise/release/grafana-enterprise-8.3.3-1.x86_64.rpm

或者 在官网下载后传到linux: https://grafana.com/grafana/download

需要选择对应的版本。

2.安装Grafana

在linux系统输入: sudo yum install grafana-enterprise-8.3.3-1.x86_64.rpm

在安装过程中需要下载相关依赖 输入:y

3.启动服务器

可以选择systemdinit.dbinary方式启动
我是用了init.d方法启动服务器
要启动服务并验证服务是否已启动:
启动sudo service grafana-server start
查看状态sudo service grafana-server status
停止 sudo service grafana-server stop
重启sudo service grafana-server restart

将 Grafana 服务器配置为在开机时启动
sudo /sbin/chkconfig --add grafana-server

4.默认配置

安装二进制文件到 /usr/sbin/grafana-server
将 init.d 脚本复制到 /etc/init.d/grafana-server
将默认文件(环境变量)安装到 /etc/sysconfig/grafana-server
将配置文件复制到 /etc/grafana/grafana.ini
安装 systemd 服务(如果 systemd 可用)名称 grafana-server.service
默认配置使用日志文件在 /var/log/grafana/grafana.log
默认配置指定一个 sqlite3 数据库在 /var/lib/grafana/grafana.db

5.登录

默认:
网址 http://localhost:3000/login
账号:admin
密码:admin

初次登录会提示修改密码。

二、下载安装配置node_exporter节点导出器

1.下载node_exporter

https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz

2.安装node_exporter

tar -xvfz node_exporter-1.3.1.linux-amd64.tar.gz
cd node_exporter-1.3.1.linux-amd64
./node_exporter

会看到这样的输出,表明节点导出器现在正在运行并在端口 9100 上公开指标:

INFO[0000] Starting node_exporter (version=0.16.0, branch=HEAD, revision=d42bd70f4363dced6b77d8fc311ea57b63387e4f)  source="node_exporter.go:82"
INFO[0000] Build context (go=go1.9.6, user=root@a67a9bc13a69, date=20180515-15:53:28)  source="node_exporter.go:83"
INFO[0000] Enabled collectors: source="node_exporter.go:90"
INFO[0000]  - boottime source="node_exporter.go:97"
...
INFO[0000] Listening on :9100 source="node_exporter.go:111"

可通过访问 http://localhost:9100/metrics 来验证是否正在导出指标.或者执行以下命令

curl http://localhost:9100/metrics

三、下载安装配置JMX Exporter

1.下载

因为使用的是jdk8,所以需要下载以下jar包:
https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.16.1/jmx_prometheus_javaagent-0.16.1.jar

2.运行

下载jar包之后,只需输入以下命令(config.yml为自己配置的yml文件,在监控jvm相关配置里配置,yourJar.jar为需要代理的jar文件):
官网命令:
java -javaagent:/export/grafana/jmx/jmx_prometheus_javaagent-0.16.1.jar=3010:config.yml -jar yourJar.jar

根据需要修改之后:
nohup java -javaagent:/export/grafana/jmx/jmx_prometheus_javaagent-0.16.1.jar=3010:/export/grafana/jmx/simple-config.yml -jar demo1-0.0.1-SNAPSHOT.jar &

四、配置Prometheus

1、安装 Prometheus

tar -xvfz prometheus-2.32.1.linux-amd64.tar.gz

开启Prometheus:

./prometheus --config.file=prometheus.yml &

由于Prometheus默认端口9090被占用 ,需要修改默认端口
在prometheus.yml文件中 修改端口号为9101;

并运行如下命令,通过9101端口监听并开始热启动:

nohup ./prometheus --web.enable-admin-api --web.enable-lifecycle --config.file=prometheus.yml --web.listen-address=:9101 &

启动热启动:

curl -XPOST http://localhost:9090/-/reload

查看所有命令行参数:

./prometheus -h

使用参数详解:

–config.file=“prometheus.yml” 用于选择Prometheus的运行配置文件
–web.listen-address=“0.0.0.0:9090” 用于监听UI、API、和数据的地址

–web.enable-lifecycle 开启热启动,可通过http请求来关机和重启

–web.enable-admin-api 设置管理控制操作的api端点

2、在 Grafana Explore 视图中检查 Prometheus 指标

通过访问 http://localhost:9090,图页面:/graph ,metrics页面: /metric
可以查看到监控的相关视图信息。

五、监控jvm相关配置

1、配置jmx_exporter

在jmx目录下创建一个simple-config.yml(名字可以随意起)文件,并在其中添加配置
---   
lowercaseOutputLabelNames: true
lowercaseOutputName: true
whitelistObjectNames: ["java.lang:type=OperatingSystem"]
blacklistObjectNames: []
rules:
  - pattern: 'java.lang<>(committed_virtual_memory|free_physical_memory|free_swap_space|total_physical_memory|total_swap_space)_size:'
    name: os_$1_bytes
    type: GAUGE
    attrNameSnakeCase: true
  - pattern: 'java.lang<>((?!process_cpu_time)\w+):'
    name: os_$1
    type: GAUGE
attrNameSnakeCase: true

如下为所使用配置相关介绍:
名称 描述

lowercaseOutputName 是否把指标名称转换为小写,默认为false。
lowercaseOutputLabelNames 是否把标签名称转换为小写,默认为false
rules 一个按顺序引用的规则列表,处理过程会在第一条规则匹配上时停止。未匹配上的atrributes则不会被收集。默认以默认格式收集所有指标
pattern 匹配每一个bean attribute(属性)的正则样式。该样式不是锚定的。可以设置正则捕获组用与其他配置项(如上面的样例
name: cassandra_$1_$2)。默认匹配所有格式。 name 指标名。可以引用
pattern中设置的捕获组。如果没有指定则使用默认格式。如果为空,此attribute的处理会停止且没有输出。
value 指标值。静态值和引用pattern捕获组均可。如果没指定则抓取mBean attribute对应的value值。
labels 标签名:标签值 形式的键值对。可引用捕获组。使用时必须配置 name 项。如果没有指定并且没有使用默认格式,则不会输出标签。
whitelistObjectNames 查询对象白名单,默认是所有mBeans对象。不在白名单则不会被查询。支持正则匹配。
blacklistObjectNames 查询对象黑名单,默认无。支持正则匹配。
attrNameSnakeCase 将attribute名称 转换为蛇形格式。例如 anAttrName 转换为an_attr_name。默认为false

2、配置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=` to any timeseries scraped from this config.
  - job_name: "prometheus"

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

    static_configs:
    - targets: ["localhost:9101"]

采集每台服务器node exporter监控数据

  - job_name: 'node'
    static_configs:
    - targets: ['192.168.4.249:9100','localhost:9100']
#JMX jmx监控的进程
  - job_name: 'jvmmonitor'
    static_configs:
    - targets: ['localhost:3010']
      labels:
        instance: jvmmonitor1  
    - targets: ['localhost:3011']
      labels:
        instance: jvmmonitor2
    - targets: ['192.168.4.249:3010']
      labels:
        instance: jvmmonitor3
    - targets: ['192.168.4.249:3011']
      labels:
        instance: jvmmonitor4

启动热启动:

curl -XPOST http://localhost:9090/-/reload

六、在Grafana上配置Prometheus数据源并创建仪表盘

仪表盘配置,在Grafana界面上create ->import
在官网https://grafana.com/grafana/dashboards/8563导入JVM dashboard,输入8563

七、多台服务器部署监控

1、在所监控的服务器上安装node_exporterjmx

在需要监控的服务器上下载安装配置 node_exporter 与 jmx即可
可查看安装步骤二、三

在监控服务器上安装Grafana、Prometheus即可

2、修改配置

在监控服务器的Prometheus.yml进行修改,加入所监控的node_exporter与 jmx的ip与端口信息(并通过label标签对每个监控的进程进行备注,方便查看):

采集每台服务器node exporter监控数据

  - job_name: 'node'
    static_configs:
    - targets: ['192.168.4.249:9100','localhost:9100']
#JMX jmx监控的进程
  - job_name: 'jvmmonitor'
    static_configs:
    - targets: ['localhost:3010']
      labels:
        instance: jvmmonitor1  
    - targets: ['localhost:3011']
      labels:
        instance: jvmmonitor2
    - targets: ['192.168.4.249:3010']
      labels:
        instance: jvmmonitor3
    - targets: ['192.168.4.249:3011']
      labels:
        instance: jvmmonitor4

你可能感兴趣的:(运维,服务器,微服务,jvm)