Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save devops-school/adb59604f652e44d27513014c62abd32 to your computer and use it in GitHub Desktop.
Save devops-school/adb59604f652e44d27513014c62abd32 to your computer and use it in GitHub Desktop.

Revisions

  1. devops-school created this gist Mar 31, 2020.
    101 changes: 101 additions & 0 deletions Example-prometheus-Recording-Rule.yaml
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,101 @@
    Recording Rule Example 1
    ================================
    # Aggregating up requests per second that has a path label:
    - record: instance_path:requests:rate5m
    expr: rate(requests_total{job="myjob"}[5m])

    - record: path:requests:rate5m
    expr: sum without (instance)(instance_path:requests:rate5m{job="myjob"})

    Recording Rule Example 2
    ================================
    # Calculating a request failure ratio and aggregating up to the job-level failure ratio:
    - record: instance_path:request_failures:rate5m
    expr: rate(request_failures_total{job="myjob"}[5m])

    - record: instance_path:request_failures_per_requests:ratio_rate5m
    expr: |2
    instance_path:request_failures:rate5m{job="myjob"}
    /
    instance_path:requests:rate5m{job="myjob"}
    # Aggregate up numerator and denominator, then divide to get path-level ratio.
    - record: path:request_failures_per_requests:ratio_rate5m
    expr: |2
    sum without (instance)(instance_path:request_failures:rate5m{job="myjob"})
    /
    sum without (instance)(instance_path:requests:rate5m{job="myjob"})
    # No labels left from instrumentation or distinguishing instances,
    # so we use 'job' as the level.
    - record: job:request_failures_per_requests:ratio_rate5m
    expr: |2
    sum without (instance, path)(instance_path:request_failures:rate5m{job="myjob"})
    /
    sum without (instance, path)(instance_path:requests:rate5m{job="myjob"})
    Recording Rule Example 3
    ================================
    # Calculating average latency over a time period from a Summary:

    - record: instance_path:request_latency_seconds_count:rate5m
    expr: rate(request_latency_seconds_count{job="myjob"}[5m])

    - record: instance_path:request_latency_seconds_sum:rate5m
    expr: rate(request_latency_seconds_sum{job="myjob"}[5m])

    - record: instance_path:request_latency_seconds:mean5m
    expr: |2
    instance_path:request_latency_seconds_sum:rate5m{job="myjob"}
    /
    instance_path:request_latency_seconds_count:rate5m{job="myjob"}
    # Aggregate up numerator and denominator, then divide.
    - record: path:request_latency_seconds:mean5m
    expr: |2
    sum without (instance)(instance_path:request_latency_seconds_sum:rate5m{job="myjob"})
    /
    sum without (instance)(instance_path:request_latency_seconds_count:rate5m{job="myjob"})
    Recording Rule Example 5
    ================================
    # Calculating the average query rate across instances and paths is done using the avg() function:

    - record: job:request_latency_seconds_count:avg_rate5m
    expr: avg without (instance, path)(instance:request_latency_seconds_count:rate5m{job="myjob"})

    Recording Rule Example 6
    ================================
    groups:
    - name: custom_rules
    rules:
    - record: node_memory_MemFree_percent
    expr: 100 - (100 * node_memory_MemFree_bytes / node_memory_MemTotal_bytes)

    - record: node_filesystem_free_percent
    expr: 100 * node_filesystem_free_bytes{mountpoint="/"} / node_filesystem_size_bytes{mountpoint="/"}


    Recording Rule Example 7
    ================================
    groups:
    - name: recording_rules
    interval: 5s
    rules:
    - record: node_exporter:node_filesystem_free:fs_used_percents
    expr: 100 - 100 * ( node_filesystem_free{mountpoint="/"} / node_filesystem_size{mountpoint="/"} )

    - record: node_exporter:node_memory_free:memory_used_percents
    expr: 100 - 100 * (node_memory_MemFree / node_memory_MemTotal)

    Recording Rule Example 8
    ================================
    groups:
    - name: custom_rules
    rules:
    - record: node_memory_MemFree_percent
    expr: 100 - (100 * node_memory_MemFree_bytes / node_memory_MemTotal_bytes)
    - record: node_filesystem_free_percent expr: 100 * node_filesystem_free_bytes{mountpoint="/"} / node_filesystem_size_bytes

    {mountpoint="/"}