-
创建者:
虚拟的现实,上次更新时间:9月 24, 2025 需要 2 分钟阅读时间
1. 下载 jmx_exporter
使用版本为:0.20.0
2. 配置jmx_exporter
参考 https://github.com/prometheus/jmx_exporter/blob/release-0.20.0/example_configs/tomcat.yml
记得切换到对应jmx_prometheus的release,我这边使用0.20.0
# https://grafana.com/grafana/dashboards/8704-tomcat-dashboard/ --- lowercaseOutputLabelNames: true lowercaseOutputName: true rules: - pattern: 'Catalina<type=GlobalRequestProcessor, name=\"(\w+-\w+)-(\d+)\"><>(\w+):' name: tomcat_$3_total labels: port: "$2" protocol: "$1" help: Tomcat global $3 type: 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_total labels: module: "$1" servlet: "$2" help: Tomcat servlet $3 total type: COUNTER - pattern: 'Catalina<type=ThreadPool, name="(\w+-\w+)-(\d+)"><>(currentThreadCount|currentThreadsBusy|keepAliveCount|pollerThreadCount|connectionCount):' name: tomcat_threadpool_$3 labels: port: "$2" protocol: "$1" help: Tomcat threadpool $3 type: 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_total labels: context: "$2" host: "$1" help: Tomcat session $3 total type: COUNTER
3. 配置tomcat
修改文件:tomcat/bin/catalina.sh
JAVA_OPTS="$JAVA_OPTS -javaagent:/home/tomcat/jmx_prometheus_javaagent-0.20.0.jar=29400:/home/tomcat/jmx-exporter.yaml"
重启服务后查看服务是否正常
使用 ps -ef |grep java 命令来检查启动的java应用中是否有 -javaagent。如果有就表示正常,如果没有,请自行排查问题所在,比如路径不对等。
4. kebe-prometheus 的配置
4.1. 配置Service与Endpoints
# http://10.194.106.16:29400/metrics apiVersion: v1 kind: Service metadata: name: monitoring-external-jvm-exporter labels: app: java type: jvm-exporter namespace: monitoring spec: type: ClusterIP ports: - name: http-metrics port: 29400 protocol: TCP targetPort: 29400 --- apiVersion: v1 kind: Endpoints metadata: name: monitoring-external-jvm-exporter labels: app: java type: jvm-exporter namespace: monitoring subsets: - addresses: - ip: 10.194.106.16 ports: - name: http-metrics port: 29400 protocol: TCP
4.2. 配置ServiceMonitor
apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: labels: app: jvm-monitor release: monitoring name: jvm-monitor namespace: monitoring spec: endpoints: - port: http-metrics interval: 30s path: /metrics honorLabels: true selector: matchLabels: app: java type: jvm-exporter namespaceSelector: matchNames: - monitoring
执行yaml后检查 Endpoints 状态:kubectl get endpoints -n monitoring monitoring-external-jvm-exporter,确认 ENDPOINTS 列显示 10.194.106.16:29400 且状态正常。
验证 Service 关联性:kubectl describe svc -n monitoring monitoring-external-jvm-exporter,查看 Endpoints 部分是否关联到正确的 IP。
5. 配置 grafana
grafana 的 dashboards 编号是8563,添加到 grafana 中即可。如下图,可进行稍微调整
- 无标签
0 评论