ClusterLogDestination

Scope: Cluster
Version: v1alpha1

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

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

  • spec
    объект

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

    • spec.buffer
      объект

      Параметры буфера.

      • spec.buffer.disk
        объект

        Параметры буфера на диске.

        • spec.buffer.disk.maxSize
          строка или число

          Максимальный размер буфера на диске. Должен быть не меньше ~256 МБ (268435488 байт).

          Вы можете указать размер как простое целое число или как число с одним из следующих суффиксов: E, P, T, G, M, k, Ei, Pi, Ti, Gi, Mi, Ki.

          Подробнее об указании ресурсов:

          Шаблон: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$

          Примеры:

          maxSize: 512Mi
          
          maxSize: 268435488
          
      • spec.buffer.memory
        объект
        • spec.buffer.memory.maxEvents
          число

          Максимальное количество событий в буфере.

      • spec.buffer.type
        строка

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

        Тип буфера для использования.

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

      • spec.buffer.whenFull
        строка

        Поведение при заполнении буфера.

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

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

    • spec.elasticsearch
      объект
      • spec.elasticsearch.auth
        объект
        • spec.elasticsearch.auth.awsAccessKey
          строка

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

        • spec.elasticsearch.auth.awsAssumeRole
          строка

          ARN роли в IAM.

        • spec.elasticsearch.auth.awsRegion
          строка

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

        • spec.elasticsearch.auth.awsSecretKey
          строка

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

        • spec.elasticsearch.auth.password
          строка

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

        • spec.elasticsearch.auth.strategy
          строка

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

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

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

        • spec.elasticsearch.auth.user
          строка

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

      • spec.elasticsearch.dataStreamEnabled
        булевый

        Использовать Datastream для хранения логов (https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html).

        Datastreams производительнее для хранения логов и метрик, но они существуют только в Elasticsearch >= 7.16.X.

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

      • spec.elasticsearch.docType
        строка

        Использовать doc_type для индексов. Имеет смысл использовать только для Elasticsearch <= 6.X.

        • Для Elasticsearch >= 7.X вам не нужно использовать эту опцию, так как все работает по умолчанию.
        • Для Elasticsearch >= 6.X рекомендуемое значение — _doc, так как его использование позволит легко обновиться до Elasticsearch версии 7.X.
        • Для Elasticsearch < 6.X вы можете использовать любое значение, которое не начинается с _. Например, logs.
      • spec.elasticsearch.endpoint
        строка

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

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

      • spec.elasticsearch.index
        строка

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

      • spec.elasticsearch.pipeline
        строка

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

      • spec.elasticsearch.tls
        объект

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

        • spec.elasticsearch.tls.caFile
          строка

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

        • spec.elasticsearch.tls.clientCrt
          объект

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

          • spec.elasticsearch.tls.clientCrt.crtFile
            строка

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

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

            Также необходимо указать ключ в параметре keyFile.

          • spec.elasticsearch.tls.clientCrt.keyFile
            строка

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

            Закодированный в Base64 ключ в формате PEM.

            Также необходимо указать сертификат в параметре crtFile.

          • spec.elasticsearch.tls.clientCrt.keyPass
            строка

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

        • spec.elasticsearch.tls.verifyCertificate
          булевый

          Проверка TLS-сертификата удаленного хоста. Сертификат не будет проверен на наличие в списках отозванных сертификатов (Certificate Revocation Lists).

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

        • spec.elasticsearch.tls.verifyHostname
          булевый

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

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

    • spec.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 }}"
      
    • spec.kafka
      объект
      • spec.kafka.bootstrapServers
        массив строк

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

        Список пар адресов (хост:порт) Kafka-брокеров в кластере Kafka, к которым должны подключиться клиенты для получения метаданных (топиков и партиций).

        По умолчанию: []

        Пример:

        bootstrapServers:
        - 10.14.22.123:9092
        - 10.14.23.332:9092
        
        • Элемент массива
          строка

          Шаблон: ^(.+)\:\d{1,5}$

      • spec.kafka.encoding
        объект

        В каком формате закодировать сообщение.

        • spec.kafka.encoding.codec
          строка

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

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

      • spec.kafka.keyField
        строка

        Позволяет задать поле key_field.

        Примеры:

        keyField: host
        
        keyField: node
        
        keyField: namespace
        
        keyField: parsed_data.app_info
        
      • spec.kafka.sasl
        объект

        Конфигурация аутентификации SASL для взаимодействия с Kafka.

        • spec.kafka.sasl.mechanism
          строка

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

          Механизм аутентификации SASL. Поддерживаются только PLAIN и SCRAM-подобные механизмы.

          Допустимые значения: PLAIN, SCRAM-SHA-256, SCRAM-SHA-512

        • spec.kafka.sasl.password
          строка

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

          Пароль пользователя.

          Пример:

          password: qwerty
          
        • spec.kafka.sasl.username
          строка

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

          Имя пользователя.

          Пример:

          username: username
          
      • spec.kafka.tls
        объект

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

        • spec.kafka.tls.caFile
          строка

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

        • spec.kafka.tls.clientCrt
          объект

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

          • spec.kafka.tls.clientCrt.crtFile
            строка

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

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

            Также необходимо указать ключ в параметре keyFile.

          • spec.kafka.tls.clientCrt.keyFile
            строка

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

            Закодированный в Base64 ключ в формате PEM.

            Также необходимо указать сертификат в параметре crtFile.

          • spec.kafka.tls.clientCrt.keyPass
            строка

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

        • spec.kafka.tls.verifyCertificate
          булевый

          Проверка действия TLS-сертификата удаленного хоста.

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

        • spec.kafka.tls.verifyHostname
          булевый

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

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

      • spec.kafka.topic
        строка

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

        Имя топика в Kafka для записи событий. Этот параметр поддерживает синтаксис шаблонов, что дает возможность динамического создания топиков.

        Примеры:

        topic: logs
        
        topic: logs-{{unit}}-%Y-%m-%d
        
    • spec.logstash
      объект
      • spec.logstash.endpoint
        строка

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

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

      • spec.logstash.tls
        объект

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

        • spec.logstash.tls.caFile
          строка

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

        • spec.logstash.tls.clientCrt
          объект

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

          • spec.logstash.tls.clientCrt.crtFile
            строка

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

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

            Также необходимо указать ключ в параметре keyFile.

          • spec.logstash.tls.clientCrt.keyFile
            строка

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

            Закодированный в Base64 ключ в формате PEM.

            Также необходимо указать сертификат в параметре crtFile.

          • spec.logstash.tls.clientCrt.keyPass
            строка

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

        • spec.logstash.tls.verifyCertificate
          булевый

          Проверка действия TLS-сертификата удаленного хоста.

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

        • spec.logstash.tls.verifyHostname
          булевый

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

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

    • spec.loki
      объект
      • spec.loki.auth
        объект
        • spec.loki.auth.password
          строка

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

        • spec.loki.auth.strategy
          строка

          Используемый тип аутентификации.

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

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

        • spec.loki.auth.token
          строка

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

        • spec.loki.auth.user
          строка

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

      • spec.loki.endpoint
        строка

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

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

        Агент автоматически добавляет /loki/api/v1/push к URL при отправке данных.

      • spec.loki.tenantID
        строка

        ID тенанта.

        Эта опция используется только для Grafana Cloud. Для локально запущенного Loki опция ни на что не влияет.

      • spec.loki.tls
        объект

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

        • spec.loki.tls.caFile
          строка

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

        • spec.loki.tls.clientCrt
          объект

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

          • spec.loki.tls.clientCrt.crtFile
            строка

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

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

            Также необходимо указать ключ в параметре keyFile.

          • spec.loki.tls.clientCrt.keyFile
            строка

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

            Закодированный в Base64 ключ в формате PEM.

            Также необходимо указать сертификат в параметре crtFile.

          • spec.loki.tls.clientCrt.keyPass
            строка

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

        • spec.loki.tls.verifyCertificate
          булевый

          Проверка TLS-сертификата удаленного хоста.

          Если параметр установлен в false, сертификат не проверяется на наличие в списке отозванных сертификатов (Certificate Revocation Lists).

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

        • spec.loki.tls.verifyHostname
          булевый

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

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

    • spec.rateLimit
      объект

      Параметр ограничения потока событий, передаваемых в хранилище.

      • spec.rateLimit.excludes
        массив объектов

        Список фильтров для keyField.

        Только логи, НЕ подпадающие под правила, будут ограничены по количеству записей.

        Примеры:

        excludes:
          field: tier
          operator: Exists
        
        excludes:
          field: foo
          operator: NotIn
          values:
          - dev
          - 42
          - 'true'
          - '3.14'
        
        excludes:
          field: bar
          operator: Regex
          values:
          - "^abc"
          - "^\\d.+$"
        
        • spec.rateLimit.excludes.field
          строка

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

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

        • spec.rateLimit.excludes.operator
          строка

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

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

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

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

        • spec.rateLimit.excludes.values
          массив

          Массив значений или регулярных выражений для соответствующих операций. Не работает для операций Exists и DoesNotExist.

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

      • spec.rateLimit.keyField
        строка

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

      • spec.rateLimit.linesPerMinute
        число

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

        Количество записей в минуту.

    • spec.socket
      объект
      • spec.socket.address
        строка

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

        Адрес сокета.

        Шаблон: ^.*:[1-9][0-9]+$

      • spec.socket.encoding
        объект

        В каком формате закодировать сообщение.

        • spec.socket.encoding.codec
          строка

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

          Допустимые значения: Text, JSON, Syslog, CEF, GELF

      • spec.socket.mode
        строка

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

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

      • spec.socket.tcp
        объект
        • spec.socket.tcp.tls
          объект

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

          • spec.socket.tcp.tls.caFile
            строка

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

          • spec.socket.tcp.tls.clientCrt
            объект

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

            • spec.socket.tcp.tls.clientCrt.crtFile
              строка

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

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

              Также необходимо указать ключ в параметре keyFile.

            • spec.socket.tcp.tls.clientCrt.keyFile
              строка

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

              Закодированный в Base64 ключ в формате PEM.

              Также необходимо указать сертификат в параметре crtFile.

            • spec.socket.tcp.tls.clientCrt.keyPass
              строка

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

        • spec.socket.tcp.verifyCertificate
          булевый

          Проверка действия TLS-сертификата удаленного хоста.

          Если установлено значение false, сертификат не проверяется в списках отзыва сертификатов.

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

        • spec.socket.tcp.verifyHostname
          булевый

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

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

    • spec.splunk
      объект
      • spec.splunk.endpoint
        строка

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

        Базовый URL для экземпляра Splunk.

        Пример:

        endpoint: https://http-inputs-hec.splunkcloud.com
        
      • spec.splunk.index
        строка

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

      • spec.splunk.tls
        объект

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

        • spec.splunk.tls.caFile
          строка

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

        • spec.splunk.tls.clientCrt
          объект

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

          • spec.splunk.tls.clientCrt.crtFile
            строка

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

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

            Также необходимо указать ключ в параметре keyFile.

          • spec.splunk.tls.clientCrt.keyFile
            строка

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

            Закодированный в Base64 ключ в формате PEM.

            Также необходимо указать сертификат в параметре crtFile.

          • spec.splunk.tls.clientCrt.keyPass
            строка

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

        • spec.splunk.tls.verifyCertificate
          булевый

          Проверка действия TLS-сертификата удаленного хоста.

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

        • spec.splunk.tls.verifyHostname
          булевый

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

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

      • spec.splunk.token
        строка

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

        Токен по умолчанию для Splunk HEC. Если токен не был передан через metadata, будет использовано значение из этого поля.

    • spec.type
      строка

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

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

    • spec.vector
      объект
      • spec.vector.endpoint
        строка

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

        Адрес для подключения к Vector. Для общения между экземплярами должен использоваться API v2.

        Шаблон: ^(.+):([0-9]{1,5})$

      • spec.vector.tls
        объект

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

        • spec.vector.tls.caFile
          строка

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

        • spec.vector.tls.clientCrt
          объект

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

          • spec.vector.tls.clientCrt.crtFile
            строка

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

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

            Также необходимо указать ключ в параметре keyFile.

          • spec.vector.tls.clientCrt.keyFile
            строка

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

            Закодированный в Base64 ключ в формате PEM.

            Также необходимо указать сертификат в параметре crtFile.

          • spec.vector.tls.clientCrt.keyPass
            строка

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

        • spec.vector.tls.verifyCertificate
          булевый

          Проверка действия TLS-сертификата удаленного хоста.

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

        • spec.vector.tls.verifyHostname
          булевый

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

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

