Promethues如何监控Tomcat

Promethues 监控Tomcat 主要用的模块

  • Promethus 负载抓取/存储指标信息、并提供查询功能
  • grafana 数据可视化
  • JMX exporter 提供JMX中JVM相关的metrics
1、利用JMX exporter,在JAVA进程内启动一个小型的Http server
2、配置Prometheus抓取那个Http server提供的metrics 。
3、配置Grafana连接Prometheus,配置Dashboard 。
一、下载一个tomcat,下载jmx_exporter
  • 1、获取jmx_exporter有2种方法,自己编译获取jar包,获取现成的jar包
wgethttps://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.12.0/jmx_prometheus_javaagent-0.12.0.jar或者编译git clone https://github.com/prometheus/jmx_exportercd jmx_exportermvn package
  • 2、安装tomcat
wget http://mirrors.tuna.tsinghua.edu.cn/Apache/tomcat/tomcat-8/v8.5.51/bin/apache-tomcat-8.5.51.tar.gztar zxvf apache-tomcat-8.5.51.tar.gzmv apache-tomcat-8.5.51 /usr/localt/tomcat_test
  • 3、配置文件下载
wget https://github.com/prometheus/jmxexporter/blob/master/exampleconfigs/tomcat.ymltomcat.yml的内容如下
---lowercaseoutputLabelNames: truelowercaseOutputName: truerules:- pattern: 'Catalina<type=GlobalRequestProcessor, name="(w+-w+)-(d+)"><>(w+):'name: tomcat_$3_totallabels:port: "$2"protocol: "$1"help: Tomcat global $3type: COUNTER- pattern: 'Catalina<j2eeType=Servlet, WebModule=//([-a-zA-Z0-9+&@#/%?=~_|!:.,;]*[-a-zA-Z0-9+&@#/%=~_|]), name=([-a-zA-Z0-9+/$%~_-|!.]*), J2EEApplication=none, J2EEServer=none><>(requestCount|maxTime|processingTime|errorCount):'name: tomcat_servlet_$3_totallabels:module: "$1"servlet: "$2"help: Tomcat servlet $3 totaltype: COUNTER- pattern: 'Catalina<type=ThreadPool, name="(w+-w+)-(d+)"><>(currentThreadCount|currentThreadsBusy|keepAliveCount|pollerThreadCount|connectionCount):'name: tomcat_threadpool_$3labels:port: "$2"protocol: "$1"help: Tomcat threadpool $3type: GAUGE- pattern: 'Catalina<type=Manager, host=([-a-zA-Z0-9+&@#/%?=~_|!:.,;]*[-a-zA-Z0-9+&@#/%=~_|]), context=([-a-zA-Z0-9+/$%~_-|!.]*)><>(processingTime|sessionCounter|rejectedSessions|expiredSessions):'name: tomcat_session_$3_totallabels:context: "$2"host: "$1"help: Tomcat session $3 totaltype: COUNTER
  • 4、收集数据
4-1、Tomcat收集数据
mkdir /usr/local/tomcat_test/jmx/cp jmx_prometheus_javaagent-0.12.0.jar/usr/local/tomcat_test/jmx/cp tomcat.yml/usr/local/tomcat_test/jmx/修改配置文件vim /usr/local/tomcat_test/bin/catalina.sh JAVA_OPTS="-javaagent:/usr/local/tomcat_test/jmx/jmx_prometheus_javaagent-0.12.0.jar=39081:/usr/local/tomcat_test/jmx/tomcat.yml"4-2、JAR包运行(案例,关键文件jmxprometheusjavaagent-0.3.0.jar和tomcat.yml)
java -javaagent:./jmx_prometheus_javaagent-0.3.0.jar=9151:tomcat.yaml -jar yourJar.jar
  • 5、 测试是否收集到数据 curl -s http://localhost:39081/ | more
[root@Prometheus promethus]# curl -s http://localhost:39081/ | more # HELP jmx_exporter_build_info A metric with a constant '1' value labeled with the version of the JMX exporter.# TYPE jmx_exporter_build_info gaugejmx_exporter_build_info{version="0.12.0",name="jmx_prometheus_javaagent",} 1.0# HELP jmx_config_reload_success_total Number of times configuration have successfully been reloaded.# TYPE jmx_config_reload_success_total counterjmx_config_reload_success_total 0.0# HELP jmx_config_reload_failure_total Number of times configuration have failed to be reloaded.# TYPE jmx_config_reload_failure_total counterjmx_config_reload_failure_total 0.0# HELP process_cpu_seconds_total Total user and system CPU time spent in seconds.# TYPE process_cpu_seconds_total counterprocess_cpu_seconds_total 3.99# HELP process_start_time_seconds Start time of the process since unix epoch in seconds.# TYPE process_start_time_seconds gaugeprocess_start_time_seconds 1.582290765496E9# HELP process_open_fds Number of open file descriptors.# TYPE process_open_fds gaugeprocess_open_fds 74.0
Promethues如何监控Tomcat

文章插图
 
二、配置promethus 采集数据
  • 1、文件引用 (本文采用) /usr/local/prometheus/prometheus.yml
- job_name: 'tomcat'file_sd_configs:- files: ['/usr/local/prometheus/conf/tomcat.yml']refresh_interval: 180s/usr/local/prometheus/conf/tomcat.yml/tomcat.yml
【Promethues如何监控Tomcat】- targets:- 114.67.116.119:39081labels:idc: test_idcservice: tomcat_test
  • 2、直接配置
scrape_configs:- job_name: 'java'static_configs:- targets: ['114.67.116.119:39081']