Files
devops-infra-helm-charts-gcp/helm-templates/loki-distributed/charts/grafana-agent-operator/crds/monitoring.grafana.com_podlogs.yaml
T
2026-08-26 03:39:42 +05:30

589 lines
31 KiB
YAML

---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.9.2
creationTimestamp: null
name: podlogs.monitoring.grafana.com
spec:
group: monitoring.grafana.com
names:
categories:
- agent-operator
kind: PodLogs
listKind: PodLogsList
plural: podlogs
singular: podlogs
scope: Namespaced
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
description: PodLogs defines how to collect logs for a pod.
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation
of an object. Servers should convert recognized schemas to the latest
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this
object represents. Servers may infer this from the endpoint the client
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
metadata:
type: object
spec:
description: Spec holds the specification of the desired behavior for
the PodLogs.
properties:
jobLabel:
description: The label to use to retrieve the job name from.
type: string
namespaceSelector:
description: Selector to select which namespaces the Pod objects are
discovered from.
properties:
any:
description: Boolean describing whether all namespaces are selected
in contrast to a list restricting them.
type: boolean
matchNames:
description: List of namespace names to select from.
items:
type: string
type: array
type: object
pipelineStages:
description: Pipeline stages for this pod. Pipeline stages support
transforming and filtering log lines.
items:
description: "PipelineStageSpec defines an individual pipeline stage.
Each stage type is mutually exclusive and no more than one may
be set per stage. \n More information on pipelines can be found
in the Promtail documentation: https://grafana.com/docs/loki/latest/clients/promtail/pipelines/"
properties:
cri:
description: 'CRI is a parsing stage that reads log lines using
the standard CRI logging format. Supply cri: {} to enable.'
type: object
docker:
description: 'Docker is a parsing stage that reads log lines
using the standard Docker logging format. Supply docker: {}
to enable.'
type: object
drop:
description: Drop is a filtering stage that lets you drop certain
logs.
properties:
dropCounterReason:
description: Every time a log line is dropped, the metric
logentry_dropped_lines_total is incremented. A "reason"
label is added, and can be customized by providing a custom
value here. Defaults to "drop_stage".
type: string
expression:
description: "RE2 regular expression. \n If source is provided,
the regex attempts to match the source. \n If no source
is provided, then the regex attempts to attach the log
line. \n If the provided regex matches the log line or
a provided source, the line is dropped."
type: string
longerThan:
description: LongerThan will drop a log line if it its content
is longer than this value (in bytes). Can be expressed
as an integer (8192) or a number with a suffix (8kb).
type: string
olderThan:
description: OlderThan will be parsed as a Go duration.
If the log line's timestamp is older than the current
time minus the provided duration, it will be dropped.
type: string
source:
description: Name from the extract data to parse. If empty,
uses the log message.
type: string
value:
description: "Value can only be specified when source is
specified. If the value provided is an exact match for
the given source then the line will be dropped. \n Mutually
exclusive with expression."
type: string
type: object
json:
description: "JSON is a parsing stage that reads the log line
as JSON and accepts JMESPath expressions to extract data.
\n Information on JMESPath: http://jmespath.org/"
properties:
expressions:
additionalProperties:
type: string
description: "Set of the key/value pairs of JMESPath expressions.
The key will be the key in the extracted data while the
expression will be the value, evaluated as a JMESPath
from the source data. \n Literal JMESPath expressions
can be used by wrapping a key in double quotes, which
then must be wrapped again in single quotes in YAML so
they get passed to the JMESPath parser."
type: object
source:
description: Name from the extracted data to parse as JSON.
If empty, uses entire log message.
type: string
type: object
labelAllow:
description: LabelAllow is an action stage that only allows
the provided labels to be included in the label set that is
sent to Loki with the log entry.
items:
type: string
type: array
labelDrop:
description: LabelDrop is an action stage that drops labels
from the label set that is sent to Loki with the log entry.
items:
type: string
type: array
labels:
additionalProperties:
type: string
description: "Labels is an action stage that takes data from
the extracted map and modifies the label set that is sent
to Loki with the log entry. \n The key is REQUIRED and represents
the name for the label that will be created. Value is optional
and will be the name from extracted data to use for the value
of the label. If the value is not provided, it defaults to
match the key."
type: object
limit:
description: Limit is a rate-limiting stage that throttles logs
based on several options.
properties:
burst:
description: The cap in the quantity of burst lines that
Promtail will push to Loki.
type: integer
drop:
description: "When drop is true, log lines that exceed the
current rate limit are discarded. When drop is false,
log lines that exceed the current rate limit wait to enter
the back pressure mode. \n Defaults to false."
type: boolean
rate:
description: The rate limit in lines per second that Promtail
will push to Loki.
type: integer
type: object
match:
description: Match is a filtering stage that conditionally applies
a set of stages or drop entries when a log entry matches a
configurable LogQL stream selector and filter expressions.
properties:
action:
description: Determines what action is taken when the selector
matches the log line. Can be keep or drop. Defaults to
keep. When set to drop, entries are dropped and no later
metrics are recorded. Stages must be empty when dropping
metrics.
type: string
dropCounterReason:
description: Every time a log line is dropped, the metric
logentry_dropped_lines_total is incremented. A "reason"
label is added, and can be customized by providing a custom
value here. Defaults to "match_stage."
type: string
pipelineName:
description: Names the pipeline. When defined, creates an
additional label in the pipeline_duration_seconds histogram,
where the value is concatenated with job_name using an
underscore.
type: string
selector:
description: LogQL stream selector and filter expressions.
Required.
type: string
stages:
description: "Nested set of pipeline stages to execute when
action is keep and the log line matches selector. \n An
example value for stages may be: \n stages: | - json:
{} - labelAllow: [foo, bar] \n Note that stages is a string
because SIG API Machinery does not support recursive types,
and so it cannot be validated for correctness. Be careful
not to mistype anything."
type: string
required:
- selector
type: object
metrics:
additionalProperties:
description: MetricsStageSpec is an action stage that allows
for defining and updating metrics based on data from the
extracted map. Created metrics are not pushed to Loki or
Prometheus and are instead exposed via the /metrics endpoint
of the Grafana Agent pod. The Grafana Agent Operator should
be configured with a MetricsInstance that discovers the
logging DaemonSet to collect metrics created by this stage.
properties:
action:
description: "The action to take against the metric. Required.
\n Must be either \"inc\" or \"add\" for type: counter
or type: histogram. When type: gauge, must be one of
\"set\", \"inc\", \"dec\", \"add\", or \"sub\". \n \"add\",
\"set\", or \"sub\" requires the extracted value to
be convertible to a positive float."
type: string
buckets:
description: 'Buckets to create. Bucket values must be
convertible to float64s. Extremely large or small numbers
are subject to some loss of precision. Only valid for
type: histogram.'
items:
type: string
type: array
countEntryBytes:
description: "If true all log line bytes are counted.
Can only be set with matchAll: true and action: add.
\n Only valid for type: counter."
type: boolean
description:
description: Sets the description for the created metric.
type: string
matchAll:
description: "If true, all log lines are counted without
attempting to match the source to the extracted map.
Mutually exclusive with value. \n Only valid for type:
counter."
type: boolean
maxIdleDuration:
description: "Label values on metrics are dynamic which
can cause exported metrics to go stale. To prevent unbounded
cardinality, any metrics not updated within MaxIdleDuration
are removed. \n Must be greater or equal to 1s. Defaults
to 5m."
type: string
prefix:
description: Sets the custom prefix name for the metric.
Defaults to "promtail_custom_".
type: string
source:
description: Key from the extracted data map to use for
the metric. Defaults to the metrics name if not present.
type: string
type:
description: The metric type to create. Must be one of
counter, gauge, histogram. Required.
type: string
value:
description: Filters down source data and only changes
the metric if the targeted value matches the provided
string exactly. If not present, all data matches.
type: string
required:
- action
- type
type: object
description: Metrics is an action stage that supports defining
and updating metrics based on data from the extracted map.
Created metrics are not pushed to Loki or Prometheus and are
instead exposed via the /metrics endpoint of the Grafana Agent
pod. The Grafana Agent Operator should be configured with
a MetricsInstance that discovers the logging DaemonSet to
collect metrics created by this stage.
type: object
multiline:
description: Multiline stage merges multiple lines into a multiline
block before passing it on to the next stage in the pipeline.
properties:
firstLine:
description: RE2 regular expression. Creates a new multiline
block when matched. Required.
type: string
maxLines:
description: Maximum number of lines a block can have. A
new block is started if the number of lines surpasses
this value. Defaults to 128.
type: integer
maxWaitTime:
description: Maximum time to wait before passing on the
multiline block to the next stage if no new lines are
received. Defaults to 3s.
type: string
required:
- firstLine
type: object
output:
description: Output stage is an action stage that takes data
from the extracted map and changes the log line that will
be sent to Loki.
properties:
source:
description: Name from extract data to use for the log entry.
Required.
type: string
required:
- source
type: object
pack:
description: Pack is a transform stage that lets you embed extracted
values and labels into the log line by packing the log line
and labels inside of a JSON object.
properties:
ingestTimestamp:
description: If the resulting log line should use any existing
timestamp or use time.Now() when the line was created.
Set to true when combining several log streams from different
containers to avoid out of order errors.
type: boolean
labels:
description: Name from extracted data or line labels. Required.
Labels provided here are automatically removed from output
labels.
items:
type: string
type: array
required:
- labels
type: object
regex:
description: Regex is a parsing stage that parses a log line
using a regular expression. Named capture groups in the regex
allows for adding data into the extracted map.
properties:
expression:
description: RE2 regular expression. Each capture group
MUST be named. Required.
type: string
source:
description: Name from extracted data to parse. If empty,
defaults to using the log message.
type: string
required:
- expression
type: object
replace:
description: Replace is a parsing stage that parses a log line
using a regular expression and replaces the log line. Named
capture groups in the regex allows for adding data into the
extracted map.
properties:
expression:
description: RE2 regular expression. Each capture group
MUST be named. Required.
type: string
replace:
description: Value to replace the captured group with.
type: string
source:
description: Name from extracted data to parse. If empty,
defaults to using the log message.
type: string
required:
- expression
type: object
template:
description: Template is a transform stage that manipulates
the values in the extracted map using Go's template syntax.
properties:
source:
description: Name from extracted data to parse. Required.
If empty, defaults to using the log message.
type: string
template:
description: Go template string to use. Required. In addition
to normal template functions, ToLower, ToUpper, Replace,
Trim, TrimLeft, TrimRight, TrimPrefix, and TrimSpace are
also available.
type: string
required:
- source
- template
type: object
tenant:
description: Tenant is an action stage that sets the tenant
ID for the log entry picking it from a field in the extracted
data map. If the field is missing, the default LogsClientSpec.tenantId
will be used.
properties:
label:
description: Name from labels whose value should be set
as tenant ID. Mutually exclusive with source and value.
type: string
source:
description: Name from extracted data to use as the tenant
ID. Mutually exclusive with label and value.
type: string
value:
description: Value to use for the template ID. Useful when
this stage is used within a conditional pipeline such
as match. Mutually exclusive with label and source.
type: string
type: object
timestamp:
description: Timestamp is an action stage that can change the
timestamp of a log line before it is sent to Loki. If not
present, the timestamp of a log line defaults to the time
when the log line was read.
properties:
actionOnFailure:
description: Action to take when the timestamp can't be
extracted or parsed. Can be skip or fudge. Defaults to
fudge.
type: string
fallbackFormats:
description: Fallback formats to try if format fails.
items:
type: string
type: array
format:
description: 'Determines format of the time string. Required.
Can be one of: ANSIC, UnixDate, RubyDate, RFC822, RFC822Z,
RFC850, RFC1123, RFC1123Z, RFC3339, RFC3339Nano, Unix,
UnixMs, UnixUs, UnixNs.'
type: string
location:
description: IANA Timezone Database string.
type: string
source:
description: Name from extracted data to use as the timestamp.
Required.
type: string
required:
- format
- source
type: object
type: object
type: array
podTargetLabels:
description: PodTargetLabels transfers labels on the Kubernetes Pod
onto the target.
items:
type: string
type: array
relabelings:
description: "RelabelConfigs to apply to logs before delivering. Grafana
Agent Operator automatically adds relabelings for a few standard
Kubernetes fields and replaces original scrape job name with __tmp_logs_job_name.
\n More info: https://grafana.com/docs/loki/latest/clients/promtail/configuration/#relabel_configs"
items:
description: 'RelabelConfig allows dynamic rewriting of the label
set, being applied to samples before ingestion. It defines `<metric_relabel_configs>`-section
of Prometheus configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs'
properties:
action:
default: replace
description: Action to perform based on regex matching. Default
is 'replace'. uppercase and lowercase actions require Prometheus
>= 2.36.
enum:
- replace
- Replace
- keep
- Keep
- drop
- Drop
- hashmod
- HashMod
- labelmap
- LabelMap
- labeldrop
- LabelDrop
- labelkeep
- LabelKeep
- lowercase
- Lowercase
- uppercase
- Uppercase
- keepequal
- KeepEqual
- dropequal
- DropEqual
type: string
modulus:
description: Modulus to take of the hash of the source label
values.
format: int64
type: integer
regex:
description: Regular expression against which the extracted
value is matched. Default is '(.*)'
type: string
replacement:
description: Replacement value against which a regex replace
is performed if the regular expression matches. Regex capture
groups are available. Default is '$1'
type: string
separator:
description: Separator placed between concatenated source label
values. default is ';'.
type: string
sourceLabels:
description: The source labels select values from existing labels.
Their content is concatenated using the configured separator
and matched against the configured regular expression for
the replace, keep, and drop actions.
items:
description: LabelName is a valid Prometheus label name which
may only contain ASCII letters, numbers, as well as underscores.
pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$
type: string
type: array
targetLabel:
description: Label to which the resulting value is written in
a replace action. It is mandatory for replace actions. Regex
capture groups are available.
type: string
type: object
type: array
selector:
description: Selector to select Pod objects. Required.
properties:
matchExpressions:
description: matchExpressions is a list of label selector requirements.
The requirements are ANDed.
items:
description: A label selector requirement is a selector that
contains values, a key, and an operator that relates the key
and values.
properties:
key:
description: key is the label key that the selector applies
to.
type: string
operator:
description: operator represents a key's relationship to
a set of values. Valid operators are In, NotIn, Exists
and DoesNotExist.
type: string
values:
description: values is an array of string values. If the
operator is In or NotIn, the values array must be non-empty.
If the operator is Exists or DoesNotExist, the values
array must be empty. This array is replaced during a strategic
merge patch.
items:
type: string
type: array
required:
- key
- operator
type: object
type: array
matchLabels:
additionalProperties:
type: string
description: matchLabels is a map of {key,value} pairs. A single
{key,value} in the matchLabels map is equivalent to an element
of matchExpressions, whose key field is "key", the operator
is "In", and the values array contains only "value". The requirements
are ANDed.
type: object
type: object
x-kubernetes-map-type: atomic
required:
- selector
type: object
type: object
served: true
storage: true