github.com/grafana/pyroscope@v1.18.0/operations/monitoring/helm/pyroscope-monitoring/templates/_rules.tpl (about) 1 {{/* 2 Config Map content for rules provisioning 3 */}} 4 {{- define "pyroscope-monitoring.rules-configmap" -}} 5 {{/* 6 List of rules 7 */}} 8 data: 9 prometheus.yaml: | 10 --- 11 otlp: 12 keep_identifying_resource_attributes: true 13 # Recommended attributes to be promoted to labels. 14 promote_resource_attributes: 15 - service.instance.id 16 - service.name 17 - service.namespace 18 - service.version 19 - cloud.availability_zone 20 - cloud.region 21 - container.name 22 - deployment.environment.name 23 - k8s.cluster.name 24 - k8s.container.name 25 - k8s.cronjob.name 26 - k8s.daemonset.name 27 - k8s.deployment.name 28 - k8s.job.name 29 - k8s.namespace.name 30 - k8s.pod.name 31 - k8s.replicaset.name 32 - k8s.statefulset.name 33 34 storage: 35 tsdb: 36 # A 10min time window is enough because it can easily absorb retries and network delays. 37 out_of_order_time_window: 10m 38 rule_files: 39 - "/prometheus-rules/*.rules.yaml" 40 41 k8s-rules-pod-owner.rules.yaml: | 42 groups: 43 - name: k8s.rules.pod_owner 44 rules: 45 - expr: | 46 max by (cluster, namespace, workload, pod) ( 47 label_replace( 48 label_replace( 49 kube_pod_owner{{ "{" }}{{ .Values.dashboards.kubeStateMetricsSelector }}, owner_kind="ReplicaSet"}, 50 "replicaset", "$1", "owner_name", "(.*)" 51 ) * on(replicaset, namespace) group_left(owner_name) topk by(replicaset, namespace) ( 52 1, max by (replicaset, namespace, owner_name) ( 53 kube_replicaset_owner{{ "{" }}{{ .Values.dashboards.kubeStateMetricsSelector }}} 54 ) 55 ), 56 "workload", "$1", "owner_name", "(.*)" 57 ) 58 ) 59 labels: 60 workload_type: deployment 61 record: namespace_workload_pod:kube_pod_owner:relabel 62 - expr: | 63 max by (cluster, namespace, workload, pod) ( 64 label_replace( 65 kube_pod_owner{{ "{" }}{{ .Values.dashboards.kubeStateMetricsSelector }}, owner_kind="DaemonSet"}, 66 "workload", "$1", "owner_name", "(.*)" 67 ) 68 ) 69 labels: 70 workload_type: daemonset 71 record: namespace_workload_pod:kube_pod_owner:relabel 72 - expr: | 73 max by (cluster, namespace, workload, pod) ( 74 label_replace( 75 kube_pod_owner{{ "{" }}{{ .Values.dashboards.kubeStateMetricsSelector }}, owner_kind="StatefulSet"}, 76 "workload", "$1", "owner_name", "(.*)" 77 ) 78 ) 79 labels: 80 workload_type: statefulset 81 record: namespace_workload_pod:kube_pod_owner:relabel 82 - expr: | 83 max by (cluster, namespace, workload, pod) ( 84 label_replace( 85 kube_pod_owner{{ "{" }}{{ .Values.dashboards.kubeStateMetricsSelector }}, owner_kind="Job"}, 86 "workload", "$1", "owner_name", "(.*)" 87 ) 88 ) 89 labels: 90 workload_type: job 91 record: namespace_workload_pod:kube_pod_owner:relabel 92 k8s-rules-pod-container-cpu-usage-seconds-total.rules.yaml: | 93 groups: 94 - name: k8s.rules.container_cpu_usage_seconds_total 95 rules: 96 - expr: > 97 sum by (cluster, namespace, pod, container) ( 98 rate(container_cpu_usage_seconds_total{{ "{" }}{{ .Values.dashboards.cadvisorSelector }}, image!=""}[5m]) 99 ) * on (cluster, namespace, pod) group_left(node) topk by (cluster, 100 namespace, pod) ( 101 1, max by(cluster, namespace, pod, node) (kube_pod_info{node!=""}) 102 ) 103 record: node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m 104 - expr: > 105 sum by (cluster, namespace, pod, container) ( 106 irate(container_cpu_usage_seconds_total{{ "{" }}{{ .Values.dashboards.cadvisorSelector }}, image!=""}[5m]) 107 ) * on (cluster, namespace, pod) group_left(node) topk by (cluster, 108 namespace, pod) ( 109 1, max by(cluster, namespace, pod, node) (kube_pod_info{node!=""}) 110 ) 111 record: node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate 112 {{- end }} 113 114 {{/* 115 Get hash across all rules 116 */}} 117 {{- define "pyroscope-monitoring.rules-hash" -}} 118 {{- include "pyroscope-monitoring.rules-configmap" . | sha256sum }} 119 {{- end }}