Skip to content

Commit

Permalink
Add jmx-exporter monitoring functionality with servicemonitor
Browse files Browse the repository at this point in the history
  • Loading branch information
azisi committed Jan 30, 2023
1 parent 549224c commit a3ae5db
Show file tree
Hide file tree
Showing 8 changed files with 211 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@ data:
-XX:+HeapDumpOnOutOfMemoryError
-XX:+ExitOnOutOfMemoryError
-Djdk.attach.allowAttachSelf=true
{{- if .Values.jmx-exporter.enabled }}
-javaagent:{{ .Values.jmx-exporter.path }}/{{ .Values.jmx-exporter.jarfile }}={{ .Values.jmx-exporter.port }}:{{ .Values.jmx-exporter.path }}/etc/trino.yaml
{{- end }}
{{ .Values.config.coordinator.jvmExtraConfig | indent 4 }}

config.properties: |
Expand Down
63 changes: 63 additions & 0 deletions valeriano-manassero/trino/templates/configmap-jmx-exporter.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
{{- if .Values.jmx-exporter.enabled }}
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ template "trino.fullname" . }}-jmx-exporter
labels:
{{- include "trino.labels" . | nindent 4 }}
data:
trino.yaml: |
startDelaySeconds: 5
rules:
- pattern : trino.execution<name=SqlTaskManager><>InputDataSize.OneMinute.Count
name: trino_coord_Input_bytes_sci
- pattern : trino.execution<name=SqlTaskManager><>InputPositions.OneMinute.Count
name: trino_coord_Input_rows
- pattern : trino.execution<name=SqlTaskManager><>OutputDataSize.OneMinute.Count
name: trino_coord_Output_bytes_sci
- pattern : trino.execution<name=SqlTaskManager><>OutputPositions.OneMinute.Count
name: trino_coord_Output_rows
- pattern : trino.memory<type=ClusterMemoryPool, name=general><>TotalDistributedBytes
name: trino_TotalDistributedBytes
- pattern : trino.memory<type=ClusterMemoryPool, name=general><>ReservedDistributedBytes
name: trino_ReservedDistributedBytes
- pattern : trino.execution<name=QueryManager><>FailedQueries.OneMinute.Count
name: trino_Failed_Queries
- pattern : trino.execution<name=QueryManager><>RunningQueries
name: trino_running_queries
- pattern : trino.failuredetector<name=HeartbeatFailureDetector><>ActiveCount
name: trino_active_nodes
- pattern : trino.memory<type=ClusterMemoryPool, name=general><>FreeDistributedBytes
name: trino_cluster_free_memory
- pattern : trino.execution<name=QueryExecution><>Executor.QueuedTaskCount
name: trino_queued_task_count
- pattern : trino.execution<name=QueryManager><>StartedQueries.FiveMinute.Count
name: trino_started_queries
- pattern : java.lang<type=Memory><HeapMemoryUsage>committed
name: trino_jvm_heap_memory_usage
- pattern : java.lang<type=Threading><>ThreadCount
name: trino_jvm_thread_count
- pattern : trino.execution<name=QueryManager><>InternalFailures.OneMinute.Count
name: trino_failed_queries_internal
- pattern : trino.execution<name=QueryManager><>ExternalFailures.OneMinute.Count
name: trino_failed_queries_external
- pattern : trino.execution<name=QueryManager><>UserErrorFailures.OneMinute.Count
name: trino_failed_queries_user
{{- end }}
35 changes: 35 additions & 0 deletions valeriano-manassero/trino/templates/deployment-coordinator.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,13 @@ spec:
persistentVolumeClaim:
claimName: {{ .Values.groupProvider.pvcName }}
{{- end }}{{- end }}
{{- if .Values.jmx-exporter.enabled }}
- name: jmx-exporter-config
configMap:
name: {{ template "trino.fullname" . }}-jmx-exporter
{{- end }}
- name: jmx-exporter-lib
emptyDir: {}
{{- range .Values.secretMounts }}
- name: {{ .name }}
secret:
Expand All @@ -99,6 +106,23 @@ spec:
{{- end }}
{{- if or .Values.config.coordinator.initContainers (include "trino.tlsEncryption" . ) }}
initContainers:
{{- if .Values.jmx-exporter.enabled }}
- name: download-jmx-exporter
image: {{ .Values.jmx-exporter.image.repository }}:{{ .Values.jmx-exporter.image.tag }}
imagePullPolicy: {{ .Values.jmx-exporter.image.pullPolicy }}
{{- with .Values.image.securityContext }}
securityContext:
runAsUser: {{ .runAsUser }}
runAsGroup: {{ .runAsGroup }}
{{- end }}
args:
- "-o"
- "/jmx-exporter/lib/"
- "https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.17.2/jmx_prometheus_javaagent-0.17.2.jar"
volumeMounts:
- name: jmx-exporter-lib
mountPath: /jmx-exporter/lib/
{{- end }}
{{- if (include "trino.tlsEncryption" . ) }}
- name: init-certs
image: {{ .Values.initKeystore.image.repository }}:{{ .Values.initKeystore.image.tag }}
Expand Down Expand Up @@ -211,6 +235,12 @@ spec:
- mountPath: {{ .Values.config.general.path }}/group-provider
name: {{ .Values.groupProvider.pvcVolumeName | default "group-provider-pvc-volume" }}
{{- end }}{{- end }}
{{- if .Values.jmx-exporter.enabled }}
- mountPath: {{ .Values.jmx-exporter.path }}/etc/
name: jmx-exporter-config
- name: jmx-exporter-lib
mountPath: /jmx-exporter/lib/
{{- end }}
{{- range .Values.secretMounts }}
- name: {{ .name }}
mountPath: {{ .path }}
Expand All @@ -234,6 +264,11 @@ spec:
containerPort: {{ .Values.config.general.httpsServer.port }}
protocol: TCP
{{- end }}
{{- if .Values.jmx-exporter.enabled }}
- name: jmx-exporter
containerPort: {{ .Values.jmx-exporter.port | default 9000 }}
protocol: TCP
{{- end }}
livenessProbe:
httpGet:
path: /v1/status
Expand Down
18 changes: 18 additions & 0 deletions valeriano-manassero/trino/templates/service-worker.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{{- if .Values.jmx-exporter.enabled }}
apiVersion: v1
kind: Service
metadata:
name: {{ template "trino.worker" . }}
labels:
{{- include "trino.labels" . | nindent 4 }}
spec:
type: {{ .Values.service.type }}
ports:
- port: {{ .Values.jmx-exporter.port | default 9000 }}
targetPort: jmx-exporter
protocol: TCP
name: jmx-exporter
selector:
{{- include "trino.selectorLabels" . | nindent 4 }}
app.kubernetes.io/component: worker
{{- end }}
6 changes: 6 additions & 0 deletions valeriano-manassero/trino/templates/service.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,12 @@ spec:
protocol: TCP
name: https-coord
{{- end }}
{{- if .Values.jmx-exporter.enabled }}
- port: {{ .Values.jmx-exporter.port | default 9000 }}
targetPort: jmx-exporter
protocol: TCP
name: jmx-exporter
{{- end }}
selector:
{{- include "trino.selectorLabels" . | nindent 4 }}
app.kubernetes.io/component: coordinator
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
{{- if.Values.jmx-exporter.serviceMonitor.enabled -}}
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: {{ template "trino.coordinator" . }}
labels:
{{- include "trino.labels" . | nindent 4 }}
spec:
jobLabel: {{ .Release.Name }}-coordinator
namespaceSelector:
matchNames:
- {{ .Release.Namespace }}
selector:
matchLabels:
{{- include "this.selectorLabels" . | nindent 6 }}
app.kubernetes.io/component: coordinator
endpoints:
- port: {{ .Values.jmx-exporter.serviceMonitor.port }}
{{- with .Values.jmx-exporter.serviceMonitor.path }}
path: {{ . }}
{{- end }}
{{- with .Values.jmx-exporter.serviceMonitor.interval }}
interval: {{ . }}
{{- end }}
{{- with .Values.jmx-exporter.serviceMonitor.scrapeTimeout }}
scrapeTimeout: {{ . }}
{{- end }}
{{- with .Values.jmx-exporter.serviceMonitor.relabelings }}
relabelings:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- end }}
32 changes: 32 additions & 0 deletions valeriano-manassero/trino/templates/servicemonitor-worker.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
{{- if.Values.jmx-exporter.serviceMonitor.enabled -}}
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: {{ template "trino.worker" . }}
labels:
{{- include "trino.labels" . | nindent 4 }}
spec:
jobLabel: {{ .Release.Name }}-worker
namespaceSelector:
matchNames:
- {{ .Release.Namespace }}
selector:
matchLabels:
{{- include "this.selectorLabels" . | nindent 6 }}
app.kubernetes.io/component: worker
endpoints:
- port: {{ .Values.jmx-exporter.serviceMonitor.port }}
{{- with .Values.jmx-exporter.serviceMonitor.path }}
path: {{ . }}
{{- end }}
{{- with .Values.jmx-exporter.serviceMonitor.interval }}
interval: {{ . }}
{{- end }}
{{- with .Values.jmx-exporter.serviceMonitor.scrapeTimeout }}
scrapeTimeout: {{ . }}
{{- end }}
{{- with .Values.jmx-exporter.serviceMonitor.relabelings }}
relabelings:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- end }}
22 changes: 22 additions & 0 deletions valeriano-manassero/trino/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -449,3 +449,25 @@ tls:
# requests:
# cpu: 100m
# memory: 128Mi

jmx-exporter:
enable: true
port: 9000
path: /prometheus
jarfile: jmx_prometheus_javaagent-0.17.2.jar
image:
repository: curlimages/curl
tag: 7.87.0
pullPolicy: IfNotPresent
serviceMonitor:
enabled: false
port: "jmx-exporter"
additionalLabels: {}
interval: 1m
scrapeTimeout: 10s
path: /metrics
# Additional relabeling configs to the ones that Prometheus Operator
# creates by default.
# relabelings:
# - sourceLabels: [__meta_kubernetes_endpoints_label_app_kubernetes_io_version]
# targetLabel: version

0 comments on commit a3ae5db

Please sign in to comment.