Download
Link
collectorforopenshift-rhel.yaml
CURL
1curl -O https://www.outcoldsolutions.com/docs/monitoring-openshift/collectorforopenshift-rhel.yamlWGET
1wget https://www.outcoldsolutions.com/docs/monitoring-openshift/collectorforopenshift-rhel.yamlcollectorforopenshift.yaml
1apiVersion: project.openshift.io/v1
2kind: Project
3metadata:
4 labels:
5 app: collectorforopenshift
6 name: collectorforopenshift
7 annotations:
8 openshift.io/node-selector: ''
9 openshift.io/description: 'Monitoring OpenShift in Splunk, built by Outcold Solutions'
10 openshift.io/display-name: 'Collectord for OpenShift'
11---
12apiVersion: apiextensions.k8s.io/v1
13kind: CustomResourceDefinition
14metadata:
15 name: configurations.collectord.io
16spec:
17 group: collectord.io
18 versions:
19 - name: v1
20 served: true
21 storage: true
22 schema:
23 openAPIV3Schema:
24 type: object
25 properties:
26 spec:
27 type: object
28 additionalProperties: true
29 force:
30 type: boolean
31 scope: Cluster
32 names:
33 listKind: ConfigurationList
34 plural: configurations
35 singular: configuration
36 kind: Configuration
37---
38apiVersion: apiextensions.k8s.io/v1
39kind: CustomResourceDefinition
40metadata:
41 name: splunkoutputs.collectord.io
42spec:
43 group: collectord.io
44 versions:
45 - name: v1
46 served: true
47 storage: true
48 schema:
49 openAPIV3Schema:
50 type: object
51 properties:
52 spec:
53 type: object
54 properties:
55 url:
56 type: string
57 format: uri
58 insecure:
59 type: boolean
60 token:
61 type: string
62 description: "Plain token"
63 tokenFromSecret:
64 type: object
65 description: "Reference to a Kubernetes Secret"
66 properties:
67 secret:
68 type: string
69 key:
70 type: string
71 defaultMetricsIndex:
72 type: string
73 description: "Index of the metrics-index records sent through this output; empty for the token's default"
74 incorrectIndexBehavior:
75 type: string
76 description: "What happens to a record the token refuses"
77 enum: ["RedirectToDefault", "Drop", "Retry"]
78 requireExplicitIndex:
79 type: boolean
80 description: "Drop a record that carries no index instead of sending it to the token's default"
81 oneOf:
82 - required: ["token"]
83 - required: ["tokenFromSecret"]
84 scope: Namespaced
85 names:
86 listKind: SplunkOutputList
87 plural: splunkoutputs
88 singular: splunkoutput
89 kind: SplunkOutput
90---
91apiVersion: v1
92kind: ServiceAccount
93metadata:
94 labels:
95 app: collectorforopenshift
96 name: collectorforopenshift
97 namespace: collectorforopenshift
98---
99kind: SecurityContextConstraints
100apiVersion: security.openshift.io/v1
101metadata:
102 name: collectorforopenshift
103 annotations:
104 "helm.sh/hook": pre-install,pre-upgrade
105 "helm.sh/hook-weight": "-10"
106 "helm.sh/hook-delete-policy": before-hook-creation
107allowHostDirVolumePlugin: true
108allowHostIPC: true
109allowHostNetwork: true
110allowHostPID: true
111allowHostPorts: true
112allowPrivilegeEscalation: true
113allowPrivilegedContainer: true
114readOnlyRootFilesystem: false
115allowedCapabilities:
116 - '*'
117allowedUnsafeSysctls:
118 - '*'
119fsGroup:
120 type: RunAsAny
121runAsUser:
122 type: RunAsAny
123seLinuxContext:
124 type: RunAsAny
125supplementalGroups:
126 type: RunAsAny
127seccompProfiles:
128 - '*'
129users:
130 - system:serviceaccount:collectorforopenshift:collectorforopenshift
131volumes:
132 - '*'
133---
134apiVersion: rbac.authorization.k8s.io/v1
135kind: ClusterRole
136metadata:
137 name: collectorforopenshift
138 labels:
139 app: collectorforopenshift
140rules:
141 - apiGroups:
142 - ""
143 resources:
144 - events
145 - namespaces
146 - nodes
147 - nodes/metrics
148 - persistentvolumeclaims
149 - persistentvolumes
150 - pods
151 - replicationcontrollers
152 - resourcequotas
153 - services
154 verbs:
155 - get
156 - list
157 - watch
158 - apiGroups:
159 - apps
160 resources:
161 - daemonsets
162 - deployments
163 - replicasets
164 - statefulsets
165 verbs:
166 - get
167 - list
168 - watch
169 - apiGroups:
170 - batch
171 resources:
172 - cronjobs
173 - jobs
174 verbs:
175 - get
176 - list
177 - watch
178 - apiGroups:
179 - discovery.k8s.io
180 resources:
181 - endpointslices
182 verbs:
183 - get
184 - list
185 - watch
186 - apiGroups:
187 - rbac.authorization.k8s.io
188 resources:
189 - clusterroles
190 verbs:
191 - get
192 - list
193 - watch
194 - apiGroups:
195 - collectord.io
196 resources:
197 - configurations
198 - splunkoutputs
199 verbs:
200 - get
201 - list
202 - watch
203 - apiGroups: []
204 nonResourceURLs:
205 - /metrics
206 resources: []
207 verbs:
208 - get
209 - apiGroups: []
210 nonResourceURLs:
211 - /api
212 - /api/*
213 - /apis
214 - /apis/*
215 resources: []
216 verbs:
217 - get
218 # A SplunkOutput with spec.tokenFromSecret reads the one Secret it names.
219 - apiGroups:
220 - ""
221 resources:
222 - secrets
223 verbs:
224 - get
225 - apiGroups:
226 - apps.openshift.io
227 resources:
228 - deploymentconfigs
229 verbs:
230 - get
231 - list
232 - watch
233 - apiGroups:
234 - quota.openshift.io
235 resources:
236 - clusterresourcequotas
237 verbs:
238 - get
239 - list
240 - watch
241---
242apiVersion: rbac.authorization.k8s.io/v1
243kind: ClusterRoleBinding
244metadata:
245 name: collectorforopenshift
246 labels:
247 app: collectorforopenshift
248roleRef:
249 apiGroup: rbac.authorization.k8s.io
250 kind: ClusterRole
251 name: collectorforopenshift
252subjects:
253 - kind: ServiceAccount
254 name: collectorforopenshift
255 namespace: collectorforopenshift
256---
257apiVersion: v1
258kind: ResourceQuota
259metadata:
260 name: collectorforopenshift-critical-pods
261 namespace: collectorforopenshift
262 labels:
263 app: collectorforopenshift
264spec:
265 hard:
266 pods: 1G
267 scopeSelector:
268 matchExpressions:
269 - scopeName: PriorityClass
270 operator: In
271 values:
272 - system-cluster-critical
273 - system-node-critical
274---
275apiVersion: v1
276kind: ConfigMap
277metadata:
278 name: collectorforopenshift
279 namespace: collectorforopenshift
280 labels:
281 app: collectorforopenshift
282data:
283 001-general.conf: |284 # The general configuration is used for all deployments
285 #
286 # Run collectord with the flag -conf and specify location of the configuration files.
287 #
288 # You can override all the values using environment variables with the format like
289 # COLLECTOR__<ANYNAME>=<section>__<key>=<value>
290 # As an example you can set dataPath in [general] section as
291 # COLLECTOR__DATAPATH=general__dataPath=C:\\some\\path\\data.db
292 # This parameter can be configured using -env-override, set it to empty string to disable this feature
293
294 [general]
295
296 # Please review license https://www.outcoldsolutions.com/legal/license-agreement/
297 # and accept license by changing the value to *true*
298 acceptLicense = false
299
300 # Location for the database
301 # Collectord stores positions of the files and internal state
302 dataPath = ./data/
303
304 # log level (accepted values are trace, debug, info, warn, error, fatal)
305 logLevel = info
306
307 # Internal http server - serves the liveness (/healthz) and readiness (/readyz)
308 # probes. DaemonSets run on the host network, so bind to loopback (127.0.0.1:11888)
309 # to keep the endpoints off the node IP; the kubelet still reaches them via
310 # httpGet.host 127.0.0.1. The addon runs off the host network and overrides the
311 # bind to 0.0.0.0 in 004-addon.conf so the kubelet can reach it on the pod IP.
312 # httpServerBinding = 0.0.0.0:11888
313 httpServerBinding = 127.0.0.1:11888
314 httpServerEndpoints.health = true
315 httpServerEndpoints.ready = true
316 httpServerEndpoints.metrics = false
317 httpServerEndpoints.pprof = false
318
319 httpServerLog = false
320
321 # telemetry report endpoint, set it to empty string to disable telemetry
322 telemetryEndpoint = https://license.outcold.solutions/telemetry/
323
324 licenseEndpoint = https://license.outcold.solutions/license/
325
326 # Only for the Outcold Solutions License Server; one on-premises uses [license.client]
327 licenseServerProxyUrl =
328
329 # user:password
330 licenseServerProxyBasicAuth =
331
332 license =
333
334 # Environment variable $KUBERNETES_NODENAME is used by default to setup hostname
335 # Use value below to override specific name
336 hostname =
337
338 # Default output for events, logs and metrics
339 # valid values: splunk and devnull
340 # Use devnull by default if you don't want to redirect data
341 defaultOutput = splunk
342
343 # The index type of every input that sets no indexType: events, metrics (a Splunk metrics
344 # index; set [output.splunk] defaultMetricsIndex) or both, to compare the dashboards
345 defaultIndexType = events
346
347 fileInputBufferSize = 8kb
348
349 fileInputLineMaxSize = 1mb
350
351 # Include custom fields to attach to every event, in example below every event sent to Splunk will hav
352 # indexed field my_environment=dev. Fields names should match to ^[a-z][_a-z0-9]*$
353 # Better way to configure that is to specify labels for Kubernetes Nodes.
354 # ; fields.my_environment = dev
355 # Identify the cluster if you are planning to monitor multiple clusters
356 fields.openshift_cluster = -
357
358 # Include EC2 Metadata (see list of possible fields https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html)
359 # Should be in format ec2Metadata.{desired_field_name} = {url path to read the value}
360 # ec2Metadata.ec2_instance_id = /latest/meta-data/instance-id
361 # ec2Metadata.ec2_instance_type = /latest/meta-data/instance-type
362
363 # subdomain for the annotations added to the pods, workloads, namespaces or containers, like splunk.collectord.io/..
364 annotationsSubdomain =
365
366 # configure global thruput per second for forwarded logs (metrics are not included)
367 # for example if you set `thruputPerSecond = 512Kb`, that will limit amount of logs forwarded
368 # from the single Collectord instance to 512Kb per second.
369 # You can configure thruput individually for the logs (including specific for container logs) below
370 thruputPerSecond =
371
372 # Configure events that are too old to be forwarded, for example 168h (7 days) - that will drop all events
373 # older than 7 days
374 tooOldEvents =
375
376 # Configure events that are too new to be forwarded, for example 1h - that will drop all events that are 1h in future
377 tooNewEvents =
378
379 # How Collectord spells the fields it composes: "_" (openshift_pod_name, the default) or "."
380 fieldsSeparator =
381
382 # For input.files::X and application logs, when glob or match are configured, Collectord can automatically
383 # detect gzipped files and skip them (based on the extensions or magic numbers)
384 autoSkipGzipFiles = true
385
386 # Publish to non-default outputs asynchronously (default), so a slow or down output does not
387 # block the others; false holds the pipeline back instead of dropping events.
388 multioutput.async = true
389
390 # Buffer size for the async proxy (default 100), per output of each pipeline. When it and
391 # the output's queue are full, events are dropped (multioutput_dropped_events).
392 multioutput.asyncBufferSize = 100
393
394 [license.client]
395 # point to the license located on the HTTP web server, or a hosted by the Collectord running as license server
396 url =
397 basicAuth =
398 insecure = false
399 capath =
400 caname =
401 proxyUrl =
402
403 # user:password
404 proxyBasicAuth =
405
406 [input.collectord_metrics]
407
408 disabled = false
409
410 type = openshift_prometheus
411
412 interval = 1m
413
414 output =
415
416 index =
417
418 # indexType (events, metrics or both) overrides [general] defaultIndexType. Set metricsIndex or
419 # [output.splunk] defaultMetricsIndex: the HEC token's default index is normally an events index.
420 # metricsOutput: an output whose HEC token can write to the metrics index.
421 metricsIndex =
422 metricsOutput =
423
424 # Regular expressions on the metric name: with a whitelist, only the matching metrics are sent
425 whitelist.1 = ^file_input_open$
426 whitelist.2 = ^file_input_read_bytes$
427 whitelist.3 = ^openshift_handlers$
428 whitelist.4 = ^pipe$
429 whitelist.5 = ^pipelines_num$
430 whitelist.6 = ^splunk_post_bytes_sum.*$
431 whitelist.7 = ^splunk_post_events_count_sum.*$
432 whitelist.8 = ^splunk_post_failed_requests$
433 whitelist.9 = ^splunk_post_message_max_lag_seconds_bucket.*$
434 whitelist.10 = ^splunk_post_requests_seconds_sum.*$
435 whitelist.11 = ^splunk_post_retries_required_sum.*$
436
437 [general.kubernetes]
438
439 # Override service URL for Kubernetes (default is ${KUBERNETES_SERVICE_HOST}:${KUBERNETES_SERVICE_PORT})
440 serviceURL =
441
442 # Environment variable $KUBERNETES_NODENAME is used by default to setup nodeName
443 # Use it only when you need to override it
444 nodeName =
445
446 tokenPath = /var/run/secrets/kubernetes.io/serviceaccount/token
447 certPath = /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
448
449 # Default timeout for http responses. The streaming/watch requests depend on this timeout.
450 timeout = 30m
451
452 # How long to keep the cache for the recent calls to API server (to limit number of calls when collectord discovers new pods)
453 metadataTTL = 30s
454
455 podsCgroupFilter = ^/([^/\s]+/)*kubepods(\.slice)?/((kubepods-)?(burstable|besteffort)(\.slice)?/)?([^/]*)pod([0-9a-f]{32}|[0-9a-f\-_]{36})(\.slice)?$
456
457 containersCgroupFilter = ^/([^/\s]+/)*kubepods(\.slice)?/((kubepods-)?(burstable|besteffort)(\.slice)?/)?([^/]*)pod([0-9a-f]{32}|[0-9a-f\-_]{36})(\.slice)?/(docker-|crio-|cri-\w+-)?[0-9a-f]{64}(\.scope)?(\/.+)?$
458
459 # path to the kubelet root location (use it to discover application logs for emptyDir)
460 # the expected format is `pods/{pod-id}/volumes/kubernetes.io~empty-dir/{volume-name}/_data/`
461 volumesRootDir = /rootfs/var/lib/kubelet/
462
463 # You can attach annotations as a metadata, using the format
464 # includeAnnotations.{key} = {regexp}
465 # For example if you want to include all annotations that starts with `prometheus.io` or `example.com` you can include
466 # the following format:
467 # includeAnnotations.1 = ^prometheus\.io.*
468 # includeAnnotations.2 = ^example\.com.*
469
470 # You can exclude labels from metadata, using the format
471 # excludeLabels.{key} = {regexp}
472 # For example if you want to exclude all labels that starts with `prometheus.io` or `example.com` you can include
473 # the following format:
474 # excludeLabels.1 = ^prometheus\.io.*
475 # excludeLabels.2 = ^example\.com.*
476
477 # watch for changes (annotations) in the objects
478 watch.namespace = v1/namespace
479 watch.deployment = apps/v1/deployment
480 watch.configuration = collectord.io/v1/configuration
481
482 # true lets an annotation name a SplunkOutput of another namespace (splunk::user/<namespace>/<name>),
483 # sending the annotated pod's data with that namespace's HEC token into its indexes
484 crossNamespaceUserOutputs = false
485
486 # Collectord can review the assigned ClusterRole and traverse metadata for the Pods only for the Owner objects
487 # that are defined in the ClusterRole, ignoring anything else, it does not have access to.
488 # This way Collectord does not generate 403 requests on API Server
489 clusterRole = collectorforopenshift
490
491 # Alternative of telling Collectord about the ClusterRole is to manually list the objects.
492 # You can define which objects Collectord should traverse when it sees Owners.
493 ; traverseOwnership.namespaces = v1/namespace
494
495 # watch for pods annotations, setup prometheus collection
496 # for these pods
497 # Addon listens on Pod Network
498 # DaemonSets listen on Host Network
499 [input.prometheus_auto]
500
501 disabled = false
502
503 type = openshift_prometheus
504
505 index =
506
507 # indexType (events, metrics or both) overrides [general] defaultIndexType. Set metricsIndex or
508 # [output.splunk] defaultMetricsIndex: the HEC token's default index is normally an events index.
509 # metricsOutput: an output whose HEC token can write to the metrics index.
510 metricsIndex =
511 metricsOutput =
512
513 interval = 60s
514
515 includeHelp = true
516
517 timeout = 30s
518
519 output =
520
521 # Include an Authorization header for the prometheus scrapper
522 # When configuring scrapping with collectord using annotations use prometheus.1-AuthorizationKey=key1
523 # authorization.key1 = Bearer FOO
524
525 [output.splunk]
526
527 url =
528
529 # Specify how URL should be picked up (in case if multiple is used)
530 # urlSelection = random|round-robin|random-with-round-robin
531 # where:
532 # * random - choose random url on first selection and a different random one after each failure (connection or HTTP status code >= 500)
533 # * round-robin - choose url starting from first one and bump on each failure (connection or HTTP status code >= 500)
534 # * random-with-round-robin - choose random url on first selection and after that in round-robin on each
535 # failure (connection or HTTP status code >= 500)
536 # With round-robin and random-with-round-robin, the instances on a failed url can all move to the same next one.
537 urlSelection = random
538 token =
539 insecure = false
540 caPath =
541 caName =
542 clientCertPath =
543 clientKeyPath =
544
545 # Events are batched with the maximum size set by batchSize and staying in pipeline for not longer
546 # than set by frequency
547 frequency = 5s
548 batchSize = 768K
549
550 # limit by the number of events (0 value has no limit on the number of events)
551 events = 50
552 proxyUrl =
553
554 # user:password
555 proxyBasicAuth =
556
557 # Splunk acknowledgement url (.../services/collector/ack)
558 ackUrl =
559 ackEnabled = false
560 ackTimeout = 3m
561
562 # Timeout specifies a time limit for requests made by collectord.
563 # The timeout includes connection time, any
564 # redirects, and reading the response body.
565 timeout = 30s
566 idleConnTimeout = 5m
567
568 # in case when pipeline can post to multiple indexes, we want to avoid posibility of blocking
569 # all pipelines, because just some events have incorrect index
570 dedicatedClientPerIndex = true
571
572 # possible values: RedirectToDefault, Drop, Retry
573 incorrectIndexBehavior = RedirectToDefault
574
575 # gzip compression level (nocompression, default, 1...9)
576 compressionLevel = default
577
578 # number of dedicated splunk output threads (to increase throughput above 4k events per second)
579 threads = 2
580
581 # Default algorithm between threads is roundrobin, but you can change it to weighted
582 ; threadsAlgorithm = weighted
583 threadsAlgorithm = weighted
584
585 # For the move to fieldsSeparator = ".": send every built-in field a second time under its
586 # underscore name (events only). A named output inherits the default output's value.
587 ; duplicateFieldsWithUnderscore = true
588 duplicateFieldsWithUnderscore = false
589
590 # By default if there are no indexes defined on the message, Collectord sends the event without the index, and
591 # Splunk HTTP Event Collector going to use the default index for the Token. You can change that, and tell Collectord
592 # to ignore all events that don't have index defined explicitly
593 ; requireExplicitIndex = true
594 requireExplicitIndex = false
595
596 # Splunk metrics index for the metrics-index records (indexType = metrics or both) of every
597 # input that names no metricsIndex; unset, they land in the HEC token's default index
598 ; defaultMetricsIndex = openshift_metrics
599 defaultMetricsIndex =
600
601 # For messages generated from logs, include unique `event_id` in the event
602 ; includeEventID = false
603 includeEventID = false
604
605 # Dedicated queue size for the output, default is 1024, larger queue sizes will require more memory,
606 # but will allow to handle more events in case of network issues
607 queueSize = 1024608 002-daemonset.conf: | 609 [general.cri-o]
610
611 # url for CRIO API, only unix socket is supported
612 url = unix:///rootfs/var/run/crio/crio.sock
613
614 # Timeout for http responses to docker client. The streaming requests depend on this timeout.
615 timeout = 1m
616
617 [input.system_stats]
618
619 disabled.host = false
620 disabled.cgroup = false
621
622 pathCgroups = /rootfs/sys/fs/cgroup
623
624 pathProc = /rootfs/proc
625
626 statsInterval = 30s
627
628 type.host = openshift_stats_v2_host
629 type.cgroup = openshift_stats_v2_cgroup
630
631 index.host =
632 index.cgroup =
633
634 # indexType (events, metrics or both) overrides [general] defaultIndexType. Set metricsIndex or
635 # [output.splunk] defaultMetricsIndex: the HEC token's default index is normally an events index.
636 # metricsOutput: an output whose HEC token can write to the metrics index.
637 metricsIndex.host =
638 metricsIndex.cgroup =
639 metricsOutput.host =
640 metricsOutput.cgroup =
641
642 output.host =
643 output.cgroup =
644
645 [input.proc_stats]
646
647 disabled = false
648
649 pathProc = /rootfs/proc
650
651 statsInterval = 30s
652
653 type = openshift_proc_stats_v2
654
655 index.host =
656 index.cgroup =
657
658 # proc filesystem includes by default system threads (there can be over 100 of them)
659 # these stats do not help with the observability
660 # excluding them can reduce the size of the index, performance of the searches and usage of the collector
661 includeSystemThreads = false
662
663 output.host =
664 output.cgroup =
665
666 # indexType (events, metrics or both) overrides [general] defaultIndexType. Set metricsIndex or
667 # [output.splunk] defaultMetricsIndex: the HEC token's default index is normally an events index.
668 # metricsOutput: an output whose HEC token can write to the metrics index.
669 metricsIndex =
670 metricsOutput =
671
672 # Hide arguments for the processes, replacing with HIDDEN_ARGS(NUMBER)
673 hideArgs = false
674
675 [input.net_stats]
676
677 disabled = false
678
679 pathProc = /rootfs/proc
680
681 statsInterval = 30s
682
683 type = openshift_net_stats_v2
684
685 index.host =
686 index.cgroup =
687
688 # indexType (events, metrics or both) overrides [general] defaultIndexType. Set metricsIndex or
689 # [output.splunk] defaultMetricsIndex: the HEC token's default index is normally an events index.
690 # metricsOutput: an output whose HEC token can write to the metrics index.
691 metricsIndex.host =
692 metricsIndex.cgroup =
693 metricsOutput.host =
694 metricsOutput.cgroup =
695
696 output.host =
697 output.cgroup =
698
699 [input.net_socket_table]
700
701 disabled = false
702
703 pathProc = /rootfs/proc
704
705 statsInterval = 30s
706
707 type = openshift_net_socket_table
708
709 index.host =
710 index.cgroup =
711
712 output.host =
713 output.cgroup =
714
715 # group connections by tcp_state, localAddr, remoteAddr (if localPort is not the port it is listening on)
716 # that can significally reduces the amount of events
717 group = true
718
719 # Collectord can watch for services, node, and pod IP addresses, and lookup the names
720 # for the IP addresses. Keeping this enabled can add a significant load on the API Server, with large number of pods.
721 disableLookup = false
722
723 [input.mount_stats]
724
725 disabled = false
726
727 statsInterval = 30s
728
729 # root: the filesystem of the kubelet's root directory; auto: every real filesystem, one event each
730 mounts = root
731
732 # with mounts = auto: a regular expression the filesystem type must match, and one the
733 # mount point must not (empty: the defaults)
734 include =
735 exclude =
736
737 type = openshift_mount_stats
738
739 index =
740
741 # indexType (events, metrics or both) overrides [general] defaultIndexType. Set metricsIndex or
742 # [output.splunk] defaultMetricsIndex: the HEC token's default index is normally an events index.
743 # metricsOutput: an output whose HEC token can write to the metrics index.
744 metricsIndex =
745 metricsOutput =
746
747 output =
748
749 [input.disk_stats]
750
751 disabled = false
752
753 statsInterval = 30s
754
755 type = openshift_disk_stats
756
757 index =
758
759 # indexType (events, metrics or both) overrides [general] defaultIndexType. Set metricsIndex or
760 # [output.splunk] defaultMetricsIndex: the HEC token's default index is normally an events index.
761 # metricsOutput: an output whose HEC token can write to the metrics index.
762 metricsIndex =
763 metricsOutput =
764
765 output =
766
767 [input.files]
768
769 disabled = false
770
771 # root location of docker log files
772 # logs are expected in standard docker format like {containerID}/{containerID}-json.log
773 # rotated files
774 path = /rootfs/var/lib/docker/containers/
775
776 # root location of CRI-O files
777 # logs are expected in Kubernetes format, like {podID}/{containerName}/0.log
778 crioPath = /rootfs/var/log/pods/
779
780 # files are read using polling schema, when reach the EOF how often to check if files got updated
781 pollingInterval = 250ms
782
783 # how often to look for the new files under logs path
784 walkingInterval = 5s
785
786 # include verbose fields in events (file offset)
787 verboseFields = false
788
789 type = openshift_logs
790
791 index =
792
793 # docker splits events when they are larger than 10-100k (depends on the docker version)
794 # we join them together by default and forward to Splunk as one event
795 joinPartialEvents = true
796
797 # In case if your containers report messages with terminal colors or other escape sequences
798 # you can enable strip for all the containers in one place.
799 # Better is to enable it only for required container with the annotation collectord.io/logs-escapeterminalsequences=true
800 stripTerminalEscapeSequences = false
801
802 # Regexp used for stripping terminal colors, it does not stip all the escape sequences
803 # Read http://man7.org/linux/man-pages/man4/console_codes.4.html for more information
804 stripTerminalEscapeSequencesRegex = (\x1b\[\d{1,3}(;\d{1,3})*m)|(\x07)|(\x1b]\d+(\s\d)?;[^\x07]+\x07)|(.*\x1b\[K)
805
806 # sample output (-1 does not sample, 20 - only 20% of the logs should be forwarded)
807 samplingPercent = -1
808
809 # sampling key for hash based sampling (should be regexp with the named match pattern `key`)
810 samplingKey =
811
812 output =
813
814 # configure default thruput per second for for each container log
815 # for example if you set `thruputPerSecond = 128Kb`, that will limit amount of logs forwarded
816 # from the single container to 128Kb per second.
817 thruputPerSecond =
818
819 # Configure events that are too old to be forwarded, for example 168h (7 days) - that will drop all events
820 # older than 7 days
821 tooOldEvents =
822
823 # Configure events that are too new to be forwarded, for example 1h - that will drop all events that are 1h in future
824 tooNewEvents =
825
826 # Read rotated logs the kubelet compressed before Collectord read them; false counts them lost
827 readCompressed = true
828
829 # Bytes of those logs inflated at once, node-wide, under [general] dataPath
830 compressedInflateBudget = 256MiB
831
832 # Group each stream's repeated lines into one event per run that counts them.
833 # Off unless true; a workload overrides it with its
834 # collectord.io/logs-repeat-enabled annotation.
835 repeatEnabled = false
836
837 # How long a run is held before its event goes out, up to 10m (a crash resends up to that much)
838 # repeatMaxSpan = 1m
839
840 # Add every line's time to a run's event (collectord_repeat_offsets, milliseconds from its own)
841 # repeatOffsets = false
842
843 # What each stream may remember: distinct lines, lines one event stands for, and bytes
844 # repeatMaxKeys = 256
845 # repeatMaxCount = 1000
846 # repeatMaxBytes = 256KB
847
848 # Fold each stream's lines of one pattern past foldMaxPerMinute into one summary a minute.
849 # Lossy: folded lines are not sent. Off unless true; a workload overrides it with its
850 # collectord.io/logs-fold-enabled annotation.
851 foldEnabled = false
852
853 # Lines of one pattern a minute sent before the rest fold
854 # foldMaxPerMinute = 60
855
856 # Lines never folded (a regular expression; empty: the default)
857 # foldKeep = (?i)error|exception|fatal|panic
858
859 # What each stream may keep a minute: its patterns and summaries
860 # foldMaxBytes = 256KB
861
862 # Report each stream's top patterns every interval, as events of their own.
863 # Off unless true; a workload overrides it with its
864 # collectord.io/logs-patterns-enabled annotation.
865 patternsEnabled = false
866
867 # How often a report goes out, from 1m to 24h
868 # patternsInterval = 15m
869
870 # How many patterns a report carries, up to 100
871 # patternsTop = 20
872
873 # What each stream's patterns may keep; past it a new one takes the place of the lightest
874 # patternsMaxBytes = 256KB
875
876 # The report events' type (empty: the input's type with _patterns after it)
877 # patternsType =
878
879 [input.app_logs]
880
881 disabled = false
882
883 # root location of mounts (applies to hostPath mounts only), if the hostPath differs inside container from the path on host
884 root = /rootfs/
885
886 # how often to review list of available volumes
887 syncInterval = 5s
888
889 glob = *.log*
890
891 # files are read using polling schema, when reach the EOF how often to check if files got updated
892 pollingInterval = 250ms
893
894 # how often to look for the new files under logs path
895 walkingInterval = 5s
896
897 # include verbose fields in events (file offset)
898 verboseFields = false
899
900 type = openshift_logs
901
902 index =
903
904 # we split files using new line character, with this configuration you can specify what defines the new event
905 # after new line
906 eventPatternRegex = ^[^\s]
907 eventPatternMaxInterval = 100ms
908 eventPatternMaxWait = 1s
909 eventPatternMaxSize = 1MB
910
911 # sample output (-1 does not sample, 20 - only 20% of the logs should be forwarded)
912 samplingPercent = -1
913
914 # sampling key for hash based sampling (should be regexp with the named match pattern `key`)
915 samplingKey =
916
917 output =
918
919 # configure default thruput per second for for each container log
920 # for example if you set `thruputPerSecond = 128Kb`, that will limit amount of logs forwarded
921 # from the single container to 128Kb per second.
922 thruputPerSecond =
923
924 # Configure events that are too old to be forwarded, for example 168h (7 days) - that will drop all events
925 # older than 7 days
926 tooOldEvents =
927
928 # Configure events that are too new to be forwarded, for example 1h - that will drop all events that are 1h in future
929 tooNewEvents =
930
931 # Configure how long Collectord should keep the file descriptors open for files, that has not been forwarded yet
932 # When using PVC, and if pipeline is lagging behind, Collectord holding open fd for files, can cause long termination
933 # of pods, as kubelet cannot unmount the PVC volume from the system
934 maxHoldAfterClose = 1800s
935
936 # Group each file's repeated lines into one event per run that counts them.
937 # Off unless true; a workload overrides it with its
938 # collectord.io/volume.<n>-logs-repeat-enabled annotation.
939 repeatEnabled = false
940
941 # How long a run is held before its event goes out, up to 10m (a crash resends up to that much)
942 # repeatMaxSpan = 1m
943
944 # Add every line's time to a run's event (collectord_repeat_offsets, milliseconds from its own)
945 # repeatOffsets = false
946
947 # What each file may remember: distinct lines, lines one event stands for, and bytes
948 # repeatMaxKeys = 256
949 # repeatMaxCount = 1000
950 # repeatMaxBytes = 256KB
951
952 # Fold each file's lines of one pattern past foldMaxPerMinute into one summary a minute.
953 # Lossy: folded lines are not sent. Off unless true; a workload overrides it with its
954 # collectord.io/volume.<n>-logs-fold-enabled annotation.
955 foldEnabled = false
956
957 # Lines of one pattern a minute sent before the rest fold
958 # foldMaxPerMinute = 60
959
960 # Lines never folded (a regular expression; empty: the default)
961 # foldKeep = (?i)error|exception|fatal|panic
962
963 # What each file may keep a minute: its patterns and summaries
964 # foldMaxBytes = 256KB
965
966 # Report each file's top patterns every interval, as events of their own.
967 # Off unless true; a workload overrides it with its
968 # collectord.io/volume.<n>-logs-patterns-enabled annotation.
969 patternsEnabled = false
970
971 # How often a report goes out, from 1m to 24h
972 # patternsInterval = 15m
973
974 # How many patterns a report carries, up to 100
975 # patternsTop = 20
976
977 # What each file's patterns may keep; past it a new one takes the place of the lightest
978 # patternsMaxBytes = 256KB
979
980 # The report events' type (empty: the input's type with _patterns after it)
981 # patternsType =
982
983 [input.files::audit-logs]
984
985 disabled = false
986
987 path = /rootfs/var/log/kube-apiserver/
988
989 glob = audit*.log
990
991 match =
992
993 # limit search only on one level
994 recursive = false
995 nodeSelector = node-role.kubernetes.io/master
996
997 # files are read using polling schema, when reach the EOF how often to check if files got updated
998 pollingInterval = 250ms
999
1000 # how often o look for the new files under logs path
1001 walkingInterval = 5s
1002
1003 # include verbose fields in events (file offset)
1004 verboseFields = false
1005
1006 type = openshift_host_logs
1007
1008 index =
1009
1010 extraction = (?P<message>.*"stageTimestamp":"(?P<timestamp>[^"]+)".*)
1011 extractionMessageField = message
1012
1013 timestampField = timestamp
1014
1015 # format for timestamp
1016 # the layout defines the format by showing how the reference time, defined to be `Mon Jan 2 15:04:05 -0700 MST 2006`
1017 timestampFormat = 2006-01-02T15:04:05.999999999Z07:00
1018
1019 # timestamp location (if not defined by format)
1020 timestampLocation =
1021
1022 # sample output (-1 does not sample, 20 - only 20% of the logs should be forwarded)
1023 samplingPercent = -1
1024
1025 # sampling key for hash based sampling (should be regexp with the named match pattern `key`)
1026 samplingKey =
1027
1028 output =
1029
1030 # configure default thruput per second for this files group
1031 # for example if you set `thruputPerSecond = 128Kb`, that will limit amount of logs forwarded
1032 # from the files in this group to 128Kb per second.
1033 thruputPerSecond =
1034
1035 # Configure events that are too old to be forwarded, for example 168h (7 days) - that will drop all events
1036 # older than 7 days
1037 tooOldEvents =
1038
1039 # Configure events that are too new to be forwarded, for example 1h - that will drop all events that are 1h in future
1040 tooNewEvents =
1041
1042 # by default every new event should start from not space symbol
1043 eventPattern =
1044
1045 # Blacklisting and whitelisting the logs
1046 # whitelist.0 = ^regexp$
1047 # blacklist.0 = ^regexp$
1048
1049 # Lines matching a thruputExempt pattern pass every thruput cap and sampling; with one set,
1050 # a spent cap drops the other lines instead of pausing this input
1051 # thruputExempt.0 = ^regexp$
1052
1053 # Group each file's repeated lines into one event per run that counts them.
1054 # Off unless true.
1055 repeatEnabled = false
1056
1057 # How long a run is held before its event goes out, up to 10m (a crash resends up to that much)
1058 # repeatMaxSpan = 1m
1059
1060 # Add every line's time to a run's event (collectord_repeat_offsets, milliseconds from its own)
1061 # repeatOffsets = false
1062
1063 # What each file may remember: distinct lines, lines one event stands for, and bytes
1064 # repeatMaxKeys = 256
1065 # repeatMaxCount = 1000
1066 # repeatMaxBytes = 256KB
1067
1068 # Fold each file's lines of one pattern past foldMaxPerMinute into one summary a minute.
1069 # Lossy: folded lines are not sent. Off unless true.
1070 foldEnabled = false
1071
1072 # Lines of one pattern a minute sent before the rest fold
1073 # foldMaxPerMinute = 60
1074
1075 # Lines never folded (a regular expression; empty: the default)
1076 # foldKeep = (?i)error|exception|fatal|panic
1077
1078 # What each file may keep a minute: its patterns and summaries
1079 # foldMaxBytes = 256KB
1080
1081 # Report each file's top patterns every interval, as events of their own.
1082 # Off unless true.
1083 patternsEnabled = false
1084
1085 # How often a report goes out, from 1m to 24h
1086 # patternsInterval = 15m
1087
1088 # How many patterns a report carries, up to 100
1089 # patternsTop = 20
1090
1091 # What each file's patterns may keep; past it a new one takes the place of the lightest
1092 # patternsMaxBytes = 256KB
1093
1094 # The report events' type (empty: the input's type with _patterns after it)
1095 # patternsType =
1096
1097 [input.files::oauth-apiserver-audit-logs]
1098
1099 disabled = false
1100
1101 path = /rootfs/var/log/oauth-apiserver/
1102
1103 glob = audit*.log
1104
1105 match =
1106
1107 # limit search only on one level
1108 recursive = false
1109 nodeSelector = node-role.kubernetes.io/master
1110
1111 # files are read using polling schema, when reach the EOF how often to check if files got updated
1112 pollingInterval = 250ms
1113
1114 # how often o look for the new files under logs path
1115 walkingInterval = 5s
1116
1117 # include verbose fields in events (file offset)
1118 verboseFields = false
1119
1120 type = openshift_host_logs
1121
1122 index =
1123
1124 extraction = (?P<message>.*"stageTimestamp":"(?P<timestamp>[^"]+)".*)
1125 extractionMessageField = message
1126
1127 timestampField = timestamp
1128
1129 # format for timestamp
1130 # the layout defines the format by showing how the reference time, defined to be `Mon Jan 2 15:04:05 -0700 MST 2006`
1131 timestampFormat = 2006-01-02T15:04:05.999999999Z07:00
1132
1133 # timestamp location (if not defined by format)
1134 timestampLocation =
1135
1136 # sample output (-1 does not sample, 20 - only 20% of the logs should be forwarded)
1137 samplingPercent = -1
1138
1139 # sampling key for hash based sampling (should be regexp with the named match pattern `key`)
1140 samplingKey =
1141
1142 output =
1143
1144 # configure default thruput per second for this files group
1145 # for example if you set `thruputPerSecond = 128Kb`, that will limit amount of logs forwarded
1146 # from the files in this group to 128Kb per second.
1147 thruputPerSecond =
1148
1149 # Configure events that are too old to be forwarded, for example 168h (7 days) - that will drop all events
1150 # older than 7 days
1151 tooOldEvents =
1152
1153 # Configure events that are too new to be forwarded, for example 1h - that will drop all events that are 1h in future
1154 tooNewEvents =
1155
1156 # by default every new event should start from not space symbol
1157 eventPattern =
1158
1159 # Blacklisting and whitelisting the logs
1160 # whitelist.0 = ^regexp$
1161 # blacklist.0 = ^regexp$
1162
1163 # Lines matching a thruputExempt pattern pass every thruput cap and sampling; with one set,
1164 # a spent cap drops the other lines instead of pausing this input
1165 # thruputExempt.0 = ^regexp$
1166
1167 # Group each file's repeated lines into one event per run that counts them.
1168 # Off unless true.
1169 repeatEnabled = false
1170
1171 # How long a run is held before its event goes out, up to 10m (a crash resends up to that much)
1172 # repeatMaxSpan = 1m
1173
1174 # Add every line's time to a run's event (collectord_repeat_offsets, milliseconds from its own)
1175 # repeatOffsets = false
1176
1177 # What each file may remember: distinct lines, lines one event stands for, and bytes
1178 # repeatMaxKeys = 256
1179 # repeatMaxCount = 1000
1180 # repeatMaxBytes = 256KB
1181
1182 # Fold each file's lines of one pattern past foldMaxPerMinute into one summary a minute.
1183 # Lossy: folded lines are not sent. Off unless true.
1184 foldEnabled = false
1185
1186 # Lines of one pattern a minute sent before the rest fold
1187 # foldMaxPerMinute = 60
1188
1189 # Lines never folded (a regular expression; empty: the default)
1190 # foldKeep = (?i)error|exception|fatal|panic
1191
1192 # What each file may keep a minute: its patterns and summaries
1193 # foldMaxBytes = 256KB
1194
1195 # Report each file's top patterns every interval, as events of their own.
1196 # Off unless true.
1197 patternsEnabled = false
1198
1199 # How often a report goes out, from 1m to 24h
1200 # patternsInterval = 15m
1201
1202 # How many patterns a report carries, up to 100
1203 # patternsTop = 20
1204
1205 # What each file's patterns may keep; past it a new one takes the place of the lightest
1206 # patternsMaxBytes = 256KB
1207
1208 # The report events' type (empty: the input's type with _patterns after it)
1209 # patternsType =
1210
1211 [input.files::oauth-server-audit-logs]
1212
1213 disabled = false
1214
1215 path = /rootfs/var/log/oauth-server/
1216
1217 glob = audit*.log
1218
1219 match =
1220
1221 # limit search only on one level
1222 recursive = false
1223 nodeSelector = node-role.kubernetes.io/master
1224
1225 # files are read using polling schema, when reach the EOF how often to check if files got updated
1226 pollingInterval = 250ms
1227
1228 # how often o look for the new files under logs path
1229 walkingInterval = 5s
1230
1231 # include verbose fields in events (file offset)
1232 verboseFields = false
1233
1234 type = openshift_host_logs
1235
1236 index =
1237
1238 extraction = (?P<message>.*"stageTimestamp":"(?P<timestamp>[^"]+)".*)
1239 extractionMessageField = message
1240
1241 timestampField = timestamp
1242
1243 # format for timestamp
1244 # the layout defines the format by showing how the reference time, defined to be `Mon Jan 2 15:04:05 -0700 MST 2006`
1245 timestampFormat = 2006-01-02T15:04:05.999999999Z07:00
1246
1247 # timestamp location (if not defined by format)
1248 timestampLocation =
1249
1250 # sample output (-1 does not sample, 20 - only 20% of the logs should be forwarded)
1251 samplingPercent = -1
1252
1253 # sampling key for hash based sampling (should be regexp with the named match pattern `key`)
1254 samplingKey =
1255
1256 output =
1257
1258 # configure default thruput per second for this files group
1259 # for example if you set `thruputPerSecond = 128Kb`, that will limit amount of logs forwarded
1260 # from the files in this group to 128Kb per second.
1261 thruputPerSecond =
1262
1263 # Configure events that are too old to be forwarded, for example 168h (7 days) - that will drop all events
1264 # older than 7 days
1265 tooOldEvents =
1266
1267 # Configure events that are too new to be forwarded, for example 1h - that will drop all events that are 1h in future
1268 tooNewEvents =
1269
1270 # by default every new event should start from not space symbol
1271 eventPattern =
1272
1273 # Blacklisting and whitelisting the logs
1274 # whitelist.0 = ^regexp$
1275 # blacklist.0 = ^regexp$
1276
1277 # Lines matching a thruputExempt pattern pass every thruput cap and sampling; with one set,
1278 # a spent cap drops the other lines instead of pausing this input
1279 # thruputExempt.0 = ^regexp$
1280
1281 # Group each file's repeated lines into one event per run that counts them.
1282 # Off unless true.
1283 repeatEnabled = false
1284
1285 # How long a run is held before its event goes out, up to 10m (a crash resends up to that much)
1286 # repeatMaxSpan = 1m
1287
1288 # Add every line's time to a run's event (collectord_repeat_offsets, milliseconds from its own)
1289 # repeatOffsets = false
1290
1291 # What each file may remember: distinct lines, lines one event stands for, and bytes
1292 # repeatMaxKeys = 256
1293 # repeatMaxCount = 1000
1294 # repeatMaxBytes = 256KB
1295
1296 # Fold each file's lines of one pattern past foldMaxPerMinute into one summary a minute.
1297 # Lossy: folded lines are not sent. Off unless true.
1298 foldEnabled = false
1299
1300 # Lines of one pattern a minute sent before the rest fold
1301 # foldMaxPerMinute = 60
1302
1303 # Lines never folded (a regular expression; empty: the default)
1304 # foldKeep = (?i)error|exception|fatal|panic
1305
1306 # What each file may keep a minute: its patterns and summaries
1307 # foldMaxBytes = 256KB
1308
1309 # Report each file's top patterns every interval, as events of their own.
1310 # Off unless true.
1311 patternsEnabled = false
1312
1313 # How often a report goes out, from 1m to 24h
1314 # patternsInterval = 15m
1315
1316 # How many patterns a report carries, up to 100
1317 # patternsTop = 20
1318
1319 # What each file's patterns may keep; past it a new one takes the place of the lightest
1320 # patternsMaxBytes = 256KB
1321
1322 # The report events' type (empty: the input's type with _patterns after it)
1323 # patternsType =
1324
1325 [input.files::openshift-apiserver-audit-logs]
1326
1327 disabled = false
1328
1329 path = /rootfs/var/log/openshift-apiserver/
1330
1331 glob = audit*.log
1332
1333 match =
1334
1335 # limit search only on one level
1336 recursive = false
1337 nodeSelector = node-role.kubernetes.io/master
1338
1339 # files are read using polling schema, when reach the EOF how often to check if files got updated
1340 pollingInterval = 250ms
1341
1342 # how often o look for the new files under logs path
1343 walkingInterval = 5s
1344
1345 # include verbose fields in events (file offset)
1346 verboseFields = false
1347
1348 type = openshift_host_logs
1349
1350 index =
1351
1352 extraction = (?P<message>.*"stageTimestamp":"(?P<timestamp>[^"]+)".*)
1353 extractionMessageField = message
1354
1355 timestampField = timestamp
1356
1357 # format for timestamp
1358 # the layout defines the format by showing how the reference time, defined to be `Mon Jan 2 15:04:05 -0700 MST 2006`
1359 timestampFormat = 2006-01-02T15:04:05.999999999Z07:00
1360
1361 # timestamp location (if not defined by format)
1362 timestampLocation =
1363
1364 # sample output (-1 does not sample, 20 - only 20% of the logs should be forwarded)
1365 samplingPercent = -1
1366
1367 # sampling key for hash based sampling (should be regexp with the named match pattern `key`)
1368 samplingKey =
1369
1370 output =
1371
1372 # configure default thruput per second for this files group
1373 # for example if you set `thruputPerSecond = 128Kb`, that will limit amount of logs forwarded
1374 # from the files in this group to 128Kb per second.
1375 thruputPerSecond =
1376
1377 # Configure events that are too old to be forwarded, for example 168h (7 days) - that will drop all events
1378 # older than 7 days
1379 tooOldEvents =
1380
1381 # Configure events that are too new to be forwarded, for example 1h - that will drop all events that are 1h in future
1382 tooNewEvents =
1383
1384 # by default every new event should start from not space symbol
1385 eventPattern =
1386
1387 # Blacklisting and whitelisting the logs
1388 # whitelist.0 = ^regexp$
1389 # blacklist.0 = ^regexp$
1390
1391 # Lines matching a thruputExempt pattern pass every thruput cap and sampling; with one set,
1392 # a spent cap drops the other lines instead of pausing this input
1393 # thruputExempt.0 = ^regexp$
1394
1395 # Group each file's repeated lines into one event per run that counts them.
1396 # Off unless true.
1397 repeatEnabled = false
1398
1399 # How long a run is held before its event goes out, up to 10m (a crash resends up to that much)
1400 # repeatMaxSpan = 1m
1401
1402 # Add every line's time to a run's event (collectord_repeat_offsets, milliseconds from its own)
1403 # repeatOffsets = false
1404
1405 # What each file may remember: distinct lines, lines one event stands for, and bytes
1406 # repeatMaxKeys = 256
1407 # repeatMaxCount = 1000
1408 # repeatMaxBytes = 256KB
1409
1410 # Fold each file's lines of one pattern past foldMaxPerMinute into one summary a minute.
1411 # Lossy: folded lines are not sent. Off unless true.
1412 foldEnabled = false
1413
1414 # Lines of one pattern a minute sent before the rest fold
1415 # foldMaxPerMinute = 60
1416
1417 # Lines never folded (a regular expression; empty: the default)
1418 # foldKeep = (?i)error|exception|fatal|panic
1419
1420 # What each file may keep a minute: its patterns and summaries
1421 # foldMaxBytes = 256KB
1422
1423 # Report each file's top patterns every interval, as events of their own.
1424 # Off unless true.
1425 patternsEnabled = false
1426
1427 # How often a report goes out, from 1m to 24h
1428 # patternsInterval = 15m
1429
1430 # How many patterns a report carries, up to 100
1431 # patternsTop = 20
1432
1433 # What each file's patterns may keep; past it a new one takes the place of the lightest
1434 # patternsMaxBytes = 256KB
1435
1436 # The report events' type (empty: the input's type with _patterns after it)
1437 # patternsType =
1438
1439 [input.journald]
1440
1441 disabled = false
1442
1443 path.persistent = /rootfs/var/log/journal/
1444
1445 # when reach end of journald, how often to pull
1446 pollingInterval = 250ms
1447
1448 # if you don't want to forward journald from the beginning,
1449 # set the oldest event in relative value, like -14h or -30m or -30s (h/m/s supported)
1450 startFromRel =
1451
1452 type = openshift_host_logs
1453
1454 index =
1455
1456 # sample output (-1 does not sample, 20 - only 20% of the logs should be forwarded)
1457 samplingPercent = -1
1458
1459 # sampling key (should be regexp with the named match pattern `key`)
1460 samplingKey =
1461
1462 # how often to reopen the journald to free old files
1463 reopenInterval = 1h
1464
1465 output =
1466
1467 # configure default thruput per second for journald
1468 # for example if you set `thruputPerSecond = 128Kb`, that will limit amount of logs forwarded
1469 # from the journald to 128Kb per second.
1470 thruputPerSecond =
1471
1472 # Configure events that are too old to be forwarded, for example 168h (7 days) - that will drop all events
1473 # older than 7 days
1474 tooOldEvents =
1475
1476 # Configure events that are too new to be forwarded, for example 1h - that will drop all events that are 1h in future
1477 tooNewEvents =
1478
1479 # by default every new event should start from not space symbol
1480 eventPattern = ^[^\s]
1481
1482 # By default ignoring verbose hyperkube logs (all INFO messages)
1483 blacklist.1 = ^I\d+.*$
1484
1485 # Lines matching a thruputExempt pattern pass every thruput cap and sampling; with one set,
1486 # a spent cap drops the other lines instead of pausing journald
1487
1488 # Move Journald logs reader to a separate process, to prevent process from crashing in case of corrupted log files
1489 spawnExternalProcess = false
1490
1491 # Group each writer's repeated lines into one event per run that counts them.
1492 # Off unless true.
1493 # A writer is a unit, identifier, command, process, priority and facility: never grouped with another.
1494 repeatEnabled = false
1495
1496 # How long a run is held before its event goes out, up to 10m (a crash resends up to that much)
1497 # repeatMaxSpan = 1m
1498
1499 # Add every line's time to a run's event (collectord_repeat_offsets, milliseconds from its own)
1500 # repeatOffsets = false
1501
1502 # What the journal, all its writers together, may remember: distinct lines, lines one event stands for, and bytes
1503 # repeatMaxKeys = 256
1504 # repeatMaxCount = 1000
1505 # repeatMaxBytes = 256KB
1506
1507 # Fold each writer's lines of one pattern past foldMaxPerMinute into one summary a minute.
1508 # Lossy: folded lines are not sent. Off unless true.
1509 # A writer is a unit, identifier, command, process, priority and facility: never folded with another.
1510 foldEnabled = false
1511
1512 # Lines of one pattern a minute sent before the rest fold
1513 # foldMaxPerMinute = 60
1514
1515 # Lines never folded (a regular expression; empty: the default)
1516 # foldKeep = (?i)error|exception|fatal|panic
1517
1518 # What the journal, all its writers together, may keep a minute: its patterns and summaries
1519 # foldMaxBytes = 256KB
1520
1521 # Report the journal's top patterns every interval, as events of their own.
1522 # Off unless true.
1523 # A writer is a unit, identifier, command, process, priority and facility: its lines never share a pattern with another's, and the top patterns are of all its writers together.
1524 patternsEnabled = false
1525
1526 # How often a report goes out, from 1m to 24h
1527 # patternsInterval = 15m
1528
1529 # How many patterns a report carries, up to 100
1530 # patternsTop = 20
1531
1532 # What the journal's patterns may keep; past it a new one takes the place of the lightest
1533 # patternsMaxBytes = 256KB
1534
1535 # The report events' type (empty: the input's type with _patterns after it)
1536 # patternsType =
1537
1538 # Pipe to join events (container logs only)
1539 [pipe.join]
1540
1541 disabled = false
1542
1543 maxInterval = 100ms
1544
1545 maxWait = 1s
1546
1547 maxSize = 1MB
1548
1549 # Default pattern to indicate new message (should start not from space)
1550 patternRegex = ^[^\s]
1551
1552 # You can configure global replace rules for the events, which can help to remove sensitive data
1553 # from logs before they are sent to outputs. Those rules will be applied to all pipelines for container logs, host logs,
1554 # application logs and events.
1555 # In the following example we replace password=TEST with password=********
1556 ; [pipe.replace::name]
1557 ; patternRegex = (password=)([^\s]+)
1558 ; replace = $1********
1559
1560 # You can configure global hash rules for the events, which can help to hide sensitive data
1561 # from logs before they are sent to outputs. Those rules will be applied to all pipelines for container logs, host logs,
1562 # application logs and events.
1563 # In the following example we hash IP addresses with fnv-1a-64
1564 ; [pipe.hash::name]
1565 ; match = (\d{1,3}\.){3}\d{1,3}'
1566 ; function = fnv-1a-64
1567
1568 # Log lines matching patternRegex pass every thruput cap and sampling, in the workloads whose
1569 # fields match every matchRegex.<field>; over its cap such a workload drops its other lines
1570 # instead of pausing. Select by namespace: pod, container and image names are the workload
1571 # owner's to choose, and label fields never match
1572 ; [pipe.thruput_exempt::payments-audit]
1573 ; matchRegex.openshift_namespace = ^payments$
1574 ; patternRegex = ^AUDIT
1575
1576 # Count the events and bytes leaving every pipeline (pipeline_events, pipeline_bytes);
1577 # maxSeries bounds the label combinations. Fields are written with underscores.
1578 ; [pipe.eventcount]
1579 ; labels = index, sourcetype, output
1580 ; fields = openshift_namespace
1581 ; maxSeries = 1000
1582
1583 [input.prometheus::controller]
1584
1585 disabled = false
1586
1587 type = openshift_prometheus
1588
1589 index =
1590
1591 source = controller
1592
1593 # indexType (events, metrics or both) overrides [general] defaultIndexType. Set metricsIndex or
1594 # [output.splunk] defaultMetricsIndex: the HEC token's default index is normally an events index.
1595 # metricsOutput: an output whose HEC token can write to the metrics index.
1596 metricsIndex =
1597 metricsOutput =
1598
1599 # Override host (environment variables are supported)
1600 host = ${KUBERNETES_NODENAME}
1601
1602 source = controller
1603
1604 interval = 60s
1605
1606 timeout = 60s
1607
1608 # === WHERE: pick one of podSelector, endpointSlice, service, or endpoint(s) ===
1609 # podSelector (with podNamespace): the pods on this node a label selector matches;
1610 # endpoint(s) beside it are the fallback on a node where none runs.
1611 podNamespace = openshift-kube-controller-manager
1612 podSelector = app=kube-controller-manager
1613
1614 # endpointSlice / service: <name>.<namespace>. Omit the namespace to aggregate cluster-wide.
1615
1616 # endpoint.N: literal URLs, the first that answers
1617
1618 endpoint.1 = https://127.0.0.1:10257/metrics
1619
1620 # nodeSelector: the nodes the literal endpoint(s) are scraped on
1621 nodeSelector = node-role.kubernetes.io/master
1622
1623 # === HOW: port (number) or portName, plus scheme and path ===
1624 port = 10257
1625
1626 scheme = https
1627 path = /metrics
1628
1629 # token for "Authorization: Bearer $(cat tokenPath)"
1630 tokenPath = /var/run/secrets/kubernetes.io/serviceaccount/token
1631
1632 # server certificate for certificate validation
1633 certPath = /var/run/secrets/kubernetes.io/serviceaccount/service-ca.crt
1634
1635 # the name the server certificate is verified against, when not the address dialed
1636 caName = kube-controller-manager.openshift-kube-controller-manager.svc
1637
1638 clientCertPath =
1639
1640 insecure = false
1641
1642 includeHelp = false
1643
1644 output =
1645
1646 # Regular expressions on the metric name: with a whitelist, only the matching metrics are sent
1647
1648 whitelist.1 = ^(kubernetes|openshift)_build_info$
1649 whitelist.2 = ^node_collector_zone_size$
1650 whitelist.3 = ^node_collector_zone_health$
1651 whitelist.4 = ^node_collector_unhealthy_nodes_in_zone$
1652 whitelist.5 = ^node_collector_evictions_total$
1653 whitelist.6 = ^workqueue_depth$
1654 whitelist.7 = ^workqueue_retries_total$
1655 whitelist.8 = ^workqueue_longest_running_processor_seconds$
1656 whitelist.9 = ^leader_election_master_status$
1657 whitelist.10 = ^rest_client_requests_total$
1658 whitelist.11 = ^rest_client_request_duration_seconds_sum$
1659 whitelist.12 = ^process_cpu_seconds_total$
1660 whitelist.13 = ^process_resident_memory_bytes$
1661 whitelist.14 = ^process_virtual_memory_bytes$
1662 whitelist.15 = ^process_open_fds$
1663 whitelist.16 = ^process_max_fds$
1664 whitelist.17 = ^go_goroutines$
1665 whitelist.18 = ^process_start_time_seconds$
1666
1667 [input.prometheus::coredns]
1668
1669 disabled = false
1670
1671 type = openshift_prometheus
1672
1673 index =
1674
1675 source = coredns
1676
1677 # indexType (events, metrics or both) overrides [general] defaultIndexType. Set metricsIndex or
1678 # [output.splunk] defaultMetricsIndex: the HEC token's default index is normally an events index.
1679 # metricsOutput: an output whose HEC token can write to the metrics index.
1680 metricsIndex =
1681 metricsOutput =
1682
1683 # Override host (environment variables are supported)
1684 host = ${KUBERNETES_NODENAME}
1685
1686 source = coredns
1687
1688 interval = 60s
1689
1690 timeout = 60s
1691
1692 # === WHERE: pick one of podSelector, endpointSlice, service, or endpoint(s) ===
1693 # podSelector (with podNamespace): the pods on this node a label selector matches;
1694 # endpoint(s) beside it are the fallback on a node where none runs.
1695 podNamespace = openshift-dns
1696 podSelector = dns.operator.openshift.io/daemonset-dns=default
1697
1698 # endpointSlice / service: <name>.<namespace>. Omit the namespace to aggregate cluster-wide.
1699
1700 # endpoint.N: literal URLs, the first that answers
1701
1702 # nodeSelector: the nodes the literal endpoint(s) are scraped on
1703
1704 # === HOW: port (number) or portName, plus scheme and path ===
1705 port = 9154
1706
1707 scheme = https
1708 path = /metrics
1709
1710 # token for "Authorization: Bearer $(cat tokenPath)"
1711 tokenPath = /var/run/secrets/kubernetes.io/serviceaccount/token
1712
1713 # server certificate for certificate validation
1714 certPath = /var/run/secrets/kubernetes.io/serviceaccount/service-ca.crt
1715
1716 # the name the server certificate is verified against, when not the address dialed
1717 caName = dns-default.openshift-dns.svc
1718
1719 clientCertPath =
1720
1721 insecure = false
1722
1723 includeHelp = false
1724
1725 output =
1726
1727 # Regular expressions on the metric name: with a whitelist, only the matching metrics are sent
1728
1729 whitelist.1 = ^coredns_.+$
1730 whitelist.2 = ^go_gc_duration_seconds$
1731 whitelist.3 = ^go_goroutines$
1732 whitelist.4 = ^go_memstats_heap_inuse_bytes$
1733 whitelist.5 = ^process_cpu_seconds_total$
1734 whitelist.6 = ^process_network_receive_bytes_total$
1735 whitelist.7 = ^process_network_transmit_bytes_total$
1736 whitelist.8 = ^process_open_fds$
1737 whitelist.9 = ^process_resident_memory_bytes$
1738 whitelist.10 = ^process_start_time_seconds$
1739 whitelist.11 = ^process_virtual_memory_bytes$
1740
1741 [input.prometheus::etcd]
1742
1743 disabled = false
1744
1745 type = openshift_prometheus
1746
1747 index =
1748
1749 source = etcd
1750
1751 # indexType (events, metrics or both) overrides [general] defaultIndexType. Set metricsIndex or
1752 # [output.splunk] defaultMetricsIndex: the HEC token's default index is normally an events index.
1753 # metricsOutput: an output whose HEC token can write to the metrics index.
1754 metricsIndex =
1755 metricsOutput =
1756
1757 # Override host (environment variables are supported)
1758 host = ${KUBERNETES_NODENAME}
1759
1760 source = etcd
1761
1762 interval = 60s
1763
1764 timeout = 60s
1765
1766 # === WHERE: pick one of podSelector, endpointSlice, service, or endpoint(s) ===
1767 # podSelector (with podNamespace): the pods on this node a label selector matches;
1768 # endpoint(s) beside it are the fallback on a node where none runs.
1769
1770 # endpointSlice / service: <name>.<namespace>. Omit the namespace to aggregate cluster-wide.
1771
1772 # endpoint.N: literal URLs, the first that answers
1773
1774 endpoint.1 = https://:9979/metrics
1775 endpoint.2 = https://:9978/metrics
1776
1777 # nodeSelector: the nodes the literal endpoint(s) are scraped on
1778 nodeSelector = node-role.kubernetes.io/master
1779
1780 # === HOW: port (number) or portName, plus scheme and path ===
1781
1782 # token for "Authorization: Bearer $(cat tokenPath)"
1783 tokenPath =
1784
1785 # server certificate for certificate validation
1786 certPath = /rootfs/etc/kubernetes/static-pod-resources/etcd-certs/secrets/etcd-all-certs/etcd-serving-*.crt
1787
1788 clientCertPath = /rootfs/etc/kubernetes/static-pod-resources/etcd-certs/secrets/etcd-all-certs/etcd-peer-*.crt
1789 clientKeyPath = /rootfs/etc/kubernetes/static-pod-resources/etcd-certs/secrets/etcd-all-certs/etcd-peer-*.key
1790
1791 insecure = true
1792
1793 includeHelp = false
1794
1795 output =
1796
1797 # Regular expressions on the metric name: with a whitelist, only the matching metrics are sent
1798
1799 whitelist.1 = ^etcd_server_leader_changes_seen_total$
1800 whitelist.2 = ^etcd_server_has_leader$
1801 whitelist.3 = ^etcd_server_is_leader$
1802 whitelist.4 = ^etcd_server_proposals_committed_total$
1803 whitelist.5 = ^etcd_server_proposals_applied_total$
1804 whitelist.6 = ^etcd_server_proposals_pending$
1805 whitelist.7 = ^etcd_server_proposals_failed_total$
1806 whitelist.8 = ^etcd_disk_wal_fsync_duration_seconds_sum$
1807 whitelist.9 = ^etcd_disk_wal_fsync_duration_seconds_bucket$
1808 whitelist.10 = ^etcd_disk_backend_commit_duration_seconds_sum$
1809 whitelist.11 = ^etcd_disk_backend_commit_duration_seconds_bucket$
1810 whitelist.12 = ^etcd_network_client_grpc_.*$
1811 whitelist.13 = ^grpc_server_handled_total$
1812 whitelist.14 = ^etcd_network_peer_round_trip_time_seconds_bucket$
1813 whitelist.15 = ^etcd_network_peer_sent_failures_total$
1814 whitelist.16 = ^etcd_mvcc_db_total_size_in_bytes$
1815 whitelist.17 = ^etcd_mvcc_db_total_size_in_use_in_bytes$
1816 whitelist.18 = ^etcd_server_quota_backend_bytes$
1817 whitelist.19 = ^etcd_debugging_mvcc_keys_total$
1818 whitelist.20 = ^etcd_server_slow_apply_total$
1819 whitelist.21 = ^etcd_server_slow_read_indexes_total$
1820 whitelist.22 = ^etcd_server_read_indexes_failed_total$
1821 whitelist.23 = ^etcd_server_health_failures$
1822 whitelist.24 = ^process_cpu_seconds_total$
1823 whitelist.25 = ^process_resident_memory_bytes$
1824 whitelist.26 = ^process_virtual_memory_bytes$
1825 whitelist.27 = ^process_open_fds$
1826 whitelist.28 = ^process_max_fds$
1827 whitelist.29 = ^go_goroutines$
1828 whitelist.30 = ^process_start_time_seconds$
1829 whitelist.31 = ^etcd_server_version$
1830 whitelist.32 = ^etcd_cluster_version$
1831 whitelist.33 = ^etcd_server_go_version$
1832 whitelist.34 = ^etcd_server_id$
1833 whitelist.35 = ^etcd_network_peer_round_trip_time_seconds_sum$
1834
1835 # counters, by name, whose series are not sent until they first rise above 0
1836 skipZeroCounters.1 = ^grpc_server_handled_total$
1837
1838 [input.prometheus::kubelet]
1839
1840 disabled = false
1841
1842 type = openshift_prometheus
1843
1844 index =
1845
1846 source = kubelet
1847
1848 # indexType (events, metrics or both) overrides [general] defaultIndexType. Set metricsIndex or
1849 # [output.splunk] defaultMetricsIndex: the HEC token's default index is normally an events index.
1850 # metricsOutput: an output whose HEC token can write to the metrics index.
1851 metricsIndex =
1852 metricsOutput =
1853
1854 # Override host (environment variables are supported)
1855 host = ${KUBERNETES_NODENAME}
1856
1857 source = kubelet
1858
1859 interval = 60s
1860
1861 timeout = 60s
1862
1863 # === WHERE: pick one of podSelector, endpointSlice, service, or endpoint(s) ===
1864 # podSelector (with podNamespace): the pods on this node a label selector matches;
1865 # endpoint(s) beside it are the fallback on a node where none runs.
1866
1867 # endpointSlice / service: <name>.<namespace>. Omit the namespace to aggregate cluster-wide.
1868
1869 # endpoint.N: literal URLs, the first that answers
1870
1871 endpoint.1 = https://${KUBERNETES_NODEIP}:10250/metrics
1872
1873 # nodeSelector: the nodes the literal endpoint(s) are scraped on
1874
1875 # === HOW: port (number) or portName, plus scheme and path ===
1876
1877 # token for "Authorization: Bearer $(cat tokenPath)"
1878 tokenPath = /var/run/secrets/kubernetes.io/serviceaccount/token
1879
1880 # server certificate for certificate validation
1881 certPath = /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
1882
1883 clientCertPath =
1884
1885 insecure = true
1886
1887 includeHelp = false
1888
1889 output =
1890
1891 # Regular expressions on the metric name: with a whitelist, only the matching metrics are sent
1892
1893 whitelist.1 = ^(kubernetes|openshift)_build_info$
1894 whitelist.2 = ^kubelet_runtime_operations_duration_seconds_sum$
1895 whitelist.3 = ^kubelet_runtime_operations_errors_total$
1896 whitelist.4 = ^kubelet_cgroup_manager_duration_seconds_sum$
1897 whitelist.5 = ^storage_operation_duration_seconds_sum$
1898 whitelist.6 = ^kubelet_volume_stats_.+$
1899 whitelist.7 = ^kubelet_running_pods$
1900 whitelist.8 = ^kubelet_running_containers$
1901 whitelist.9 = ^kubelet_desired_pods$
1902 whitelist.10 = ^kubelet_pleg_relist_duration_seconds_sum$
1903 whitelist.11 = ^kubelet_pod_start_duration_seconds_sum$
1904 whitelist.12 = ^kubelet_pod_worker_duration_seconds_sum$
1905 whitelist.13 = ^kubelet_started_pods_errors_total$
1906 whitelist.14 = ^kubelet_certificate_manager_client_ttl_seconds$
1907 whitelist.15 = ^rest_client_requests_total$
1908 whitelist.16 = ^rest_client_request_duration_seconds_sum$
1909 whitelist.17 = ^process_cpu_seconds_total$
1910 whitelist.18 = ^process_resident_memory_bytes$
1911 whitelist.19 = ^process_virtual_memory_bytes$
1912 whitelist.20 = ^process_open_fds$
1913 whitelist.21 = ^process_max_fds$
1914 whitelist.22 = ^go_goroutines$
1915 whitelist.23 = ^process_start_time_seconds$
1916
1917 [input.prometheus::kubernetes-api]
1918
1919 disabled = false
1920
1921 type = openshift_prometheus
1922
1923 index =
1924
1925 source = kubernetes-api
1926
1927 # indexType (events, metrics or both) overrides [general] defaultIndexType. Set metricsIndex or
1928 # [output.splunk] defaultMetricsIndex: the HEC token's default index is normally an events index.
1929 # metricsOutput: an output whose HEC token can write to the metrics index.
1930 metricsIndex =
1931 metricsOutput =
1932
1933 # Override host (environment variables are supported)
1934 host = ${KUBERNETES_NODENAME}
1935
1936 source = kubernetes-api
1937
1938 interval = 60s
1939
1940 timeout = 60s
1941
1942 # === WHERE: pick one of podSelector, endpointSlice, service, or endpoint(s) ===
1943 # podSelector (with podNamespace): the pods on this node a label selector matches;
1944 # endpoint(s) beside it are the fallback on a node where none runs.
1945 podNamespace = openshift-kube-apiserver
1946 podSelector = app=openshift-kube-apiserver
1947
1948 # endpointSlice / service: <name>.<namespace>. Omit the namespace to aggregate cluster-wide.
1949
1950 # endpoint.N: literal URLs, the first that answers
1951
1952 endpoint.1 = https://${KUBERNETES_SERVICE_HOST}:${KUBERNETES_SERVICE_PORT}/metrics
1953
1954 # nodeSelector: the nodes the literal endpoint(s) are scraped on
1955 nodeSelector = node-role.kubernetes.io/master
1956
1957 # === HOW: port (number) or portName, plus scheme and path ===
1958 port = 6443
1959
1960 scheme = https
1961 path = /metrics
1962
1963 # token for "Authorization: Bearer $(cat tokenPath)"
1964 tokenPath = /var/run/secrets/kubernetes.io/serviceaccount/token
1965
1966 # server certificate for certificate validation
1967 certPath = /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
1968
1969 # the name the server certificate is verified against, when not the address dialed
1970 caName = kubernetes
1971
1972 clientCertPath =
1973
1974 insecure = false
1975
1976 includeHelp = false
1977
1978 output =
1979
1980 # Regular expressions on the metric name: with a whitelist, only the matching metrics are sent
1981
1982 whitelist.1 = ^(kubernetes|openshift)_build_info$
1983 whitelist.2 = ^authenticated_user_requests$
1984 whitelist.3 = ^apiserver_request_total$
1985 whitelist.4 = ^apiserver_current_inflight_requests$
1986 whitelist.5 = ^apiserver_flowcontrol_current_inqueue_requests$
1987 whitelist.6 = ^apiserver_request_terminations_total$
1988 whitelist.7 = ^apiserver_client_certificate_expiration_seconds_bucket$
1989 whitelist.8 = ^apiserver_audit_event_total$
1990 whitelist.9 = ^apiserver_audit_error_total$
1991 whitelist.10 = ^apiserver_resource_objects$
1992 whitelist.11 = ^apiserver_storage_objects$
1993 whitelist.12 = ^process_cpu_seconds_total$
1994 whitelist.13 = ^process_resident_memory_bytes$
1995 whitelist.14 = ^process_virtual_memory_bytes$
1996 whitelist.15 = ^process_open_fds$
1997 whitelist.16 = ^process_max_fds$
1998 whitelist.17 = ^go_goroutines$
1999 whitelist.18 = ^process_start_time_seconds$
2000 whitelist.19 = ^apiserver_request_duration_seconds_sum$
2001
2002 [input.prometheus::scheduler]
2003
2004 disabled = false
2005
2006 type = openshift_prometheus
2007
2008 index =
2009
2010 source = scheduler
2011
2012 # indexType (events, metrics or both) overrides [general] defaultIndexType. Set metricsIndex or
2013 # [output.splunk] defaultMetricsIndex: the HEC token's default index is normally an events index.
2014 # metricsOutput: an output whose HEC token can write to the metrics index.
2015 metricsIndex =
2016 metricsOutput =
2017
2018 # Override host (environment variables are supported)
2019 host = ${KUBERNETES_NODENAME}
2020
2021 source = scheduler
2022
2023 interval = 60s
2024
2025 timeout = 60s
2026
2027 # === WHERE: pick one of podSelector, endpointSlice, service, or endpoint(s) ===
2028 # podSelector (with podNamespace): the pods on this node a label selector matches;
2029 # endpoint(s) beside it are the fallback on a node where none runs.
2030 podNamespace = openshift-kube-scheduler
2031 podSelector = app=openshift-kube-scheduler
2032
2033 # endpointSlice / service: <name>.<namespace>. Omit the namespace to aggregate cluster-wide.
2034
2035 # endpoint.N: literal URLs, the first that answers
2036
2037 endpoint.1 = https://127.0.0.1:10259/metrics
2038
2039 # nodeSelector: the nodes the literal endpoint(s) are scraped on
2040 nodeSelector = node-role.kubernetes.io/master
2041
2042 # === HOW: port (number) or portName, plus scheme and path ===
2043 port = 10259
2044
2045 scheme = https
2046 path = /metrics
2047
2048 # token for "Authorization: Bearer $(cat tokenPath)"
2049 tokenPath = /var/run/secrets/kubernetes.io/serviceaccount/token
2050
2051 # server certificate for certificate validation
2052 certPath = /var/run/secrets/kubernetes.io/serviceaccount/service-ca.crt
2053
2054 # the name the server certificate is verified against, when not the address dialed
2055 caName = scheduler.openshift-kube-scheduler.svc
2056
2057 clientCertPath =
2058
2059 insecure = false
2060
2061 includeHelp = false
2062
2063 output =
2064
2065 # Regular expressions on the metric name: with a whitelist, only the matching metrics are sent
2066
2067 whitelist.1 = ^(kubernetes|openshift)_build_info$
2068 whitelist.2 = ^scheduler_scheduling_attempt_duration_seconds_sum$
2069 whitelist.3 = ^scheduler_scheduling_algorithm_duration_seconds_sum$
2070 whitelist.4 = ^scheduler_pending_pods$
2071 whitelist.5 = ^scheduler_schedule_attempts_total$
2072 whitelist.6 = ^scheduler_queue_incoming_pods_total$
2073 whitelist.7 = ^scheduler_preemption_attempts_total$
2074 whitelist.8 = ^leader_election_master_status$
2075 whitelist.9 = ^rest_client_requests_total$
2076 whitelist.10 = ^rest_client_request_duration_seconds_sum$
2077 whitelist.11 = ^process_cpu_seconds_total$
2078 whitelist.12 = ^process_resident_memory_bytes$
2079 whitelist.13 = ^process_virtual_memory_bytes$
2080 whitelist.14 = ^process_open_fds$
2081 whitelist.15 = ^process_max_fds$
2082 whitelist.16 = ^go_goroutines$
2083 whitelist.17 = ^process_start_time_seconds$
2084
2085 [diagnostics::cpu-vulnerabilities]
2086 settings.interval = 1h
2087 settings.path = /rootfs/sys/devices/system/cpu/vulnerabilities/*
2088
2089 [diagnostics::node-reboot-required]
2090 settings.interval = 1h
2091 settings.path = /rootfs/run/reboot-required*2092 004-addon.conf: |2093 [general]
2094 # addons can be run in parallel with agents
2095 addon = true
2096
2097 # The addon runs off the host network, so the kubelet probes /healthz and /readyz
2098 # on the pod IP - bind 0.0.0.0 here (overrides the loopback default in
2099 # 001-general.conf), on the port that binding names.
2100 httpServerBinding = 0.0.0.0:11888
2101
2102 [input.kubernetes_events]
2103
2104 disabled = false
2105
2106 type = openshift_events
2107
2108 index =
2109
2110 output =
2111
2112 excludeManagedFields = true
2113
2114 [input.kubernetes_watch::clusterresourcequota]
2115 disabled = false
2116
2117 # How often every object is forwarded again; one no longer listed is forwarded as DELETED
2118 # with "reason":"absent_from_relist"
2119 refresh = 45m
2120
2121 apiVersion = quota.openshift.io/v1
2122 kind = ClusterResourceQuota
2123 namespace =
2124
2125 type = openshift_objects
2126
2127 index =
2128
2129 output =
2130
2131 excludeManagedFields = true
2132
2133 # you can remove or hash some values in the events (after modifyValues you can define path in the JSON object,
2134 # and the value can be hash:{hashFunction}, or remove to remove the object )
2135 ; modifyValues.object.data.* = hash:sha256
2136 ; modifyValues.object.metadata.annotations.* = remove
2137
2138 # You can exclude events by namespace with blacklist or whitelist only required namespaces
2139 # blacklist.openshift_namespace = ^namespace0$
2140 # whitelist.openshift_namespace = ^((namespace1)|(namespace2))$
2141 # A cluster-scoped kind has no namespace: filter it by a path, such as object.metadata.name
2142
2143 [input.kubernetes_watch::nodes]
2144 disabled = false
2145
2146 # How often every object is forwarded again; one no longer listed is forwarded as DELETED
2147 # with "reason":"absent_from_relist"
2148 refresh = 45m
2149
2150 apiVersion = v1
2151 kind = Node
2152 namespace =
2153
2154 type = openshift_objects
2155
2156 index =
2157
2158 output =
2159
2160 excludeManagedFields = true
2161
2162 # you can remove or hash some values in the events (after modifyValues you can define path in the JSON object,
2163 # and the value can be hash:{hashFunction}, or remove to remove the object )
2164 ; modifyValues.object.data.* = hash:sha256
2165 ; modifyValues.object.metadata.annotations.* = remove
2166
2167 # You can exclude events by namespace with blacklist or whitelist only required namespaces
2168 # blacklist.openshift_namespace = ^namespace0$
2169 # whitelist.openshift_namespace = ^((namespace1)|(namespace2))$
2170 # A cluster-scoped kind has no namespace: filter it by a path, such as object.metadata.name
2171
2172 [input.kubernetes_watch::pods]
2173 disabled = false
2174
2175 # How often every object is forwarded again; one no longer listed is forwarded as DELETED
2176 # with "reason":"absent_from_relist"
2177 refresh = 45m
2178
2179 apiVersion = v1
2180 kind = Pod
2181 namespace =
2182
2183 type = openshift_objects
2184
2185 index =
2186
2187 output =
2188
2189 excludeManagedFields = true
2190
2191 # you can remove or hash some values in the events (after modifyValues you can define path in the JSON object,
2192 # and the value can be hash:{hashFunction}, or remove to remove the object )
2193 ; modifyValues.object.data.* = hash:sha256
2194 ; modifyValues.object.metadata.annotations.* = remove
2195
2196 # You can exclude events by namespace with blacklist or whitelist only required namespaces
2197 # blacklist.openshift_namespace = ^namespace0$
2198 # whitelist.openshift_namespace = ^((namespace1)|(namespace2))$
2199 # A cluster-scoped kind has no namespace: filter it by a path, such as object.metadata.name
2200
2201 [input.kubernetes_watch::resourcequota]
2202 disabled = false
2203
2204 # How often every object is forwarded again; one no longer listed is forwarded as DELETED
2205 # with "reason":"absent_from_relist"
2206 refresh = 45m
2207
2208 apiVersion = v1
2209 kind = ResourceQuota
2210 namespace =
2211
2212 type = openshift_objects
2213
2214 index =
2215
2216 output =
2217
2218 excludeManagedFields = true
2219
2220 # you can remove or hash some values in the events (after modifyValues you can define path in the JSON object,
2221 # and the value can be hash:{hashFunction}, or remove to remove the object )
2222 ; modifyValues.object.data.* = hash:sha256
2223 ; modifyValues.object.metadata.annotations.* = remove
2224
2225 # You can exclude events by namespace with blacklist or whitelist only required namespaces
2226 # blacklist.openshift_namespace = ^namespace0$
2227 # whitelist.openshift_namespace = ^((namespace1)|(namespace2))$
2228 # A cluster-scoped kind has no namespace: filter it by a path, such as object.metadata.name2229---
2230apiVersion: apps/v1
2231kind: DaemonSet
2232metadata:
2233 name: collectorforopenshift
2234 namespace: collectorforopenshift
2235 annotations:
2236 collectord.collectord.io/logs-replace.ignoredebuglog-search: ^(TRACE|DEBUG) .*
2237 collectord.collectord.io/logs-replace.ignoredebuglog-val: ""
2238 labels:
2239 app: collectorforopenshift
2240spec:
2241 updateStrategy:
2242 type: RollingUpdate
2243 selector:
2244 matchLabels:
2245 daemon: collectorforopenshift
2246 template:
2247 metadata:
2248 name: collectorforopenshift
2249 annotations:
2250 # A change to the configuration files these pods mount rolls them:
2251 # Collectord reads its inputs' configuration at startup. A ConfigMap managed
2252 # outside the chart (configMap.create: false) gets no checksum: roll the pods
2253 # with an annotation of your own under podAnnotations.
2254 checksum/config: 2fb62542aa0403769c9d122b55fad265f357d32dfcf8a5093d680d281fcecf73
2255 labels:
2256 daemon: collectorforopenshift
2257 spec:
2258 priorityClassName: "system-node-critical"
2259 dnsPolicy: ClusterFirstWithHostNet
2260 hostNetwork: true
2261 serviceAccountName: collectorforopenshift
2262 nodeSelector:
2263 kubernetes.io/os: linux
2264 affinity:
2265 nodeAffinity:
2266 requiredDuringSchedulingIgnoredDuringExecution:
2267 nodeSelectorTerms:
2268 - matchExpressions:
2269 - key: eks.amazonaws.com/compute-type
2270 operator: NotIn
2271 values:
2272 - fargate
2273 - key: type
2274 operator: NotIn
2275 values:
2276 - virtual-kubelet
2277 tolerations:
2278 - effect: NoSchedule
2279 operator: Exists
2280 - effect: NoExecute
2281 operator: Exists
2282 containers:
2283 - name: collectorforopenshift
2284 image: registry.connect.redhat.com/outcoldsolutions/collectorforopenshift:26.10.1
2285 imagePullPolicy: Always
2286 livenessProbe:
2287 failureThreshold: 3
2288 httpGet:
2289 host: 127.0.0.1
2290 path: /healthz
2291 port: 11888
2292 initialDelaySeconds: 120
2293 periodSeconds: 60
2294 timeoutSeconds: 5
2295 readinessProbe:
2296 failureThreshold: 3
2297 httpGet:
2298 host: 127.0.0.1
2299 path: /readyz
2300 port: 11888
2301 initialDelaySeconds: 10
2302 periodSeconds: 15
2303 timeoutSeconds: 5
2304 securityContext:
2305 runAsUser: 0
2306 privileged: true
2307 resources:
2308 limits:
2309 cpu: 2000m
2310 memory: 1024Mi
2311 requests:
2312 cpu: 500m
2313 memory: 256Mi
2314 env:
2315 - name: KUBERNETES_NODENAME
2316 valueFrom:
2317 fieldRef:
2318 fieldPath: spec.nodeName
2319 - name: KUBERNETES_NODEIP
2320 valueFrom:
2321 fieldRef:
2322 fieldPath: status.hostIP
2323 - name: POD_NAME
2324 valueFrom:
2325 fieldRef:
2326 fieldPath: metadata.name
2327 volumeMounts:
2328 - name: collectorforopenshift-state
2329 mountPath: /data
2330 - name: collectorforopenshift-config
2331 mountPath: /config/
2332 readOnly: true
2333 - name: rootfs
2334 mountPath: /rootfs/
2335 readOnly: false
2336 mountPropagation: HostToContainer
2337 - name: localtime
2338 mountPath: /etc/localtime
2339 readOnly: true
2340
2341 volumes:
2342 - name: collectorforopenshift-state
2343 hostPath:
2344 path: /var/lib/collectorforopenshift/data/
2345 type: DirectoryOrCreate
2346 - name: rootfs
2347 hostPath:
2348 path: /
2349 - name: localtime
2350 hostPath:
2351 path: /etc/localtime
2352 - name: collectorforopenshift-config
2353 configMap:
2354 name: collectorforopenshift
2355 items:
2356 - key: 001-general.conf
2357 path: 001-general.conf
2358 - key: 002-daemonset.conf
2359 path: 002-daemonset.conf
2360---
2361apiVersion: apps/v1
2362kind: Deployment
2363metadata:
2364 name: collectorforopenshift-addon
2365 namespace: collectorforopenshift
2366 annotations:
2367 collectord.collectord.io/logs-replace.ignoredebuglog-search: ^(TRACE|DEBUG) .*
2368 collectord.collectord.io/logs-replace.ignoredebuglog-val: ""
2369 labels:
2370 app: collectorforopenshift
2371spec:
2372 replicas: 1
2373 selector:
2374 matchLabels:
2375 daemon: collectorforopenshift
2376 template:
2377 metadata:
2378 name: collectorforopenshift-addon
2379 annotations:
2380 # A change to the configuration files these pods mount rolls them:
2381 # Collectord reads its inputs' configuration at startup. A ConfigMap managed
2382 # outside the chart (configMap.create: false) gets no checksum: roll the pods
2383 # with an annotation of your own under podAnnotations.
2384 checksum/config: 6078ef811d8ca8fa9d9d49bc1d611c8bd25d41014e1cdbb2d9702dfa7403e69c
2385 labels:
2386 daemon: collectorforopenshift
2387 spec:
2388 priorityClassName: "system-cluster-critical"
2389 serviceAccountName: collectorforopenshift
2390 nodeSelector:
2391 kubernetes.io/os: linux
2392 affinity:
2393 nodeAffinity:
2394 requiredDuringSchedulingIgnoredDuringExecution:
2395 nodeSelectorTerms:
2396 - matchExpressions:
2397 - key: eks.amazonaws.com/compute-type
2398 operator: NotIn
2399 values:
2400 - fargate
2401 - key: type
2402 operator: NotIn
2403 values:
2404 - virtual-kubelet
2405 containers:
2406 - name: collectorforopenshift
2407 image: registry.connect.redhat.com/outcoldsolutions/collectorforopenshift:26.10.1
2408 imagePullPolicy: Always
2409 livenessProbe:
2410 failureThreshold: 3
2411 httpGet:
2412 path: /healthz
2413 port: 11888
2414 initialDelaySeconds: 120
2415 periodSeconds: 60
2416 timeoutSeconds: 5
2417 readinessProbe:
2418 failureThreshold: 3
2419 httpGet:
2420 path: /readyz
2421 port: 11888
2422 initialDelaySeconds: 10
2423 periodSeconds: 15
2424 timeoutSeconds: 5
2425 securityContext:
2426 allowPrivilegeEscalation: false
2427 capabilities:
2428 drop:
2429 - ALL
2430 privileged: false
2431 runAsUser: 0
2432 seLinuxOptions:
2433 type: spc_t
2434 seccompProfile:
2435 type: RuntimeDefault
2436 resources:
2437 limits:
2438 cpu: 1000m
2439 memory: 512Mi
2440 requests:
2441 cpu: 200m
2442 memory: 64Mi
2443 env:
2444 - name: KUBERNETES_NODENAME
2445 valueFrom:
2446 fieldRef:
2447 fieldPath: spec.nodeName
2448 - name: POD_NAME
2449 valueFrom:
2450 fieldRef:
2451 fieldPath: metadata.name
2452 volumeMounts:
2453 - name: collectorforopenshift-state
2454 mountPath: /data
2455 - name: collectorforopenshift-config
2456 mountPath: /config/
2457 readOnly: true
2458 - name: localtime
2459 mountPath: /etc/localtime
2460 readOnly: true
2461
2462 volumes:
2463 # The DaemonSet pod on this node owns the directory and the database the
2464 # addon opens read-only. DirectoryOrCreate, so an addon scheduled first
2465 # mounts it too; Collectord waits for the DaemonSet to create the database.
2466 - name: collectorforopenshift-state
2467 hostPath:
2468 path: /var/lib/collectorforopenshift/data/
2469 type: DirectoryOrCreate
2470 - name: localtime
2471 hostPath:
2472 path: /etc/localtime
2473 - name: collectorforopenshift-config
2474 configMap:
2475 name: collectorforopenshift
2476 items:
2477 - key: 001-general.conf
2478 path: 001-general.conf
2479 - key: 004-addon.conf
2480 path: 004-addon.conf