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
linux环境下输入命令:
wget https://dl.grafana.com/enterprise/release/grafana-enterprise-8.3.3-1.x86_64.rpm
或者 在官网下载后传到linux: https://grafana.com/grafana/download
需要选择对应的版本。
在linux系统输入: sudo yum install grafana-enterprise-8.3.3-1.x86_64.rpm
在安装过程中需要下载相关依赖 输入:y
可以选择systemd
、init.d
、binary
方式启动
我是用了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
安装二进制文件到 /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
默认:
网址 http://localhost:3000/login
账号:admin
密码:admin
初次登录会提示修改密码。
https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz
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
因为使用的是jdk8,所以需要下载以下jar包:
https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.16.1/jmx_prometheus_javaagent-0.16.1.jar
下载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 &
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端点
通过访问 http://localhost:9090,图页面:/graph ,metrics页面: /metric
可以查看到监控的相关视图信息。
在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
修改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"]
- 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界面上create ->import
在官网https://grafana.com/grafana/dashboards/8563导入JVM dashboard,输入8563
在需要监控的服务器上下载安装配置 node_exporter 与 jmx即可
可查看安装步骤二、三
在监控服务器上安装Grafana、Prometheus即可
在监控服务器的Prometheus.yml
进行修改,加入所监控的node_exporter与 jmx的ip与端口信息(并通过label标签对每个监控的进程进行备注,方便查看):
- 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