Skip to content

Commit

Permalink
chore: add prometheus connection
Browse files Browse the repository at this point in the history
  • Loading branch information
yashmehrotra authored and moshloop committed Jun 18, 2024
1 parent a686184 commit 8f470d8
Show file tree
Hide file tree
Showing 3 changed files with 90 additions and 25 deletions.
56 changes: 34 additions & 22 deletions charts/kubernetes/templates/_helpers.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -71,16 +71,16 @@ Metrics
- name: cpu
lookup:
prometheus:
- query: '1000 * sum(rate(container_cpu_usage_seconds_total{container!=""{{.Values.prometheusLabels}}}[5m]))'
url: {{ .Values.prometheusURL | quote }}
- query: '1000 * sum(rate(container_cpu_usage_seconds_total{container!=""{{.Values.prometheus.labels | default .Values.prometheusLabels}}}[5m]))'
connection: {{ .Values.prometheus.connection }}
display:
expr: |
[{'name': 'cpu', 'value': int(results[0].value), 'headline': true, 'unit': 'millicores'}].toJSON()
- name: memory
lookup:
prometheus:
- query: 'sum(container_memory_working_set_bytes{container!=""{{.Values.prometheusLabels}}})'
url: {{ .Values.prometheusURL | quote }}
- query: 'sum(container_memory_working_set_bytes{container!=""{{.Values.prometheus.labels | default .Values.prometheusLabels}}})'
connection: {{ .Values.prometheus.connection }}
display:
expr: |
[{'name': 'memory', 'value': int(results[0].value), 'headline': true, 'unit': 'bytes'}].toJSON()
Expand All @@ -92,8 +92,8 @@ Metrics
- name: cpu
lookup:
prometheus:
- query: '1000 * sum(rate(container_cpu_usage_seconds_total{container!=""{{.Values.prometheusLabels}}}[5m])) by (node)'
url: {{ .Values.prometheusURL | quote }}
- query: '1000 * sum(rate(container_cpu_usage_seconds_total{container!=""{{.Values.prometheus.labels | default .Values.prometheusLabels}}}[5m])) by (node)'
connection: {{ .Values.prometheus.connection }}
display:
expr: |
dyn(results).map(r, {
Expand All @@ -103,8 +103,8 @@ Metrics
- name: memory
lookup:
prometheus:
- query: 'sum(container_memory_working_set_bytes{container!="",pod!=""{{.Values.prometheusLabels}}} * on(pod, namespace) group_left kube_pod_status_phase{phase="Running"{{.Values.prometheusLabels}}} > 0) by (node)'
url: {{ .Values.prometheusURL | quote }}
- query: 'sum(container_memory_working_set_bytes{container!="",pod!=""{{.Values.prometheus.labels | default .Values.prometheusLabels}}} * on(pod, namespace) group_left kube_pod_status_phase{phase="Running"{{.Values.prometheus.labels | default .Values.prometheusLabels}}} > 0) by (node)'
connection: {{ .Values.prometheus.connection }}
display:
expr: |
dyn(results).map(r, {
Expand All @@ -115,8 +115,8 @@ Metrics
- name: ephemeral-storage
lookup:
prometheus:
- query: 'max by (instance) (avg_over_time(node_filesystem_avail_bytes{mountpoint="/",fstype!="rootfs"{{.Values.prometheusLabels}}}[5m]))'
url: {{ .Values.prometheusURL | quote }}
- query: 'max by (instance) (avg_over_time(node_filesystem_avail_bytes{mountpoint="/",fstype!="rootfs"{{.Values.prometheus.labels | default .Values.prometheusLabels}}}[5m]))'
connection: {{ .Values.prometheus.connection }}
display:
expr: |
dyn(results).map(r, {
Expand All @@ -130,8 +130,8 @@ Metrics
- name: cpu
lookup:
prometheus:
- query: '1000 * sum(rate(container_cpu_usage_seconds_total{container!=""{{.Values.prometheusLabels}}}[5m])) by (pod)'
url: {{ .Values.prometheusURL | quote }}
- query: '1000 * sum(rate(container_cpu_usage_seconds_total{container!=""{{.Values.prometheus.labels | default .Values.prometheusLabels}}}[5m])) by (pod)'
connection: {{ .Values.prometheus.connection }}
display:
expr: |
dyn(results).map(r, {
Expand All @@ -141,8 +141,8 @@ Metrics
- name: memory
lookup:
prometheus:
- query: 'sum(container_memory_working_set_bytes{container!=""{{.Values.prometheusLabels}}}) by (pod)'
url: {{ .Values.prometheusURL | quote }}
- query: 'sum(container_memory_working_set_bytes{container!=""{{.Values.prometheus.labels | default .Values.prometheusLabels}}}) by (pod)'
connection: {{ .Values.prometheus.connection }}
display:
expr: |
dyn(results).map(r, {
Expand All @@ -156,8 +156,8 @@ Metrics
- name: cpu
lookup:
prometheus:
- query: '1000 * sum(rate(container_cpu_usage_seconds_total{container!=""{{.Values.prometheusLabels}}}[5m])) by (namespace)'
url: {{ .Values.prometheusURL | quote }}
- query: '1000 * sum(rate(container_cpu_usage_seconds_total{container!=""{{.Values.prometheus.labels | default .Values.prometheusLabels}}}[5m])) by (namespace)'
connection: {{ .Values.prometheus.connection }}
display:
expr: |
dyn(results).map(r, {
Expand All @@ -167,8 +167,8 @@ Metrics
- name: memory
lookup:
prometheus:
- query: 'sum(container_memory_working_set_bytes{container!="",pod!=""{{.Values.prometheusLabels}}} * on(pod, namespace) group_left kube_pod_status_phase{phase="Running"{{.Values.prometheusLabels}}} > 0) by (namespace)'
url: {{ .Values.prometheusURL | quote }}
- query: 'sum(container_memory_working_set_bytes{container!="",pod!=""{{.Values.prometheus.labels | default .Values.prometheusLabels}}} * on(pod, namespace) group_left kube_pod_status_phase{phase="Running"{{.Values.prometheus.labels | default .Values.prometheusLabels}}} > 0) by (namespace)'
connection: {{ .Values.prometheus.connection }}
display:
expr: |
dyn(results).map(r, {
Expand All @@ -182,6 +182,9 @@ Metrics
lookup:
kubernetes:
- kind: PodMetrics
{{- with .Values.kubeconfig }}
kubeconfig: {{ toYaml . | nindent 8}}
{{- end}}
display:
expr: |
[
Expand All @@ -195,6 +198,9 @@ Metrics
lookup:
kubernetes:
- kind: NodeMetrics
{{- with .Values.kubeconfig }}
kubeconfig: {{ toYaml . | nindent 10}}
{{- end}}
display:
expr: |
dyn(results).map(r, r.Object).map(r, {
Expand All @@ -210,6 +216,9 @@ Metrics
lookup:
kubernetes:
- kind: PodMetrics
{{- with .Values.kubeconfig }}
kubeconfig: {{ toYaml . | nindent 10}}
{{- end}}
display:
expr: |
dyn(results).map(r, r.Object).map(r, {
Expand All @@ -225,6 +234,9 @@ Metrics
lookup:
kubernetes:
- kind: PodMetrics
{{- with .Values.kubeconfig }}
kubeconfig: {{ toYaml . | nindent 10}}
{{- end}}
namespaceSelector:
name: '$(.component.name)'
test:
Expand All @@ -239,31 +251,31 @@ Metrics
{{- end }}

{{- define "kubernetes.topology.metricProperties.cluster" -}}
{{- if .Values.prometheusURL }}
{{- if (.Values.prometheus.url | default .Values.prometheusURL) }}
{{- include "kubernetes.topology.metricProperties.prometheus.cluster" . }}
{{- else if .Values.metrics.enabled }}
{{- include "kubernetes.topology.metricProperties.k8sMetrics.cluster" . }}
{{- end }}
{{- end }}

{{- define "kubernetes.topology.metricProperties.node" -}}
{{- if .Values.prometheusURL }}
{{- if (.Values.prometheus.url | default .Values.prometheusURL) }}
{{- include "kubernetes.topology.metricProperties.prometheus.node" . }}
{{- else if .Values.metrics.enabled }}
{{- include "kubernetes.topology.metricProperties.k8sMetrics.node" . }}
{{- end }}
{{- end }}

{{- define "kubernetes.topology.metricProperties.pod" -}}
{{- if .Values.prometheusURL }}
{{- if (.Values.prometheus.url | default .Values.prometheusURL) }}
{{- include "kubernetes.topology.metricProperties.prometheus.pod" . }}
{{- else if .Values.metrics.enabled }}
{{- include "kubernetes.topology.metricProperties.k8sMetrics.pod" . }}
{{- end }}
{{- end }}

{{- define "kubernetes.topology.metricProperties.namespace" -}}
{{- if .Values.prometheusURL }}
{{- if (.Values.prometheus.url | default .Values.prometheusURL) }}
{{- include "kubernetes.topology.metricProperties.prometheus.namespace" . }}
{{- else if .Values.metrics.enabled }}
{{- include "kubernetes.topology.metricProperties.k8sMetrics.namespace" . }}
Expand Down
13 changes: 13 additions & 0 deletions charts/kubernetes/templates/topology.yaml
Original file line number Diff line number Diff line change
@@ -1,3 +1,16 @@
---
apiVersion: mission-control.flanksource.com/v1
kind: Connection
metadata:
name: {{ .Values.prometheus.connection }}
spec:
prometheus:
url: {{ .Values.prometheus.url | default .Values.prometheusURL }}
{{- if .Values.prometheus.auth }}
auth:
{{ .Values.prometheus.auth | toYaml | nindent 6}}
{{- end }}
---
apiVersion: canaries.flanksource.com/v1
kind: Topology
metadata:
Expand Down
46 changes: 43 additions & 3 deletions charts/kubernetes/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,53 @@ labels: {}
kubeconfig: {}

clusterName: kubernetes
prometheusURL: ""
# prometheusLabels to inject: "label1=key1,label2=key2,label3=~key3"
prometheusLabels: ""

metrics:
enabled: true

# Deprecated: use prometheus.url instead
prometheusURL: ""

# Deprecated: use prometheus.labels instead
prometheusLabels: ""

prometheus:
connection: prometheus
url: ''
# prometheus labels to inject: "label1=key1,label2=key2,label3=~key3"
labels: ''
# Leave auth blank or use one of [username+password / bearer / oauth]
auth:
# username:
# valueFrom:
# secretKeyRef:
# name:
# key:
# password:
# valueFrom:
# secretKeyRef:
# name:
# key:
# bearer:
# valueFrom:
# secretKeyRef:
# name:
# key:
# oauth:
# username:
# valueFrom:
# secretKeyRef:
# name:
# key:
# password:
# valueFrom:
# secretKeyRef:
# name:
# key:
# scopes: []
# tokenURL: ''
# params: {}

topology:
name: cluster
schedule: "@every 5m"
Expand Down

0 comments on commit 8f470d8

Please sign in to comment.