integrations/jetty/documentation.yaml (238 lines of code) (raw):
exporter_type: sidecar
app_name_short: Jetty
app_name: {{app_name_short}}
app_site_name: {{app_name}}
app_site_url: https://www.eclipse.org/jetty/
exporter_name: the JMX exporter
exporter_pkg_name: jmx-exporter
exporter_repo_url: https://github.com/bitnami/containers/tree/main/bitnami/jmx-exporter
dashboard_available: true
minimum_exporter_version: "0.17.0"
multiple_dashboards: false
dashboard_display_name: {{app_name_short}} Prometheus Overview
config_mods: |
apiVersion: v1
kind: ConfigMap
metadata:
name: jetty-exporter
data:
config.yaml: |
hostPort: 127.0.0.1:1099
rules:
- pattern: "org.eclipse.jetty.deploy<(.*)><>(.*)"
name: "jetty_deploy_$2"
labels:
labelList: "$1"
- pattern: "org.eclipse.jetty.deploy.providers<type=(\\w+), id=(\\d+)><>(\\w+)"
name: "jetty_deploy_providers_$3"
labels:
id: "$2"
type: "$1"
- pattern: "org.eclipse.jetty.io<context=(.*), type=(.*), id=(\\d+)><>(\\w+)"
name: "jetty_io_$4"
labels:
id: "$3"
type: "$2"
context: "$1"
- pattern: "org.eclipse.jetty.io<type=(.*), id=(\\d+)><>(\\w+)"
name: "jetty_io_$3"
labels:
id: "$2"
type: "$1"
- pattern: "org.eclipse.jetty.jmx<type=(\\w+), id=(\\d+)><>(\\w+)"
name: "jetty_jmx_$3"
labels:
id: "$2"
type: "$1"
- pattern: "org.eclipse.jetty.logging<type=(\\w+), id=(\\d+)><>(\\w+)"
name: "jetty_logging_$3"
labels:
id: "$2"
type: "$1"
- pattern: "org.eclipse.jetty.server<type=(\\w+), id=(\\d+)><>(\\w+)"
name: "jetty_server_$3"
labels:
id: "$2"
type: "$1"
- pattern: "org.eclipse.jetty.server<context=(.*), type=(.*), id=(\\d+)><>(\\w+)"
name: "jetty_server_$4"
labels:
id: "$3"
type: "$2"
context: "$1"
- pattern: "org.eclipse.jetty.server.handler<type=(\\w+), id=(\\d+)><>(\\w+)"
name: "jetty_server_handler_$3"
labels:
id: "$2"
type: "$1"
- pattern: "org.eclipse.jetty.server.session<type=(.*), id=(\\d+)><>(\\w+)"
name: "jetty_server_session_$3"
labels:
id: "$2"
type: "$1"
- pattern: "org.eclipse.jetty.server.session<context=(.*), type=(.*), id=(\\d+)><>(\\w+)"
name: "jetty_server_session_$4"
labels:
id: "$3"
type: "$2"
context: "$1"
- pattern: "org.eclipse.jetty.util<type=(\\w+), id=(\\d+)><>(\\w+)"
name: "jetty_util_$3"
labels:
id: "$2"
type: "$1"
- pattern: "org.eclipse.jetty.util.component<type=(\\w+), id=(\\d+)><>(\\w+)"
name: "jetty_util_component_$3"
labels:
id: "$2"
type: "$1"
- pattern: "org.eclipse.jetty.servlet<context=(.*), type=(\\w+), id=(\\d+)><>(\\w+)"
name: "jetty_servlet_$4"
labels:
id: "$3"
type: "$2"
context: "$1"
- pattern: "org.eclipse.jetty.servlet<context=(.*), type=(\\w+), name=(\\w+), id=(\\d+)><>(\\w+)"
name: "jetty_servlet_$5"
labels:
id: "$4"
type: "$2"
name: "$3"
context: "$1"
- pattern: "org.eclipse.jetty.util.thread<type=(\\w+), id=(\\d+)><>(\\w+)"
name: "jetty_util_thread_$3"
labels:
id: "$2"
type: "$1"
- pattern: "org.eclipse.jetty.util.thread.strategy<context=(.*), type=(\\w+), id=(\\d+)><>(\\w+)"
name: "jetty_util_thread_strategy_$4"
labels:
id: "$3"
type: "$2"
context: "$1"
- pattern: "org.eclipse.jetty.webapp<context=(.*), type=(\\w+), id=(\\d+)><>(\\w+)"
name: "jetty_webapp_$4"
labels:
id: "$3"
type: "$2"
context: "$1"
- pattern: "org.eclipse.jetty.websocket.common<context=(.*), type=(\\w+), id=(\\d+)><>(\\w+)"
name: "jetty_websocket_jakarta_common_$4"
labels:
id: "$3"
type: "$2"
context: "$1"
- pattern: "org.eclipse.jetty.websocket.jakarta.common<context=(.*), type=(\\w+), id=(\\d+)><>(\\w+)"
name: "jetty_websocket_jakarta_common_$4"
labels:
id: "$3"
type: "$2"
context: "$1"
- pattern: "org.eclipse.jetty.(.*)"
name: jetty_metric_$1
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: jetty
spec:
selector:
matchLabels:
+ app.kubernetes.io/name: jetty
replicas: 1
template:
metadata:
labels:
+ app.kubernetes.io/name: jetty
spec:
containers:
- name: jetty
image: jetty:11-jdk17-alpine
+ ports:
+ - containerPort: 1099
+ name: jmx
+ env:
+ - name: JAVA_OPTIONS
+ value: "-Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.rmi.port=1099"
+ args:
+ - "--module=jmx"
+ - "jetty.threadPool.maxThreads=500"
+ - name: exporter
+ image: bitnami/jmx-exporter:0.17.0
+ ports:
+ - containerPort: 9000
+ name: prometheus
+ command:
+ - java
+ - -jar
+ - jmx_prometheus_httpserver.jar
+ args:
+ - "9000"
+ - /opt/jmx_exporter/config.yaml
+ volumeMounts:
+ - mountPath: /opt/jmx_exporter/config.yaml
+ subPath: config.yaml
+ name: jetty-exporter
+ volumes:
+ - name: jetty-exporter
+ configMap:
+ name: jetty-exporter
+ items:
+ - key: config.yaml
+ path: config.yaml
---
podmonitoring_config: |
apiVersion: monitoring.googleapis.com/v1
kind: PodMonitoring
metadata:
name: jetty
labels:
app.kubernetes.io/name: jetty
app.kubernetes.io/part-of: google-cloud-managed-prometheus
spec:
endpoints:
- port: prometheus
scheme: http
interval: 30s
path: /metrics
selector:
matchLabels:
app.kubernetes.io/name: jetty
sample_promql_query: up{job="jetty", cluster="{{cluster_name}}", namespace="{{namespace_name}}"}
alerts_config: |
apiVersion: monitoring.googleapis.com/v1
kind: Rules
metadata:
name: jetty-rules
labels:
app.kubernetes.io/component: rules
app.kubernetes.io/name: jetty-rules
app.kubernetes.io/part-of: google-cloud-managed-prometheus
spec:
groups:
- name: jetty
interval: 30s
rules:
- alert: JettyLongThreadQueue
annotations:
description: |-
Jetty long thread queue
VALUE = {{ $value }}
LABELS: {{ $labels }}
summary: Jetty long thread queue (instance {{ $labels.instance }})
expr: jetty_util_thread_queueSize >= 10
for: 5m
labels:
severity: critical
- alert: JettyNoThreadsAvailable
annotations:
description: |-
Jetty no threads available
VALUE = {{ $value }}
LABELS: {{ $labels }}
summary: Jetty no threads available (instance {{ $labels.instance }})
expr: jetty_util_thread_idleThreads == 0
for: 5m
labels:
severity: critical
additional_alert_info: You can adjust the alert thresholds to suit your application.