Вибірка наприкінці з `service.criticality`

Цей приклад демонструє, як використовувати атрибут ресурсу service.criticality для інтелектуальних рішень щодо вибірки наприкінці в OpenTelemetry Collector.

Демонстраційний застосунок присвоює значення service.criticality кожному сервісу, класифікуючи їх за операційною важливістю:

КритичністьЧастота вибіркиСервіси
critical100%payment, checkout, frontend, frontend-proxy
high50%cart, product-catalog, currency, shipping
medium10%recommendation, ad, product-reviews, email
low1%accounting, fraud-detection, image-provider, load-generator, quote, flagd, flagd-ui, Kafka

Конфігурація Collector

Щоб увімкнути вибірку наприкінці, додайте наступне до вашого otelcol-config-extras.yml:

processors:
  tail_sampling:
    decision_wait: 10s
    num_traces: 100000
    expected_new_traces_per_sec: 1000
    policies:
      # Політика 1: Завжди вибирати критичні сервіси (100%)
      - name: critical-services-always-sample
        type: string_attribute
        string_attribute:
          key: service.criticality
          values:
            - critical
          enabled_regex_matching: false
          invert_match: false

      # Політика 2: Вибірка 50% висококритичних сервісів
      - name: high-criticality-probabilistic
        type: and
        and:
          and_sub_policy:
            - name: is-high-criticality
              type: string_attribute
              string_attribute:
                key: service.criticality
                values:
                  - high
            - name: probabilistic-50
              type: probabilistic
              probabilistic:
                sampling_percentage: 50

      # Політика 3: Вибірка 10% середньокритичних сервісів
      - name: medium-criticality-probabilistic
        type: and
        and:
          and_sub_policy:
            - name: is-medium-criticality
              type: string_attribute
              string_attribute:
                key: service.criticality
                values:
                  - medium
            - name: probabilistic-10
              type: probabilistic
              probabilistic:
                sampling_percentage: 10

      # Політика 4: Вибірка 1% низькокритичних сервісів
      - name: low-criticality-probabilistic
        type: and
        and:
          and_sub_policy:
            - name: is-low-criticality
              type: string_attribute
              string_attribute:
                key: service.criticality
                values:
                  - low
            - name: probabilistic-1
              type: probabilistic
              probabilistic:
                sampling_percentage: 1

      # Політика 5: Завжди вибирати трасування з помилками незалежно від критичності
      - name: errors-always-sample
        type: status_code
        status_code:
          status_codes:
            - ERROR

      # Політика 6: Завжди вибирати повільні трасування з критичних/висококритичних сервісів
      - name: slow-critical-traces
        type: and
        and:
          and_sub_policy:
            - name: is-critical-or-high
              type: string_attribute
              string_attribute:
                key: service.criticality
                values:
                  - critical
                  - high
            - name: is-slow
              type: latency
              latency:
                threshold_ms: 5000

service:
  pipelines:
    traces:
      receivers: [otlp]
      processors: [resourcedetection, memory_limiter, transform, tail_sampling]
      exporters: [otlp, debug, spanmetrics]

Як це працює

Процесор вибірки наприкінці оцінює завершені трасування відповідно до налаштованих політик. Трасування вибирається, якщо будь-яка політика має збіг:

  • Критичні сервіси завжди підлягають вибірковому моніторингу, щоб забезпечити повну прозорість платіжних потоків, процесу оформлення замовлення та сервісів, що взаємодіють з користувачами.
  • Сервіси високої критичності підлягають вибірковому моніторингу на 50 %, що дозволяє збалансувати можливість спостереження та обсяг даних.
  • Сервіси середньої та низької критичності підлягають вибірковому моніторингу з поступовим зниженням частоти, щоб зменшити шум від менш критичних шляхів.
  • Помилки завжди фіксуються незалежно від критичності сервісу, що гарантує, що жодна проблема не залишиться непоміченою.
  • Повільні трасування (>5 с) від критичних сервісів та сервісів високої критичності завжди піддаються вибірковому моніторингу, щоб допомогти виявити вузькі місця у продуктивності.

Востаннє змінено December 26, 2024: [uk] Ukrainian documentation for OpenTelemetry (091c99cf)