ClusterLogDestination

Scope: Cluster
Version: v1alpha1

CustomResource для настройки хранилища log-pipeline.

Каждый CR ClusterLogDestination описывает одно хранилище логов, к которому можно подключить бесконечное количество источников.

metadata.name — задаёт имя upstream, который вы будете использовать в CR ClusterLoggingConfig.

  • spec (объект)

    Обязательный параметр.

    • elasticsearch (объект)
      • auth (объект)
        • awsAccessKey (строка)

          Закодированный в Base64 AWS ACCESS_KEY.

        • awsAssumeRole (строка)

          ARN роли в IAM.

        • awsRegion (строка)

          Регион AWS для аутентификации.

        • awsSecretKey (строка)

          Закодированный в Base64 AWS SECRET_KEY.

        • password (строка)

          Закодированный в Base64 пароль для basic аутентификации.

        • strategy (строка)

          Тип аутентификации - Basic или AWS.

          По умолчанию: "Basic"

          Допустимые значения: Basic, AWS

        • user (строка)

          Имя пользователя, используемое при Basic аутентификации.

      • endpoint (строка)

        Адрес инстанса elasticsearch.

        Обязательный параметр.

      • index (строка)

        Имя индекса, куда будут сохранены данные. Это поле можно задать динамически.

      • pipeline (строка)

        Имя pipeline, который будет применён к данным перед записью в индекс.

      • tls (объект)

        Настройки защищённого TLS соединения.

        • caFile (строка)

          Закодированный в Base64 сертификат CA в формате PEM.

        • clientCrt (объект)

          Конфигурация клиентского сертификата

          • crtFile (строка)

            Закодированный в Base64 сертификат в формате PEM. keyFile так же необходим.

            Обязательный параметр.

          • keyFile (строка)

            Закодированный в Base64 ключ в формате PEM. Если вы добавили ключ, опция crtFile становится обязательной.

            Обязательный параметр.

          • keyPass (строка)

            Закодированный в Base64 пароль для ключа.

        • verifyHostname (булевый)

          Проверка валидности сертификата на удалённом хосте.

          По умолчанию: true

    • extraLabels (объект)

      Дополнительные label, которыми будут снабжаться записи логов. Вы можете использовать простые шаблоны: {{ app }}. Некоторые ключи заререзвированы:

      • parsed_data
      • pod
      • pod_labels
      • pod_ip
      • namespace
      • image
      • container
      • node
      • pod_owner Больше информации о путях к полям

      Пример:

      extraLabels:
        forwarder: vector
        key: value
        app_info: "{{ app }}"
        array_member: "{{ array[0] }}"
        symbol_escating_value: "{{ pay\.day }}"
      
    • logstash (объект)
      • endpoint (строка)

        Адрес приёмника логов.

        Обязательный параметр.

      • tls (объект)

        Настройки защищённого TLS соединения.

        • caFile (строка)

          Закодированный в Base64 сертификат CA в формате PEM.

        • clientCrt (объект)

          Конфигурация клиентского сертификата

          • crtFile (строка)

            Закодированный в Base64 сертификат в формате PEM. keyFile так же необходим.

            Обязательный параметр.

          • keyFile (строка)

            Закодированный в Base64 ключ в формате PEM. Если вы добавили ключ, опция crtFile становится обязательной.

            Обязательный параметр.

          • keyPass (строка)

            Закодированный в Base64 пароль для ключа.

        • verifyCertificate (булевый)

          Проверка соответствия сертификата и имени удалённого хоста.

          По умолчанию: true

        • verifyHostname (булевый)

          Проверка валидности сертификата на удалённом хосте.

          По умолчанию: true

    • loki (объект)
      • auth (объект)
        • password (строка)

          Закодированный в Base64 пароль для Basic-аутентификации.

        • strategy (строка)

          Тип аутентификации - Basic или Bearer`.

          По умолчанию: "Basic"

          Допустимые значения: Basic, Bearer

        • token (строка)

          Токен для Bearer-аутентификации.

        • user (строка)

          Имя пользователя, используемое при Basic-аутентификации.

      • endpoint (строка)

        URL для подключения к Loki.

        Обязательный параметр.

      • tls (объект)

        Настройки защищённого TLS соединения.

        • caFile (строка)

          Закодированный в Base64 сертификат CA в формате PEM.

        • clientCrt (объект)

          Конфигурация клиентского сертификата

          • crtFile (строка)

            Закодированный в Base64 сертификат в формате PEM. keyFile так же необходим.

            Обязательный параметр.

          • keyFile (строка)

            Закодированный в Base64 ключ в формате PEM. Если вы добавили ключ, опция crtFile становится обязательной.

            Обязательный параметр.

          • keyPass (строка)

            Закодированный в Base64 пароль для ключа.

        • verifyHostname (булевый)

          Проверка валидности сертификата на удалённом хосте.

          По умолчанию: true

    • type (строка)

      Возможные бэкенды для сохранения логов.

      Допустимые значения: Loki, Elasticsearch, Logstash

      Обязательный параметр.

ClusterLoggingConfig

Scope: Cluster
Version: v1alpha1

CustomResource для описания источника логов в log-pipeline.

Каждый CustomResource ClusterLoggingConfig описывает правила сбора логов из кластера.

  • spec (объект)

    Обязательный параметр.

    • destinationRefs (массив строк)

      Список бэкендов хранения, в которые будет отправлено сообщение.

      Обязательный параметр.

    • file (объект)
      • exclude (массив строк)

        Список путей и паттернов файлов, которые читать не требуется. Поддерживаются wildcards.

        Пример: "/var/log/nginx/error.log", "/var/log/audit.log"

      • include (массив строк)

        Список путей и паттернов для чтения. Поддерживаются wildcards.

        Пример: "/var/log/*.log", "/var/log/nginx/*.log"

      • lineDelimiter (строка)

        Задание символа новой строки.

        Пример: "\r\n"

    • kubernetesPods (объект)

      По умолчанию: {}

      • labelSelector (объект)

        Настройка labelSelector позволяет задать фильтр по Pod Labels.

        Подробнее про выражения можно узнать в документации.

        • matchExpressions (массив объектов)

          List of label expressions for Pods.

          Пример:

          matchExpressions:
          - key: tier
            operator": In
            values:
            - production
            - staging
          
          • key (строка)

            Обязательный параметр.

          • operator (строка)

            Допустимые значения: In, NotIn, Exists, DoesNotExist

            Обязательный параметр.

          • values (массив строк)
        • matchLabels (объект)

          Список label, которые должен иметь Pod.

          Пример: ["foo","bar"], ["baz","whooo"]

      • namespaceSelector (объект)

        Задать фильтр по Namespace.

        • matchNames (массив строк)
    • logFilter (массив объектов)

      Список фильтров для логов. Только логи, подпавшие под правила, будут сохранены в хранилище.

      Пример:

      logFilter:
      - field: tier
        operator: Exists
      - field: tier
        operator: In
        values:
        - production
        - staging
      - field: foo
        operator: NotIn
        values: 
        - dev
        - 42
        - "true"
        - "3.14"
      - field: bar
        operator: Regex
        values:
        - ^abc
        - ^\d.+$
      
      • field (строка)

        Имя поля для фильтрации.

        Обязательный параметр.

      • operator (строка)

        Оператор, который можно применить для фильтрации:

        • Оператор In ищет сроку или элемент в массиве
        • Оператор NotIn является инверсивной оператора In
        • Оператор Regex пытается проверить строку в поле c использование регулярного вырадения, только логи, в которых есть поля подпадающие под регулярное выражение пройдут в хранилище
        • Оператор NotRegex является инверсией оператора Regex, в хранилище попадут логи, в которых нет поля или же оно не подпадает под регулярное выражение
        • Оператор Exists проверяет наличие поля и пропускает логи только если поле есть
        • Оператор DoesNotExist проверяет наличие поля и пропускает логи только если поле отсутствует

        Допустимые значения: In, NotIn, Regex, NotRegex, Exists, DoesNotExist

        Обязательный параметр.

      • values (массив)

        Список регулярных выражений или значений для сравнения. Можно использовать целые числа или строки. Поля с числами с плавающей запятой и поля логического типа будут преобразованы в строки при сравнении.

    • type (строка)

      Возможные источники логов.

      KubernetesPods собирает логи с Pod’ов.

      File позволяет читать локальные файлы, доступные на узле.

      Допустимые значения: KubernetesPods, File

      Обязательный параметр.

PodLoggingConfig

Scope: Namespaced
Version: v1alpha1

CustomResource для описания источника логов в log-pipeline.

Каждый CustomResource PodLoggingConfig описывает правила сбора логов из указанного Namespace.

  • spec (объект)

    Обязательный параметр.

    • clusterDestinationRefs (массив строк)

      Список бэкендов хранения (CRD ClusterLogDestination), в которые будет отправлено сообщение.

      Обязательный параметр.

    • labelSelector (объект)

      Настройка labelSelector позволяет задать фильтр по Pod Labels.

      Подробнее про выражения можно узнать в документации.

      • matchExpressions (массив объектов)

        List of label expressions for Pods.

        Пример:

        matchExpressions:
        - key: tier
          operator": In
          values:
          - production
          - staging
        
        • key (строка)

          Обязательный параметр.

        • operator (строка)

          Допустимые значения: In, NotIn, Exists, DoesNotExist

          Обязательный параметр.

        • values (массив строк)
      • matchLabels (объект)

        Список label, которые должен иметь Pod.

        Пример: ["foo","bar"], ["baz","whooo"]

    • logFilter (массив объектов)

      Список фильтров для логов. Только логи, подпавшие под правила, будут сохранены в хранилище.

      Пример:

      logFilter:
      - field: tier
        operator: Exists
      - field: tier
        operator: In
        values:
        - production
        - staging
      - field: foo
        operator: NotIn
        values: 
        - dev
        - 42
        - "true"
        - "3.14"
      - field: bar
        operator: Regex
        values:
        - ^abc
        - ^\d.+$
      
      • field (строка)

        Имя поля для фильтрации.

        Обязательный параметр.

      • operator (строка)

        Оператор, который можно применить для фильтрации:

        • Оператор In ищет сроку или элемент в массиве
        • Оператор NotIn является инверсивной оператора In
        • Оператор Regex пытается проверить строку в поле c использование регулярного вырадения, только логи, в которых есть поля подпадающие под регулярное выражение пройдут в хранилище
        • Оператор NotRegex является инверсией оператора Regex, в хранилище попадут логи, в которых нет поля или же оно не подпадает под регулярное выражение
        • Оператор Exists проверяет наличие поля и пропускает логи только если поле есть
        • Оператор DoesNotExist проверяет наличие поля и пропускает логи только если поле отсутствует

        Допустимые значения: In, NotIn, Regex, NotRegex, Exists, DoesNotExist

        Обязательный параметр.

      • values (массив)

        Список регулярных выражений или значений для сравнения. Можно использовать целые числа или строки. Поля с числами с плавающей запятой и поля логического типа будут преобразованы в строки при сравнении.