ClusterLoggingConfig

Scope: Cluster
Version: v1alpha1

Описывает источник логов в log-pipeline.

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

  • spec
    объект

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

    • spec.destinationRefs
      массив строк

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

      Массив имен custom resource ClusterLogDestination, с которыми будет работать этот источник логов.

      Поля с числовыми и булевыми типами будут преобразованы в строки.

    • spec.file
      объект

      Описывает правило сбора логов из файлов на узле.

      • spec.file.exclude
        массив строк

        Список шаблонов путей к файлам, которые нужно исключить при сборе логов.

        Поддерживаются wildcards.

        Примеры:

        exclude: "/var/log/nginx/error.log"
        
        exclude: "/var/log/audit.log"
        
      • spec.file.include
        массив строк

        Список шаблонов путей к файлам для сбора логов.

        Поддерживаются wildcards.

        Примеры:

        include: "/var/log/*.log"
        
        include: "/var/log/nginx/*.log"
        
      • spec.file.lineDelimiter
        строка

        Символ новой строки, который использовать при парсинге логов.

        Пример:

        lineDelimiter: "\\r\\n"
        
    • spec.kubernetesPods
      объект

      Описывает правило сбора логов из подов кластера.

      • spec.kubernetesPods.labelSelector
        объект

        Задает фильтр по меткам пода.

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

        • spec.kubernetesPods.labelSelector.matchExpressions
          массив объектов

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

          Пример:

          matchExpressions:
          - key: tier
            operator: In
            values:
            - production
            - staging
          - key: tier
            operator: NotIn
            values:
            - production
          
          • spec.kubernetesPods.labelSelector.matchExpressions.key
            строка

            Имя метки.

          • spec.kubernetesPods.labelSelector.matchExpressions.operator
            строка

            Оператор сравнения.

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

          • spec.kubernetesPods.labelSelector.matchExpressions.values
            массив строк

            Значение метки.

            • Элемент массива
              строка

              Шаблон: [a-z0-9]([-a-z0-9]*[a-z0-9])?

              Длина: 1..63

        • spec.kubernetesPods.labelSelector.matchLabels
          объект

          Список меток, которые должен иметь под, чтобы подпадать под условие фильтра.

          Пример:

          matchLabels:
            foo: bar
            baz: who
          
      • spec.kubernetesPods.namespaceSelector
        объект

        Задает фильтр по пространствам имен.

        Фильтр может использовать какой-то один способ задания условия из трех доступных (параметры matchNames, excludeNames, labelSelector).

        • spec.kubernetesPods.namespaceSelector.excludeNames
          массив строк

          Список пространств имен, с подов которого нужно исключить сбор логов.

        • spec.kubernetesPods.namespaceSelector.labelSelector
          объект

          Фильтр по меткам пространств имен, с которых нужно собирать логи.

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

          • spec.kubernetesPods.namespaceSelector.labelSelector.matchExpressions
            массив объектов

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

            Пример:

            matchExpressions:
            - key: tier
              operator: In
              values:
              - production
              - staging
            
            • spec.kubernetesPods.namespaceSelector.labelSelector.matchExpressions.key
              строка

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

              Имя метки.

            • spec.kubernetesPods.namespaceSelector.labelSelector.matchExpressions.operator
              строка

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

              Оператор сравнения.

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

            • spec.kubernetesPods.namespaceSelector.labelSelector.matchExpressions.values
              массив строк

              Значение метки.

          • spec.kubernetesPods.namespaceSelector.labelSelector.matchLabels
            объект

            Список меток, которые должно иметь пространство имен, чтобы подпадать под условие фильтра.

            Пример:

            matchLabels:
              foo: bar
              baz: who
            
        • spec.kubernetesPods.namespaceSelector.matchNames
          массив строк

          Список пространств имен, с подов которого нужно собирать логи.

    • spec.labelFilter
      массив объектов

      Список правил для фильтрации логов по их меткам метаданных.

      Пример:

      labelFilter:
      - field: container
        operator: In
        values:
        - nginx
      - field: pod_labels.tier
        operator: Regex
        values:
        - prod-.+
        - stage-.+
      
      • spec.labelFilter.field
        строка

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

        Имя метки для использования в фильтре.

        Не должно быть пустым.

        Шаблон: .+

      • spec.labelFilter.operator
        строка

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

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

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

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

      • spec.labelFilter.values
        массив

        Массив значений или регулярных выражений для соответствующих операций. Не работает для операций Exists и DoesNotExist.

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

    • spec.logFilter
      массив объектов

      Список фильтров для логов, которые применяются к полям сообщения в формате JSON.

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

      Пример:

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

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

        Имя поля для фильтрации. Должно быть пустым для логов не в JSON-формате.

      • spec.logFilter.operator
        строка

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

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

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

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

      • spec.logFilter.values
        массив

        Массив значений или регулярных выражений для соответствующих операций. Не работает для операций Exists и DoesNotExist.

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

    • spec.multilineParser
      объект

      Список паттернов для определения многострочных логов.

      • spec.multilineParser.custom
        объект

        Правила парсинга многострочных логов для парсера Custom.

        • spec.multilineParser.custom.endsWhen
          объект

          Условие, при котором находится последняя строчка многострокового лога.

          • spec.multilineParser.custom.endsWhen.notRegex
            строка

            Регулярное выражение, которое считает мэтчем строки, НЕ попавшие в него.

          • spec.multilineParser.custom.endsWhen.regex
            строка

            Регулярное выражение, которое считает мэтчем строки, попавшие в него.

        • spec.multilineParser.custom.startsWhen
          объект

          Условие, при котором находится первая строчка многострокового лога.

          • spec.multilineParser.custom.startsWhen.notRegex
            строка

            Регулярное выражение, которое считает мэтчем строки, НЕ попавшие в него.

          • spec.multilineParser.custom.startsWhen.regex
            строка

            Регулярное выражение, которое считает мэтчем строки, попавшие в него.

      • spec.multilineParser.type
        строка

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

        Типы парсеров:

        • None — не парсить логи;
        • General — парсер, который пытается сливать логи, у которых в начале сообщения стоит пробел или табуляция;
        • Backslash — парсер, который парсит многострочные логи в SHELL-формате с обратным слэшем у строк одного сообщения;
        • LogWithTime — парсер, который ожидает, что любое новое сообщение начинается с временной метки;
        • MultilineJSON — простой парсер JSON-логов, который предполагает, что новое сообщение начинается с символа {;
        • Custom - парсер, который парсит многострочные логи в указанном пользователем в spec.multilineParser.custom формате.

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

        Допустимые значения: None, General, Backslash, LogWithTime, MultilineJSON, Custom

    • spec.type
      строка

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

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

      KubernetesPods собирает логи с подов.

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

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

PodLoggingConfig

Scope: Namespaced
Version: v1alpha1

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

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

  • spec
    объект

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

    • spec.clusterDestinationRefs
      массив строк

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

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

    • spec.labelFilter
      массив объектов

      Список правил для фильтрации логов по их меткам метаданных](./#метаданные).

      Пример:

      labelFilter:
      - field: container
        operator: In
        values:
        - nginx
      - field: pod_labels.tier
        operator: Regex
        values:
        - prod-.+
        - stage-.+
      
      • spec.labelFilter.field
        строка

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

        Имя метки для использования в фильтре.

        Не должно быть пустым.

        Шаблон: .+

      • spec.labelFilter.operator
        строка

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

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

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

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

      • spec.labelFilter.values
        массив

        Массив значений или регулярных выражений для соответствующих операций. Не работает для операций Exists и DoesNotExist.

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

    • spec.labelSelector
      объект

      Задает фильтр по меткам пода.

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

      • spec.labelSelector.matchExpressions
        массив объектов

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

        Пример:

        matchExpressions:
        - key: tier
          operator: In
          values:
          - production
          - staging
        
        • spec.labelSelector.matchExpressions.key
          строка

          Имя метки.

        • spec.labelSelector.matchExpressions.operator
          строка

          Оператор сравнения.

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

        • spec.labelSelector.matchExpressions.values
          массив строк

          Значение метки.

          • Элемент массива
            строка

            Шаблон: [a-z0-9]([-a-z0-9]*[a-z0-9])?

            Длина: 1..63

      • spec.labelSelector.matchLabels
        объект

        Список меток, которые должен иметь под, чтобы подпадать под условие фильтра.

        Пример:

        matchLabels:
          foo: bar
          baz: who
        
    • spec.logFilter
      массив объектов

      Список фильтров для логов, которые применяются к полям сообщения в формате JSON.

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

      Пример:

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

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

        Имя поля для фильтрации. Должно быть пустым для логов не в JSON-формате.

      • spec.logFilter.operator
        строка

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

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

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

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

      • spec.logFilter.values
        массив

        Массив значений или регулярных выражений для соответствующих операций. Не работает для операций Exists и DoesNotExist.

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

    • spec.multilineParser
      объект

      Список паттернов для определения многострочных логов.

      • spec.multilineParser.custom
        объект

        Правила парсинга многострочных логов для парсера Custom.

        • spec.multilineParser.custom.endsWhen
          объект

          Условие, при котором находится последняя строчка многострокового лога.

          • spec.multilineParser.custom.endsWhen.notRegex
            строка

            Регулярное выражение, которое считает мэтчем строки, НЕ попавшие в него.

          • spec.multilineParser.custom.endsWhen.regex
            строка

            Регулярное выражение, которое считает мэтчем строки, попавшие в него.

        • spec.multilineParser.custom.startsWhen
          объект

          Условие, при котором находится первая строчка многострокового лога.

          • spec.multilineParser.custom.startsWhen.notRegex
            строка

            Регулярное выражение, которое считает мэтчем строки, НЕ попавшие в него.

          • spec.multilineParser.custom.startsWhen.regex
            строка

            Регулярное выражение, которое считает мэтчем строки, попавшие в него.

      • spec.multilineParser.type
        строка

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

        Типы парсеров:

        • None — не парсить логи;
        • General — парсер, который пытается сливать логи, у которых в начале сообщения стоит пробел или табуляция;
        • Backslash — парсер, который парсит многострочные логи в SHELL-формате с обратным слэшем у строк одного сообщения;
        • LogWithTime — парсер, который ожидает, что любое новое сообщение начинается с временной метки;
        • MultilineJSON — простой парсер JSON-логов, который предполагает, что новое сообщение начинается с символа {;
        • Custom - парсер, который парсит многострочные логи в указанном пользователем в spec.multilineParser.custom формате.

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

        Допустимые значения: None, General, Backslash, LogWithTime, MultilineJSON, Custom