kube-Prometheus监控Tomcat服务
本文最后更新于 527 天前,其中的信息可能已经有所发展或是发生改变。

kube-Prometheus监控Tomcat服务

前言

最近公司某个tomcat集群服务老出问题,问了其他同事有没有Tomcat等应用状态的监控的时候,他们都说这些老服务没上监控。

部署

下载jmx_exporter

我这边使用版本为:0.20.0

下载连接:https://repo.maven.apache.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.20.0/jmx_prometheus_javaagent-0.20.0.jar

配置jmx_exporter

tomcat.yml,参考https://github.com/prometheus/jmx_exporter/blob/release-0.20.0/example_configs/tomcat.yml,记得切换到对应jmx_prometheusrelease,我这边使用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

配置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"

image-20250310145651205

重启服务后查看服务是否正常

使用ps -ef |grep java 命令来检查启动的java应用中是否有 -javaagent。如果有就表示正常,如果没有,请自行排查问题所在,比如路径不对等。

image-20250310145744663

kebe-prometheus的配置

配置ServiceEndpoints
# 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
配置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。

image-20250310150254160

配置grafana

grafana的dashboards编号是8563,添加到grafana中即可。如下图,我这边进行稍微调整

image-20250310150359631

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