ClusterLogDestination

Scope: Cluster
Version: v1alpha1

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

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

  • specобъект

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

    • 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, к которым должны подключиться клиенты для получения метаданных (топиков и партиций).

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

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

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

      • 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 для записи событий. Этот параметр поддерживает синтаксис шаблонов, что дает возможность динамического создания топиков.

    • 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.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.verifyHostnameбулевый

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

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

    • spec.rateLimitобъект

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

      • spec.rateLimit.linesPerMinuteчисло

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

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

    • 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

    • 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.

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

  • specобъект

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

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

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

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

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

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

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

        Пример:

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

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

        Пример:

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

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

        Пример:

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

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

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

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

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

          Пример:

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

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

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

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

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

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

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

          Пример:

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

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

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

          Собирать логи со всех Namespace кроме указанных в списке.

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

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

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

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

            Список выражений для label, которые должен иметь namespace.

            Пример:

            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объект

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

            Пример:

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

          Собирать логи только с указанных Namespace.

    • 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массив объектов

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

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

      Пример:

      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.typeстрока

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

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

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

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

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

    • spec.typeстрока

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

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

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

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

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

PodLoggingConfig

Scope: Namespaced
Version: v1alpha1

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

Каждый CustomResource 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объект

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

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

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

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

        Пример:

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

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

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

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

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

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

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

        Пример:

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

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

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

      Пример:

      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.typeстрока

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

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

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

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

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