Chapter 4. Configure collector settings
You can configure the log collector to receive logs from external sources, manage pod rollout strategy, and set resource limits.
4.1. Input receivers Copy linkLink copied to clipboard!
The Red Hat OpenShift Logging Operator deploys a service for each configured input receiver so that clients can write to the collector. This service exposes the port specified for the input receiver. For log forwarder ClusterLogForwarder CR deployments, the service name is in the <clusterlogforwarder_resource_name>-<input_name> format.
Receiver inputs are only supported when logs originate from a Red Hat-supported product that is installed on the same cluster as the Red Hat OpenShift Logging Operator, or when logging is installed on hosted control planes.
The collector supports two types of receiver inputs:
- HTTP receiver
Receives and parses audit logs. Use this receiver when:
- Logging is installed on hosted control planes.
- Logs originate from a Red Hat-supported product that is installed on the same cluster as the Red Hat OpenShift Logging Operator. For example, OpenShift Virtualization.
- Syslog receiver
Receives and parses infrastructure logs in journal format. Use this receiver when:
Logs originate from a Red Hat-supported product that is installed on the same cluster as the Red Hat OpenShift Logging Operator. For example:
- Red Hat OpenStack Services on OpenShift (RHOSO)
- OpenShift Virtualization
4.2. Configure the collector to receive audit logs as an HTTP server Copy linkLink copied to clipboard!
Configure a log collector to listen for HTTP connections and receive audit logs.
You can configure your log collector to listen for HTTP connections to only receive audit logs by specifying http as a receiver input in the ClusterLogForwarder custom resource (CR).
HTTP receiver input is only supported for the following scenarios:
- Logging is installed on hosted control planes.
When logs originate from a Red Hat-supported product that is installed on the same cluster as the Red Hat OpenShift Logging Operator. For example:
- Red Hat OpenStack Services on OpenShift (RHOSO)
- OpenShift Virtualization
Prerequisites
- You have administrator permissions.
-
You have installed the OpenShift CLI (
oc). - You have installed the Red Hat OpenShift Logging Operator.
Procedure
Modify the
ClusterLogForwarderCR to add configuration for thehttpreceiver input:Example
ClusterLogForwarderCRapiVersion: observability.openshift.io/v1 kind: ClusterLogForwarder metadata: name: <clusterlogforwarder_name> namespace: <namespace> # ... spec: serviceAccount: name: <service_account_name> inputs: - name: http-receiver type: receiver receiver: type: http port: 8443 http: format: kubeAPIAudit outputs: - name: <output_name> type: http http: url: <url> pipelines: - name: http-pipeline inputRefs: - http-receiver outputRefs: - <output_name> # ...- metadata.name
-
Specify a name for the
ClusterLogForwarderCR. - inputs.name
- Specify a name for your input receiver.
- inputs.receiver.type
-
Specify the input receiver type as
http. - inputs.receiver.port
-
Optional: Specify the port that the input receiver listens on. This must be a value between
1024and65535. The default value is8443if this is not specified. - inputs.receiver.http.format
-
Currently, only the
kube-apiserverwebhook format is supported forhttpinput receivers. - pipelines
- Configure a pipeline for your input receiver.
Apply the changes to the
ClusterLogForwarderCR by running the following command:$ oc apply -f <filename>.yamlVerify that the collector is listening on the service that has a name in the
<clusterlogforwarder_resource_name>-<input_name>format by running the following command:$ oc get svcExample output
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE collector ClusterIP 172.30.85.239 <none> 24231/TCP 3m6s collector-http-receiver ClusterIP 172.30.205.160 <none> 8443/TCP 3m6sIn the example, the service name is
collector-http-receiver.
Verification
Extract the certificate authority (CA) certificate file by running the following command:
$ oc extract cm/openshift-service-ca.crt -n <namespace>NoteIf the CA in the cluster where the collectors are running changes, you must extract the CA certificate file again.
As an example, use the
curlcommand to send logs by running the following command:$ curl --cacert <openshift_service_ca.crt> https://collector-http-receiver.<namespace>.svc:8443 -XPOST -d '{"<prefix>":"<message>"}'Replace <openshift_service_ca.crt> with the extracted CA certificate file.
4.3. Configure the collector to listen for connections as a syslog server Copy linkLink copied to clipboard!
You can configure your log collector to collect journal format infrastructure logs by specifying syslog as a receiver input in the ClusterLogForwarder custom resource (CR).
Syslog receiver input is only supported for the following scenarios:
- Logging is installed on hosted control planes.
When logs originate from a Red Hat-supported product that is installed on the same cluster as the Red Hat OpenShift Logging Operator. For example:
- Red Hat OpenStack Services on OpenShift (RHOSO)
- OpenShift Virtualization
Prerequisites
- You have administrator permissions.
-
You have installed the OpenShift CLI (
oc). - You have installed the Red Hat OpenShift Logging Operator.
Procedure
Grant the
collect-infrastructure-logscluster role to the service account by running the following command:Example binding command
$ oc adm policy add-cluster-role-to-user collect-infrastructure-logs -z logcollectorModify the
ClusterLogForwarderCR to add configuration for thesyslogreceiver input:Example
ClusterLogForwarderCRapiVersion: observability.openshift.io/v1 kind: ClusterLogForwarder metadata: name: <clusterlogforwarder_name> namespace: <namespace> # ... spec: serviceAccount: name: <service_account_name> inputs: - name: syslog-receiver type: receiver receiver: type: syslog port: 10514 outputs: - name: <output_name> lokiStack: authentication: token: from: serviceAccount target: name: logging-loki namespace: openshift-logging tls: ca: key: service-ca.crt configMapName: openshift-service-ca.crt type: lokiStack # ... pipelines: - name: syslog-pipeline inputRefs: - syslog-receiver outputRefs: - <output_name> # ...- spec.serviceAccount.name
-
Use the service account that you granted the
collect-infrastructure-logspermission in the previous step. - spec.inputs.name
- Specify a name for your input receiver.
- spec.inputs.receiver.type
-
Specify the input receiver type as
syslog. - spec.inputs.receiver.port
-
Optional: Specify the port that the input receiver listens on. This must be a value between
1024and65535. - spec.outputs.tls
-
If TLS configuration is not set, the default certificates will be used. For more information, run the command
oc explain clusterlogforwarders.spec.inputs.receiver.tls. - spec.pipelines
- Configure a pipeline for your input receiver.
Apply the changes to the
ClusterLogForwarderCR by running the following command:$ oc apply -f <filename>.yamlVerify that the collector is listening on the service that has a name in the
<clusterlogforwarder_resource_name>-<input_name>format by running the following command:$ oc get svcExample output:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE collector ClusterIP 172.30.85.239 <none> 24231/TCP 33m collector-syslog-receiver ClusterIP 172.30.216.142 <none> 10514/TCP 2m20sIn this example output, the service name is
collector-syslog-receiver.
Verification
Send a test syslog message using the
loggercommand by running the following command:$ logger --tcp --server collector-syslog-receiver.<namespace>.svc --port 10514 “test message”Replace
<namespace>with the namespace where the collector service is running.
4.4. Configure the pod rollout strategy Copy linkLink copied to clipboard!
You can configure the collector pods rollout strategy so that the requests to the API server are minimized during upgrades and restarts.
Unlike in previous releases, API server kube-api caching is always enabled.
Prerequisites
- You have administrator permissions.
-
You installed the OpenShift CLI (
oc). - You installed and configured Red Hat OpenShift Logging Operator.
-
You have created a
ClusterLogForwardercustom resource (CR).
Procedure
Update the
ClusterLogForwarderCR:apiVersion: observability.openshift.io/v1 kind: ClusterLogForwarder metadata: name: my-forwarder namespace: openshift-logging spec: collector: maxUnavailable: <value>Where <value> can be a number or percentage. If you do not specify a value, the default value of
100%is used for themaxUnavailablefield.Apply the
ClusterLogForwarderCR by running the following command:$ oc apply -f <filename>.yaml
4.5. Configure log collector CPU and memory limits Copy linkLink copied to clipboard!
Adjust log collector CPU and memory limits to optimize performance and resource usage.
You can adjust both the CPU and memory limits for the log collector by editing the ClusterLogForwarder custom resource (CR).
Procedure
Edit the
ClusterLogForwarderCR in theopenshift-loggingproject:$ oc -n openshift-logging edit clusterlogforwarder.observability.openshift.io <clf_name>apiVersion: observability.openshift.io/v1 kind: ClusterLogForwarder metadata: name: <clf_name> namespace: openshift-logging spec: collector: resources: requests: cpu: 500m memory: 64Mi limits: cpu: 6000m memory: 2048Mi # ...- metadata.name
-
Specify a name for the
ClusterLogForwarderCR. - spec.collector.resources
- Specify the CPU and memory limits and requests as needed. The values shown are the default values.