基于Prometheus+Grafana实现对Tomcat监控

  1. 部署Prometheus

(1)安装

下载安装包:

地址:https://github.com/prometheus/prometheus/releases/download/v2.42.0/prometheus-2.42.0.linux-amd64.tar.gz

解压安装包:

tar -zxvf prometheus-2.42.0.linux-amd64.tar.gz
mv prometheus-2.42.0.linux-amd64 /opt/prometheus-2.42.0

(2)启动

cd /opt/prometheus-2.42.0
./prometheus
  1. 部署jmx-exploger(用于集成到tomcat实施监控指标采集)

(1)下载

地址:https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.3.1/jmx_prometheus_javaagent-0.3.1.jar

(2)安装

#将jmx_prometheus_javaagent-0.3.1.jar放入Tomcat安装目录bin下
mv jmx_prometheus_javaagent-0.3.1.jar /opt/tomcat-8.5.87/bin

#tomcat 
/opt/tomcat-8.5.87/bin目录下创建配置文件config.yaml,并写入以下内容(这块儿内容跟使用的grafana仪表盘模板有关):
wercaseOutputLabelNames: 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

#修改/opt/tomcat-8.5.87/bin/catalina.sh文件中的JAVA_OPTS变量,加入javaagent相关配置
JAVA_OPTS="$JAVA_OPTS -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -javaagent:/opt/tomcat-8.5.87/bin/jmx_prometheus_javaagent-0.3.1.jar=30018:/opt/tomcat-8.5.87/bin/config.yaml"

(3重启Tomcat

(4) 验证监控是否生效

curl -s http://127.0.0.1:30018

30018端口正是我们在catalina.sh添加到JAVA_OPTS上的javaagent端口

响应(本次请求采集的各项监控指标数据):

基于Prometheus+Grafana实现对Tomcat监控_第1张图片
  1. Prometheus新增Tomcat监控Job

(1)我们新建一个名为tomcat-exploder的json文件,用于配置job,内容如下

[
    {
        "targets": [
            "127.0.0.1:30018"   //监控数据采集地址,必填
        ],
        "labels": {
            "group": "ES-SQL",  //任意标签,不作要求
            "app": "Tomcat",    //任意标签,不作要求
            "hostname": "Q-ALA2-OMP-01" //任意标签,不作要求
        }
    }
]

(2)将json文件添加到到prometheus配置文件中

# ------------------------------------------ES-SQL Tomcat-------------------------------------
  - job_name: 'es-sql-tomcat'
    file_sd_configs:
    - files:
        - /opt/prometheus-2.28.0/json/tomcat-exporter.json

该Tomcat监控job也可以直接在prometheus.yaml中添加,像这样:

scrape_configs:
  - job_name: 'es-sql-tomcat'
    static_configs:
      - targets: ['localhost:8080', 'localhost:8081']
        labels:
          group: 'production'

但是有些情况,将job定义写到一个json文件里更灵活

(3)在Prometheus WebUI查看监控数据

打开地址:http://127.0.0.1:9090

基于Prometheus+Grafana实现对Tomcat监控_第2张图片
基于Prometheus+Grafana实现对Tomcat监控_第3张图片

可以看到我们新增的es-sql-tomcat job状态是正常的,我们进入Graph标签页查询个数据试试,

首先我们可以手动请求下exploder获取采集数据,找一个指标查询下,例如我们找到jvm_memory_bytes_used这个指标,

基于Prometheus+Grafana实现对Tomcat监控_第4张图片

执行查询,输入表达式:jvm_memory_bytes_used{job="es-sql-tomcat",group="ES-SQL"}

基于Prometheus+Grafana实现对Tomcat监控_第5张图片

可以查询出值来就ok了。

  1. 接入grafana

(1)导入一个现成的grafana仪表盘面板

下载地址:https://grafana.com/grafana/dashboards/8563-jvm-dashboard/

下载完成后导入:

基于Prometheus+Grafana实现对Tomcat监控_第6张图片
基于Prometheus+Grafana实现对Tomcat监控_第7张图片

最后点击“import”导入即可,展示:

基于Prometheus+Grafana实现对Tomcat监控_第8张图片

(2)也可以自定义面板

基于Prometheus+Grafana实现对Tomcat监控_第9张图片

你可能感兴趣的:(prometheus)