policy-rs 1.8.1

Policy library for working with protobuf-defined policy objects
{
  "policies": [
    {
      "id": "drop-echo-logs",
      "name": "drop-echo-logs",
      "log": {
        "match": [{ "log_attribute": "ddsource", "regex": "nginx" }],
        "keep": "none"
      }
    },
    {
      "id": "drop-debug-logs",
      "name": "drop-debug-logs",
      "log": {
        "match": [
          { "log_field": "body", "regex": "debug" },
          { "log_field": "body", "regex": "trace" }
        ],
        "keep": "none"
      }
    },
    {
      "id": "drop-no-such-file-or-directory-logs",
      "name": "drop-no-such-file-or-directory-logs",
      "log": {
        "match": [
          { "log_field": "body", "regex": "no such file or directory" }
        ],
        "keep": "none"
      }
    },
    {
      "id": "drop-debug-level",
      "name": "drop-debug-level",
      "log": {
        "match": [{ "log_field": "severity_text", "regex": "DEBUG" }],
        "keep": "none"
      }
    },
    {
      "id": "drop-edge-logs",
      "name": "drop-edge-logs",
      "log": {
        "match": [
          { "resource_attribute": "service.name", "regex": "^.*edge$" }
        ],
        "keep": "none"
      }
    },
    {
      "id": "keep-error-logs",
      "name": "keep-error-logs",
      "log": {
        "match": [
          { "log_field": "severity_text", "regex": "error" },
          { "log_field": "severity_text", "regex": "critical" },
          { "log_field": "severity_text", "regex": "fatal" }
        ],
        "keep": "all"
      }
    },
    {
      "id": "drop-system-load-metric",
      "name": "drop-system-load-metric",
      "metric": {
        "match": [{ "metric_field": "name", "regex": "^.*system.load.*$" }],
        "keep": false
      }
    },
    {
      "id": "drop-promhttp",
      "name": "drop-promhttp",
      "metric": {
        "match": [{ "metric_field": "name", "regex": "^promhttp.*$" }],
        "keep": false
      }
    },
    {
      "id": "drop-otelgen-metric",
      "name": "drop-otelgen-metric",
      "metric": {
        "match": [{ "metric_field": "name", "regex": "^.*otelgen.*$" }],
        "keep": false
      }
    },
    {
      "id": "drop-logs-datatype-metric",
      "name": "drop-logs-datatype-metric",
      "metric": {
        "match": [{ "datapoint_attribute": "data_type", "exact": "logs" }],
        "keep": false
      }
    },
    {
      "id": "sample-ping-spans-by-name",
      "name": "Sample ping spans at 50% by span name",
      "trace": {
        "match": [{ "trace_field": "TRACE_FIELD_NAME", "regex": "^ping$" }],
        "keep": {
          "percentage": 50.0,
          "mode": "SAMPLING_MODE_HASH_SEED",
          "sampling_precision": 4
        }
      }
    },
    {
      "id": "sample-pong-spans-by-resource",
      "name": "Sample pong spans from test-service at 25%",
      "trace": {
        "match": [
          { "trace_field": "TRACE_FIELD_NAME", "regex": "^pong$" },
          { "resource_attribute": "service.name", "regex": "^test-service$" }
        ],
        "keep": {
          "percentage": 25.0,
          "mode": "SAMPLING_MODE_PROPORTIONAL",
          "sampling_precision": 6
        }
      }
    },
    {
      "id": "sample-internal-spans-by-kind",
      "name": "Sample internal spans at 75%",
      "trace": {
        "match": [{ "span_kind": "SPAN_KIND_INTERNAL", "exists": true }],
        "keep": {
          "percentage": 75.0,
          "mode": "SAMPLING_MODE_EQUALIZING"
        }
      }
    },
    {
      "id": "sample-spans-with-peer-service",
      "name": "Sample spans with peer.service attribute at 10%",
      "trace": {
        "match": [{ "span_attribute": "peer.service", "exists": true }],
        "keep": {
          "percentage": 10.0,
          "hash_seed": 12345
        }
      }
    },
    {
      "id": "drop-basic-spans",
      "name": "Drop all basic spans (0% sampling)",
      "trace": {
        "match": [{ "trace_field": "TRACE_FIELD_NAME", "exact": "basic" }],
        "keep": {
          "percentage": 0.0
        }
      }
    },
    {
      "id": "keep-error-spans",
      "name": "Keep all error spans (100% sampling)",
      "trace": {
        "match": [{ "span_status": "SPAN_STATUS_CODE_ERROR", "exists": true }],
        "keep": {
          "percentage": 100.0
        }
      }
    }
  ]
}