Стадия жизненного цикла модуля: General Availability
У модуля есть требования для установки
Deckhouse Kubernetes Platform устанавливает CRD, но не удаляет их при отключении модуля. Если вам больше не нужны созданные CRD, удалите их.
ClusterLogDestination
Scope: Cluster
Describes setting for a log storage, which you can use in many log sources.
metadata.name — is an upstream name, which you should use in custom resource ClusterLoggingConfig.
-
объектspec
-
объектspec.bufferBuffer parameters.
-
объектspec.buffer.diskDisk buffer parameters.
-
строка или числоspec.buffer.disk.maxSize
The maximum size of the buffer on disk. Must be at least ~256MB (268435488 bytes).
You can express size as a plain integer or as a fixed-point number using one of these quantity suffixes:
E,P,T,G,M,k,Ei,Pi,Ti,Gi,Mi,Ki.More about resource quantity:
Шаблон:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$Примеры:
maxSize: 512MimaxSize: 268435488
-
-
объектspec.buffer.memory
-
числоspec.buffer.memory.maxEventsThe maximum number of events allowed in the buffer.
-
-
строкаspec.buffer.type
Обязательный параметр
The type of buffer to use.Допустимые значения:
Disk,Memory -
строкаspec.buffer.whenFullEvent handling behavior when a buffer is full.
По умолчанию:
BlockДопустимые значения:
DropNewest,Block
-
-
объектspec.elasticsearch
-
объектspec.elasticsearch.auth
-
строкаspec.elasticsearch.auth.awsAccessKeyBase64-encoded AWS
ACCESS_KEY. -
строкаspec.elasticsearch.auth.awsAssumeRoleThe ARN of an IAM role to assume at startup.
-
строкаspec.elasticsearch.auth.awsRegionAWS region for authentication.
-
строкаspec.elasticsearch.auth.awsSecretKeyBase64-encoded AWS
SECRET_KEY. -
строкаspec.elasticsearch.auth.passwordBase64-encoded Basic authentication password.
-
строкаspec.elasticsearch.auth.strategyThe authentication strategy to use.
По умолчанию:
BasicДопустимые значения:
Basic,AWS -
строкаspec.elasticsearch.auth.userThe Basic authentication user name.
-
-
булевыйspec.elasticsearch.dataStreamEnabled
Use for storage indexes or datastreams (https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html).
Datastream usage is better for logs and metrics storage but they works only for Elasticsearch >= 7.16.X.
По умолчанию:
false -
строкаspec.elasticsearch.docType
The
doc_typefor your index data. This is only relevant for Elasticsearch <= 6.X.- For Elasticsearch >= 7.X you do not need this option since this version has removed
doc_typemapping; - For Elasticsearch >= 6.X the recommended value is
_doc, because using it will make it easy to upgrade to 7.X; - For Elasticsearch < 6.X you can’t use a value starting with
_or empty string. Use, for example, values likelogs.
- For Elasticsearch >= 7.X you do not need this option since this version has removed
-
строкаspec.elasticsearch.endpoint
Обязательный параметр
Base URL of the Elasticsearch instance. -
строкаspec.elasticsearch.indexIndex name to write events to.
-
строкаspec.elasticsearch.pipelineName of the pipeline to apply.
-
объектspec.elasticsearch.tlsConfigures the TLS options for outgoing connections.
-
строкаspec.elasticsearch.tls.caFileBase64-encoded CA certificate in PEM format.
-
объектspec.elasticsearch.tls.clientCrtConfigures the client certificate for outgoing connections.
-
строкаspec.elasticsearch.tls.clientCrt.crtFile
Обязательный параметр
Base64-encoded certificate in PEM format.
You must also set the
keyFileparameter. -
строкаspec.elasticsearch.tls.clientCrt.keyFile
Обязательный параметр
Base64-encoded private key in PEM format (PKCS#8).
You must also set the
crtFileparameter. -
строкаspec.elasticsearch.tls.clientCrt.keyPassBase64-encoded pass phrase used to unlock the encrypted key file.
-
-
объектspec.elasticsearch.tls.secretRefReference to a Kubernetes Secret containing the CA certificate (ca.pem), client certificate (crt.pem), private key (key.pem) and key pass (keyPass) in Base64-encoded PEM format. If specified, TLS settings are overridden with values from the secret. Secret should be located in d8-log-shipper namespace and have
log-shipper.deckhouse.io/watch-secret: truelabel.-
строкаspec.elasticsearch.tls.secretRef.nameName of the Secret with TLS certificates.
-
-
булевыйspec.elasticsearch.tls.verifyCertificateValidate the TLS certificate of the remote host. Specifically the issuer is checked but not CRLs (Certificate Revocation Lists).
По умолчанию:
true -
булевыйspec.elasticsearch.tls.verifyHostnameVerifies that the name of the remote host matches the name specified in the remote host’s TLS certificate.
По умолчанию:
true
-
-
-
объектspec.extraLabels
A set of labels that will be attached to each batch of events.
You can use simple templating here:
{{ app }}.There are some reserved keys:
- parsed_data
- pod
- pod_labels_*
- pod_ip
- namespace
- image
- container
- node
- pod_owner
Пример:
app_info: '{{ app }}' array_member: '{{ array[0] }}' forwarder: vector key: value symbol_escating_value: '{{ pay\.day }}' -
объектspec.kafka
-
массив строкspec.kafka.bootstrapServers
Обязательный параметр
A list of host and port pairs that are the addresses of the Kafka brokers in a “bootstrap” Kafka cluster that a Kafka client connects to initially to bootstrap itself.По умолчанию:
[]Пример:
bootstrapServers: - 10.14.22.123:9092 - 10.14.23.332:9092-
строкаspec.kafka.bootstrapServers.Элемент массива
Шаблон:
^(.+)\:\d{1,5}$
-
-
объектspec.kafka.encodingHow to encode the message.
-
объектspec.kafka.encoding.cefCEF-specific configuration fields. Only applicable when codec is set to
CEF.-
строкаspec.kafka.encoding.cef.deviceProduct
По умолчанию:
log-shipper-agentМинимальная длина:
1 -
строкаspec.kafka.encoding.cef.deviceVendor
По умолчанию:
DeckhouseМинимальная длина:
1 -
строкаspec.kafka.encoding.cef.deviceVersion
По умолчанию:
1Минимальная длина:
1
-
-
строкаspec.kafka.encoding.codecAvailable encoding formats.
По умолчанию:
JSONДопустимые значения:
JSON,CEF
-
-
строкаspec.kafka.keyFieldAllows to set the key_field.
Примеры:
keyField: hostkeyField: nodekeyField: namespacekeyField: parsed_data.app_info -
объектspec.kafka.saslConfiguration for SASL authentication when interacting with Kafka.
-
строкаspec.kafka.sasl.mechanism
Обязательный параметр
The SASL mechanism to use. Only PLAIN and SCRAM-based mechanisms are supported.Допустимые значения:
PLAIN,SCRAM-SHA-256,SCRAM-SHA-512 -
строкаspec.kafka.sasl.password
Обязательный параметр
The SASL password.Пример:
password: qwerty -
строкаspec.kafka.sasl.username
Обязательный параметр
The SASL username.Пример:
username: username
-
-
объектspec.kafka.tlsConfigures the TLS options for outgoing connections.
-
строкаspec.kafka.tls.caFileBase64-encoded CA certificate in PEM format.
-
объектspec.kafka.tls.clientCrtConfigures the client certificate for outgoing connections.
-
строкаspec.kafka.tls.clientCrt.crtFile
Обязательный параметр
Base64-encoded certificate in PEM format.
You must also set the
keyFileparameter. -
строкаspec.kafka.tls.clientCrt.keyFile
Обязательный параметр
Base64-encoded private key in PEM format (PKCS#8).
You must also set the
crtFileparameter. -
строкаspec.kafka.tls.clientCrt.keyPassBase64-encoded pass phrase used to unlock the encrypted key file.
-
-
объектspec.kafka.tls.secretRefReference to a Kubernetes Secret containing the CA certificate (ca.pem), client certificate (crt.pem), private key (key.pem) and key pass (keyPass) in Base64-encoded PEM format. If specified, TLS settings are overridden with values from the secret. Secret should be located in d8-log-shipper namespace and have
log-shipper.deckhouse.io/watch-secret: truelabel.-
строкаspec.kafka.tls.secretRef.nameName of the Secret with TLS certificates.
-
-
булевыйspec.kafka.tls.verifyCertificateValidate the TLS certificate of the remote host.
По умолчанию:
true -
булевыйspec.kafka.tls.verifyHostnameVerifies that the name of the remote host matches the name specified in the remote host’s TLS certificate.
По умолчанию:
true
-
-
строкаspec.kafka.topic
Обязательный параметр
The Kafka topic name to write events to. This parameter supports template syntax, which enables you to use dynamic per-event values.Примеры:
topic: logstopic: logs-{{unit}}-%Y-%m-%d
-
-
объектspec.logstash
-
строкаspec.logstash.endpoint
Обязательный параметр
Base URL of the Logstash instance. -
объектspec.logstash.tlsConfigures the TLS options for outgoing connections.
-
строкаspec.logstash.tls.caFileBase64-encoded CA certificate in PEM format.
-
объектspec.logstash.tls.clientCrtConfigures the client certificate for outgoing connections.
-
строкаspec.logstash.tls.clientCrt.crtFile
Обязательный параметр
Base64-encoded certificate in PEM format.
You must also set the
keyFileparameter. -
строкаspec.logstash.tls.clientCrt.keyFile
Обязательный параметр
Base64-encoded private key in PEM format (PKCS#8).
You must also set the
crtFileparameter. -
строкаspec.logstash.tls.clientCrt.keyPassBase64-encoded pass phrase used to unlock the encrypted key file.
-
-
объектspec.logstash.tls.secretRefReference to a Kubernetes Secret containing the CA certificate (ca.pem), client certificate (crt.pem), private key (key.pem) and key pass (keyPass) in Base64-encoded PEM format. If specified, TLS settings are overridden with values from the secret. Secret should be located in d8-log-shipper namespace and have
log-shipper.deckhouse.io/watch-secret: truelabel.-
строкаspec.logstash.tls.secretRef.nameName of the Secret with TLS certificates.
-
-
булевыйspec.logstash.tls.verifyCertificateValidate the TLS certificate of the remote host.
По умолчанию:
true -
булевыйspec.logstash.tls.verifyHostnameVerifies that the name of the remote host matches the name specified in the remote host’s TLS certificate.
По умолчанию:
true
-
-
-
объектspec.loki
-
объектspec.loki.auth
-
строкаspec.loki.auth.passwordBase64-encoded Basic authentication password.
-
строкаspec.loki.auth.strategyThe authentication strategy to use.
По умолчанию:
BasicДопустимые значения:
Basic,Bearer -
строкаspec.loki.auth.tokenThe token to use for Bearer authentication.
-
строкаspec.loki.auth.userThe Basic authentication user name.
-
-
строкаspec.loki.endpoint
Обязательный параметр
Base URL of the Loki instance.
Agent automatically adds
/loki/api/v1/pushinto URL during data transmission. -
строкаspec.loki.tenantID
ID of a tenant.
This option is used only for GrafanaCloud. When running Loki locally, a tenant ID is not required.
-
объектspec.loki.tlsConfigures the TLS options for outgoing connections.
-
строкаspec.loki.tls.caFileBase64-encoded CA certificate in PEM format.
-
объектspec.loki.tls.clientCrtConfigures the client certificate for outgoing connections.
-
строкаspec.loki.tls.clientCrt.crtFile
Обязательный параметр
Base64-encoded certificate in PEM format.
You must also set the
keyFileparameter. -
строкаspec.loki.tls.clientCrt.keyFile
Обязательный параметр
Base64-encoded private key in PEM format (PKCS#8).
You must also set the
crtFileparameter. -
строкаspec.loki.tls.clientCrt.keyPassBase64-encoded pass phrase used to unlock the encrypted key file.
-
-
объектspec.loki.tls.secretRefReference to a Kubernetes Secret containing the CA certificate (ca.pem), client certificate (crt.pem), private key (key.pem) and key pass (keyPass) in Base64-encoded PEM format. If specified, TLS settings are overridden with values from the secret. Secret should be located in d8-log-shipper namespace and have
log-shipper.deckhouse.io/watch-secret: truelabel.-
строкаspec.loki.tls.secretRef.nameName of the Secret with TLS certificates.
-
-
булевыйspec.loki.tls.verifyCertificate
Validate the TLS certificate of the remote host.
If set to
false, the certificate is not checked in the Certificate Revocation Lists.По умолчанию:
true -
булевыйspec.loki.tls.verifyHostnameVerifies that the name of the remote host matches the name specified in the remote host’s TLS certificate.
По умолчанию:
true
-
-
-
объектspec.rateLimitParameter for limiting the flow of events.
-
массив объектовspec.rateLimit.excludes
List of excludes for keyField.
Only NOT matched log entries would be rate limited.
Примеры:
field: tier operator: Existsfield: foo operator: NotIn values: - dev - 42.0 - 'true' - '3.14'field: bar operator: Regex values: - ^abc - '^\d.+$'-
строкаspec.rateLimit.excludes.fieldField name for filtering.
-
строкаspec.rateLimit.excludes.operator
Operator for log field comparations:
In— finds a substring in a string.NotIn— is a negative version of theInoperator.Regex— is trying to match regexp over the field; only log events with matching fields will pass.NotRegex— is a negative version of theRegexoperator; log events without fields or with not matched fields will pass.Exists— drops log event if it contains some fields.DoesNotExist— drops log event if it does not contain some fields.
Допустимые значения:
In,NotIn,Regex,NotRegex,Exists,DoesNotExist -
массивspec.rateLimit.excludes.values
Array of values or regexes for corresponding operations. Does not work for
ExistsandDoesNotExistoperations.Fields a with float or boolean values will be converted to strings during comparison.
-
-
строкаspec.rateLimit.keyFieldThe name of the log field whose value will be hashed to determine if the event should be rate limited.
-
числоspec.rateLimit.linesPerMinute
Обязательный параметр
The number of records per minute.
-
-
объектspec.socket
-
строкаspec.socket.address
Обязательный параметр
Address of the socket.Шаблон:
^.*:[1-9][0-9]+$ -
объектspec.socket.encodingHow to encode the message.
-
объектspec.socket.encoding.cefCEF-specific configuration fields. Only applicable when codec is set to
CEF.-
строкаspec.socket.encoding.cef.deviceProduct
По умолчанию:
log-shipper-agentМинимальная длина:
1 -
строкаspec.socket.encoding.cef.deviceVendor
По умолчанию:
DeckhouseМинимальная длина:
1 -
строкаspec.socket.encoding.cef.deviceVersion
По умолчанию:
1Минимальная длина:
1
-
-
строкаspec.socket.encoding.codecAvailable encoding formats.
По умолчанию:
JSONДопустимые значения:
Text,JSON,Syslog,CEF,GELF
-
-
строкаspec.socket.mode
Обязательный параметр
Допустимые значения:
TCP,UDP -
объектspec.socket.tcp
-
объектspec.socket.tcp.tlsConfigures the TLS options for outgoing connections.
-
строкаspec.socket.tcp.tls.caFileBase64-encoded CA certificate in PEM format.
-
объектspec.socket.tcp.tls.clientCrtConfigures the client certificate for outgoing connections.
-
строкаspec.socket.tcp.tls.clientCrt.crtFile
Обязательный параметр
Base64-encoded certificate in PEM format.
You must also set the
keyFileparameter. -
строкаspec.socket.tcp.tls.clientCrt.keyFile
Обязательный параметр
Base64-encoded private key in PEM format (PKCS#8).
You must also set the
crtFileparameter. -
строкаspec.socket.tcp.tls.clientCrt.keyPassBase64-encoded pass phrase used to unlock the encrypted key file.
-
-
объектspec.socket.tcp.tls.secretRefReference to a Kubernetes Secret containing the CA certificate (ca.pem), client certificate (crt.pem), private key (key.pem) and key pass (keyPass) in Base64-encoded PEM format. If specified, TLS settings are overridden with values from the secret. Secret should be located in d8-log-shipper namespace and have
log-shipper.deckhouse.io/watch-secret: truelabel.-
строкаspec.socket.tcp.tls.secretRef.nameName of the Secret with TLS certificates.
-
-
-
булевыйspec.socket.tcp.verifyCertificate
Validate the TLS certificate of the remote host.
If set to
false, the certificate is not checked in the Certificate Revocation Lists.По умолчанию:
true -
булевыйspec.socket.tcp.verifyHostnameVerifies that the name of the remote host matches the name specified in the remote host’s TLS certificate.
По умолчанию:
true
-
-
-
объектspec.splunk
-
строкаspec.splunk.endpoint
Обязательный параметр
Base URL of the Splunk instance.Пример:
endpoint: https://http-inputs-hec.splunkcloud.com -
строкаspec.splunk.indexIndex name to write events to.
-
объектspec.splunk.tlsConfigures the TLS options for outgoing connections.
-
строкаspec.splunk.tls.caFileBase64-encoded CA certificate in PEM format.
-
объектspec.splunk.tls.clientCrtConfigures the client certificate for outgoing connections.
-
строкаspec.splunk.tls.clientCrt.crtFile
Обязательный параметр
Base64-encoded certificate in PEM format.
You must also set the
keyFileparameter. -
строкаspec.splunk.tls.clientCrt.keyFile
Обязательный параметр
Base64-encoded private key in PEM format (PKCS#8).
You must also set the
crtFileparameter. -
строкаspec.splunk.tls.clientCrt.keyPassBase64-encoded pass phrase used to unlock the encrypted key file.
-
-
объектspec.splunk.tls.secretRefReference to a Kubernetes Secret containing the CA certificate (ca.pem), client certificate (crt.pem), private key (key.pem) and key pass (keyPass) in Base64-encoded PEM format. If specified, TLS settings are overridden with values from the secret. Secret should be located in d8-log-shipper namespace and have
log-shipper.deckhouse.io/watch-secret: truelabel.-
строкаspec.splunk.tls.secretRef.nameName of the Secret with TLS certificates.
-
-
булевыйspec.splunk.tls.verifyCertificateValidate the TLS certificate of the remote host.
По умолчанию:
true -
булевыйspec.splunk.tls.verifyHostnameVerifies that the name of the remote host matches the name specified in the remote host’s TLS certificate.
По умолчанию:
true
-
-
строкаspec.splunk.token
Обязательный параметр
Default Splunk HEC token. If an event has a token set in its metadata, it will have priority over the one set here.
-
-
массив объектовspec.transformations
Ordered list of transformations applied to each log event before it is sent to the destination. Items are executed in array order.
AddLabelsruns afterextraLabelswhen both are configured.Available actions:
ReplaceKeys— recursively replace matches of thesourcepattern withtargetin the given paths.ParseMessage— parse themessagefield usingsourceFormatand write the result totargetLabel(default.message; the lone.merges into the event root). On parse failure the originalmessageis left unchanged.DropLabels— remove the value at eachlabelpath, or ifkeepKeysis set on an item, keep only those child key names inside the object atlabel.AddLabels— add labels (literals,{{ .path }}templates, optionalwhen). Runs afterextraLabels; on key name conflictsAddLabelswins.ReplaceValue— replace substrings in scalar string fields using thesourceregex;targetmay reference named groups as{{ group_name }}.
Примеры:
action: ReplaceKeys replaceKeys: labels: - .pod_labels source: . target: _action: ParseMessage parseMessage: sourceFormat: String string: regex: ^(?P<msg>.*)$ setLabels: msg: '{{ msg }}'action: ParseMessage parseMessage: sourceFormat: Klogaction: ParseMessage parseMessage: json: depth: 1 sourceFormat: JSONaction: DropLabels dropLabels: labels: - label: .first - label: .second - keepKeys: - app - team label: .pod_labelsaction: AddLabels addLabels: setLabels: .env: prod .source_app: '{{ .pod_labels.app }}' when: - .namespace == "production"action: ReplaceValue replaceValue: labels: - .message source: '\d+' target: REDACTED-
строкаspec.transformations.actionTransformation type; selects which parameter block is used.
Допустимые значения:
ReplaceKeys,ParseMessage,DropLabels,AddLabels,ReplaceValue -
объектspec.transformations.addLabelsAdds fields to the event from
setLabels(literals and{{ .path }}templates). Runs afterextraLabelswhen both are set; on path conflicts values from this transform win. Optionalwhenfilter.-
объектspec.transformations.addLabels.setLabels
Обязательный параметр
Keys are destination label paths in Vector notation: each key starts with.relative to the event root (e.g..env,.source_app). Values are literals or{{ .path }}templates wherepathin the template is a source field path with a leading..Примеры:
.tier: backend.source_app: '{{ .pod_labels.app }}' -
массив строкspec.transformations.addLabels.whenOptional list of conditions combined with logical AND. In comparisons, the field path is a leading dot and dot-separated segments (e.g.
.namespace,.pod_labels.app). Each item is either: a comparisonpath ==|!=|=~|!=~ value(regular expression for=~/!=~), apathwith no operator or right-hand side (field exists), or!.path(field does not exist).Примеры:
when: .namespace == "production"when: .pod_labels.app =~ "^api-"when: .level != "debug"when: .pod_labels.teamwhen: '!.pod_labels.legacy'-
строкаspec.transformations.addLabels.when.Элемент массива
Шаблон:
^[a-zA-Z0-9_\s\\\[\](){}?*+.^$\-=!:,'"|<>~#/@]+$
-
-
-
объектspec.transformations.dropLabelsRemoves field paths, or narrows objects by keeping only selected child keys at each
labelwhenkeepKeysis set.-
массив объектовspec.transformations.dropLabels.labels
Обязательный параметр
Each item has a required Vector pathlabeland optionalkeepKeys. IfkeepKeysis omitted, the subtree atlabelis removed. IfkeepKeysis set, only those child key names are kept in the object atlabel.-
массив строкspec.transformations.dropLabels.labels.keepKeysChild key names (no leading dot) to keep inside the object at
label; all other child keys are removed.-
строкаspec.transformations.dropLabels.labels.keepKeys.Элемент массива
Шаблон:
^[a-zA-Z0-9_.\-/]+$
-
-
строкаspec.transformations.dropLabels.labels.labelVector path to a field or subtree; when
keepKeysis set, must resolve to an object.Шаблон:
^\.[a-zA-Z0-9_\[\]\\\.\-"/:]+$
-
-
-
объектspec.transformations.parseMessageParses the string in the
messagefield (format fromsourceFormat) and writes the result totargetLabelas a Vector path with a leading.(default.message; the lone.merges the parsed object into the event root). On parse failure the originalmessagefield is left unchanged.-
объектspec.transformations.parseMessage.json
-
целочисленныйspec.transformations.parseMessage.json.depthDepth for JSON parsing.
Допустимые значения:
1 <= X <= 128
-
-
строкаspec.transformations.parseMessage.sourceFormat
Обязательный параметр
Message format for converting into an object.Допустимые значения:
String,JSON,Klog,SysLog,CLF,Logfmt -
объектspec.transformations.parseMessage.stringSettings for
sourceFormat: String.regexandsetLabelsare required.-
строкаspec.transformations.parseMessage.string.regex
Обязательный параметр
Regular expression with named capture groups; requiressetLabels.Шаблон:
^[a-zA-Z0-9_\s\\\[\](){}?*+.^$\-=!:,'\"|<>~#/@]+$ -
объектspec.transformations.parseMessage.string.setLabels
Обязательный параметр
Maps output keys to literals or{{ group_name }}templates.
-
-
строкаspec.transformations.parseMessage.targetLabelDestination path for the parsed value (default
.message). The lone value.merges into the event root. Must not be.parsed_data.По умолчанию:
.messageШаблон:
^(\.|\.[a-zA-Z0-9_\[\]\\\.\-"/:']+)$Примеры:
targetLabel: .messagetargetLabel: .targetLabel: .tmp
-
-
объектspec.transformations.replaceKeysRecursively replaces matches of the
sourcepattern with thetargetvalue in the listed paths (labels). Paths use Vector notation with a leading.on each list item.-
массив строкspec.transformations.replaceKeys.labels
Обязательный параметр
Label paths where the replacement runs. Each item must start with.(Vector field path notation, e.g..pod_labels,.parsed_data).Примеры:
labels: .pod_labelslabels: .annotations-
строкаspec.transformations.replaceKeys.labels.Элемент массива
Шаблон:
^\.[a-zA-Z0-9_\[\]\\\.\-"/:']+$
-
-
строкаspec.transformations.replaceKeys.source
Обязательный параметр
Pattern used to find matches. Can be a static string or a regular expression (same character set as other regex fields in transformations).Шаблон:
^[a-zA-Z0-9_\s\\\[\](){}?*+.^$\-=!:,'"|<>~#/@]+$Примеры:
source: .source: '^old\.' -
строкаspec.transformations.replaceKeys.targetLiteral replacement string for matched substrings (not a regex).
По умолчанию:
‘’Примеры:
target: _target: ''
-
-
объектspec.transformations.replaceValueReplace matches of
sourcein each listed scalar string field withtarget.-
массив строкspec.transformations.replaceValue.labels
Обязательный параметр
Paths to scalar string fields where replacement runs. Each item must start with.(Vector path, e.g..message,.parsed_data.token).Примеры:
labels: .messagelabels: .parsed_data.line-
строкаspec.transformations.replaceValue.labels.Элемент массива
Шаблон:
^\.[a-zA-Z0-9_\[\]\\\.\-"/:']+$
-
-
строкаspec.transformations.replaceValue.source
Обязательный параметр
Regular expression to search in each scalar field value.Шаблон:
^[a-zA-Z0-9_\s\\\[\](){}?*+.^$\-=!:,'"|<>~#/@]+$Примеры:
source: '\d+'source: '(?P<tok>token=[^\s]+)' -
строкаspec.transformations.replaceValue.target
Обязательный параметр
Replacement string; may use{{name}}for named capture groups.Примеры:
target: REDACTEDtarget: '{{tok}}'
-
-
строкаspec.typeType of a log storage backend.
Допустимые значения:
Loki,Elasticsearch,Logstash,Vector,Kafka,Splunk,Socket -
объектspec.vector
-
строкаspec.vector.endpoint
Обязательный параметр
An address of the Vector instance. API v2 must be used for communication between instances.Шаблон:
^(.+):([0-9]{1,5})$ -
объектspec.vector.tlsConfigures the TLS options for outgoing connections.
-
строкаspec.vector.tls.caFileBase64-encoded CA certificate in PEM format.
-
объектspec.vector.tls.clientCrtConfigures the client certificate for outgoing connections.
-
строкаspec.vector.tls.clientCrt.crtFile
Обязательный параметр
Base64-encoded certificate in PEM format.
You must also set the
keyFileparameter. -
строкаspec.vector.tls.clientCrt.keyFile
Обязательный параметр
Base64-encoded private key in PEM format (PKCS#8).
You must also set the
crtFileparameter. -
строкаspec.vector.tls.clientCrt.keyPassBase64-encoded passphrase used to unlock the encrypted key file.
-
-
объектspec.vector.tls.secretRefReference to a Kubernetes Secret containing the CA certificate (ca.pem), client certificate (crt.pem), private key (key.pem) and key pass (keyPass) in Base64-encoded PEM format. If specified, TLS settings are overridden with values from the secret. Secret should be located in d8-log-shipper namespace and have
log-shipper.deckhouse.io/watch-secret: truelabel.-
строкаspec.vector.tls.secretRef.nameName of the Secret with TLS certificates.
-
-
булевыйspec.vector.tls.verifyCertificateValidate the TLS certificate of the remote host.
По умолчанию:
true -
булевыйspec.vector.tls.verifyHostnameVerifies that the name of the remote host matches the name specified in the remote host’s TLS certificate.
По умолчанию:
true
-
-
-
Описывает параметры хранилища логов, к которому можно подключить бесконечное количество источников.
metadata.name задаёт имя upstream’а, который будет использоваться в ресурсе 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: 512MimaxSize: 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.awsAssumeRoleARN роли в 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.secretRefСсылка на секрет Kubernetes, содержащий сертификат CA (ca.pem), клиентский сертификат (crt.pem), приватный ключ (key.pem) и пароль ключа для клиентского сертификата (keyPass) в формате PEM, закодированном в Base64. Настройки TLS будут переопределены значениями из секрета. Секрет должен находиться в пространстве имён
d8-log-shipperи иметь лейблlog-shipper.deckhouse.io/watch-secret: true.-
строкаspec.elasticsearch.tls.secretRef.nameИмя секрета с TLS сертификатами.
-
-
булевыйspec.elasticsearch.tls.verifyCertificateПроверка TLS-сертификата удаленного хоста. Сертификат не будет проверен на наличие в списках отозванных сертификатов (Certificate Revocation Lists).
По умолчанию:
true -
булевыйspec.elasticsearch.tls.verifyHostnameПроверка соответствия имени удаленного хоста и имени, указанного в TLS-сертификате удаленного хоста.
По умолчанию:
true
-
-
-
объектspec.extraLabels
Дополнительные ярлыки, которыми будут снабжаться записи логов.
Вы можете использовать простые шаблоны:
{{ app }}.Некоторые ключи зарезервированы:
- parsed_data;
- pod;
- pod_labels_*;
- pod_ip;
- namespace;
- image;
- container;
- node;
- pod_owner.
Пример:
app_info: '{{ app }}' array_member: '{{ array[0] }}' forwarder: vector key: value symbol_escating_value: '{{ pay\.day }}' -
объектspec.kafka
-
массив строкspec.kafka.bootstrapServers
Обязательный параметр
Список пар адресов (хост:порт) Kafka-брокеров в кластере Kafka, к которым должны подключиться клиенты для получения метаданных (топиков и партиций).По умолчанию:
[]Пример:
bootstrapServers: - 10.14.22.123:9092 - 10.14.23.332:9092-
строкаspec.kafka.bootstrapServers.Элемент массива
Шаблон:
^(.+)\:\d{1,5}$
-
-
объектspec.kafka.encodingВ каком формате закодировать сообщение.
-
объектspec.kafka.encoding.cefПоля конфигурации, специфичные для CEF. Применяется только в том случае, если для кодирования установлено значение
CEF.-
строкаspec.kafka.encoding.cef.deviceProduct
По умолчанию:
log-shipper-agentМинимальная длина:
1 -
строкаspec.kafka.encoding.cef.deviceVendor
По умолчанию:
DeckhouseМинимальная длина:
1 -
строкаspec.kafka.encoding.cef.deviceVersion
По умолчанию:
1Минимальная длина:
1
-
-
строкаspec.kafka.encoding.codecДоступные форматы для кодирования.
По умолчанию:
JSONДопустимые значения:
JSON,CEF
-
-
строкаspec.kafka.keyFieldПозволяет задать поле key_field.
Примеры:
keyField: hostkeyField: nodekeyField: namespacekeyField: 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.secretRefСсылка на секрет Kubernetes, содержащий сертификат CA (ca.pem), клиентский сертификат (crt.pem), приватный ключ (key.pem) и пароль ключа для клиентского сертификата (keyPass) в формате PEM, закодированном в Base64. Настройки TLS будут переопределены значениями из секрета. Секрет должен находиться в пространстве имён
d8-log-shipperи иметь лейблlog-shipper.deckhouse.io/watch-secret: true.-
строкаspec.kafka.tls.secretRef.nameИмя секрета с TLS-сертификатами.
-
-
булевыйspec.kafka.tls.verifyCertificateПроверка действия TLS-сертификата удаленного хоста.
По умолчанию:
true -
булевыйspec.kafka.tls.verifyHostnameПроверка соответствия имени удаленного хоста и имени, указанного в TLS-сертификате удаленного хоста.
По умолчанию:
true
-
-
строкаspec.kafka.topic
Обязательный параметр
Имя топика в Kafka для записи логов. Этот параметр поддерживает синтаксис шаблонов, что дает возможность динамического создания топиков.Примеры:
topic: logstopic: 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.secretRefСсылка на секрет Kubernetes, содержащий сертификат CA (ca.pem), клиентский сертификат (crt.pem), приватный ключ (key.pem) и пароль ключа для клиентского сертификата (keyPass) в формате PEM, закодированном в Base64. Настройки TLS будут переопределены значениями из секрета. Секрет должен находиться в пространстве имён
d8-log-shipperи иметь лейблlog-shipper.deckhouse.io/watch-secret: true.-
строкаspec.logstash.tls.secretRef.nameИмя секрета с TLS-сертификатами.
-
-
булевый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.secretRefСсылка на секрет Kubernetes, содержащий сертификат CA (ca.pem), клиентский сертификат (crt.pem), приватный ключ (key.pem) и пароль ключа для клиентского сертификата (keyPass) в формате PEM, закодированном в Base64. Настройки TLS будут переопределены значениями из секрета. Секрет должен находиться в пространстве имён
d8-log-shipperи иметь лейблlog-shipper.deckhouse.io/watch-secret: true.-
строкаspec.loki.tls.secretRef.nameИмя секрета с TLS-сертификатами.
-
-
булевыйspec.loki.tls.verifyCertificate
Проверка TLS-сертификата удаленного хоста.
Если параметр установлен в
false, сертификат не проверяется на наличие в списке отозванных сертификатов (Certificate Revocation Lists).По умолчанию:
true -
булевыйspec.loki.tls.verifyHostnameПроверка соответствия имени удаленного хоста и имени, указанного в TLS-сертификате удаленного хоста.
По умолчанию:
true
-
-
-
объектspec.rateLimitПараметр ограничения потока логов, передаваемых в хранилище.
-
массив объектовspec.rateLimit.excludes
Список фильтров для keyField.
Только логи, НЕ подпадающие под правила, будут ограничены по количеству записей.
Примеры:
field: tier operator: Existsfield: foo operator: NotIn values: - dev - 42.0 - 'true' - '3.14'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.cefПоля конфигурации, специфичные для CEF. Применяется только в том случае, если для кодирования установлено значение
CEF.-
строкаspec.socket.encoding.cef.deviceProduct
По умолчанию:
log-shipper-agentМинимальная длина:
1 -
строкаspec.socket.encoding.cef.deviceVendor
По умолчанию:
DeckhouseМинимальная длина:
1 -
строкаspec.socket.encoding.cef.deviceVersion
По умолчанию:
1Минимальная длина:
1
-
-
строка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.tls.secretRefСсылка на секрет Kubernetes, содержащий сертификат CA (ca.pem), клиентский сертификат (crt.pem), приватный ключ (key.pem) и пароль ключа для клиентского сертификата (keyPass) в формате PEM, закодированном в Base64. Настройки TLS будут переопределены значениями из секрета. Секрет должен находиться в пространстве имён
d8-log-shipperи иметь лейблlog-shipper.deckhouse.io/watch-secret: true.-
строкаspec.socket.tcp.tls.secretRef.nameИмя секрета с TLS-сертификатами.
-
-
-
булевый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.secretRefСсылка на секрет Kubernetes, содержащий сертификат CA (ca.pem), клиентский сертификат (crt.pem), приватный ключ (key.pem) и пароль ключа для клиентского сертификата (keyPass) в формате PEM, закодированном в Base64. Настройки TLS будут переопределены значениями из секрета. Секрет должен находиться в пространстве имён
d8-log-shipperи иметь лейблlog-shipper.deckhouse.io/watch-secret: true.-
строкаspec.splunk.tls.secretRef.nameИмя секрета с TLS-сертификатами.
-
-
булевыйspec.splunk.tls.verifyCertificateПроверка действия TLS-сертификата удаленного хоста.
По умолчанию:
true -
булевыйspec.splunk.tls.verifyHostnameПроверка соответствия имени удаленного хоста и имени, указанного в TLS-сертификате удаленного хоста.
По умолчанию:
true
-
-
строкаspec.splunk.token
Обязательный параметр
Токен по умолчанию для Splunk HEC. Если токен не был передан через metadata, будет использовано значение из этого поля.
-
-
массив объектовspec.transformations
Упорядоченный список трансформаций, применяемых к каждому логу перед отправкой в хранилище. Элементы выполняются в порядке следования в массиве.
Если заданы и
extraLabels, иAddLabels, сначала применяютсяextraLabels, затемAddLabels.Доступные действия:
ReplaceKeys— рекурсивно заменяет вхождения шаблонаsourceнаtargetв указанных путях к ярлыкам.ParseMessage— разбирает строку из поляmessage(формат вsourceFormat) и записывает результат вtargetLabel(по умолчанию.message; значение.— слияние с корнем лога). Если разбор невозможен, исходное полеmessageне меняется.DropLabels— удаляет значение по каждому путиlabelили, если у записи заданkeepKeys, оставляет в объекте по этому пути только перечисленные дочерние ключи.AddLabels— добавляет ярлыки (литералы, шаблоны{{ .path }}, опциональноwhen). Выполняется послеextraLabels; при совпадении имён ключей приоритет уAddLabels.ReplaceValue— заменяет подстроки в скалярных строковых полях по регулярному выражениюsource; вtargetдопускаются ссылки на именованные группы{{ group_name }}(replaceValue).
-
строкаspec.transformations.actionТип трансформации; определяет, какой из блоков параметров используется.
Допустимые значения:
ReplaceKeys,ParseMessage,DropLabels,AddLabels,ReplaceValue -
объектspec.transformations.addLabelsДобавляет в лог ярлыки по карте
setLabels(литералы и шаблоны{{ .path }}). Выполняется послеextraLabels, если заданы оба; при совпадении путей приоритет у значений из этой трансформации. Необязательный фильтрwhenпо полям лога.-
объектspec.transformations.addLabels.setLabels
Обязательный параметр
Ключи — пути назначения длф ярлыков в нотации Vector: каждый ключ задаётся с ведущей.относительно корня лога (например,.env,.source_app). Значения — литералы или шаблоны{{ .path }}, гдеpathв шаблоне — путь к полю-источнику с ведущей.. -
массив строкspec.transformations.addLabels.whenНеобязательный список условий, объединяемых логическим И. В сравнениях путь поля — строка с ведущей точкой и сегментами через точку (например
.namespace,.pod_labels.app). Элемент списка — либо сравнениеpath ==|!=|=~|!=~ value(для=~/!=~— регулярное выражение), либо проверка наличия поля по путиpath(без оператора и правой части), либо!.path(поля нет).-
строкаspec.transformations.addLabels.when.Элемент массива
Шаблон:
^[a-zA-Z0-9_\s\\\[\](){}?*+.^$\-=!:,'"|<>~#/@]+$
-
-
-
объектspec.transformations.dropLabelsУдаляет поля по путям или сужает объекты: при заданном
keepKeysу элемента в объекте по путиlabelостаются только выбранные дочерние ключи.-
массив строкspec.transformations.dropLabels.labelsУ каждой записи обязателен путь
labelв нотации Vector (с ведущей., например.pod_labels) и опциональноkeepKeys. ЕслиkeepKeysне задан — удаляется всё значение (поддерево) по путиlabel. ЕслиkeepKeysзадан — в объекте по путиlabelсохраняются только перечисленные дочерние имена ключей (без ведущей точки), остальные дочерние ключи удаляются.-
строкаspec.transformations.dropLabels.labels.Элемент массива
Шаблон:
^\.[a-zA-Z0-9_\[\]\\\.\-]+$
-
-
массив объектовspec.transformations.dropLabels.pathsList of path entries matching v1alpha2 dropLabels.labels.
-
массив строкspec.transformations.dropLabels.paths.keepKeys
-
строкаspec.transformations.dropLabels.paths.keepKeys.Элемент массива
Шаблон:
^[a-zA-Z0-9_.\-/]+$
-
-
строкаspec.transformations.dropLabels.paths.label
Шаблон:
^\.[a-zA-Z0-9_\[\]\\\.\-]+$
-
-
-
объектspec.transformations.parseMessageРазбирает строку из поля
message(формат задаётся вsourceFormat) и записывает результат в путьtargetLabelв нотации Vector с ведущей.(по умолчанию.message; значение.— слияние распарсенного объекта с корнем лога). Если разбор невозможен, исходное полеmessageне меняется.-
объектspec.transformations.parseMessage.json
-
целочисленныйspec.transformations.parseMessage.json.depthОграничение глубины при разборе JSON (
max_depthв Vector).Допустимые значения:
1 <= X <= 128
-
-
строкаspec.transformations.parseMessage.sourceFormat
Обязательный параметр
Формат исходной строки вmessageдля преобразования в объект (String, JSON, Klog, SysLog, CLF, Logfmt).Допустимые значения:
String,JSON,Klog,SysLog,CLF,Logfmt -
объектspec.transformations.parseMessage.stringПараметры для
sourceFormat: String. Обязательныregex(регулярное выражение с именованными группами) иsetLabels: итоговый объект собирается по картеsetLabelsиз литералов и шаблонов{{ имя_группы }}(см. примерParseMessage/stringвx-doc-examplesуtransformations).-
строкаspec.transformations.parseMessage.string.regexРегулярное выражение с именованными группами; требуется
setLabels.Шаблон:
^[a-zA-Z0-9_\s\\\[\](){}?*+.^$\-=!:,'\"|<>~#/@]+$ -
объектspec.transformations.parseMessage.string.setLabelsСопоставление ключей результата литералам или шаблонам
{{ имя_группы }}. -
строкаspec.transformations.parseMessage.string.targetFieldTarget field where the structured message is placed.
Шаблон:
^[a-zA-Z0-9_\\\.\-]+$
-
-
строкаspec.transformations.parseMessage.targetLabelПуть назначения для распарсенного значения (по умолчанию
.message). Значение.— слияние с корнем лога. Не может быть.parsed_data.По умолчанию:
.messageШаблон:
^(\.|\.[a-zA-Z0-9_\[\]\\\.\-"/:']+)$
-
-
объектspec.transformations.replaceKeysРекурсивно заменяет вхождения шаблона
sourceна значениеtargetв перечисленных путях к ярлыкам (labels). Пути задаются в нотации Vector с ведущей.у каждого элемента списка.-
массив строкspec.transformations.replaceKeys.labels
Обязательный параметр
Пути к ярлыкам, в которых выполняется замена (полеlabels). Каждый элемент должен начинаться с.(нотация путей Vector, например.pod_labels,.parsed_data).-
строкаspec.transformations.replaceKeys.labels.Элемент массива
Шаблон:
^\.[a-zA-Z0-9_\[\]\\\.\-]+$
-
-
строкаspec.transformations.replaceKeys.source
Обязательный параметр
Шаблон для поиска совпадений. Может быть статической строкой или регулярным выражением. -
строкаspec.transformations.replaceKeys.targetЗначение, на которое будут заменены все совпадения шаблона.
По умолчанию:
‘’
-
-
объектspec.transformations.replaceValueЗаменяет совпадения
sourceв каждом перечисленном скалярном строковом поле наtarget.-
массив строкspec.transformations.replaceValue.labels
Обязательный параметр
Пути к скалярным строковым полям, в которых выполняется замена (полеlabels). Каждый элемент должен начинаться с.(путь Vector, например.message,.parsed_data.token).-
строкаspec.transformations.replaceValue.labels.Элемент массива
Шаблон:
^\.[a-zA-Z0-9_\[\]\\\.\-"/:']+$
-
-
строкаspec.transformations.replaceValue.source
Обязательный параметр
Регулярное выражение для поиска в значении поля.Шаблон:
^[a-zA-Z0-9_\s\\\[\](){}?*+.^$\-=!:,'"|<>~#/@]+$ -
строкаspec.transformations.replaceValue.target
Обязательный параметр
На что заменять; допускаются подстановки{{ имя_группы }}из именованных групп regex.
-
-
строка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.secretRefСсылка на секрет Kubernetes, содержащий сертификат CA (ca.pem), клиентский сертификат (crt.pem), приватный ключ (key.pem) и пароль ключа для клиентского сертификата (keyPass) в формате PEM, закодированном в Base64. Настройки TLS будут переопределены значениями из секрета. Секрет должен находиться в пространстве имён
d8-log-shipperи иметь лейблlog-shipper.deckhouse.io/watch-secret: true.-
строкаspec.vector.tls.secretRef.nameИмя секрета с TLS-сертификатами.
-
-
булевыйspec.vector.tls.verifyCertificateПроверка действия TLS-сертификата удаленного хоста.
По умолчанию:
true -
булевыйspec.vector.tls.verifyHostnameПроверка соответствия имени удаленного хоста и имени, указанного в TLS-сертификате удаленного хоста.
По умолчанию:
true
-
-
-
ClusterLoggingConfig
Scope: Cluster
Описывает источник логов в log-pipeline.
Каждый ресурс ClusterLoggingConfig описывает правила сбора логов из кластера.
-
объектspec
-
массив строкspec.destinationRefs
Обязательный параметр
Массив имен ресурса
ClusterLogDestination, с которыми будет работать этот источник логов.Поля с числовыми и булевыми типами будут преобразованы в строки.
-
объектspec.fileОписывает правило сбора логов из файлов на узле.
-
массив строкspec.file.exclude
Список шаблонов путей к файлам, которые нужно исключить при сборе логов.
Поддерживаются wildcards.
Примеры:
exclude: /var/log/nginx/error.logexclude: /var/log/audit.log -
массив строкspec.file.include
Список шаблонов путей к файлам для сбора логов.
Поддерживаются wildcards.
Примеры:
include: /var/log/*.loginclude: /var/log/nginx/*.log -
строкаspec.file.lineDelimiterСимвол новой строки, который использовать при парсинге логов.
Пример:
lineDelimiter: '\r\n'
-
-
объектspec.kubernetesPodsОписывает правило сбора логов из подов кластера.
-
строкаspec.kubernetesPods.keepDeletedFilesOpenedFor
Указывает время, в течение которого удаленные файлы будут оставаться открытыми для чтения. Vector будет сохранять метаданные подов в течение этого времени, чтобы читать логи из удаленных подов. Эта опция полезна в случаях недоступности хранилища логов или сетевого разделения. Vector будет держать файлы логов открытыми до их окончательной отправки в пункт назначения.
Применение опции может повлиять на потребление ресурсов Vector и также быть причиной нехватки места на диске из-за удаленных файлов с логами. Используйте с осторожностью.
Формат - строка, содержащая единицу времени в часах и минутах: 30m, 1h, 2h30m, 24h.
Шаблон:
^([0-9]+h([0-9]+m)?|[0-9]+m)$ -
объект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Значение лейбла.
-
строкаspec.kubernetesPods.labelSelector.matchExpressions.values.Элемент массива
Длина:
1..63Шаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
-
-
-
объектspec.kubernetesPods.labelSelector.matchLabelsСписок лейблов, которые должен иметь под, чтобы подпадать под условие фильтра.
Пример:
baz: who foo: bar
-
-
объектspec.kubernetesPods.namespaceSelector
Задаёт фильтр по пространствам имен.
Фильтр использует параметр
labelSelectorдля определения пространств имен, из которых должны собираться логи.-
объект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.matchExpressions.values.Элемент массива
Длина:
1..63Шаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
-
-
-
объектspec.kubernetesPods.namespaceSelector.labelSelector.matchLabelsСписок лейблов, которые должно иметь пространство имен, чтобы подпадать под условие фильтра.
Пример:
baz: who foo: bar
-
-
-
-
массив объектов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
-
Описывает источник логов в log-pipeline.
Каждый ресурс ClusterLoggingConfig описывает правила сбора логов из кластера.
-
объектspec
-
массив строкspec.destinationRefs
Обязательный параметр
Массив имен ресурса
ClusterLogDestination, с которыми будет работать этот источник логов.Поля с числовыми и булевыми типами будут преобразованы в строки.
-
объектspec.fileОписывает правило сбора логов из файлов на узле.
-
массив строкspec.file.exclude
Список шаблонов путей к файлам, которые нужно исключить при сборе логов.
Поддерживаются wildcards.
Примеры:
exclude: /var/log/nginx/error.logexclude: /var/log/audit.log -
массив строкspec.file.include
Список шаблонов путей к файлам для сбора логов.
Поддерживаются wildcards.
Примеры:
include: /var/log/*.loginclude: /var/log/nginx/*.log -
строкаspec.file.lineDelimiterСимвол новой строки, который использовать при парсинге логов.
Пример:
lineDelimiter: '\r\n'
-
-
объектspec.kubernetesPodsОписывает правило сбора логов из подов кластера.
-
строкаspec.kubernetesPods.keepDeletedFilesOpenedFor
Указывает время, в течение которого удаленные файлы будут оставаться открытыми для чтения. Vector будет сохранять метаданные подов в течение этого времени, чтобы читать логи из удаленных подов. Эта опция полезна в случаях недоступности хранилища логов или сетевого разделения. Vector будет держать файлы логов открытыми до их окончательной отправки в пункт назначения.
Применение опции может повлиять на потребление ресурсов Vector и также быть причиной нехватки места на диске из-за удаленных файлов с логами. Используйте с осторожностью.
Формат - строка, содержащая единицу времени в часах и минутах: 30m, 1h, 2h30m, 24h.
Шаблон:
^([0-9]+h([0-9]+m)?|[0-9]+m)$ -
объект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Значение лейбла.
-
строкаspec.kubernetesPods.labelSelector.matchExpressions.values.Элемент массива
Длина:
1..63Шаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
-
-
-
объектspec.kubernetesPods.labelSelector.matchLabelsСписок лейблов, которые должен иметь под, чтобы подпадать под условие фильтра.
Пример:
baz: who foo: bar
-
-
объект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.matchExpressions.values.Элемент массива
Длина:
1..63Шаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
-
-
-
объектspec.kubernetesPods.namespaceSelector.labelSelector.matchLabelsСписок лейблов, которые должно иметь пространство имен, чтобы подпадать под условие фильтра.
Пример:
baz: who foo: bar
-
-
массив строк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
Ресурс для описания источника логов в log-pipeline.
Каждый ресурс PodLoggingConfig описывает правила сбора логов из указанного namespace.
-
объектspec
-
массив строкspec.clusterDestinationRefs
Обязательный параметр
Список бэкендов хранения (CRDClusterLogDestination), в которые будет отправлено сообщение. -
строкаspec.keepDeletedFilesOpenedFor
Указывает время, в течение которого удаленные файлы будут оставаться открытыми для чтения. Vector будет сохранять метаданные подов в течение этого времени, чтобы читать логи из удаленных подов. Эта опция полезна в случаях недоступности хранилища логов или сетевого разделения. Vector будет держать файлы логов открытыми до их окончательной отправки в пункт назначения.
Применение опции может повлиять на потребление ресурсов Vector и также быть причиной нехватки места на диске из-за удаленных файлов с логами. Используйте с осторожностью.
Формат - строка, содержащая единицу времени в часах и минутах: 30m, 1h, 2h30m, 24h.
Шаблон:
^([0-9]+h([0-9]+m)?|[0-9]+m)$ -
массив объектовspec.labelFilterСписок правил для фильтрации логов по их лейблам метаданных.
Пример:
labelFilter: - field: container operator: In values: - nginx - field: pod_labels.tier operator: Regex values: - prod-.+ - stage-.+ - field: message operator: Regex values: - .*search_text.*-
строка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Значение лейбла.
-
строкаspec.labelSelector.matchExpressions.values.Элемент массива
Длина:
1..63Шаблон:
[a-z0-9]([-a-z0-9]*[a-z0-9])?
-
-
-
объектspec.labelSelector.matchLabelsСписок лейблов, которые должен иметь под, чтобы подпадать под условие фильтра.
Пример:
baz: who foo: bar
-
-
массив объектов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
-
-