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 }}