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