Questo contenuto non è disponibile nella lingua selezionata.
Logging
Configuring and using logging in OpenShift Container Platform
Abstract
Chapter 1. Release notes Copia collegamentoCollegamento copiato negli appunti!
1.1. Logging 5.8 Copia collegamentoCollegamento copiato negli appunti!
Logging is provided as an installable component, with a distinct release cycle from the core OpenShift Container Platform. The Red Hat OpenShift Container Platform Life Cycle Policy outlines release compatibility.
The stable channel only provides updates to the most recent release of logging. To continue receiving updates for prior releases, you must change your subscription channel to stable-x.y, where x.y represents the major and minor version of logging you have installed. For example, stable-5.7.
1.1.1. Logging 5.8.21 Copia collegamentoCollegamento copiato negli appunti!
This release includes RHBA-2025:8773 and RHBA-2025:8774.
1.1.1.1. CVEs Copia collegamentoCollegamento copiato negli appunti!
1.1.2. Logging 5.8.20 Copia collegamentoCollegamento copiato negli appunti!
This release includes RHBA-2025:7450 and RHSA-2025:7451.
1.1.2.1. CVEs Copia collegamentoCollegamento copiato negli appunti!
1.1.3. Logging 5.8.19 Copia collegamentoCollegamento copiato negli appunti!
This release includes RHBA-2025:3447 and RHSA-2025:3448.
1.1.3.1. CVEs Copia collegamentoCollegamento copiato negli appunti!
1.1.4. Logging 5.8.18 Copia collegamentoCollegamento copiato negli appunti!
This release includes RHSA-2025:1983 and RHBA-2025:1984.
1.1.4.1. CVEs Copia collegamentoCollegamento copiato negli appunti!
For detailed information on Red Hat security ratings, review Severity ratings.
1.1.5. Logging 5.8.17 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix Release 5.8.17 and OpenShift Logging Bug Fix Release 5.8.17.
1.1.5.1. Enhancements Copia collegamentoCollegamento copiato negli appunti!
-
This enhancement adds
OTelsemantic stream labels to thelokiStackoutput so that you can query logs by using bothViaQandOTelstream labels. (LOG-6582)
1.1.5.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
For detailed information on Red Hat security ratings, review Severity ratings.
1.1.6. Logging 5.8.16 Copia collegamentoCollegamento copiato negli appunti!
This release includes RHBA-2024:10989 and RHBA-2024:143685.
1.1.6.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
- Before this update, Loki automatically tried to guess the log level of log messages, which caused confusion because the collector already does this, and Loki and the collector would sometimes come to different results. With this update, the automatic log level discovery in Loki is disabled. LOG-6322.
1.1.6.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
- CVE-2019-12900
- CVE-2021-3903
- CVE-2023-38709
- CVE-2024-2236
- CVE-2024-2511
- CVE-2024-3596
- CVE-2024-4603
- CVE-2024-4741
- CVE-2024-5535
- CVE-2024-6232
- CVE-2024-9287
- CVE-2024-10041
- CVE-2024-10963
- CVE-2024-11168
- CVE-2024-24795
- CVE-2024-36387
- CVE-2024-41009
- CVE-2024-42244
- CVE-2024-47175
- CVE-2024-47875
- CVE-2024-50226
- CVE-2024-50602
1.1.7. Logging 5.8.15 Copia collegamentoCollegamento copiato negli appunti!
This release includes RHBA-2024:10052 and RHBA-2024:10053.
1.1.7.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
- Before this update, Loki did not correctly load some configurations, which caused issues when using Alibaba Cloud or IBM Cloud object storage. This update fixes the configuration-loading code in Loki, resolving the issue. (LOG-6294)
- Before this update, upgrades to version 6.0 failed with errors if a Log File Metric Exporter instance was present. This update fixes the issue, enabling upgrades to proceed smoothly without errors. (LOG-6328)
1.1.7.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
- CVE-2021-47385
- CVE-2023-28746
- CVE-2023-48161
- CVE-2023-52658
- CVE-2024-6119
- CVE-2024-6232
- CVE-2024-21208
- CVE-2024-21210
- CVE-2024-21217
- CVE-2024-21235
- CVE-2024-27403
- CVE-2024-35989
- CVE-2024-36889
- CVE-2024-36978
- CVE-2024-38556
- CVE-2024-39483
- CVE-2024-39502
- CVE-2024-40959
- CVE-2024-42079
- CVE-2024-42272
- CVE-2024-42284
- CVE-2024-3596
- CVE-2024-5535
1.1.8. Logging 5.8.14 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix Release 5.8.14 and OpenShift Logging Bug Fix Release 5.8.14.
1.1.8.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
-
Before this update, it was possible to set the
.containerLimit.maxRecordsPerSecondparameter in theClusterLogForwardercustom resource to0, which could lead to an exception during Vector’s startup. With this update, the configuration is validated before being applied, and any invalid values (less than or equal to zero) are rejected. (LOG-4671) -
Before this update, the Loki Operator did not automatically add the default
namespacelabel to all its alerting rules, which caused Alertmanager instance for user-defined projects to skip routing such alerts. With this update, all alerting and recording rules have thenamespacelabel and Alertmanager now routes these alerts correctly. (LOG-6182) - Before this update, the LokiStack ruler component view was not properly initialized, which caused the invalid field error when the ruler component was disabled. With this update, the issue is resolved by the component view being initialized with an empty value. (LOG-6184)
1.1.8.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
For detailed information on Red Hat security ratings, review Severity ratings.
1.1.9. Logging 5.8.13 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix Release 5.8.13 and OpenShift Logging Bug Fix Release 5.8.13.
1.1.9.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
-
Before this update, the
clusterlogforwarder.spec.outputs.http.timeoutparameter was not applied to the Fluentd configuration when Fluentd was used as the collector type, causing HTTP timeouts to be misconfigured. With this update, theclusterlogforwarder.spec.outputs.http.timeoutparameter is now correctly applied, ensuring that Fluentd honors the specified timeout and handles HTTP connections according to the user’s configuration. (LOG-5210) - Before this update, the Elasticsearch Operator did not issue an alert to inform users about the upcoming removal, leaving existing installations unsupported without notice. With this update, the Elasticsearch Operator will trigger a continuous alert on OpenShift Container Platform version 4.16 and later, notifying users of its removal from the catalog in November 2025. (LOG-5966)
- Before this update, the Red Hat OpenShift Logging Operator was unavailable on OpenShift Container Platform version 4.16 and later, preventing Telco customers from completing their certifications for the upcoming Logging 6.0 release. With this update, the Red Hat OpenShift Logging Operator is now available on OpenShift Container Platform versions 4.16 and 4.17, resolving the issue. (LOG-6103)
- Before this update, the Elasticsearch Operator was not available in the OpenShift Container Platform versions 4.17 and 4.18, preventing the installation of ServiceMesh, Kiali, and Distributed Tracing. With this update, the Elasticsearch Operator properties have been expanded for OpenShift Container Platform versions 4.17 and 4.18, resolving the issue and allowing ServiceMesh, Kiali, and Distributed Tracing operators to install their stacks. (LOG-6134)
1.1.9.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
- CVE-2023-52463
- CVE-2023-52801
- CVE-2024-6104
- CVE-2024-6119
- CVE-2024-26629
- CVE-2024-26630
- CVE-2024-26720
- CVE-2024-26886
- CVE-2024-26946
- CVE-2024-34397
- CVE-2024-35791
- CVE-2024-35797
- CVE-2024-35875
- CVE-2024-36000
- CVE-2024-36019
- CVE-2024-36883
- CVE-2024-36979
- CVE-2024-38559
- CVE-2024-38619
- CVE-2024-39331
- CVE-2024-40927
- CVE-2024-40936
- CVE-2024-41040
- CVE-2024-41044
- CVE-2024-41055
- CVE-2024-41073
- CVE-2024-41096
- CVE-2024-42082
- CVE-2024-42096
- CVE-2024-42102
- CVE-2024-42131
- CVE-2024-45490
- CVE-2024-45491
- CVE-2024-45492
- CVE-2024-2398
- CVE-2024-4032
- CVE-2024-6232
- CVE-2024-6345
- CVE-2024-6923
- CVE-2024-30203
- CVE-2024-30205
- CVE-2024-39331
- CVE-2024-45490
- CVE-2024-45491
- CVE-2024-45492
For detailed information on Red Hat security ratings, review Severity ratings.
1.1.10. Logging 5.8.12 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix Release 5.8.12 and OpenShift Logging Bug Fix Release 5.8.12.
1.1.10.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
-
Before this update, the collector used internal buffering with the
drop_newestsetting to reduce high memory usage, which caused significant log loss. With this update, the collector goes back to its default behavior, wheresink<>.bufferis not customized. (LOG-6026)
1.1.10.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
- CVE-2023-52771
- CVE-2023-52880
- CVE-2024-2398
- CVE-2024-6345
- CVE-2024-6923
- CVE-2024-26581
- CVE-2024-26668
- CVE-2024-26810
- CVE-2024-26855
- CVE-2024-26908
- CVE-2024-26925
- CVE-2024-27016
- CVE-2024-27019
- CVE-2024-27020
- CVE-2024-27415
- CVE-2024-35839
- CVE-2024-35896
- CVE-2024-35897
- CVE-2024-35898
- CVE-2024-35962
- CVE-2024-36003
- CVE-2024-36025
- CVE-2024-37370
- CVE-2024-37371
- CVE-2024-37891
- CVE-2024-38428
- CVE-2024-38476
- CVE-2024-38538
- CVE-2024-38540
- CVE-2024-38544
- CVE-2024-38579
- CVE-2024-38608
- CVE-2024-39476
- CVE-2024-40905
- CVE-2024-40911
- CVE-2024-40912
- CVE-2024-40914
- CVE-2024-40929
- CVE-2024-40939
- CVE-2024-40941
- CVE-2024-40957
- CVE-2024-40978
- CVE-2024-40983
- CVE-2024-41041
- CVE-2024-41076
- CVE-2024-41090
- CVE-2024-41091
- CVE-2024-42110
- CVE-2024-42152
1.1.11. Logging 5.8.11 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix Release 5.8.11 and OpenShift Logging Bug Fix Release 5.8.11.
1.1.11.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
-
Before this update, the TLS section was added without verifying the broker URL schema, leading to SSL connection errors if the URLs did not start with
tls. With this update, the TLS section is added only if broker URLs start withtls, preventing SSL connection errors. (LOG-5139) - Before this update, the Loki Operator did not trigger alerts when it dropped log events due to validation failures. With this update, the Loki Operator includes a new alert definition that triggers an alert if Loki drops log events due to validation failures. (LOG-5896)
- Before this update, the 4.16 GA catalog did not include Elasticsearch Operator 5.8, preventing the installation of products like Service Mesh, Kiali, and Tracing. With this update, Elasticsearch Operator 5.8 is now available on 4.16, resolving the issue and providing support for Elasticsearch storage for these products only. (LOG-5911)
- Before this update, duplicate conditions in the LokiStack resource status led to invalid metrics from the Loki Operator. With this update, the Operator removes duplicate conditions from the status. (LOG-5857)
- Before this update, the Loki Operator overwrote user annotations on the LokiStack Route resource, causing customizations to drop. With this update, the Loki Operator no longer overwrites Route annotations, fixing the issue. (LOG-5946)
1.1.11.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
- CVE-2021-47548
- CVE-2021-47596
- CVE-2022-48627
- CVE-2023-52638
- CVE-2024-4032
- CVE-2024-6409
- CVE-2024-21131
- CVE-2024-21138
- CVE-2024-21140
- CVE-2024-21144
- CVE-2024-21145
- CVE-2024-21147
- CVE-2024-24806
- CVE-2024-26783
- CVE-2024-26858
- CVE-2024-27397
- CVE-2024-27435
- CVE-2024-35235
- CVE-2024-35958
- CVE-2024-36270
- CVE-2024-36886
- CVE-2024-36904
- CVE-2024-36957
- CVE-2024-38473
- CVE-2024-38474
- CVE-2024-38475
- CVE-2024-38477
- CVE-2024-38543
- CVE-2024-38586
- CVE-2024-38593
- CVE-2024-38663
- CVE-2024-39573
1.1.12. Logging 5.8.10 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix Release 5.8.10 and OpenShift Logging Bug Fix Release 5.8.10.
1.1.12.1. Known issues Copia collegamentoCollegamento copiato negli appunti!
- Before this update, when enabling retention, the Loki Operator produced an invalid configuration. As a result, Loki did not start properly. With this update, Loki pods can set retention. (LOG-5821)
1.1.12.2. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
-
Before this update, the
ClusterLogForwarderintroduced an extra space in the message payload that did not follow theRFC3164specification. With this update, the extra space has been removed, fixing the issue. (LOG-5647)
1.1.12.3. CVEs Copia collegamentoCollegamento copiato negli appunti!
1.1.13. Logging 5.8.9 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix Release 5.8.9 and OpenShift Logging Bug Fix Release 5.8.9.
1.1.13.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
- Before this update, an issue prevented selecting pods that no longer existed, even if they had generated logs. With this update, this issue has been fixed, allowing selection of such pods. (LOG-5698)
-
Before this update, LokiStack was missing a route for the Volume API, which caused the following error:
404 not found. With this update, LokiStack exposes the Volume API, resolving the issue. (LOG-5750) -
Before this update, the Elasticsearch operator overwrote all service account annotations without considering ownership. As a result, the
kube-controller-managerrecreated service account secrets because it logged the link to the owning service account. With this update, the Elasticsearch operator merges annotations, resolving the issue. (LOG-5776)
1.1.13.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
1.1.14. Logging 5.8.8 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix Release 5.8.8 and OpenShift Logging Bug Fix Release 5.8.8.
1.1.14.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
-
Before this update, there was a delay in restarting Ingesters when configuring
LokiStack, because the Loki Operator sets the write-ahead logreplay_memory_ceilingto zero bytes for the1x.demosize. With this update, the minimum value used for thereplay_memory_ceilinghas been increased to avoid delays. (LOG-5615)
1.1.14.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
- CVE-2020-15778
- CVE-2021-43618
- CVE-2023-6004
- CVE-2023-6597
- CVE-2023-6918
- CVE-2023-7008
- CVE-2024-0450
- CVE-2024-2961
- CVE-2024-22365
- CVE-2024-25062
- CVE-2024-26458
- CVE-2024-26461
- CVE-2024-26642
- CVE-2024-26643
- CVE-2024-26673
- CVE-2024-26804
- CVE-2024-28182
- CVE-2024-32487
- CVE-2024-33599
- CVE-2024-33600
- CVE-2024-33601
- CVE-2024-33602
1.1.15. Logging 5.8.7 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix Release 5.8.7 Security Update and OpenShift Logging Bug Fix Release 5.8.7.
1.1.15.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
-
Before this update, the
elasticsearch-im-<type>-*pods failed if no<type>logs (audit, infrastructure, or application) were collected. With this update, the pods no longer fail when<type>logs are not collected. (LOG-4949) - Before this update, the validation feature for output config required an SSL/TLS URL, even for services such as Amazon CloudWatch or Google Cloud Logging where a URL is not needed by design. With this update, the validation logic for services without URLs are improved, and the error message is more informative. (LOG-5467)
- Before this update, an issue in the metrics collection code of the Logging Operator caused it to report stale telemetry metrics. With this update, the Logging Operator does not report stale telemetry metrics. (LOG-5471)
-
Before this update, changes to the Logging Operator caused an error due to an incorrect configuration in the
ClusterLogForwarderCR. As a result, upgrades to logging deleted the daemonset collector. With this update, the Logging Operator re-creates collector daemonsets except when aNot authorized to collecterror occurs. (LOG-5514)
1.1.15.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
- CVE-2020-26555
- CVE-2021-29390
- CVE-2022-0480
- CVE-2022-38096
- CVE-2022-40090
- CVE-2022-45934
- CVE-2022-48554
- CVE-2022-48624
- CVE-2023-2975
- CVE-2023-3446
- CVE-2023-3567
- CVE-2023-3618
- CVE-2023-3817
- CVE-2023-4133
- CVE-2023-5678
- CVE-2023-6040
- CVE-2023-6121
- CVE-2023-6129
- CVE-2023-6176
- CVE-2023-6228
- CVE-2023-6237
- CVE-2023-6531
- CVE-2023-6546
- CVE-2023-6622
- CVE-2023-6915
- CVE-2023-6931
- CVE-2023-6932
- CVE-2023-7008
- CVE-2023-24023
- CVE-2023-25193
- CVE-2023-25775
- CVE-2023-28464
- CVE-2023-28866
- CVE-2023-31083
- CVE-2023-31122
- CVE-2023-37453
- CVE-2023-38469
- CVE-2023-38470
- CVE-2023-38471
- CVE-2023-38472
- CVE-2023-38473
- CVE-2023-39189
- CVE-2023-39193
- CVE-2023-39194
- CVE-2023-39198
- CVE-2023-40745
- CVE-2023-41175
- CVE-2023-42754
- CVE-2023-42756
- CVE-2023-43785
- CVE-2023-43786
- CVE-2023-43787
- CVE-2023-43788
- CVE-2023-43789
- CVE-2023-45288
- CVE-2023-45863
- CVE-2023-46862
- CVE-2023-47038
- CVE-2023-51043
- CVE-2023-51779
- CVE-2023-51780
- CVE-2023-52434
- CVE-2023-52448
- CVE-2023-52476
- CVE-2023-52489
- CVE-2023-52522
- CVE-2023-52529
- CVE-2023-52574
- CVE-2023-52578
- CVE-2023-52580
- CVE-2023-52581
- CVE-2023-52597
- CVE-2023-52610
- CVE-2023-52620
- CVE-2024-0565
- CVE-2024-0727
- CVE-2024-0841
- CVE-2024-1085
- CVE-2024-1086
- CVE-2024-21011
- CVE-2024-21012
- CVE-2024-21068
- CVE-2024-21085
- CVE-2024-21094
- CVE-2024-22365
- CVE-2024-25062
- CVE-2024-26582
- CVE-2024-26583
- CVE-2024-26584
- CVE-2024-26585
- CVE-2024-26586
- CVE-2024-26593
- CVE-2024-26602
- CVE-2024-26609
- CVE-2024-26633
- CVE-2024-27316
- CVE-2024-28834
- CVE-2024-28835
1.1.16. Logging 5.8.6 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix Release 5.8.6 Security Update and OpenShift Logging Bug Fix Release 5.8.6.
1.1.16.1. Enhancements Copia collegamentoCollegamento copiato negli appunti!
-
Before this update, the Loki Operator did not validate the Amazon Simple Storage Service (S3) endpoint used in the storage secret. With this update, the validation process ensures the S3 endpoint is a valid S3 URL, and the
LokiStackstatus updates to indicate any invalid URLs. (LOG-5392) - Before this update, the Loki Operator configured Loki to use path-based style access for the Amazon Simple Storage Service (S3), which has been deprecated. With this update, the Loki Operator defaults to virtual-host style without users needing to change their configuration. (LOG-5402)
1.1.16.2. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
-
Before this update, the Elastisearch Operator
ServiceMonitorin theopenshift-operators-redhatnamespace used static token and certificate authority (CA) files for authentication, causing errors in the Prometheus Operator in the User Workload Monitoring specification on theServiceMonitorconfiguration. With this update, the Elastisearch OperatorServiceMonitorin theopenshift-operators-redhatnamespace now references a service account token secret by aLocalReferenceobject. This approach allows the User Workload Monitoring specifications in the Prometheus Operator to handle the Elastisearch OperatorServiceMonitorsuccessfully. This enables Prometheus to scrape the Elastisearch Operator metrics. (LOG-5164) -
Before this update, the Loki Operator did not validate the Amazon Simple Storage Service (S3) endpoint URL format used in the storage secret. With this update, the S3 endpoint URL goes through a validation step that reflects on the status of the
LokiStack. (LOG-5398)
1.1.16.3. CVEs Copia collegamentoCollegamento copiato negli appunti!
1.1.17. Logging 5.8.5 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix Release 5.8.5.
1.1.17.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
-
Before this update, the configuration of the Loki Operator’s
ServiceMonitorcould match many Kubernetes services, resulting in the Loki Operator’s metrics being collected multiple times. With this update, the configuration ofServiceMonitornow only matches the dedicated metrics service. (LOG-5250) - Before this update, the Red Hat build pipeline did not use the existing build details in Loki builds and omitted information such as revision, branch, and version. With this update, the Red Hat build pipeline now adds these details to the Loki builds, fixing the issue. (LOG-5201)
-
Before this update, the Loki Operator checked if the pods were running to decide if the
LokiStackwas ready. With this update, it also checks if the pods are ready, so that the readiness of theLokiStackreflects the state of its components. (LOG-5171) - Before this update, running a query for log metrics caused an error in the histogram. With this update, the histogram toggle function and the chart are disabled and hidden because the histogram doesn’t work with log metrics. (LOG-5044)
-
Before this update, the Loki and Elasticsearch bundle had the wrong
maxOpenShiftVersion, resulting inIncompatibleOperatorsInstalledalerts. With this update, including 4.16 as themaxOpenShiftVersionproperty in the bundle fixes the issue. (LOG-5272) -
Before this update, the build pipeline did not include linker flags for the build date, causing Loki builds to show empty strings for
buildDateandgoVersion. With this update, adding the missing linker flags in the build pipeline fixes the issue. (LOG-5274) - Before this update, a bug in LogQL parsing left out some line filters from the query. With this update, the parsing now includes all the line filters while keeping the original query unchanged. (LOG-5270)
-
Before this update, the Loki Operator
ServiceMonitorin theopenshift-operators-redhatnamespace used static token and CA files for authentication, causing errors in the Prometheus Operator in the User Workload Monitoring spec on theServiceMonitorconfiguration. With this update, the Loki OperatorServiceMonitorinopenshift-operators-redhatnamespace now references a service account token secret by aLocalReferenceobject. This approach allows the User Workload Monitoring spec in the Prometheus Operator to handle the Loki OperatorServiceMonitorsuccessfully, enabling Prometheus to scrape the Loki Operator metrics. (LOG-5240)
1.1.17.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
1.1.18. Logging 5.8.4 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix Release 5.8.4.
1.1.18.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
- Before this update, the developer console’s logs did not account for the current namespace, resulting in query rejection for users without cluster-wide log access. With this update, all supported OCP versions ensure correct namespace inclusion. (LOG-4905)
-
Before this update, the Cluster Logging Operator deployed
ClusterRolessupporting LokiStack deployments only when the default log output was LokiStack. With this update, the roles are split into two groups: read and write. The write roles deploys based on the setting of the default log storage, just like all the roles used to do before. The read roles deploys based on whether the logging console plugin is active. (LOG-4987) -
Before this update, multiple
ClusterLogForwardersdefining the same input receiver name had their service endlessly reconciled because of changingownerReferenceson one service. With this update, each receiver input will have its own service named with the convention of<CLF.Name>-<input.Name>. (LOG-5009) -
Before this update, the
ClusterLogForwarderdid not report errors when forwarding logs to cloudwatch without a secret. With this update, the following error message appears when forwarding logs to cloudwatch without a secret:secret must be provided for cloudwatch output. (LOG-5021) -
Before this update, the
log_forwarder_input_infoincludedapplication,infrastructure, andauditinput metric points. With this update,httpis also added as a metric point. (LOG-5043)
1.1.18.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
- CVE-2021-35937
- CVE-2021-35938
- CVE-2021-35939
- CVE-2022-3545
- CVE-2022-24963
- CVE-2022-36402
- CVE-2022-41858
- CVE-2023-2166
- CVE-2023-2176
- CVE-2023-3777
- CVE-2023-3812
- CVE-2023-4015
- CVE-2023-4622
- CVE-2023-4623
- CVE-2023-5178
- CVE-2023-5363
- CVE-2023-5388
- CVE-2023-5633
- CVE-2023-6679
- CVE-2023-7104
- CVE-2023-27043
- CVE-2023-38409
- CVE-2023-40283
- CVE-2023-42753
- CVE-2023-43804
- CVE-2023-45803
- CVE-2023-46813
- CVE-2024-20918
- CVE-2024-20919
- CVE-2024-20921
- CVE-2024-20926
- CVE-2024-20945
- CVE-2024-20952
1.1.19. Logging 5.8.3 Copia collegamentoCollegamento copiato negli appunti!
This release includes Logging Bug Fix 5.8.3 and Logging Security Fix 5.8.3
1.1.19.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
- Before this update, when configured to read a custom S3 Certificate Authority the Loki Operator would not automatically update the configuration when the name of the ConfigMap or the contents changed. With this update, the Loki Operator is watching for changes to the ConfigMap and automatically updates the generated configuration. (LOG-4969)
- Before this update, Loki outputs configured without a valid URL caused the collector pods to crash. With this update, outputs are subject to URL validation, resolving the issue. (LOG-4822)
- Before this update the Cluster Logging Operator would generate collector configuration fields for outputs that did not specify a secret to use the service account bearer token. With this update, an output does not require authentication, resolving the issue. (LOG-4962)
-
Before this update, the
tls.insecureSkipVerifyfield of an output was not set to a value oftruewithout a secret defined. With this update, a secret is no longer required to set this value. (LOG-4963) - Before this update, output configurations allowed the combination of an insecure (HTTP) URL with TLS authentication. With this update, outputs configured for TLS authentication require a secure (HTTPS) URL. (LOG-4893)
1.1.19.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
1.1.20. Logging 5.8.2 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix Release 5.8.2.
1.1.20.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
- Before this update, the LokiStack ruler pods would not format the IPv6 pod IP in HTTP URLs used for cross pod communication, causing querying rules and alerts through the Prometheus-compatible API to fail. With this update, the LokiStack ruler pods encapsulate the IPv6 pod IP in square brackets, resolving the issue. (LOG-4890)
- Before this update, the developer console logs did not account for the current namespace, resulting in query rejection for users without cluster-wide log access. With this update, namespace inclusion has been corrected, resolving the issue. (LOG-4947)
- Before this update, the logging view plugin of the OpenShift Container Platform web console did not allow for custom node placement and tolerations. With this update, defining custom node placements and tolerations has been added to the logging view plugin of the OpenShift Container Platform web console. (LOG-4912)
1.1.20.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
1.1.21. Logging 5.8.1 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix Release 5.8.1 and OpenShift Logging Bug Fix Release 5.8.1 Kibana.
1.1.21.1. Enhancements Copia collegamentoCollegamento copiato negli appunti!
1.1.21.1.1. Log Collection Copia collegamentoCollegamento copiato negli appunti!
- With this update, while configuring Vector as a collector, you can add logic to the Red Hat OpenShift Logging Operator to use a token specified in the secret in place of the token associated with the service account. (LOG-4780)
- With this update, the BoltDB Shipper Loki dashboards are now renamed to Index dashboards. (LOG-4828)
1.1.21.2. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
-
Before this update, the
ClusterLogForwardercreated empty indices after enabling the parsing of JSON logs, even when the rollover conditions were not met. With this update, theClusterLogForwarderskips the rollover when thewrite-indexis empty. (LOG-4452) -
Before this update, the Vector set the
defaultlog level incorrectly. With this update, the correct log level is set by improving the enhancement of regular expression, orregexp, for log level detection. (LOG-4480) -
Before this update, during the process of creating index patterns, the default alias was missing from the initial index in each log output. As a result, Kibana users were unable to create index patterns by using OpenShift Elasticsearch Operator. This update adds the missing aliases to OpenShift Elasticsearch Operator, resolving the issue. Kibana users can now create index patterns that include the
{app,infra,audit}-000001indexes. (LOG-4683) -
Before this update, Fluentd collector pods were in a
CrashLoopBackOffstate due to binding of the Prometheus server on IPv6 clusters. With this update, the collectors work properly on IPv6 clusters. (LOG-4706) -
Before this update, the Red Hat OpenShift Logging Operator would undergo numerous reconciliations whenever there was a change in the
ClusterLogForwarder. With this update, the Red Hat OpenShift Logging Operator disregards the status changes in the collector daemonsets that triggered the reconciliations. (LOG-4741) -
Before this update, the Vector log collector pods were stuck in the
CrashLoopBackOffstate on IBM Power machines. With this update, the Vector log collector pods start successfully on IBM Power architecture machines. (LOG-4768) -
Before this update, forwarding with a legacy forwarder to an internal LokiStack would produce SSL certificate errors using Fluentd collector pods. With this update, the log collector service account is used by default for authentication, using the associated token and
ca.crt. (LOG-4791) -
Before this update, forwarding with a legacy forwarder to an internal LokiStack would produce SSL certificate errors using Vector collector pods. With this update, the log collector service account is used by default for authentication and also using the associated token and
ca.crt. (LOG-4852) - Before this fix, IPv6 addresses would not be parsed correctly after evaluating a host or multiple hosts for placeholders. With this update, IPv6 addresses are correctly parsed. (LOG-4811)
-
Before this update, it was necessary to create a
ClusterRoleBindingto collect audit permissions for HTTP receiver inputs. With this update, it is not necessary to create theClusterRoleBindingbecause the endpoint already depends upon the cluster certificate authority. (LOG-4815) - Before this update, the Loki Operator did not mount a custom CA bundle to the ruler pods. As a result, during the process to evaluate alerting or recording rules, object storage access failed. With this update, the Loki Operator mounts the custom CA bundle to all ruler pods. The ruler pods can download logs from object storage to evaluate alerting or recording rules. (LOG-4836)
-
Before this update, while removing the
inputs.receiversection in theClusterLogForwarder, the HTTP input services and its associated secrets were not deleted. With this update, the HTTP input resources are deleted when not needed. (LOG-4612) -
Before this update, the
ClusterLogForwarderindicated validation errors in the status, but the outputs and the pipeline status did not accurately reflect the specific issues. With this update, the pipeline status displays the validation failure reasons correctly in case of misconfigured outputs, inputs, or filters. (LOG-4821) -
Before this update, changing a
LogQLquery that used controls such as time range or severity changed the label matcher operator defining it like a regular expression. With this update, regular expression operators remain unchanged when updating the query. (LOG-4841)
1.1.21.3. CVEs Copia collegamentoCollegamento copiato negli appunti!
- CVE-2007-4559
- CVE-2021-3468
- CVE-2021-3502
- CVE-2021-3826
- CVE-2021-43618
- CVE-2022-3523
- CVE-2022-3565
- CVE-2022-3594
- CVE-2022-4285
- CVE-2022-38457
- CVE-2022-40133
- CVE-2022-40982
- CVE-2022-41862
- CVE-2022-42895
- CVE-2023-0597
- CVE-2023-1073
- CVE-2023-1074
- CVE-2023-1075
- CVE-2023-1076
- CVE-2023-1079
- CVE-2023-1206
- CVE-2023-1249
- CVE-2023-1252
- CVE-2023-1652
- CVE-2023-1855
- CVE-2023-1981
- CVE-2023-1989
- CVE-2023-2731
- CVE-2023-3138
- CVE-2023-3141
- CVE-2023-3161
- CVE-2023-3212
- CVE-2023-3268
- CVE-2023-3316
- CVE-2023-3358
- CVE-2023-3576
- CVE-2023-3609
- CVE-2023-3772
- CVE-2023-3773
- CVE-2023-4016
- CVE-2023-4128
- CVE-2023-4155
- CVE-2023-4194
- CVE-2023-4206
- CVE-2023-4207
- CVE-2023-4208
- CVE-2023-4273
- CVE-2023-4641
- CVE-2023-22745
- CVE-2023-26545
- CVE-2023-26965
- CVE-2023-26966
- CVE-2023-27522
- CVE-2023-29491
- CVE-2023-29499
- CVE-2023-30456
- CVE-2023-31486
- CVE-2023-32324
- CVE-2023-32573
- CVE-2023-32611
- CVE-2023-32665
- CVE-2023-33203
- CVE-2023-33285
- CVE-2023-33951
- CVE-2023-33952
- CVE-2023-34241
- CVE-2023-34410
- CVE-2023-35825
- CVE-2023-36054
- CVE-2023-37369
- CVE-2023-38197
- CVE-2023-38545
- CVE-2023-38546
- CVE-2023-39191
- CVE-2023-39975
- CVE-2023-44487
1.1.22. Logging 5.8.0 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix Release 5.8.0 and OpenShift Logging Bug Fix Release 5.8.0 Kibana.
1.1.22.1. Deprecation notice Copia collegamentoCollegamento copiato negli appunti!
In Logging 5.8, Elasticsearch, Fluentd, and Kibana are deprecated and are planned to be removed in Logging 6.0, which is expected to be shipped alongside a future release of OpenShift Container Platform. Red Hat will provide critical and above CVE bug fixes and support for these components during the current release lifecycle, but these components will no longer receive feature enhancements. The Vector-based collector provided by the Red Hat OpenShift Logging Operator and LokiStack provided by the Loki Operator are the preferred Operators for log collection and storage. We encourage all users to adopt the Vector and Loki log stack, as this will be the stack that will be enhanced going forward.
1.1.22.2. Enhancements Copia collegamentoCollegamento copiato negli appunti!
1.1.22.2.1. Log Collection Copia collegamentoCollegamento copiato negli appunti!
-
With this update, the LogFileMetricExporter is no longer deployed with the collector by default. You must manually create a
LogFileMetricExportercustom resource (CR) to generate metrics from the logs produced by running containers. If you do not create theLogFileMetricExporterCR, you may see a No datapoints found message in the OpenShift Container Platform web console dashboard for Produced Logs. (LOG-3819) With this update, you can deploy multiple, isolated, and RBAC-protected
ClusterLogForwardercustom resource (CR) instances in any namespace. This allows independent groups to forward desired logs to any destination while isolating their configuration from other collector deployments. (LOG-1343)ImportantIn order to support multi-cluster log forwarding in additional namespaces other than the
openshift-loggingnamespace, you must update the Red Hat OpenShift Logging Operator to watch all namespaces. This functionality is supported by default in new Red Hat OpenShift Logging Operator version 5.8 installations.- With this update, you can use the flow control or rate limiting mechanism to limit the volume of log data that can be collected or forwarded by dropping excess log records. The input limits prevent poorly-performing containers from overloading the Logging and the output limits put a ceiling on the rate of logs shipped to a given data store. (LOG-884)
- With this update, you can configure the log collector to look for HTTP connections and receive logs as an HTTP server, also known as a webhook. (LOG-4562)
- With this update, you can configure audit polices to control which Kubernetes and OpenShift API server events are forwarded by the log collector. (LOG-3982)
1.1.22.2.2. Log Storage Copia collegamentoCollegamento copiato negli appunti!
- With this update, LokiStack administrators can have more fine-grained control over who can access which logs by granting access to logs on a namespace basis. (LOG-3841)
-
With this update, the Loki Operator introduces
PodDisruptionBudgetconfiguration on LokiStack deployments to ensure normal operations during OpenShift Container Platform cluster restarts by keeping ingestion and the query path available. (LOG-3839) - With this update, the reliability of existing LokiStack installations are seamlessly improved by applying a set of default Affinity and Anti-Affinity policies. (LOG-3840)
- With this update, you can manage zone-aware data replication as an administrator in LokiStack, in order to enhance reliability in the event of a zone failure. (LOG-3266)
- With this update, a new supported small-scale LokiStack size of 1x.extra-small is introduced for OpenShift Container Platform clusters hosting a few workloads and smaller ingestion volumes (up to 100GB/day). (LOG-4329)
- With this update, the LokiStack administrator has access to an official Loki dashboard to inspect the storage performance and the health of each component. (LOG-4327)
1.1.22.2.3. Log Console Copia collegamentoCollegamento copiato negli appunti!
- With this update, you can enable the Logging Console Plugin when Elasticsearch is the default Log Store. (LOG-3856)
- With this update, OpenShift Container Platform application owners can receive notifications for application log-based alerts on the OpenShift Container Platform web console Developer perspective for OpenShift Container Platform version 4.14 and later. (LOG-3548)
1.1.22.3. Known Issues Copia collegamentoCollegamento copiato negli appunti!
Currently, Splunk log forwarding might not work after upgrading to version 5.8 of the Red Hat OpenShift Logging Operator. This issue is caused by transitioning from OpenSSL version 1.1.1 to version 3.0.7. In the newer OpenSSL version, there is a default behavior change, where connections to TLS 1.2 endpoints are rejected if they do not expose the RFC 5746 extension.
As a workaround, enable TLS 1.3 support on the TLS terminating load balancer in front of the Splunk HEC (HTTP Event Collector) endpoint. Splunk is a third-party system and this should be configured from the Splunk end.
-
Currently, there is a flaw in handling multiplexed streams in the HTTP/2 protocol, where you can repeatedly make a request for a new multiplex stream and immediately send an
RST_STREAMframe to cancel it. This created extra work for the server set up and tore down the streams, resulting in a denial of service due to server resource consumption. There is currently no workaround for this issue. (LOG-4609) -
Currently, when using FluentD as the collector, the collector pod cannot start on the OpenShift Container Platform IPv6-enabled cluster. The pod logs produce the
fluentd pod [error]: unexpected error error_class=SocketError error="getaddrinfo: Name or service not knownerror. There is currently no workaround for this issue. (LOG-4706) - Currently, the log alert is not available on an IPv6-enabled cluster. There is currently no workaround for this issue. (LOG-4709)
-
Currently,
must-gathercannot gather any logs on a FIPS-enabled cluster, because the required OpenSSL library is not available in thecluster-logging-rhel9-operator. There is currently no workaround for this issue. (LOG-4403) -
Currently, when deploying the logging version 5.8 on a FIPS-enabled cluster, the collector pods cannot start and are stuck in
CrashLoopBackOffstatus, while using FluentD as a collector. There is currently no workaround for this issue. (LOG-3933)
1.1.22.4. CVEs Copia collegamentoCollegamento copiato negli appunti!
1.2. Logging 5.7 Copia collegamentoCollegamento copiato negli appunti!
Logging is provided as an installable component, with a distinct release cycle from the core OpenShift Container Platform. The Red Hat OpenShift Container Platform Life Cycle Policy outlines release compatibility.
The stable channel only provides updates to the most recent release of logging. To continue receiving updates for prior releases, you must change your subscription channel to stable-x.y, where x.y represents the major and minor version of logging you have installed. For example, stable-5.7.
1.2.1. Logging 5.7.15 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix 5.7.15.
1.2.1.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
-
Before this update, there was a delay in restarting Ingesters when configuring
LokiStack, because the Loki Operator sets the write-ahead logreplay_memory_ceilingto zero bytes for the1x.demosize. With this update, the minimum value used for thereplay_memory_ceilinghas been increased to avoid delays. (LOG-5616)
1.2.1.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
- CVE-2019-25162
- CVE-2020-15778
- CVE-2020-36777
- CVE-2021-43618
- CVE-2021-46934
- CVE-2021-47013
- CVE-2021-47055
- CVE-2021-47118
- CVE-2021-47153
- CVE-2021-47171
- CVE-2021-47185
- CVE-2022-4645
- CVE-2022-48627
- CVE-2022-48669
- CVE-2023-6004
- CVE-2023-6240
- CVE-2023-6597
- CVE-2023-6918
- CVE-2023-7008
- CVE-2023-43785
- CVE-2023-43786
- CVE-2023-43787
- CVE-2023-43788
- CVE-2023-43789
- CVE-2023-52439
- CVE-2023-52445
- CVE-2023-52477
- CVE-2023-52513
- CVE-2023-52520
- CVE-2023-52528
- CVE-2023-52565
- CVE-2023-52578
- CVE-2023-52594
- CVE-2023-52595
- CVE-2023-52598
- CVE-2023-52606
- CVE-2023-52607
- CVE-2023-52610
- CVE-2024-0340
- CVE-2024-0450
- CVE-2024-22365
- CVE-2024-23307
- CVE-2024-25062
- CVE-2024-25744
- CVE-2024-26458
- CVE-2024-26461
- CVE-2024-26593
- CVE-2024-26603
- CVE-2024-26610
- CVE-2024-26615
- CVE-2024-26642
- CVE-2024-26643
- CVE-2024-26659
- CVE-2024-26664
- CVE-2024-26693
- CVE-2024-26694
- CVE-2024-26743
- CVE-2024-26744
- CVE-2024-26779
- CVE-2024-26872
- CVE-2024-26892
- CVE-2024-26987
- CVE-2024-26901
- CVE-2024-26919
- CVE-2024-26933
- CVE-2024-26934
- CVE-2024-26964
- CVE-2024-26973
- CVE-2024-26993
- CVE-2024-27014
- CVE-2024-27048
- CVE-2024-27052
- CVE-2024-27056
- CVE-2024-27059
- CVE-2024-28834
- CVE-2024-33599
- CVE-2024-33600
- CVE-2024-33601
- CVE-2024-33602
1.2.2. Logging 5.7.14 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix 5.7.14.
1.2.2.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
- Before this update, an issue in the metrics collection code of the Logging Operator caused it to report stale telemetry metrics. With this update, the Logging Operator does not report stale telemetry metrics. (LOG-5472)
1.2.2.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
1.2.3. Logging 5.7.13 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix 5.7.13.
1.2.3.1. Enhancements Copia collegamentoCollegamento copiato negli appunti!
- Before this update, the Loki Operator configured Loki to use path-based style access for the Amazon Simple Storage Service (S3), which has been deprecated. With this update, the Loki Operator defaults to virtual-host style without users needing to change their configuration. (LOG-5403)
-
Before this update, the Loki Operator did not validate the Amazon Simple Storage Service (S3) endpoint used in the storage secret. With this update, the validation process ensures the S3 endpoint is a valid S3 URL, and the
LokiStackstatus updates to indicate any invalid URLs. (LOG-5393)
1.2.3.2. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
-
Before this update, the Elastisearch Operator
ServiceMonitorin theopenshift-operators-redhatnamespace used static token and certificate authority (CA) files for authentication, causing errors in the Prometheus Operator in the User Workload Monitoring specification on theServiceMonitorconfiguration. With this update, the Elastisearch OperatorServiceMonitorin theopenshift-operators-redhatnamespace now references a service account token secret by aLocalReferenceobject. This approach allows the User Workload Monitoring specifications in the Prometheus Operator to handle the Elastisearch OperatorServiceMonitorsuccessfully. This enables Prometheus to scrape the Elastisearch Operator metrics. (LOG-5243) -
Before this update, the Loki Operator did not validate the Amazon Simple Storage Service (S3) endpoint URL format used in the storage secret. With this update, the S3 endpoint URL goes through a validation step that reflects on the status of the
LokiStack. (LOG-5399)
1.2.3.3. CVEs Copia collegamentoCollegamento copiato negli appunti!
1.2.4. Logging 5.7.12 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix 5.7.12.
1.2.4.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
-
Before this update, the Loki Operator checked if the pods were running to decide if the
LokiStackwas ready. With this update, it also checks if the pods are ready, so that the readiness of theLokiStackreflects the state of its components. (LOG-5172) - Before this update, the Red Hat build pipeline didn’t use the existing build details in Loki builds and omitted information such as revision, branch, and version. With this update, the Red Hat build pipeline now adds these details to the Loki builds, fixing the issue. (LOG-5202)
-
Before this update, the configuration of the Loki Operator’s
ServiceMonitorcould match many Kubernetes services, resulting in the Loki Operator’s metrics being collected multiple times. With this update, the configuration ofServiceMonitornow only matches the dedicated metrics service. (LOG-5251) -
Before this update, the build pipeline did not include linker flags for the build date, causing Loki builds to show empty strings for
buildDateandgoVersion. With this update, adding the missing linker flags in the build pipeline fixes the issue. (LOG-5275) -
Before this update, the Loki Operator
ServiceMonitorin theopenshift-operators-redhatnamespace used static token and CA files for authentication, causing errors in the Prometheus Operator in the User Workload Monitoring spec on theServiceMonitorconfiguration. With this update, the Loki OperatorServiceMonitorinopenshift-operators-redhatnamespace now references a service account token secret by aLocalReferenceobject. This approach allows the User Workload Monitoring spec in the Prometheus Operator to handle the Loki OperatorServiceMonitorsuccessfully, enabling Prometheus to scrape the Loki Operator metrics. (LOG-5241)
1.2.4.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
- CVE-2021-35937
- CVE-2021-35938
- CVE-2021-35939
- CVE-2022-3545
- CVE-2022-41858
- CVE-2023-1073
- CVE-2023-1838
- CVE-2023-2166
- CVE-2023-2176
- CVE-2023-4623
- CVE-2023-4921
- CVE-2023-5717
- CVE-2023-6135
- CVE-2023-6356
- CVE-2023-6535
- CVE-2023-6536
- CVE-2023-6606
- CVE-2023-6610
- CVE-2023-6817
- CVE-2023-7104
- CVE-2023-27043
- CVE-2023-40283
- CVE-2023-45871
- CVE-2023-46813
- CVE-2023-48795
- CVE-2023-51385
- CVE-2024-0553
- CVE-2024-0646
- CVE-2024-24786
1.2.5. Logging 5.7.11 Copia collegamentoCollegamento copiato negli appunti!
This release includes Logging Bug Fix 5.7.11.
1.2.5.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
-
Before this update, when configured to read a custom S3 Certificate Authority, the Loki Operator would not automatically update the configuration when the name of the
ConfigMapobject or the contents changed. With this update, the Loki Operator now watches for changes to theConfigMapobject and automatically updates the generated configuration. (LOG-4968)
1.2.5.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
1.2.6. Logging 5.7.10 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix Release 5.7.10.
1.2.6.1. Bug fix Copia collegamentoCollegamento copiato negli appunti!
Before this update, the LokiStack ruler pods would not format the IPv6 pod IP in HTTP URLs used for cross pod communication, causing querying rules and alerts through the Prometheus-compatible API to fail. With this update, the LokiStack ruler pods encapsulate the IPv6 pod IP in square brackets, resolving the issue. (LOG-4891)
1.2.6.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
- CVE-2007-4559
- CVE-2021-43975
- CVE-2022-3594
- CVE-2022-3640
- CVE-2022-4285
- CVE-2022-4744
- CVE-2022-28388
- CVE-2022-38457
- CVE-2022-40133
- CVE-2022-40982
- CVE-2022-41862
- CVE-2022-42895
- CVE-2022-45869
- CVE-2022-45887
- CVE-2022-48337
- CVE-2022-48339
- CVE-2023-0458
- CVE-2023-0590
- CVE-2023-0597
- CVE-2023-1073
- CVE-2023-1074
- CVE-2023-1075
- CVE-2023-1079
- CVE-2023-1118
- CVE-2023-1206
- CVE-2023-1252
- CVE-2023-1382
- CVE-2023-1855
- CVE-2023-1989
- CVE-2023-1998
- CVE-2023-2513
- CVE-2023-3138
- CVE-2023-3141
- CVE-2023-3161
- CVE-2023-3212
- CVE-2023-3268
- CVE-2023-3446
- CVE-2023-3609
- CVE-2023-3611
- CVE-2023-3772
- CVE-2023-3817
- CVE-2023-4016
- CVE-2023-4128
- CVE-2023-4132
- CVE-2023-4155
- CVE-2023-4206
- CVE-2023-4207
- CVE-2023-4208
- CVE-2023-4641
- CVE-2023-4732
- CVE-2023-5678
- CVE-2023-22745
- CVE-2023-23455
- CVE-2023-26545
- CVE-2023-28328
- CVE-2023-28772
- CVE-2023-30456
- CVE-2023-31084
- CVE-2023-31436
- CVE-2023-31486
- CVE-2023-33203
- CVE-2023-33951
- CVE-2023-33952
- CVE-2023-35823
- CVE-2023-35824
- CVE-2023-35825
- CVE-2023-38037
- CVE-2024-0443
1.2.7. Logging 5.7.9 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix Release 5.7.9.
1.2.7.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
- Before this fix, IPv6 addresses would not be parsed correctly after evaluating a host or multiple hosts for placeholders. With this update, IPv6 addresses are correctly parsed. (LOG-4281)
-
Before this update, the Vector failed to start on IPv4-only nodes. As a result, it failed to create a listener for its metrics endpoint with the following error:
Failed to start Prometheus exporter: TCP bind failed: Address family not supported by protocol (os error 97). With this update, the Vector operates normally on IPv4-only nodes. (LOG-4589) -
Before this update, during the process of creating index patterns, the default alias was missing from the initial index in each log output. As a result, Kibana users were unable to create index patterns by using OpenShift Elasticsearch Operator. This update adds the missing aliases to OpenShift Elasticsearch Operator, resolving the issue. Kibana users can now create index patterns that include the
{app,infra,audit}-000001indexes. (LOG-4806) - Before this update, the Loki Operator did not mount a custom CA bundle to the ruler pods. As a result, during the process to evaluate alerting or recording rules, object storage access failed. With this update, the Loki Operator mounts the custom CA bundle to all ruler pods. The ruler pods can download logs from object storage to evaluate alerting or recording rules. (LOG-4837)
- Before this update, changing a LogQL query using controls such as time range or severity changed the label matcher operator as though it was defined like a regular expression. With this update, regular expression operators remain unchanged when updating the query. (LOG-4842)
- Before this update, the Vector collector deployments relied upon the default retry and buffering behavior. As a result, the delivery pipeline backed up trying to deliver every message when the availability of an output was unstable. With this update, the Vector collector deployments limit the number of message retries and drop messages after the threshold has been exceeded. (LOG-4536)
1.2.7.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
- CVE-2007-4559
- CVE-2021-43975
- CVE-2022-3594
- CVE-2022-3640
- CVE-2022-4744
- CVE-2022-28388
- CVE-2022-38457
- CVE-2022-40133
- CVE-2022-40982
- CVE-2022-41862
- CVE-2022-42895
- CVE-2022-45869
- CVE-2022-45887
- CVE-2022-48337
- CVE-2022-48339
- CVE-2023-0458
- CVE-2023-0590
- CVE-2023-0597
- CVE-2023-1073
- CVE-2023-1074
- CVE-2023-1075
- CVE-2023-1079
- CVE-2023-1118
- CVE-2023-1206
- CVE-2023-1252
- CVE-2023-1382
- CVE-2023-1855
- CVE-2023-1981
- CVE-2023-1989
- CVE-2023-1998
- CVE-2023-2513
- CVE-2023-3138
- CVE-2023-3141
- CVE-2023-3161
- CVE-2023-3212
- CVE-2023-3268
- CVE-2023-3609
- CVE-2023-3611
- CVE-2023-3772
- CVE-2023-4016
- CVE-2023-4128
- CVE-2023-4132
- CVE-2023-4155
- CVE-2023-4206
- CVE-2023-4207
- CVE-2023-4208
- CVE-2023-4641
- CVE-2023-4732
- CVE-2023-22745
- CVE-2023-23455
- CVE-2023-26545
- CVE-2023-28328
- CVE-2023-28772
- CVE-2023-30456
- CVE-2023-31084
- CVE-2023-31436
- CVE-2023-31486
- CVE-2023-32324
- CVE-2023-33203
- CVE-2023-33951
- CVE-2023-33952
- CVE-2023-34241
- CVE-2023-35823
- CVE-2023-35824
- CVE-2023-35825
1.2.8. Logging 5.7.8 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix Release 5.7.8.
1.2.8.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
-
Before this update, there was a potential conflict when the same name was used for the
outputRefsandinputRefsparameters in theClusterLogForwardercustom resource (CR). As a result, the collector pods entered in aCrashLoopBackOffstatus. With this update, the output labels contain theOUTPUT_prefix to ensure a distinction between output labels and pipeline names. (LOG-4383) -
Before this update, while configuring the JSON log parser, if you did not set the
structuredTypeKeyorstructuredTypeNameparameters for the Cluster Logging Operator, no alert would display about an invalid configuration. With this update, the Cluster Logging Operator informs you about the configuration issue. (LOG-4441) -
Before this update, if the
hecTokenkey was missing or incorrect in the secret specified for a Splunk output, the validation failed because the Vector forwarded logs to Splunk without a token. With this update, if thehecTokenkey is missing or incorrect, the validation fails with theA non-empty hecToken entry is requirederror message. (LOG-4580) -
Before this update, selecting a date from the
Custom time rangefor logs caused an error in the web console. With this update, you can select a date from the time range model in the web console successfully. (LOG-4684)
1.2.8.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
1.2.9. Logging 5.7.7 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix Release 5.7.7.
1.2.9.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
- Before this update, FluentD normalized the logs emitted by the EventRouter differently from Vector. With this update, the Vector produces log records in a consistent format. (LOG-4178)
- Before this update, there was an error in the query used for the FluentD Buffer Availability graph in the metrics dashboard created by the Cluster Logging Operator as it showed the minimum buffer usage. With this update, the graph shows the maximum buffer usage and is now renamed to FluentD Buffer Usage. (LOG-4555)
-
Before this update, deploying a LokiStack on IPv6-only or dual-stack OpenShift Container Platform clusters caused the LokiStack memberlist registration to fail. As a result, the distributor pods went into a crash loop. With this update, an administrator can enable IPv6 by setting the
lokistack.spec.hashRing.memberlist.enableIPv6:value totrue, which resolves the issue. (LOG-4569) - Before this update, the log collector relied on the default configuration settings for reading the container log lines. As a result, the log collector did not read the rotated files efficiently. With this update, there is an increase in the number of bytes read, which allows the log collector to efficiently process rotated files. (LOG-4575)
- Before this update, the unused metrics in the Event Router caused the container to fail due to excessive memory usage. With this update, there is reduction in the memory usage of the Event Router by removing the unused metrics. (LOG-4686)
1.2.9.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
1.2.10. Logging 5.7.6 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix Release 5.7.6.
1.2.10.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
- Before this update, the collector relied on the default configuration settings for reading the container log lines. As a result, the collector did not read the rotated files efficiently. With this update, there is an increase in the number of bytes read, which allows the collector to efficiently process rotated files. (LOG-4501)
- Before this update, when users pasted a URL with predefined filters, some filters did not reflect. With this update, the UI reflects all the filters in the URL. (LOG-4459)
- Before this update, forwarding to Loki using custom labels generated an error when switching from Fluentd to Vector. With this update, the Vector configuration sanitizes labels in the same way as Fluentd to ensure the collector starts and correctly processes labels. (LOG-4460)
- Before this update, the Observability Logs console search field did not accept special characters that it should escape. With this update, it is escaping special characters properly in the query. (LOG-4456)
-
Before this update, the following warning message appeared while sending logs to Splunk:
Timestamp was not found.With this update, the change overrides the name of the log field used to retrieve the Timestamp and sends it to Splunk without warning. (LOG-4413) -
Before this update, the CPU and memory usage of Vector was increasing over time. With this update, the Vector configuration now contains the
expire_metrics_secs=60setting to limit the lifetime of the metrics and cap the associated CPU usage and memory footprint. (LOG-4171) - Before this update, the LokiStack gateway cached authorized requests very broadly. As a result, this caused wrong authorization results. With this update, LokiStack gateway caches on a more fine-grained basis which resolves this issue. (LOG-4393)
- Before this update, the Fluentd runtime image included builder tools which were unnecessary at runtime. With this update, the builder tools are removed, resolving the issue. (LOG-4467)
1.2.10.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
1.2.11. Logging 5.7.4 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix Release 5.7.4.
1.2.11.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
-
Before this update, when forwarding logs to CloudWatch, a
namespaceUUIDvalue was not appended to thelogGroupNamefield. With this update, thenamespaceUUIDvalue is included, so alogGroupNamein CloudWatch appears aslogGroupName: vectorcw.b443fb9e-bd4c-4b6a-b9d3-c0097f9ed286. (LOG-2701) - Before this update, when forwarding logs over HTTP to an off-cluster destination, the Vector collector was unable to authenticate to the cluster-wide HTTP proxy even though correct credentials were provided in the proxy URL. With this update, the Vector log collector can now authenticate to the cluster-wide HTTP proxy. (LOG-3381)
- Before this update, the Operator would fail if the Fluentd collector was configured with Splunk as an output, due to this configuration being unsupported. With this update, configuration validation rejects unsupported outputs, resolving the issue. (LOG-4237)
-
Before this update, when the Vector collector was updated an
enabled = truevalue in the TLS configuration for AWS Cloudwatch logs and the GCP Stackdriver caused a configuration error. With this update,enabled = truevalue will be removed for these outputs, resolving the issue. (LOG-4242) -
Before this update, the Vector collector occasionally panicked with the following error message in its log:
thread 'vector-worker' panicked at 'all branches are disabled and there is no else branch', src/kubernetes/reflector.rs:26:9. With this update, the error has been resolved. (LOG-4275) -
Before this update, an issue in the Loki Operator caused the
alert-managerconfiguration for the application tenant to disappear if the Operator was configured with additional options for that tenant. With this update, the generated Loki configuration now contains both the custom and the auto-generated configuration. (LOG-4361) - Before this update, when multiple roles were used to authenticate using STS with AWS Cloudwatch forwarding, a recent update caused the credentials to be non-unique. With this update, multiple combinations of STS roles and static credentials can once again be used to authenticate with AWS Cloudwatch. (LOG-4368)
- Before this update, Loki filtered label values for active streams but did not remove duplicates, making Grafana’s Label Browser unusable. With this update, Loki filters out duplicate label values for active streams, resolving the issue. (LOG-4389)
-
Pipelines with no
namefield specified in theClusterLogForwardercustom resource (CR) stopped working after upgrading to OpenShift Logging 5.7. With this update, the error has been resolved. (LOG-4120)
1.2.11.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
1.2.12. Logging 5.7.3 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix Release 5.7.3.
1.2.12.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
- Before this update, when viewing logs within the OpenShift Container Platform web console, cached files caused the data to not refresh. With this update the bootstrap files are not cached, resolving the issue. (LOG-4100)
- Before this update, the Loki Operator reset errors in a way that made identifying configuration problems difficult to troubleshoot. With this update, errors persist until the configuration error is resolved. (LOG-4156)
-
Before this update, the LokiStack ruler did not restart after changes were made to the
RulerConfigcustom resource (CR). With this update, the Loki Operator restarts the ruler pods after theRulerConfigCR is updated. (LOG-4161) -
Before this update, the vector collector terminated unexpectedly when input match label values contained a
/character within theClusterLogForwarder. This update resolves the issue by quoting the match label, enabling the collector to start and collect logs. (LOG-4176) -
Before this update, the Loki Operator terminated unexpectedly when a
LokiStackCR defined tenant limits, but not global limits. With this update, the Loki Operator can processLokiStackCRs without global limits, resolving the issue. (LOG-4198) - Before this update, Fluentd did not send logs to an Elasticsearch cluster when the private key provided was passphrase-protected. With this update, Fluentd properly handles passphrase-protected private keys when establishing a connection with Elasticsearch. (LOG-4258)
-
Before this update, clusters with more than 8,000 namespaces caused Elasticsearch to reject queries because the list of namespaces was larger than the
http.max_header_sizesetting. With this update, the default value for header size has been increased, resolving the issue. (LOG-4277) -
Before this update, label values containing a
/character within theClusterLogForwarderCR would cause the collector to terminate unexpectedly. With this update, slashes are replaced with underscores, resolving the issue. (LOG-4095) -
Before this update, the Cluster Logging Operator terminated unexpectedly when set to an unmanaged state. With this update, a check to ensure that the
ClusterLoggingresource is in the correct Management state before initiating the reconciliation of theClusterLogForwarderCR, resolving the issue. (LOG-4177) - Before this update, when viewing logs within the OpenShift Container Platform web console, selecting a time range by dragging over the histogram didn’t work on the aggregated logs view inside the pod detail. With this update, the time range can be selected by dragging on the histogram in this view. (LOG-4108)
- Before this update, when viewing logs within the OpenShift Container Platform web console, queries longer than 30 seconds timed out. With this update, the timeout value can be configured in the configmap/logging-view-plugin. (LOG-3498)
- Before this update, when viewing logs within the OpenShift Container Platform web console, clicking the more data available option loaded more log entries only the first time it was clicked. With this update, more entries are loaded with each click. (OU-188)
- Before this update, when viewing logs within the OpenShift Container Platform web console, clicking the streaming option would only display the streaming logs message without showing the actual logs. With this update, both the message and the log stream are displayed correctly. (OU-166)
1.2.12.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
1.2.13. Logging 5.7.2 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix Release 5.7.2.
1.2.13.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
-
Before this update, it was not possible to delete the
openshift-loggingnamespace directly due to the presence of a pending finalizer. With this update, the finalizer is no longer utilized, enabling direct deletion of the namespace. (LOG-3316) -
Before this update, the
run.shscript would display an incorrectchunk_limit_sizevalue if it was changed according to the OpenShift Container Platform documentation. However, when setting thechunk_limit_sizevia the environment variable$BUFFER_SIZE_LIMIT, the script would show the correct value. With this update, therun.shscript now consistently displays the correctchunk_limit_sizevalue in both scenarios. (LOG-3330) - Before this update, the OpenShift Container Platform web console’s logging view plugin did not allow for custom node placement or tolerations. This update adds the ability to define node placement and tolerations for the logging view plugin. (LOG-3749)
-
Before this update, the Cluster Logging Operator encountered an Unsupported Media Type exception when trying to send logs to DataDog via the Fluentd HTTP Plugin. With this update, users can seamlessly assign the content type for log forwarding by configuring the HTTP header Content-Type. The value provided is automatically assigned to the
content_typeparameter within the plugin, ensuring successful log transmission. (LOG-3784) -
Before this update, when the
detectMultilineErrorsfield was set totruein theClusterLogForwardercustom resource (CR), PHP multi-line errors were recorded as separate log entries, causing the stack trace to be split across multiple messages. With this update, multi-line error detection for PHP is enabled, ensuring that the entire stack trace is included in a single log message. (LOG-3878) -
Before this update,
ClusterLogForwarderpipelines containing a space in their name caused the Vector collector pods to continuously crash. With this update, all spaces, dashes (-), and dots (.) in pipeline names are replaced with underscores (_). (LOG-3945) -
Before this update, the
log_forwarder_outputmetric did not include thehttpparameter. This update adds the missing parameter to the metric. (LOG-3997) - Before this update, Fluentd did not identify some multi-line JavaScript client exceptions when they ended with a colon. With this update, the Fluentd buffer name is prefixed with an underscore, resolving the issue. (LOG-4019)
- Before this update, when configuring log forwarding to write to a Kafka output topic which matched a key in the payload, logs dropped due to an error. With this update, Fluentd’s buffer name has been prefixed with an underscore, resolving the issue.(LOG-4027)
- Before this update, the LokiStack gateway returned label values for namespaces without applying the access rights of a user. With this update, the LokiStack gateway applies permissions to label value requests, resolving the issue. (LOG-4049)
Before this update, the Cluster Logging Operator API required a certificate to be provided by a secret when the
tls.insecureSkipVerifyoption was set totrue. With this update, the Cluster Logging Operator API no longer requires a certificate to be provided by a secret in such cases. The following configuration has been added to the Operator’s CR:tls.verify_certificate = false tls.verify_hostname = false
tls.verify_certificate = false tls.verify_hostname = falseCopy to Clipboard Copied! Toggle word wrap Toggle overflow (LOG-3445)
-
Before this update, the LokiStack route configuration caused queries running longer than 30 seconds to timeout. With this update, the LokiStack global and per-tenant
queryTimeoutsettings affect the route timeout settings, resolving the issue. (LOG-4052) -
Before this update, a prior fix to remove defaulting of the
collection.typeresulted in the Operator no longer honoring the deprecated specs for resource, node selections, and tolerations. This update modifies the Operator behavior to always prefer thecollection.logsspec over those ofcollection. This varies from previous behavior that allowed using both the preferred fields and deprecated fields but would ignore the deprecated fields whencollection.typewas populated. (LOG-4185) - Before this update, the Vector log collector did not generate TLS configuration for forwarding logs to multiple Kafka brokers if the broker URLs were not specified in the output. With this update, TLS configuration is generated appropriately for multiple brokers. (LOG-4163)
- Before this update, the option to enable passphrase for log forwarding to Kafka was unavailable. This limitation presented a security risk as it could potentially expose sensitive information. With this update, users now have a seamless option to enable passphrase for log forwarding to Kafka. (LOG-3314)
-
Before this update, Vector log collector did not honor the
tlsSecurityProfilesettings for outgoing TLS connections. After this update, Vector handles TLS connection settings appropriately. (LOG-4011) -
Before this update, not all available output types were included in the
log_forwarder_output_infometrics. With this update, metrics contain Splunk and Google Cloud Logging data which was missing previously. (LOG-4098) -
Before this update, when
follow_inodeswas set totrue, the Fluentd collector could crash on file rotation. With this update, thefollow_inodessetting does not crash the collector. (LOG-4151) - Before this update, the Fluentd collector could incorrectly close files that should be watched because of how those files were tracked. With this update, the tracking parameters have been corrected. (LOG-4149)
Before this update, forwarding logs with the Vector collector and naming a pipeline in the
ClusterLogForwarderinstanceaudit,applicationorinfrastructureresulted in collector pods staying in theCrashLoopBackOffstate with the following error in the collector log:ERROR vector::cli: Configuration error. error=redefinition of table transforms.audit for key transforms.audit
ERROR vector::cli: Configuration error. error=redefinition of table transforms.audit for key transforms.auditCopy to Clipboard Copied! Toggle word wrap Toggle overflow After this update, pipeline names no longer clash with reserved input names, and pipelines can be named
audit,applicationorinfrastructure. (LOG-4218)-
Before this update, when forwarding logs to a syslog destination with the Vector collector and setting the
addLogSourceflag totrue, the following extra empty fields were added to the forwarded messages:namespace_name=,container_name=, andpod_name=. With this update, these fields are no longer added to journal logs. (LOG-4219) -
Before this update, when a
structuredTypeKeywas not found, and astructuredTypeNamewas not specified, log messages were still parsed into structured object. With this update, parsing of logs is as expected. (LOG-4220)
1.2.13.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
- CVE-2021-26341
- CVE-2021-33655
- CVE-2021-33656
- CVE-2022-1462
- CVE-2022-1679
- CVE-2022-1789
- CVE-2022-2196
- CVE-2022-2663
- CVE-2022-3028
- CVE-2022-3239
- CVE-2022-3522
- CVE-2022-3524
- CVE-2022-3564
- CVE-2022-3566
- CVE-2022-3567
- CVE-2022-3619
- CVE-2022-3623
- CVE-2022-3625
- CVE-2022-3627
- CVE-2022-3628
- CVE-2022-3707
- CVE-2022-3970
- CVE-2022-4129
- CVE-2022-20141
- CVE-2022-25147
- CVE-2022-25265
- CVE-2022-30594
- CVE-2022-36227
- CVE-2022-39188
- CVE-2022-39189
- CVE-2022-41218
- CVE-2022-41674
- CVE-2022-42703
- CVE-2022-42720
- CVE-2022-42721
- CVE-2022-42722
- CVE-2022-43750
- CVE-2022-47929
- CVE-2023-0394
- CVE-2023-0461
- CVE-2023-1195
- CVE-2023-1582
- CVE-2023-2491
- CVE-2023-22490
- CVE-2023-23454
- CVE-2023-23946
- CVE-2023-25652
- CVE-2023-25815
- CVE-2023-27535
- CVE-2023-29007
1.2.14. Logging 5.7.1 Copia collegamentoCollegamento copiato negli appunti!
This release includes: OpenShift Logging Bug Fix Release 5.7.1.
1.2.14.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
- Before this update, the presence of numerous noisy messages within the Cluster Logging Operator pod logs caused reduced log readability, and increased difficulty in identifying important system events. With this update, the issue is resolved by significantly reducing the noisy messages within Cluster Logging Operator pod logs. (LOG-3482)
-
Before this update, the API server would reset the value for the
CollectorSpec.Typefield tovector, even when the custom resource used a different value. This update removes the default for theCollectorSpec.Typefield to restore the previous behavior. (LOG-4086) - Before this update, a time range could not be selected in the OpenShift Container Platform web console by clicking and dragging over the logs histogram. With this update, clicking and dragging can be used to successfully select a time range. (LOG-4501)
- Before this update, clicking on the Show Resources link in the OpenShift Container Platform web console did not produce any effect. With this update, the issue is resolved by fixing the functionality of the "Show Resources" link to toggle the display of resources for each log entry. (LOG-3218)
1.2.14.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
1.2.15. Logging 5.7.0 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix Release 5.7.0.
1.2.15.1. Enhancements Copia collegamentoCollegamento copiato negli appunti!
With this update, you can enable logging to detect multi-line exceptions and reassemble them into a single log entry.
To enable logging to detect multi-line exceptions and reassemble them into a single log entry, ensure that the ClusterLogForwarder Custom Resource (CR) contains a detectMultilineErrors field, with a value of true.
1.2.15.2. Known Issues Copia collegamentoCollegamento copiato negli appunti!
None.
1.2.15.3. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
-
Before this update, the
nodeSelectorattribute for the Gateway component of the LokiStack did not impact node scheduling. With this update, thenodeSelectorattribute works as expected. (LOG-3713)
1.2.15.4. CVEs Copia collegamentoCollegamento copiato negli appunti!
1.3. Logging 5.6 Copia collegamentoCollegamento copiato negli appunti!
Logging is provided as an installable component, with a distinct release cycle from the core OpenShift Container Platform. The Red Hat OpenShift Container Platform Life Cycle Policy outlines release compatibility.
The stable channel only provides updates to the most recent release of logging. To continue receiving updates for prior releases, you must change your subscription channel to stable-x.y, where x.y represents the major and minor version of logging you have installed. For example, stable-5.7.
1.3.1. Logging 5.6.27 Copia collegamentoCollegamento copiato negli appunti!
This release includes RHBA-2024:10988.
1.3.1.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
None.
1.3.1.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
1.3.2. Logging 5.6.26 Copia collegamentoCollegamento copiato negli appunti!
This release includes RHBA-2024:10050.
1.3.2.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
None.
1.3.2.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
- CVE-2022-48773
- CVE-2022-48936
- CVE-2023-48161
- CVE-2023-52492
- CVE-2024-3596
- CVE-2024-5535
- CVE-2024-7006
- CVE-2024-21208
- CVE-2024-21210
- CVE-2024-21217
- CVE-2024-21235
- CVE-2024-24857
- CVE-2024-26851
- CVE-2024-26924
- CVE-2024-26976
- CVE-2024-27017
- CVE-2024-27062
- CVE-2024-35839
- CVE-2024-35898
- CVE-2024-35939
- CVE-2024-38540
- CVE-2024-38541
- CVE-2024-38586
- CVE-2024-38608
- CVE-2024-39503
- CVE-2024-40924
- CVE-2024-40961
- CVE-2024-40983
- CVE-2024-40984
- CVE-2024-41009
- CVE-2024-41042
- CVE-2024-41066
- CVE-2024-41092
- CVE-2024-41093
- CVE-2024-42070
- CVE-2024-42079
- CVE-2024-42244
- CVE-2024-42284
- CVE-2024-42292
- CVE-2024-42301
- CVE-2024-43854
- CVE-2024-43880
- CVE-2024-43889
- CVE-2024-43892
- CVE-2024-44935
- CVE-2024-44989
- CVE-2024-44990
- CVE-2024-45018
- CVE-2024-46826
- CVE-2024-47668
1.3.3. Logging 5.6.25 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix Release 5.6.25.
1.3.3.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
None.
1.3.3.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
- CVE-2021-46984
- CVE-2021-47097
- CVE-2021-47101
- CVE-2021-47287
- CVE-2021-47289
- CVE-2021-47321
- CVE-2021-47338
- CVE-2021-47352
- CVE-2021-47383
- CVE-2021-47384
- CVE-2021-47385
- CVE-2021-47386
- CVE-2021-47393
- CVE-2021-47412
- CVE-2021-47432
- CVE-2021-47441
- CVE-2021-47455
- CVE-2021-47466
- CVE-2021-47497
- CVE-2021-47527
- CVE-2021-47560
- CVE-2021-47582
- CVE-2021-47609
- CVE-2022-48619
- CVE-2022-48754
- CVE-2022-48760
- CVE-2022-48804
- CVE-2022-48836
- CVE-2022-48866
- CVE-2023-6040
- CVE-2023-37920
- CVE-2023-52470
- CVE-2023-52476
- CVE-2023-52478
- CVE-2023-52522
- CVE-2023-52605
- CVE-2023-52683
- CVE-2023-52798
- CVE-2023-52800
- CVE-2023-52809
- CVE-2023-52817
- CVE-2023-52840
- CVE-2024-2398
- CVE-2024-4032
- CVE-2024-5535
- CVE-2024-6232
- CVE-2024-6345
- CVE-2024-6923
- CVE-2024-23848
- CVE-2024-24791
- CVE-2024-26595
- CVE-2024-26600
- CVE-2024-26638
- CVE-2024-26645
- CVE-2024-26649
- CVE-2024-26665
- CVE-2024-26717
- CVE-2024-26720
- CVE-2024-26769
- CVE-2024-26846
- CVE-2024-26855
- CVE-2024-26880
- CVE-2024-26894
- CVE-2024-26923
- CVE-2024-26939
- CVE-2024-27013
- CVE-2024-27042
- CVE-2024-34155
- CVE-2024-34156
- CVE-2024-34158
- CVE-2024-35809
- CVE-2024-35877
- CVE-2024-35884
- CVE-2024-35944
- CVE-2024-47101
- CVE-2024-36883
- CVE-2024-36901
- CVE-2024-36902
- CVE-2024-36919
- CVE-2024-36920
- CVE-2024-36922
- CVE-2024-36939
- CVE-2024-36953
- CVE-2024-37356
- CVE-2024-38558
- CVE-2024-38559
- CVE-2024-38570
- CVE-2024-38579
- CVE-2024-38581
- CVE-2024-38619
- CVE-2024-39471
- CVE-2024-39499
- CVE-2024-39501
- CVE-2024-39506
- CVE-2024-40901
- CVE-2024-40904
- CVE-2024-40911
- CVE-2024-40912
- CVE-2024-40929
- CVE-2024-40931
- CVE-2024-40941
- CVE-2024-40954
- CVE-2024-40958
- CVE-2024-40959
- CVE-2024-40960
- CVE-2024-40972
- CVE-2024-40977
- CVE-2024-40978
- CVE-2024-40988
- CVE-2024-40989
- CVE-2024-40995
- CVE-2024-40997
- CVE-2024-40998
- CVE-2024-41005
- CVE-2024-41007
- CVE-2024-41008
- CVE-2024-41012
- CVE-2024-41013
- CVE-2024-41014
- CVE-2024-41023
- CVE-2024-41035
- CVE-2024-41038
- CVE-2024-41039
- CVE-2024-41040
- CVE-2024-41041
- CVE-2024-41044
- CVE-2024-41055
- CVE-2024-41056
- CVE-2024-41060
- CVE-2024-41064
- CVE-2024-41065
- CVE-2024-41071
- CVE-2024-41076
- CVE-2024-41090
- CVE-2024-41091
- CVE-2024-41097
- CVE-2024-42084
- CVE-2024-42090
- CVE-2024-42094
- CVE-2024-42096
- CVE-2024-42114
- CVE-2024-42124
- CVE-2024-42131
- CVE-2024-42152
- CVE-2024-42154
- CVE-2024-42225
- CVE-2024-42226
- CVE-2024-42228
- CVE-2024-42237
- CVE-2024-42238
- CVE-2024-42240
- CVE-2024-42246
- CVE-2024-42265
- CVE-2024-42322
- CVE-2024-43830
- CVE-2024-43871
- CVE-2024-45490
- CVE-2024-45491
- CVE-2024-45492
For detailed information on Red Hat security ratings, review Severity ratings.
1.3.4. Logging 5.6.24 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix Release 5.6.24.
1.3.4.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
None.
1.3.4.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
For detailed information on Red Hat security ratings, review Severity ratings.
1.3.5. Logging 5.6.23 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix Release 5.6.23.
1.3.5.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
None.
1.3.5.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
- CVE-2018-15209
- CVE-2021-46939
- CVE-2021-47018
- CVE-2021-47257
- CVE-2021-47284
- CVE-2021-47304
- CVE-2021-47373
- CVE-2021-47408
- CVE-2021-47461
- CVE-2021-47468
- CVE-2021-47491
- CVE-2021-47548
- CVE-2021-47579
- CVE-2021-47624
- CVE-2022-48632
- CVE-2022-48743
- CVE-2022-48747
- CVE-2022-48757
- CVE-2023-6228
- CVE-2023-25433
- CVE-2023-28746
- CVE-2023-52356
- CVE-2023-52451
- CVE-2023-52463
- CVE-2023-52469
- CVE-2023-52471
- CVE-2023-52486
- CVE-2023-52530
- CVE-2023-52619
- CVE-2023-52622
- CVE-2023-52623
- CVE-2023-52648
- CVE-2023-52653
- CVE-2023-52658
- CVE-2023-52662
- CVE-2023-52679
- CVE-2023-52707
- CVE-2023-52730
- CVE-2023-52756
- CVE-2023-52762
- CVE-2023-52764
- CVE-2023-52775
- CVE-2023-52777
- CVE-2023-52784
- CVE-2023-52791
- CVE-2023-52796
- CVE-2023-52803
- CVE-2023-52811
- CVE-2023-52832
- CVE-2023-52834
- CVE-2023-52845
- CVE-2023-52847
- CVE-2023-52864
- CVE-2024-2201
- CVE-2024-2398
- CVE-2024-6345
- CVE-2024-21131
- CVE-2024-21138
- CVE-2024-21140
- CVE-2024-21144
- CVE-2024-21145
- CVE-2024-21147
- CVE-2024-21823
- CVE-2024-25739
- CVE-2024-26586
- CVE-2024-26614
- CVE-2024-26640
- CVE-2024-26660
- CVE-2024-26669
- CVE-2024-26686
- CVE-2024-26698
- CVE-2024-26704
- CVE-2024-26733
- CVE-2024-26740
- CVE-2024-26772
- CVE-2024-26773
- CVE-2024-26802
- CVE-2024-26810
- CVE-2024-26837
- CVE-2024-26840
- CVE-2024-26843
- CVE-2024-26852
- CVE-2024-26853
- CVE-2024-26870
- CVE-2024-26878
- CVE-2024-26908
- CVE-2024-26921
- CVE-2024-26925
- CVE-2024-26940
- CVE-2024-26958
- CVE-2024-26960
- CVE-2024-26961
- CVE-2024-27010
- CVE-2024-27011
- CVE-2024-27019
- CVE-2024-27020
- CVE-2024-27025
- CVE-2024-27065
- CVE-2024-27388
- CVE-2024-27395
- CVE-2024-27434
- CVE-2024-31076
- CVE-2024-33621
- CVE-2024-35790
- CVE-2024-35801
- CVE-2024-35807
- CVE-2024-35810
- CVE-2024-35814
- CVE-2024-35823
- CVE-2024-35824
- CVE-2024-35847
- CVE-2024-35876
- CVE-2024-35893
- CVE-2024-35896
- CVE-2024-35897
- CVE-2024-35899
- CVE-2024-35900
- CVE-2024-35910
- CVE-2024-35912
- CVE-2024-35924
- CVE-2024-35925
- CVE-2024-35930
- CVE-2024-35937
- CVE-2024-35938
- CVE-2024-35946
- CVE-2024-35947
- CVE-2024-35952
- CVE-2024-36000
- CVE-2024-36005
- CVE-2024-36006
- CVE-2024-36010
- CVE-2024-36016
- CVE-2024-36017
- CVE-2024-36020
- CVE-2024-36025
- CVE-2024-36270
- CVE-2024-36286
- CVE-2024-36489
- CVE-2024-36886
- CVE-2024-36889
- CVE-2024-36896
- CVE-2024-36904
- CVE-2024-36905
- CVE-2024-36917
- CVE-2024-36921
- CVE-2024-36927
- CVE-2024-36929
- CVE-2024-36933
- CVE-2024-36940
- CVE-2024-36941
- CVE-2024-36945
- CVE-2024-36950
- CVE-2024-36954
- CVE-2024-36960
- CVE-2024-36971
- CVE-2024-36978
- CVE-2024-36979
- CVE-2024-37370
- CVE-2024-37371
- CVE-2024-37891
- CVE-2024-38428
- CVE-2024-38538
- CVE-2024-38555
- CVE-2024-38573
- CVE-2024-38575
- CVE-2024-38596
- CVE-2024-38598
- CVE-2024-38615
- CVE-2024-38627
- CVE-2024-39276
- CVE-2024-39472
- CVE-2024-39476
- CVE-2024-39487
- CVE-2024-39502
- CVE-2024-40927
- CVE-2024-40974
1.3.6. Logging 5.6.22 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix 5.6.22
1.3.6.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
- Before this update, the Loki Operator overwrote user annotations on the LokiStack Route resource, causing customizations to drop. With this update, the Loki Operator no longer overwrites Route annotations, fixing the issue. (LOG-5947)
1.3.6.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
1.3.7. Logging 5.6.21 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix 5.6.21
1.3.7.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
-
Before this update, LokiStack was missing a route for the Volume API, which caused the following error:
404 not found. With this update, LokiStack exposes the Volume API, resolving the issue. (LOG-5751)
1.3.7.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
- CVE-2020-26555
- CVE-2021-46909
- CVE-2021-46972
- CVE-2021-47069
- CVE-2021-47073
- CVE-2021-47236
- CVE-2021-47310
- CVE-2021-47311
- CVE-2021-47353
- CVE-2021-47356
- CVE-2021-47456
- CVE-2021-47495
- CVE-2022-48624
- CVE-2023-2953
- CVE-2023-5090
- CVE-2023-52464
- CVE-2023-52560
- CVE-2023-52615
- CVE-2023-52626
- CVE-2023-52667
- CVE-2023-52669
- CVE-2023-52675
- CVE-2023-52686
- CVE-2023-52700
- CVE-2023-52703
- CVE-2023-52781
- CVE-2023-52813
- CVE-2023-52835
- CVE-2023-52877
- CVE-2023-52878
- CVE-2023-52881
- CVE-2024-3651
- CVE-2024-24790
- CVE-2024-24806
- CVE-2024-26583
- CVE-2024-26584
- CVE-2024-26585
- CVE-2024-26656
- CVE-2024-26675
- CVE-2024-26735
- CVE-2024-26759
- CVE-2024-26801
- CVE-2024-26804
- CVE-2024-26826
- CVE-2024-26859
- CVE-2024-26906
- CVE-2024-26907
- CVE-2024-26974
- CVE-2024-26982
- CVE-2024-27397
- CVE-2024-27410
- CVE-2024-28182
- CVE-2024-32002
- CVE-2024-32004
- CVE-2024-32020
- CVE-2024-32021
- CVE-2024-32465
- CVE-2024-32487
- CVE-2024-35235
- CVE-2024-35789
- CVE-2024-35835
- CVE-2024-35838
- CVE-2024-35845
- CVE-2024-35852
- CVE-2024-35853
- CVE-2024-35854
- CVE-2024-35855
- CVE-2024-35888
- CVE-2024-35890
- CVE-2024-35958
- CVE-2024-35959
- CVE-2024-35960
- CVE-2024-36004
- CVE-2024-36007
1.3.8. Logging 5.6.20 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix 5.6.20
1.3.8.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
-
Before this update, there was a delay in restarting Ingesters when configuring
LokiStack, because the Loki Operator sets the write-ahead logreplay_memory_ceilingto zero bytes for the1x.demosize. With this update, the minimum value used for thereplay_memory_ceilinghas been increased to avoid delays. (LOG-5617)
1.3.8.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
- CVE-2019-25162
- CVE-2020-15778
- CVE-2020-36777
- CVE-2021-43618
- CVE-2021-46934
- CVE-2021-47013
- CVE-2021-47055
- CVE-2021-47118
- CVE-2021-47153
- CVE-2021-47171
- CVE-2021-47185
- CVE-2022-4645
- CVE-2022-48627
- CVE-2022-48669
- CVE-2023-6004
- CVE-2023-6240
- CVE-2023-6597
- CVE-2023-6918
- CVE-2023-7008
- CVE-2023-43785
- CVE-2023-43786
- CVE-2023-43787
- CVE-2023-43788
- CVE-2023-43789
- CVE-2023-52439
- CVE-2023-52445
- CVE-2023-52477
- CVE-2023-52513
- CVE-2023-52520
- CVE-2023-52528
- CVE-2023-52565
- CVE-2023-52578
- CVE-2023-52594
- CVE-2023-52595
- CVE-2023-52598
- CVE-2023-52606
- CVE-2023-52607
- CVE-2023-52610
- CVE-2024-0340
- CVE-2024-0450
- CVE-2024-22365
- CVE-2024-23307
- CVE-2024-25062
- CVE-2024-25744
- CVE-2024-26458
- CVE-2024-26461
- CVE-2024-26593
- CVE-2024-26603
- CVE-2024-26610
- CVE-2024-26615
- CVE-2024-26642
- CVE-2024-26643
- CVE-2024-26659
- CVE-2024-26664
- CVE-2024-26693
- CVE-2024-26694
- CVE-2024-26743
- CVE-2024-26744
- CVE-2024-26779
- CVE-2024-26872
- CVE-2024-26892
- CVE-2024-26987
- CVE-2024-26901
- CVE-2024-26919
- CVE-2024-26933
- CVE-2024-26934
- CVE-2024-26964
- CVE-2024-26973
- CVE-2024-26993
- CVE-2024-27014
- CVE-2024-27048
- CVE-2024-27052
- CVE-2024-27056
- CVE-2024-27059
- CVE-2024-28834
- CVE-2024-33599
- CVE-2024-33600
- CVE-2024-33601
- CVE-2024-33602
1.3.9. Logging 5.6.19 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix 5.6.19
1.3.9.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
- Before this update, an issue in the metrics collection code of the Logging Operator caused it to report stale telemetry metrics. With this update, the Logging Operator does not report stale telemetry metrics. (LOG-5529)
1.3.9.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
1.3.10. Logging 5.6.18 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix 5.6.18
1.3.10.1. Enhancements Copia collegamentoCollegamento copiato negli appunti!
- Before this update, Loki Operator set up Loki to use path-based style access for the Amazon Simple Storage Service (S3), which has been deprecated. With this update, the Loki Operator defaults to virtual-host style without users needing to change their configuration. (LOG-5404)
-
Before this update, the Loki Operator did not validate the Amazon Simple Storage Service (S3) endpoint used in the storage secret. With this update, the validation process ensures the S3 endpoint is a valid S3 URL, and the
LokiStackstatus updates to indicate any invalid URLs. (LOG-5396)
1.3.10.2. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
-
Before this update, the Elastisearch Operator
ServiceMonitorin theopenshift-operators-redhatnamespace used static token and certificate authority (CA) files for authentication, causing errors in the Prometheus Operator in the User Workload Monitoring specification on theServiceMonitorconfiguration. With this update, the Elastisearch OperatorServiceMonitorin theopenshift-operators-redhatnamespace now references a service account token secret by aLocalReferenceobject. This approach allows the User Workload Monitoring specifications in the Prometheus Operator to handle the Elastisearch OperatorServiceMonitorsuccessfully. This enables Prometheus to scrape the Elastisearch Operator metrics. (LOG-5244) -
Before this update, the Loki Operator did not validate the Amazon Simple Storage Service (S3) endpoint URL format used in the storage secret. With this update, the S3 endpoint URL goes through a validation step that reflects on the status of the
LokiStack. (LOG-5400)
1.3.10.3. CVEs Copia collegamentoCollegamento copiato negli appunti!
1.3.11. Logging 5.6.17 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix 5.6.17
1.3.11.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
- Before this update, the Red Hat build pipeline did not use the existing build details in Loki builds and omitted information such as revision, branch, and version. With this update, the Red Hat build pipeline now adds these details to the Loki builds, fixing the issue. (LOG-5203)
-
Before this update, the configuration of the
ServiceMonitorby Loki Operator could match many Kubernetes services, which led to Loki Operator’s metrics being collected multiple times. With this update, theServiceMonitorsetup now only matches the dedicated metrics service. (LOG-5252) -
Before this update, the build pipeline did not include linker flags for the build date, causing Loki builds to show empty strings for
buildDateandgoVersion. With this update, adding the missing linker flags in the build pipeline fixes the issue. (LOG-5276) -
Before this update, the Loki Operator
ServiceMonitorin theopenshift-operators-redhatnamespace used static token and CA files for authentication, causing errors in the Prometheus Operator in the User Workload Monitoring spec on theServiceMonitorconfiguration. With this update, the Loki OperatorServiceMonitorinopenshift-operators-redhatnamespace now references a service account token secret by aLocalReferenceobject. This approach allows the User Workload Monitoring spec in the Prometheus Operator to handle the Loki OperatorServiceMonitorsuccessfully, enabling Prometheus to scrape the Loki Operator metrics. (LOG-5242)
1.3.11.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
1.3.12. Logging 5.6.16 Copia collegamentoCollegamento copiato negli appunti!
This release includes Logging Bug Fix 5.6.16
1.3.12.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
- Before this update, when configured to read a custom S3 Certificate Authority the Loki Operator would not automatically update the configuration when the name of the ConfigMap or the contents changed. With this update, the Loki Operator is watching for changes to the ConfigMap and automatically updates the generated configuration. (LOG-4967)
1.3.12.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
1.3.13. Logging 5.6.15 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix Release 5.6.15.
1.3.13.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
Before this update, the LokiStack ruler pods would not format the IPv6 pod IP in HTTP URLs used for cross pod communication, causing querying rules and alerts through the Prometheus-compatible API to fail. With this update, the LokiStack ruler pods encapsulate the IPv6 pod IP in square brackets, resolving the issue. (LOG-4892)
1.3.13.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
1.3.14. Logging 5.6.14 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix Release 5.6.14.
1.3.14.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
-
Before this update, during the process of creating index patterns, the default alias was missing from the initial index in each log output. As a result, Kibana users were unable to create index patterns by using OpenShift Elasticsearch Operator. This update adds the missing aliases to OpenShift Elasticsearch Operator, resolving the issue. Kibana users can now create index patterns that include the
{app,infra,audit}-000001indexes. (LOG-4807) - Before this update, the Loki Operator did not mount a custom CA bundle to the ruler pods. As a result, during the process to evaluate alerting or recording rules, object storage access failed. With this update, the Loki Operator mounts the custom CA bundle to all ruler pods. The ruler pods can download logs from object storage to evaluate alerting or recording rules. (LOG-4838)
1.3.14.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
- CVE-2007-4559
- CVE-2021-43975
- CVE-2022-3594
- CVE-2022-3640
- CVE-2022-4744
- CVE-2022-28388
- CVE-2022-38457
- CVE-2022-40133
- CVE-2022-40982
- CVE-2022-41862
- CVE-2022-42895
- CVE-2022-45869
- CVE-2022-45887
- CVE-2022-48337
- CVE-2022-48339
- CVE-2023-0458
- CVE-2023-0590
- CVE-2023-0597
- CVE-2023-1073
- CVE-2023-1074
- CVE-2023-1075
- CVE-2023-1079
- CVE-2023-1118
- CVE-2023-1206
- CVE-2023-1252
- CVE-2023-1382
- CVE-2023-1855
- CVE-2023-1981
- CVE-2023-1989
- CVE-2023-1998
- CVE-2023-2513
- CVE-2023-3138
- CVE-2023-3141
- CVE-2023-3161
- CVE-2023-3212
- CVE-2023-3268
- CVE-2023-3609
- CVE-2023-3611
- CVE-2023-3772
- CVE-2023-4016
- CVE-2023-4128
- CVE-2023-4132
- CVE-2023-4155
- CVE-2023-4206
- CVE-2023-4207
- CVE-2023-4208
- CVE-2023-4641
- CVE-2023-4732
- CVE-2023-22745
- CVE-2023-23455
- CVE-2023-26545
- CVE-2023-28328
- CVE-2023-28772
- CVE-2023-30456
- CVE-2023-31084
- CVE-2023-31436
- CVE-2023-31486
- CVE-2023-32324
- CVE-2023-33203
- CVE-2023-33951
- CVE-2023-33952
- CVE-2023-34241
- CVE-2023-35823
- CVE-2023-35824
- CVE-2023-35825
1.3.15. Logging 5.6.13 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix Release 5.6.13.
1.3.15.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
None.
1.3.15.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
1.3.16. Logging 5.6.12 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix Release 5.6.12.
1.3.16.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
-
Before this update, deploying a LokiStack on IPv6-only or dual-stack OpenShift Container Platform clusters caused the LokiStack memberlist registration to fail. As a result, the distributor pods went into a crash loop. With this update, an administrator can enable IPv6 by setting the
lokistack.spec.hashRing.memberlist.enableIPv6:value totrue, which resolves the issue. Currently, the log alert is not available on an IPv6-enabled cluster. (LOG-4570) - Before this update, there was an error in the query used for the FluentD Buffer Availability graph in the metrics dashboard created by the Cluster Logging Operator as it showed the minimum buffer usage. With this update, the graph shows the maximum buffer usage and is now renamed to FluentD Buffer Usage. (LOG-4579)
- Before this update, the unused metrics in the Event Router caused the container to fail due to excessive memory usage. With this update, there is reduction in the memory usage of the Event Router by removing the unused metrics. (LOG-4687)
1.3.16.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
1.3.17. Logging 5.6.11 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix Release 5.6.11.
1.3.17.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
- Before this update, the LokiStack gateway cached authorized requests very broadly. As a result, this caused wrong authorization results. With this update, LokiStack gateway caches on a more fine-grained basis which resolves this issue. (LOG-4435)
1.3.17.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
1.3.18. Logging 5.6.9 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix Release 5.6.9.
1.3.18.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
- Before this update, when multiple roles were used to authenticate using STS with AWS Cloudwatch forwarding, a recent update caused the credentials to be non-unique. With this update, multiple combinations of STS roles and static credentials can once again be used to authenticate with AWS Cloudwatch. (LOG-4084)
-
Before this update, the Vector collector occasionally panicked with the following error message in its log:
thread 'vector-worker' panicked at 'all branches are disabled and there is no else branch', src/kubernetes/reflector.rs:26:9. With this update, the error has been resolved. (LOG-4276) - Before this update, Loki filtered label values for active streams but did not remove duplicates, making Grafana’s Label Browser unusable. With this update, Loki filters out duplicate label values for active streams, resolving the issue. (LOG-4390)
1.3.18.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
1.3.19. Logging 5.6.8 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix Release 5.6.8.
1.3.19.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
-
Before this update, the vector collector terminated unexpectedly when input match label values contained a
/character within theClusterLogForwarder. This update resolves the issue by quoting the match label, enabling the collector to start and collect logs. (LOG-4091) - Before this update, when viewing logs within the OpenShift Container Platform web console, clicking the more data available option loaded more log entries only the first time it was clicked. With this update, more entries are loaded with each click. (OU-187)
- Before this update, when viewing logs within the OpenShift Container Platform web console, clicking the streaming option would only display the streaming logs message without showing the actual logs. With this update, both the message and the log stream are displayed correctly. (OU-189)
- Before this update, the Loki Operator reset errors in a way that made identifying configuration problems difficult to troubleshoot. With this update, errors persist until the configuration error is resolved. (LOG-4158)
-
Before this update, clusters with more than 8,000 namespaces caused Elasticsearch to reject queries because the list of namespaces was larger than the
http.max_header_sizesetting. With this update, the default value for header size has been increased, resolving the issue. (LOG-4278)
1.3.19.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
1.3.20. Logging 5.6.5 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix Release 5.6.5.
1.3.20.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
- Before this update, the template definitions prevented Elasticsearch from indexing some labels and namespace_labels, causing issues with data ingestion. With this update, the fix replaces dots and slashes in labels to ensure proper ingestion, effectively resolving the issue. (LOG-3419)
- Before this update, if the Logs page of the OpenShift Web Console failed to connect to the LokiStack, a generic error message was displayed, providing no additional context or troubleshooting suggestions. With this update, the error message has been enhanced to include more specific details and recommendations for troubleshooting. (LOG-3750)
- Before this update, time range formats were not validated, leading to errors selecting a custom date range. With this update, time formats are now validated, enabling users to select a valid range. If an invalid time range format is selected, an error message is displayed to the user. (LOG-3583)
- Before this update, when searching logs in Loki, even if the length of an expression did not exceed 5120 characters, the query would fail in many cases. With this update, query authorization label matchers have been optimized, resolving the issue. (LOG-3480)
- Before this update, the Loki Operator failed to produce a memberlist configuration that was sufficient for locating all the components when using a memberlist for private IPs. With this update, the fix ensures that the generated configuration includes the advertised port, allowing for successful lookup of all components. (LOG-4008)
1.3.20.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
1.3.21. Logging 5.6.4 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix Release 5.6.4.
1.3.21.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
- Before this update, when LokiStack was deployed as the log store, the logs generated by Loki pods were collected and sent to LokiStack. With this update, the logs generated by Loki are excluded from collection and will not be stored. (LOG-3280)
- Before this update, when the query editor on the Logs page of the OpenShift Web Console was empty, the drop-down menus did not populate. With this update, if an empty query is attempted, an error message is displayed and the drop-down menus now populate as expected. (LOG-3454)
-
Before this update, when the
tls.insecureSkipVerifyoption was set totrue, the Cluster Logging Operator would generate incorrect configuration. As a result, the operator would fail to send data to Elasticsearch when attempting to skip certificate validation. With this update, the Cluster Logging Operator generates the correct TLS configuration even whentls.insecureSkipVerifyis enabled. As a result, data can be sent successfully to Elasticsearch even when attempting to skip certificate validation. (LOG-3475) - Before this update, when structured parsing was enabled and messages were forwarded to multiple destinations, they were not deep copied. This resulted in some of the received logs including the structured message, while others did not. With this update, the configuration generation has been modified to deep copy messages before JSON parsing. As a result, all received messages now have structured messages included, even when they are forwarded to multiple destinations. (LOG-3640)
-
Before this update, if the
collectionfield contained{}it could result in the Operator crashing. With this update, the Operator will ignore this value, allowing the operator to continue running smoothly without interruption. (LOG-3733) -
Before this update, the
nodeSelectorattribute for the Gateway component of LokiStack did not have any effect. With this update, thenodeSelectorattribute functions as expected. (LOG-3783) - Before this update, the static LokiStack memberlist configuration relied solely on private IP networks. As a result, when the OpenShift Container Platform cluster pod network was configured with a public IP range, the LokiStack pods would crashloop. With this update, the LokiStack administrator now has the option to use the pod network for the memberlist configuration. This resolves the issue and prevents the LokiStack pods from entering a crashloop state when the OpenShift Container Platform cluster pod network is configured with a public IP range. (LOG-3814)
-
Before this update, if the
tls.insecureSkipVerifyfield was set totrue, the Cluster Logging Operator would generate an incorrect configuration. As a result, the Operator would fail to send data to Elasticsearch when attempting to skip certificate validation. With this update, the Operator generates the correct TLS configuration even whentls.insecureSkipVerifyis enabled. As a result, data can be sent successfully to Elasticsearch even when attempting to skip certificate validation. (LOG-3838) - Before this update, if the Cluster Logging Operator (CLO) was installed without the Elasticsearch Operator, the CLO pod would continuously display an error message related to the deletion of Elasticsearch. With this update, the CLO now performs additional checks before displaying any error messages. As a result, error messages related to Elasticsearch deletion are no longer displayed in the absence of the Elasticsearch Operator.(LOG-3763)
1.3.21.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
1.3.22. Logging 5.6.3 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix Release 5.6.3.
1.3.22.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
- Before this update, the operator stored gateway tenant secret information in a config map. With this update, the operator stores this information in a secret. (LOG-3717)
-
Before this update, the Fluentd collector did not capture OAuth login events stored in
/var/log/auth-server/audit.log. With this update, Fluentd captures these OAuth login events, resolving the issue. (LOG-3729)
1.3.22.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
1.3.23. Logging 5.6.2 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix Release 5.6.2.
1.3.23.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
-
Before this update, the collector did not set
levelfields correctly based on priority for systemd logs. With this update,levelfields are set correctly. (LOG-3429) - Before this update, the Operator incorrectly generated incompatibility warnings on OpenShift Container Platform 4.12 or later. With this update, the Operator max OpenShift Container Platform version value has been corrected, resolving the issue. (LOG-3584)
-
Before this update, creating a
ClusterLogForwardercustom resource (CR) with an output value ofdefaultdid not generate any errors. With this update, an error warning that this value is invalid generates appropriately. (LOG-3437) -
Before this update, when the
ClusterLogForwardercustom resource (CR) had multiple pipelines configured with one output set asdefault, the collector pods restarted. With this update, the logic for output validation has been corrected, resolving the issue. (LOG-3559) - Before this update, collector pods restarted after being created. With this update, the deployed collector does not restart on its own. (LOG-3608)
- Before this update, patch releases removed previous versions of the Operators from the catalog. This made installing the old versions impossible. This update changes bundle configurations so that previous releases of the same minor version stay in the catalog. (LOG-3635)
1.3.23.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
1.3.24. Logging 5.6.1 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix Release 5.6.1.
1.3.24.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
- Before this update, the compactor would report TLS certificate errors from communications with the querier when retention was active. With this update, the compactor and querier no longer communicate erroneously over HTTP. (LOG-3494)
-
Before this update, the Loki Operator would not retry setting the status of the
LokiStackCR, which caused stale status information. With this update, the Operator retries status information updates on conflict. (LOG-3496) -
Before this update, the Loki Operator Webhook server caused TLS errors when the
kube-apiserver-operatorOperator checked the webhook validity. With this update, the Loki Operator Webhook PKI is managed by the Operator Lifecycle Manager (OLM), resolving the issue. (LOG-3510) - Before this update, the LokiStack Gateway Labels Enforcer generated parsing errors for valid LogQL queries when using combined label filters with boolean expressions. With this update, the LokiStack LogQL implementation supports label filters with boolean expression and resolves the issue. (LOG-3441), (LOG-3397)
- Before this update, records written to Elasticsearch would fail if multiple label keys had the same prefix and some keys included dots. With this update, underscores replace dots in label keys, resolving the issue. (LOG-3463)
-
Before this update, the
Red Hat OpenShift LoggingOperator was not available for OpenShift Container Platform 4.10 clusters because of an incompatibility between OpenShift Container Platform console and the logging-view-plugin. With this update, the plugin is properly integrated with the OpenShift Container Platform 4.10 admin console. (LOG-3447) -
Before this update the reconciliation of the
ClusterLogForwardercustom resource would incorrectly report a degraded status of pipelines that reference the default logstore. With this update, the pipeline validates properly.(LOG-3477)
1.3.24.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
1.3.25. Logging 5.6.0 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Release 5.6.
1.3.25.1. Deprecation notice Copia collegamentoCollegamento copiato negli appunti!
In logging version 5.6, Fluentd is deprecated and is planned to be removed in a future release. Red Hat will provide bug fixes and support for this feature during the current release lifecycle, but this feature will no longer receive enhancements and will be removed. As an alternative to Fluentd, you can use Vector instead.
1.3.25.2. Enhancements Copia collegamentoCollegamento copiato negli appunti!
- With this update, Logging is compliant with OpenShift Container Platform cluster-wide cryptographic policies. (LOG-895)
- With this update, you can declare per-tenant, per-stream, and global policies retention policies through the LokiStack custom resource, ordered by priority. (LOG-2695)
- With this update, Splunk is an available output option for log forwarding. (LOG-2913)
- With this update, Vector replaces Fluentd as the default Collector. (LOG-2222)
- With this update, the Developer role can access the per-project workload logs they are assigned to within the Log Console Plugin on clusters running OpenShift Container Platform 4.11 and higher. (LOG-3388)
With this update, logs from any source contain a field
openshift.cluster_id, the unique identifier of the cluster in which the Operator is deployed. You can view theclusterIDvalue by using the following command:oc get clusterversion/version -o jsonpath='{.spec.clusterID}{"\n"}'$ oc get clusterversion/version -o jsonpath='{.spec.clusterID}{"\n"}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow (LOG-2715)
1.3.25.3. Known Issues Copia collegamentoCollegamento copiato negli appunti!
-
Before this update, Elasticsearch would reject logs if multiple label keys had the same prefix and some keys included the
.character. This fixes the limitation of Elasticsearch by replacing.in the label keys with_. As a workaround for this issue, remove the labels that cause errors, or add a namespace to the label. (LOG-3463)
1.3.25.4. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
- Before this update, if you deleted the Kibana Custom Resource, the OpenShift Container Platform web console continued displaying a link to Kibana. With this update, removing the Kibana Custom Resource also removes that link. (LOG-2993)
- Before this update, a user was not able to view the application logs of namespaces they have access to. With this update, the Loki Operator automatically creates a cluster role and cluster role binding allowing users to read application logs. (LOG-3072)
-
Before this update, the Operator removed any custom outputs defined in the
ClusterLogForwardercustom resource when using LokiStack as the default log storage. With this update, the Operator merges custom outputs with the default outputs when processing theClusterLogForwardercustom resource. (LOG-3090) - Before this update, the CA key was used as the volume name for mounting the CA into Loki, causing error states when the CA Key included non-conforming characters, such as dots. With this update, the volume name is standardized to an internal string which resolves the issue. (LOG-3331)
-
Before this update, a default value set within the LokiStack Custom Resource Definition, caused an inability to create a LokiStack instance without a
ReplicationFactorof1. With this update, the operator sets the actual value for the size used. (LOG-3296) -
Before this update, Vector parsed the message field when JSON parsing was enabled without also defining
structuredTypeKeyorstructuredTypeNamevalues. With this update, a value is required for eitherstructuredTypeKeyorstructuredTypeNamewhen writing structured logs to Elasticsearch. (LOG-3195) - Before this update, the secret creation component of the Elasticsearch Operator modified internal secrets constantly. With this update, the existing secret is properly handled. (LOG-3161)
- Before this update, the Operator could enter a loop of removing and recreating the collector daemonset while the Elasticsearch or Kibana deployments changed their status. With this update, a fix in the status handling of the Operator resolves the issue. (LOG-3157)
-
Before this update, Kibana had a fixed
24hOAuth cookie expiration time, which resulted in 401 errors in Kibana whenever theaccessTokenInactivityTimeoutfield was set to a value lower than24h. With this update, Kibana’s OAuth cookie expiration time synchronizes to theaccessTokenInactivityTimeout, with a default value of24h. (LOG-3129) - Before this update, the Operators general pattern for reconciling resources was to try and create before attempting to get or update which would lead to constant HTTP 409 responses after creation. With this update, Operators first attempt to retrieve an object and only create or update it if it is either missing or not as specified. (LOG-2919)
-
Before this update, the
.leveland`.structure.level` fields in Fluentd could contain different values. With this update, the values are the same for each field. (LOG-2819) - Before this update, the Operator did not wait for the population of the trusted CA bundle and deployed the collector a second time once the bundle updated. With this update, the Operator waits briefly to see if the bundle has been populated before it continues the collector deployment. (LOG-2789)
- Before this update, logging telemetry info appeared twice when reviewing metrics. With this update, logging telemetry info displays as expected. (LOG-2315)
- Before this update, Fluentd pod logs contained a warning message after enabling the JSON parsing addition. With this update, that warning message does not appear. (LOG-1806)
-
Before this update, the
must-gatherscript did not complete becauseocneeds a folder with write permission to build its cache. With this update,ochas write permissions to a folder, and themust-gatherscript completes successfully. (LOG-3446) - Before this update the log collector SCC could be superseded by other SCCs on the cluster, rendering the collector unusable. This update sets the priority of the log collector SCC so that it takes precedence over the others. (LOG-3235)
-
Before this update, Vector was missing the field
sequence, which was added to fluentd as a way to deal with a lack of actual nanoseconds precision. With this update, the fieldopenshift.sequencehas been added to the event logs. (LOG-3106)
1.3.25.5. CVEs Copia collegamentoCollegamento copiato negli appunti!
1.4. Logging 5.5 Copia collegamentoCollegamento copiato negli appunti!
Logging is provided as an installable component, with a distinct release cycle from the core OpenShift Container Platform. The Red Hat OpenShift Container Platform Life Cycle Policy outlines release compatibility.
1.4.1. Logging 5.5.18 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix Release 5.5.18.
1.4.1.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
None.
1.4.1.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
1.4.2. Logging 5.5.17 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix Release 5.5.17.
1.4.2.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
- Before this update, the unused metrics in the Event Router caused the container to fail due to excessive memory usage. With this update, there is reduction in the memory usage of the Event Router by removing the unused metrics. (LOG-4688)
1.4.2.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
- CVE-2023-0800
- CVE-2023-0801
- CVE-2023-0802
- CVE-2023-0803
- CVE-2023-0804
- CVE-2023-2002
- CVE-2023-3090
- CVE-2023-3341
- CVE-2023-3390
- CVE-2023-3776
- CVE-2023-4004
- CVE-2023-4527
- CVE-2023-4806
- CVE-2023-4813
- CVE-2023-4863
- CVE-2023-4911
- CVE-2023-5129
- CVE-2023-20593
- CVE-2023-29491
- CVE-2023-30630
- CVE-2023-35001
- CVE-2023-35788
1.4.3. Logging 5.5.16 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix Release 5.5.16.
1.4.3.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
- Before this update, the LokiStack gateway cached authorized requests very broadly. As a result, this caused wrong authorization results. With this update, LokiStack gateway caches on a more fine-grained basis which resolves this issue. (LOG-4434)
1.4.3.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
1.4.4. Logging 5.5.14 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix Release 5.5.14.
1.4.4.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
-
Before this update, the Vector collector occasionally panicked with the following error message in its log:
thread 'vector-worker' panicked at 'all branches are disabled and there is no else branch', src/kubernetes/reflector.rs:26:9. With this update, the error does not show in the Vector collector. (LOG-4279)
1.4.4.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
1.4.5. Logging 5.5.13 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix Release 5.5.13.
1.4.5.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
None.
1.4.5.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
1.4.6. Logging 5.5.12 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix Release 5.5.12.
1.4.6.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
None.
1.4.6.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
- CVE-2021-26341
- CVE-2021-33655
- CVE-2021-33656
- CVE-2022-1462
- CVE-2022-1679
- CVE-2022-1789
- CVE-2022-2196
- CVE-2022-2663
- CVE-2022-3028
- CVE-2022-3239
- CVE-2022-3522
- CVE-2022-3524
- CVE-2022-3564
- CVE-2022-3566
- CVE-2022-3567
- CVE-2022-3619
- CVE-2022-3623
- CVE-2022-3625
- CVE-2022-3627
- CVE-2022-3628
- CVE-2022-3707
- CVE-2022-3970
- CVE-2022-4129
- CVE-2022-20141
- CVE-2022-25147
- CVE-2022-25265
- CVE-2022-30594
- CVE-2022-35252
- CVE-2022-36227
- CVE-2022-39188
- CVE-2022-39189
- CVE-2022-41218
- CVE-2022-41674
- CVE-2022-42703
- CVE-2022-42720
- CVE-2022-42721
- CVE-2022-42722
- CVE-2022-43552
- CVE-2022-43750
- CVE-2022-47929
- CVE-2023-0394
- CVE-2023-0461
- CVE-2023-1195
- CVE-2023-1582
- CVE-2023-2491
- CVE-2023-22490
- CVE-2023-23454
- CVE-2023-23946
- CVE-2023-25652
- CVE-2023-25815
- CVE-2023-27535
- CVE-2023-29007
1.4.7. Logging 5.5.11 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix Release 5.5.11.
1.4.7.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
- Before this update, a time range could not be selected in the OpenShift Container Platform web console by clicking and dragging over the logs histogram. With this update, clicking and dragging can be used to successfully select a time range. (LOG-4102)
- Before this update, clicking on the Show Resources link in the OpenShift Container Platform web console did not produce any effect. With this update, the issue is resolved by fixing the functionality of the Show Resources link to toggle the display of resources for each log entry. (LOG-4117)
1.4.7.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
- CVE-2021-26341
- CVE-2021-33655
- CVE-2021-33656
- CVE-2022-1462
- CVE-2022-1679
- CVE-2022-1789
- CVE-2022-2196
- CVE-2022-2663
- CVE-2022-2795
- CVE-2022-3028
- CVE-2022-3239
- CVE-2022-3522
- CVE-2022-3524
- CVE-2022-3564
- CVE-2022-3566
- CVE-2022-3567
- CVE-2022-3619
- CVE-2022-3623
- CVE-2022-3625
- CVE-2022-3627
- CVE-2022-3628
- CVE-2022-3707
- CVE-2022-3970
- CVE-2022-4129
- CVE-2022-20141
- CVE-2022-24765
- CVE-2022-25265
- CVE-2022-29187
- CVE-2022-30594
- CVE-2022-36227
- CVE-2022-39188
- CVE-2022-39189
- CVE-2022-39253
- CVE-2022-39260
- CVE-2022-41218
- CVE-2022-41674
- CVE-2022-42703
- CVE-2022-42720
- CVE-2022-42721
- CVE-2022-42722
- CVE-2022-43750
- CVE-2022-47929
- CVE-2023-0394
- CVE-2023-0461
- CVE-2023-1195
- CVE-2023-1582
- CVE-2023-2491
- CVE-2023-23454
- CVE-2023-27535
1.4.8. Logging 5.5.10 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix Release 5.5.10.
1.4.8.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
- Before this update, the logging view plugin of the OpenShift Web Console showed only an error text when the LokiStack was not reachable. After this update the plugin shows a proper error message with details on how to fix the unreachable LokiStack. (LOG-2874)
1.4.8.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
1.4.9. Logging 5.5.9 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix Release 5.5.9.
1.4.9.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
-
Before this update, a problem with the Fluentd collector caused it to not capture OAuth login events stored in
/var/log/auth-server/audit.log. This led to incomplete collection of login events from the OAuth service. With this update, the Fluentd collector now resolves this issue by capturing all login events from the OAuth service, including those stored in/var/log/auth-server/audit.log, as expected.(LOG-3730) - Before this update, when structured parsing was enabled and messages were forwarded to multiple destinations, they were not deep copied. This resulted in some of the received logs including the structured message, while others did not. With this update, the configuration generation has been modified to deep copy messages before JSON parsing. As a result, all received logs now have structured messages included, even when they are forwarded to multiple destinations.(LOG-3767)
1.4.9.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
1.4.10. Logging 5.5.8 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix Release 5.5.8.
1.4.10.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
-
Before this update, the
priorityfield was missing fromsystemdlogs due to an error in how the collector setlevelfields. With this update, these fields are set correctly, resolving the issue. (LOG-3630)
1.4.10.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
1.4.11. Logging 5.5.7 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix Release 5.5.7.
1.4.11.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
- Before this update, the LokiStack Gateway Labels Enforcer generated parsing errors for valid LogQL queries when using combined label filters with boolean expressions. With this update, the LokiStack LogQL implementation supports label filters with boolean expression and resolves the issue. (LOG-3534)
-
Before this update, the
ClusterLogForwardercustom resource (CR) did not pass TLS credentials for syslog output to Fluentd, resulting in errors during forwarding. With this update, credentials pass correctly to Fluentd, resolving the issue. (LOG-3533)
1.4.11.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
CVE-2021-46848CVE-2022-3821CVE-2022-35737CVE-2022-42010CVE-2022-42011CVE-2022-42012CVE-2022-42898CVE-2022-43680
1.4.12. Logging 5.5.6 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix Release 5.5.6.
1.4.12.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
-
Before this update, the Pod Security admission controller added the label
podSecurityLabelSync = trueto theopenshift-loggingnamespace. This resulted in our specified security labels being overwritten, and as a result Collector pods would not start. With this update, the labelpodSecurityLabelSync = falsepreserves security labels. Collector pods deploy as expected. (LOG-3340) - Before this update, the Operator installed the console view plugin, even when it was not enabled on the cluster. This caused the Operator to crash. With this update, if an account for a cluster does not have the console view enabled, the Operator functions normally and does not install the console view. (LOG-3407)
-
Before this update, a prior fix to support a regression where the status of the Elasticsearch deployment was not being updated caused the Operator to crash unless the
Red Hat Elasticsearch Operatorwas deployed. With this update, that fix has been reverted so the Operator is now stable but re-introduces the previous issue related to the reported status. (LOG-3428) - Before this update, the Loki Operator only deployed one replica of the LokiStack gateway regardless of the chosen stack size. With this update, the number of replicas is correctly configured according to the selected size. (LOG-3478)
- Before this update, records written to Elasticsearch would fail if multiple label keys had the same prefix and some keys included dots. With this update, underscores replace dots in label keys, resolving the issue. (LOG-3341)
- Before this update, the logging view plugin contained an incompatible feature for certain versions of OpenShift Container Platform. With this update, the correct release stream of the plugin resolves the issue. (LOG-3467)
-
Before this update, the reconciliation of the
ClusterLogForwardercustom resource would incorrectly report a degraded status of one or more pipelines causing the collector pods to restart every 8-10 seconds. With this update, reconciliation of theClusterLogForwardercustom resource processes correctly, resolving the issue. (LOG-3469) -
Before this change the spec for the
outputDefaultsfield of the ClusterLogForwarder custom resource would apply the settings to every declared Elasticsearch output type. This change corrects the behavior to match the enhancement specification where the setting specifically applies to the default managed Elasticsearch store. (LOG-3342) -
Before this update, the OpenShift CLI (oc)
must-gatherscript did not complete because the OpenShift CLI (oc) needs a folder with write permission to build its cache. With this update, the OpenShift CLI (oc) has write permissions to a folder, and themust-gatherscript completes successfully. (LOG-3472) - Before this update, the Loki Operator webhook server caused TLS errors. With this update, the Loki Operator webhook PKI is managed by the Operator Lifecycle Manager’s dynamic webhook management resolving the issue. (LOG-3511)
1.4.12.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
1.4.13. Logging 5.5.5 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix Release 5.5.5.
1.4.13.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
-
Before this update, Kibana had a fixed
24hOAuth cookie expiration time, which resulted in 401 errors in Kibana whenever theaccessTokenInactivityTimeoutfield was set to a value lower than24h. With this update, Kibana’s OAuth cookie expiration time synchronizes to theaccessTokenInactivityTimeout, with a default value of24h. (LOG-3305) -
Before this update, Vector parsed the message field when JSON parsing was enabled without also defining
structuredTypeKeyorstructuredTypeNamevalues. With this update, a value is required for eitherstructuredTypeKeyorstructuredTypeNamewhen writing structured logs to Elasticsearch. (LOG-3284) -
Before this update, the
FluentdQueueLengthIncreasingalert could fail to fire when there was a cardinality issue with the set of labels returned from this alert expression. This update reduces labels to only include those required for the alert. (LOG-3226) - Before this update, Loki did not have support to reach an external storage in a disconnected cluster. With this update, proxy environment variables and proxy trusted CA bundles are included in the container image to support these connections. (LOG-2860)
-
Before this update, OpenShift Container Platform web console users could not choose the
ConfigMapobject that includes the CA certificate for Loki, causing pods to operate without the CA. With this update, web console users can select the config map, resolving the issue. (LOG-3310) - Before this update, the CA key was used as volume name for mounting the CA into Loki, causing error states when the CA Key included non-conforming characters (such as dots). With this update, the volume name is standardized to an internal string which resolves the issue. (LOG-3332)
1.4.13.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
- CVE-2016-3709
- CVE-2020-35525
- CVE-2020-35527
- CVE-2020-36516
- CVE-2020-36558
- CVE-2021-3640
- CVE-2021-30002
- CVE-2022-0168
- CVE-2022-0561
- CVE-2022-0562
- CVE-2022-0617
- CVE-2022-0854
- CVE-2022-0865
- CVE-2022-0891
- CVE-2022-0908
- CVE-2022-0909
- CVE-2022-0924
- CVE-2022-1016
- CVE-2022-1048
- CVE-2022-1055
- CVE-2022-1184
- CVE-2022-1292
- CVE-2022-1304
- CVE-2022-1355
- CVE-2022-1586
- CVE-2022-1785
- CVE-2022-1852
- CVE-2022-1897
- CVE-2022-1927
- CVE-2022-2068
- CVE-2022-2078
- CVE-2022-2097
- CVE-2022-2509
- CVE-2022-2586
- CVE-2022-2639
- CVE-2022-2938
- CVE-2022-3515
- CVE-2022-20368
- CVE-2022-21499
- CVE-2022-21618
- CVE-2022-21619
- CVE-2022-21624
- CVE-2022-21626
- CVE-2022-21628
- CVE-2022-22624
- CVE-2022-22628
- CVE-2022-22629
- CVE-2022-22662
- CVE-2022-22844
- CVE-2022-23960
- CVE-2022-24448
- CVE-2022-25255
- CVE-2022-26373
- CVE-2022-26700
- CVE-2022-26709
- CVE-2022-26710
- CVE-2022-26716
- CVE-2022-26717
- CVE-2022-26719
- CVE-2022-27404
- CVE-2022-27405
- CVE-2022-27406
- CVE-2022-27950
- CVE-2022-28390
- CVE-2022-28893
- CVE-2022-29581
- CVE-2022-30293
- CVE-2022-34903
- CVE-2022-36946
- CVE-2022-37434
- CVE-2022-39399
1.4.14. Logging 5.5.4 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix Release 5.5.4.
1.4.14.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
-
Before this update, an error in the query parser of the logging view plugin caused parts of the logs query to disappear if the query contained curly brackets
{}. This made the queries invalid, leading to errors being returned for valid queries. With this update, the parser correctly handles these queries. (LOG-3042) - Before this update, the Operator could enter a loop of removing and recreating the collector daemonset while the Elasticsearch or Kibana deployments changed their status. With this update, a fix in the status handling of the Operator resolves the issue. (LOG-3049)
- Before this update, no alerts were implemented to support the collector implementation of Vector. This change adds Vector alerts and deploys separate alerts, depending upon the chosen collector implementation. (LOG-3127)
- Before this update, the secret creation component of the Elasticsearch Operator modified internal secrets constantly. With this update, the existing secret is properly handled. (LOG-3138)
-
Before this update, a prior refactoring of the logging
must-gatherscripts removed the expected location for the artifacts. This update reverts that change to write artifacts to the/must-gatherfolder. (LOG-3213) -
Before this update, on certain clusters, the Prometheus exporter would bind on IPv4 instead of IPv6. After this update, Fluentd detects the IP version and binds to
0.0.0.0for IPv4 or[::]for IPv6. (LOG-3162)
1.4.14.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
1.4.15. Logging 5.5.3 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix Release 5.5.3.
1.4.15.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
- Before this update, log entries that had structured messages included the original message field, which made the entry larger. This update removes the message field for structured logs to reduce the increased size. (LOG-2759)
-
Before this update, the collector configuration excluded logs from
collector,default-log-store, andvisualizationpods, but was unable to exclude logs archived in a.gzfile. With this update, archived logs stored as.gzfiles ofcollector,default-log-store, andvisualizationpods are also excluded. (LOG-2844) - Before this update, when requests to an unavailable pod were sent through the gateway, no alert would warn of the disruption. With this update, individual alerts will generate if the gateway has issues completing a write or read request. (LOG-2884)
- Before this update, pod metadata could be altered by fluent plugins because the values passed through the pipeline by reference. This update ensures each log message receives a copy of the pod metadata so each message processes independently. (LOG-3046)
-
Before this update, selecting unknown severity in the OpenShift Console Logs view excluded logs with a
level=unknownvalue. With this update, logs without level and withlevel=unknownvalues are visible when filtering by unknown severity. (LOG-3062) -
Before this update, log records sent to Elasticsearch had an extra field named
write-indexthat contained the name of the index to which the logs needed to be sent. This field is not a part of the data model. After this update, this field is no longer sent. (LOG-3075) - With the introduction of the new built-in Pod Security Admission Controller, Pods not configured in accordance with the enforced security standards defined globally or on the namespace level cannot run. With this update, the Operator and collectors allow privileged execution and run without security audit warnings or errors. (LOG-3077)
-
Before this update, the Operator removed any custom outputs defined in the
ClusterLogForwardercustom resource when using LokiStack as the default log storage. With this update, the Operator merges custom outputs with the default outputs when processing theClusterLogForwardercustom resource. (LOG-3095)
1.4.15.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
1.4.16. Logging 5.5.2 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix Release 5.5.2.
1.4.16.1. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
- Before this update, alerting rules for the Fluentd collector did not adhere to the OpenShift Container Platform monitoring style guidelines. This update modifies those alerts to include the namespace label, resolving the issue. (LOG-1823)
- Before this update, the index management rollover script failed to generate a new index name whenever there was more than one hyphen character in the name of the index. With this update, index names generate correctly. (LOG-2644)
-
Before this update, the Kibana route was setting a
caCertificatevalue without a certificate present. With this update, nocaCertificatevalue is set. (LOG-2661) - Before this update, a change in the collector dependencies caused it to issue a warning message for unused parameters. With this update, removing unused configuration parameters resolves the issue. (LOG-2859)
- Before this update, pods created for deployments that Loki Operator created were mistakenly scheduled on nodes with non-Linux operating systems, if such nodes were available in the cluster the Operator was running in. With this update, the Operator attaches an additional node-selector to the pod definitions which only allows scheduling the pods on Linux-based nodes. (LOG-2895)
- Before this update, the OpenShift Console Logs view did not filter logs by severity due to a LogQL parser issue in the LokiStack gateway. With this update, a parser fix resolves the issue and the OpenShift Console Logs view can filter by severity. (LOG-2908)
- Before this update, a refactoring of the Fluentd collector plugins removed the timestamp field for events. This update restores the timestamp field, sourced from the event’s received time. (LOG-2923)
-
Before this update, absence of a
levelfield in audit logs caused an error in vector logs. With this update, the addition of alevelfield in the audit log record resolves the issue. (LOG-2961) - Before this update, if you deleted the Kibana Custom Resource, the OpenShift Container Platform web console continued displaying a link to Kibana. With this update, removing the Kibana Custom Resource also removes that link. (LOG-3053)
-
Before this update, each rollover job created empty indices when the
ClusterLogForwardercustom resource had JSON parsing defined. With this update, new indices are not empty. (LOG-3063) - Before this update, when the user deleted the LokiStack after an update to Loki Operator 5.5 resources originally created by Loki Operator 5.4 remained. With this update, the resources' owner-references point to the 5.5 LokiStack. (LOG-2945)
- Before this update, a user was not able to view the application logs of namespaces they have access to. With this update, the Loki Operator automatically creates a cluster role and cluster role binding allowing users to read application logs. (LOG-2918)
- Before this update, users with cluster-admin privileges were not able to properly view infrastructure and audit logs using the logging console. With this update, the authorization check has been extended to also recognize users in cluster-admin and dedicated-admin groups as admins. (LOG-2970)
1.4.16.2. CVEs Copia collegamentoCollegamento copiato negli appunti!
1.4.17. Logging 5.5.1 Copia collegamentoCollegamento copiato negli appunti!
This release includes OpenShift Logging Bug Fix Release 5.5.1.
1.4.17.1. Enhancements Copia collegamentoCollegamento copiato negli appunti!
- This enhancement adds an Aggregated Logs tab to the Pod Details page of the OpenShift Container Platform web console when the Logging Console Plug-in is in use. This enhancement is only available on OpenShift Container Platform 4.10 and later. (LOG-2647)
- This enhancement adds Google Cloud Logging as an output option for log forwarding. (LOG-1482)
1.4.17.2. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
- Before this update, the Operator did not ensure that the pod was ready, which caused the cluster to reach an inoperable state during a cluster restart. With this update, the Operator marks new pods as ready before continuing to a new pod during a restart, which resolves the issue. (LOG-2745)
- Before this update, Fluentd would sometimes not recognize that the Kubernetes platform rotated the log file and would no longer read log messages. This update corrects that by setting the configuration parameter suggested by the upstream development team. (LOG-2995)
- Before this update, the addition of multi-line error detection caused internal routing to change and forward records to the wrong destination. With this update, the internal routing is correct. (LOG-2801)
- Before this update, changing the OpenShift Container Platform web console’s refresh interval created an error when the Query field was empty. With this update, changing the interval is not an available option when the Query field is empty. (LOG-2917)
1.4.17.3. CVEs Copia collegamentoCollegamento copiato negli appunti!
1.4.18. Logging 5.5.0 Copia collegamentoCollegamento copiato negli appunti!
This release includes:OpenShift Logging Bug Fix Release 5.5.0.
1.4.18.1. Enhancements Copia collegamentoCollegamento copiato negli appunti!
- With this update, you can forward structured logs from different containers within the same pod to different indices. To use this feature, you must configure the pipeline with multi-container support and annotate the pods. (LOG-1296)
JSON formatting of logs varies by application. Because creating too many indices impacts performance, limit your use of this feature to creating indices for logs that have incompatible JSON formats. Use queries to separate logs from different namespaces, or applications with compatible JSON formats.
-
With this update, you can filter logs with Elasticsearch outputs by using the Kubernetes common labels,
app.kubernetes.io/component,app.kubernetes.io/managed-by,app.kubernetes.io/part-of, andapp.kubernetes.io/version. Non-Elasticsearch output types can use all labels included inkubernetes.labels. (LOG-2388) - With this update, clusters with AWS Security Token Service (STS) enabled may use STS authentication to forward logs to Amazon CloudWatch. (LOG-1976)
- With this update, the Loki Operator and Vector collector move from Technical Preview to General Availability. Full feature parity with prior releases are pending, and some APIs remain Technical Previews. See the Logging with the LokiStack section for details.
1.4.18.2. Bug fixes Copia collegamentoCollegamento copiato negli appunti!
- Before this update, clusters configured to forward logs to Amazon CloudWatch wrote rejected log files to temporary storage, causing cluster instability over time. With this update, chunk backup for all storage options has been disabled, resolving the issue. (LOG-2746)
- Before this update, the Operator was using versions of some APIs that are deprecated and planned for removal in future versions of OpenShift Container Platform. This update moves dependencies to the supported API versions. (LOG-2656)
-
Before this update, multiple
ClusterLogForwarderpipelines configured for multiline error detection caused the collector to go into acrashloopbackofferror state. This update fixes the issue where multiple configuration sections had the same unique ID. (LOG-2241) - Before this update, the collector could not save non UTF-8 symbols to the Elasticsearch storage logs. With this update the collector encodes non UTF-8 symbols, resolving the issue. (LOG-2203)
- Before this update, non-latin characters displayed incorrectly in Kibana. With this update, Kibana displays all valid UTF-8 symbols correctly. (LOG-2784)
1.4.18.3. CVEs Copia collegamentoCollegamento copiato negli appunti!
Chapter 2. Support Copia collegamentoCollegamento copiato negli appunti!
Only the configuration options described in this documentation are supported for logging.
Do not use any other configuration options, as they are unsupported. Configuration paradigms might change across OpenShift Container Platform releases, and such cases can only be handled gracefully if all configuration possibilities are controlled. If you use configurations other than those described in this documentation, your changes will be overwritten, because Operators are designed to reconcile any differences.
If you must perform configurations not described in the OpenShift Container Platform documentation, you must set your Red Hat OpenShift Logging Operator to Unmanaged. An unmanaged logging instance is not supported and does not receive updates until you return its status to Managed.
Logging is provided as an installable component, with a distinct release cycle from the core OpenShift Container Platform. The Red Hat OpenShift Container Platform Life Cycle Policy outlines release compatibility.
Logging for Red Hat OpenShift is an opinionated collector and normalizer of application, infrastructure, and audit logs. It is intended to be used for forwarding logs to various supported systems.
Logging is not:
- A high scale log collection system
- Security Information and Event Monitoring (SIEM) compliant
- Historical or long term log retention or storage
- A guaranteed log sink
- Secure storage - audit logs are not stored by default
2.1. Supported API custom resource definitions Copia collegamentoCollegamento copiato negli appunti!
LokiStack development is ongoing. Not all APIs are currently supported.
| CustomResourceDefinition (CRD) | ApiVersion | Support state |
|---|---|---|
| LokiStack | lokistack.loki.grafana.com/v1 | Supported in 5.5 |
| RulerConfig | rulerconfig.loki.grafana/v1 | Supported in 5.7 |
| AlertingRule | alertingrule.loki.grafana/v1 | Supported in 5.7 |
| RecordingRule | recordingrule.loki.grafana/v1 | Supported in 5.7 |
2.2. Unsupported configurations Copia collegamentoCollegamento copiato negli appunti!
You must set the Red Hat OpenShift Logging Operator to the Unmanaged state to modify the following components:
-
The
Elasticsearchcustom resource (CR) - The Kibana deployment
-
The
fluent.conffile - The Fluentd daemon set
You must set the OpenShift Elasticsearch Operator to the Unmanaged state to modify the Elasticsearch deployment files.
Explicitly unsupported cases include:
- Configuring default log rotation. You cannot modify the default log rotation configuration.
-
Configuring the collected log location. You cannot change the location of the log collector output file, which by default is
/var/log/fluentd/fluentd.log. - Throttling log collection. You cannot throttle down the rate at which the logs are read in by the log collector.
- Configuring the logging collector using environment variables. You cannot use environment variables to modify the log collector.
- Configuring how the log collector normalizes logs. You cannot modify default log normalization.
2.3. Support policy for unmanaged Operators Copia collegamentoCollegamento copiato negli appunti!
The management state of an Operator determines whether an Operator is actively managing the resources for its related component in the cluster as designed. If an Operator is set to an unmanaged state, it does not respond to changes in configuration nor does it receive updates.
While this can be helpful in non-production clusters or during debugging, Operators in an unmanaged state are unsupported and the cluster administrator assumes full control of the individual component configurations and upgrades.
An Operator can be set to an unmanaged state using the following methods:
Individual Operator configuration
Individual Operators have a
managementStateparameter in their configuration. This can be accessed in different ways, depending on the Operator. For example, the Red Hat OpenShift Logging Operator accomplishes this by modifying a custom resource (CR) that it manages, while the Cluster Samples Operator uses a cluster-wide configuration resource.Changing the
managementStateparameter toUnmanagedmeans that the Operator is not actively managing its resources and will take no action related to the related component. Some Operators might not support this management state as it might damage the cluster and require manual recovery.WarningChanging individual Operators to the
Unmanagedstate renders that particular component and functionality unsupported. Reported issues must be reproduced inManagedstate for support to proceed.Cluster Version Operator (CVO) overrides
The
spec.overridesparameter can be added to the CVO’s configuration to allow administrators to provide a list of overrides to the CVO’s behavior for a component. Setting thespec.overrides[].unmanagedparameter totruefor a component blocks cluster upgrades and alerts the administrator after a CVO override has been set:Disabling ownership via cluster version overrides prevents upgrades. Please remove overrides before continuing.
Disabling ownership via cluster version overrides prevents upgrades. Please remove overrides before continuing.Copy to Clipboard Copied! Toggle word wrap Toggle overflow WarningSetting a CVO override puts the entire cluster in an unsupported state. Reported issues must be reproduced after removing any overrides for support to proceed.
2.4. Collecting logging data for Red Hat Support Copia collegamentoCollegamento copiato negli appunti!
When opening a support case, it is helpful to provide debugging information about your cluster to Red Hat Support.
You can use the must-gather tool to collect diagnostic information for project-level resources, cluster-level resources, and each of the logging components.
For prompt support, supply diagnostic information for both OpenShift Container Platform and logging.
Do not use the hack/logging-dump.sh script. The script is no longer supported and does not collect data.
2.4.1. About the must-gather tool Copia collegamentoCollegamento copiato negli appunti!
The oc adm must-gather CLI command collects the information from your cluster that is most likely needed for debugging issues.
For your logging, must-gather collects the following information:
- Project-level resources, including pods, configuration maps, service accounts, roles, role bindings, and events at the project level
- Cluster-level resources, including nodes, roles, and role bindings at the cluster level
-
OpenShift Logging resources in the
openshift-loggingandopenshift-operators-redhatnamespaces, including health status for the log collector, the log store, and the log visualizer
When you run oc adm must-gather, a new pod is created on the cluster. The data is collected on that pod and saved in a new directory that starts with must-gather.local. This directory is created in the current working directory.
2.4.2. Collecting logging data Copia collegamentoCollegamento copiato negli appunti!
You can use the oc adm must-gather CLI command to collect information about logging.
Procedure
To collect logging information with must-gather:
-
Navigate to the directory where you want to store the
must-gatherinformation. Run the
oc adm must-gathercommand against the logging image:oc adm must-gather --image=$(oc -n openshift-logging get deployment.apps/cluster-logging-operator -o jsonpath='{.spec.template.spec.containers[?(@.name == "cluster-logging-operator")].image}')$ oc adm must-gather --image=$(oc -n openshift-logging get deployment.apps/cluster-logging-operator -o jsonpath='{.spec.template.spec.containers[?(@.name == "cluster-logging-operator")].image}')Copy to Clipboard Copied! Toggle word wrap Toggle overflow The
must-gathertool creates a new directory that starts withmust-gather.localwithin the current directory. For example:must-gather.local.4157245944708210408.Create a compressed file from the
must-gatherdirectory that was just created. For example, on a computer that uses a Linux operating system, run the following command:tar -cvaf must-gather.tar.gz must-gather.local.4157245944708210408
$ tar -cvaf must-gather.tar.gz must-gather.local.4157245944708210408Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Attach the compressed file to your support case on the Red Hat Customer Portal.
Chapter 3. Troubleshooting logging Copia collegamentoCollegamento copiato negli appunti!
3.1. Viewing Logging status Copia collegamentoCollegamento copiato negli appunti!
You can view the status of the Red Hat OpenShift Logging Operator and other logging components.
3.1.1. Viewing the status of the Red Hat OpenShift Logging Operator Copia collegamentoCollegamento copiato negli appunti!
You can view the status of the Red Hat OpenShift Logging Operator.
Prerequisites
- The Red Hat OpenShift Logging Operator and OpenShift Elasticsearch Operator are installed.
Procedure
Change to the
openshift-loggingproject by running the following command:oc project openshift-logging
$ oc project openshift-loggingCopy to Clipboard Copied! Toggle word wrap Toggle overflow Get the
ClusterLogginginstance status by running the following command:oc get clusterlogging instance -o yaml
$ oc get clusterlogging instance -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.1.1.1. Example condition messages Copia collegamentoCollegamento copiato negli appunti!
The following are examples of some condition messages from the Status.Nodes section of the ClusterLogging instance.
A status message similar to the following indicates a node has exceeded the configured low watermark and no shard will be allocated to this node:
Example output
A status message similar to the following indicates a node has exceeded the configured high watermark and shards will be relocated to other nodes:
Example output
A status message similar to the following indicates the Elasticsearch node selector in the CR does not match any nodes in the cluster:
Example output
A status message similar to the following indicates that the requested PVC could not bind to PV:
Example output
A status message similar to the following indicates that the Fluentd pods cannot be scheduled because the node selector did not match any nodes:
Example output
3.1.2. Viewing the status of logging components Copia collegamentoCollegamento copiato negli appunti!
You can view the status for a number of logging components.
Prerequisites
- The Red Hat OpenShift Logging Operator and OpenShift Elasticsearch Operator are installed.
Procedure
Change to the
openshift-loggingproject.oc project openshift-logging
$ oc project openshift-loggingCopy to Clipboard Copied! Toggle word wrap Toggle overflow View the status of logging environment:
oc describe deployment cluster-logging-operator
$ oc describe deployment cluster-logging-operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
Copy to Clipboard Copied! Toggle word wrap Toggle overflow View the status of the logging replica set:
Get the name of a replica set:
Example output
oc get replicaset
$ oc get replicasetCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Get the status of the replica set:
oc describe replicaset cluster-logging-operator-574b8987df
$ oc describe replicaset cluster-logging-operator-574b8987dfCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.2. Troubleshooting log forwarding Copia collegamentoCollegamento copiato negli appunti!
3.2.1. Redeploying Fluentd pods Copia collegamentoCollegamento copiato negli appunti!
When you create a ClusterLogForwarder custom resource (CR), if the Red Hat OpenShift Logging Operator does not redeploy the Fluentd pods automatically, you can delete the Fluentd pods to force them to redeploy.
Prerequisites
-
You have created a
ClusterLogForwardercustom resource (CR) object.
Procedure
Delete the Fluentd pods to force them to redeploy by running the following command:
oc delete pod --selector logging-infra=collector
$ oc delete pod --selector logging-infra=collectorCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.2.2. Troubleshooting Loki rate limit errors Copia collegamentoCollegamento copiato negli appunti!
If the Log Forwarder API forwards a large block of messages that exceeds the rate limit to Loki, Loki generates rate limit (429) errors.
These errors can occur during normal operation. For example, when adding the logging to a cluster that already has some logs, rate limit errors might occur while the logging tries to ingest all of the existing log entries. In this case, if the rate of addition of new logs is less than the total rate limit, the historical data is eventually ingested, and the rate limit errors are resolved without requiring user intervention.
In cases where the rate limit errors continue to occur, you can fix the issue by modifying the LokiStack custom resource (CR).
The LokiStack CR is not available on Grafana-hosted Loki. This topic does not apply to Grafana-hosted Loki servers.
Conditions
- The Log Forwarder API is configured to forward logs to Loki.
Your system sends a block of messages that is larger than 2 MB to Loki. For example:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow After you enter
oc logs -n openshift-logging -l component=collector, the collector logs in your cluster show a line containing one of the following error messages:429 Too Many Requests Ingestion rate limit exceeded
429 Too Many Requests Ingestion rate limit exceededCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example Vector error message
2023-08-25T16:08:49.301780Z WARN sink{component_kind="sink" component_id=default_loki_infra component_type=loki component_name=default_loki_infra}: vector::sinks::util::retries: Retrying after error. error=Server responded with an error: 429 Too Many Requests internal_log_rate_limit=true2023-08-25T16:08:49.301780Z WARN sink{component_kind="sink" component_id=default_loki_infra component_type=loki component_name=default_loki_infra}: vector::sinks::util::retries: Retrying after error. error=Server responded with an error: 429 Too Many Requests internal_log_rate_limit=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example Fluentd error message
2023-08-30 14:52:15 +0000 [warn]: [default_loki_infra] failed to flush the buffer. retry_times=2 next_retry_time=2023-08-30 14:52:19 +0000 chunk="604251225bf5378ed1567231a1c03b8b" error_class=Fluent::Plugin::LokiOutput::LogPostError error="429 Too Many Requests Ingestion rate limit exceeded for user infrastructure (limit: 4194304 bytes/sec) while attempting to ingest '4082' lines totaling '7820025' bytes, reduce log volume or contact your Loki administrator to see if the limit can be increased\n"
2023-08-30 14:52:15 +0000 [warn]: [default_loki_infra] failed to flush the buffer. retry_times=2 next_retry_time=2023-08-30 14:52:19 +0000 chunk="604251225bf5378ed1567231a1c03b8b" error_class=Fluent::Plugin::LokiOutput::LogPostError error="429 Too Many Requests Ingestion rate limit exceeded for user infrastructure (limit: 4194304 bytes/sec) while attempting to ingest '4082' lines totaling '7820025' bytes, reduce log volume or contact your Loki administrator to see if the limit can be increased\n"Copy to Clipboard Copied! Toggle word wrap Toggle overflow The error is also visible on the receiving end. For example, in the LokiStack ingester pod:
Example Loki ingester error message
level=warn ts=2023-08-30T14:57:34.155592243Z caller=grpc_logging.go:43 duration=1.434942ms method=/logproto.Pusher/Push err="rpc error: code = Code(429) desc = entry with timestamp 2023-08-30 14:57:32.012778399 +0000 UTC ignored, reason: 'Per stream rate limit exceeded (limit: 3MB/sec) while attempting to ingest for stream
level=warn ts=2023-08-30T14:57:34.155592243Z caller=grpc_logging.go:43 duration=1.434942ms method=/logproto.Pusher/Push err="rpc error: code = Code(429) desc = entry with timestamp 2023-08-30 14:57:32.012778399 +0000 UTC ignored, reason: 'Per stream rate limit exceeded (limit: 3MB/sec) while attempting to ingest for streamCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Procedure
Update the
ingestionBurstSizeandingestionRatefields in theLokiStackCR:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- The
ingestionBurstSizefield defines the maximum local rate-limited sample size per distributor replica in MB. This value is a hard limit. Set this value to at least the maximum logs size expected in a single push request. Single requests that are larger than theingestionBurstSizevalue are not permitted. - 2
- The
ingestionRatefield is a soft limit on the maximum amount of ingested samples per second in MB. Rate limit errors occur if the rate of logs exceeds the limit, but the collector retries sending the logs. As long as the total average is lower than the limit, the system recovers and errors are resolved without user intervention.
3.3. Troubleshooting logging alerts Copia collegamentoCollegamento copiato negli appunti!
You can use the following procedures to troubleshoot logging alerts on your cluster.
3.3.1. Elasticsearch cluster health status is red Copia collegamentoCollegamento copiato negli appunti!
At least one primary shard and its replicas are not allocated to a node. Use the following procedure to troubleshoot this alert.
Some commands in this documentation reference an Elasticsearch pod by using a $ES_POD_NAME shell variable. If you want to copy and paste the commands directly from this documentation, you must set this variable to a value that is valid for your Elasticsearch cluster.
You can list the available Elasticsearch pods by running the following command:
oc -n openshift-logging get pods -l component=elasticsearch
$ oc -n openshift-logging get pods -l component=elasticsearch
Choose one of the pods listed and set the $ES_POD_NAME variable, by running the following command:
export ES_POD_NAME=<elasticsearch_pod_name>
$ export ES_POD_NAME=<elasticsearch_pod_name>
You can now use the $ES_POD_NAME variable in commands.
Procedure
Check the Elasticsearch cluster health and verify that the cluster
statusis red by running the following command:oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME -- health
$ oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME -- healthCopy to Clipboard Copied! Toggle word wrap Toggle overflow List the nodes that have joined the cluster by running the following command:
oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME \ -- es_util --query=_cat/nodes?v
$ oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME \ -- es_util --query=_cat/nodes?vCopy to Clipboard Copied! Toggle word wrap Toggle overflow List the Elasticsearch pods and compare them with the nodes in the command output from the previous step, by running the following command:
oc -n openshift-logging get pods -l component=elasticsearch
$ oc -n openshift-logging get pods -l component=elasticsearchCopy to Clipboard Copied! Toggle word wrap Toggle overflow If some of the Elasticsearch nodes have not joined the cluster, perform the following steps.
Confirm that Elasticsearch has an elected master node by running the following command and observing the output:
oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME \ -- es_util --query=_cat/master?v
$ oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME \ -- es_util --query=_cat/master?vCopy to Clipboard Copied! Toggle word wrap Toggle overflow Review the pod logs of the elected master node for issues by running the following command and observing the output:
oc logs <elasticsearch_master_pod_name> -c elasticsearch -n openshift-logging
$ oc logs <elasticsearch_master_pod_name> -c elasticsearch -n openshift-loggingCopy to Clipboard Copied! Toggle word wrap Toggle overflow Review the logs of nodes that have not joined the cluster for issues by running the following command and observing the output:
oc logs <elasticsearch_node_name> -c elasticsearch -n openshift-logging
$ oc logs <elasticsearch_node_name> -c elasticsearch -n openshift-loggingCopy to Clipboard Copied! Toggle word wrap Toggle overflow
If all the nodes have joined the cluster, check if the cluster is in the process of recovering by running the following command and observing the output:
oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME \ -- es_util --query=_cat/recovery?active_only=true
$ oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME \ -- es_util --query=_cat/recovery?active_only=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow If there is no command output, the recovery process might be delayed or stalled by pending tasks.
Check if there are pending tasks by running the following command and observing the output:
oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME \ -- health | grep number_of_pending_tasks
$ oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME \ -- health | grep number_of_pending_tasksCopy to Clipboard Copied! Toggle word wrap Toggle overflow - If there are pending tasks, monitor their status. If their status changes and indicates that the cluster is recovering, continue waiting. The recovery time varies according to the size of the cluster and other factors. Otherwise, if the status of the pending tasks does not change, this indicates that the recovery has stalled.
If it seems like the recovery has stalled, check if the
cluster.routing.allocation.enablevalue is set tonone, by running the following command and observing the output:oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME \ -- es_util --query=_cluster/settings?pretty
$ oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME \ -- es_util --query=_cluster/settings?prettyCopy to Clipboard Copied! Toggle word wrap Toggle overflow If the
cluster.routing.allocation.enablevalue is set tonone, set it toall, by running the following command:oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME \ -- es_util --query=_cluster/settings?pretty \ -X PUT -d '{"persistent": {"cluster.routing.allocation.enable":"all"}}'$ oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME \ -- es_util --query=_cluster/settings?pretty \ -X PUT -d '{"persistent": {"cluster.routing.allocation.enable":"all"}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow Check if any indices are still red by running the following command and observing the output:
oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME \ -- es_util --query=_cat/indices?v
$ oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME \ -- es_util --query=_cat/indices?vCopy to Clipboard Copied! Toggle word wrap Toggle overflow If any indices are still red, try to clear them by performing the following steps.
Clear the cache by running the following command:
oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME \ -- es_util --query=<elasticsearch_index_name>/_cache/clear?pretty
$ oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME \ -- es_util --query=<elasticsearch_index_name>/_cache/clear?prettyCopy to Clipboard Copied! Toggle word wrap Toggle overflow Increase the max allocation retries by running the following command:
oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME \ -- es_util --query=<elasticsearch_index_name>/_settings?pretty \ -X PUT -d '{"index.allocation.max_retries":10}'$ oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME \ -- es_util --query=<elasticsearch_index_name>/_settings?pretty \ -X PUT -d '{"index.allocation.max_retries":10}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow Delete all the scroll items by running the following command:
oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME \ -- es_util --query=_search/scroll/_all -X DELETE
$ oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME \ -- es_util --query=_search/scroll/_all -X DELETECopy to Clipboard Copied! Toggle word wrap Toggle overflow Increase the timeout by running the following command:
oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME \ -- es_util --query=<elasticsearch_index_name>/_settings?pretty \ -X PUT -d '{"index.unassigned.node_left.delayed_timeout":"10m"}'$ oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME \ -- es_util --query=<elasticsearch_index_name>/_settings?pretty \ -X PUT -d '{"index.unassigned.node_left.delayed_timeout":"10m"}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
If the preceding steps do not clear the red indices, delete the indices individually.
Identify the red index name by running the following command:
oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME \ -- es_util --query=_cat/indices?v
$ oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME \ -- es_util --query=_cat/indices?vCopy to Clipboard Copied! Toggle word wrap Toggle overflow Delete the red index by running the following command:
oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME \ -- es_util --query=<elasticsearch_red_index_name> -X DELETE
$ oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME \ -- es_util --query=<elasticsearch_red_index_name> -X DELETECopy to Clipboard Copied! Toggle word wrap Toggle overflow
If there are no red indices and the cluster status is red, check for a continuous heavy processing load on a data node.
Check if the Elasticsearch JVM Heap usage is high by running the following command:
oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME \ -- es_util --query=_nodes/stats?pretty
$ oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME \ -- es_util --query=_nodes/stats?prettyCopy to Clipboard Copied! Toggle word wrap Toggle overflow In the command output, review the
node_name.jvm.mem.heap_used_percentfield to determine the JVM Heap usage.- Check for high CPU utilization. For more information about CPU utilitzation, see the OpenShift Container Platform "Reviewing monitoring dashboards" documentation.
3.3.2. Elasticsearch cluster health status is yellow Copia collegamentoCollegamento copiato negli appunti!
Replica shards for at least one primary shard are not allocated to nodes. Increase the node count by adjusting the nodeCount value in the ClusterLogging custom resource (CR).
3.3.3. Elasticsearch node disk low watermark reached Copia collegamentoCollegamento copiato negli appunti!
Elasticsearch does not allocate shards to nodes that reach the low watermark.
Some commands in this documentation reference an Elasticsearch pod by using a $ES_POD_NAME shell variable. If you want to copy and paste the commands directly from this documentation, you must set this variable to a value that is valid for your Elasticsearch cluster.
You can list the available Elasticsearch pods by running the following command:
oc -n openshift-logging get pods -l component=elasticsearch
$ oc -n openshift-logging get pods -l component=elasticsearch
Choose one of the pods listed and set the $ES_POD_NAME variable, by running the following command:
export ES_POD_NAME=<elasticsearch_pod_name>
$ export ES_POD_NAME=<elasticsearch_pod_name>
You can now use the $ES_POD_NAME variable in commands.
Procedure
Identify the node on which Elasticsearch is deployed by running the following command:
oc -n openshift-logging get po -o wide
$ oc -n openshift-logging get po -o wideCopy to Clipboard Copied! Toggle word wrap Toggle overflow Check if there are unassigned shards by running the following command:
oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME \ -- es_util --query=_cluster/health?pretty | grep unassigned_shards
$ oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME \ -- es_util --query=_cluster/health?pretty | grep unassigned_shardsCopy to Clipboard Copied! Toggle word wrap Toggle overflow If there are unassigned shards, check the disk space on each node, by running the following command:
for pod in `oc -n openshift-logging get po -l component=elasticsearch -o jsonpath='{.items[*].metadata.name}'`; \ do echo $pod; oc -n openshift-logging exec -c elasticsearch $pod \ -- df -h /elasticsearch/persistent; done$ for pod in `oc -n openshift-logging get po -l component=elasticsearch -o jsonpath='{.items[*].metadata.name}'`; \ do echo $pod; oc -n openshift-logging exec -c elasticsearch $pod \ -- df -h /elasticsearch/persistent; doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow In the command output, check the
Usecolumn to determine the used disk percentage on that node.Example output
Copy to Clipboard Copied! Toggle word wrap Toggle overflow If the used disk percentage is above 85%, the node has exceeded the low watermark, and shards can no longer be allocated to this node.
To check the current
redundancyPolicy, run the following command:oc -n openshift-logging get es elasticsearch \ -o jsonpath='{.spec.redundancyPolicy}'$ oc -n openshift-logging get es elasticsearch \ -o jsonpath='{.spec.redundancyPolicy}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow If you are using a
ClusterLoggingresource on your cluster, run the following command:oc -n openshift-logging get cl \ -o jsonpath='{.items[*].spec.logStore.elasticsearch.redundancyPolicy}'$ oc -n openshift-logging get cl \ -o jsonpath='{.items[*].spec.logStore.elasticsearch.redundancyPolicy}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow If the cluster
redundancyPolicyvalue is higher than theSingleRedundancyvalue, set it to theSingleRedundancyvalue and save this change.If the preceding steps do not fix the issue, delete the old indices.
Check the status of all indices on Elasticsearch by running the following command:
oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME -- indices
$ oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME -- indicesCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Identify an old index that can be deleted.
Delete the index by running the following command:
oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME \ -- es_util --query=<elasticsearch_index_name> -X DELETE
$ oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME \ -- es_util --query=<elasticsearch_index_name> -X DELETECopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.3.4. Elasticsearch node disk high watermark reached Copia collegamentoCollegamento copiato negli appunti!
Elasticsearch attempts to relocate shards away from a node that has reached the high watermark to a node with low disk usage that has not crossed any watermark threshold limits.
To allocate shards to a particular node, you must free up some space on that node. If increasing the disk space is not possible, try adding a new data node to the cluster, or decrease the total cluster redundancy policy.
Some commands in this documentation reference an Elasticsearch pod by using a $ES_POD_NAME shell variable. If you want to copy and paste the commands directly from this documentation, you must set this variable to a value that is valid for your Elasticsearch cluster.
You can list the available Elasticsearch pods by running the following command:
oc -n openshift-logging get pods -l component=elasticsearch
$ oc -n openshift-logging get pods -l component=elasticsearch
Choose one of the pods listed and set the $ES_POD_NAME variable, by running the following command:
export ES_POD_NAME=<elasticsearch_pod_name>
$ export ES_POD_NAME=<elasticsearch_pod_name>
You can now use the $ES_POD_NAME variable in commands.
Procedure
Identify the node on which Elasticsearch is deployed by running the following command:
oc -n openshift-logging get po -o wide
$ oc -n openshift-logging get po -o wideCopy to Clipboard Copied! Toggle word wrap Toggle overflow Check the disk space on each node:
for pod in `oc -n openshift-logging get po -l component=elasticsearch -o jsonpath='{.items[*].metadata.name}'`; \ do echo $pod; oc -n openshift-logging exec -c elasticsearch $pod \ -- df -h /elasticsearch/persistent; done$ for pod in `oc -n openshift-logging get po -l component=elasticsearch -o jsonpath='{.items[*].metadata.name}'`; \ do echo $pod; oc -n openshift-logging exec -c elasticsearch $pod \ -- df -h /elasticsearch/persistent; doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow Check if the cluster is rebalancing:
oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME \ -- es_util --query=_cluster/health?pretty | grep relocating_shards
$ oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME \ -- es_util --query=_cluster/health?pretty | grep relocating_shardsCopy to Clipboard Copied! Toggle word wrap Toggle overflow If the command output shows relocating shards, the high watermark has been exceeded. The default value of the high watermark is 90%.
- Increase the disk space on all nodes. If increasing the disk space is not possible, try adding a new data node to the cluster, or decrease the total cluster redundancy policy.
To check the current
redundancyPolicy, run the following command:oc -n openshift-logging get es elasticsearch \ -o jsonpath='{.spec.redundancyPolicy}'$ oc -n openshift-logging get es elasticsearch \ -o jsonpath='{.spec.redundancyPolicy}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow If you are using a
ClusterLoggingresource on your cluster, run the following command:oc -n openshift-logging get cl \ -o jsonpath='{.items[*].spec.logStore.elasticsearch.redundancyPolicy}'$ oc -n openshift-logging get cl \ -o jsonpath='{.items[*].spec.logStore.elasticsearch.redundancyPolicy}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow If the cluster
redundancyPolicyvalue is higher than theSingleRedundancyvalue, set it to theSingleRedundancyvalue and save this change.If the preceding steps do not fix the issue, delete the old indices.
Check the status of all indices on Elasticsearch by running the following command:
oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME -- indices
$ oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME -- indicesCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Identify an old index that can be deleted.
Delete the index by running the following command:
oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME \ -- es_util --query=<elasticsearch_index_name> -X DELETE
$ oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME \ -- es_util --query=<elasticsearch_index_name> -X DELETECopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.3.5. Elasticsearch node disk flood watermark reached Copia collegamentoCollegamento copiato negli appunti!
Elasticsearch enforces a read-only index block on every index that has both of these conditions:
- One or more shards are allocated to the node.
- One or more disks exceed the flood stage.
Use the following procedure to troubleshoot this alert.
Some commands in this documentation reference an Elasticsearch pod by using a $ES_POD_NAME shell variable. If you want to copy and paste the commands directly from this documentation, you must set this variable to a value that is valid for your Elasticsearch cluster.
You can list the available Elasticsearch pods by running the following command:
oc -n openshift-logging get pods -l component=elasticsearch
$ oc -n openshift-logging get pods -l component=elasticsearch
Choose one of the pods listed and set the $ES_POD_NAME variable, by running the following command:
export ES_POD_NAME=<elasticsearch_pod_name>
$ export ES_POD_NAME=<elasticsearch_pod_name>
You can now use the $ES_POD_NAME variable in commands.
Procedure
Get the disk space of the Elasticsearch node:
for pod in `oc -n openshift-logging get po -l component=elasticsearch -o jsonpath='{.items[*].metadata.name}'`; \ do echo $pod; oc -n openshift-logging exec -c elasticsearch $pod \ -- df -h /elasticsearch/persistent; done$ for pod in `oc -n openshift-logging get po -l component=elasticsearch -o jsonpath='{.items[*].metadata.name}'`; \ do echo $pod; oc -n openshift-logging exec -c elasticsearch $pod \ -- df -h /elasticsearch/persistent; doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow In the command output, check the
Availcolumn to determine the free disk space on that node.Example output
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Increase the disk space on all nodes. If increasing the disk space is not possible, try adding a new data node to the cluster, or decrease the total cluster redundancy policy.
To check the current
redundancyPolicy, run the following command:oc -n openshift-logging get es elasticsearch \ -o jsonpath='{.spec.redundancyPolicy}'$ oc -n openshift-logging get es elasticsearch \ -o jsonpath='{.spec.redundancyPolicy}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow If you are using a
ClusterLoggingresource on your cluster, run the following command:oc -n openshift-logging get cl \ -o jsonpath='{.items[*].spec.logStore.elasticsearch.redundancyPolicy}'$ oc -n openshift-logging get cl \ -o jsonpath='{.items[*].spec.logStore.elasticsearch.redundancyPolicy}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow If the cluster
redundancyPolicyvalue is higher than theSingleRedundancyvalue, set it to theSingleRedundancyvalue and save this change.If the preceding steps do not fix the issue, delete the old indices.
Check the status of all indices on Elasticsearch by running the following command:
oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME -- indices
$ oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME -- indicesCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Identify an old index that can be deleted.
Delete the index by running the following command:
oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME \ -- es_util --query=<elasticsearch_index_name> -X DELETE
$ oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME \ -- es_util --query=<elasticsearch_index_name> -X DELETECopy to Clipboard Copied! Toggle word wrap Toggle overflow
Continue freeing up and monitoring the disk space. After the used disk space drops below 90%, unblock writing to this node by running the following command:
oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME \ -- es_util --query=_all/_settings?pretty \ -X PUT -d '{"index.blocks.read_only_allow_delete": null}'$ oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME \ -- es_util --query=_all/_settings?pretty \ -X PUT -d '{"index.blocks.read_only_allow_delete": null}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.3.6. Elasticsearch JVM heap usage is high Copia collegamentoCollegamento copiato negli appunti!
The Elasticsearch node Java virtual machine (JVM) heap memory used is above 75%. Consider increasing the heap size.
3.3.7. Aggregated logging system CPU is high Copia collegamentoCollegamento copiato negli appunti!
System CPU usage on the node is high. Check the CPU of the cluster node. Consider allocating more CPU resources to the node.
3.3.8. Elasticsearch process CPU is high Copia collegamentoCollegamento copiato negli appunti!
Elasticsearch process CPU usage on the node is high. Check the CPU of the cluster node. Consider allocating more CPU resources to the node.
3.3.9. Elasticsearch disk space is running low Copia collegamentoCollegamento copiato negli appunti!
Elasticsearch is predicted to run out of disk space within the next 6 hours based on current disk usage. Use the following procedure to troubleshoot this alert.
Procedure
Get the disk space of the Elasticsearch node:
for pod in `oc -n openshift-logging get po -l component=elasticsearch -o jsonpath='{.items[*].metadata.name}'`; \ do echo $pod; oc -n openshift-logging exec -c elasticsearch $pod \ -- df -h /elasticsearch/persistent; done$ for pod in `oc -n openshift-logging get po -l component=elasticsearch -o jsonpath='{.items[*].metadata.name}'`; \ do echo $pod; oc -n openshift-logging exec -c elasticsearch $pod \ -- df -h /elasticsearch/persistent; doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow In the command output, check the
Availcolumn to determine the free disk space on that node.Example output
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Increase the disk space on all nodes. If increasing the disk space is not possible, try adding a new data node to the cluster, or decrease the total cluster redundancy policy.
To check the current
redundancyPolicy, run the following command:oc -n openshift-logging get es elasticsearch -o jsonpath='{.spec.redundancyPolicy}'$ oc -n openshift-logging get es elasticsearch -o jsonpath='{.spec.redundancyPolicy}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow If you are using a
ClusterLoggingresource on your cluster, run the following command:oc -n openshift-logging get cl \ -o jsonpath='{.items[*].spec.logStore.elasticsearch.redundancyPolicy}'$ oc -n openshift-logging get cl \ -o jsonpath='{.items[*].spec.logStore.elasticsearch.redundancyPolicy}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow If the cluster
redundancyPolicyvalue is higher than theSingleRedundancyvalue, set it to theSingleRedundancyvalue and save this change.If the preceding steps do not fix the issue, delete the old indices.
Check the status of all indices on Elasticsearch by running the following command:
oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME -- indices
$ oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME -- indicesCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Identify an old index that can be deleted.
Delete the index by running the following command:
oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME \ -- es_util --query=<elasticsearch_index_name> -X DELETE
$ oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME \ -- es_util --query=<elasticsearch_index_name> -X DELETECopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.3.10. Elasticsearch FileDescriptor usage is high Copia collegamentoCollegamento copiato negli appunti!
Based on current usage trends, the predicted number of file descriptors on the node is insufficient. Check the value of max_file_descriptors for each node as described in the Elasticsearch File Descriptors documentation.
3.4. Viewing the status of the Elasticsearch log store Copia collegamentoCollegamento copiato negli appunti!
You can view the status of the OpenShift Elasticsearch Operator and for a number of Elasticsearch components.
3.4.1. Viewing the status of the Elasticsearch log store Copia collegamentoCollegamento copiato negli appunti!
You can view the status of the Elasticsearch log store.
Prerequisites
- The Red Hat OpenShift Logging Operator and OpenShift Elasticsearch Operator are installed.
Procedure
Change to the
openshift-loggingproject by running the following command:oc project openshift-logging
$ oc project openshift-loggingCopy to Clipboard Copied! Toggle word wrap Toggle overflow To view the status:
Get the name of the Elasticsearch log store instance by running the following command:
oc get Elasticsearch
$ oc get ElasticsearchCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
NAME AGE elasticsearch 5h9m
NAME AGE elasticsearch 5h9mCopy to Clipboard Copied! Toggle word wrap Toggle overflow Get the Elasticsearch log store status by running the following command:
oc get Elasticsearch <Elasticsearch-instance> -o yaml
$ oc get Elasticsearch <Elasticsearch-instance> -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow For example:
oc get Elasticsearch elasticsearch -n openshift-logging -o yaml
$ oc get Elasticsearch elasticsearch -n openshift-logging -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow The output includes information similar to the following:
Example output
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- In the output, the cluster status fields appear in the
statusstanza. - 2
- The status of the Elasticsearch log store:
- The number of active primary shards.
- The number of active shards.
- The number of shards that are initializing.
- The number of Elasticsearch log store data nodes.
- The total number of Elasticsearch log store nodes.
- The number of pending tasks.
-
The Elasticsearch log store status:
green,red,yellow. - The number of unassigned shards.
- 3
- Any status conditions, if present. The Elasticsearch log store status indicates the reasons from the scheduler if a pod could not be placed. Any events related to the following conditions are shown:
- Container Waiting for both the Elasticsearch log store and proxy containers.
- Container Terminated for both the Elasticsearch log store and proxy containers.
- Pod unschedulable. Also, a condition is shown for a number of issues; see Example condition messages.
- 4
- The Elasticsearch log store nodes in the cluster, with
upgradeStatus. - 5
- The Elasticsearch log store client, data, and master pods in the cluster, listed under
failed,notReady, orreadystate.
3.4.1.1. Example condition messages Copia collegamentoCollegamento copiato negli appunti!
The following are examples of some condition messages from the Status section of the Elasticsearch instance.
The following status message indicates that a node has exceeded the configured low watermark, and no shard will be allocated to this node.
The following status message indicates that a node has exceeded the configured high watermark, and shards will be relocated to other nodes.
The following status message indicates that the Elasticsearch log store node selector in the custom resource (CR) does not match any nodes in the cluster:
The following status message indicates that the Elasticsearch log store CR uses a non-existent persistent volume claim (PVC).
The following status message indicates that your Elasticsearch log store cluster does not have enough nodes to support the redundancy policy.
This status message indicates your cluster has too many control plane nodes:
The following status message indicates that Elasticsearch storage does not support the change you tried to make.
For example:
The reason and type fields specify the type of unsupported change:
StorageClassNameChangeIgnored- Unsupported change to the storage class name.
StorageSizeChangeIgnored- Unsupported change the storage size.
StorageStructureChangeIgnoredUnsupported change between ephemeral and persistent storage structures.
ImportantIf you try to configure the
ClusterLoggingCR to switch from ephemeral to persistent storage, the OpenShift Elasticsearch Operator creates a persistent volume claim (PVC) but does not create a persistent volume (PV). To clear theStorageStructureChangeIgnoredstatus, you must revert the change to theClusterLoggingCR and delete the PVC.
3.4.2. Viewing the status of the log store components Copia collegamentoCollegamento copiato negli appunti!
You can view the status for a number of the log store components.
- Elasticsearch indices
You can view the status of the Elasticsearch indices.
Get the name of an Elasticsearch pod:
oc get pods --selector component=elasticsearch -o name
$ oc get pods --selector component=elasticsearch -o nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
pod/elasticsearch-cdm-1godmszn-1-6f8495-vp4lw pod/elasticsearch-cdm-1godmszn-2-5769cf-9ms2n pod/elasticsearch-cdm-1godmszn-3-f66f7d-zqkz7
pod/elasticsearch-cdm-1godmszn-1-6f8495-vp4lw pod/elasticsearch-cdm-1godmszn-2-5769cf-9ms2n pod/elasticsearch-cdm-1godmszn-3-f66f7d-zqkz7Copy to Clipboard Copied! Toggle word wrap Toggle overflow Get the status of the indices:
oc exec elasticsearch-cdm-4vjor49p-2-6d4d7db474-q2w7z -- indices
$ oc exec elasticsearch-cdm-4vjor49p-2-6d4d7db474-q2w7z -- indicesCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- Log store pods
You can view the status of the pods that host the log store.
Get the name of a pod:
oc get pods --selector component=elasticsearch -o name
$ oc get pods --selector component=elasticsearch -o nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
pod/elasticsearch-cdm-1godmszn-1-6f8495-vp4lw pod/elasticsearch-cdm-1godmszn-2-5769cf-9ms2n pod/elasticsearch-cdm-1godmszn-3-f66f7d-zqkz7
pod/elasticsearch-cdm-1godmszn-1-6f8495-vp4lw pod/elasticsearch-cdm-1godmszn-2-5769cf-9ms2n pod/elasticsearch-cdm-1godmszn-3-f66f7d-zqkz7Copy to Clipboard Copied! Toggle word wrap Toggle overflow Get the status of a pod:
oc describe pod elasticsearch-cdm-1godmszn-1-6f8495-vp4lw
$ oc describe pod elasticsearch-cdm-1godmszn-1-6f8495-vp4lwCopy to Clipboard Copied! Toggle word wrap Toggle overflow The output includes the following status information:
Example output
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- Log storage pod deployment configuration
You can view the status of the log store deployment configuration.
Get the name of a deployment configuration:
oc get deployment --selector component=elasticsearch -o name
$ oc get deployment --selector component=elasticsearch -o nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
deployment.extensions/elasticsearch-cdm-1gon-1 deployment.extensions/elasticsearch-cdm-1gon-2 deployment.extensions/elasticsearch-cdm-1gon-3
deployment.extensions/elasticsearch-cdm-1gon-1 deployment.extensions/elasticsearch-cdm-1gon-2 deployment.extensions/elasticsearch-cdm-1gon-3Copy to Clipboard Copied! Toggle word wrap Toggle overflow Get the deployment configuration status:
oc describe deployment elasticsearch-cdm-1gon-1
$ oc describe deployment elasticsearch-cdm-1gon-1Copy to Clipboard Copied! Toggle word wrap Toggle overflow The output includes the following status information:
Example output
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- Log store replica set
You can view the status of the log store replica set.
Get the name of a replica set:
oc get replicaSet --selector component=elasticsearch -o name
$ oc get replicaSet --selector component=elasticsearch -o name replicaset.extensions/elasticsearch-cdm-1gon-1-6f8495 replicaset.extensions/elasticsearch-cdm-1gon-2-5769cf replicaset.extensions/elasticsearch-cdm-1gon-3-f66f7dCopy to Clipboard Copied! Toggle word wrap Toggle overflow Get the status of the replica set:
oc describe replicaSet elasticsearch-cdm-1gon-1-6f8495
$ oc describe replicaSet elasticsearch-cdm-1gon-1-6f8495Copy to Clipboard Copied! Toggle word wrap Toggle overflow The output includes the following status information:
Example output
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.4.3. Elasticsearch cluster status Copia collegamentoCollegamento copiato negli appunti!
A dashboard in the Observe section of the OpenShift Container Platform web console displays the status of the Elasticsearch cluster.
To get the status of the OpenShift Elasticsearch cluster, visit the dashboard in the Observe section of the OpenShift Container Platform web console at <cluster_url>/monitoring/dashboards/grafana-dashboard-cluster-logging.
Elasticsearch status fields
eo_elasticsearch_cr_cluster_management_stateShows whether the Elasticsearch cluster is in a managed or unmanaged state. For example:
eo_elasticsearch_cr_cluster_management_state{state="managed"} 1 eo_elasticsearch_cr_cluster_management_state{state="unmanaged"} 0eo_elasticsearch_cr_cluster_management_state{state="managed"} 1 eo_elasticsearch_cr_cluster_management_state{state="unmanaged"} 0Copy to Clipboard Copied! Toggle word wrap Toggle overflow eo_elasticsearch_cr_restart_totalShows the number of times the Elasticsearch nodes have restarted for certificate restarts, rolling restarts, or scheduled restarts. For example:
eo_elasticsearch_cr_restart_total{reason="cert_restart"} 1 eo_elasticsearch_cr_restart_total{reason="rolling_restart"} 1 eo_elasticsearch_cr_restart_total{reason="scheduled_restart"} 3eo_elasticsearch_cr_restart_total{reason="cert_restart"} 1 eo_elasticsearch_cr_restart_total{reason="rolling_restart"} 1 eo_elasticsearch_cr_restart_total{reason="scheduled_restart"} 3Copy to Clipboard Copied! Toggle word wrap Toggle overflow es_index_namespaces_totalShows the total number of Elasticsearch index namespaces. For example:
Total number of Namespaces. es_index_namespaces_total 5
Total number of Namespaces. es_index_namespaces_total 5Copy to Clipboard Copied! Toggle word wrap Toggle overflow es_index_document_countShows the number of records for each namespace. For example:
es_index_document_count{namespace="namespace_1"} 25 es_index_document_count{namespace="namespace_2"} 10 es_index_document_count{namespace="namespace_3"} 5es_index_document_count{namespace="namespace_1"} 25 es_index_document_count{namespace="namespace_2"} 10 es_index_document_count{namespace="namespace_3"} 5Copy to Clipboard Copied! Toggle word wrap Toggle overflow
The "Secret Elasticsearch fields are either missing or empty" message
If Elasticsearch is missing the admin-cert, admin-key, logging-es.crt, or logging-es.key files, the dashboard shows a status message similar to the following example:
message": "Secret \"elasticsearch\" fields are either missing or empty: [admin-cert, admin-key, logging-es.crt, logging-es.key]", "reason": "Missing Required Secrets",
message": "Secret \"elasticsearch\" fields are either missing or empty: [admin-cert, admin-key, logging-es.crt, logging-es.key]",
"reason": "Missing Required Secrets",
Chapter 4. About Logging Copia collegamentoCollegamento copiato negli appunti!
As a cluster administrator, you can deploy logging on an OpenShift Container Platform cluster, and use it to collect and aggregate node system audit logs, application container logs, and infrastructure logs. You can forward logs to your chosen log outputs, including on-cluster, Red Hat managed log storage. You can also visualize your log data in the OpenShift Container Platform web console, or the Kibana web console, depending on your deployed log storage solution.
The Kibana web console is now deprecated is planned to be removed in a future logging release.
OpenShift Container Platform cluster administrators can deploy logging by using Operators. For information, see Installing logging.
The Operators are responsible for deploying, upgrading, and maintaining logging. After the Operators are installed, you can create a ClusterLogging custom resource (CR) to schedule logging pods and other resources necessary to support logging. You can also create a ClusterLogForwarder CR to specify which logs are collected, how they are transformed, and where they are forwarded to.
Because the internal OpenShift Container Platform Elasticsearch log store does not provide secure storage for audit logs, audit logs are not stored in the internal Elasticsearch instance by default. If you want to send the audit logs to the default internal Elasticsearch log store, for example to view the audit logs in Kibana, you must use the Log Forwarding API as described in Forward audit logs to the log store.
4.1. Logging architecture Copia collegamentoCollegamento copiato negli appunti!
The major components of the logging are:
- Collector
The collector is a daemonset that deploys pods to each OpenShift Container Platform node. It collects log data from each node, transforms the data, and forwards it to configured outputs. You can use the Vector collector or the legacy Fluentd collector.
NoteFluentd is deprecated and is planned to be removed in a future release. Red Hat provides bug fixes and support for this feature during the current release lifecycle, but this feature no longer receives enhancements. As an alternative to Fluentd, you can use Vector instead.
- Log store
The log store stores log data for analysis and is the default output for the log forwarder. You can use the default LokiStack log store, the legacy Elasticsearch log store, or forward logs to additional external log stores.
NoteThe Logging 5.9 release does not contain an updated version of the OpenShift Elasticsearch Operator. If you currently use the OpenShift Elasticsearch Operator released with Logging 5.8, it will continue to work with Logging until the EOL of Logging 5.8. As an alternative to using the OpenShift Elasticsearch Operator to manage the default log storage, you can use the Loki Operator. For more information on the Logging lifecycle dates, see Platform Agnostic Operators.
- Visualization
You can use a UI component to view a visual representation of your log data. The UI provides a graphical interface to search, query, and view stored logs. The OpenShift Container Platform web console UI is provided by enabling the OpenShift Container Platform console plugin.
NoteThe Kibana web console is now deprecated is planned to be removed in a future logging release.
Logging collects container logs and node logs. These are categorized into types:
- Application logs
- Container logs generated by user applications running in the cluster, except infrastructure container applications.
- Infrastructure logs
-
Container logs generated by infrastructure namespaces:
openshift*,kube*, ordefault, as well as journald messages from nodes. - Audit logs
-
Logs generated by auditd, the node audit system, which are stored in the /var/log/audit/audit.log file, and logs from the
auditd,kube-apiserver,openshift-apiserverservices, as well as theovnproject if enabled.
4.2. About deploying logging Copia collegamentoCollegamento copiato negli appunti!
Administrators can deploy the logging by using the OpenShift Container Platform web console or the OpenShift CLI (oc) to install the logging Operators. The Operators are responsible for deploying, upgrading, and maintaining the logging.
Administrators and application developers can view the logs of the projects for which they have view access.
4.2.1. Logging custom resources Copia collegamentoCollegamento copiato negli appunti!
You can configure your logging deployment with custom resource (CR) YAML files implemented by each Operator.
Red Hat OpenShift Logging Operator:
-
ClusterLogging(CL) - After the Operators are installed, you create aClusterLoggingcustom resource (CR) to schedule logging pods and other resources necessary to support the logging. TheClusterLoggingCR deploys the collector and forwarder, which currently are both implemented by a daemonset running on each node. The Red Hat OpenShift Logging Operator watches theClusterLoggingCR and adjusts the logging deployment accordingly. -
ClusterLogForwarder(CLF) - Generates collector configuration to forward logs per user configuration.
Loki Operator:
-
LokiStack- Controls the Loki cluster as log store and the web proxy with OpenShift Container Platform authentication integration to enforce multi-tenancy.
OpenShift Elasticsearch Operator:
These CRs are generated and managed by the OpenShift Elasticsearch Operator. Manual changes cannot be made without being overwritten by the Operator.
-
ElasticSearch- Configure and deploy an Elasticsearch instance as the default log store. -
Kibana- Configure and deploy Kibana instance to search, query and view logs.
4.2.2. About JSON OpenShift Container Platform Logging Copia collegamentoCollegamento copiato negli appunti!
You can use JSON logging to configure the Log Forwarding API to parse JSON strings into a structured object. You can perform the following tasks:
- Parse JSON logs
- Configure JSON log data for Elasticsearch
- Forward JSON logs to the Elasticsearch log store
4.2.3. About collecting and storing Kubernetes events Copia collegamentoCollegamento copiato negli appunti!
The OpenShift Container Platform Event Router is a pod that watches Kubernetes events and logs them for collection by OpenShift Container Platform Logging. You must manually deploy the Event Router.
For information, see About collecting and storing Kubernetes events.
4.2.4. About troubleshooting OpenShift Container Platform Logging Copia collegamentoCollegamento copiato negli appunti!
You can troubleshoot the logging issues by performing the following tasks:
- Viewing logging status
- Viewing the status of the log store
- Understanding logging alerts
- Collecting logging data for Red Hat Support
- Troubleshooting for critical alerts
4.2.5. About exporting fields Copia collegamentoCollegamento copiato negli appunti!
The logging system exports fields. Exported fields are present in the log records and are available for searching from Elasticsearch and Kibana.
For information, see About exporting fields.
4.2.6. About event routing Copia collegamentoCollegamento copiato negli appunti!
The Event Router is a pod that watches OpenShift Container Platform events so they can be collected by logging. The Event Router collects events from all projects and writes them to STDOUT. Fluentd collects those events and forwards them into the OpenShift Container Platform Elasticsearch instance. Elasticsearch indexes the events to the infra index.
You must manually deploy the Event Router.
For information, see Collecting and storing Kubernetes events.
Chapter 5. Installing Logging Copia collegamentoCollegamento copiato negli appunti!
You can deploy logging by installing the Red Hat OpenShift Logging Operator. The Red Hat OpenShift Logging Operator creates and manages the components of the logging stack.
Logging is provided as an installable component, with a distinct release cycle from the core OpenShift Container Platform. The Red Hat OpenShift Container Platform Life Cycle Policy outlines release compatibility.
For new installations, use Vector and LokiStack. Elasticsearch and Fluentd are deprecated and are planned to be removed in a future release.
5.1. Installing the Red Hat OpenShift Logging Operator by using the web console Copia collegamentoCollegamento copiato negli appunti!
You can install the Red Hat OpenShift Logging Operator by using the OpenShift Container Platform web console.
Prerequisites
- You have administrator permissions.
- You have access to the OpenShift Container Platform web console.
Procedure
- In the OpenShift Container Platform web console, click Operators → OperatorHub.
-
Type
OpenShift Loggingin the Filter by keyword box. - Choose Red Hat OpenShift Logging from the list of available Operators, and click Install.
- Ensure that A specific namespace on the cluster is selected under Installation mode.
- Ensure that Operator recommended namespace is openshift-logging under Installed Namespace.
Select Enable operator recommended cluster monitoring on this namespace.
This option sets the
openshift.io/cluster-monitoring: "true"label in theNamespaceobject. You must select this option to ensure that cluster monitoring scrapes theopenshift-loggingnamespace.Select stable-5.y as the Update channel.
NoteThe stable channel only provides updates to the most recent release of logging. To continue receiving updates for prior releases, you must change your subscription channel to stable-x.y, where
x.yrepresents the major and minor version of logging you have installed. For example, stable-5.7.Select an Update approval.
- The Automatic strategy allows Operator Lifecycle Manager (OLM) to automatically update the Operator when a new version is available.
- The Manual strategy requires a user with appropriate credentials to approve the Operator update.
- Select Enable or Disable for the Console plugin.
- Click Install.
Verification
- Verify that the Red Hat OpenShift Logging Operator is installed by switching to the Operators → Installed Operators page.
- In the Status column, verify that you see green checkmarks with InstallSucceeded and the text Up to date.
An Operator might display a Failed status before the installation finishes. If the Operator install completes with an InstallSucceeded message, refresh the page.
If the Operator does not show as installed, choose one of the following troubleshooting options:
- Go to the Operators → Installed Operators page, and inspect the Status column for any errors or failures.
-
Go to the Workloads → Pods page, and check the logs in any pods in the
openshift-loggingproject that are reporting issues.
5.2. Creating a ClusterLogging object by using the web console Copia collegamentoCollegamento copiato negli appunti!
After you have installed the logging Operators, you must create a ClusterLogging custom resource to configure log storage, visualization, and the log collector for your cluster.
Prerequisites
- You have installed the Red Hat OpenShift Logging Operator.
- You have access to the OpenShift Container Platform web console Administrator perspective.
Procedure
- Navigate to the Custom Resource Definitions page.
- On the Custom Resource Definitions page, click ClusterLogging.
- On the Custom Resource Definition details page, select View Instances from the Actions menu.
- On the ClusterLoggings page, click Create ClusterLogging.
In the collection section, select a Collector Implementation.
NoteFluentd is deprecated and is planned to be removed in a future release. Red Hat provides bug fixes and support for this feature during the current release lifecycle, but this feature no longer receives enhancements. As an alternative to Fluentd, you can use Vector instead.
In the logStore section, select a type.
NoteThe Logging 5.9 release does not contain an updated version of the OpenShift Elasticsearch Operator. If you currently use the OpenShift Elasticsearch Operator released with Logging 5.8, it will continue to work with Logging until the EOL of Logging 5.8. As an alternative to using the OpenShift Elasticsearch Operator to manage the default log storage, you can use the Loki Operator. For more information on the Logging lifecycle dates, see Platform Agnostic Operators.
- Click Create.
5.3. Installing the Red Hat OpenShift Logging Operator by using the CLI Copia collegamentoCollegamento copiato negli appunti!
You can use the OpenShift CLI (oc) to install the Red Hat OpenShift Logging Operator.
Prerequisites
- You have administrator permissions.
-
You have installed the OpenShift CLI (
oc).
Procedure
Create a
Namespaceobject as a YAML file:Example
NamespaceobjectCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- You must specify
openshift-loggingas the name of the namespace for logging versions 5.7 and earlier versions. For logging 5.8 and later versions, you can use any name.
Apply the
Namespaceobject by running the following command:oc apply -f <filename>.yaml
$ oc apply -f <filename>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Create an
OperatorGroupobject as a YAML file:Example
OperatorGroupobjectCopy to Clipboard Copied! Toggle word wrap Toggle overflow Apply the
OperatorGroupobject by running the following command:oc apply -f <filename>.yaml
$ oc apply -f <filename>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Create a
Subscriptionobject to subscribe the namespace to the Red Hat OpenShift Logging Operator:Example
SubscriptionobjectCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- You must specify the
openshift-loggingnamespace for logging versions 5.7 and older. For logging 5.8 and later versions, you can use any namespace. - 2
- Specify
stableorstable-x.yas the channel. - 3
- Specify
redhat-operators. If your OpenShift Container Platform cluster is installed on a restricted network, also known as a disconnected cluster, specify the name of theCatalogSourceobject you created when you configured the Operator Lifecycle Manager (OLM).
Apply the subscription by running the following command:
oc apply -f <filename>.yaml
$ oc apply -f <filename>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow The Red Hat OpenShift Logging Operator is installed to the
openshift-loggingnamespace.
Verification
Run the following command:
oc get csv -n <namespace>
$ oc get csv -n <namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Observe the output and confirm that the Red Hat OpenShift Logging Operator exists in the namespace:
Example output
NAMESPACE NAME DISPLAY VERSION REPLACES PHASE ... openshift-logging clusterlogging.5.8.0-202007012112.p0 OpenShift Logging 5.8.0-202007012112.p0 Succeeded ...
NAMESPACE NAME DISPLAY VERSION REPLACES PHASE ... openshift-logging clusterlogging.5.8.0-202007012112.p0 OpenShift Logging 5.8.0-202007012112.p0 Succeeded ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.4. Creating a ClusterLogging object by using the CLI Copia collegamentoCollegamento copiato negli appunti!
This default logging configuration supports a wide array of environments. Review the topics on tuning and configuring components for information about modifications you can make.
Prerequisites
- You have installed the Red Hat OpenShift Logging Operator.
- You have installed the OpenShift Elasticsearch Operator for your log store.
-
You have installed the OpenShift CLI (
oc).
Procedure
Create a
ClusterLoggingobject as a YAML file:Example
ClusterLoggingobjectCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- The name must be
instance. - 2
- The OpenShift Logging management state. In some cases, if you change the OpenShift Logging defaults, you must set this to
Unmanaged. However, an unmanaged deployment does not receive updates until OpenShift Logging is placed back into a managed state. - 3
- Settings for configuring Elasticsearch. Using the CR, you can configure shard replication policy and persistent storage.
- 4
- Specify the length of time that Elasticsearch should retain each log source. Enter an integer and a time designation: weeks(w), hours(h/H), minutes(m) and seconds(s). For example,
7dfor seven days. Logs older than themaxAgeare deleted. You must specify a retention policy for each log source or the Elasticsearch indices will not be created for that source. - 5
- Specify the number of Elasticsearch nodes. See the note that follows this list.
- 6
- Enter the name of an existing storage class for Elasticsearch storage. For best performance, specify a storage class that allocates block storage. If you do not specify a storage class, OpenShift Logging uses ephemeral storage.
- 7
- Specify the CPU and memory requests for Elasticsearch as needed. If you leave these values blank, the OpenShift Elasticsearch Operator sets default values that should be sufficient for most deployments. The default values are
16Gifor the memory request and1for the CPU request. - 8
- Specify the CPU and memory requests for the Elasticsearch proxy as needed. If you leave these values blank, the OpenShift Elasticsearch Operator sets default values that should be sufficient for most deployments. The default values are
256Mifor the memory request and100mfor the CPU request. - 9
- Settings for configuring Kibana. Using the CR, you can scale Kibana for redundancy and configure the CPU and memory for your Kibana nodes. For more information, see Configuring the log visualizer.
- 10
- Settings for configuring Fluentd. Using the CR, you can configure Fluentd CPU and memory limits. For more information, see "Configuring Fluentd".
NoteThe maximum number of Elasticsearch control plane nodes is three. If you specify a
nodeCountgreater than3, OpenShift Container Platform creates three Elasticsearch nodes that are Master-eligible nodes, with the master, client, and data roles. The additional Elasticsearch nodes are created as data-only nodes, using client and data roles. Control plane nodes perform cluster-wide actions such as creating or deleting an index, shard allocation, and tracking nodes. Data nodes hold the shards and perform data-related operations such as CRUD, search, and aggregations. Data-related operations are I/O-, memory-, and CPU-intensive. It is important to monitor these resources and to add more Data nodes if the current nodes are overloaded.For example, if
nodeCount=4, the following nodes are created:oc get deployment
$ oc get deploymentCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
Copy to Clipboard Copied! Toggle word wrap Toggle overflow The number of primary shards for the index templates is equal to the number of Elasticsearch data nodes.
Verification
You can verify the installation by listing the pods in the openshift-logging project.
List the pods by running the following command:
oc get pods -n openshift-logging
$ oc get pods -n openshift-loggingCopy to Clipboard Copied! Toggle word wrap Toggle overflow Observe the pods for components of the logging, similar to the following list:
Example output
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.5. Postinstallation tasks Copia collegamentoCollegamento copiato negli appunti!
After you have installed the Red Hat OpenShift Logging Operator, you can configure your deployment by creating and modifying a ClusterLogging custom resource (CR).
If you are not using the Elasticsearch log store, you can remove the internal Elasticsearch logStore and Kibana visualization components from the ClusterLogging custom resource (CR). Removing these components is optional but saves resources. See Removing unused components if you do not use the Elasticsearch log store.
5.5.1. About the ClusterLogging custom resource Copia collegamentoCollegamento copiato negli appunti!
To make changes to your logging environment, create and modify the ClusterLogging custom resource (CR).
Sample ClusterLogging custom resource (CR)
5.5.2. Configuring log storage Copia collegamentoCollegamento copiato negli appunti!
You can configure which log storage type your logging uses by modifying the ClusterLogging custom resource (CR).
Prerequisites
- You have administrator permissions.
-
You have installed the OpenShift CLI (
oc). - You have installed the Red Hat OpenShift Logging Operator and an internal log store that is either the LokiStack or Elasticsearch.
-
You have created a
ClusterLoggingCR.
The Logging 5.9 release does not contain an updated version of the OpenShift Elasticsearch Operator. If you currently use the OpenShift Elasticsearch Operator released with Logging 5.8, it will continue to work with Logging until the EOL of Logging 5.8. As an alternative to using the OpenShift Elasticsearch Operator to manage the default log storage, you can use the Loki Operator. For more information on the Logging lifecycle dates, see Platform Agnostic Operators.
Procedure
Modify the
ClusterLoggingCRlogStorespec:ClusterLoggingCR exampleCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Specify the log store type. This can be either
lokistackorelasticsearch. - 2
- Optional configuration options for the Elasticsearch log store.
- 3
- Specify the redundancy type. This value can be
ZeroRedundancy,SingleRedundancy,MultipleRedundancy, orFullRedundancy. - 4
- Optional configuration options for LokiStack.
Example
ClusterLoggingCR to specify LokiStack as the log storeCopy to Clipboard Copied! Toggle word wrap Toggle overflow Apply the
ClusterLoggingCR by running the following command:oc apply -f <filename>.yaml
$ oc apply -f <filename>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.5.3. Configuring the log collector Copia collegamentoCollegamento copiato negli appunti!
You can configure which log collector type your logging uses by modifying the ClusterLogging custom resource (CR).
Fluentd is deprecated and is planned to be removed in a future release. Red Hat provides bug fixes and support for this feature during the current release lifecycle, but this feature no longer receives enhancements. As an alternative to Fluentd, you can use Vector instead.
Prerequisites
- You have administrator permissions.
-
You have installed the OpenShift CLI (
oc). - You have installed the Red Hat OpenShift Logging Operator.
-
You have created a
ClusterLoggingCR.
Procedure
Modify the
ClusterLoggingCRcollectionspec:ClusterLoggingCR exampleCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- The log collector type you want to use for the logging. This can be
vectororfluentd.
Apply the
ClusterLoggingCR by running the following command:oc apply -f <filename>.yaml
$ oc apply -f <filename>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.5.4. Configuring the log visualizer Copia collegamentoCollegamento copiato negli appunti!
You can configure which log visualizer type your logging uses by modifying the ClusterLogging custom resource (CR).
Prerequisites
- You have administrator permissions.
-
You have installed the OpenShift CLI (
oc). - You have installed the Red Hat OpenShift Logging Operator.
-
You have created a
ClusterLoggingCR.
If you want to use the OpenShift Container Platform web console for visualization, you must enable the logging Console Plugin. See the documentation about "Log visualization with the web console".
Procedure
Modify the
ClusterLoggingCRvisualizationspec:ClusterLoggingCR exampleCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- The type of visualizer you want to use for your logging. This can be either
kibanaorocp-console. The Kibana console is only compatible with deployments that use Elasticsearch log storage, while the OpenShift Container Platform console is only compatible with LokiStack deployments. - 2
- Optional configurations for the Kibana console.
- 3
- Optional configurations for the OpenShift Container Platform web console.
Apply the
ClusterLoggingCR by running the following command:oc apply -f <filename>.yaml
$ oc apply -f <filename>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.5.5. Allowing traffic between projects when network isolation is enabled Copia collegamentoCollegamento copiato negli appunti!
Your cluster network plugin might enforce network isolation. If so, you must allow network traffic between the projects that contain the operators deployed by OpenShift Logging.
Network isolation blocks network traffic between pods or services that are in different projects. The logging installs the OpenShift Elasticsearch Operator in the openshift-operators-redhat project and the Red Hat OpenShift Logging Operator in the openshift-logging project. Therefore, you must allow traffic between these two projects.
OpenShift Container Platform offers two supported choices for the network plugin, OpenShift SDN and OVN-Kubernetes. These two providers implement various network isolation policies.
OpenShift SDN has three modes:
- network policy
- This is the default mode. If no policy is defined, it allows all traffic. However, if a user defines a policy, they typically start by denying all traffic and then adding exceptions. This process might break applications that are running in different projects. Therefore, explicitly configure the policy to allow traffic to egress from one logging-related project to the other.
- multitenant
- This mode enforces network isolation. You must join the two logging-related projects to allow traffic between them.
- subnet
- This mode allows all traffic. It does not enforce network isolation. No action is needed.
OVN-Kubernetes always uses a network policy. Therefore, as with OpenShift SDN, you must configure the policy to allow traffic to egress from one logging-related project to the other.
Procedure
If you are using OpenShift SDN in multitenant mode, join the two projects. For example:
oc adm pod-network join-projects --to=openshift-operators-redhat openshift-logging
$ oc adm pod-network join-projects --to=openshift-operators-redhat openshift-loggingCopy to Clipboard Copied! Toggle word wrap Toggle overflow Otherwise, for OpenShift SDN in network policy mode and OVN-Kubernetes, perform the following actions:
Set a label on the
openshift-operators-redhatnamespace. For example:oc label namespace openshift-operators-redhat project=openshift-operators-redhat
$ oc label namespace openshift-operators-redhat project=openshift-operators-redhatCopy to Clipboard Copied! Toggle word wrap Toggle overflow Create a network policy object in the
openshift-loggingnamespace that allows ingress from theopenshift-operators-redhat,openshift-monitoringandopenshift-ingressprojects to the openshift-logging project. For example:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Chapter 6. Updating Logging Copia collegamentoCollegamento copiato negli appunti!
There are two types of logging updates: minor release updates (5.y.z) and major release updates (5.y).
6.1. Minor release updates Copia collegamentoCollegamento copiato negli appunti!
If you installed the logging Operators using the Automatic update approval option, your Operators receive minor version updates automatically. You do not need to complete any manual update steps.
If you installed the logging Operators using the Manual update approval option, you must manually approve minor version updates.
For more information, see Manually approving a pending Operator update.
6.2. Major release updates Copia collegamentoCollegamento copiato negli appunti!
For major version updates you must complete some manual steps.
For major release version compatibility and support information, see OpenShift Operator Life Cycles.
6.3. Upgrading the Red Hat OpenShift Logging Operator to watch all namespaces Copia collegamentoCollegamento copiato negli appunti!
In logging 5.7 and older versions, the Red Hat OpenShift Logging Operator only watches the openshift-logging namespace. If you want the Red Hat OpenShift Logging Operator to watch all namespaces on your cluster, you must redeploy the Operator. You can complete the following procedure to redeploy the Operator without deleting your logging components.
Prerequisites
-
You have installed the OpenShift CLI (
oc). - You have administrator permissions.
Procedure
Delete the subscription by running the following command:
oc -n openshift-logging delete subscription <subscription>
$ oc -n openshift-logging delete subscription <subscription>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Delete the Operator group by running the following command:
oc -n openshift-logging delete operatorgroup <operator_group_name>
$ oc -n openshift-logging delete operatorgroup <operator_group_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Delete the cluster service version (CSV) by running the following command:
oc delete clusterserviceversion cluster-logging.<version>
$ oc delete clusterserviceversion cluster-logging.<version>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Redeploy the Red Hat OpenShift Logging Operator by following the "Installing Logging" documentation.
Verification
Check that the
targetNamespacesfield in theOperatorGroupresource is not present or is set to an empty string.To do this, run the following command and inspect the output:
oc get operatorgroup <operator_group_name> -o yaml
$ oc get operatorgroup <operator_group_name> -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.4. Updating the Red Hat OpenShift Logging Operator Copia collegamentoCollegamento copiato negli appunti!
To update the Red Hat OpenShift Logging Operator to a new major release version, you must modify the update channel for the Operator subscription.
Prerequisites
- You have installed the Red Hat OpenShift Logging Operator.
- You have administrator permissions.
- You have access to the OpenShift Container Platform web console and are viewing the Administrator perspective.
Procedure
- Navigate to Operators → Installed Operators.
- Select the openshift-logging project.
- Click the Red Hat OpenShift Logging Operator.
- Click Subscription. In the Subscription details section, click the Update channel link. This link text might be stable or stable-5.y, depending on your current update channel.
-
In the Change Subscription Update Channel window, select the latest major version update channel, stable-5.y, and click Save. Note the
cluster-logging.v5.y.zversion.
Verification
-
Wait for a few seconds, then click Operators → Installed Operators. Verify that the Red Hat OpenShift Logging Operator version matches the latest
cluster-logging.v5.y.zversion. - On the Operators → Installed Operators page, wait for the Status field to report Succeeded.
6.5. Updating the Loki Operator Copia collegamentoCollegamento copiato negli appunti!
To update the Loki Operator to a new major release version, you must modify the update channel for the Operator subscription.
Prerequisites
- You have installed the Loki Operator.
- You have administrator permissions.
- You have access to the OpenShift Container Platform web console and are viewing the Administrator perspective.
Procedure
- Navigate to Operators → Installed Operators.
- Select the openshift-operators-redhat project.
- Click the Loki Operator.
- Click Subscription. In the Subscription details section, click the Update channel link. This link text might be stable or stable-5.y, depending on your current update channel.
-
In the Change Subscription Update Channel window, select the latest major version update channel, stable-5.y, and click Save. Note the
loki-operator.v5.y.zversion.
Verification
-
Wait for a few seconds, then click Operators → Installed Operators. Verify that the Loki Operator version matches the latest
loki-operator.v5.y.zversion. - On the Operators → Installed Operators page, wait for the Status field to report Succeeded.
6.6. Updating the OpenShift Elasticsearch Operator Copia collegamentoCollegamento copiato negli appunti!
To update the OpenShift Elasticsearch Operator to the current version, you must modify the subscription.
The Logging 5.9 release does not contain an updated version of the OpenShift Elasticsearch Operator. If you currently use the OpenShift Elasticsearch Operator released with Logging 5.8, it will continue to work with Logging until the EOL of Logging 5.8. As an alternative to using the OpenShift Elasticsearch Operator to manage the default log storage, you can use the Loki Operator. For more information on the Logging lifecycle dates, see Platform Agnostic Operators.
Prerequisites
If you are using Elasticsearch as the default log store, and Kibana as the UI, update the OpenShift Elasticsearch Operator before you update the Red Hat OpenShift Logging Operator.
ImportantIf you update the Operators in the wrong order, Kibana does not update and the Kibana custom resource (CR) is not created. To fix this issue, delete the Red Hat OpenShift Logging Operator pod. When the Red Hat OpenShift Logging Operator pod redeploys, it creates the Kibana CR and Kibana becomes available again.
The Logging status is healthy:
-
All pods have a
readystatus. - The Elasticsearch cluster is healthy.
-
All pods have a
- Your Elasticsearch and Kibana data is backed up.
- You have administrator permissions.
-
You have installed the OpenShift CLI (
oc) for the verification steps.
Procedure
- In the OpenShift Container Platform web console, click Operators → Installed Operators.
- Select the openshift-operators-redhat project.
- Click OpenShift Elasticsearch Operator.
- Click Subscription → Channel.
-
In the Change Subscription Update Channel window, select stable-5.y and click Save. Note the
elasticsearch-operator.v5.y.zversion. -
Wait for a few seconds, then click Operators → Installed Operators. Verify that the OpenShift Elasticsearch Operator version matches the latest
elasticsearch-operator.v5.y.zversion. - On the Operators → Installed Operators page, wait for the Status field to report Succeeded.
Verification
Verify that all Elasticsearch pods have a Ready status by entering the following command and observing the output:
oc get pod -n openshift-logging --selector component=elasticsearch
$ oc get pod -n openshift-logging --selector component=elasticsearchCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
NAME READY STATUS RESTARTS AGE elasticsearch-cdm-1pbrl44l-1-55b7546f4c-mshhk 2/2 Running 0 31m elasticsearch-cdm-1pbrl44l-2-5c6d87589f-gx5hk 2/2 Running 0 30m elasticsearch-cdm-1pbrl44l-3-88df5d47-m45jc 2/2 Running 0 29m
NAME READY STATUS RESTARTS AGE elasticsearch-cdm-1pbrl44l-1-55b7546f4c-mshhk 2/2 Running 0 31m elasticsearch-cdm-1pbrl44l-2-5c6d87589f-gx5hk 2/2 Running 0 30m elasticsearch-cdm-1pbrl44l-3-88df5d47-m45jc 2/2 Running 0 29mCopy to Clipboard Copied! Toggle word wrap Toggle overflow Verify that the Elasticsearch cluster status is
greenby entering the following command and observing the output:oc exec -n openshift-logging -c elasticsearch elasticsearch-cdm-1pbrl44l-1-55b7546f4c-mshhk -- health
$ oc exec -n openshift-logging -c elasticsearch elasticsearch-cdm-1pbrl44l-1-55b7546f4c-mshhk -- healthCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
{ "cluster_name" : "elasticsearch", "status" : "green", }{ "cluster_name" : "elasticsearch", "status" : "green", }Copy to Clipboard Copied! Toggle word wrap Toggle overflow Verify that the Elasticsearch cron jobs are created by entering the following commands and observing the output:
oc project openshift-logging
$ oc project openshift-loggingCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc get cronjob
$ oc get cronjobCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE elasticsearch-im-app */15 * * * * False 0 <none> 56s elasticsearch-im-audit */15 * * * * False 0 <none> 56s elasticsearch-im-infra */15 * * * * False 0 <none> 56s
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE elasticsearch-im-app */15 * * * * False 0 <none> 56s elasticsearch-im-audit */15 * * * * False 0 <none> 56s elasticsearch-im-infra */15 * * * * False 0 <none> 56sCopy to Clipboard Copied! Toggle word wrap Toggle overflow Verify that the log store is updated to the correct version and the indices are
greenby entering the following command and observing the output:oc exec -c elasticsearch <any_es_pod_in_the_cluster> -- indices
$ oc exec -c elasticsearch <any_es_pod_in_the_cluster> -- indicesCopy to Clipboard Copied! Toggle word wrap Toggle overflow Verify that the output includes the
app-00000x,infra-00000x,audit-00000x,.securityindices:Example 6.1. Sample output with indices in a green status
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Verify that the log visualizer is updated to the correct version by entering the following command and observing the output:
oc get kibana kibana -o json
$ oc get kibana kibana -o jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow Verify that the output includes a Kibana pod with the
readystatus:Example 6.2. Sample output with a ready Kibana pod
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Chapter 7. Visualizing logs Copia collegamentoCollegamento copiato negli appunti!
7.1. About log visualization Copia collegamentoCollegamento copiato negli appunti!
You can visualize your log data in the OpenShift Container Platform web console, or the Kibana web console, depending on your deployed log storage solution. The Kibana console can be used with ElasticSearch log stores, and the OpenShift Container Platform web console can be used with the ElasticSearch log store or the LokiStack.
The Kibana web console is now deprecated is planned to be removed in a future logging release.
7.1.1. Configuring the log visualizer Copia collegamentoCollegamento copiato negli appunti!
You can configure which log visualizer type your logging uses by modifying the ClusterLogging custom resource (CR).
Prerequisites
- You have administrator permissions.
-
You have installed the OpenShift CLI (
oc). - You have installed the Red Hat OpenShift Logging Operator.
-
You have created a
ClusterLoggingCR.
If you want to use the OpenShift Container Platform web console for visualization, you must enable the logging Console Plugin. See the documentation about "Log visualization with the web console".
Procedure
Modify the
ClusterLoggingCRvisualizationspec:ClusterLoggingCR exampleCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- The type of visualizer you want to use for your logging. This can be either
kibanaorocp-console. The Kibana console is only compatible with deployments that use Elasticsearch log storage, while the OpenShift Container Platform console is only compatible with LokiStack deployments. - 2
- Optional configurations for the Kibana console.
- 3
- Optional configurations for the OpenShift Container Platform web console.
Apply the
ClusterLoggingCR by running the following command:oc apply -f <filename>.yaml
$ oc apply -f <filename>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
7.1.2. Viewing logs for a resource Copia collegamentoCollegamento copiato negli appunti!
Resource logs are a default feature that provides limited log viewing capability. You can view the logs for various resources, such as builds, deployments, and pods by using the OpenShift CLI (oc) and the web console.
To enhance your log retrieving and viewing experience, install the logging. The logging aggregates all the logs from your OpenShift Container Platform cluster, such as node system audit logs, application container logs, and infrastructure logs, into a dedicated log store. You can then query, discover, and visualize your log data through the Kibana console or the OpenShift Container Platform web console. Resource logs do not access the logging log store.
7.1.2.1. Viewing resource logs Copia collegamentoCollegamento copiato negli appunti!
You can view the log for various resources in the OpenShift CLI (oc) and web console. Logs read from the tail, or end, of the log.
Prerequisites
-
Access to the OpenShift CLI (
oc).
Procedure (UI)
In the OpenShift Container Platform console, navigate to Workloads → Pods or navigate to the pod through the resource you want to investigate.
NoteSome resources, such as builds, do not have pods to query directly. In such instances, you can locate the Logs link on the Details page for the resource.
- Select a project from the drop-down menu.
- Click the name of the pod you want to investigate.
- Click Logs.
Procedure (CLI)
View the log for a specific pod:
oc logs -f <pod_name> -c <container_name>
$ oc logs -f <pod_name> -c <container_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow where:
-f- Optional: Specifies that the output follows what is being written into the logs.
<pod_name>- Specifies the name of the pod.
<container_name>- Optional: Specifies the name of a container. When a pod has more than one container, you must specify the container name.
For example:
oc logs ruby-58cd97df55-mww7r
$ oc logs ruby-58cd97df55-mww7rCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc logs -f ruby-57f7f4855b-znl92 -c ruby
$ oc logs -f ruby-57f7f4855b-znl92 -c rubyCopy to Clipboard Copied! Toggle word wrap Toggle overflow The contents of log files are printed out.
View the log for a specific resource:
oc logs <object_type>/<resource_name>
$ oc logs <object_type>/<resource_name>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Specifies the resource type and name.
For example:
oc logs deployment/ruby
$ oc logs deployment/rubyCopy to Clipboard Copied! Toggle word wrap Toggle overflow The contents of log files are printed out.
7.2. Log visualization with the web console Copia collegamentoCollegamento copiato negli appunti!
You can use the OpenShift Container Platform web console to visualize log data by configuring the logging Console Plugin.
For information about configuring the plugin during the logging installation, see Installing the logging using the web console.
If you have already installed the logging and want to configure the plugin, use one of the following procedures.
7.2.1. Enabling the logging Console Plugin after you have installed the Red Hat OpenShift Logging Operator Copia collegamentoCollegamento copiato negli appunti!
You can enable the logging Console Plugin as part of the Red Hat OpenShift Logging Operator installation, but you can also enable the plugin if you have already installed the Red Hat OpenShift Logging Operator with the plugin disabled.
Prerequisites
- You have administrator permissions.
- You have installed the Red Hat OpenShift Logging Operator and selected Disabled for the Console plugin.
- You have access to the OpenShift Container Platform web console.
Procedure
- In the OpenShift Container Platform web console Administrator perspective, navigate to Operators → Installed Operators.
- Click Red Hat OpenShift Logging. This takes you to the Operator Details page.
- In the Details page, click Disabled for the Console plugin option.
- In the Console plugin enablement dialog, select Enable.
- Click Save.
- Verify that the Console plugin option now shows Enabled.
- The web console displays a pop-up window when changes have been applied. The window prompts you to reload the web console. Refresh the browser when you see the pop-up window to apply the changes.
7.2.2. Configuring the logging Console Plugin when you have the Elasticsearch log store and LokiStack installed Copia collegamentoCollegamento copiato negli appunti!
In logging version 5.8 and later, if the Elasticsearch log store is your default log store but you have also installed the LokiStack, you can enable the logging Console Plugin by using the following procedure.
Prerequisites
- You have administrator permissions.
- You have installed the Red Hat OpenShift Logging Operator, the OpenShift Elasticsearch Operator, and the Loki Operator.
-
You have installed the OpenShift CLI (
oc). -
You have created a
ClusterLoggingcustom resource (CR).
Procedure
Ensure that the logging Console Plugin is enabled by running the following command:
oc get consoles.operator.openshift.io cluster -o yaml |grep logging-view-plugin \ || oc patch consoles.operator.openshift.io cluster --type=merge \ --patch '{ "spec": { "plugins": ["logging-view-plugin"]}}'$ oc get consoles.operator.openshift.io cluster -o yaml |grep logging-view-plugin \ || oc patch consoles.operator.openshift.io cluster --type=merge \ --patch '{ "spec": { "plugins": ["logging-view-plugin"]}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow Add the
.metadata.annotations.logging.openshift.io/ocp-console-migration-target: lokistack-devannotation to theClusterLoggingCR, by running the following command:oc patch clusterlogging instance --type=merge --patch \ '{ "metadata": { "annotations": { "logging.openshift.io/ocp-console-migration-target": "lokistack-dev" }}}' \ -n openshift-logging$ oc patch clusterlogging instance --type=merge --patch \ '{ "metadata": { "annotations": { "logging.openshift.io/ocp-console-migration-target": "lokistack-dev" }}}' \ -n openshift-loggingCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
clusterlogging.logging.openshift.io/instance patched
clusterlogging.logging.openshift.io/instance patchedCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Verification
Verify that the annotation was added successfully, by running the following command and observing the output:
oc get clusterlogging instance \ -o=jsonpath='{.metadata.annotations.logging\.openshift\.io/ocp-console-migration-target}' \ -n openshift-logging$ oc get clusterlogging instance \ -o=jsonpath='{.metadata.annotations.logging\.openshift\.io/ocp-console-migration-target}' \ -n openshift-loggingCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
"lokistack-dev"
"lokistack-dev"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
The logging Console Plugin pod is now deployed. You can view logging data by navigating to the OpenShift Container Platform web console and viewing the Observe → Logs page.
7.3. Viewing cluster dashboards Copia collegamentoCollegamento copiato negli appunti!
The Logging/Elasticsearch Nodes and Openshift Logging dashboards in the OpenShift Container Platform web console contain in-depth details about your Elasticsearch instance and the individual Elasticsearch nodes that you can use to prevent and diagnose problems.
The OpenShift Logging dashboard contains charts that show details about your Elasticsearch instance at a cluster level, including cluster resources, garbage collection, shards in the cluster, and Fluentd statistics.
The Logging/Elasticsearch Nodes dashboard contains charts that show details about your Elasticsearch instance, many at node level, including details on indexing, shards, resources, and so forth.
7.3.1. Accessing the Elasticsearch and OpenShift Logging dashboards Copia collegamentoCollegamento copiato negli appunti!
You can view the Logging/Elasticsearch Nodes and OpenShift Logging dashboards in the OpenShift Container Platform web console.
Procedure
To launch the dashboards:
- In the OpenShift Container Platform web console, click Observe → Dashboards.
On the Dashboards page, select Logging/Elasticsearch Nodes or OpenShift Logging from the Dashboard menu.
For the Logging/Elasticsearch Nodes dashboard, you can select the Elasticsearch node you want to view and set the data resolution.
The appropriate dashboard is displayed, showing multiple charts of data.
- Optional: Select a different time range to display or refresh rate for the data from the Time Range and Refresh Interval menus.
For information on the dashboard charts, see About the OpenShift Logging dashboard and About the Logging/Elastisearch Nodes dashboard.
7.3.2. About the OpenShift Logging dashboard Copia collegamentoCollegamento copiato negli appunti!
The OpenShift Logging dashboard contains charts that show details about your Elasticsearch instance at a cluster-level that you can use to diagnose and anticipate problems.
| Metric | Description |
|---|---|
| Elastic Cluster Status | The current Elasticsearch status:
|
| Elastic Nodes | The total number of Elasticsearch nodes in the Elasticsearch instance. |
| Elastic Shards | The total number of Elasticsearch shards in the Elasticsearch instance. |
| Elastic Documents | The total number of Elasticsearch documents in the Elasticsearch instance. |
| Total Index Size on Disk | The total disk space that is being used for the Elasticsearch indices. |
| Elastic Pending Tasks | The total number of Elasticsearch changes that have not been completed, such as index creation, index mapping, shard allocation, or shard failure. |
| Elastic JVM GC time | The amount of time that the JVM spent executing Elasticsearch garbage collection operations in the cluster. |
| Elastic JVM GC Rate | The total number of times that JVM executed garbage activities per second. |
| Elastic Query/Fetch Latency Sum |
Fetch latency typically takes less time than query latency. If fetch latency is consistently increasing, it might indicate slow disks, data enrichment, or large requests with too many results. |
| Elastic Query Rate | The total queries executed against the Elasticsearch instance per second for each Elasticsearch node. |
| CPU | The amount of CPU used by Elasticsearch, Fluentd, and Kibana, shown for each component. |
| Elastic JVM Heap Used | The amount of JVM memory used. In a healthy cluster, the graph shows regular drops as memory is freed by JVM garbage collection. |
| Elasticsearch Disk Usage | The total disk space used by the Elasticsearch instance for each Elasticsearch node. |
| File Descriptors In Use | The total number of file descriptors used by Elasticsearch, Fluentd, and Kibana. |
| FluentD emit count | The total number of Fluentd messages per second for the Fluentd default output, and the retry count for the default output. |
| FluentD Buffer Usage | The percent of the Fluentd buffer that is being used for chunks. A full buffer might indicate that Fluentd is not able to process the number of logs received. |
| Elastic rx bytes | The total number of bytes that Elasticsearch has received from FluentD, the Elasticsearch nodes, and other sources. |
| Elastic Index Failure Rate | The total number of times per second that an Elasticsearch index fails. A high rate might indicate an issue with indexing. |
| FluentD Output Error Rate | The total number of times per second that FluentD is not able to output logs. |
7.3.3. Charts on the Logging/Elasticsearch nodes dashboard Copia collegamentoCollegamento copiato negli appunti!
The Logging/Elasticsearch Nodes dashboard contains charts that show details about your Elasticsearch instance, many at node-level, for further diagnostics.
- Elasticsearch status
- The Logging/Elasticsearch Nodes dashboard contains the following charts about the status of your Elasticsearch instance.
| Metric | Description |
|---|---|
| Cluster status | The cluster health status during the selected time period, using the Elasticsearch green, yellow, and red statuses:
|
| Cluster nodes | The total number of Elasticsearch nodes in the cluster. |
| Cluster data nodes | The number of Elasticsearch data nodes in the cluster. |
| Cluster pending tasks | The number of cluster state changes that are not finished and are waiting in a cluster queue, for example, index creation, index deletion, or shard allocation. A growing trend indicates that the cluster is not able to keep up with changes. |
- Elasticsearch cluster index shard status
- Each Elasticsearch index is a logical group of one or more shards, which are basic units of persisted data. There are two types of index shards: primary shards, and replica shards. When a document is indexed into an index, it is stored in one of its primary shards and copied into every replica of that shard. The number of primary shards is specified when the index is created, and the number cannot change during index lifetime. You can change the number of replica shards at any time.
The index shard can be in several states depending on its lifecycle phase or events occurring in the cluster. When the shard is able to perform search and indexing requests, the shard is active. If the shard cannot perform these requests, the shard is non–active. A shard might be non-active if the shard is initializing, reallocating, unassigned, and so forth.
Index shards consist of a number of smaller internal blocks, called index segments, which are physical representations of the data. An index segment is a relatively small, immutable Lucene index that is created when Lucene commits newly-indexed data. Lucene, a search library used by Elasticsearch, merges index segments into larger segments in the background to keep the total number of segments low. If the process of merging segments is slower than the speed at which new segments are created, it could indicate a problem.
When Lucene performs data operations, such as a search operation, Lucene performs the operation against the index segments in the relevant index. For that purpose, each segment contains specific data structures that are loaded in the memory and mapped. Index mapping can have a significant impact on the memory used by segment data structures.
The Logging/Elasticsearch Nodes dashboard contains the following charts about the Elasticsearch index shards.
| Metric | Description |
|---|---|
| Cluster active shards | The number of active primary shards and the total number of shards, including replicas, in the cluster. If the number of shards grows higher, the cluster performance can start degrading. |
| Cluster initializing shards | The number of non-active shards in the cluster. A non-active shard is one that is initializing, being reallocated to a different node, or is unassigned. A cluster typically has non–active shards for short periods. A growing number of non–active shards over longer periods could indicate a problem. |
| Cluster relocating shards | The number of shards that Elasticsearch is relocating to a new node. Elasticsearch relocates nodes for multiple reasons, such as high memory use on a node or after a new node is added to the cluster. |
| Cluster unassigned shards | The number of unassigned shards. Elasticsearch shards might be unassigned for reasons such as a new index being added or the failure of a node. |
- Elasticsearch node metrics
- Each Elasticsearch node has a finite amount of resources that can be used to process tasks. When all the resources are being used and Elasticsearch attempts to perform a new task, Elasticsearch puts the tasks into a queue until some resources become available.
The Logging/Elasticsearch Nodes dashboard contains the following charts about resource usage for a selected node and the number of tasks waiting in the Elasticsearch queue.
| Metric | Description |
|---|---|
| ThreadPool tasks | The number of waiting tasks in individual queues, shown by task type. A long–term accumulation of tasks in any queue could indicate node resource shortages or some other problem. |
| CPU usage | The amount of CPU being used by the selected Elasticsearch node as a percentage of the total CPU allocated to the host container. |
| Memory usage | The amount of memory being used by the selected Elasticsearch node. |
| Disk usage | The total disk space being used for index data and metadata on the selected Elasticsearch node. |
| Documents indexing rate | The rate that documents are indexed on the selected Elasticsearch node. |
| Indexing latency | The time taken to index the documents on the selected Elasticsearch node. Indexing latency can be affected by many factors, such as JVM Heap memory and overall load. A growing latency indicates a resource capacity shortage in the instance. |
| Search rate | The number of search requests run on the selected Elasticsearch node. |
| Search latency | The time taken to complete search requests on the selected Elasticsearch node. Search latency can be affected by many factors. A growing latency indicates a resource capacity shortage in the instance. |
| Documents count (with replicas) | The number of Elasticsearch documents stored on the selected Elasticsearch node, including documents stored in both the primary shards and replica shards that are allocated on the node. |
| Documents deleting rate | The number of Elasticsearch documents being deleted from any of the index shards that are allocated to the selected Elasticsearch node. |
| Documents merging rate | The number of Elasticsearch documents being merged in any of index shards that are allocated to the selected Elasticsearch node. |
- Elasticsearch node fielddata
- Fielddata is an Elasticsearch data structure that holds lists of terms in an index and is kept in the JVM Heap. Because fielddata building is an expensive operation, Elasticsearch caches the fielddata structures. Elasticsearch can evict a fielddata cache when the underlying index segment is deleted or merged, or if there is not enough JVM HEAP memory for all the fielddata caches.
The Logging/Elasticsearch Nodes dashboard contains the following charts about Elasticsearch fielddata.
| Metric | Description |
|---|---|
| Fielddata memory size | The amount of JVM Heap used for the fielddata cache on the selected Elasticsearch node. |
| Fielddata evictions | The number of fielddata structures that were deleted from the selected Elasticsearch node. |
- Elasticsearch node query cache
- If the data stored in the index does not change, search query results are cached in a node-level query cache for reuse by Elasticsearch.
The Logging/Elasticsearch Nodes dashboard contains the following charts about the Elasticsearch node query cache.
| Metric | Description |
|---|---|
| Query cache size | The total amount of memory used for the query cache for all the shards allocated to the selected Elasticsearch node. |
| Query cache evictions | The number of query cache evictions on the selected Elasticsearch node. |
| Query cache hits | The number of query cache hits on the selected Elasticsearch node. |
| Query cache misses | The number of query cache misses on the selected Elasticsearch node. |
- Elasticsearch index throttling
- When indexing documents, Elasticsearch stores the documents in index segments, which are physical representations of the data. At the same time, Elasticsearch periodically merges smaller segments into a larger segment as a way to optimize resource use. If the indexing is faster then the ability to merge segments, the merge process does not complete quickly enough, which can lead to issues with searches and performance. To prevent this situation, Elasticsearch throttles indexing, typically by reducing the number of threads allocated to indexing down to a single thread.
The Logging/Elasticsearch Nodes dashboard contains the following charts about Elasticsearch index throttling.
| Metric | Description |
|---|---|
| Indexing throttling | The amount of time that Elasticsearch has been throttling the indexing operations on the selected Elasticsearch node. |
| Merging throttling | The amount of time that Elasticsearch has been throttling the segment merge operations on the selected Elasticsearch node. |
- Node JVM Heap statistics
- The Logging/Elasticsearch Nodes dashboard contains the following charts about JVM Heap operations.
| Metric | Description |
|---|---|
| Heap used | The amount of the total allocated JVM Heap space that is used on the selected Elasticsearch node. |
| GC count | The number of garbage collection operations that have been run on the selected Elasticsearch node, by old and young garbage collection. |
| GC time | The amount of time that the JVM spent running garbage collection operations on the selected Elasticsearch node, by old and young garbage collection. |
7.4. Log visualization with Kibana Copia collegamentoCollegamento copiato negli appunti!
If you are using the ElasticSearch log store, you can use the Kibana console to visualize collected log data.
Using Kibana, you can do the following with your data:
- Search and browse the data using the Discover tab.
- Chart and map the data using the Visualize tab.
- Create and view custom dashboards using the Dashboard tab.
Use and configuration of the Kibana interface is beyond the scope of this documentation. For more information about using the interface, see the Kibana documentation.
The audit logs are not stored in the internal OpenShift Container Platform Elasticsearch instance by default. To view the audit logs in Kibana, you must use the Log Forwarding API to configure a pipeline that uses the default output for audit logs.
7.4.1. Defining Kibana index patterns Copia collegamentoCollegamento copiato negli appunti!
An index pattern defines the Elasticsearch indices that you want to visualize. To explore and visualize data in Kibana, you must create an index pattern.
Prerequisites
A user must have the
cluster-adminrole, thecluster-readerrole, or both roles to view the infra and audit indices in Kibana. The defaultkubeadminuser has proper permissions to view these indices.If you can view the pods and logs in the
default,kube-andopenshift-projects, you should be able to access these indices. You can use the following command to check if the current user has appropriate permissions:oc auth can-i get pods --subresource log -n <project>
$ oc auth can-i get pods --subresource log -n <project>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
yes
yesCopy to Clipboard Copied! Toggle word wrap Toggle overflow NoteThe audit logs are not stored in the internal OpenShift Container Platform Elasticsearch instance by default. To view the audit logs in Kibana, you must use the Log Forwarding API to configure a pipeline that uses the
defaultoutput for audit logs.- Elasticsearch documents must be indexed before you can create index patterns. This is done automatically, but it might take a few minutes in a new or updated cluster.
Procedure
To define index patterns and create visualizations in Kibana:
-
In the OpenShift Container Platform console, click the Application Launcher
and select Logging.
Create your Kibana index patterns by clicking Management → Index Patterns → Create index pattern:
-
Each user must manually create index patterns when logging into Kibana the first time to see logs for their projects. Users must create an index pattern named
appand use the@timestamptime field to view their container logs. -
Each admin user must create index patterns when logged into Kibana the first time for the
app,infra, andauditindices using the@timestamptime field.
-
Each user must manually create index patterns when logging into Kibana the first time to see logs for their projects. Users must create an index pattern named
- Create Kibana Visualizations from the new index patterns.
7.4.2. Viewing cluster logs in Kibana Copia collegamentoCollegamento copiato negli appunti!
You view cluster logs in the Kibana web console. The methods for viewing and visualizing your data in Kibana that are beyond the scope of this documentation. For more information, refer to the Kibana documentation.
Prerequisites
- The Red Hat OpenShift Logging and Elasticsearch Operators must be installed.
- Kibana index patterns must exist.
A user must have the
cluster-adminrole, thecluster-readerrole, or both roles to view the infra and audit indices in Kibana. The defaultkubeadminuser has proper permissions to view these indices.If you can view the pods and logs in the
default,kube-andopenshift-projects, you should be able to access these indices. You can use the following command to check if the current user has appropriate permissions:oc auth can-i get pods --subresource log -n <project>
$ oc auth can-i get pods --subresource log -n <project>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
yes
yesCopy to Clipboard Copied! Toggle word wrap Toggle overflow NoteThe audit logs are not stored in the internal OpenShift Container Platform Elasticsearch instance by default. To view the audit logs in Kibana, you must use the Log Forwarding API to configure a pipeline that uses the
defaultoutput for audit logs.
Procedure
To view logs in Kibana:
-
In the OpenShift Container Platform console, click the Application Launcher
and select Logging.
Log in using the same credentials you use to log in to the OpenShift Container Platform console.
The Kibana interface launches.
- In Kibana, click Discover.
Select the index pattern you created from the drop-down menu in the top-left corner: app, audit, or infra.
The log data displays as time-stamped documents.
- Expand one of the time-stamped documents.
Click the JSON tab to display the log entry for that document.
Example 7.1. Sample infrastructure log entry in Kibana
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.4.3. Configuring Kibana Copia collegamentoCollegamento copiato negli appunti!
You can configure using the Kibana console by modifying the ClusterLogging custom resource (CR).
7.4.3.1. Configuring CPU and memory limits Copia collegamentoCollegamento copiato negli appunti!
The logging components allow for adjustments to both the CPU and memory limits.
Procedure
Edit the
ClusterLoggingcustom resource (CR) in theopenshift-loggingproject:oc -n openshift-logging edit ClusterLogging instance
$ oc -n openshift-logging edit ClusterLogging instanceCopy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Specify the CPU and memory limits and requests for the log store as needed. For Elasticsearch, you must adjust both the request value and the limit value.
- 2 3
- Specify the CPU and memory limits and requests for the log visualizer as needed.
- 4
- Specify the CPU and memory limits and requests for the log collector as needed.
7.4.3.2. Scaling redundancy for the log visualizer nodes Copia collegamentoCollegamento copiato negli appunti!
You can scale the pod that hosts the log visualizer for redundancy.
Procedure
Edit the
ClusterLoggingcustom resource (CR) in theopenshift-loggingproject:oc -n openshift-logging edit ClusterLogging instance
$ oc -n openshift-logging edit ClusterLogging instanceCopy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Specify the number of Kibana nodes.
Chapter 8. Configuring your Logging deployment Copia collegamentoCollegamento copiato negli appunti!
8.1. Configuring CPU and memory limits for logging components Copia collegamentoCollegamento copiato negli appunti!
You can configure both the CPU and memory limits for each of the logging components as needed.
8.1.1. Configuring CPU and memory limits Copia collegamentoCollegamento copiato negli appunti!
The logging components allow for adjustments to both the CPU and memory limits.
Procedure
Edit the
ClusterLoggingcustom resource (CR) in theopenshift-loggingproject:oc -n openshift-logging edit ClusterLogging instance
$ oc -n openshift-logging edit ClusterLogging instanceCopy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Specify the CPU and memory limits and requests for the log store as needed. For Elasticsearch, you must adjust both the request value and the limit value.
- 2 3
- Specify the CPU and memory limits and requests for the log visualizer as needed.
- 4
- Specify the CPU and memory limits and requests for the log collector as needed.
8.2. Configuring systemd-journald and Fluentd Copia collegamentoCollegamento copiato negli appunti!
Because Fluentd reads from the journal, and the journal default settings are very low, journal entries can be lost because the journal cannot keep up with the logging rate from system services.
We recommend setting RateLimitIntervalSec=30s and RateLimitBurst=10000 (or even higher if necessary) to prevent the journal from losing entries.
8.2.1. Configuring systemd-journald for OpenShift Logging Copia collegamentoCollegamento copiato negli appunti!
As you scale up your project, the default logging environment might need some adjustments.
For example, if you are missing logs, you might have to increase the rate limits for journald. You can adjust the number of messages to retain for a specified period of time to ensure that OpenShift Logging does not use excessive resources without dropping logs.
You can also determine if you want the logs compressed, how long to retain logs, how or if the logs are stored, and other settings.
Procedure
Create a Butane config file,
40-worker-custom-journald.bu, that includes an/etc/systemd/journald.conffile with the required settings.NoteThe Butane version you specify in the config file should match the OpenShift Container Platform version and always ends in
0. For example,4.12.0. See "Creating machine configs with Butane" for information about Butane.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Set the permissions for the
journald.conffile. It is recommended to set0644permissions. - 2
- Specify whether you want logs compressed before they are written to the file system. Specify
yesto compress the message ornoto not compress. The default isyes. - 3
- Configure whether to forward log messages. Defaults to
nofor each. Specify:-
ForwardToConsoleto forward logs to the system console. -
ForwardToKMsgto forward logs to the kernel log buffer. -
ForwardToSyslogto forward to a syslog daemon. -
ForwardToWallto forward messages as wall messages to all logged-in users.
-
- 4
- Specify the maximum time to store journal entries. Enter a number to specify seconds. Or include a unit: "year", "month", "week", "day", "h" or "m". Enter
0to disable. The default is1month. - 5
- Configure rate limiting. If more logs are received than what is specified in
RateLimitBurstduring the time interval defined byRateLimitIntervalSec, all further messages within the interval are dropped until the interval is over. It is recommended to setRateLimitIntervalSec=30sandRateLimitBurst=10000, which are the defaults. - 6
- Specify how logs are stored. The default is
persistent:-
volatileto store logs in memory in/run/log/journal/. These logs are lost after rebooting. -
persistentto store logs to disk in/var/log/journal/. systemd creates the directory if it does not exist. -
autoto store logs in/var/log/journal/if the directory exists. If it does not exist, systemd temporarily stores logs in/run/systemd/journal. -
noneto not store logs. systemd drops all logs.
-
- 7
- Specify the timeout before synchronizing journal files to disk for ERR, WARNING, NOTICE, INFO, and DEBUG logs. systemd immediately syncs after receiving a CRIT, ALERT, or EMERG log. The default is
1s. - 8
- Specify the maximum size the journal can use. The default is
8G. - 9
- Specify how much disk space systemd must leave free. The default is
20%. - 10
- Specify the maximum size for individual journal files stored persistently in
/var/log/journal. The default is10M.NoteIf you are removing the rate limit, you might see increased CPU utilization on the system logging daemons as it processes any messages that would have previously been throttled.
For more information on systemd settings, see https://www.freedesktop.org/software/systemd/man/journald.conf.html. The default settings listed on that page might not apply to OpenShift Container Platform.
Use Butane to generate a
MachineConfigobject file,40-worker-custom-journald.yaml, containing the configuration to be delivered to the nodes:butane 40-worker-custom-journald.bu -o 40-worker-custom-journald.yaml
$ butane 40-worker-custom-journald.bu -o 40-worker-custom-journald.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Apply the machine config. For example:
oc apply -f 40-worker-custom-journald.yaml
$ oc apply -f 40-worker-custom-journald.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow The controller detects the new
MachineConfigobject and generates a newrendered-worker-<hash>version.Monitor the status of the rollout of the new rendered configuration to each node:
oc describe machineconfigpool/worker
$ oc describe machineconfigpool/workerCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Chapter 9. Log collection and forwarding Copia collegamentoCollegamento copiato negli appunti!
9.1. About log collection and forwarding Copia collegamentoCollegamento copiato negli appunti!
The Red Hat OpenShift Logging Operator deploys a collector based on the ClusterLogForwarder resource specification. There are two collector options supported by this Operator: the legacy Fluentd collector, and the Vector collector.
Fluentd is deprecated and is planned to be removed in a future release. Red Hat provides bug fixes and support for this feature during the current release lifecycle, but this feature no longer receives enhancements. As an alternative to Fluentd, you can use Vector instead.
9.1.1. Log collection Copia collegamentoCollegamento copiato negli appunti!
The log collector is a daemon set that deploys pods to each OpenShift Container Platform node to collect container and node logs.
By default, the log collector uses the following sources:
- System and infrastructure logs generated by journald log messages from the operating system, the container runtime, and OpenShift Container Platform.
-
/var/log/containers/*.logfor all container logs.
If you configure the log collector to collect audit logs, it collects them from /var/log/audit/audit.log.
The log collector collects the logs from these sources and forwards them internally or externally depending on your logging configuration.
9.1.1.1. Log collector types Copia collegamentoCollegamento copiato negli appunti!
Vector is a log collector offered as an alternative to Fluentd for the logging.
You can configure which logging collector type your cluster uses by modifying the ClusterLogging custom resource (CR) collection spec:
Example ClusterLogging CR that configures Vector as the collector
9.1.1.2. Log collection limitations Copia collegamentoCollegamento copiato negli appunti!
The container runtimes provide minimal information to identify the source of log messages: project, pod name, and container ID. This information is not sufficient to uniquely identify the source of the logs. If a pod with a given name and project is deleted before the log collector begins processing its logs, information from the API server, such as labels and annotations, might not be available. There might not be a way to distinguish the log messages from a similarly named pod and project or trace the logs to their source. This limitation means that log collection and normalization are considered best effort.
The available container runtimes provide minimal information to identify the source of log messages and do not guarantee unique individual log messages or that these messages can be traced to their source.
9.1.1.3. Log collector features by type Copia collegamentoCollegamento copiato negli appunti!
| Feature | Fluentd | Vector |
|---|---|---|
| App container logs | ✓ | ✓ |
| App-specific routing | ✓ | ✓ |
| App-specific routing by namespace | ✓ | ✓ |
| Infra container logs | ✓ | ✓ |
| Infra journal logs | ✓ | ✓ |
| Kube API audit logs | ✓ | ✓ |
| OpenShift API audit logs | ✓ | ✓ |
| Open Virtual Network (OVN) audit logs | ✓ | ✓ |
| Feature | Fluentd | Vector |
|---|---|---|
| Elasticsearch certificates | ✓ | ✓ |
| Elasticsearch username / password | ✓ | ✓ |
| Cloudwatch keys | ✓ | ✓ |
| Cloudwatch STS | ✓ | ✓ |
| Kafka certificates | ✓ | ✓ |
| Kafka username / password | ✓ | ✓ |
| Kafka SASL | ✓ | ✓ |
| Loki bearer token | ✓ | ✓ |
| Feature | Fluentd | Vector |
|---|---|---|
| Viaq data model - app | ✓ | ✓ |
| Viaq data model - infra | ✓ | ✓ |
| Viaq data model - infra(journal) | ✓ | ✓ |
| Viaq data model - Linux audit | ✓ | ✓ |
| Viaq data model - kube-apiserver audit | ✓ | ✓ |
| Viaq data model - OpenShift API audit | ✓ | ✓ |
| Viaq data model - OVN | ✓ | ✓ |
| Loglevel Normalization | ✓ | ✓ |
| JSON parsing | ✓ | ✓ |
| Structured Index | ✓ | ✓ |
| Multiline error detection | ✓ | ✓ |
| Multicontainer / split indices | ✓ | ✓ |
| Flatten labels | ✓ | ✓ |
| CLF static labels | ✓ | ✓ |
| Feature | Fluentd | Vector |
|---|---|---|
| Fluentd readlinelimit | ✓ | |
| Fluentd buffer | ✓ | |
| - chunklimitsize | ✓ | |
| - totallimitsize | ✓ | |
| - overflowaction | ✓ | |
| - flushthreadcount | ✓ | |
| - flushmode | ✓ | |
| - flushinterval | ✓ | |
| - retrywait | ✓ | |
| - retrytype | ✓ | |
| - retrymaxinterval | ✓ | |
| - retrytimeout | ✓ |
| Feature | Fluentd | Vector |
|---|---|---|
| Metrics | ✓ | ✓ |
| Dashboard | ✓ | ✓ |
| Alerts | ✓ | ✓ |
| Feature | Fluentd | Vector |
|---|---|---|
| Global proxy support | ✓ | ✓ |
| x86 support | ✓ | ✓ |
| ARM support | ✓ | ✓ |
| IBM Power support | ✓ | ✓ |
| IBM Z support | ✓ | ✓ |
| IPv6 support | ✓ | ✓ |
| Log event buffering | ✓ | |
| Disconnected Cluster | ✓ | ✓ |
9.1.1.4. Collector outputs Copia collegamentoCollegamento copiato negli appunti!
The following collector outputs are supported:
| Feature | Fluentd | Vector |
|---|---|---|
| Elasticsearch v6-v8 | ✓ | ✓ |
| Fluent forward | ✓ | |
| Syslog RFC3164 | ✓ | ✓ (Logging 5.7+) |
| Syslog RFC5424 | ✓ | ✓ (Logging 5.7+) |
| Kafka | ✓ | ✓ |
| Cloudwatch | ✓ | ✓ |
| Cloudwatch STS | ✓ | ✓ |
| Loki | ✓ | ✓ |
| HTTP | ✓ | ✓ (Logging 5.7+) |
| Google Cloud Logging | ✓ | ✓ |
| Splunk | ✓ (Logging 5.6+) |
9.1.2. Log forwarding Copia collegamentoCollegamento copiato negli appunti!
Administrators can create ClusterLogForwarder resources that specify which logs are collected, how they are transformed, and where they are forwarded to.
ClusterLogForwarder resources can be used up to forward container, infrastructure, and audit logs to specific endpoints within or outside of a cluster. Transport Layer Security (TLS) is supported so that log forwarders can be configured to send logs securely.
Administrators can also authorize RBAC permissions that define which service accounts and users can access and forward which types of logs.
9.1.2.1. Log forwarding implementations Copia collegamentoCollegamento copiato negli appunti!
There are two log forwarding implementations available: the legacy implementation, and the multi log forwarder feature.
Only the Vector collector is supported for use with the multi log forwarder feature. The Fluentd collector can only be used with legacy implementations.
9.1.2.1.1. Legacy implementation Copia collegamentoCollegamento copiato negli appunti!
In legacy implementations, you can only use one log forwarder in your cluster. The ClusterLogForwarder resource in this mode must be named instance, and must be created in the openshift-logging namespace. The ClusterLogForwarder resource also requires a corresponding ClusterLogging resource named instance in the openshift-logging namespace.
9.1.2.1.2. Multi log forwarder feature Copia collegamentoCollegamento copiato negli appunti!
The multi log forwarder feature is available in logging 5.8 and later, and provides the following functionality:
- Administrators can control which users are allowed to define log collection and which logs they are allowed to collect.
- Users who have the required permissions are able to specify additional log collection configurations.
- Administrators who are migrating from the deprecated Fluentd collector to the Vector collector can deploy a new log forwarder separately from their existing deployment. The existing and new log forwarders can operate simultaneously while workloads are being migrated.
In multi log forwarder implementations, you are not required to create a corresponding ClusterLogging resource for your ClusterLogForwarder resource. You can create multiple ClusterLogForwarder resources using any name, in any namespace, with the following exceptions:
-
You cannot create a
ClusterLogForwarderresource namedinstancein theopenshift-loggingnamespace, because this is reserved for a log forwarder that supports the legacy workflow using the Fluentd collector. -
You cannot create a
ClusterLogForwarderresource namedcollectorin theopenshift-loggingnamespace, because this is reserved for the collector.
9.1.2.2. Enabling the multi log forwarder feature for a cluster Copia collegamentoCollegamento copiato negli appunti!
To use the multi log forwarder feature, you must create a service account and cluster role bindings for that service account. You can then reference the service account in the ClusterLogForwarder resource to control access permissions.
In order to support multi log forwarding in additional namespaces other than the openshift-logging namespace, you must update the Red Hat OpenShift Logging Operator to watch all namespaces. This functionality is supported by default in new Red Hat OpenShift Logging Operator version 5.8 installations.
9.1.2.2.1. Authorizing log collection RBAC permissions Copia collegamentoCollegamento copiato negli appunti!
In logging 5.8 and later, the Red Hat OpenShift Logging Operator provides collect-audit-logs, collect-application-logs, and collect-infrastructure-logs cluster roles, which enable the collector to collect audit logs, application logs, and infrastructure logs respectively.
You can authorize RBAC permissions for log collection by binding the required cluster roles to a service account.
Prerequisites
-
The Red Hat OpenShift Logging Operator is installed in the
openshift-loggingnamespace. - You have administrator permissions.
Procedure
- Create a service account for the collector. If you want to write logs to storage that requires a token for authentication, you must include a token in the service account.
Bind the appropriate cluster roles to the service account:
Example binding command
oc adm policy add-cluster-role-to-user <cluster_role_name> system:serviceaccount:<namespace_name>:<service_account_name>
$ oc adm policy add-cluster-role-to-user <cluster_role_name> system:serviceaccount:<namespace_name>:<service_account_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.2. Log output types Copia collegamentoCollegamento copiato negli appunti!
Outputs define the destination where logs are sent to from a log forwarder. You can configure multiple types of outputs in the ClusterLogForwarder custom resource (CR) to send logs to servers that support different protocols.
9.2.1. Supported log forwarding outputs Copia collegamentoCollegamento copiato negli appunti!
Outputs can be any of the following types:
| Output type | Protocol | Tested with | Logging versions | Supported collector type |
|---|---|---|---|---|
| Elasticsearch v6 | HTTP 1.1 | 6.8.1, 6.8.23 | 5.6+ | Fluentd, Vector |
| Elasticsearch v7 | HTTP 1.1 | 7.12.2, 7.17.7, 7.10.1 | 5.6+ | Fluentd, Vector |
| Elasticsearch v8 | HTTP 1.1 | 8.4.3, 8.6.1 | 5.6+ | Fluentd [1], Vector |
| Fluent Forward | Fluentd forward v1 | Fluentd 1.14.6, Logstash 7.10.1, Fluentd 1.14.5 | 5.4+ | Fluentd |
| Google Cloud Logging | REST over HTTPS | Latest | 5.7+ | Vector |
| HTTP | HTTP 1.1 | Fluentd 1.14.6, Vector 0.21 | 5.7+ | Fluentd, Vector |
| Kafka | Kafka 0.11 | Kafka 2.4.1, 2.7.0, 3.3.1 | 5.4+ | Fluentd, Vector |
| Loki | REST over HTTP and HTTPS | 2.3.0, 2.5.0, 2.7, 2.2.1 | 5.4+ | Fluentd, Vector |
| Splunk | HEC | 8.2.9, 9.0.0 | 5.7+ | Vector |
| Syslog | RFC3164, RFC5424 | Rsyslog 8.37.0-9.el7, rsyslog-8.39.0 | 5.4+ | Fluentd, Vector [2] |
| Amazon CloudWatch | REST over HTTPS | Latest | 5.4+ | Fluentd, Vector |
- Fluentd does not support Elasticsearch 8 in the logging version 5.6.2.
- Vector supports Syslog in the logging version 5.7 and higher.
9.2.2. Output type descriptions Copia collegamentoCollegamento copiato negli appunti!
defaultThe on-cluster, Red Hat managed log store. You are not required to configure the default output.
NoteIf you configure a
defaultoutput, you receive an error message, because thedefaultoutput name is reserved for referencing the on-cluster, Red Hat managed log store.loki- Loki, a horizontally scalable, highly available, multi-tenant log aggregation system.
kafka-
A Kafka broker. The
kafkaoutput can use a TCP or TLS connection. elasticsearch-
An external Elasticsearch instance. The
elasticsearchoutput can use a TLS connection. fluentdForwardAn external log aggregation solution that supports Fluentd. This option uses the Fluentd
forwardprotocols. ThefluentForwardoutput can use a TCP or TLS connection and supports shared-key authentication by providing ashared_keyfield in a secret. Shared-key authentication can be used with or without TLS.ImportantThe
fluentdForwardoutput is only supported if you are using the Fluentd collector. It is not supported if you are using the Vector collector. If you are using the Vector collector, you can forward logs to Fluentd by using thehttpoutput.syslog-
An external log aggregation solution that supports the syslog RFC3164 or RFC5424 protocols. The
syslogoutput can use a UDP, TCP, or TLS connection. cloudwatch- Amazon CloudWatch, a monitoring and log storage service hosted by Amazon Web Services (AWS).
9.3. Enabling JSON log forwarding Copia collegamentoCollegamento copiato negli appunti!
You can configure the Log Forwarding API to parse JSON strings into a structured object.
9.3.1. Parsing JSON logs Copia collegamentoCollegamento copiato negli appunti!
You can use a ClusterLogForwarder object to parse JSON logs into a structured object and forward them to a supported output.
To illustrate how this works, suppose that you have the following structured JSON log entry:
Example structured JSON log entry
{"level":"info","name":"fred","home":"bedrock"}
{"level":"info","name":"fred","home":"bedrock"}
To enable parsing JSON log, you add parse: json to a pipeline in the ClusterLogForwarder CR, as shown in the following example:
Example snippet showing parse: json
pipelines: - inputRefs: [ application ] outputRefs: myFluentd parse: json
pipelines:
- inputRefs: [ application ]
outputRefs: myFluentd
parse: json
When you enable parsing JSON logs by using parse: json, the CR copies the JSON-structured log entry in a structured field, as shown in the following example:
Example structured output containing the structured JSON log entry
{"structured": { "level": "info", "name": "fred", "home": "bedrock" },
"more fields..."}
{"structured": { "level": "info", "name": "fred", "home": "bedrock" },
"more fields..."}
If the log entry does not contain valid structured JSON, the structured field is absent.
9.3.2. Configuring JSON log data for Elasticsearch Copia collegamentoCollegamento copiato negli appunti!
If your JSON logs follow more than one schema, storing them in a single index might cause type conflicts and cardinality problems. To avoid that, you must configure the ClusterLogForwarder custom resource (CR) to group each schema into a single output definition. This way, each schema is forwarded to a separate index.
If you forward JSON logs to the default Elasticsearch instance managed by OpenShift Logging, it generates new indices based on your configuration. To avoid performance issues associated with having too many indices, consider keeping the number of possible schemas low by standardizing to common schemas.
Structure types
You can use the following structure types in the ClusterLogForwarder CR to construct index names for the Elasticsearch log store:
structuredTypeKeyis the name of a message field. The value of that field is used to construct the index name.-
kubernetes.labels.<key>is the Kubernetes pod label whose value is used to construct the index name. -
openshift.labels.<key>is thepipeline.label.<key>element in theClusterLogForwarderCR whose value is used to construct the index name. -
kubernetes.container_nameuses the container name to construct the index name.
-
-
structuredTypeName: If thestructuredTypeKeyfield is not set or its key is not present, thestructuredTypeNamevalue is used as the structured type. When you use both thestructuredTypeKeyfield and thestructuredTypeNamefield together, thestructuredTypeNamevalue provides a fallback index name if the key in thestructuredTypeKeyfield is missing from the JSON log data.
Although you can set the value of structuredTypeKey to any field shown in the "Log Record Fields" topic, the most useful fields are shown in the preceding list of structure types.
A structuredTypeKey: kubernetes.labels.<key> example
Suppose the following:
- Your cluster is running application pods that produce JSON logs in two different formats, "apache" and "google".
-
The user labels these application pods with
logFormat=apacheandlogFormat=google. -
You use the following snippet in your
ClusterLogForwarderCR YAML file.
In that case, the following structured log record goes to the app-apache-write index:
{
"structured":{"name":"fred","home":"bedrock"},
"kubernetes":{"labels":{"logFormat": "apache", ...}}
}
{
"structured":{"name":"fred","home":"bedrock"},
"kubernetes":{"labels":{"logFormat": "apache", ...}}
}
And the following structured log record goes to the app-google-write index:
{
"structured":{"name":"wilma","home":"bedrock"},
"kubernetes":{"labels":{"logFormat": "google", ...}}
}
{
"structured":{"name":"wilma","home":"bedrock"},
"kubernetes":{"labels":{"logFormat": "google", ...}}
}
A structuredTypeKey: openshift.labels.<key> example
Suppose that you use the following snippet in your ClusterLogForwarder CR YAML file.
In that case, the following structured log record goes to the app-myValue-write index:
{
"structured":{"name":"fred","home":"bedrock"},
"openshift":{"labels":{"myLabel": "myValue", ...}}
}
{
"structured":{"name":"fred","home":"bedrock"},
"openshift":{"labels":{"myLabel": "myValue", ...}}
}
Additional considerations
- The Elasticsearch index for structured records is formed by prepending "app-" to the structured type and appending "-write".
- Unstructured records are not sent to the structured index. They are indexed as usual in the application, infrastructure, or audit indices.
-
If there is no non-empty structured type, forward an unstructured record with no
structuredfield.
It is important not to overload Elasticsearch with too many indices. Only use distinct structured types for distinct log formats, not for each application or namespace. For example, most Apache applications use the same JSON log format and structured type, such as LogApache.
9.3.3. Forwarding JSON logs to the Elasticsearch log store Copia collegamentoCollegamento copiato negli appunti!
For an Elasticsearch log store, if your JSON log entries follow different schemas, configure the ClusterLogForwarder custom resource (CR) to group each JSON schema into a single output definition. This way, Elasticsearch uses a separate index for each schema.
Because forwarding different schemas to the same index can cause type conflicts and cardinality problems, you must perform this configuration before you forward data to the Elasticsearch store.
To avoid performance issues associated with having too many indices, consider keeping the number of possible schemas low by standardizing to common schemas.
Procedure
Add the following snippet to your
ClusterLogForwarderCR YAML file.Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
Use
structuredTypeKeyfield to specify one of the log record fields. Use
structuredTypeNamefield to specify a name.ImportantTo parse JSON logs, you must set both the
structuredTypeKeyandstructuredTypeNamefields.-
For
inputRefs, specify which log types to forward by using that pipeline, such asapplication,infrastructure, oraudit. -
Add the
parse: jsonelement to pipelines. Create the CR object:
oc create -f <filename>.yaml
$ oc create -f <filename>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow The Red Hat OpenShift Logging Operator redeploys the collector pods. However, if they do not redeploy, delete the collector pods to force them to redeploy.
oc delete pod --selector logging-infra=collector
$ oc delete pod --selector logging-infra=collectorCopy to Clipboard Copied! Toggle word wrap Toggle overflow
9.3.4. Forwarding JSON logs from containers in the same pod to separate indices Copia collegamentoCollegamento copiato negli appunti!
You can forward structured logs from different containers within the same pod to different indices. To use this feature, you must configure the pipeline with multi-container support and annotate the pods. Logs are written to indices with a prefix of app-. It is recommended that Elasticsearch be configured with aliases to accommodate this.
JSON formatting of logs varies by application. Because creating too many indices impacts performance, limit your use of this feature to creating indices for logs that have incompatible JSON formats. Use queries to separate logs from different namespaces, or applications with compatible JSON formats.
Prerequisites
- Logging for Red Hat OpenShift: 5.5
Procedure
Create or edit a YAML file that defines the
ClusterLogForwarderCR object:Copy to Clipboard Copied! Toggle word wrap Toggle overflow Create or edit a YAML file that defines the
PodCR object:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
This configuration might significantly increase the number of shards on the cluster.
Additional resources
9.4. Configuring log forwarding Copia collegamentoCollegamento copiato negli appunti!
In a logging deployment, container and infrastructure logs are forwarded to the internal log store defined in the ClusterLogging custom resource (CR) by default.
Audit logs are not forwarded to the internal log store by default because this does not provide secure storage. You are responsible for ensuring that the system to which you forward audit logs is compliant with your organizational and governmental regulations, and is properly secured.
If this default configuration meets your needs, you do not need to configure a ClusterLogForwarder CR. If a ClusterLogForwarder CR exists, logs are not forwarded to the internal log store unless a pipeline is defined that contains the default output.
9.4.1. About forwarding logs to third-party systems Copia collegamentoCollegamento copiato negli appunti!
To send logs to specific endpoints inside and outside your OpenShift Container Platform cluster, you specify a combination of outputs and pipelines in a ClusterLogForwarder custom resource (CR). You can also use inputs to forward the application logs associated with a specific project to an endpoint. Authentication is provided by a Kubernetes Secret object.
- pipeline
Defines simple routing from one log type to one or more outputs, or which logs you want to send. The log types are one of the following:
-
application. Container logs generated by user applications running in the cluster, except infrastructure container applications. -
infrastructure. Container logs from pods that run in theopenshift*,kube*, ordefaultprojects and journal logs sourced from node file system. -
audit. Audit logs generated by the node audit system,auditd, Kubernetes API server, OpenShift API server, and OVN network.
You can add labels to outbound log messages by using
key:valuepairs in the pipeline. For example, you might add a label to messages that are forwarded to other data centers or label the logs by type. Labels that are added to objects are also forwarded with the log message.-
- input
Forwards the application logs associated with a specific project to a pipeline.
In the pipeline, you define which log types to forward using an
inputRefparameter and where to forward the logs to using anoutputRefparameter.- Secret
-
A
key:value mapthat contains confidential data such as user credentials.
Note the following:
-
If you do not define a pipeline for a log type, the logs of the undefined types are dropped. For example, if you specify a pipeline for the
applicationandaudittypes, but do not specify a pipeline for theinfrastructuretype,infrastructurelogs are dropped. -
You can use multiple types of outputs in the
ClusterLogForwardercustom resource (CR) to send logs to servers that support different protocols.
The following example forwards the audit logs to a secure external Elasticsearch instance, the infrastructure logs to an insecure external Elasticsearch instance, the application logs to a Kafka broker, and the application logs from the my-apps-logs project to the internal Elasticsearch instance.
Sample log forwarding outputs and pipelines
- 1
- In legacy implementations, the CR name must be
instance. In multi log forwarder implementations, you can use any name. - 2
- In legacy implementations, the CR namespace must be
openshift-logging. In multi log forwarder implementations, you can use any namespace. - 3
- The name of your service account. The service account is only required in multi log forwarder implementations if the log forwarder is not deployed in the
openshift-loggingnamespace. - 4
- Configuration for an secure Elasticsearch output using a secret with a secure URL.
- A name to describe the output.
-
The type of output:
elasticsearch. - The secure URL and port of the Elasticsearch instance as a valid absolute URL, including the prefix.
-
The secret required by the endpoint for TLS communication. The secret must exist in the
openshift-loggingproject.
- 5
- Configuration for an insecure Elasticsearch output:
- A name to describe the output.
-
The type of output:
elasticsearch. - The insecure URL and port of the Elasticsearch instance as a valid absolute URL, including the prefix.
- 6
- Configuration for a Kafka output using a client-authenticated TLS communication over a secure URL:
- A name to describe the output.
-
The type of output:
kafka. - Specify the URL and port of the Kafka broker as a valid absolute URL, including the prefix.
- 7
- Configuration for an input to filter application logs from the
my-projectnamespace. - 8
- Configuration for a pipeline to send audit logs to the secure external Elasticsearch instance:
- A name to describe the pipeline.
-
The
inputRefsis the log type, in this exampleaudit. -
The
outputRefsis the name of the output to use, in this exampleelasticsearch-secureto forward to the secure Elasticsearch instance anddefaultto forward to the internal Elasticsearch instance. - Optional: Labels to add to the logs.
- 9
- Optional: String. One or more labels to add to the logs. Quote values like "true" so they are recognized as string values, not as a boolean.
- 10
- Configuration for a pipeline to send infrastructure logs to the insecure external Elasticsearch instance.
- 11
- Configuration for a pipeline to send logs from the
my-projectproject to the internal Elasticsearch instance.- A name to describe the pipeline.
-
The
inputRefsis a specific input:my-app-logs. -
The
outputRefsisdefault. - Optional: String. One or more labels to add to the logs.
- 12
- Configuration for a pipeline to send logs to the Kafka broker, with no pipeline name:
-
The
inputRefsis the log type, in this exampleapplication. -
The
outputRefsis the name of the output to use. - Optional: String. One or more labels to add to the logs.
-
The
Fluentd log handling when the external log aggregator is unavailable
If your external logging aggregator becomes unavailable and cannot receive logs, Fluentd continues to collect logs and stores them in a buffer. When the log aggregator becomes available, log forwarding resumes, including the buffered logs. If the buffer fills completely, Fluentd stops collecting logs. OpenShift Container Platform rotates the logs and deletes them. You cannot adjust the buffer size or add a persistent volume claim (PVC) to the Fluentd daemon set or pods.
Supported Authorization Keys
Common key types are provided here. Some output types support additional specialized keys, documented with the output-specific configuration field. All secret keys are optional. Enable the security features you want by setting the relevant keys. You are responsible for creating and maintaining any additional configurations that external destinations might require, such as keys and secrets, service accounts, port openings, or global proxy configuration. Open Shift Logging will not attempt to verify a mismatch between authorization combinations.
- Transport Layer Security (TLS)
Using a TLS URL (
http://...orssl://...) without a secret enables basic TLS server-side authentication. Additional TLS features are enabled by including a secret and setting the following optional fields:-
passphrase: (string) Passphrase to decode an encoded TLS private key. Requirestls.key. -
ca-bundle.crt: (string) File name of a customer CA for server authentication.
-
- Username and Password
-
username: (string) Authentication user name. Requirespassword. -
password: (string) Authentication password. Requiresusername.
-
- Simple Authentication Security Layer (SASL)
-
sasl.enable(boolean) Explicitly enable or disable SASL. If missing, SASL is automatically enabled when any of the othersasl.keys are set. -
sasl.mechanisms: (array) List of allowed SASL mechanism names. If missing or empty, the system defaults are used. -
sasl.allow-insecure: (boolean) Allow mechanisms that send clear-text passwords. Defaults to false.
-
9.4.1.1. Creating a Secret Copia collegamentoCollegamento copiato negli appunti!
You can create a secret in the directory that contains your certificate and key files by using the following command:
oc create secret generic -n <namespace> <secret_name> \ --from-file=ca-bundle.crt=<your_bundle_file> \ --from-literal=username=<your_username> \ --from-literal=password=<your_password>
$ oc create secret generic -n <namespace> <secret_name> \
--from-file=ca-bundle.crt=<your_bundle_file> \
--from-literal=username=<your_username> \
--from-literal=password=<your_password>
Generic or opaque secrets are recommended for best results.
9.4.2. Creating a log forwarder Copia collegamentoCollegamento copiato negli appunti!
To create a log forwarder, you must create a ClusterLogForwarder CR that specifies the log input types that the service account can collect. You can also specify which outputs the logs can be forwarded to. If you are using the multi log forwarder feature, you must also reference the service account in the ClusterLogForwarder CR.
If you are using the multi log forwarder feature on your cluster, you can create ClusterLogForwarder custom resources (CRs) in any namespace, using any name. If you are using a legacy implementation, the ClusterLogForwarder CR must be named instance, and must be created in the openshift-logging namespace.
You need administrator permissions for the namespace where you create the ClusterLogForwarder CR.
ClusterLogForwarder resource example
- 1
- In legacy implementations, the CR name must be
instance. In multi log forwarder implementations, you can use any name. - 2
- In legacy implementations, the CR namespace must be
openshift-logging. In multi log forwarder implementations, you can use any namespace. - 3
- The name of your service account. The service account is only required in multi log forwarder implementations if the log forwarder is not deployed in the
openshift-loggingnamespace. - 4
- The log types that are collected. The value for this field can be
auditfor audit logs,applicationfor application logs,infrastructurefor infrastructure logs, or a named input that has been defined for your application. - 5 7
- The type of output that you want to forward logs to. The value of this field can be
default,loki,kafka,elasticsearch,fluentdForward,syslog, orcloudwatch.NoteThe
defaultoutput type is not supported in mutli log forwarder implementations. - 6
- A name for the output that you want to forward logs to.
- 8
- The URL of the output that you want to forward logs to.
9.4.3. Enabling multi-line exception detection Copia collegamentoCollegamento copiato negli appunti!
Enables multi-line error detection of container logs.
Enabling this feature could have performance implications and may require additional computing resources or alternate logging solutions.
Log parsers often incorrectly identify separate lines of the same exception as separate exceptions. This leads to extra log entries and an incomplete or inaccurate view of the traced information.
Example java exception
java.lang.NullPointerException: Cannot invoke "String.toString()" because "<param1>" is null
at testjava.Main.handle(Main.java:47)
at testjava.Main.printMe(Main.java:19)
at testjava.Main.main(Main.java:10)
java.lang.NullPointerException: Cannot invoke "String.toString()" because "<param1>" is null
at testjava.Main.handle(Main.java:47)
at testjava.Main.printMe(Main.java:19)
at testjava.Main.main(Main.java:10)
-
To enable logging to detect multi-line exceptions and reassemble them into a single log entry, ensure that the
ClusterLogForwarderCustom Resource (CR) contains adetectMultilineErrorsfield, with a value oftrue.
Example ClusterLogForwarder CR
9.4.3.1. Details Copia collegamentoCollegamento copiato negli appunti!
When log messages appear as a consecutive sequence forming an exception stack trace, they are combined into a single, unified log record. The first log message’s content is replaced with the concatenated content of all the message fields in the sequence.
| Language | Fluentd | Vector |
|---|---|---|
| Java | ✓ | ✓ |
| JS | ✓ | ✓ |
| Ruby | ✓ | ✓ |
| Python | ✓ | ✓ |
| Golang | ✓ | ✓ |
| PHP | ✓ | ✓ |
| Dart | ✓ | ✓ |
9.4.3.2. Troubleshooting Copia collegamentoCollegamento copiato negli appunti!
When enabled, the collector configuration will include a new section with type: detect_exceptions
Example vector configuration section
Example fluentd config section
9.4.4. Forwarding logs to Google Cloud Platform (GCP) Copia collegamentoCollegamento copiato negli appunti!
You can forward logs to Google Cloud Logging in addition to, or instead of, the internal default OpenShift Container Platform log store.
Using this feature with Fluentd is not supported.
Prerequisites
- Red Hat OpenShift Logging Operator 5.5.1 and later
Procedure
Create a secret using your Google service account key.
oc -n openshift-logging create secret generic gcp-secret --from-file google-application-credentials.json=<your_service_account_key_file.json>
$ oc -n openshift-logging create secret generic gcp-secret --from-file google-application-credentials.json=<your_service_account_key_file.json>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Create a
ClusterLogForwarderCustom Resource YAML using the template below:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- In legacy implementations, the CR name must be
instance. In multi log forwarder implementations, you can use any name. - 2
- In legacy implementations, the CR namespace must be
openshift-logging. In multi log forwarder implementations, you can use any namespace. - 3
- The name of your service account. The service account is only required in multi log forwarder implementations if the log forwarder is not deployed in the
openshift-loggingnamespace. - 4
- Set a
projectId,folderId,organizationId, orbillingAccountIdfield and its corresponding value, depending on where you want to store your logs in the GCP resource hierarchy. - 5
- Set the value to add to the
logNamefield of the Log Entry. - 6
- Specify which log types to forward by using the pipeline:
application,infrastructure, oraudit.
9.4.5. Forwarding logs to Splunk Copia collegamentoCollegamento copiato negli appunti!
You can forward logs to the Splunk HTTP Event Collector (HEC) in addition to, or instead of, the internal default OpenShift Container Platform log store.
Using this feature with Fluentd is not supported.
Prerequisites
- Red Hat OpenShift Logging Operator 5.6 or later
-
A
ClusterLogginginstance withvectorspecified as the collector - Base64 encoded Splunk HEC token
Procedure
Create a secret using your Base64 encoded Splunk HEC token.
oc -n openshift-logging create secret generic vector-splunk-secret --from-literal hecToken=<HEC_Token>
$ oc -n openshift-logging create secret generic vector-splunk-secret --from-literal hecToken=<HEC_Token>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Create or edit the
ClusterLogForwarderCustom Resource (CR) using the template below:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- In legacy implementations, the CR name must be
instance. In multi log forwarder implementations, you can use any name. - 2
- In legacy implementations, the CR namespace must be
openshift-logging. In multi log forwarder implementations, you can use any namespace. - 3
- The name of your service account. The service account is only required in multi log forwarder implementations if the log forwarder is not deployed in the
openshift-loggingnamespace. - 4
- Specify a name for the output.
- 5
- Specify the name of the secret that contains your HEC token.
- 6
- Specify the output type as
splunk. - 7
- Specify the URL (including port) of your Splunk HEC.
- 8
- Specify which log types to forward by using the pipeline:
application,infrastructure, oraudit. - 9
- Optional: Specify a name for the pipeline.
- 10
- Specify the name of the output to use when forwarding logs with this pipeline.
9.4.6. Forwarding logs over HTTP Copia collegamentoCollegamento copiato negli appunti!
Forwarding logs over HTTP is supported for both the Fluentd and Vector log collectors. To enable, specify http as the output type in the ClusterLogForwarder custom resource (CR).
Procedure
Create or edit the
ClusterLogForwarderCR using the template below:Example ClusterLogForwarder CR
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- In legacy implementations, the CR name must be
instance. In multi log forwarder implementations, you can use any name. - 2
- In legacy implementations, the CR namespace must be
openshift-logging. In multi log forwarder implementations, you can use any namespace. - 3
- The name of your service account. The service account is only required in multi log forwarder implementations if the log forwarder is not deployed in the
openshift-loggingnamespace. - 4
- Destination address for logs.
- 5
- Additional headers to send with the log record.
- 6
- Secret name for destination credentials.
- 7
- Values are either
trueorfalse. - 8
- This value should be the same as the output name.
9.4.7. Forwarding application logs from specific projects Copia collegamentoCollegamento copiato negli appunti!
You can forward a copy of the application logs from specific projects to an external log aggregator, in addition to, or instead of, using the internal log store. You must also configure the external log aggregator to receive log data from OpenShift Container Platform.
To configure forwarding application logs from a project, you must create a ClusterLogForwarder custom resource (CR) with at least one input from a project, optional outputs for other log aggregators, and pipelines that use those inputs and outputs.
Prerequisites
- You must have a logging server that is configured to receive the logging data using the specified protocol or format.
Procedure
Create or edit a YAML file that defines the
ClusterLogForwarderCR:Example
ClusterLogForwarderCRCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- The name of the
ClusterLogForwarderCR must beinstance. - 2
- The namespace for the
ClusterLogForwarderCR must beopenshift-logging. - 3
- The name of the output.
- 4
- The output type:
elasticsearch,fluentdForward,syslog, orkafka. - 5
- The URL and port of the external log aggregator as a valid absolute URL. If the cluster-wide proxy using the CIDR annotation is enabled, the output must be a server name or FQDN, not an IP address.
- 6
- If using a
tlsprefix, you must specify the name of the secret required by the endpoint for TLS communication. The secret must exist in theopenshift-loggingproject and have tls.crt, tls.key, and ca-bundle.crt keys that each point to the certificates they represent. - 7
- The configuration for an input to filter application logs from the specified projects.
- 8
- If no namespace is specified, logs are collected from all namespaces.
- 9
- The pipeline configuration directs logs from a named input to a named output. In this example, a pipeline named
forward-to-fluentd-insecureforwards logs from an input namedmy-app-logsto an output namedfluentd-server-insecure. - 10
- A list of inputs.
- 11
- The name of the output to use.
- 12
- Optional: String. One or more labels to add to the logs.
- 13
- Configuration for a pipeline to send logs to other log aggregators.
- Optional: Specify a name for the pipeline.
-
Specify which log types to forward by using the pipeline:
application,infrastructure, oraudit. - Specify the name of the output to use when forwarding logs with this pipeline.
-
Optional: Specify the
defaultoutput to forward logs to the default log store. - Optional: String. One or more labels to add to the logs.
- 14
- Note that application logs from all namespaces are collected when using this configuration.
Apply the
ClusterLogForwarderCR by running the following command:oc apply -f <filename>.yaml
$ oc apply -f <filename>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
9.4.8. Forwarding application logs from specific pods Copia collegamentoCollegamento copiato negli appunti!
As a cluster administrator, you can use Kubernetes pod labels to gather log data from specific pods and forward it to a log collector.
Suppose that you have an application composed of pods running alongside other pods in various namespaces. If those pods have labels that identify the application, you can gather and output their log data to a specific log collector.
To specify the pod labels, you use one or more matchLabels key-value pairs. If you specify multiple key-value pairs, the pods must match all of them to be selected.
Procedure
Create or edit a YAML file that defines the
ClusterLogForwarderCR object. In the file, specify the pod labels using simple equality-based selectors underinputs[].name.application.selector.matchLabels, as shown in the following example.Example
ClusterLogForwarderCR YAML fileCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- In legacy implementations, the CR name must be
instance. In multi log forwarder implementations, you can use any name. - 2
- In legacy implementations, the CR namespace must be
openshift-logging. In multi log forwarder implementations, you can use any namespace. - 3
- Specify one or more comma-separated values from
inputs[].name. - 4
- Specify one or more comma-separated values from
outputs[]. - 5
- Define a unique
inputs[].namefor each application that has a unique set of pod labels. - 6
- Specify the key-value pairs of pod labels whose log data you want to gather. You must specify both a key and value, not just a key. To be selected, the pods must match all the key-value pairs.
- 7
- Optional: Specify one or more namespaces.
- 8
- Specify one or more outputs to forward your log data to.
-
Optional: To restrict the gathering of log data to specific namespaces, use
inputs[].name.application.namespaces, as shown in the preceding example. Optional: You can send log data from additional applications that have different pod labels to the same pipeline.
-
For each unique combination of pod labels, create an additional
inputs[].namesection similar to the one shown. -
Update the
selectorsto match the pod labels of this application. Add the new
inputs[].namevalue toinputRefs. For example:- inputRefs: [ myAppLogData, myOtherAppLogData ]
- inputRefs: [ myAppLogData, myOtherAppLogData ]Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
For each unique combination of pod labels, create an additional
Create the CR object:
oc create -f <file-name>.yaml
$ oc create -f <file-name>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
9.4.9. Overview of API audit filter Copia collegamentoCollegamento copiato negli appunti!
OpenShift API servers generate audit events for each API call, detailing the request, response, and the identity of the requester, leading to large volumes of data. The API Audit filter uses rules to enable the exclusion of non-essential events and the reduction of event size, facilitating a more manageable audit trail. Rules are checked in order, checking stops at the first match. How much data is included in an event is determined by the value of the level field:
-
None: The event is dropped. -
Metadata: Audit metadata is included, request and response bodies are removed. -
Request: Audit metadata and the request body are included, the response body is removed. -
RequestResponse: All data is included: metadata, request body and response body. The response body can be very large. For example,oc get pods -Agenerates a response body containing the YAML description of every pod in the cluster.
You can use this feature only if the Vector collector is set up in your logging deployment.
In logging 5.8 and later, the ClusterLogForwarder custom resource (CR) uses the same format as the standard Kubernetes audit policy, while providing the following additional functions:
- Wildcards
-
Names of users, groups, namespaces, and resources can have a leading or trailing
*asterisk character. For example, namespaceopenshift-\*matchesopenshift-apiserveroropenshift-authentication. Resource\*/statusmatchesPod/statusorDeployment/status. - Default Rules
Events that do not match any rule in the policy are filtered as follows:
-
Read-only system events such as
get,list,watchare dropped. - Service account write events that occur within the same namespace as the service account are dropped.
- All other events are forwarded, subject to any configured rate limits.
-
Read-only system events such as
To disable these defaults, either end your rules list with a rule that has only a level field or add an empty rule.
- Omit Response Codes
-
A list of integer status codes to omit. You can drop events based on the HTTP status code in the response by using the
OmitResponseCodesfield, a list of HTTP status code for which no events are created. The default value is[404, 409, 422, 429]. If the value is an empty list,[], then no status codes are omitted.
The ClusterLogForwarder CR audit policy acts in addition to the OpenShift Container Platform audit policy. The ClusterLogForwarder CR audit filter changes what the log collector forwards, and provides the ability to filter by verb, user, group, namespace, or resource. You can create multiple filters to send different summaries of the same audit stream to different places. For example, you can send a detailed stream to the local cluster log store, and a less detailed stream to a remote site.
The example provided is intended to illustrate the range of rules possible in an audit policy and is not a recommended configuration.
Example audit policy
9.4.10. Forwarding logs to an external Loki logging system Copia collegamentoCollegamento copiato negli appunti!
You can forward logs to an external Loki logging system in addition to, or instead of, the default log store.
To configure log forwarding to Loki, you must create a ClusterLogForwarder custom resource (CR) with an output to Loki, and a pipeline that uses the output. The output to Loki can use the HTTP (insecure) or HTTPS (secure HTTP) connection.
Prerequisites
-
You must have a Loki logging system running at the URL you specify with the
urlfield in the CR.
Procedure
Create or edit a YAML file that defines the
ClusterLogForwarderCR object:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- In legacy implementations, the CR name must be
instance. In multi log forwarder implementations, you can use any name. - 2
- In legacy implementations, the CR namespace must be
openshift-logging. In multi log forwarder implementations, you can use any namespace. - 3
- The name of your service account. The service account is only required in multi log forwarder implementations if the log forwarder is not deployed in the
openshift-loggingnamespace. - 4
- Specify a name for the output.
- 5
- Specify the type as
"loki". - 6
- Specify the URL and port of the Loki system as a valid absolute URL. You can use the
http(insecure) orhttps(secure HTTP) protocol. If the cluster-wide proxy using the CIDR annotation is enabled, the output must be a server name or FQDN, not an IP Address. Loki’s default port for HTTP(S) communication is 3100. - 7
- For a secure connection, you can specify an
httpsorhttpURL that you authenticate by specifying asecret. - 8
- For an
httpsprefix, specify the name of the secret required by the endpoint for TLS communication. The secret must contain aca-bundle.crtkey that points to the certificates it represents. Otherwise, forhttpandhttpsprefixes, you can specify a secret that contains a username and password. In legacy implementations, the secret must exist in theopenshift-loggingproject. For more information, see the following "Example: Setting a secret that contains a username and password." - 9
- Optional: Specify a metadata key field to generate values for the
TenantIDfield in Loki. For example, settingtenantKey: kubernetes.namespace_nameuses the names of the Kubernetes namespaces as values for tenant IDs in Loki. To see which other log record fields you can specify, see the "Log Record Fields" link in the following "Additional resources" section. - 10
- Optional: Specify a list of metadata field keys to replace the default Loki labels. Loki label names must match the regular expression
[a-zA-Z_:][a-zA-Z0-9_:]*. Illegal characters in metadata keys are replaced with_to form the label name. For example, thekubernetes.labels.foometadata key becomes Loki labelkubernetes_labels_foo. If you do not setlabelKeys, the default value is:[log_type, kubernetes.namespace_name, kubernetes.pod_name, kubernetes_host]. Keep the set of labels small because Loki limits the size and number of labels allowed. See Configuring Loki, limits_config. You can still query based on any log record field using query filters. - 11
- Optional: Specify a name for the pipeline.
- 12
- Specify which log types to forward by using the pipeline:
application,infrastructure, oraudit. - 13
- Specify the name of the output to use when forwarding logs with this pipeline.
NoteBecause Loki requires log streams to be correctly ordered by timestamp,
labelKeysalways includes thekubernetes_hostlabel set, even if you do not specify it. This inclusion ensures that each stream originates from a single host, which prevents timestamps from becoming disordered due to clock differences on different hosts.Apply the
ClusterLogForwarderCR object by running the following command:oc apply -f <filename>.yaml
$ oc apply -f <filename>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
9.4.11. Forwarding logs to an external Elasticsearch instance Copia collegamentoCollegamento copiato negli appunti!
You can forward logs to an external Elasticsearch instance in addition to, or instead of, the internal log store. You are responsible for configuring the external log aggregator to receive log data from OpenShift Container Platform.
To configure log forwarding to an external Elasticsearch instance, you must create a ClusterLogForwarder custom resource (CR) with an output to that instance, and a pipeline that uses the output. The external Elasticsearch output can use the HTTP (insecure) or HTTPS (secure HTTP) connection.
To forward logs to both an external and the internal Elasticsearch instance, create outputs and pipelines to the external instance and a pipeline that uses the default output to forward logs to the internal instance.
If you only want to forward logs to an internal Elasticsearch instance, you do not need to create a ClusterLogForwarder CR.
Prerequisites
- You must have a logging server that is configured to receive the logging data using the specified protocol or format.
Procedure
Create or edit a YAML file that defines the
ClusterLogForwarderCR:Example
ClusterLogForwarderCRCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- In legacy implementations, the CR name must be
instance. In multi log forwarder implementations, you can use any name. - 2
- In legacy implementations, the CR namespace must be
openshift-logging. In multi log forwarder implementations, you can use any namespace. - 3
- The name of your service account. The service account is only required in multi log forwarder implementations if the log forwarder is not deployed in the
openshift-loggingnamespace. - 4
- Specify a name for the output.
- 5
- Specify the
elasticsearchtype. - 6
- Specify the Elasticsearch version. This can be
6,7, or8. - 7
- Specify the URL and port of the external Elasticsearch instance as a valid absolute URL. You can use the
http(insecure) orhttps(secure HTTP) protocol. If the cluster-wide proxy using the CIDR annotation is enabled, the output must be a server name or FQDN, not an IP Address. - 8
- For an
httpsprefix, specify the name of the secret required by the endpoint for TLS communication. The secret must contain aca-bundle.crtkey that points to the certificate it represents. Otherwise, forhttpandhttpsprefixes, you can specify a secret that contains a username and password. In legacy implementations, the secret must exist in theopenshift-loggingproject. For more information, see the following "Example: Setting a secret that contains a username and password." - 9
- Optional: Specify a name for the pipeline.
- 10
- Specify which log types to forward by using the pipeline:
application,infrastructure, oraudit. - 11
- Specify the name of the output to use when forwarding logs with this pipeline.
- 12
- Optional: Specify the
defaultoutput to send the logs to the internal Elasticsearch instance. - 13
- Optional: String. One or more labels to add to the logs.
Apply the
ClusterLogForwarderCR:oc apply -f <filename>.yaml
$ oc apply -f <filename>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Example: Setting a secret that contains a username and password
You can use a secret that contains a username and password to authenticate a secure connection to an external Elasticsearch instance.
For example, if you cannot use mutual TLS (mTLS) keys because a third party operates the Elasticsearch instance, you can use HTTP or HTTPS and set a secret that contains the username and password.
Create a
SecretYAML file similar to the following example. Use base64-encoded values for theusernameandpasswordfields. The secret type is opaque by default.Copy to Clipboard Copied! Toggle word wrap Toggle overflow Create the secret:
oc create secret -n openshift-logging openshift-test-secret.yaml
$ oc create secret -n openshift-logging openshift-test-secret.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Specify the name of the secret in the
ClusterLogForwarderCR:Copy to Clipboard Copied! Toggle word wrap Toggle overflow NoteIn the value of the
urlfield, the prefix can behttporhttps.Apply the CR object:
oc apply -f <filename>.yaml
$ oc apply -f <filename>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
9.4.12. Forwarding logs using the Fluentd forward protocol Copia collegamentoCollegamento copiato negli appunti!
You can use the Fluentd forward protocol to send a copy of your logs to an external log aggregator that is configured to accept the protocol instead of, or in addition to, the default Elasticsearch log store. You are responsible for configuring the external log aggregator to receive the logs from OpenShift Container Platform.
To configure log forwarding using the forward protocol, you must create a ClusterLogForwarder custom resource (CR) with one or more outputs to the Fluentd servers, and pipelines that use those outputs. The Fluentd output can use a TCP (insecure) or TLS (secure TCP) connection.
Prerequisites
- You must have a logging server that is configured to receive the logging data using the specified protocol or format.
Procedure
Create or edit a YAML file that defines the
ClusterLogForwarderCR object:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- The name of the
ClusterLogForwarderCR must beinstance. - 2
- The namespace for the
ClusterLogForwarderCR must beopenshift-logging. - 3
- Specify a name for the output.
- 4
- Specify the
fluentdForwardtype. - 5
- Specify the URL and port of the external Fluentd instance as a valid absolute URL. You can use the
tcp(insecure) ortls(secure TCP) protocol. If the cluster-wide proxy using the CIDR annotation is enabled, the output must be a server name or FQDN, not an IP address. - 6
- If you are using a
tlsprefix, you must specify the name of the secret required by the endpoint for TLS communication. The secret must exist in theopenshift-loggingproject and must contain aca-bundle.crtkey that points to the certificate it represents. - 7
- Optional: Specify a name for the pipeline.
- 8
- Specify which log types to forward by using the pipeline:
application,infrastructure, oraudit. - 9
- Specify the name of the output to use when forwarding logs with this pipeline.
- 10
- Optional: Specify the
defaultoutput to forward logs to the internal Elasticsearch instance. - 11
- Optional: String. One or more labels to add to the logs.
- 12
- Optional: Configure multiple outputs to forward logs to other external log aggregators of any supported type:
- A name to describe the pipeline.
-
The
inputRefsis the log type to forward by using the pipeline:application,infrastructure, oraudit. -
The
outputRefsis the name of the output to use. - Optional: String. One or more labels to add to the logs.
Create the CR object:
oc create -f <file-name>.yaml
$ oc create -f <file-name>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
9.4.12.1. Enabling nanosecond precision for Logstash to ingest data from fluentd Copia collegamentoCollegamento copiato negli appunti!
For Logstash to ingest log data from fluentd, you must enable nanosecond precision in the Logstash configuration file.
Procedure
-
In the Logstash configuration file, set
nanosecond_precisiontotrue.
Example Logstash configuration file
input { tcp { codec => fluent { nanosecond_precision => true } port => 24114 } }
filter { }
output { stdout { codec => rubydebug } }
input { tcp { codec => fluent { nanosecond_precision => true } port => 24114 } }
filter { }
output { stdout { codec => rubydebug } }
9.4.13. Forwarding logs using the syslog protocol Copia collegamentoCollegamento copiato negli appunti!
You can use the syslog RFC3164 or RFC5424 protocol to send a copy of your logs to an external log aggregator that is configured to accept the protocol instead of, or in addition to, the default Elasticsearch log store. You are responsible for configuring the external log aggregator, such as a syslog server, to receive the logs from OpenShift Container Platform.
To configure log forwarding using the syslog protocol, you must create a ClusterLogForwarder custom resource (CR) with one or more outputs to the syslog servers, and pipelines that use those outputs. The syslog output can use a UDP, TCP, or TLS connection.
Prerequisites
- You must have a logging server that is configured to receive the logging data using the specified protocol or format.
Procedure
Create or edit a YAML file that defines the
ClusterLogForwarderCR object:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- In legacy implementations, the CR name must be
instance. In multi log forwarder implementations, you can use any name. - 2
- In legacy implementations, the CR namespace must be
openshift-logging. In multi log forwarder implementations, you can use any namespace. - 3
- The name of your service account. The service account is only required in multi log forwarder implementations if the log forwarder is not deployed in the
openshift-loggingnamespace. - 4
- Specify a name for the output.
- 5
- Specify the
syslogtype. - 6
- Optional: Specify the syslog parameters, listed below.
- 7
- Specify the URL and port of the external syslog instance. You can use the
udp(insecure),tcp(insecure) ortls(secure TCP) protocol. If the cluster-wide proxy using the CIDR annotation is enabled, the output must be a server name or FQDN, not an IP address. - 8
- If using a
tlsprefix, you must specify the name of the secret required by the endpoint for TLS communication. The secret must contain aca-bundle.crtkey that points to the certificate it represents. In legacy implementations, the secret must exist in theopenshift-loggingproject. - 9
- Optional: Specify a name for the pipeline.
- 10
- Specify which log types to forward by using the pipeline:
application,infrastructure, oraudit. - 11
- Specify the name of the output to use when forwarding logs with this pipeline.
- 12
- Optional: Specify the
defaultoutput to forward logs to the internal Elasticsearch instance. - 13
- Optional: String. One or more labels to add to the logs. Quote values like "true" so they are recognized as string values, not as a boolean.
- 14
- Optional: Configure multiple outputs to forward logs to other external log aggregators of any supported type:
- A name to describe the pipeline.
-
The
inputRefsis the log type to forward by using the pipeline:application,infrastructure, oraudit. -
The
outputRefsis the name of the output to use. - Optional: String. One or more labels to add to the logs.
Create the CR object:
oc create -f <filename>.yaml
$ oc create -f <filename>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
9.4.13.1. Adding log source information to message output Copia collegamentoCollegamento copiato negli appunti!
You can add namespace_name, pod_name, and container_name elements to the message field of the record by adding the AddLogSource field to your ClusterLogForwarder custom resource (CR).
This configuration is compatible with both RFC3164 and RFC5424.
Example syslog message output without AddLogSource
<15>1 2020-11-15T17:06:14+00:00 fluentd-9hkb4 mytag - - - {"msgcontent"=>"Message Contents", "timestamp"=>"2020-11-15 17:06:09", "tag_key"=>"rec_tag", "index"=>56}
<15>1 2020-11-15T17:06:14+00:00 fluentd-9hkb4 mytag - - - {"msgcontent"=>"Message Contents", "timestamp"=>"2020-11-15 17:06:09", "tag_key"=>"rec_tag", "index"=>56}
Example syslog message output with AddLogSource
<15>1 2020-11-16T10:49:37+00:00 crc-j55b9-master-0 mytag - - - namespace_name=clo-test-6327,pod_name=log-generator-ff9746c49-qxm7l,container_name=log-generator,message={"msgcontent":"My life is my message", "timestamp":"2020-11-16 10:49:36", "tag_key":"rec_tag", "index":76}
<15>1 2020-11-16T10:49:37+00:00 crc-j55b9-master-0 mytag - - - namespace_name=clo-test-6327,pod_name=log-generator-ff9746c49-qxm7l,container_name=log-generator,message={"msgcontent":"My life is my message", "timestamp":"2020-11-16 10:49:36", "tag_key":"rec_tag", "index":76}
9.4.13.2. Syslog parameters Copia collegamentoCollegamento copiato negli appunti!
You can configure the following for the syslog outputs. For more information, see the syslog RFC3164 or RFC5424 RFC.
facility: The syslog facility. The value can be a decimal integer or a case-insensitive keyword:
-
0orkernfor kernel messages -
1oruserfor user-level messages, the default. -
2ormailfor the mail system -
3ordaemonfor system daemons -
4orauthfor security/authentication messages -
5orsyslogfor messages generated internally by syslogd -
6orlprfor the line printer subsystem -
7ornewsfor the network news subsystem -
8oruucpfor the UUCP subsystem -
9orcronfor the clock daemon -
10orauthprivfor security authentication messages -
11orftpfor the FTP daemon -
12orntpfor the NTP subsystem -
13orsecurityfor the syslog audit log -
14orconsolefor the syslog alert log -
15orsolaris-cronfor the scheduling daemon -
16–23orlocal0–local7for locally used facilities
-
Optional:
payloadKey: The record field to use as payload for the syslog message.NoteConfiguring the
payloadKeyparameter prevents other parameters from being forwarded to the syslog.- rfc: The RFC to be used for sending logs using syslog. The default is RFC5424.
severity: The syslog severity to set on outgoing syslog records. The value can be a decimal integer or a case-insensitive keyword:
-
0orEmergencyfor messages indicating the system is unusable -
1orAlertfor messages indicating action must be taken immediately -
2orCriticalfor messages indicating critical conditions -
3orErrorfor messages indicating error conditions -
4orWarningfor messages indicating warning conditions -
5orNoticefor messages indicating normal but significant conditions -
6orInformationalfor messages indicating informational messages -
7orDebugfor messages indicating debug-level messages, the default
-
- tag: Tag specifies a record field to use as a tag on the syslog message.
- trimPrefix: Remove the specified prefix from the tag.
9.4.13.3. Additional RFC5424 syslog parameters Copia collegamentoCollegamento copiato negli appunti!
The following parameters apply to RFC5424:
-
appName: The APP-NAME is a free-text string that identifies the application that sent the log. Must be specified for
RFC5424. -
msgID: The MSGID is a free-text string that identifies the type of message. Must be specified for
RFC5424. -
procID: The PROCID is a free-text string. A change in the value indicates a discontinuity in syslog reporting. Must be specified for
RFC5424.
9.4.14. Forwarding logs to a Kafka broker Copia collegamentoCollegamento copiato negli appunti!
You can forward logs to an external Kafka broker in addition to, or instead of, the default log store.
To configure log forwarding to an external Kafka instance, you must create a ClusterLogForwarder custom resource (CR) with an output to that instance, and a pipeline that uses the output. You can include a specific Kafka topic in the output or use the default. The Kafka output can use a TCP (insecure) or TLS (secure TCP) connection.
Procedure
Create or edit a YAML file that defines the
ClusterLogForwarderCR object:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- In legacy implementations, the CR name must be
instance. In multi log forwarder implementations, you can use any name. - 2
- In legacy implementations, the CR namespace must be
openshift-logging. In multi log forwarder implementations, you can use any namespace. - 3
- The name of your service account. The service account is only required in multi log forwarder implementations if the log forwarder is not deployed in the
openshift-loggingnamespace. - 4
- Specify a name for the output.
- 5
- Specify the
kafkatype. - 6
- Specify the URL and port of the Kafka broker as a valid absolute URL, optionally with a specific topic. You can use the
tcp(insecure) ortls(secure TCP) protocol. If the cluster-wide proxy using the CIDR annotation is enabled, the output must be a server name or FQDN, not an IP address. - 7
- If you are using a
tlsprefix, you must specify the name of the secret required by the endpoint for TLS communication. The secret must contain aca-bundle.crtkey that points to the certificate it represents. In legacy implementations, the secret must exist in theopenshift-loggingproject. - 8
- Optional: To send an insecure output, use a
tcpprefix in front of the URL. Also omit thesecretkey and itsnamefrom this output. - 9
- Optional: Specify a name for the pipeline.
- 10
- Specify which log types to forward by using the pipeline:
application,infrastructure, oraudit. - 11
- Specify the name of the output to use when forwarding logs with this pipeline.
- 12
- Optional: String. One or more labels to add to the logs.
- 13
- Optional: Configure multiple outputs to forward logs to other external log aggregators of any supported type:
- A name to describe the pipeline.
-
The
inputRefsis the log type to forward by using the pipeline:application,infrastructure, oraudit. -
The
outputRefsis the name of the output to use. - Optional: String. One or more labels to add to the logs.
Optional: To forward a single output to multiple Kafka brokers, specify an array of Kafka brokers as shown in the following example:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Apply the
ClusterLogForwarderCR by running the following command:oc apply -f <filename>.yaml
$ oc apply -f <filename>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
9.4.15. Forwarding logs to Amazon CloudWatch Copia collegamentoCollegamento copiato negli appunti!
You can forward logs to Amazon CloudWatch, a monitoring and log storage service hosted by Amazon Web Services (AWS). You can forward logs to CloudWatch in addition to, or instead of, the default log store.
To configure log forwarding to CloudWatch, you must create a ClusterLogForwarder custom resource (CR) with an output for CloudWatch, and a pipeline that uses the output.
Procedure
Create a
SecretYAML file that uses theaws_access_key_idandaws_secret_access_keyfields to specify your base64-encoded AWS credentials. For example:Copy to Clipboard Copied! Toggle word wrap Toggle overflow Create the secret. For example:
oc apply -f cw-secret.yaml
$ oc apply -f cw-secret.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Create or edit a YAML file that defines the
ClusterLogForwarderCR object. In the file, specify the name of the secret. For example:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- In legacy implementations, the CR name must be
instance. In multi log forwarder implementations, you can use any name. - 2
- In legacy implementations, the CR namespace must be
openshift-logging. In multi log forwarder implementations, you can use any namespace. - 3
- The name of your service account. The service account is only required in multi log forwarder implementations if the log forwarder is not deployed in the
openshift-loggingnamespace. - 4
- Specify a name for the output.
- 5
- Specify the
cloudwatchtype. - 6
- Optional: Specify how to group the logs:
-
logTypecreates log groups for each log type. -
namespaceNamecreates a log group for each application name space. It also creates separate log groups for infrastructure and audit logs. -
namespaceUUIDcreates a new log groups for each application namespace UUID. It also creates separate log groups for infrastructure and audit logs.
-
- 7
- Optional: Specify a string to replace the default
infrastructureNameprefix in the names of the log groups. - 8
- Specify the AWS region.
- 9
- Specify the name of the secret that contains your AWS credentials.
- 10
- Optional: Specify a name for the pipeline.
- 11
- Specify which log types to forward by using the pipeline:
application,infrastructure, oraudit. - 12
- Specify the name of the output to use when forwarding logs with this pipeline.
Create the CR object:
oc create -f <file-name>.yaml
$ oc create -f <file-name>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Example: Using ClusterLogForwarder with Amazon CloudWatch
Here, you see an example ClusterLogForwarder custom resource (CR) and the log data that it outputs to Amazon CloudWatch.
Suppose that you are running an OpenShift Container Platform cluster named mycluster. The following command returns the cluster’s infrastructureName, which you will use to compose aws commands later on:
oc get Infrastructure/cluster -ojson | jq .status.infrastructureName
$ oc get Infrastructure/cluster -ojson | jq .status.infrastructureName
"mycluster-7977k"
To generate log data for this example, you run a busybox pod in a namespace called app. The busybox pod writes a message to stdout every three seconds:
You can look up the UUID of the app namespace where the busybox pod runs:
oc get ns/app -ojson | jq .metadata.uid
$ oc get ns/app -ojson | jq .metadata.uid
"794e1e1a-b9f5-4958-a190-e76a9b53d7bf"
In your ClusterLogForwarder custom resource (CR), you configure the infrastructure, audit, and application log types as inputs to the all-logs pipeline. You also connect this pipeline to cw output, which forwards the logs to a CloudWatch instance in the us-east-2 region:
Each region in CloudWatch contains three levels of objects:
log group
log stream
- log event
With groupBy: logType in the ClusterLogForwarding CR, the three log types in the inputRefs produce three log groups in Amazon Cloudwatch:
aws --output json logs describe-log-groups | jq .logGroups[].logGroupName
$ aws --output json logs describe-log-groups | jq .logGroups[].logGroupName
"mycluster-7977k.application"
"mycluster-7977k.audit"
"mycluster-7977k.infrastructure"
Each of the log groups contains log streams:
aws --output json logs describe-log-streams --log-group-name mycluster-7977k.application | jq .logStreams[].logStreamName
$ aws --output json logs describe-log-streams --log-group-name mycluster-7977k.application | jq .logStreams[].logStreamName
"kubernetes.var.log.containers.busybox_app_busybox-da085893053e20beddd6747acdbaf98e77c37718f85a7f6a4facf09ca195ad76.log"
aws --output json logs describe-log-streams --log-group-name mycluster-7977k.audit | jq .logStreams[].logStreamName
$ aws --output json logs describe-log-streams --log-group-name mycluster-7977k.audit | jq .logStreams[].logStreamName
"ip-10-0-131-228.us-east-2.compute.internal.k8s-audit.log"
"ip-10-0-131-228.us-east-2.compute.internal.linux-audit.log"
"ip-10-0-131-228.us-east-2.compute.internal.openshift-audit.log"
...
aws --output json logs describe-log-streams --log-group-name mycluster-7977k.infrastructure | jq .logStreams[].logStreamName
$ aws --output json logs describe-log-streams --log-group-name mycluster-7977k.infrastructure | jq .logStreams[].logStreamName
"ip-10-0-131-228.us-east-2.compute.internal.kubernetes.var.log.containers.apiserver-69f9fd9b58-zqzw5_openshift-oauth-apiserver_oauth-apiserver-453c5c4ee026fe20a6139ba6b1cdd1bed25989c905bf5ac5ca211b7cbb5c3d7b.log"
"ip-10-0-131-228.us-east-2.compute.internal.kubernetes.var.log.containers.apiserver-797774f7c5-lftrx_openshift-apiserver_openshift-apiserver-ce51532df7d4e4d5f21c4f4be05f6575b93196336be0027067fd7d93d70f66a4.log"
"ip-10-0-131-228.us-east-2.compute.internal.kubernetes.var.log.containers.apiserver-797774f7c5-lftrx_openshift-apiserver_openshift-apiserver-check-endpoints-82a9096b5931b5c3b1d6dc4b66113252da4a6472c9fff48623baee761911a9ef.log"
...
Each log stream contains log events. To see a log event from the busybox Pod, you specify its log stream from the application log group:
Example: Customizing the prefix in log group names
In the log group names, you can replace the default infrastructureName prefix, mycluster-7977k, with an arbitrary string like demo-group-prefix. To make this change, you update the groupPrefix field in the ClusterLogForwarding CR:
cloudwatch:
groupBy: logType
groupPrefix: demo-group-prefix
region: us-east-2
cloudwatch:
groupBy: logType
groupPrefix: demo-group-prefix
region: us-east-2
The value of groupPrefix replaces the default infrastructureName prefix:
aws --output json logs describe-log-groups | jq .logGroups[].logGroupName
$ aws --output json logs describe-log-groups | jq .logGroups[].logGroupName
"demo-group-prefix.application"
"demo-group-prefix.audit"
"demo-group-prefix.infrastructure"
Example: Naming log groups after application namespace names
For each application namespace in your cluster, you can create a log group in CloudWatch whose name is based on the name of the application namespace.
If you delete an application namespace object and create a new one that has the same name, CloudWatch continues using the same log group as before.
If you consider successive application namespace objects that have the same name as equivalent to each other, use the approach described in this example. Otherwise, if you need to distinguish the resulting log groups from each other, see the following "Naming log groups for application namespace UUIDs" section instead.
To create application log groups whose names are based on the names of the application namespaces, you set the value of the groupBy field to namespaceName in the ClusterLogForwarder CR:
cloudwatch:
groupBy: namespaceName
region: us-east-2
cloudwatch:
groupBy: namespaceName
region: us-east-2
Setting groupBy to namespaceName affects the application log group only. It does not affect the audit and infrastructure log groups.
In Amazon Cloudwatch, the namespace name appears at the end of each log group name. Because there is a single application namespace, "app", the following output shows a new mycluster-7977k.app log group instead of mycluster-7977k.application:
aws --output json logs describe-log-groups | jq .logGroups[].logGroupName
$ aws --output json logs describe-log-groups | jq .logGroups[].logGroupName
"mycluster-7977k.app"
"mycluster-7977k.audit"
"mycluster-7977k.infrastructure"
If the cluster in this example had contained multiple application namespaces, the output would show multiple log groups, one for each namespace.
The groupBy field affects the application log group only. It does not affect the audit and infrastructure log groups.
Example: Naming log groups after application namespace UUIDs
For each application namespace in your cluster, you can create a log group in CloudWatch whose name is based on the UUID of the application namespace.
If you delete an application namespace object and create a new one, CloudWatch creates a new log group.
If you consider successive application namespace objects with the same name as different from each other, use the approach described in this example. Otherwise, see the preceding "Example: Naming log groups for application namespace names" section instead.
To name log groups after application namespace UUIDs, you set the value of the groupBy field to namespaceUUID in the ClusterLogForwarder CR:
cloudwatch:
groupBy: namespaceUUID
region: us-east-2
cloudwatch:
groupBy: namespaceUUID
region: us-east-2
In Amazon Cloudwatch, the namespace UUID appears at the end of each log group name. Because there is a single application namespace, "app", the following output shows a new mycluster-7977k.794e1e1a-b9f5-4958-a190-e76a9b53d7bf log group instead of mycluster-7977k.application:
aws --output json logs describe-log-groups | jq .logGroups[].logGroupName
$ aws --output json logs describe-log-groups | jq .logGroups[].logGroupName
"mycluster-7977k.794e1e1a-b9f5-4958-a190-e76a9b53d7bf" // uid of the "app" namespace
"mycluster-7977k.audit"
"mycluster-7977k.infrastructure"
The groupBy field affects the application log group only. It does not affect the audit and infrastructure log groups.
9.4.15.1. Creating a secret for AWS CloudWatch with an existing AWS role Copia collegamentoCollegamento copiato negli appunti!
If you have an existing role for AWS, you can create a secret for AWS with STS using the oc create secret --from-literal command.
Procedure
In the CLI, enter the following to generate a secret for AWS:
oc create secret generic cw-sts-secret -n openshift-logging --from-literal=role_arn=arn:aws:iam::123456789012:role/my-role_with-permissions
$ oc create secret generic cw-sts-secret -n openshift-logging --from-literal=role_arn=arn:aws:iam::123456789012:role/my-role_with-permissionsCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example Secret
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.4.16. Forwarding logs to Amazon CloudWatch from STS enabled clusters Copia collegamentoCollegamento copiato negli appunti!
For clusters with AWS Security Token Service (STS) enabled, you can create an AWS service account manually or create a credentials request by using the Cloud Credential Operator (CCO) utility ccoctl.
Prerequisites
- Logging for Red Hat OpenShift: 5.5 and later
Procedure
Create a
CredentialsRequestcustom resource YAML by using the template below:CloudWatch credentials request template
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Use the
ccoctlcommand to create a role for AWS using yourCredentialsRequestCR. With theCredentialsRequestobject, thisccoctlcommand creates an IAM role with a trust policy that is tied to the specified OIDC identity provider, and a permissions policy that grants permissions to perform operations on CloudWatch resources. This command also creates a YAML configuration file in/<path_to_ccoctl_output_dir>/manifests/openshift-logging-<your_role_name>-credentials.yaml. This secret file contains therole_arnkey/value used during authentication with the AWS IAM identity provider.ccoctl aws create-iam-roles \ --name=<name> \ --region=<aws_region> \ --credentials-requests-dir=<path_to_directory_with_list_of_credentials_requests>/credrequests \ --identity-provider-arn=arn:aws:iam::<aws_account_id>:oidc-provider/<name>-oidc.s3.<aws_region>.amazonaws.com
$ ccoctl aws create-iam-roles \ --name=<name> \ --region=<aws_region> \ --credentials-requests-dir=<path_to_directory_with_list_of_credentials_requests>/credrequests \ --identity-provider-arn=arn:aws:iam::<aws_account_id>:oidc-provider/<name>-oidc.s3.<aws_region>.amazonaws.com1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- <name> is the name used to tag your cloud resources and should match the name used during your STS cluster install
Apply the secret created:
oc apply -f output/manifests/openshift-logging-<your_role_name>-credentials.yaml
$ oc apply -f output/manifests/openshift-logging-<your_role_name>-credentials.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Create or edit a
ClusterLogForwardercustom resource:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- In legacy implementations, the CR name must be
instance. In multi log forwarder implementations, you can use any name. - 2
- In legacy implementations, the CR namespace must be
openshift-logging. In multi log forwarder implementations, you can use any namespace. - 3
- Specify the
clf-collectorservice account. The service account is only required in multi log forwarder implementations if the log forwarder is not deployed in theopenshift-loggingnamespace. - 4
- Specify a name for the output.
- 5
- Specify the
cloudwatchtype. - 6
- Optional: Specify how to group the logs:
-
logTypecreates log groups for each log type. -
namespaceNamecreates a log group for each application name space. Infrastructure and audit logs are unaffected, remaining grouped bylogType. -
namespaceUUIDcreates a new log groups for each application namespace UUID. It also creates separate log groups for infrastructure and audit logs.
-
- 7
- Optional: Specify a string to replace the default
infrastructureNameprefix in the names of the log groups. - 8
- Specify the AWS region.
- 9
- Specify the name of the secret that contains your AWS credentials.
- 10
- Optional: Specify a name for the pipeline.
- 11
- Specify which log types to forward by using the pipeline:
application,infrastructure, oraudit. - 12
- Specify the name of the output to use when forwarding logs with this pipeline.
9.5. Configuring the logging collector Copia collegamentoCollegamento copiato negli appunti!
Logging for Red Hat OpenShift collects operations and application logs from your cluster and enriches the data with Kubernetes pod and project metadata. All supported modifications to the log collector can be performed though the spec.collection stanza in the ClusterLogging custom resource (CR).
9.5.1. Configuring the log collector Copia collegamentoCollegamento copiato negli appunti!
You can configure which log collector type your logging uses by modifying the ClusterLogging custom resource (CR).
Fluentd is deprecated and is planned to be removed in a future release. Red Hat provides bug fixes and support for this feature during the current release lifecycle, but this feature no longer receives enhancements. As an alternative to Fluentd, you can use Vector instead.
Prerequisites
- You have administrator permissions.
-
You have installed the OpenShift CLI (
oc). - You have installed the Red Hat OpenShift Logging Operator.
-
You have created a
ClusterLoggingCR.
Procedure
Modify the
ClusterLoggingCRcollectionspec:ClusterLoggingCR exampleCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- The log collector type you want to use for the logging. This can be
vectororfluentd.
Apply the
ClusterLoggingCR by running the following command:oc apply -f <filename>.yaml
$ oc apply -f <filename>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
9.5.2. Creating a LogFileMetricExporter resource Copia collegamentoCollegamento copiato negli appunti!
In logging version 5.8 and newer versions, the LogFileMetricExporter is no longer deployed with the collector by default. You must manually create a LogFileMetricExporter custom resource (CR) to generate metrics from the logs produced by running containers.
If you do not create the LogFileMetricExporter CR, you may see a No datapoints found message in the OpenShift Container Platform web console dashboard for Produced Logs.
Prerequisites
- You have administrator permissions.
- You have installed the Red Hat OpenShift Logging Operator.
-
You have installed the OpenShift CLI (
oc).
Procedure
Create a
LogFileMetricExporterCR as a YAML file:Example
LogFileMetricExporterCRCopy to Clipboard Copied! Toggle word wrap Toggle overflow Apply the
LogFileMetricExporterCR by running the following command:oc apply -f <filename>.yaml
$ oc apply -f <filename>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Verification
A logfilesmetricexporter pod runs concurrently with a collector pod on each node.
Verify that the
logfilesmetricexporterpods are running in the namespace where you have created theLogFileMetricExporterCR, by running the following command and observing the output:oc get pods -l app.kubernetes.io/component=logfilesmetricexporter -n openshift-logging
$ oc get pods -l app.kubernetes.io/component=logfilesmetricexporter -n openshift-loggingCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
NAME READY STATUS RESTARTS AGE logfilesmetricexporter-9qbjj 1/1 Running 0 2m46s logfilesmetricexporter-cbc4v 1/1 Running 0 2m46s
NAME READY STATUS RESTARTS AGE logfilesmetricexporter-9qbjj 1/1 Running 0 2m46s logfilesmetricexporter-cbc4v 1/1 Running 0 2m46sCopy to Clipboard Copied! Toggle word wrap Toggle overflow
9.5.3. Configure log collector CPU and memory limits Copia collegamentoCollegamento copiato negli appunti!
The log collector allows for adjustments to both the CPU and memory limits.
Procedure
Edit the
ClusterLoggingcustom resource (CR) in theopenshift-loggingproject:oc -n openshift-logging edit ClusterLogging instance
$ oc -n openshift-logging edit ClusterLogging instanceCopy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Specify the CPU and memory limits and requests as needed. The values shown are the default values.
9.5.4. Configuring input receivers Copia collegamentoCollegamento copiato negli appunti!
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. The service name is generated based on the following:
-
For multi log forwarder
ClusterLogForwarderCR deployments, the service name is in the format<ClusterLogForwarder_CR_name>-<input_name>. For example,example-http-receiver. -
For legacy
ClusterLogForwarderCR deployments, meaning those namedinstanceand located in theopenshift-loggingnamespace, the service name is in the formatcollector-<input_name>. For example,collector-http-receiver.
9.5.4.1. Configuring the collector to receive audit logs as an HTTP server Copia collegamentoCollegamento copiato negli appunti!
You can configure your log collector to listen for HTTP connections and receive audit logs as an HTTP server by specifying http as a receiver input in the ClusterLogForwarder custom resource (CR). This enables you to use a common log store for audit logs that are collected from both inside and outside of your OpenShift Container Platform cluster.
Prerequisites
- You have administrator permissions.
-
You have installed the OpenShift CLI (
oc). - You have installed the Red Hat OpenShift Logging Operator.
-
You have created a
ClusterLogForwarderCR.
Procedure
Modify the
ClusterLogForwarderCR to add configuration for thehttpreceiver input:Example
ClusterLogForwarderCR if you are using a multi log forwarder deploymentCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Specify a name for your input receiver.
- 2
- Specify the input receiver type as
http. - 3
- Currently, only the
kube-apiserverwebhook format is supported forhttpinput receivers. - 4
- 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. - 5
- Configure a pipeline for your input receiver.
Example
ClusterLogForwarderCR if you are using a legacy deploymentCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Specify a name for your input receiver.
- 2
- Specify the input receiver type as
http. - 3
- Currently, only the
kube-apiserverwebhook format is supported forhttpinput receivers. - 4
- 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. - 5
- Configure a pipeline for your input receiver.
Apply the changes to the
ClusterLogForwarderCR by running the following command:oc apply -f <filename>.yaml
$ oc apply -f <filename>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
9.5.5. Advanced configuration for the Fluentd log forwarder Copia collegamentoCollegamento copiato negli appunti!
Fluentd is deprecated and is planned to be removed in a future release. Red Hat provides bug fixes and support for this feature during the current release lifecycle, but this feature no longer receives enhancements. As an alternative to Fluentd, you can use Vector instead.
Logging includes multiple Fluentd parameters that you can use for tuning the performance of the Fluentd log forwarder. With these parameters, you can change the following Fluentd behaviors:
- Chunk and chunk buffer sizes
- Chunk flushing behavior
- Chunk forwarding retry behavior
Fluentd collects log data in a single blob called a chunk. When Fluentd creates a chunk, the chunk is considered to be in the stage, where the chunk gets filled with data. When the chunk is full, Fluentd moves the chunk to the queue, where chunks are held before being flushed, or written out to their destination. Fluentd can fail to flush a chunk for a number of reasons, such as network issues or capacity issues at the destination. If a chunk cannot be flushed, Fluentd retries flushing as configured.
By default in OpenShift Container Platform, Fluentd uses the exponential backoff method to retry flushing, where Fluentd doubles the time it waits between attempts to retry flushing again, which helps reduce connection requests to the destination. You can disable exponential backoff and use the periodic retry method instead, which retries flushing the chunks at a specified interval.
These parameters can help you determine the trade-offs between latency and throughput.
- To optimize Fluentd for throughput, you could use these parameters to reduce network packet count by configuring larger buffers and queues, delaying flushes, and setting longer times between retries. Be aware that larger buffers require more space on the node file system.
- To optimize for low latency, you could use the parameters to send data as soon as possible, avoid the build-up of batches, have shorter queues and buffers, and use more frequent flush and retries.
You can configure the chunking and flushing behavior using the following parameters in the ClusterLogging custom resource (CR). The parameters are then automatically added to the Fluentd config map for use by Fluentd.
These parameters are:
- Not relevant to most users. The default settings should give good general performance.
- Only for advanced users with detailed knowledge of Fluentd configuration and performance.
- Only for performance tuning. They have no effect on functional aspects of logging.
| Parameter | Description | Default |
|---|---|---|
|
| The maximum size of each chunk. Fluentd stops writing data to a chunk when it reaches this size. Then, Fluentd sends the chunk to the queue and opens a new chunk. |
|
|
| The maximum size of the buffer, which is the total size of the stage and the queue. If the buffer size exceeds this value, Fluentd stops adding data to chunks and fails with an error. All data not in chunks is lost. | Approximately 15% of the node disk distributed across all outputs. |
|
|
The interval between chunk flushes. You can use |
|
|
| The method to perform flushes:
|
|
|
| The number of threads that perform chunk flushing. Increasing the number of threads improves the flush throughput, which hides network latency. |
|
|
| The chunking behavior when the queue is full:
|
|
|
|
The maximum time in seconds for the |
|
|
| The retry method when flushing fails:
|
|
|
| The maximum time interval to attempt retries before the record is discarded. |
|
|
| The time in seconds before the next chunk flush. |
|
For more information on the Fluentd chunk lifecycle, see Buffer Plugins in the Fluentd documentation.
Procedure
Edit the
ClusterLoggingcustom resource (CR) in theopenshift-loggingproject:oc edit ClusterLogging instance
$ oc edit ClusterLogging instanceCopy to Clipboard Copied! Toggle word wrap Toggle overflow Add or modify any of the following parameters:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Specify the maximum size of each chunk before it is queued for flushing.
- 2
- Specify the interval between chunk flushes.
- 3
- Specify the method to perform chunk flushes:
lazy,interval, orimmediate. - 4
- Specify the number of threads to use for chunk flushes.
- 5
- Specify the chunking behavior when the queue is full:
throw_exception,block, ordrop_oldest_chunk. - 6
- Specify the maximum interval in seconds for the
exponential_backoffchunk flushing method. - 7
- Specify the retry type when chunk flushing fails:
exponential_backofforperiodic. - 8
- Specify the time in seconds before the next chunk flush.
- 9
- Specify the maximum size of the chunk buffer.
Verify that the Fluentd pods are redeployed:
oc get pods -l component=collector -n openshift-logging
$ oc get pods -l component=collector -n openshift-loggingCopy to Clipboard Copied! Toggle word wrap Toggle overflow Check that the new values are in the
fluentdconfig map:oc extract configmap/collector-config --confirm
$ oc extract configmap/collector-config --confirmCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example fluentd.conf
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.6. Collecting and storing Kubernetes events Copia collegamentoCollegamento copiato negli appunti!
The OpenShift Container Platform Event Router is a pod that watches Kubernetes events and logs them for collection by the logging. You must manually deploy the Event Router.
The Event Router collects events from all projects and writes them to STDOUT. The collector then forwards those events to the store defined in the ClusterLogForwarder custom resource (CR).
The Event Router adds additional load to Fluentd and can impact the number of other log messages that can be processed.
9.6.1. Deploying and configuring the Event Router Copia collegamentoCollegamento copiato negli appunti!
Use the following steps to deploy the Event Router into your cluster. You should always deploy the Event Router to the openshift-logging project to ensure it collects events from across the cluster.
The Event Router image is not a part of the Red Hat OpenShift Logging Operator and must be downloaded separately.
The following Template object creates the service account, cluster role, and cluster role binding required for the Event Router. The template also configures and deploys the Event Router pod. You can either use this template without making changes or edit the template to change the deployment object CPU and memory requests.
Prerequisites
- You need proper permissions to create service accounts and update cluster role bindings. For example, you can run the following template with a user that has the cluster-admin role.
- The Red Hat OpenShift Logging Operator must be installed.
Procedure
Create a template for the Event Router:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Creates a Service Account in the
openshift-loggingproject for the Event Router. - 2
- Creates a ClusterRole to monitor for events in the cluster.
- 3
- Creates a ClusterRoleBinding to bind the ClusterRole to the service account.
- 4
- Creates a config map in the
openshift-loggingproject to generate the requiredconfig.jsonfile. - 5
- Creates a deployment in the
openshift-loggingproject to generate and configure the Event Router pod. - 6
- Specifies the image, identified by a tag such as
v0.4. - 7
- Specifies the minimum amount of CPU to allocate to the Event Router pod. Defaults to
100m. - 8
- Specifies the minimum amount of memory to allocate to the Event Router pod. Defaults to
128Mi. - 9
- Specifies the
openshift-loggingproject to install objects in.
Use the following command to process and apply the template:
oc process -f <templatefile> | oc apply -n openshift-logging -f -
$ oc process -f <templatefile> | oc apply -n openshift-logging -f -Copy to Clipboard Copied! Toggle word wrap Toggle overflow For example:
oc process -f eventrouter.yaml | oc apply -n openshift-logging -f -
$ oc process -f eventrouter.yaml | oc apply -n openshift-logging -f -Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
serviceaccount/eventrouter created clusterrole.rbac.authorization.k8s.io/event-reader created clusterrolebinding.rbac.authorization.k8s.io/event-reader-binding created configmap/eventrouter created deployment.apps/eventrouter created
serviceaccount/eventrouter created clusterrole.rbac.authorization.k8s.io/event-reader created clusterrolebinding.rbac.authorization.k8s.io/event-reader-binding created configmap/eventrouter created deployment.apps/eventrouter createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow Validate that the Event Router installed in the
openshift-loggingproject:View the new Event Router pod:
oc get pods --selector component=eventrouter -o name -n openshift-logging
$ oc get pods --selector component=eventrouter -o name -n openshift-loggingCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
pod/cluster-logging-eventrouter-d649f97c8-qvv8r
pod/cluster-logging-eventrouter-d649f97c8-qvv8rCopy to Clipboard Copied! Toggle word wrap Toggle overflow View the events collected by the Event Router:
oc logs <cluster_logging_eventrouter_pod> -n openshift-logging
$ oc logs <cluster_logging_eventrouter_pod> -n openshift-loggingCopy to Clipboard Copied! Toggle word wrap Toggle overflow For example:
oc logs cluster-logging-eventrouter-d649f97c8-qvv8r -n openshift-logging
$ oc logs cluster-logging-eventrouter-d649f97c8-qvv8r -n openshift-loggingCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
{"verb":"ADDED","event":{"metadata":{"name":"openshift-service-catalog-controller-manager-remover.1632d931e88fcd8f","namespace":"openshift-service-catalog-removed","selfLink":"/api/v1/namespaces/openshift-service-catalog-removed/events/openshift-service-catalog-controller-manager-remover.1632d931e88fcd8f","uid":"787d7b26-3d2f-4017-b0b0-420db4ae62c0","resourceVersion":"21399","creationTimestamp":"2020-09-08T15:40:26Z"},"involvedObject":{"kind":"Job","namespace":"openshift-service-catalog-removed","name":"openshift-service-catalog-controller-manager-remover","uid":"fac9f479-4ad5-4a57-8adc-cb25d3d9cf8f","apiVersion":"batch/v1","resourceVersion":"21280"},"reason":"Completed","message":"Job completed","source":{"component":"job-controller"},"firstTimestamp":"2020-09-08T15:40:26Z","lastTimestamp":"2020-09-08T15:40:26Z","count":1,"type":"Normal"}}{"verb":"ADDED","event":{"metadata":{"name":"openshift-service-catalog-controller-manager-remover.1632d931e88fcd8f","namespace":"openshift-service-catalog-removed","selfLink":"/api/v1/namespaces/openshift-service-catalog-removed/events/openshift-service-catalog-controller-manager-remover.1632d931e88fcd8f","uid":"787d7b26-3d2f-4017-b0b0-420db4ae62c0","resourceVersion":"21399","creationTimestamp":"2020-09-08T15:40:26Z"},"involvedObject":{"kind":"Job","namespace":"openshift-service-catalog-removed","name":"openshift-service-catalog-controller-manager-remover","uid":"fac9f479-4ad5-4a57-8adc-cb25d3d9cf8f","apiVersion":"batch/v1","resourceVersion":"21280"},"reason":"Completed","message":"Job completed","source":{"component":"job-controller"},"firstTimestamp":"2020-09-08T15:40:26Z","lastTimestamp":"2020-09-08T15:40:26Z","count":1,"type":"Normal"}}Copy to Clipboard Copied! Toggle word wrap Toggle overflow You can also use Kibana to view events by creating an index pattern using the Elasticsearch
infraindex.
Chapter 10. Log storage Copia collegamentoCollegamento copiato negli appunti!
10.1. About log storage Copia collegamentoCollegamento copiato negli appunti!
You can use an internal Loki or Elasticsearch log store on your cluster for storing logs, or you can use a ClusterLogForwarder custom resource (CR) to forward logs to an external store.
10.1.1. Log storage types Copia collegamentoCollegamento copiato negli appunti!
Loki is a horizontally scalable, highly available, multi-tenant log aggregation system offered as an alternative to Elasticsearch as a log store for the logging.
Elasticsearch indexes incoming log records completely during ingestion. Loki only indexes a few fixed labels during ingestion and defers more complex parsing until after the logs have been stored. This means Loki can collect logs more quickly.
10.1.1.1. About the Elasticsearch log store Copia collegamentoCollegamento copiato negli appunti!
The logging Elasticsearch instance is optimized and tested for short term storage, approximately seven days. If you want to retain your logs over a longer term, it is recommended you move the data to a third-party storage system.
Elasticsearch organizes the log data from Fluentd into datastores, or indices, then subdivides each index into multiple pieces called shards, which it spreads across a set of Elasticsearch nodes in an Elasticsearch cluster. You can configure Elasticsearch to make copies of the shards, called replicas, which Elasticsearch also spreads across the Elasticsearch nodes. The ClusterLogging custom resource (CR) allows you to specify how the shards are replicated to provide data redundancy and resilience to failure. You can also specify how long the different types of logs are retained using a retention policy in the ClusterLogging CR.
The number of primary shards for the index templates is equal to the number of Elasticsearch data nodes.
The Red Hat OpenShift Logging Operator and companion OpenShift Elasticsearch Operator ensure that each Elasticsearch node is deployed using a unique deployment that includes its own storage volume. You can use a ClusterLogging custom resource (CR) to increase the number of Elasticsearch nodes, as needed. See the Elasticsearch documentation for considerations involved in configuring storage.
A highly-available Elasticsearch environment requires at least three Elasticsearch nodes, each on a different host.
Role-based access control (RBAC) applied on the Elasticsearch indices enables the controlled access of the logs to the developers. Administrators can access all logs and developers can access only the logs in their projects.
10.1.2. Querying log stores Copia collegamentoCollegamento copiato negli appunti!
You can query Loki by using the LogQL log query language.
10.2. Installing log storage Copia collegamentoCollegamento copiato negli appunti!
You can use the OpenShift CLI (oc) or the OpenShift Container Platform web console to deploy a log store on your OpenShift Container Platform cluster.
The Logging 5.9 release does not contain an updated version of the OpenShift Elasticsearch Operator. If you currently use the OpenShift Elasticsearch Operator released with Logging 5.8, it will continue to work with Logging until the EOL of Logging 5.8. As an alternative to using the OpenShift Elasticsearch Operator to manage the default log storage, you can use the Loki Operator. For more information on the Logging lifecycle dates, see Platform Agnostic Operators.
10.2.1. Deploying a Loki log store Copia collegamentoCollegamento copiato negli appunti!
You can use the Loki Operator to deploy an internal Loki log store on your OpenShift Container Platform cluster. After install the Loki Operator, you must configure Loki object storage by creating a secret, and create a LokiStack custom resource (CR).
10.2.1.1. Loki deployment sizing Copia collegamentoCollegamento copiato negli appunti!
Sizing for Loki follows the format of 1x.<size> where the value 1x is number of instances and <size> specifies performance capabilities.
It is not possible to change the number 1x for the deployment size.
| 1x.demo | 1x.extra-small | 1x.small | 1x.medium | |
|---|---|---|---|---|
| Data transfer | Demo use only | 100GB/day | 500GB/day | 2TB/day |
| Queries per second (QPS) | Demo use only | 1-25 QPS at 200ms | 25-50 QPS at 200ms | 25-75 QPS at 200ms |
| Replication factor | None | 2 | 2 | 2 |
| Total CPU requests | None | 14 vCPUs | 34 vCPUs | 54 vCPUs |
| Total CPU requests if using the ruler | None | 16 vCPUs | 42 vCPUs | 70 vCPUs |
| Total memory requests | None | 31Gi | 67Gi | 139Gi |
| Total memory requests if using the ruler | None | 35Gi | 83Gi | 171Gi |
| Total disk requests | 40Gi | 430Gi | 430Gi | 590Gi |
| Total disk requests if using the ruler | 60Gi | 750Gi | 750Gi | 910Gi |
10.2.1.2. Installing the Loki Operator by using the OpenShift Container Platform web console Copia collegamentoCollegamento copiato negli appunti!
To install and configure logging on your OpenShift Container Platform cluster, additional Operators must be installed. This can be done from the Operator Hub within the web console.
OpenShift Container Platform Operators use custom resources (CR) to manage applications and their components. High-level configuration and settings are provided by the user within a CR. The Operator translates high-level directives into low-level actions, based on best practices embedded within the Operator’s logic. A custom resource definition (CRD) defines a CR and lists all the configurations available to users of the Operator. Installing an Operator creates the CRDs, which are then used to generate CRs.
Prerequisites
- You have access to a supported object store (AWS S3, Google Cloud Storage, Azure, Swift, Minio, OpenShift Data Foundation).
- You have administrator permissions.
- You have access to the OpenShift Container Platform web console.
Procedure
- In the OpenShift Container Platform web console Administrator perspective, go to Operators → OperatorHub.
Type Loki Operator in the Filter by keyword field. Click Loki Operator in the list of available Operators, and then click Install.
ImportantThe Community Loki Operator is not supported by Red Hat.
Select stable or stable-x.y as the Update channel.
NoteThe stable channel only provides updates to the most recent release of logging. To continue receiving updates for prior releases, you must change your subscription channel to stable-x.y, where
x.yrepresents the major and minor version of logging you have installed. For example, stable-5.7.The Loki Operator must be deployed to the global operator group namespace
openshift-operators-redhat, so the Installation mode and Installed Namespace are already selected. If this namespace does not already exist, it is created for you.Select Enable operator-recommended cluster monitoring on this namespace.
This option sets the
openshift.io/cluster-monitoring: "true"label in theNamespaceobject. You must select this option to ensure that cluster monitoring scrapes theopenshift-operators-redhatnamespace.For Update approval select Automatic, then click Install.
If the approval strategy in the subscription is set to Automatic, the update process initiates as soon as a new Operator version is available in the selected channel. If the approval strategy is set to Manual, you must manually approve pending updates.
Verification
- Go to Operators → Installed Operators.
- Make sure the openshift-logging project is selected.
- In the Status column, verify that you see green checkmarks with InstallSucceeded and the text Up to date.
An Operator might display a Failed status before the installation finishes. If the Operator install completes with an InstallSucceeded message, refresh the page.
10.2.1.3. Creating a secret for Loki object storage by using the web console Copia collegamentoCollegamento copiato negli appunti!
To configure Loki object storage, you must create a secret. You can create a secret by using the OpenShift Container Platform web console.
Prerequisites
- You have administrator permissions.
- You have access to the OpenShift Container Platform web console.
- You installed the Loki Operator.
Procedure
- Go to Workloads → Secrets in the Administrator perspective of the OpenShift Container Platform web console.
- From the Create drop-down list, select From YAML.
Create a secret that uses the
access_key_idandaccess_key_secretfields to specify your credentials and thebucketnames,endpoint, andregionfields to define the object storage location. AWS is used in the following example:Example
SecretobjectCopy to Clipboard Copied! Toggle word wrap Toggle overflow
10.2.1.4. Creating a LokiStack custom resource by using the web console Copia collegamentoCollegamento copiato negli appunti!
You can create a LokiStack custom resource (CR) by using the OpenShift Container Platform web console.
Prerequisites
- You have administrator permissions.
- You have access to the OpenShift Container Platform web console.
- You installed the Loki Operator.
Procedure
- Go to the Operators → Installed Operators page. Click the All instances tab.
- From the Create new drop-down list, select LokiStack.
Select YAML view, and then use the following template to create a
LokiStackCR:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Use the name
logging-loki. - 2
- Specify the deployment size. In the logging 5.8 and later versions, the supported size options for production instances of Loki are
1x.extra-small,1x.small, or1x.medium.ImportantIt is not possible to change the number
1xfor the deployment size. - 3
- Specify the secret used for your log storage.
- 4
- Specify the corresponding storage type.
- 5
- Enter the name of a storage class for temporary storage. For best performance, specify a storage class that allocates block storage. Available storage classes for your cluster can be listed by using the
oc get storageclassescommand. - 6
- LokiStack defaults to running in multi-tenant mode, which cannot be modified. One tenant is provided for each log type: audit, infrastructure, and application logs. This enables access control for individual users and user groups to different log streams.
- Click Create.
10.2.1.5. Installing Loki Operator by using the CLI Copia collegamentoCollegamento copiato negli appunti!
To install and configure logging on your OpenShift Container Platform cluster, additional Operators must be installed. This can be done from the OpenShift Container Platform CLI.
OpenShift Container Platform Operators use custom resources (CR) to manage applications and their components. High-level configuration and settings are provided by the user within a CR. The Operator translates high-level directives into low-level actions, based on best practices embedded within the Operator’s logic. A custom resource definition (CRD) defines a CR and lists all the configurations available to users of the Operator. Installing an Operator creates the CRDs, which are then used to generate CRs.
Prerequisites
- You have administrator permissions.
-
You installed the OpenShift CLI (
oc). - You have access to a supported object store. For example: AWS S3, Google Cloud Storage, Azure, Swift, Minio, or OpenShift Data Foundation.
Procedure
Create a
Subscriptionobject:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- You must specify the
openshift-operators-redhatnamespace. - 2
- Specify
stable, orstable-5.<y>as the channel. - 3
- Specify
redhat-operators. If your OpenShift Container Platform cluster is installed on a restricted network, also known as a disconnected cluster, specify the name of theCatalogSourceobject you created when you configured the Operator Lifecycle Manager (OLM).
Apply the
Subscriptionobject:oc apply -f <filename>.yaml
$ oc apply -f <filename>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
10.2.1.6. Creating a secret for Loki object storage by using the CLI Copia collegamentoCollegamento copiato negli appunti!
To configure Loki object storage, you must create a secret. You can do this by using the OpenShift CLI (oc).
Prerequisites
- You have administrator permissions.
- You installed the Loki Operator.
-
You installed the OpenShift CLI (
oc).
Procedure
Create a secret in the directory that contains your certificate and key files by running the following command:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Use generic or opaque secrets for best results.
Verification
Verify that a secret was created by running the following command:
oc get secrets
$ oc get secretsCopy to Clipboard Copied! Toggle word wrap Toggle overflow
10.2.1.7. Creating a LokiStack custom resource by using the CLI Copia collegamentoCollegamento copiato negli appunti!
You can create a LokiStack custom resource (CR) by using the OpenShift CLI (oc).
Prerequisites
- You have administrator permissions.
- You installed the Loki Operator.
-
You installed the OpenShift CLI (
oc).
Procedure
Create a
LokiStackCR:Example
LokiStackCRCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Specify the deployment size. In the logging 5.8 and later versions, the supported size options for production instances of Loki are
1x.extra-small,1x.small, or1x.medium.ImportantIt is not possible to change the number
1xfor the deployment size. - 2
- Specify the name of your log store secret.
- 3
- Specify the type of your log store secret.
- 4
- Specify the name of a storage class for temporary storage. For best performance, specify a storage class that allocates block storage. Available storage classes for your cluster can be listed by using the
oc get storageclassescommand. - 5
- LokiStack defaults to running in multi-tenant mode, which cannot be modified. One tenant is provided for each log type: audit, infrastructure, and application logs. This enables access control for individual users and user groups to different log streams.
Apply the
LokiStackCR by running the following command:oc apply -f <filename>.yaml
$ oc apply -f <filename>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Verification
Verify the installation by listing the pods in the
openshift-loggingproject by running the following command and observing the output:oc get pods -n openshift-logging
$ oc get pods -n openshift-loggingCopy to Clipboard Copied! Toggle word wrap Toggle overflow Confirm that you see several pods for components of the logging, similar to the following list:
Example output
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.2.2. Loki object storage Copia collegamentoCollegamento copiato negli appunti!
The Loki Operator supports AWS S3, as well as other S3 compatible object stores such as Minio and OpenShift Data Foundation. Azure, GCS, and Swift are also supported.
The recommended nomenclature for Loki storage is logging-loki-<your_storage_provider>.
The following table shows the type values within the LokiStack custom resource (CR) for each storage provider. For more information, see the section on your storage provider.
| Storage provider | Secret type value |
|---|---|
| AWS | s3 |
| Azure | azure |
| Google Cloud | gcs |
| Minio | s3 |
| OpenShift Data Foundation | s3 |
| Swift | swift |
10.2.2.1. AWS storage Copia collegamentoCollegamento copiato negli appunti!
Prerequisites
- You installed the Loki Operator.
-
You installed the OpenShift CLI (
oc). - You created a bucket on AWS.
- You created an AWS IAM Policy and IAM User.
Procedure
Create an object storage secret with the name
logging-loki-awsby running the following command:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.2.2.2. Azure storage Copia collegamentoCollegamento copiato negli appunti!
Prerequisites
- You installed the Loki Operator.
-
You installed the OpenShift CLI (
oc). - You created a bucket on Azure.
Procedure
Create an object storage secret with the name
logging-loki-azureby running the following command:oc create secret generic logging-loki-azure \ --from-literal=container="<azure_container_name>" \ --from-literal=environment="<azure_environment>" \ --from-literal=account_name="<azure_account_name>" \ --from-literal=account_key="<azure_account_key>"
$ oc create secret generic logging-loki-azure \ --from-literal=container="<azure_container_name>" \ --from-literal=environment="<azure_environment>" \1 --from-literal=account_name="<azure_account_name>" \ --from-literal=account_key="<azure_account_key>"Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Supported environment values are
AzureGlobal,AzureChinaCloud,AzureGermanCloud, orAzureUSGovernment.
10.2.2.3. Google Cloud Platform storage Copia collegamentoCollegamento copiato negli appunti!
Prerequisites
- You installed the Loki Operator.
-
You installed the OpenShift CLI (
oc). - You created a project on Google Cloud Platform (GCP).
- You created a bucket in the same project.
- You created a service account in the same project for GCP authentication.
Procedure
-
Copy the service account credentials received from GCP into a file called
key.json. Create an object storage secret with the name
logging-loki-gcsby running the following command:oc create secret generic logging-loki-gcs \ --from-literal=bucketname="<bucket_name>" \ --from-file=key.json="<path/to/key.json>"
$ oc create secret generic logging-loki-gcs \ --from-literal=bucketname="<bucket_name>" \ --from-file=key.json="<path/to/key.json>"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.2.2.4. Minio storage Copia collegamentoCollegamento copiato negli appunti!
Prerequisites
Procedure
Create an object storage secret with the name
logging-loki-minioby running the following command:oc create secret generic logging-loki-minio \ --from-literal=bucketnames="<bucket_name>" \ --from-literal=endpoint="<minio_bucket_endpoint>" \ --from-literal=access_key_id="<minio_access_key_id>" \ --from-literal=access_key_secret="<minio_access_key_secret>"
$ oc create secret generic logging-loki-minio \ --from-literal=bucketnames="<bucket_name>" \ --from-literal=endpoint="<minio_bucket_endpoint>" \ --from-literal=access_key_id="<minio_access_key_id>" \ --from-literal=access_key_secret="<minio_access_key_secret>"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.2.2.5. OpenShift Data Foundation storage Copia collegamentoCollegamento copiato negli appunti!
Prerequisites
- You installed the Loki Operator.
-
You installed the OpenShift CLI (
oc). - You deployed OpenShift Data Foundation.
- You configured your OpenShift Data Foundation cluster for object storage.
Procedure
Create an
ObjectBucketClaimcustom resource in theopenshift-loggingnamespace:Copy to Clipboard Copied! Toggle word wrap Toggle overflow Get bucket properties from the associated
ConfigMapobject by running the following command:BUCKET_HOST=$(oc get -n openshift-logging configmap loki-bucket-odf -o jsonpath='{.data.BUCKET_HOST}') BUCKET_NAME=$(oc get -n openshift-logging configmap loki-bucket-odf -o jsonpath='{.data.BUCKET_NAME}') BUCKET_PORT=$(oc get -n openshift-logging configmap loki-bucket-odf -o jsonpath='{.data.BUCKET_PORT}')BUCKET_HOST=$(oc get -n openshift-logging configmap loki-bucket-odf -o jsonpath='{.data.BUCKET_HOST}') BUCKET_NAME=$(oc get -n openshift-logging configmap loki-bucket-odf -o jsonpath='{.data.BUCKET_NAME}') BUCKET_PORT=$(oc get -n openshift-logging configmap loki-bucket-odf -o jsonpath='{.data.BUCKET_PORT}')Copy to Clipboard Copied! Toggle word wrap Toggle overflow Get bucket access key from the associated secret by running the following command:
ACCESS_KEY_ID=$(oc get -n openshift-logging secret loki-bucket-odf -o jsonpath='{.data.AWS_ACCESS_KEY_ID}' | base64 -d) SECRET_ACCESS_KEY=$(oc get -n openshift-logging secret loki-bucket-odf -o jsonpath='{.data.AWS_SECRET_ACCESS_KEY}' | base64 -d)ACCESS_KEY_ID=$(oc get -n openshift-logging secret loki-bucket-odf -o jsonpath='{.data.AWS_ACCESS_KEY_ID}' | base64 -d) SECRET_ACCESS_KEY=$(oc get -n openshift-logging secret loki-bucket-odf -o jsonpath='{.data.AWS_SECRET_ACCESS_KEY}' | base64 -d)Copy to Clipboard Copied! Toggle word wrap Toggle overflow Create an object storage secret with the name
logging-loki-odfby running the following command:oc create -n openshift-logging secret generic logging-loki-odf \ --from-literal=access_key_id="<access_key_id>" \ --from-literal=access_key_secret="<secret_access_key>" \ --from-literal=bucketnames="<bucket_name>" \ --from-literal=endpoint="https://<bucket_host>:<bucket_port>"
$ oc create -n openshift-logging secret generic logging-loki-odf \ --from-literal=access_key_id="<access_key_id>" \ --from-literal=access_key_secret="<secret_access_key>" \ --from-literal=bucketnames="<bucket_name>" \ --from-literal=endpoint="https://<bucket_host>:<bucket_port>"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.2.2.6. Swift storage Copia collegamentoCollegamento copiato negli appunti!
Prerequisites
- You installed the Loki Operator.
-
You installed the OpenShift CLI (
oc). - You created a bucket on Swift.
Procedure
Create an object storage secret with the name
logging-loki-swiftby running the following command:Copy to Clipboard Copied! Toggle word wrap Toggle overflow You can optionally provide project-specific data, region, or both by running the following command:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.2.3. Deploying an Elasticsearch log store Copia collegamentoCollegamento copiato negli appunti!
You can use the OpenShift Elasticsearch Operator to deploy an internal Elasticsearch log store on your OpenShift Container Platform cluster.
The Logging 5.9 release does not contain an updated version of the OpenShift Elasticsearch Operator. If you currently use the OpenShift Elasticsearch Operator released with Logging 5.8, it will continue to work with Logging until the EOL of Logging 5.8. As an alternative to using the OpenShift Elasticsearch Operator to manage the default log storage, you can use the Loki Operator. For more information on the Logging lifecycle dates, see Platform Agnostic Operators.
10.2.3.1. Storage considerations for Elasticsearch Copia collegamentoCollegamento copiato negli appunti!
A persistent volume is required for each Elasticsearch deployment configuration. On OpenShift Container Platform this is achieved using persistent volume claims (PVCs).
If you use a local volume for persistent storage, do not use a raw block volume, which is described with volumeMode: block in the LocalVolume object. Elasticsearch cannot use raw block volumes.
The OpenShift Elasticsearch Operator names the PVCs using the Elasticsearch resource name.
Fluentd ships any logs from systemd journal and /var/log/containers/*.log to Elasticsearch.
Elasticsearch requires sufficient memory to perform large merge operations. If it does not have enough memory, it becomes unresponsive. To avoid this problem, evaluate how much application log data you need, and allocate approximately double that amount of free storage capacity.
By default, when storage capacity is 85% full, Elasticsearch stops allocating new data to the node. At 90%, Elasticsearch attempts to relocate existing shards from that node to other nodes if possible. But if no nodes have a free capacity below 85%, Elasticsearch effectively rejects creating new indices and becomes RED.
These low and high watermark values are Elasticsearch defaults in the current release. You can modify these default values. Although the alerts use the same default values, you cannot change these values in the alerts.
10.2.3.2. Installing the OpenShift Elasticsearch Operator by using the web console Copia collegamentoCollegamento copiato negli appunti!
The OpenShift Elasticsearch Operator creates and manages the Elasticsearch cluster used by OpenShift Logging.
Prerequisites
Elasticsearch is a memory-intensive application. Each Elasticsearch node needs at least 16GB of memory for both memory requests and limits, unless you specify otherwise in the
ClusterLoggingcustom resource.The initial set of OpenShift Container Platform nodes might not be large enough to support the Elasticsearch cluster. You must add additional nodes to the OpenShift Container Platform cluster to run with the recommended or higher memory, up to a maximum of 64GB for each Elasticsearch node.
Elasticsearch nodes can operate with a lower memory setting, though this is not recommended for production environments.
Ensure that you have the necessary persistent storage for Elasticsearch. Note that each Elasticsearch node requires its own storage volume.
NoteIf you use a local volume for persistent storage, do not use a raw block volume, which is described with
volumeMode: blockin theLocalVolumeobject. Elasticsearch cannot use raw block volumes.
Procedure
- In the OpenShift Container Platform web console, click Operators → OperatorHub.
- Click OpenShift Elasticsearch Operator from the list of available Operators, and click Install.
- Ensure that the All namespaces on the cluster is selected under Installation mode.
Ensure that openshift-operators-redhat is selected under Installed Namespace.
You must specify the
openshift-operators-redhatnamespace. Theopenshift-operatorsnamespace might contain Community Operators, which are untrusted and could publish a metric with the same name as OpenShift Container Platform metric, which would cause conflicts.Select Enable operator recommended cluster monitoring on this namespace.
This option sets the
openshift.io/cluster-monitoring: "true"label in theNamespaceobject. You must select this option to ensure that cluster monitoring scrapes theopenshift-operators-redhatnamespace.- Select stable-5.x as the Update channel.
Select an Update approval strategy:
- The Automatic strategy allows Operator Lifecycle Manager (OLM) to automatically update the Operator when a new version is available.
- The Manual strategy requires a user with appropriate credentials to approve the Operator update.
- Click Install.
Verification
- Verify that the OpenShift Elasticsearch Operator installed by switching to the Operators → Installed Operators page.
- Ensure that OpenShift Elasticsearch Operator is listed in all projects with a Status of Succeeded.
10.2.3.3. Installing the OpenShift Elasticsearch Operator by using the CLI Copia collegamentoCollegamento copiato negli appunti!
You can use the OpenShift CLI (oc) to install the OpenShift Elasticsearch Operator.
Prerequisites
Ensure that you have the necessary persistent storage for Elasticsearch. Note that each Elasticsearch node requires its own storage volume.
NoteIf you use a local volume for persistent storage, do not use a raw block volume, which is described with
volumeMode: blockin theLocalVolumeobject. Elasticsearch cannot use raw block volumes.Elasticsearch is a memory-intensive application. By default, OpenShift Container Platform installs three Elasticsearch nodes with memory requests and limits of 16 GB. This initial set of three OpenShift Container Platform nodes might not have enough memory to run Elasticsearch within your cluster. If you experience memory issues that are related to Elasticsearch, add more Elasticsearch nodes to your cluster rather than increasing the memory on existing nodes.
- You have administrator permissions.
-
You have installed the OpenShift CLI (
oc).
Procedure
Create a
Namespaceobject as a YAML file:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- You must specify the
openshift-operators-redhatnamespace. To prevent possible conflicts with metrics, configure the Prometheus Cluster Monitoring stack to scrape metrics from theopenshift-operators-redhatnamespace and not theopenshift-operatorsnamespace. Theopenshift-operatorsnamespace might contain community Operators, which are untrusted and could publish a metric with the same name as metric, which would cause conflicts. - 2
- String. You must specify this label as shown to ensure that cluster monitoring scrapes the
openshift-operators-redhatnamespace.
Apply the
Namespaceobject by running the following command:oc apply -f <filename>.yaml
$ oc apply -f <filename>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Create an
OperatorGroupobject as a YAML file:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- You must specify the
openshift-operators-redhatnamespace.
Apply the
OperatorGroupobject by running the following command:oc apply -f <filename>.yaml
$ oc apply -f <filename>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Create a
Subscriptionobject to subscribe the namespace to the OpenShift Elasticsearch Operator:Example Subscription
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- You must specify the
openshift-operators-redhatnamespace. - 2
- Specify
stable, orstable-x.yas the channel. See the following note. - 3
Automaticallows the Operator Lifecycle Manager (OLM) to automatically update the Operator when a new version is available.Manualrequires a user with appropriate credentials to approve the Operator update.- 4
- Specify
redhat-operators. If your OpenShift Container Platform cluster is installed on a restricted network, also known as a disconnected cluster, specify the name of theCatalogSourceobject created when you configured the Operator Lifecycle Manager (OLM).
NoteSpecifying
stableinstalls the current version of the latest stable release. UsingstablewithinstallPlanApproval: "Automatic"automatically upgrades your Operators to the latest stable major and minor release.Specifying
stable-x.yinstalls the current minor version of a specific major release. Usingstable-x.ywithinstallPlanApproval: "Automatic"automatically upgrades your Operators to the latest stable minor release within the major release.Apply the subscription by running the following command:
oc apply -f <filename>.yaml
$ oc apply -f <filename>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow The OpenShift Elasticsearch Operator is installed to the
openshift-operators-redhatnamespace and copied to each project in the cluster.
Verification
Run the following command:
oc get csv -n --all-namespaces
$ oc get csv -n --all-namespacesCopy to Clipboard Copied! Toggle word wrap Toggle overflow Observe the output and confirm that pods for the OpenShift Elasticsearch Operator exist in each namespace
Example output
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.2.4. Configuring log storage Copia collegamentoCollegamento copiato negli appunti!
You can configure which log storage type your logging uses by modifying the ClusterLogging custom resource (CR).
Prerequisites
- You have administrator permissions.
-
You have installed the OpenShift CLI (
oc). - You have installed the Red Hat OpenShift Logging Operator and an internal log store that is either the LokiStack or Elasticsearch.
-
You have created a
ClusterLoggingCR.
The Logging 5.9 release does not contain an updated version of the OpenShift Elasticsearch Operator. If you currently use the OpenShift Elasticsearch Operator released with Logging 5.8, it will continue to work with Logging until the EOL of Logging 5.8. As an alternative to using the OpenShift Elasticsearch Operator to manage the default log storage, you can use the Loki Operator. For more information on the Logging lifecycle dates, see Platform Agnostic Operators.
Procedure
Modify the
ClusterLoggingCRlogStorespec:ClusterLoggingCR exampleCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Specify the log store type. This can be either
lokistackorelasticsearch. - 2
- Optional configuration options for the Elasticsearch log store.
- 3
- Specify the redundancy type. This value can be
ZeroRedundancy,SingleRedundancy,MultipleRedundancy, orFullRedundancy. - 4
- Optional configuration options for LokiStack.
Example
ClusterLoggingCR to specify LokiStack as the log storeCopy to Clipboard Copied! Toggle word wrap Toggle overflow Apply the
ClusterLoggingCR by running the following command:oc apply -f <filename>.yaml
$ oc apply -f <filename>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
10.3. Configuring the LokiStack log store Copia collegamentoCollegamento copiato negli appunti!
In logging documentation, LokiStack refers to the logging supported combination of Loki and web proxy with OpenShift Container Platform authentication integration. LokiStack’s proxy uses OpenShift Container Platform authentication to enforce multi-tenancy. Loki refers to the log store as either the individual component or an external store.
10.3.1. Creating a new group for the cluster-admin user role Copia collegamentoCollegamento copiato negli appunti!
Querying application logs for multiple namespaces as a cluster-admin user, where the sum total of characters of all of the namespaces in the cluster is greater than 5120, results in the error Parse error: input size too long (XXXX > 5120). For better control over access to logs in LokiStack, make the cluster-admin user a member of the cluster-admin group. If the cluster-admin group does not exist, create it and add the desired users to it.
Use the following procedure to create a new group for users with cluster-admin permissions.
Procedure
Enter the following command to create a new group:
oc adm groups new cluster-admin
$ oc adm groups new cluster-adminCopy to Clipboard Copied! Toggle word wrap Toggle overflow Enter the following command to add the desired user to the
cluster-admingroup:oc adm groups add-users cluster-admin <username>
$ oc adm groups add-users cluster-admin <username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Enter the following command to add
cluster-adminuser role to the group:oc adm policy add-cluster-role-to-group cluster-admin cluster-admin
$ oc adm policy add-cluster-role-to-group cluster-admin cluster-adminCopy to Clipboard Copied! Toggle word wrap Toggle overflow
10.3.2. LokiStack behavior during cluster restarts Copia collegamentoCollegamento copiato negli appunti!
In logging version 5.8 and newer versions, when an OpenShift Container Platform cluster is restarted, LokiStack ingestion and the query path continue to operate within the available CPU and memory resources available for the node. This means that there is no downtime for the LokiStack during OpenShift Container Platform cluster updates. This behavior is achieved by using PodDisruptionBudget resources. The Loki Operator provisions PodDisruptionBudget resources for Loki, which determine the minimum number of pods that must be available per component to ensure normal operations under certain conditions.
10.3.3. Configuring Loki to tolerate node failure Copia collegamentoCollegamento copiato negli appunti!
In the logging 5.8 and later versions, the Loki Operator supports setting pod anti-affinity rules to request that pods of the same component are scheduled on different available nodes in the cluster.
Affinity is a property of pods that controls the nodes on which they prefer to be scheduled. Anti-affinity is a property of pods that prevents a pod from being scheduled on a node.
In OpenShift Container Platform, pod affinity and pod anti-affinity allow you to constrain which nodes your pod is eligible to be scheduled on based on the key-value labels on other pods.
The Operator sets default, preferred podAntiAffinity rules for all Loki components, which includes the compactor, distributor, gateway, indexGateway, ingester, querier, queryFrontend, and ruler components.
You can override the preferred podAntiAffinity settings for Loki components by configuring required settings in the requiredDuringSchedulingIgnoredDuringExecution field:
Example user settings for the ingester component
10.3.4. Zone aware data replication Copia collegamentoCollegamento copiato negli appunti!
In the logging 5.8 and later versions, the Loki Operator offers support for zone-aware data replication through pod topology spread constraints. Enabling this feature enhances reliability and safeguards against log loss in the event of a single zone failure. When configuring the deployment size as 1x.extra.small, 1x.small, or 1x.medium, the replication.factor field is automatically set to 2.
To ensure proper replication, you need to have at least as many availability zones as the replication factor specifies. While it is possible to have more availability zones than the replication factor, having fewer zones can lead to write failures. Each zone should host an equal number of instances for optimal operation.
Example LokiStack CR with zone replication enabled
- 1
- Deprecated field, values entered are overwritten by
replication.factor. - 2
- This value is automatically set when deployment size is selected at setup.
- 3
- The maximum difference in number of pods between any two topology domains. The default is 1, and you cannot specify a value of 0.
- 4
- Defines zones in the form of a topology key that corresponds to a node label.
10.3.4.1. Recovering Loki pods from failed zones Copia collegamentoCollegamento copiato negli appunti!
In OpenShift Container Platform a zone failure happens when specific availability zone resources become inaccessible. Availability zones are isolated areas within a cloud provider’s data center, aimed at enhancing redundancy and fault tolerance. If your OpenShift Container Platform cluster isn’t configured to handle this, a zone failure can lead to service or data loss.
Loki pods are part of a StatefulSet, and they come with Persistent Volume Claims (PVCs) provisioned by a StorageClass object. Each Loki pod and its PVCs reside in the same zone. When a zone failure occurs in a cluster, the StatefulSet controller automatically attempts to recover the affected pods in the failed zone.
The following procedure will delete the PVCs in the failed zone, and all data contained therein. To avoid complete data loss the replication factor field of the LokiStack CR should always be set to a value greater than 1 to ensure that Loki is replicating.
Prerequisites
- Logging version 5.8 or later.
-
Verify your
LokiStackCR has a replication factor greater than 1. - Zone failure detected by the control plane, and nodes in the failed zone are marked by cloud provider integration.
The StatefulSet controller automatically attempts to reschedule pods in a failed zone. Because the associated PVCs are also in the failed zone, automatic rescheduling to a different zone does not work. You must manually delete the PVCs in the failed zone to allow successful re-creation of the stateful Loki Pod and its provisioned PVC in the new zone.
Procedure
List the pods in
Pendingstatus by running the following command:oc get pods --field-selector status.phase==Pending -n openshift-logging
$ oc get pods --field-selector status.phase==Pending -n openshift-loggingCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example
oc get podsoutputNAME READY STATUS RESTARTS AGE logging-loki-index-gateway-1 0/1 Pending 0 17m logging-loki-ingester-1 0/1 Pending 0 16m logging-loki-ruler-1 0/1 Pending 0 16m
NAME READY STATUS RESTARTS AGE1 logging-loki-index-gateway-1 0/1 Pending 0 17m logging-loki-ingester-1 0/1 Pending 0 16m logging-loki-ruler-1 0/1 Pending 0 16mCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- These pods are in
Pendingstatus because their corresponding PVCs are in the failed zone.
List the PVCs in
Pendingstatus by running the following command:oc get pvc -o=json -n openshift-logging | jq '.items[] | select(.status.phase == "Pending") | .metadata.name' -r
$ oc get pvc -o=json -n openshift-logging | jq '.items[] | select(.status.phase == "Pending") | .metadata.name' -rCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example
oc get pvcoutputstorage-logging-loki-index-gateway-1 storage-logging-loki-ingester-1 wal-logging-loki-ingester-1 storage-logging-loki-ruler-1 wal-logging-loki-ruler-1
storage-logging-loki-index-gateway-1 storage-logging-loki-ingester-1 wal-logging-loki-ingester-1 storage-logging-loki-ruler-1 wal-logging-loki-ruler-1Copy to Clipboard Copied! Toggle word wrap Toggle overflow Delete the PVC(s) for a pod by running the following command:
oc delete pvc __<pvc_name>__ -n openshift-logging
$ oc delete pvc __<pvc_name>__ -n openshift-loggingCopy to Clipboard Copied! Toggle word wrap Toggle overflow Then delete the pod(s) by running the following command:
oc delete pod __<pod_name>__ -n openshift-logging
$ oc delete pod __<pod_name>__ -n openshift-loggingCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Once these objects have been successfully deleted, they should automatically be rescheduled in an available zone.
10.3.4.1.1. Troubleshooting PVC in a terminating state Copia collegamentoCollegamento copiato negli appunti!
The PVCs might hang in the terminating state without being deleted, if PVC metadata finalizers are set to kubernetes.io/pv-protection. Removing the finalizers should allow the PVCs to delete successfully.
Remove the finalizer for each PVC by running the command below, then retry deletion.
oc patch pvc __<pvc_name>__ -p '{"metadata":{"finalizers":null}}' -n openshift-logging$ oc patch pvc __<pvc_name>__ -p '{"metadata":{"finalizers":null}}' -n openshift-loggingCopy to Clipboard Copied! Toggle word wrap Toggle overflow
10.3.5. Fine grained access for Loki logs Copia collegamentoCollegamento copiato negli appunti!
In logging 5.8 and later, the Red Hat OpenShift Logging Operator does not grant all users access to logs by default. As an administrator, you must configure your users' access unless the Operator was upgraded and prior configurations are in place. Depending on your configuration and need, you can configure fine grain access to logs using the following:
- Cluster wide policies
- Namespace scoped policies
- Creation of custom admin groups
As an administrator, you need to create the role bindings and cluster role bindings appropriate for your deployment. The Red Hat OpenShift Logging Operator provides the following cluster roles:
-
cluster-logging-application-viewgrants permission to read application logs. -
cluster-logging-infrastructure-viewgrants permission to read infrastructure logs. -
cluster-logging-audit-viewgrants permission to read audit logs.
If you have upgraded from a prior version, an additional cluster role logging-application-logs-reader and associated cluster role binding logging-all-authenticated-application-logs-reader provide backward compatibility, allowing any authenticated user read access in their namespaces.
Users with access by namespace must provide a namespace when querying application logs.
10.3.5.1. Cluster wide access Copia collegamentoCollegamento copiato negli appunti!
Cluster role binding resources reference cluster roles, and set permissions cluster wide.
Example ClusterRoleBinding
10.3.5.2. Namespaced access Copia collegamentoCollegamento copiato negli appunti!
RoleBinding resources can be used with ClusterRole objects to define the namespace a user or group has access to logs for.
Example RoleBinding
- 1
- Specifies the namespace this
RoleBindingapplies to.
10.3.5.3. Custom admin group access Copia collegamentoCollegamento copiato negli appunti!
If you have a large deployment with several users who require broader permissions, you can create a custom group using the adminGroup field. Users who are members of any group specified in the adminGroups field of the LokiStack CR are considered administrators.
Administrator users have access to all application logs in all namespaces, if they also get assigned the cluster-logging-application-view role.
Example LokiStack CR
10.3.6. Enabling stream-based retention with Loki Copia collegamentoCollegamento copiato negli appunti!
With Logging version 5.6 and higher, you can configure retention policies based on log streams. Rules for these may be set globally, per tenant, or both. If you configure both, tenant rules apply before global rules.
If there is no retention period defined on the s3 bucket or in the LokiStack custom resource (CR), then the logs are not pruned and they stay in the s3 bucket forever, which might fill up the s3 storage.
Although logging version 5.9 and higher supports schema v12, v13 is recommended.
To enable stream-based retention, create a
LokiStackCR:Example global stream-based retention
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Sets retention policy for all log streams. Note: This field does not impact the retention period for stored logs in object storage.
- 2
- Retention is enabled in the cluster when this block is added to the CR.
- 3
- Contains the LogQL query used to define the log stream.
Example per-tenant stream-based retention
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Sets retention policy by tenant. Valid tenant types are
application,audit, andinfrastructure. - 2
- Contains the LogQL query used to define the log stream.
Apply the
LokiStackCR:oc apply -f <filename>.yaml
$ oc apply -f <filename>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
This is not for managing the retention for stored logs. Global retention periods for stored logs to a supported maximum of 30 days is configured with your object storage.
10.3.7. Troubleshooting Loki rate limit errors Copia collegamentoCollegamento copiato negli appunti!
If the Log Forwarder API forwards a large block of messages that exceeds the rate limit to Loki, Loki generates rate limit (429) errors.
These errors can occur during normal operation. For example, when adding the logging to a cluster that already has some logs, rate limit errors might occur while the logging tries to ingest all of the existing log entries. In this case, if the rate of addition of new logs is less than the total rate limit, the historical data is eventually ingested, and the rate limit errors are resolved without requiring user intervention.
In cases where the rate limit errors continue to occur, you can fix the issue by modifying the LokiStack custom resource (CR).
The LokiStack CR is not available on Grafana-hosted Loki. This topic does not apply to Grafana-hosted Loki servers.
Conditions
- The Log Forwarder API is configured to forward logs to Loki.
Your system sends a block of messages that is larger than 2 MB to Loki. For example:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow After you enter
oc logs -n openshift-logging -l component=collector, the collector logs in your cluster show a line containing one of the following error messages:429 Too Many Requests Ingestion rate limit exceeded
429 Too Many Requests Ingestion rate limit exceededCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example Vector error message
2023-08-25T16:08:49.301780Z WARN sink{component_kind="sink" component_id=default_loki_infra component_type=loki component_name=default_loki_infra}: vector::sinks::util::retries: Retrying after error. error=Server responded with an error: 429 Too Many Requests internal_log_rate_limit=true2023-08-25T16:08:49.301780Z WARN sink{component_kind="sink" component_id=default_loki_infra component_type=loki component_name=default_loki_infra}: vector::sinks::util::retries: Retrying after error. error=Server responded with an error: 429 Too Many Requests internal_log_rate_limit=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example Fluentd error message
2023-08-30 14:52:15 +0000 [warn]: [default_loki_infra] failed to flush the buffer. retry_times=2 next_retry_time=2023-08-30 14:52:19 +0000 chunk="604251225bf5378ed1567231a1c03b8b" error_class=Fluent::Plugin::LokiOutput::LogPostError error="429 Too Many Requests Ingestion rate limit exceeded for user infrastructure (limit: 4194304 bytes/sec) while attempting to ingest '4082' lines totaling '7820025' bytes, reduce log volume or contact your Loki administrator to see if the limit can be increased\n"
2023-08-30 14:52:15 +0000 [warn]: [default_loki_infra] failed to flush the buffer. retry_times=2 next_retry_time=2023-08-30 14:52:19 +0000 chunk="604251225bf5378ed1567231a1c03b8b" error_class=Fluent::Plugin::LokiOutput::LogPostError error="429 Too Many Requests Ingestion rate limit exceeded for user infrastructure (limit: 4194304 bytes/sec) while attempting to ingest '4082' lines totaling '7820025' bytes, reduce log volume or contact your Loki administrator to see if the limit can be increased\n"Copy to Clipboard Copied! Toggle word wrap Toggle overflow The error is also visible on the receiving end. For example, in the LokiStack ingester pod:
Example Loki ingester error message
level=warn ts=2023-08-30T14:57:34.155592243Z caller=grpc_logging.go:43 duration=1.434942ms method=/logproto.Pusher/Push err="rpc error: code = Code(429) desc = entry with timestamp 2023-08-30 14:57:32.012778399 +0000 UTC ignored, reason: 'Per stream rate limit exceeded (limit: 3MB/sec) while attempting to ingest for stream
level=warn ts=2023-08-30T14:57:34.155592243Z caller=grpc_logging.go:43 duration=1.434942ms method=/logproto.Pusher/Push err="rpc error: code = Code(429) desc = entry with timestamp 2023-08-30 14:57:32.012778399 +0000 UTC ignored, reason: 'Per stream rate limit exceeded (limit: 3MB/sec) while attempting to ingest for streamCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Procedure
Update the
ingestionBurstSizeandingestionRatefields in theLokiStackCR:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- The
ingestionBurstSizefield defines the maximum local rate-limited sample size per distributor replica in MB. This value is a hard limit. Set this value to at least the maximum logs size expected in a single push request. Single requests that are larger than theingestionBurstSizevalue are not permitted. - 2
- The
ingestionRatefield is a soft limit on the maximum amount of ingested samples per second in MB. Rate limit errors occur if the rate of logs exceeds the limit, but the collector retries sending the logs. As long as the total average is lower than the limit, the system recovers and errors are resolved without user intervention.
10.3.8. Configuring Loki to tolerate memberlist creation failure Copia collegamentoCollegamento copiato negli appunti!
In an OpenShift cluster, administrators generally use a non-private IP network range. As a result, the LokiStack memberlist configuration fails because, by default, it only uses private IP networks.
As an administrator, you can select the pod network for the memberlist configuration. You can modify the LokiStack CR to use the podIP in the hashRing spec. To configure the LokiStack CR, use the following command:
oc patch LokiStack logging-loki -n openshift-logging --type=merge -p '{"spec": {"hashRing":{"memberlist":{"instanceAddrType":"podIP","type": "memberlist"}}}}'
$ oc patch LokiStack logging-loki -n openshift-logging --type=merge -p '{"spec": {"hashRing":{"memberlist":{"instanceAddrType":"podIP","type": "memberlist"}}}}'
Example LokiStack to include podIP
10.4. Configuring the Elasticsearch log store Copia collegamentoCollegamento copiato negli appunti!
You can use Elasticsearch 6 to store and organize log data.
You can make modifications to your log store, including:
- Storage for your Elasticsearch cluster
- Shard replication across data nodes in the cluster, from full replication to no replication
- External access to Elasticsearch data
10.4.1. Configuring log storage Copia collegamentoCollegamento copiato negli appunti!
You can configure which log storage type your logging uses by modifying the ClusterLogging custom resource (CR).
Prerequisites
- You have administrator permissions.
-
You have installed the OpenShift CLI (
oc). - You have installed the Red Hat OpenShift Logging Operator and an internal log store that is either the LokiStack or Elasticsearch.
-
You have created a
ClusterLoggingCR.
The Logging 5.9 release does not contain an updated version of the OpenShift Elasticsearch Operator. If you currently use the OpenShift Elasticsearch Operator released with Logging 5.8, it will continue to work with Logging until the EOL of Logging 5.8. As an alternative to using the OpenShift Elasticsearch Operator to manage the default log storage, you can use the Loki Operator. For more information on the Logging lifecycle dates, see Platform Agnostic Operators.
Procedure
Modify the
ClusterLoggingCRlogStorespec:ClusterLoggingCR exampleCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Specify the log store type. This can be either
lokistackorelasticsearch. - 2
- Optional configuration options for the Elasticsearch log store.
- 3
- Specify the redundancy type. This value can be
ZeroRedundancy,SingleRedundancy,MultipleRedundancy, orFullRedundancy. - 4
- Optional configuration options for LokiStack.
Example
ClusterLoggingCR to specify LokiStack as the log storeCopy to Clipboard Copied! Toggle word wrap Toggle overflow Apply the
ClusterLoggingCR by running the following command:oc apply -f <filename>.yaml
$ oc apply -f <filename>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
10.4.2. Forwarding audit logs to the log store Copia collegamentoCollegamento copiato negli appunti!
In a logging deployment, container and infrastructure logs are forwarded to the internal log store defined in the ClusterLogging custom resource (CR) by default.
Audit logs are not forwarded to the internal log store by default because this does not provide secure storage. You are responsible for ensuring that the system to which you forward audit logs is compliant with your organizational and governmental regulations, and is properly secured.
If this default configuration meets your needs, you do not need to configure a ClusterLogForwarder CR. If a ClusterLogForwarder CR exists, logs are not forwarded to the internal log store unless a pipeline is defined that contains the default output.
Procedure
To use the Log Forward API to forward audit logs to the internal Elasticsearch instance:
Create or edit a YAML file that defines the
ClusterLogForwarderCR object:Create a CR to send all log types to the internal Elasticsearch instance. You can use the following example without making any changes:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- A pipeline defines the type of logs to forward using the specified output. The default output forwards logs to the internal Elasticsearch instance.
NoteYou must specify all three types of logs in the pipeline: application, infrastructure, and audit. If you do not specify a log type, those logs are not stored and will be lost.
If you have an existing
ClusterLogForwarderCR, add a pipeline to the default output for the audit logs. You do not need to define the default output. For example:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- This pipeline sends the audit logs to the internal Elasticsearch instance in addition to an external instance.
10.4.3. Configuring log retention time Copia collegamentoCollegamento copiato negli appunti!
You can configure a retention policy that specifies how long the default Elasticsearch log store keeps indices for each of the three log sources: infrastructure logs, application logs, and audit logs.
To configure the retention policy, you set a maxAge parameter for each log source in the ClusterLogging custom resource (CR). The CR applies these values to the Elasticsearch rollover schedule, which determines when Elasticsearch deletes the rolled-over indices.
Elasticsearch rolls over an index, moving the current index and creating a new index, when an index matches any of the following conditions:
-
The index is older than the
rollover.maxAgevalue in theElasticsearchCR. - The index size is greater than 40 GB × the number of primary shards.
- The index doc count is greater than 40960 KB × the number of primary shards.
Elasticsearch deletes the rolled-over indices based on the retention policy you configure. If you do not create a retention policy for any log sources, logs are deleted after seven days by default.
Prerequisites
- The Red Hat OpenShift Logging Operator and the OpenShift Elasticsearch Operator must be installed.
Procedure
To configure the log retention time:
Edit the
ClusterLoggingCR to add or modify theretentionPolicyparameter:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Specify the time that Elasticsearch should retain each log source. Enter an integer and a time designation: weeks(w), hours(h/H), minutes(m) and seconds(s). For example,
1dfor one day. Logs older than themaxAgeare deleted. By default, logs are retained for seven days.
You can verify the settings in the
Elasticsearchcustom resource (CR).For example, the Red Hat OpenShift Logging Operator updated the following
ElasticsearchCR to configure a retention policy that includes settings to roll over active indices for the infrastructure logs every eight hours and the rolled-over indices are deleted seven days after rollover. OpenShift Container Platform checks every 15 minutes to determine if the indices need to be rolled over.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- For each log source, the retention policy indicates when to delete and roll over logs for that source.
- 2
- When OpenShift Container Platform deletes the rolled-over indices. This setting is the
maxAgeyou set in theClusterLoggingCR. - 3
- The index age for OpenShift Container Platform to consider when rolling over the indices. This value is determined from the
maxAgeyou set in theClusterLoggingCR. - 4
- When OpenShift Container Platform checks if the indices should be rolled over. This setting is the default and cannot be changed.
NoteModifying the
ElasticsearchCR is not supported. All changes to the retention policies must be made in theClusterLoggingCR.The OpenShift Elasticsearch Operator deploys a cron job to roll over indices for each mapping using the defined policy, scheduled using the
pollInterval.oc get cronjob
$ oc get cronjobCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE elasticsearch-im-app */15 * * * * False 0 <none> 4s elasticsearch-im-audit */15 * * * * False 0 <none> 4s elasticsearch-im-infra */15 * * * * False 0 <none> 4s
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE elasticsearch-im-app */15 * * * * False 0 <none> 4s elasticsearch-im-audit */15 * * * * False 0 <none> 4s elasticsearch-im-infra */15 * * * * False 0 <none> 4sCopy to Clipboard Copied! Toggle word wrap Toggle overflow
10.4.4. Configuring CPU and memory requests for the log store Copia collegamentoCollegamento copiato negli appunti!
Each component specification allows for adjustments to both the CPU and memory requests. You should not have to manually adjust these values as the OpenShift Elasticsearch Operator sets values sufficient for your environment.
In large-scale clusters, the default memory limit for the Elasticsearch proxy container might not be sufficient, causing the proxy container to be OOMKilled. If you experience this issue, increase the memory requests and limits for the Elasticsearch proxy.
Each Elasticsearch node can operate with a lower memory setting though this is not recommended for production deployments. For production use, you should have no less than the default 16Gi allocated to each pod. Preferably you should allocate as much as possible, up to 64Gi per pod.
Prerequisites
- The Red Hat OpenShift Logging and Elasticsearch Operators must be installed.
Procedure
Edit the
ClusterLoggingcustom resource (CR) in theopenshift-loggingproject:oc edit ClusterLogging instance
$ oc edit ClusterLogging instanceCopy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Specify the CPU and memory requests for Elasticsearch as needed. If you leave these values blank, the OpenShift Elasticsearch Operator sets default values that should be sufficient for most deployments. The default values are
16Gifor the memory request and1for the CPU request. - 2
- The maximum amount of resources a pod can use.
- 3
- The minimum resources required to schedule a pod.
- 4
- Specify the CPU and memory requests for the Elasticsearch proxy as needed. If you leave these values blank, the OpenShift Elasticsearch Operator sets default values that are sufficient for most deployments. The default values are
256Mifor the memory request and100mfor the CPU request.
When adjusting the amount of Elasticsearch memory, the same value should be used for both requests and limits.
For example:
Kubernetes generally adheres the node configuration and does not allow Elasticsearch to use the specified limits. Setting the same value for the requests and limits ensures that Elasticsearch can use the memory you want, assuming the node has the memory available.
10.4.5. Configuring replication policy for the log store Copia collegamentoCollegamento copiato negli appunti!
You can define how Elasticsearch shards are replicated across data nodes in the cluster.
Prerequisites
- The Red Hat OpenShift Logging and Elasticsearch Operators must be installed.
Procedure
Edit the
ClusterLoggingcustom resource (CR) in theopenshift-loggingproject:oc -n openshift-logging edit ClusterLogging instance
$ oc -n openshift-logging edit ClusterLogging instanceCopy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Specify a redundancy policy for the shards. The change is applied upon saving the changes.
- FullRedundancy. Elasticsearch fully replicates the primary shards for each index to every data node. This provides the highest safety, but at the cost of the highest amount of disk required and the poorest performance.
- MultipleRedundancy. Elasticsearch fully replicates the primary shards for each index to half of the data nodes. This provides a good tradeoff between safety and performance.
- SingleRedundancy. Elasticsearch makes one copy of the primary shards for each index. Logs are always available and recoverable as long as at least two data nodes exist. Better performance than MultipleRedundancy, when using 5 or more nodes. You cannot apply this policy on deployments of single Elasticsearch node.
- ZeroRedundancy. Elasticsearch does not make copies of the primary shards. Logs might be unavailable or lost in the event a node is down or fails. Use this mode when you are more concerned with performance than safety, or have implemented your own disk/PVC backup/restore strategy.
The number of primary shards for the index templates is equal to the number of Elasticsearch data nodes.
10.4.6. Scaling down Elasticsearch pods Copia collegamentoCollegamento copiato negli appunti!
Reducing the number of Elasticsearch pods in your cluster can result in data loss or Elasticsearch performance degradation.
If you scale down, you should scale down by one pod at a time and allow the cluster to re-balance the shards and replicas. After the Elasticsearch health status returns to green, you can scale down by another pod.
If your Elasticsearch cluster is set to ZeroRedundancy, you should not scale down your Elasticsearch pods.
10.4.7. Configuring persistent storage for the log store Copia collegamentoCollegamento copiato negli appunti!
Elasticsearch requires persistent storage. The faster the storage, the faster the Elasticsearch performance.
Using NFS storage as a volume or a persistent volume (or via NAS such as Gluster) is not supported for Elasticsearch storage, as Lucene relies on file system behavior that NFS does not supply. Data corruption and other problems can occur.
Prerequisites
- The Red Hat OpenShift Logging and Elasticsearch Operators must be installed.
Procedure
Edit the
ClusterLoggingCR to specify that each data node in the cluster is bound to a Persistent Volume Claim.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
This example specifies each data node in the cluster is bound to a Persistent Volume Claim that requests "200G" of AWS General Purpose SSD (gp2) storage.
If you use a local volume for persistent storage, do not use a raw block volume, which is described with volumeMode: block in the LocalVolume object. Elasticsearch cannot use raw block volumes.
10.4.8. Configuring the log store for emptyDir storage Copia collegamentoCollegamento copiato negli appunti!
You can use emptyDir with your log store, which creates an ephemeral deployment in which all of a pod’s data is lost upon restart.
When using emptyDir, if log storage is restarted or redeployed, you will lose data.
Prerequisites
- The Red Hat OpenShift Logging and Elasticsearch Operators must be installed.
Procedure
Edit the
ClusterLoggingCR to specify emptyDir:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.4.9. Performing an Elasticsearch rolling cluster restart Copia collegamentoCollegamento copiato negli appunti!
Perform a rolling restart when you change the elasticsearch config map or any of the elasticsearch-* deployment configurations.
Also, a rolling restart is recommended if the nodes on which an Elasticsearch pod runs requires a reboot.
Prerequisites
- The Red Hat OpenShift Logging and Elasticsearch Operators must be installed.
Procedure
To perform a rolling cluster restart:
Change to the
openshift-loggingproject:oc project openshift-logging
$ oc project openshift-loggingCopy to Clipboard Copied! Toggle word wrap Toggle overflow Get the names of the Elasticsearch pods:
oc get pods -l component=elasticsearch
$ oc get pods -l component=elasticsearchCopy to Clipboard Copied! Toggle word wrap Toggle overflow Scale down the collector pods so they stop sending new logs to Elasticsearch:
oc -n openshift-logging patch daemonset/collector -p '{"spec":{"template":{"spec":{"nodeSelector":{"logging-infra-collector": "false"}}}}}'$ oc -n openshift-logging patch daemonset/collector -p '{"spec":{"template":{"spec":{"nodeSelector":{"logging-infra-collector": "false"}}}}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow Perform a shard synced flush using the OpenShift Container Platform es_util tool to ensure there are no pending operations waiting to be written to disk prior to shutting down:
oc exec <any_es_pod_in_the_cluster> -c elasticsearch -- es_util --query="_flush/synced" -XPOST
$ oc exec <any_es_pod_in_the_cluster> -c elasticsearch -- es_util --query="_flush/synced" -XPOSTCopy to Clipboard Copied! Toggle word wrap Toggle overflow For example:
oc exec -c elasticsearch-cdm-5ceex6ts-1-dcd6c4c7c-jpw6 -c elasticsearch -- es_util --query="_flush/synced" -XPOST
$ oc exec -c elasticsearch-cdm-5ceex6ts-1-dcd6c4c7c-jpw6 -c elasticsearch -- es_util --query="_flush/synced" -XPOSTCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
{"_shards":{"total":4,"successful":4,"failed":0},".security":{"total":2,"successful":2,"failed":0},".kibana_1":{"total":2,"successful":2,"failed":0}}{"_shards":{"total":4,"successful":4,"failed":0},".security":{"total":2,"successful":2,"failed":0},".kibana_1":{"total":2,"successful":2,"failed":0}}Copy to Clipboard Copied! Toggle word wrap Toggle overflow Prevent shard balancing when purposely bringing down nodes using the OpenShift Container Platform es_util tool:
oc exec <any_es_pod_in_the_cluster> -c elasticsearch -- es_util --query="_cluster/settings" -XPUT -d '{ "persistent": { "cluster.routing.allocation.enable" : "primaries" } }'$ oc exec <any_es_pod_in_the_cluster> -c elasticsearch -- es_util --query="_cluster/settings" -XPUT -d '{ "persistent": { "cluster.routing.allocation.enable" : "primaries" } }'Copy to Clipboard Copied! Toggle word wrap Toggle overflow For example:
oc exec elasticsearch-cdm-5ceex6ts-1-dcd6c4c7c-jpw6 -c elasticsearch -- es_util --query="_cluster/settings" -XPUT -d '{ "persistent": { "cluster.routing.allocation.enable" : "primaries" } }'$ oc exec elasticsearch-cdm-5ceex6ts-1-dcd6c4c7c-jpw6 -c elasticsearch -- es_util --query="_cluster/settings" -XPUT -d '{ "persistent": { "cluster.routing.allocation.enable" : "primaries" } }'Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
{"acknowledged":true,"persistent":{"cluster":{"routing":{"allocation":{"enable":"primaries"}}}},"transient":{"acknowledged":true,"persistent":{"cluster":{"routing":{"allocation":{"enable":"primaries"}}}},"transient":Copy to Clipboard Copied! Toggle word wrap Toggle overflow After the command is complete, for each deployment you have for an ES cluster:
By default, the OpenShift Container Platform Elasticsearch cluster blocks rollouts to their nodes. Use the following command to allow rollouts and allow the pod to pick up the changes:
oc rollout resume deployment/<deployment-name>
$ oc rollout resume deployment/<deployment-name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow For example:
oc rollout resume deployment/elasticsearch-cdm-0-1
$ oc rollout resume deployment/elasticsearch-cdm-0-1Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
deployment.extensions/elasticsearch-cdm-0-1 resumed
deployment.extensions/elasticsearch-cdm-0-1 resumedCopy to Clipboard Copied! Toggle word wrap Toggle overflow A new pod is deployed. After the pod has a ready container, you can move on to the next deployment.
oc get pods -l component=elasticsearch-
$ oc get pods -l component=elasticsearch-Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
NAME READY STATUS RESTARTS AGE elasticsearch-cdm-5ceex6ts-1-dcd6c4c7c-jpw6k 2/2 Running 0 22h elasticsearch-cdm-5ceex6ts-2-f799564cb-l9mj7 2/2 Running 0 22h elasticsearch-cdm-5ceex6ts-3-585968dc68-k7kjr 2/2 Running 0 22h
NAME READY STATUS RESTARTS AGE elasticsearch-cdm-5ceex6ts-1-dcd6c4c7c-jpw6k 2/2 Running 0 22h elasticsearch-cdm-5ceex6ts-2-f799564cb-l9mj7 2/2 Running 0 22h elasticsearch-cdm-5ceex6ts-3-585968dc68-k7kjr 2/2 Running 0 22hCopy to Clipboard Copied! Toggle word wrap Toggle overflow After the deployments are complete, reset the pod to disallow rollouts:
oc rollout pause deployment/<deployment-name>
$ oc rollout pause deployment/<deployment-name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow For example:
oc rollout pause deployment/elasticsearch-cdm-0-1
$ oc rollout pause deployment/elasticsearch-cdm-0-1Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
deployment.extensions/elasticsearch-cdm-0-1 paused
deployment.extensions/elasticsearch-cdm-0-1 pausedCopy to Clipboard Copied! Toggle word wrap Toggle overflow Check that the Elasticsearch cluster is in a
greenoryellowstate:oc exec <any_es_pod_in_the_cluster> -c elasticsearch -- es_util --query=_cluster/health?pretty=true
$ oc exec <any_es_pod_in_the_cluster> -c elasticsearch -- es_util --query=_cluster/health?pretty=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow NoteIf you performed a rollout on the Elasticsearch pod you used in the previous commands, the pod no longer exists and you need a new pod name here.
For example:
oc exec elasticsearch-cdm-5ceex6ts-1-dcd6c4c7c-jpw6 -c elasticsearch -- es_util --query=_cluster/health?pretty=true
$ oc exec elasticsearch-cdm-5ceex6ts-1-dcd6c4c7c-jpw6 -c elasticsearch -- es_util --query=_cluster/health?pretty=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Make sure this parameter value is
greenoryellowbefore proceeding.
- If you changed the Elasticsearch configuration map, repeat these steps for each Elasticsearch pod.
After all the deployments for the cluster have been rolled out, re-enable shard balancing:
oc exec <any_es_pod_in_the_cluster> -c elasticsearch -- es_util --query="_cluster/settings" -XPUT -d '{ "persistent": { "cluster.routing.allocation.enable" : "all" } }'$ oc exec <any_es_pod_in_the_cluster> -c elasticsearch -- es_util --query="_cluster/settings" -XPUT -d '{ "persistent": { "cluster.routing.allocation.enable" : "all" } }'Copy to Clipboard Copied! Toggle word wrap Toggle overflow For example:
oc exec elasticsearch-cdm-5ceex6ts-1-dcd6c4c7c-jpw6 -c elasticsearch -- es_util --query="_cluster/settings" -XPUT -d '{ "persistent": { "cluster.routing.allocation.enable" : "all" } }'$ oc exec elasticsearch-cdm-5ceex6ts-1-dcd6c4c7c-jpw6 -c elasticsearch -- es_util --query="_cluster/settings" -XPUT -d '{ "persistent": { "cluster.routing.allocation.enable" : "all" } }'Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Scale up the collector pods so they send new logs to Elasticsearch.
oc -n openshift-logging patch daemonset/collector -p '{"spec":{"template":{"spec":{"nodeSelector":{"logging-infra-collector": "true"}}}}}'$ oc -n openshift-logging patch daemonset/collector -p '{"spec":{"template":{"spec":{"nodeSelector":{"logging-infra-collector": "true"}}}}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.4.10. Exposing the log store service as a route Copia collegamentoCollegamento copiato negli appunti!
By default, the log store that is deployed with logging is not accessible from outside the logging cluster. You can enable a route with re-encryption termination for external access to the log store service for those tools that access its data.
Externally, you can access the log store by creating a reencrypt route, your OpenShift Container Platform token and the installed log store CA certificate. Then, access a node that hosts the log store service with a cURL request that contains:
-
The
Authorization: Bearer ${token} - The Elasticsearch reencrypt route and an Elasticsearch API request.
Internally, you can access the log store service using the log store cluster IP, which you can get by using either of the following commands:
oc get service elasticsearch -o jsonpath={.spec.clusterIP} -n openshift-logging
$ oc get service elasticsearch -o jsonpath={.spec.clusterIP} -n openshift-logging
Example output
172.30.183.229
172.30.183.229
oc get service elasticsearch -n openshift-logging
$ oc get service elasticsearch -n openshift-logging
Example output
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE elasticsearch ClusterIP 172.30.183.229 <none> 9200/TCP 22h
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
elasticsearch ClusterIP 172.30.183.229 <none> 9200/TCP 22h
You can check the cluster IP address with a command similar to the following:
oc exec elasticsearch-cdm-oplnhinv-1-5746475887-fj2f8 -n openshift-logging -- curl -tlsv1.2 --insecure -H "Authorization: Bearer ${token}" "https://172.30.183.229:9200/_cat/health"
$ oc exec elasticsearch-cdm-oplnhinv-1-5746475887-fj2f8 -n openshift-logging -- curl -tlsv1.2 --insecure -H "Authorization: Bearer ${token}" "https://172.30.183.229:9200/_cat/health"
Example output
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 29 100 29 0 0 108 0 --:--:-- --:--:-- --:--:-- 108
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 29 100 29 0 0 108 0 --:--:-- --:--:-- --:--:-- 108
Prerequisites
- The Red Hat OpenShift Logging and Elasticsearch Operators must be installed.
- You must have access to the project to be able to access to the logs.
Procedure
To expose the log store externally:
Change to the
openshift-loggingproject:oc project openshift-logging
$ oc project openshift-loggingCopy to Clipboard Copied! Toggle word wrap Toggle overflow Extract the CA certificate from the log store and write to the admin-ca file:
oc extract secret/elasticsearch --to=. --keys=admin-ca
$ oc extract secret/elasticsearch --to=. --keys=admin-caCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
admin-ca
admin-caCopy to Clipboard Copied! Toggle word wrap Toggle overflow Create the route for the log store service as a YAML file:
Create a YAML file with the following:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Add the log store CA certifcate or use the command in the next step. You do not have to set the
spec.tls.key,spec.tls.certificate, andspec.tls.caCertificateparameters required by some reencrypt routes.
Run the following command to add the log store CA certificate to the route YAML you created in the previous step:
cat ./admin-ca | sed -e "s/^/ /" >> <file-name>.yaml
$ cat ./admin-ca | sed -e "s/^/ /" >> <file-name>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Create the route:
oc create -f <file-name>.yaml
$ oc create -f <file-name>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
route.route.openshift.io/elasticsearch created
route.route.openshift.io/elasticsearch createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Check that the Elasticsearch service is exposed:
Get the token of this service account to be used in the request:
token=$(oc whoami -t)
$ token=$(oc whoami -t)Copy to Clipboard Copied! Toggle word wrap Toggle overflow Set the elasticsearch route you created as an environment variable.
routeES=`oc get route elasticsearch -o jsonpath={.spec.host}`$ routeES=`oc get route elasticsearch -o jsonpath={.spec.host}`Copy to Clipboard Copied! Toggle word wrap Toggle overflow To verify the route was successfully created, run the following command that accesses Elasticsearch through the exposed route:
curl -tlsv1.2 --insecure -H "Authorization: Bearer ${token}" "https://${routeES}"curl -tlsv1.2 --insecure -H "Authorization: Bearer ${token}" "https://${routeES}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow The response appears similar to the following:
Example output
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.4.11. Removing unused components if you do not use the default Elasticsearch log store Copia collegamentoCollegamento copiato negli appunti!
As an administrator, in the rare case that you forward logs to a third-party log store and do not use the default Elasticsearch log store, you can remove several unused components from your logging cluster.
In other words, if you do not use the default Elasticsearch log store, you can remove the internal Elasticsearch logStore and Kibana visualization components from the ClusterLogging custom resource (CR). Removing these components is optional but saves resources.
Prerequisites
Verify that your log forwarder does not send log data to the default internal Elasticsearch cluster. Inspect the
ClusterLogForwarderCR YAML file that you used to configure log forwarding. Verify that it does not have anoutputRefselement that specifiesdefault. For example:outputRefs: - default
outputRefs: - defaultCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Suppose the ClusterLogForwarder CR forwards log data to the internal Elasticsearch cluster, and you remove the logStore component from the ClusterLogging CR. In that case, the internal Elasticsearch cluster will not be present to store the log data. This absence can cause data loss.
Procedure
Edit the
ClusterLoggingcustom resource (CR) in theopenshift-loggingproject:oc edit ClusterLogging instance
$ oc edit ClusterLogging instanceCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
If they are present, remove the
logStoreandvisualizationstanzas from theClusterLoggingCR. Preserve the
collectionstanza of theClusterLoggingCR. The result should look similar to the following example:Copy to Clipboard Copied! Toggle word wrap Toggle overflow Verify that the collector pods are redeployed:
oc get pods -l component=collector -n openshift-logging
$ oc get pods -l component=collector -n openshift-loggingCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Chapter 11. Logging alerts Copia collegamentoCollegamento copiato negli appunti!
11.1. Default logging alerts Copia collegamentoCollegamento copiato negli appunti!
Logging alerts are installed as part of the Red Hat OpenShift Logging Operator installation. Alerts depend on metrics exported by the log collection and log storage backends. These metrics are enabled if you selected the option to Enable operator recommended cluster monitoring on this namespace when installing the Red Hat OpenShift Logging Operator. For more information about installing logging Operators, see Installing logging using the web console.
Default logging alerts are sent to the OpenShift Container Platform monitoring stack Alertmanager in the openshift-monitoring namespace, unless you have disabled the local Alertmanager instance.
11.1.1. Accessing the Alerting UI in the Administrator and Developer perspectives Copia collegamentoCollegamento copiato negli appunti!
The Alerting UI is accessible through the Administrator perspective and the Developer perspective of the OpenShift Container Platform web console.
- In the Administrator perspective, go to Observe → Alerting. The three main pages in the Alerting UI in this perspective are the Alerts, Silences, and Alerting rules pages.
- In the Developer perspective, go to Observe → <project_name> → Alerts. In this perspective, alerts, silences, and alerting rules are all managed from the Alerts page. The results shown in the Alerts page are specific to the selected project.
In the Developer perspective, you can select from core OpenShift Container Platform and user-defined projects that you have access to in the Project: <project_name> list. However, alerts, silences, and alerting rules relating to core OpenShift Container Platform projects are not displayed if you do not have cluster-admin privileges.
11.1.2. Logging collector alerts Copia collegamentoCollegamento copiato negli appunti!
In logging 5.8 and later versions, the following alerts are generated by the Red Hat OpenShift Logging Operator. You can view these alerts in the OpenShift Container Platform web console.
| Alert Name | Message | Description | Severity |
|---|---|---|---|
| CollectorNodeDown |
Prometheus could not scrape | Collector cannot be scraped. | Critical |
| CollectorHighErrorRate |
|
| Critical |
| CollectorVeryHighErrorRate |
|
| Critical |
11.1.3. Vector collector alerts Copia collegamentoCollegamento copiato negli appunti!
In logging 5.7 and later versions, the following alerts are generated by the Vector collector. You can view these alerts in the OpenShift Container Platform web console.
| Alert | Message | Description | Severity |
|---|---|---|---|
|
|
| The number of vector output errors is high, by default more than 10 in the previous 15 minutes. | Warning |
|
|
| Vector is reporting that Prometheus could not scrape a specific Vector instance. | Critical |
|
|
| The number of Vector component errors are very high, by default more than 25 in the previous 15 minutes. | Critical |
|
|
| Fluentd is reporting that the queue size is increasing. | Warning |
11.1.4. Fluentd collector alerts Copia collegamentoCollegamento copiato negli appunti!
The following alerts are generated by the legacy Fluentd log collector. You can view these alerts in the OpenShift Container Platform web console.
| Alert | Message | Description | Severity |
|---|---|---|---|
|
|
| The number of FluentD output errors is high, by default more than 10 in the previous 15 minutes. | Warning |
|
|
| Fluentd is reporting that Prometheus could not scrape a specific Fluentd instance. | Critical |
|
|
| Fluentd is reporting that the queue size is increasing. | Warning |
|
|
| The number of FluentD output errors is very high, by default more than 25 in the previous 15 minutes. | Critical |
11.1.5. Elasticsearch alerting rules Copia collegamentoCollegamento copiato negli appunti!
You can view these alerting rules in the OpenShift Container Platform web console.
| Alert | Description | Severity |
|---|---|---|
|
| The cluster health status has been RED for at least 2 minutes. The cluster does not accept writes, shards may be missing, or the master node hasn’t been elected yet. | Critical |
|
| The cluster health status has been YELLOW for at least 20 minutes. Some shard replicas are not allocated. | Warning |
|
| The cluster is expected to be out of disk space within the next 6 hours. | Critical |
|
| The cluster is predicted to be out of file descriptors within the next hour. | Warning |
|
| The JVM Heap usage on the specified node is high. | Alert |
|
| The specified node has hit the low watermark due to low free disk space. Shards can not be allocated to this node anymore. You should consider adding more disk space to the node. | Info |
|
| The specified node has hit the high watermark due to low free disk space. Some shards will be re-allocated to different nodes if possible. Make sure more disk space is added to the node or drop old indices allocated to this node. | Warning |
|
| The specified node has hit the flood watermark due to low free disk space. Every index that has a shard allocated on this node is enforced a read-only block. The index block must be manually released when the disk use falls below the high watermark. | Critical |
|
| The JVM Heap usage on the specified node is too high. | Alert |
|
| Elasticsearch is experiencing an increase in write rejections on the specified node. This node might not be keeping up with the indexing speed. | Warning |
|
| The CPU used by the system on the specified node is too high. | Alert |
|
| The CPU used by Elasticsearch on the specified node is too high. | Alert |
Chapter 12. Performance and reliability tuning Copia collegamentoCollegamento copiato negli appunti!
12.1. Flow control mechanisms Copia collegamentoCollegamento copiato negli appunti!
If logs are produced faster than they can be collected, it can be difficult to predict or control the volume of logs being sent to an output. Not being able to predict or control the volume of logs being sent to an output can result in logs being lost. If there is a system outage and log buffers are accumulated without user control, this can also cause long recovery times and high latency when the connection is restored.
As an administrator, you can limit logging rates by configuring flow control mechanisms for your logging.
12.1.1. Benefits of flow control mechanisms Copia collegamentoCollegamento copiato negli appunti!
- The cost and volume of logging can be predicted more accurately in advance.
- Noisy containers cannot produce unbounded log traffic that drowns out other containers.
- Ignoring low-value logs reduces the load on the logging infrastructure.
- High-value logs can be preferred over low-value logs by assigning higher rate limits.
12.1.2. Configuring rate limits Copia collegamentoCollegamento copiato negli appunti!
Rate limits are configured per collector, which means that the maximum rate of log collection is the number of collector instances multiplied by the rate limit.
Because logs are collected from each node’s file system, a collector is deployed on each cluster node. For example, in a 3-node cluster, with a maximum rate limit of 10 records per second per collector, the maximum rate of log collection is 30 records per second.
Because the exact byte size of a record as written to an output can vary due to transformations, different encodings, or other factors, rate limits are set in number of records instead of bytes.
You can configure rate limits in the ClusterLogForwarder custom resource (CR) in two ways:
- Output rate limit
- Limit the rate of outbound logs to selected outputs, for example, to match the network or storage capacity of an output. The output rate limit controls the aggregated per-output rate.
- Input rate limit
- Limit the per-container rate of log collection for selected containers.
12.1.3. Configuring log forwarder output rate limits Copia collegamentoCollegamento copiato negli appunti!
You can limit the rate of outbound logs to a specified output by configuring the ClusterLogForwarder custom resource (CR).
Prerequisites
- You have installed the Red Hat OpenShift Logging Operator.
- You have administrator permissions.
Procedure
Add a
maxRecordsPerSecondlimit value to theClusterLogForwarderCR for a specified output.The following example shows how to configure a per collector output rate limit for a Kafka broker output named
kafka-example:Example
ClusterLogForwarderCRCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- The output name.
- 2
- The type of output.
- 3
- The log output rate limit. This value sets the maximum Quantity of logs that can be sent to the Kafka broker per second. This value is not set by default. The default behavior is best effort, and records are dropped if the log forwarder cannot keep up. If this value is
0, no logs are forwarded.
Apply the
ClusterLogForwarderCR:Example command
oc apply -f <filename>.yaml
$ oc apply -f <filename>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
12.1.4. Configuring log forwarder input rate limits Copia collegamentoCollegamento copiato negli appunti!
You can limit the rate of incoming logs that are collected by configuring the ClusterLogForwarder custom resource (CR). You can set input limits on a per-container or per-namespace basis.
Prerequisites
- You have installed the Red Hat OpenShift Logging Operator.
- You have administrator permissions.
Procedure
Add a
maxRecordsPerSecondlimit value to theClusterLogForwarderCR for a specified input.The following examples show how to configure input rate limits for different scenarios:
Example
ClusterLogForwarderCR that sets a per-container limit for containers with certain labelsCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- The input name.
- 2
- A list of labels. If these labels match labels that are applied to a pod, the per-container limit specified in the
maxRecordsPerSecondfield is applied to those containers. - 3
- Configures the rate limit. Setting the
maxRecordsPerSecondfield to0means that no logs are collected for the container. Setting themaxRecordsPerSecondfield to some other value means that a maximum of that number of records per second are collected for the container.
Example
ClusterLogForwarderCR that sets a per-container limit for containers in selected namespacesCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- The input name.
- 2
- A list of namespaces. The per-container limit specified in the
maxRecordsPerSecondfield is applied to all containers in the namespaces listed. - 3
- Configures the rate limit. Setting the
maxRecordsPerSecondfield to10means that a maximum of 10 records per second are collected for each container in the namespaces listed.
Apply the
ClusterLogForwarderCR:Example command
oc apply -f <filename>.yaml
$ oc apply -f <filename>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Chapter 13. Scheduling resources Copia collegamentoCollegamento copiato negli appunti!
13.1. Using node selectors to move logging resources Copia collegamentoCollegamento copiato negli appunti!
A node selector specifies a map of key/value pairs that are defined using custom labels on nodes and selectors specified in pods.
For the pod to be eligible to run on a node, the pod must have the same key/value node selector as the label on the node.
13.1.1. About node selectors Copia collegamentoCollegamento copiato negli appunti!
You can use node selectors on pods and labels on nodes to control where the pod is scheduled. With node selectors, OpenShift Container Platform schedules the pods on nodes that contain matching labels.
You can use a node selector to place specific pods on specific nodes, cluster-wide node selectors to place new pods on specific nodes anywhere in the cluster, and project node selectors to place new pods in a project on specific nodes.
For example, as a cluster administrator, you can create an infrastructure where application developers can deploy pods only onto the nodes closest to their geographical location by including a node selector in every pod they create. In this example, the cluster consists of five data centers spread across two regions. In the U.S., label the nodes as us-east, us-central, or us-west. In the Asia-Pacific region (APAC), label the nodes as apac-east or apac-west. The developers can add a node selector to the pods they create to ensure the pods get scheduled on those nodes.
A pod is not scheduled if the Pod object contains a node selector, but no node has a matching label.
If you are using node selectors and node affinity in the same pod configuration, the following rules control pod placement onto nodes:
-
If you configure both
nodeSelectorandnodeAffinity, both conditions must be satisfied for the pod to be scheduled onto a candidate node. -
If you specify multiple
nodeSelectorTermsassociated withnodeAffinitytypes, then the pod can be scheduled onto a node if one of thenodeSelectorTermsis satisfied. -
If you specify multiple
matchExpressionsassociated withnodeSelectorTerms, then the pod can be scheduled onto a node only if allmatchExpressionsare satisfied.
- Node selectors on specific pods and nodes
You can control which node a specific pod is scheduled on by using node selectors and labels.
To use node selectors and labels, first label the node to avoid pods being descheduled, then add the node selector to the pod.
NoteYou cannot add a node selector directly to an existing scheduled pod. You must label the object that controls the pod, such as deployment config.
For example, the following
Nodeobject has theregion: eastlabel:Sample
Nodeobject with a labelCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Labels to match the pod node selector.
A pod has the
type: user-node,region: eastnode selector:Sample
Podobject with node selectorsCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Node selectors to match the node label. The node must have a label for each node selector.
When you create the pod using the example pod spec, it can be scheduled on the example node.
- Default cluster-wide node selectors
With default cluster-wide node selectors, when you create a pod in that cluster, OpenShift Container Platform adds the default node selectors to the pod and schedules the pod on nodes with matching labels.
For example, the following
Schedulerobject has the default cluster-wideregion=eastandtype=user-nodenode selectors:Example Scheduler Operator Custom Resource
Copy to Clipboard Copied! Toggle word wrap Toggle overflow A node in that cluster has the
type=user-node,region=eastlabels:Example
NodeobjectCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example
Podobject with a node selectorCopy to Clipboard Copied! Toggle word wrap Toggle overflow When you create the pod using the example pod spec in the example cluster, the pod is created with the cluster-wide node selector and is scheduled on the labeled node:
Example pod list with the pod on the labeled node
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES pod-s1 1/1 Running 0 20s 10.131.2.6 ci-ln-qg1il3k-f76d1-hlmhl-worker-b-df2s4 <none> <none>
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES pod-s1 1/1 Running 0 20s 10.131.2.6 ci-ln-qg1il3k-f76d1-hlmhl-worker-b-df2s4 <none> <none>Copy to Clipboard Copied! Toggle word wrap Toggle overflow NoteIf the project where you create the pod has a project node selector, that selector takes preference over a cluster-wide node selector. Your pod is not created or scheduled if the pod does not have the project node selector.
- Project node selectors
With project node selectors, when you create a pod in this project, OpenShift Container Platform adds the node selectors to the pod and schedules the pods on a node with matching labels. If there is a cluster-wide default node selector, a project node selector takes preference.
For example, the following project has the
region=eastnode selector:Example
NamespaceobjectCopy to Clipboard Copied! Toggle word wrap Toggle overflow The following node has the
type=user-node,region=eastlabels:Example
NodeobjectCopy to Clipboard Copied! Toggle word wrap Toggle overflow When you create the pod using the example pod spec in this example project, the pod is created with the project node selectors and is scheduled on the labeled node:
Example
PodobjectCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example pod list with the pod on the labeled node
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES pod-s1 1/1 Running 0 20s 10.131.2.6 ci-ln-qg1il3k-f76d1-hlmhl-worker-b-df2s4 <none> <none>
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES pod-s1 1/1 Running 0 20s 10.131.2.6 ci-ln-qg1il3k-f76d1-hlmhl-worker-b-df2s4 <none> <none>Copy to Clipboard Copied! Toggle word wrap Toggle overflow A pod in the project is not created or scheduled if the pod contains different node selectors. For example, if you deploy the following pod into the example project, it is not be created:
Example
Podobject with an invalid node selectorCopy to Clipboard Copied! Toggle word wrap Toggle overflow
13.1.2. Loki pod placement Copia collegamentoCollegamento copiato negli appunti!
You can control which nodes the Loki pods run on, and prevent other workloads from using those nodes, by using tolerations or node selectors on the pods.
You can apply tolerations to the log store pods with the LokiStack custom resource (CR) and apply taints to a node with the node specification. A taint on a node is a key:value pair that instructs the node to repel all pods that do not allow the taint. Using a specific key:value pair that is not on other pods ensures that only the log store pods can run on that node.
Example LokiStack with node selectors
In the previous example configuration, all Loki pods are moved to nodes containing the node-role.kubernetes.io/infra: "" label.
Example LokiStack CR with node selectors and tolerations
To configure the nodeSelector and tolerations fields of the LokiStack (CR), you can use the oc explain command to view the description and fields for a particular resource:
oc explain lokistack.spec.template
$ oc explain lokistack.spec.template
Example output
For more detailed information, you can add a specific field:
oc explain lokistack.spec.template.compactor
$ oc explain lokistack.spec.template.compactor
Example output
13.1.3. Configuring resources and scheduling for logging collectors Copia collegamentoCollegamento copiato negli appunti!
Administrators can modify the resources or scheduling of the collector by creating a ClusterLogging custom resource (CR) that is in the same namespace and has the same name as the ClusterLogForwarder CR that it supports.
The applicable stanzas for the ClusterLogging CR when using multiple log forwarders in a deployment are managementState and collection. All other stanzas are ignored.
Prerequisites
- You have administrator permissions.
- You have installed the Red Hat OpenShift Logging Operator version 5.8 or newer.
-
You have created a
ClusterLogForwarderCR.
Procedure
Create a
ClusterLoggingCR that supports your existingClusterLogForwarderCR:Example
ClusterLoggingCR YAMLCopy to Clipboard Copied! Toggle word wrap Toggle overflow Apply the
ClusterLoggingCR by running the following command:oc apply -f <filename>.yaml
$ oc apply -f <filename>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
13.1.4. Viewing logging collector pods Copia collegamentoCollegamento copiato negli appunti!
You can view the logging collector pods and the corresponding nodes that they are running on.
Procedure
Run the following command in a project to view the logging collector pods and their details:
oc get pods --selector component=collector -o wide -n <project_name>
$ oc get pods --selector component=collector -o wide -n <project_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
13.2. Using taints and tolerations to control logging pod placement Copia collegamentoCollegamento copiato negli appunti!
Taints and tolerations allow the node to control which pods should (or should not) be scheduled on them.
13.2.1. Understanding taints and tolerations Copia collegamentoCollegamento copiato negli appunti!
A taint allows a node to refuse a pod to be scheduled unless that pod has a matching toleration.
You apply taints to a node through the Node specification (NodeSpec) and apply tolerations to a pod through the Pod specification (PodSpec). When you apply a taint a node, the scheduler cannot place a pod on that node unless the pod can tolerate the taint.
Example taint in a node specification
Example toleration in a Pod spec
Taints and tolerations consist of a key, value, and effect.
| Parameter | Description | ||||||
|---|---|---|---|---|---|---|---|
|
|
The | ||||||
|
|
The | ||||||
|
| The effect is one of the following:
| ||||||
|
|
|
If you add a
NoScheduletaint to a control plane node, the node must have thenode-role.kubernetes.io/master=:NoScheduletaint, which is added by default.For example:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
A toleration matches a taint:
If the
operatorparameter is set toEqual:-
the
keyparameters are the same; -
the
valueparameters are the same; -
the
effectparameters are the same.
-
the
If the
operatorparameter is set toExists:-
the
keyparameters are the same; -
the
effectparameters are the same.
-
the
The following taints are built into OpenShift Container Platform:
-
node.kubernetes.io/not-ready: The node is not ready. This corresponds to the node conditionReady=False. -
node.kubernetes.io/unreachable: The node is unreachable from the node controller. This corresponds to the node conditionReady=Unknown. -
node.kubernetes.io/memory-pressure: The node has memory pressure issues. This corresponds to the node conditionMemoryPressure=True. -
node.kubernetes.io/disk-pressure: The node has disk pressure issues. This corresponds to the node conditionDiskPressure=True. -
node.kubernetes.io/network-unavailable: The node network is unavailable. -
node.kubernetes.io/unschedulable: The node is unschedulable. -
node.cloudprovider.kubernetes.io/uninitialized: When the node controller is started with an external cloud provider, this taint is set on a node to mark it as unusable. After a controller from the cloud-controller-manager initializes this node, the kubelet removes this taint. node.kubernetes.io/pid-pressure: The node has pid pressure. This corresponds to the node conditionPIDPressure=True.ImportantOpenShift Container Platform does not set a default pid.available
evictionHard.
13.2.2. Loki pod placement Copia collegamentoCollegamento copiato negli appunti!
You can control which nodes the Loki pods run on, and prevent other workloads from using those nodes, by using tolerations or node selectors on the pods.
You can apply tolerations to the log store pods with the LokiStack custom resource (CR) and apply taints to a node with the node specification. A taint on a node is a key:value pair that instructs the node to repel all pods that do not allow the taint. Using a specific key:value pair that is not on other pods ensures that only the log store pods can run on that node.
Example LokiStack with node selectors
In the previous example configuration, all Loki pods are moved to nodes containing the node-role.kubernetes.io/infra: "" label.
Example LokiStack CR with node selectors and tolerations
To configure the nodeSelector and tolerations fields of the LokiStack (CR), you can use the oc explain command to view the description and fields for a particular resource:
oc explain lokistack.spec.template
$ oc explain lokistack.spec.template
Example output
For more detailed information, you can add a specific field:
oc explain lokistack.spec.template.compactor
$ oc explain lokistack.spec.template.compactor
Example output
13.2.3. Using tolerations to control log collector pod placement Copia collegamentoCollegamento copiato negli appunti!
By default, log collector pods have the following tolerations configuration:
Prerequisites
-
You have installed the Red Hat OpenShift Logging Operator and OpenShift CLI (
oc).
Procedure
Add a taint to a node where you want logging collector pods to schedule logging collector pods by running the following command:
oc adm taint nodes <node_name> <key>=<value>:<effect>
$ oc adm taint nodes <node_name> <key>=<value>:<effect>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example command
oc adm taint nodes node1 collector=node:NoExecute
$ oc adm taint nodes node1 collector=node:NoExecuteCopy to Clipboard Copied! Toggle word wrap Toggle overflow This example places a taint on
node1that has keycollector, valuenode, and taint effectNoExecute. You must use theNoExecutetaint effect.NoExecuteschedules only pods that match the taint and removes existing pods that do not match.Edit the
collectionstanza of theClusterLoggingcustom resource (CR) to configure a toleration for the logging collector pods:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
This toleration matches the taint created by the oc adm taint command. A pod with this toleration can be scheduled onto node1.
13.2.4. Configuring resources and scheduling for logging collectors Copia collegamentoCollegamento copiato negli appunti!
Administrators can modify the resources or scheduling of the collector by creating a ClusterLogging custom resource (CR) that is in the same namespace and has the same name as the ClusterLogForwarder CR that it supports.
The applicable stanzas for the ClusterLogging CR when using multiple log forwarders in a deployment are managementState and collection. All other stanzas are ignored.
Prerequisites
- You have administrator permissions.
- You have installed the Red Hat OpenShift Logging Operator version 5.8 or newer.
-
You have created a
ClusterLogForwarderCR.
Procedure
Create a
ClusterLoggingCR that supports your existingClusterLogForwarderCR:Example
ClusterLoggingCR YAMLCopy to Clipboard Copied! Toggle word wrap Toggle overflow Apply the
ClusterLoggingCR by running the following command:oc apply -f <filename>.yaml
$ oc apply -f <filename>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
13.2.5. Viewing logging collector pods Copia collegamentoCollegamento copiato negli appunti!
You can view the logging collector pods and the corresponding nodes that they are running on.
Procedure
Run the following command in a project to view the logging collector pods and their details:
oc get pods --selector component=collector -o wide -n <project_name>
$ oc get pods --selector component=collector -o wide -n <project_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Chapter 14. Uninstalling Logging Copia collegamentoCollegamento copiato negli appunti!
You can remove logging from your OpenShift Container Platform cluster by removing installed Operators and related custom resources (CRs).
14.1. Uninstalling the logging Copia collegamentoCollegamento copiato negli appunti!
You can stop aggregating logs by deleting the Red Hat OpenShift Logging Operator and the ClusterLogging custom resource (CR).
Prerequisites
- You have administrator permissions.
- You have access to the Administrator perspective of the OpenShift Container Platform web console.
Procedure
- Go to the Administration → Custom Resource Definitions page, and click ClusterLogging.
- On the Custom Resource Definition Details page, click Instances.
-
Click the options menu
next to the instance, and click Delete ClusterLogging.
- Go to the Administration → Custom Resource Definitions page.
Click the options menu
next to ClusterLogging, and select Delete Custom Resource Definition.
WarningDeleting the
ClusterLoggingCR does not remove the persistent volume claims (PVCs). To delete the remaining PVCs, persistent volumes (PVs), and associated data, you must take further action. Releasing or deleting PVCs can delete PVs and cause data loss.-
If you have created a
ClusterLogForwarderCR, click the options menu
next to ClusterLogForwarder, and then click Delete Custom Resource Definition.
- Go to the Operators → Installed Operators page.
-
Click the options menu
next to the Red Hat OpenShift Logging Operator, and then click Uninstall Operator.
Optional: Delete the
openshift-loggingproject.WarningDeleting the
openshift-loggingproject deletes everything in that namespace, including any persistent volume claims (PVCs). If you want to preserve logging data, do not delete theopenshift-loggingproject.- Go to the Home → Projects page.
-
Click the options menu
next to the openshift-logging project, and then click Delete Project.
-
Confirm the deletion by typing
openshift-loggingin the dialog box, and then click Delete.
14.2. Deleting logging PVCs Copia collegamentoCollegamento copiato negli appunti!
To keep persistent volume claims (PVCs) for reuse with other pods, keep the labels or PVC names that you need to reclaim the PVCs. If you do not want to keep the PVCs, you can delete them. If you want to recover storage space, you can also delete the persistent volumes (PVs).
Prerequisites
- You have administrator permissions.
- You have access to the Administrator perspective of the OpenShift Container Platform web console.
Procedure
- Go to the Storage → Persistent Volume Claims page.
-
Click the options menu
next to each PVC, and select Delete Persistent Volume Claim.
14.3. Uninstalling Loki Copia collegamentoCollegamento copiato negli appunti!
Prerequisites
- You have administrator permissions.
- You have access to the Administrator perspective of the OpenShift Container Platform web console.
-
If you have not already removed the Red Hat OpenShift Logging Operator and related resources, you have removed references to LokiStack from the
ClusterLoggingcustom resource.
Procedure
- Go to the Administration → Custom Resource Definitions page, and click LokiStack.
- On the Custom Resource Definition Details page, click Instances.
-
Click the options menu
next to the instance, and then click Delete LokiStack.
- Go to the Administration → Custom Resource Definitions page.
-
Click the options menu
next to LokiStack, and select Delete Custom Resource Definition.
- Delete the object storage secret.
- Go to the Operators → Installed Operators page.
-
Click the options menu
next to the Loki Operator, and then click Uninstall Operator.
Optional: Delete the
openshift-operators-redhatproject.ImportantDo not delete the
openshift-operators-redhatproject if other global Operators are installed in this namespace.- Go to the Home → Projects page.
-
Click the options menu
next to the openshift-operators-redhat project, and then click Delete Project.
-
Confirm the deletion by typing
openshift-operators-redhatin the dialog box, and then click Delete.
14.4. Uninstalling Elasticsearch Copia collegamentoCollegamento copiato negli appunti!
Prerequisites
- You have administrator permissions.
- You have access to the Administrator perspective of the OpenShift Container Platform web console.
-
If you have not already removed the Red Hat OpenShift Logging Operator and related resources, you must remove references to Elasticsearch from the
ClusterLoggingcustom resource.
Procedure
- Go to the Administration → Custom Resource Definitions page, and click Elasticsearch.
- On the Custom Resource Definition Details page, click Instances.
-
Click the options menu
next to the instance, and then click Delete Elasticsearch.
- Go to the Administration → Custom Resource Definitions page.
-
Click the options menu
next to Elasticsearch, and select Delete Custom Resource Definition.
- Delete the object storage secret.
- Go to the Operators → Installed Operators page.
-
Click the options menu
next to the OpenShift Elasticsearch Operator, and then click Uninstall Operator.
Optional: Delete the
openshift-operators-redhatproject.ImportantDo not delete the
openshift-operators-redhatproject if other global Operators are installed in this namespace.- Go to the Home → Projects page.
-
Click the options menu
next to the openshift-operators-redhat project, and then click Delete Project.
-
Confirm the deletion by typing
openshift-operators-redhatin the dialog box, and then click Delete.
14.5. Deleting Operators from a cluster using the CLI Copia collegamentoCollegamento copiato negli appunti!
Cluster administrators can delete installed Operators from a selected namespace by using the CLI.
Prerequisites
-
Access to an OpenShift Container Platform cluster using an account with
cluster-adminpermissions. -
occommand installed on workstation.
Procedure
Ensure the latest version of the subscribed operator (for example,
serverless-operator) is identified in thecurrentCSVfield.oc get subscription.operators.coreos.com serverless-operator -n openshift-serverless -o yaml | grep currentCSV
$ oc get subscription.operators.coreos.com serverless-operator -n openshift-serverless -o yaml | grep currentCSVCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
currentCSV: serverless-operator.v1.28.0
currentCSV: serverless-operator.v1.28.0Copy to Clipboard Copied! Toggle word wrap Toggle overflow Delete the subscription (for example,
serverless-operator):oc delete subscription.operators.coreos.com serverless-operator -n openshift-serverless
$ oc delete subscription.operators.coreos.com serverless-operator -n openshift-serverlessCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
subscription.operators.coreos.com "serverless-operator" deleted
subscription.operators.coreos.com "serverless-operator" deletedCopy to Clipboard Copied! Toggle word wrap Toggle overflow Delete the CSV for the Operator in the target namespace using the
currentCSVvalue from the previous step:oc delete clusterserviceversion serverless-operator.v1.28.0 -n openshift-serverless
$ oc delete clusterserviceversion serverless-operator.v1.28.0 -n openshift-serverlessCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
clusterserviceversion.operators.coreos.com "serverless-operator.v1.28.0" deleted
clusterserviceversion.operators.coreos.com "serverless-operator.v1.28.0" deletedCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Chapter 15. Log Record Fields Copia collegamentoCollegamento copiato negli appunti!
The following fields can be present in log records exported by the logging. Although log records are typically formatted as JSON objects, the same data model can be applied to other encodings.
To search these fields from Elasticsearch and Kibana, use the full dotted field name when searching. For example, with an Elasticsearch /_search URL, to look for a Kubernetes pod name, use /_search/q=kubernetes.pod_name:name-of-my-pod.
The top level fields may be present in every record.
message
The original log entry text, UTF-8 encoded. This field may be absent or empty if a non-empty structured field is present. See the description of structured for more.
| Data type | text |
| Example value |
|
structured
Original log entry as a structured object. This field may be present if the forwarder was configured to parse structured JSON logs. If the original log entry was a valid structured log, this field will contain an equivalent JSON structure. Otherwise this field will be empty or absent, and the message field will contain the original log message. The structured field can have any subfields that are included in the log message, there are no restrictions defined here.
| Data type | group |
| Example value | map[message:starting fluentd worker pid=21631 ppid=21618 worker=0 pid:21631 ppid:21618 worker:0] |
@timestamp
A UTC value that marks when the log payload was created or, if the creation time is not known, when the log payload was first collected. The “@” prefix denotes a field that is reserved for a particular use. By default, most tools look for “@timestamp” with ElasticSearch.
| Data type | date |
| Example value |
|
hostname
The name of the host where this log message originated. In a Kubernetes cluster, this is the same as kubernetes.host.
| Data type | keyword |
ipaddr4
The IPv4 address of the source server. Can be an array.
| Data type | ip |
ipaddr6
The IPv6 address of the source server, if available. Can be an array.
| Data type | ip |
level
The logging level from various sources, including rsyslog(severitytext property), a Python logging module, and others.
The following values come from syslog.h, and are preceded by their numeric equivalents:
-
0=emerg, system is unusable. -
1=alert, action must be taken immediately. -
2=crit, critical conditions. -
3=err, error conditions. -
4=warn, warning conditions. -
5=notice, normal but significant condition. -
6=info, informational. -
7=debug, debug-level messages.
The two following values are not part of syslog.h but are widely used:
-
8=trace, trace-level messages, which are more verbose thandebugmessages. -
9=unknown, when the logging system gets a value it doesn’t recognize.
Map the log levels or priorities of other logging systems to their nearest match in the preceding list. For example, from python logging, you can match CRITICAL with crit, ERROR with err, and so on.
| Data type | keyword |
| Example value |
|
pid
The process ID of the logging entity, if available.
| Data type | keyword |
service
The name of the service associated with the logging entity, if available. For example, syslog’s APP-NAME and rsyslog’s programname properties are mapped to the service field.
| Data type | keyword |
Chapter 16. tags Copia collegamentoCollegamento copiato negli appunti!
Optional. An operator-defined list of tags placed on each log by the collector or normalizer. The payload can be a string with whitespace-delimited string tokens or a JSON list of string tokens.
| Data type | text |
file
The path to the log file from which the collector reads this log entry. Normally, this is a path in the /var/log file system of a cluster node.
| Data type | text |
offset
The offset value. Can represent bytes to the start of the log line in the file (zero- or one-based), or log line numbers (zero- or one-based), so long as the values are strictly monotonically increasing in the context of a single log file. The values are allowed to wrap, representing a new version of the log file (rotation).
| Data type | long |
Chapter 17. kubernetes Copia collegamentoCollegamento copiato negli appunti!
The namespace for Kubernetes-specific metadata
| Data type | group |
17.1. kubernetes.pod_name Copia collegamentoCollegamento copiato negli appunti!
The name of the pod
| Data type | keyword |
17.2. kubernetes.pod_id Copia collegamentoCollegamento copiato negli appunti!
The Kubernetes ID of the pod
| Data type | keyword |
17.3. kubernetes.namespace_name Copia collegamentoCollegamento copiato negli appunti!
The name of the namespace in Kubernetes
| Data type | keyword |
17.4. kubernetes.namespace_id Copia collegamentoCollegamento copiato negli appunti!
The ID of the namespace in Kubernetes
| Data type | keyword |
17.5. kubernetes.host Copia collegamentoCollegamento copiato negli appunti!
The Kubernetes node name
| Data type | keyword |
17.6. kubernetes.container_name Copia collegamentoCollegamento copiato negli appunti!
The name of the container in Kubernetes
| Data type | keyword |
17.7. kubernetes.annotations Copia collegamentoCollegamento copiato negli appunti!
Annotations associated with the Kubernetes object
| Data type | group |
17.8. kubernetes.labels Copia collegamentoCollegamento copiato negli appunti!
Labels present on the original Kubernetes Pod
| Data type | group |
17.9. kubernetes.event Copia collegamentoCollegamento copiato negli appunti!
The Kubernetes event obtained from the Kubernetes master API. This event description loosely follows type Event in Event v1 core.
| Data type | group |
17.9.1. kubernetes.event.verb Copia collegamentoCollegamento copiato negli appunti!
The type of event, ADDED, MODIFIED, or DELETED
| Data type | keyword |
| Example value |
|
17.9.2. kubernetes.event.metadata Copia collegamentoCollegamento copiato negli appunti!
Information related to the location and time of the event creation
| Data type | group |
17.9.2.1. kubernetes.event.metadata.name Copia collegamentoCollegamento copiato negli appunti!
The name of the object that triggered the event creation
| Data type | keyword |
| Example value |
|
17.9.2.2. kubernetes.event.metadata.namespace Copia collegamentoCollegamento copiato negli appunti!
The name of the namespace where the event originally occurred. Note that it differs from kubernetes.namespace_name, which is the namespace where the eventrouter application is deployed.
| Data type | keyword |
| Example value |
|
17.9.2.3. kubernetes.event.metadata.selfLink Copia collegamentoCollegamento copiato negli appunti!
A link to the event
| Data type | keyword |
| Example value |
|
17.9.2.4. kubernetes.event.metadata.uid Copia collegamentoCollegamento copiato negli appunti!
The unique ID of the event
| Data type | keyword |
| Example value |
|
17.9.2.5. kubernetes.event.metadata.resourceVersion Copia collegamentoCollegamento copiato negli appunti!
A string that identifies the server’s internal version of the event. Clients can use this string to determine when objects have changed.
| Data type | integer |
| Example value |
|
17.9.3. kubernetes.event.involvedObject Copia collegamentoCollegamento copiato negli appunti!
The object that the event is about.
| Data type | group |
17.9.3.1. kubernetes.event.involvedObject.kind Copia collegamentoCollegamento copiato negli appunti!
The type of object
| Data type | keyword |
| Example value |
|
17.9.3.2. kubernetes.event.involvedObject.namespace Copia collegamentoCollegamento copiato negli appunti!
The namespace name of the involved object. Note that it may differ from kubernetes.namespace_name, which is the namespace where the eventrouter application is deployed.
| Data type | keyword |
| Example value |
|
17.9.3.3. kubernetes.event.involvedObject.name Copia collegamentoCollegamento copiato negli appunti!
The name of the object that triggered the event
| Data type | keyword |
| Example value |
|
17.9.3.4. kubernetes.event.involvedObject.uid Copia collegamentoCollegamento copiato negli appunti!
The unique ID of the object
| Data type | keyword |
| Example value |
|
17.9.3.5. kubernetes.event.involvedObject.apiVersion Copia collegamentoCollegamento copiato negli appunti!
The version of kubernetes master API
| Data type | keyword |
| Example value |
|
17.9.3.6. kubernetes.event.involvedObject.resourceVersion Copia collegamentoCollegamento copiato negli appunti!
A string that identifies the server’s internal version of the pod that triggered the event. Clients can use this string to determine when objects have changed.
| Data type | keyword |
| Example value |
|
17.9.4. kubernetes.event.reason Copia collegamentoCollegamento copiato negli appunti!
A short machine-understandable string that gives the reason for generating this event
| Data type | keyword |
| Example value |
|
17.9.5. kubernetes.event.source_component Copia collegamentoCollegamento copiato negli appunti!
The component that reported this event
| Data type | keyword |
| Example value |
|
17.9.6. kubernetes.event.firstTimestamp Copia collegamentoCollegamento copiato negli appunti!
The time at which the event was first recorded
| Data type | date |
| Example value |
|
17.9.7. kubernetes.event.count Copia collegamentoCollegamento copiato negli appunti!
The number of times this event has occurred
| Data type | integer |
| Example value |
|
17.9.8. kubernetes.event.type Copia collegamentoCollegamento copiato negli appunti!
The type of event, Normal or Warning. New types could be added in the future.
| Data type | keyword |
| Example value |
|
Chapter 18. OpenShift Copia collegamentoCollegamento copiato negli appunti!
The namespace for openshift-logging specific metadata
| Data type | group |
18.1. openshift.labels Copia collegamentoCollegamento copiato negli appunti!
Labels added by the Cluster Log Forwarder configuration
| Data type | group |
Chapter 19. API reference Copia collegamentoCollegamento copiato negli appunti!
19.1. 5.6 Logging API reference Copia collegamentoCollegamento copiato negli appunti!
19.1.1. Logging 5.6 API reference Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1. ClusterLogForwarder Copia collegamentoCollegamento copiato negli appunti!
ClusterLogForwarder is an API to configure forwarding logs.
You configure forwarding by specifying a list of pipelines, which forward from a set of named inputs to a set of named outputs.
There are built-in input names for common log categories, and you can define custom inputs to do additional filtering.
There is a built-in output name for the default openshift log store, but you can define your own outputs with a URL and other connection information to forward logs to other stores or processors, inside or outside the cluster.
For more details see the documentation on the API fields.
| Property | Type | Description |
|---|---|---|
| spec | object | Specification of the desired behavior of ClusterLogForwarder |
| status | object | Status of the ClusterLogForwarder |
19.1.1.1.1. .spec Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.1.1. Description Copia collegamentoCollegamento copiato negli appunti!
ClusterLogForwarderSpec defines how logs should be forwarded to remote targets.
19.1.1.1.1.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
| Property | Type | Description |
|---|---|---|
| inputs | array | (optional) Inputs are named filters for log messages to be forwarded. |
| outputDefaults | object | (optional) DEPRECATED OutputDefaults specify forwarder config explicitly for the default store. |
| outputs | array | (optional) Outputs are named destinations for log messages. |
| pipelines | array | Pipelines forward the messages selected by a set of inputs to a set of outputs. |
19.1.1.1.2. .spec.inputs[] Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.2.1. Description Copia collegamentoCollegamento copiato negli appunti!
InputSpec defines a selector of log messages.
19.1.1.1.2.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- array
| Property | Type | Description |
|---|---|---|
| application | object |
(optional) Application, if present, enables named set of |
| name | string |
Name used to refer to the input of a |
19.1.1.1.3. .spec.inputs[].application Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.3.1. Description Copia collegamentoCollegamento copiato negli appunti!
Application log selector. All conditions in the selector must be satisfied (logical AND) to select logs.
19.1.1.1.3.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
| Property | Type | Description |
|---|---|---|
| namespaces | array | (optional) Namespaces from which to collect application logs. |
| selector | object | (optional) Selector for logs from pods with matching labels. |
19.1.1.1.4. .spec.inputs[].application.namespaces[] Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.4.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.4.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- array
19.1.1.1.5. .spec.inputs[].application.selector Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.5.1. Description Copia collegamentoCollegamento copiato negli appunti!
A label selector is a label query over a set of resources.
19.1.1.1.5.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
| Property | Type | Description |
|---|---|---|
| matchLabels | object | (optional) matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels |
19.1.1.1.6. .spec.inputs[].application.selector.matchLabels Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.6.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.6.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
19.1.1.1.7. .spec.outputDefaults Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.7.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.7.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
| Property | Type | Description |
|---|---|---|
| elasticsearch | object | (optional) Elasticsearch OutputSpec default values |
19.1.1.1.8. .spec.outputDefaults.elasticsearch Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.8.1. Description Copia collegamentoCollegamento copiato negli appunti!
ElasticsearchStructuredSpec is spec related to structured log changes to determine the elasticsearch index
19.1.1.1.8.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
| Property | Type | Description |
|---|---|---|
| enableStructuredContainerLogs | bool | (optional) EnableStructuredContainerLogs enables multi-container structured logs to allow |
| structuredTypeKey | string | (optional) StructuredTypeKey specifies the metadata key to be used as name of elasticsearch index |
| structuredTypeName | string | (optional) StructuredTypeName specifies the name of elasticsearch schema |
19.1.1.1.9. .spec.outputs[] Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.9.1. Description Copia collegamentoCollegamento copiato negli appunti!
Output defines a destination for log messages.
19.1.1.1.9.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- array
| Property | Type | Description |
|---|---|---|
| syslog | object | (optional) |
| fluentdForward | object | (optional) |
| elasticsearch | object | (optional) |
| kafka | object | (optional) |
| cloudwatch | object | (optional) |
| loki | object | (optional) |
| googleCloudLogging | object | (optional) |
| splunk | object | (optional) |
| name | string |
Name used to refer to the output from a |
| secret | object | (optional) Secret for authentication. |
| tls | object | TLS contains settings for controlling options on TLS client connections. |
| type | string | Type of output plugin. |
| url | string | (optional) URL to send log records to. |
19.1.1.1.10. .spec.outputs[].secret Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.10.1. Description Copia collegamentoCollegamento copiato negli appunti!
OutputSecretSpec is a secret reference containing name only, no namespace.
19.1.1.1.10.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
| Property | Type | Description |
|---|---|---|
| name | string | Name of a secret in the namespace configured for log forwarder secrets. |
19.1.1.1.11. .spec.outputs[].tls Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.11.1. Description Copia collegamentoCollegamento copiato negli appunti!
OutputTLSSpec contains options for TLS connections that are agnostic to the output type.
19.1.1.1.11.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
| Property | Type | Description |
|---|---|---|
| insecureSkipVerify | bool | If InsecureSkipVerify is true, then the TLS client will be configured to ignore errors with certificates. |
19.1.1.1.12. .spec.pipelines[] Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.12.1. Description Copia collegamentoCollegamento copiato negli appunti!
PipelinesSpec link a set of inputs to a set of outputs.
19.1.1.1.12.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- array
| Property | Type | Description |
|---|---|---|
| detectMultilineErrors | bool | (optional) DetectMultilineErrors enables multiline error detection of container logs |
| inputRefs | array |
InputRefs lists the names ( |
| labels | object | (optional) Labels applied to log records passing through this pipeline. |
| name | string |
(optional) Name is optional, but must be unique in the |
| outputRefs | array |
OutputRefs lists the names ( |
| parse | string | (optional) Parse enables parsing of log entries into structured logs |
19.1.1.1.13. .spec.pipelines[].inputRefs[] Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.13.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.13.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- array
19.1.1.1.14. .spec.pipelines[].labels Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.14.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.14.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
19.1.1.1.15. .spec.pipelines[].outputRefs[] Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.15.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.15.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- array
19.1.1.1.16. .status Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.16.1. Description Copia collegamentoCollegamento copiato negli appunti!
ClusterLogForwarderStatus defines the observed state of ClusterLogForwarder
19.1.1.1.16.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
| Property | Type | Description |
|---|---|---|
| conditions | object | Conditions of the log forwarder. |
| inputs | Conditions | Inputs maps input name to condition of the input. |
| outputs | Conditions | Outputs maps output name to condition of the output. |
| pipelines | Conditions | Pipelines maps pipeline name to condition of the pipeline. |
19.1.1.1.17. .status.conditions Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.17.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.17.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
19.1.1.1.18. .status.inputs Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.18.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.18.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- Conditions
19.1.1.1.19. .status.outputs Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.19.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.19.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- Conditions
19.1.1.1.20. .status.pipelines Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.20.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.20.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- Conditions== ClusterLogging A Red Hat OpenShift Logging instance. ClusterLogging is the Schema for the clusterloggings API
| Property | Type | Description |
|---|---|---|
| spec | object | Specification of the desired behavior of ClusterLogging |
| status | object | Status defines the observed state of ClusterLogging |
19.1.1.1.21. .spec Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.21.1. Description Copia collegamentoCollegamento copiato negli appunti!
ClusterLoggingSpec defines the desired state of ClusterLogging
19.1.1.1.21.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
| Property | Type | Description |
|---|---|---|
| collection | object | Specification of the Collection component for the cluster |
| curation | object | (DEPRECATED) (optional) Deprecated. Specification of the Curation component for the cluster |
| forwarder | object | (DEPRECATED) (optional) Deprecated. Specification for Forwarder component for the cluster |
| logStore | object | (optional) Specification of the Log Storage component for the cluster |
| managementState | string | (optional) Indicator if the resource is 'Managed' or 'Unmanaged' by the operator |
| visualization | object | (optional) Specification of the Visualization component for the cluster |
19.1.1.1.22. .spec.collection Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.22.1. Description Copia collegamentoCollegamento copiato negli appunti!
This is the struct that will contain information pertinent to Log and event collection
19.1.1.1.22.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
| Property | Type | Description |
|---|---|---|
| resources | object | (optional) The resource requirements for the collector |
| nodeSelector | object | (optional) Define which Nodes the Pods are scheduled on. |
| tolerations | array | (optional) Define the tolerations the Pods will accept |
| fluentd | object | (optional) Fluentd represents the configuration for forwarders of type fluentd. |
| logs | object | (DEPRECATED) (optional) Deprecated. Specification of Log Collection for the cluster |
| type | string | (optional) The type of Log Collection to configure |
19.1.1.1.23. .spec.collection.fluentd Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.23.1. Description Copia collegamentoCollegamento copiato negli appunti!
FluentdForwarderSpec represents the configuration for forwarders of type fluentd.
19.1.1.1.23.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
| Property | Type | Description |
|---|---|---|
| buffer | object | |
| inFile | object |
19.1.1.1.24. .spec.collection.fluentd.buffer Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.24.1. Description Copia collegamentoCollegamento copiato negli appunti!
FluentdBufferSpec represents a subset of fluentd buffer parameters to tune the buffer configuration for all fluentd outputs. It supports a subset of parameters to configure buffer and queue sizing, flush operations and retry flushing.
For general parameters refer to: https://docs.fluentd.org/configuration/buffer-section#buffering-parameters
For flush parameters refer to: https://docs.fluentd.org/configuration/buffer-section#flushing-parameters
For retry parameters refer to: https://docs.fluentd.org/configuration/buffer-section#retries-parameters
19.1.1.1.24.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
| Property | Type | Description |
|---|---|---|
| chunkLimitSize | string | (optional) ChunkLimitSize represents the maximum size of each chunk. Events will be |
| flushInterval | string | (optional) FlushInterval represents the time duration to wait between two consecutive flush |
| flushMode | string | (optional) FlushMode represents the mode of the flushing thread to write chunks. The mode |
| flushThreadCount | int | (optional) FlushThreadCount represents the number of threads used by the fluentd buffer |
| overflowAction | string | (optional) OverflowAction represents the action for the fluentd buffer plugin to |
| retryMaxInterval | string | (optional) RetryMaxInterval represents the maximum time interval for exponential backoff |
| retryTimeout | string | (optional) RetryTimeout represents the maximum time interval to attempt retries before giving up |
| retryType | string | (optional) RetryType represents the type of retrying flush operations. Flush operations can |
| retryWait | string | (optional) RetryWait represents the time duration between two consecutive retries to flush |
| totalLimitSize | string | (optional) TotalLimitSize represents the threshold of node space allowed per fluentd |
19.1.1.1.25. .spec.collection.fluentd.inFile Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.25.1. Description Copia collegamentoCollegamento copiato negli appunti!
FluentdInFileSpec represents a subset of fluentd in-tail plugin parameters to tune the configuration for all fluentd in-tail inputs.
For general parameters refer to: https://docs.fluentd.org/input/tail#parameters
19.1.1.1.25.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
| Property | Type | Description |
|---|---|---|
| readLinesLimit | int | (optional) ReadLinesLimit represents the number of lines to read with each I/O operation |
19.1.1.1.26. .spec.collection.logs Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.26.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.26.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
| Property | Type | Description |
|---|---|---|
| fluentd | object | Specification of the Fluentd Log Collection component |
| type | string | The type of Log Collection to configure |
19.1.1.1.27. .spec.collection.logs.fluentd Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.27.1. Description Copia collegamentoCollegamento copiato negli appunti!
CollectorSpec is spec to define scheduling and resources for a collector
19.1.1.1.27.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
| Property | Type | Description |
|---|---|---|
| nodeSelector | object | (optional) Define which Nodes the Pods are scheduled on. |
| resources | object | (optional) The resource requirements for the collector |
| tolerations | array | (optional) Define the tolerations the Pods will accept |
19.1.1.1.28. .spec.collection.logs.fluentd.nodeSelector Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.28.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.28.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
19.1.1.1.29. .spec.collection.logs.fluentd.resources Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.29.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.29.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
| Property | Type | Description |
|---|---|---|
| limits | object | (optional) Limits describes the maximum amount of compute resources allowed. |
| requests | object | (optional) Requests describes the minimum amount of compute resources required. |
19.1.1.1.30. .spec.collection.logs.fluentd.resources.limits Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.30.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.30.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
19.1.1.1.31. .spec.collection.logs.fluentd.resources.requests Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.31.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.31.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
19.1.1.1.32. .spec.collection.logs.fluentd.tolerations[] Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.32.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.32.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- array
| Property | Type | Description |
|---|---|---|
| effect | string | (optional) Effect indicates the taint effect to match. Empty means match all taint effects. |
| key | string | (optional) Key is the taint key that the toleration applies to. Empty means match all taint keys. |
| operator | string | (optional) Operator represents a key's relationship to the value. |
| tolerationSeconds | int | (optional) TolerationSeconds represents the period of time the toleration (which must be |
| value | string | (optional) Value is the taint value the toleration matches to. |
19.1.1.1.33. .spec.collection.logs.fluentd.tolerations[].tolerationSeconds Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.33.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.33.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- int
19.1.1.1.34. .spec.curation Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.34.1. Description Copia collegamentoCollegamento copiato negli appunti!
This is the struct that will contain information pertinent to Log curation (Curator)
19.1.1.1.34.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
| Property | Type | Description |
|---|---|---|
| curator | object | The specification of curation to configure |
| type | string | The kind of curation to configure |
19.1.1.1.35. .spec.curation.curator Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.35.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.35.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
| Property | Type | Description |
|---|---|---|
| nodeSelector | object | Define which Nodes the Pods are scheduled on. |
| resources | object | (optional) The resource requirements for Curator |
| schedule | string | The cron schedule that the Curator job is run. Defaults to "30 3 * * *" |
| tolerations | array |
19.1.1.1.36. .spec.curation.curator.nodeSelector Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.36.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.36.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
19.1.1.1.37. .spec.curation.curator.resources Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.37.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.37.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
| Property | Type | Description |
|---|---|---|
| limits | object | (optional) Limits describes the maximum amount of compute resources allowed. |
| requests | object | (optional) Requests describes the minimum amount of compute resources required. |
19.1.1.1.38. .spec.curation.curator.resources.limits Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.38.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.38.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
19.1.1.1.39. .spec.curation.curator.resources.requests Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.39.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.39.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
19.1.1.1.40. .spec.curation.curator.tolerations[] Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.40.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.40.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- array
| Property | Type | Description |
|---|---|---|
| effect | string | (optional) Effect indicates the taint effect to match. Empty means match all taint effects. |
| key | string | (optional) Key is the taint key that the toleration applies to. Empty means match all taint keys. |
| operator | string | (optional) Operator represents a key's relationship to the value. |
| tolerationSeconds | int | (optional) TolerationSeconds represents the period of time the toleration (which must be |
| value | string | (optional) Value is the taint value the toleration matches to. |
19.1.1.1.41. .spec.curation.curator.tolerations[].tolerationSeconds Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.41.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.41.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- int
19.1.1.1.42. .spec.forwarder Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.42.1. Description Copia collegamentoCollegamento copiato negli appunti!
ForwarderSpec contains global tuning parameters for specific forwarder implementations. This field is not required for general use, it allows performance tuning by users familiar with the underlying forwarder technology. Currently supported: fluentd.
19.1.1.1.42.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
| Property | Type | Description |
|---|---|---|
| fluentd | object |
19.1.1.1.43. .spec.forwarder.fluentd Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.43.1. Description Copia collegamentoCollegamento copiato negli appunti!
FluentdForwarderSpec represents the configuration for forwarders of type fluentd.
19.1.1.1.43.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
| Property | Type | Description |
|---|---|---|
| buffer | object | |
| inFile | object |
19.1.1.1.44. .spec.forwarder.fluentd.buffer Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.44.1. Description Copia collegamentoCollegamento copiato negli appunti!
FluentdBufferSpec represents a subset of fluentd buffer parameters to tune the buffer configuration for all fluentd outputs. It supports a subset of parameters to configure buffer and queue sizing, flush operations and retry flushing.
For general parameters refer to: https://docs.fluentd.org/configuration/buffer-section#buffering-parameters
For flush parameters refer to: https://docs.fluentd.org/configuration/buffer-section#flushing-parameters
For retry parameters refer to: https://docs.fluentd.org/configuration/buffer-section#retries-parameters
19.1.1.1.44.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
| Property | Type | Description |
|---|---|---|
| chunkLimitSize | string | (optional) ChunkLimitSize represents the maximum size of each chunk. Events will be |
| flushInterval | string | (optional) FlushInterval represents the time duration to wait between two consecutive flush |
| flushMode | string | (optional) FlushMode represents the mode of the flushing thread to write chunks. The mode |
| flushThreadCount | int | (optional) FlushThreadCount reprents the number of threads used by the fluentd buffer |
| overflowAction | string | (optional) OverflowAction represents the action for the fluentd buffer plugin to |
| retryMaxInterval | string | (optional) RetryMaxInterval represents the maximum time interval for exponential backoff |
| retryTimeout | string | (optional) RetryTimeout represents the maximum time interval to attempt retries before giving up |
| retryType | string | (optional) RetryType represents the type of retrying flush operations. Flush operations can |
| retryWait | string | (optional) RetryWait represents the time duration between two consecutive retries to flush |
| totalLimitSize | string | (optional) TotalLimitSize represents the threshold of node space allowed per fluentd |
19.1.1.1.45. .spec.forwarder.fluentd.inFile Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.45.1. Description Copia collegamentoCollegamento copiato negli appunti!
FluentdInFileSpec represents a subset of fluentd in-tail plugin parameters to tune the configuration for all fluentd in-tail inputs.
For general parameters refer to: https://docs.fluentd.org/input/tail#parameters
19.1.1.1.45.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
| Property | Type | Description |
|---|---|---|
| readLinesLimit | int | (optional) ReadLinesLimit represents the number of lines to read with each I/O operation |
19.1.1.1.46. .spec.logStore Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.46.1. Description Copia collegamentoCollegamento copiato negli appunti!
The LogStoreSpec contains information about how logs are stored.
19.1.1.1.46.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
| Property | Type | Description |
|---|---|---|
| elasticsearch | object | Specification of the Elasticsearch Log Store component |
| lokistack | object | LokiStack contains information about which LokiStack to use for log storage if Type is set to LogStoreTypeLokiStack. |
| retentionPolicy | object | (optional) Retention policy defines the maximum age for an index after which it should be deleted |
| type | string | The Type of Log Storage to configure. The operator currently supports either using ElasticSearch |
19.1.1.1.47. .spec.logStore.elasticsearch Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.47.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.47.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
| Property | Type | Description |
|---|---|---|
| nodeCount | int | Number of nodes to deploy for Elasticsearch |
| nodeSelector | object | Define which Nodes the Pods are scheduled on. |
| proxy | object | Specification of the Elasticsearch Proxy component |
| redundancyPolicy | string | (optional) |
| resources | object | (optional) The resource requirements for Elasticsearch |
| storage | object | (optional) The storage specification for Elasticsearch data nodes |
| tolerations | array |
19.1.1.1.48. .spec.logStore.elasticsearch.nodeSelector Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.48.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.48.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
19.1.1.1.49. .spec.logStore.elasticsearch.proxy Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.49.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.49.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
| Property | Type | Description |
|---|---|---|
| resources | object |
19.1.1.1.50. .spec.logStore.elasticsearch.proxy.resources Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.50.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.50.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
| Property | Type | Description |
|---|---|---|
| limits | object | (optional) Limits describes the maximum amount of compute resources allowed. |
| requests | object | (optional) Requests describes the minimum amount of compute resources required. |
19.1.1.1.51. .spec.logStore.elasticsearch.proxy.resources.limits Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.51.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.51.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
19.1.1.1.52. .spec.logStore.elasticsearch.proxy.resources.requests Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.52.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.52.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
19.1.1.1.53. .spec.logStore.elasticsearch.resources Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.53.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.53.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
| Property | Type | Description |
|---|---|---|
| limits | object | (optional) Limits describes the maximum amount of compute resources allowed. |
| requests | object | (optional) Requests describes the minimum amount of compute resources required. |
19.1.1.1.54. .spec.logStore.elasticsearch.resources.limits Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.54.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.54.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
19.1.1.1.55. .spec.logStore.elasticsearch.resources.requests Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.55.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.55.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
19.1.1.1.56. .spec.logStore.elasticsearch.storage Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.56.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.56.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
| Property | Type | Description |
|---|---|---|
| size | object | The max storage capacity for the node to provision. |
| storageClassName | string | (optional) The name of the storage class to use with creating the node's PVC. |
19.1.1.1.57. .spec.logStore.elasticsearch.storage.size Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.57.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.57.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
| Property | Type | Description |
|---|---|---|
| Format | string | Change Format at will. See the comment for Canonicalize for |
| d | object | d is the quantity in inf.Dec form if d.Dec != nil |
| i | int | i is the quantity in int64 scaled form, if d.Dec == nil |
| s | string | s is the generated value of this quantity to avoid recalculation |
19.1.1.1.58. .spec.logStore.elasticsearch.storage.size.d Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.58.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.58.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
| Property | Type | Description |
|---|---|---|
| Dec | object |
19.1.1.1.59. .spec.logStore.elasticsearch.storage.size.d.Dec Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.59.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.59.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
| Property | Type | Description |
|---|---|---|
| scale | int | |
| unscaled | object |
19.1.1.1.60. .spec.logStore.elasticsearch.storage.size.d.Dec.unscaled Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.60.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.60.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
| Property | Type | Description |
|---|---|---|
| abs | Word | sign |
| neg | bool |
19.1.1.1.61. .spec.logStore.elasticsearch.storage.size.d.Dec.unscaled.abs Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.61.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.61.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- Word
19.1.1.1.62. .spec.logStore.elasticsearch.storage.size.i Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.62.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.62.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- int
| Property | Type | Description |
|---|---|---|
| scale | int | |
| value | int |
19.1.1.1.63. .spec.logStore.elasticsearch.tolerations[] Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.63.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.63.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- array
| Property | Type | Description |
|---|---|---|
| effect | string | (optional) Effect indicates the taint effect to match. Empty means match all taint effects. |
| key | string | (optional) Key is the taint key that the toleration applies to. Empty means match all taint keys. |
| operator | string | (optional) Operator represents a key's relationship to the value. |
| tolerationSeconds | int | (optional) TolerationSeconds represents the period of time the toleration (which must be |
| value | string | (optional) Value is the taint value the toleration matches to. |
19.1.1.1.64. .spec.logStore.elasticsearch.tolerations[].tolerationSeconds Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.64.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.64.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- int
19.1.1.1.65. .spec.logStore.lokistack Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.65.1. Description Copia collegamentoCollegamento copiato negli appunti!
LokiStackStoreSpec is used to set up cluster-logging to use a LokiStack as logging storage. It points to an existing LokiStack in the same namespace.
19.1.1.1.65.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
| Property | Type | Description |
|---|---|---|
| name | string | Name of the LokiStack resource. |
19.1.1.1.66. .spec.logStore.retentionPolicy Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.66.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.66.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
| Property | Type | Description |
|---|---|---|
| application | object | |
| audit | object | |
| infra | object |
19.1.1.1.67. .spec.logStore.retentionPolicy.application Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.67.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.67.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
| Property | Type | Description |
|---|---|---|
| diskThresholdPercent | int | (optional) The threshold percentage of ES disk usage that when reached, old indices should be deleted (e.g. 75) |
| maxAge | string | (optional) |
| namespaceSpec | array | (optional) The per namespace specification to delete documents older than a given minimum age |
| pruneNamespacesInterval | string | (optional) How often to run a new prune-namespaces job |
19.1.1.1.68. .spec.logStore.retentionPolicy.application.namespaceSpec[] Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.68.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.68.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- array
| Property | Type | Description |
|---|---|---|
| minAge | string | (optional) Delete the records matching the namespaces which are older than this MinAge (e.g. 1d) |
| namespace | string | Target Namespace to delete logs older than MinAge (defaults to 7d) |
19.1.1.1.69. .spec.logStore.retentionPolicy.audit Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.69.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.69.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
| Property | Type | Description |
|---|---|---|
| diskThresholdPercent | int | (optional) The threshold percentage of ES disk usage that when reached, old indices should be deleted (e.g. 75) |
| maxAge | string | (optional) |
| namespaceSpec | array | (optional) The per namespace specification to delete documents older than a given minimum age |
| pruneNamespacesInterval | string | (optional) How often to run a new prune-namespaces job |
19.1.1.1.70. .spec.logStore.retentionPolicy.audit.namespaceSpec[] Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.70.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.70.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- array
| Property | Type | Description |
|---|---|---|
| minAge | string | (optional) Delete the records matching the namespaces which are older than this MinAge (e.g. 1d) |
| namespace | string | Target Namespace to delete logs older than MinAge (defaults to 7d) |
19.1.1.1.71. .spec.logStore.retentionPolicy.infra Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.71.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.71.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
| Property | Type | Description |
|---|---|---|
| diskThresholdPercent | int | (optional) The threshold percentage of ES disk usage that when reached, old indices should be deleted (e.g. 75) |
| maxAge | string | (optional) |
| namespaceSpec | array | (optional) The per namespace specification to delete documents older than a given minimum age |
| pruneNamespacesInterval | string | (optional) How often to run a new prune-namespaces job |
19.1.1.1.72. .spec.logStore.retentionPolicy.infra.namespaceSpec[] Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.72.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.72.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- array
| Property | Type | Description |
|---|---|---|
| minAge | string | (optional) Delete the records matching the namespaces which are older than this MinAge (e.g. 1d) |
| namespace | string | Target Namespace to delete logs older than MinAge (defaults to 7d) |
19.1.1.1.73. .spec.visualization Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.73.1. Description Copia collegamentoCollegamento copiato negli appunti!
This is the struct that will contain information pertinent to Log visualization (Kibana)
19.1.1.1.73.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
| Property | Type | Description |
|---|---|---|
| kibana | object | Specification of the Kibana Visualization component |
| type | string | The type of Visualization to configure |
19.1.1.1.74. .spec.visualization.kibana Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.74.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.74.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
| Property | Type | Description |
|---|---|---|
| nodeSelector | object | Define which Nodes the Pods are scheduled on. |
| proxy | object | Specification of the Kibana Proxy component |
| replicas | int | Number of instances to deploy for a Kibana deployment |
| resources | object | (optional) The resource requirements for Kibana |
| tolerations | array |
19.1.1.1.75. .spec.visualization.kibana.nodeSelector Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.75.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.75.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
19.1.1.1.76. .spec.visualization.kibana.proxy Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.76.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.76.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
| Property | Type | Description |
|---|---|---|
| resources | object |
19.1.1.1.77. .spec.visualization.kibana.proxy.resources Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.77.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.77.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
| Property | Type | Description |
|---|---|---|
| limits | object | (optional) Limits describes the maximum amount of compute resources allowed. |
| requests | object | (optional) Requests describes the minimum amount of compute resources required. |
19.1.1.1.78. .spec.visualization.kibana.proxy.resources.limits Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.78.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.78.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
19.1.1.1.79. .spec.visualization.kibana.proxy.resources.requests Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.79.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.79.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
19.1.1.1.80. .spec.visualization.kibana.replicas Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.80.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.80.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- int
19.1.1.1.81. .spec.visualization.kibana.resources Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.81.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.81.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
| Property | Type | Description |
|---|---|---|
| limits | object | (optional) Limits describes the maximum amount of compute resources allowed. |
| requests | object | (optional) Requests describes the minimum amount of compute resources required. |
19.1.1.1.82. .spec.visualization.kibana.resources.limits Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.82.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.82.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
19.1.1.1.83. .spec.visualization.kibana.resources.requests Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.83.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.83.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
19.1.1.1.84. .spec.visualization.kibana.tolerations[] Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.84.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.84.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- array
| Property | Type | Description |
|---|---|---|
| effect | string | (optional) Effect indicates the taint effect to match. Empty means match all taint effects. |
| key | string | (optional) Key is the taint key that the toleration applies to. Empty means match all taint keys. |
| operator | string | (optional) Operator represents a key's relationship to the value. |
| tolerationSeconds | int | (optional) TolerationSeconds represents the period of time the toleration (which must be |
| value | string | (optional) Value is the taint value the toleration matches to. |
19.1.1.1.85. .spec.visualization.kibana.tolerations[].tolerationSeconds Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.85.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.85.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- int
19.1.1.1.86. .status Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.86.1. Description Copia collegamentoCollegamento copiato negli appunti!
ClusterLoggingStatus defines the observed state of ClusterLogging
19.1.1.1.86.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
| Property | Type | Description |
|---|---|---|
| collection | object | (optional) |
| conditions | object | (optional) |
| curation | object | (optional) |
| logStore | object | (optional) |
| visualization | object | (optional) |
19.1.1.1.87. .status.collection Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.87.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.87.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
| Property | Type | Description |
|---|---|---|
| logs | object | (optional) |
19.1.1.1.88. .status.collection.logs Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.88.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.88.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
| Property | Type | Description |
|---|---|---|
| fluentdStatus | object | (optional) |
19.1.1.1.89. .status.collection.logs.fluentdStatus Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.89.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.89.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
| Property | Type | Description |
|---|---|---|
| clusterCondition | object | (optional) |
| daemonSet | string | (optional) |
| nodes | object | (optional) |
| pods | string | (optional) |
19.1.1.1.90. .status.collection.logs.fluentdStatus.clusterCondition Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.90.1. Description Copia collegamentoCollegamento copiato negli appunti!
operator-sdk generate crds does not allow map-of-slice, must use a named type.
19.1.1.1.90.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
19.1.1.1.91. .status.collection.logs.fluentdStatus.nodes Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.91.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.91.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
19.1.1.1.92. .status.conditions Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.92.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.92.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
19.1.1.1.93. .status.curation Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.93.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.93.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
| Property | Type | Description |
|---|---|---|
| curatorStatus | array | (optional) |
19.1.1.1.94. .status.curation.curatorStatus[] Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.94.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.94.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- array
| Property | Type | Description |
|---|---|---|
| clusterCondition | object | (optional) |
| cronJobs | string | (optional) |
| schedules | string | (optional) |
| suspended | bool | (optional) |
19.1.1.1.95. .status.curation.curatorStatus[].clusterCondition Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.95.1. Description Copia collegamentoCollegamento copiato negli appunti!
operator-sdk generate crds does not allow map-of-slice, must use a named type.
19.1.1.1.95.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
19.1.1.1.96. .status.logStore Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.96.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.96.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
| Property | Type | Description |
|---|---|---|
| elasticsearchStatus | array | (optional) |
19.1.1.1.97. .status.logStore.elasticsearchStatus[] Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.97.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.97.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- array
| Property | Type | Description |
|---|---|---|
| cluster | object | (optional) |
| clusterConditions | object | (optional) |
| clusterHealth | string | (optional) |
| clusterName | string | (optional) |
| deployments | array | (optional) |
| nodeConditions | object | (optional) |
| nodeCount | int | (optional) |
| pods | object | (optional) |
| replicaSets | array | (optional) |
| shardAllocationEnabled | string | (optional) |
| statefulSets | array | (optional) |
19.1.1.1.98. .status.logStore.elasticsearchStatus[].cluster Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.98.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.98.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
| Property | Type | Description |
|---|---|---|
| activePrimaryShards | int | The number of Active Primary Shards for the Elasticsearch Cluster |
| activeShards | int | The number of Active Shards for the Elasticsearch Cluster |
| initializingShards | int | The number of Initializing Shards for the Elasticsearch Cluster |
| numDataNodes | int | The number of Data Nodes for the Elasticsearch Cluster |
| numNodes | int | The number of Nodes for the Elasticsearch Cluster |
| pendingTasks | int | |
| relocatingShards | int | The number of Relocating Shards for the Elasticsearch Cluster |
| status | string | The current Status of the Elasticsearch Cluster |
| unassignedShards | int | The number of Unassigned Shards for the Elasticsearch Cluster |
19.1.1.1.99. .status.logStore.elasticsearchStatus[].clusterConditions Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.99.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.99.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
19.1.1.1.100. .status.logStore.elasticsearchStatus[].deployments[] Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.100.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.100.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- array
19.1.1.1.101. .status.logStore.elasticsearchStatus[].nodeConditions Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.101.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.101.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
19.1.1.1.102. .status.logStore.elasticsearchStatus[].pods Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.102.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.102.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
19.1.1.1.103. .status.logStore.elasticsearchStatus[].replicaSets[] Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.103.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.103.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- array
19.1.1.1.104. .status.logStore.elasticsearchStatus[].statefulSets[] Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.104.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.104.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- array
19.1.1.1.105. .status.visualization Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.105.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.105.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
| Property | Type | Description |
|---|---|---|
| kibanaStatus | array | (optional) |
19.1.1.1.106. .status.visualization.kibanaStatus[] Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.106.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.106.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- array
| Property | Type | Description |
|---|---|---|
| clusterCondition | object | (optional) |
| deployment | string | (optional) |
| pods | string | (optional) The status for each of the Kibana pods for the Visualization component |
| replicaSets | array | (optional) |
| replicas | int | (optional) |
19.1.1.1.107. .status.visualization.kibanaStatus[].clusterCondition Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.107.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.107.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- object
19.1.1.1.108. .status.visualization.kibanaStatus[].replicaSets[] Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.108.1. Description Copia collegamentoCollegamento copiato negli appunti!
19.1.1.1.108.1.1. Type Copia collegamentoCollegamento copiato negli appunti!
- array
Chapter 20. Glossary Copia collegamentoCollegamento copiato negli appunti!
This glossary defines common terms that are used in the logging documentation.
- Annotation
- You can use annotations to attach metadata to objects.
- Red Hat OpenShift Logging Operator
- The Red Hat OpenShift Logging Operator provides a set of APIs to control the collection and forwarding of application, infrastructure, and audit logs.
- Custom resource (CR)
-
A CR is an extension of the Kubernetes API. To configure the logging and log forwarding, you can customize the
ClusterLoggingand theClusterLogForwardercustom resources. - Event router
- The event router is a pod that watches OpenShift Container Platform events. It collects logs by using the logging.
- Fluentd
- Fluentd is a log collector that resides on each OpenShift Container Platform node. It gathers application, infrastructure, and audit logs and forwards them to different outputs.
- Garbage collection
- Garbage collection is the process of cleaning up cluster resources, such as terminated containers and images that are not referenced by any running pods.
- Elasticsearch
- Elasticsearch is a distributed search and analytics engine. OpenShift Container Platform uses Elasticsearch as a default log store for the logging.
- OpenShift Elasticsearch Operator
- The OpenShift Elasticsearch Operator is used to run an Elasticsearch cluster on OpenShift Container Platform. The OpenShift Elasticsearch Operator provides self-service for the Elasticsearch cluster operations and is used by the logging.
- Indexing
- Indexing is a data structure technique that is used to quickly locate and access data. Indexing optimizes the performance by minimizing the amount of disk access required when a query is processed.
- JSON logging
- The Log Forwarding API enables you to parse JSON logs into a structured object and forward them to either the logging managed Elasticsearch or any other third-party system supported by the Log Forwarding API.
- Kibana
- Kibana is a browser-based console interface to query, discover, and visualize your Elasticsearch data through histograms, line graphs, and pie charts.
- Kubernetes API server
- Kubernetes API server validates and configures data for the API objects.
- Labels
- Labels are key-value pairs that you can use to organize and select subsets of objects, such as a pod.
- Logging
- With the logging, you can aggregate application, infrastructure, and audit logs throughout your cluster. You can also store them to a default log store, forward them to third party systems, and query and visualize the stored logs in the default log store.
- Logging collector
- A logging collector collects logs from the cluster, formats them, and forwards them to the log store or third party systems.
- Log store
- A log store is used to store aggregated logs. You can use an internal log store or forward logs to external log stores.
- Log visualizer
- Log visualizer is the user interface (UI) component you can use to view information such as logs, graphs, charts, and other metrics.
- Node
- A node is a worker machine in the OpenShift Container Platform cluster. A node is either a virtual machine (VM) or a physical machine.
- Operators
- Operators are the preferred method of packaging, deploying, and managing a Kubernetes application in an OpenShift Container Platform cluster. An Operator takes human operational knowledge and encodes it into software that is packaged and shared with customers.
- Pod
- A pod is the smallest logical unit in Kubernetes. A pod consists of one or more containers and runs on a worker node.
- Role-based access control (RBAC)
- RBAC is a key security control to ensure that cluster users and workloads have access only to resources required to execute their roles.
- Shards
- Elasticsearch organizes log data from Fluentd into datastores, or indices, then subdivides each index into multiple pieces called shards.
- Taint
- Taints ensure that pods are scheduled onto appropriate nodes. You can apply one or more taints on a node.
- Toleration
- You can apply tolerations to pods. Tolerations allow the scheduler to schedule pods with matching taints.
- Web console
- A user interface (UI) to manage OpenShift Container Platform.
Legal Notice
Copia collegamentoCollegamento copiato negli appunti!
Copyright © 2025 Red Hat
OpenShift documentation is licensed under the Apache License 2.0 (https://www.apache.org/licenses/LICENSE-2.0).
Modified versions must remove all Red Hat trademarks.
Portions adapted from https://github.com/kubernetes-incubator/service-catalog/ with modifications by Red Hat.
Red Hat, Red Hat Enterprise Linux, the Red Hat logo, the Shadowman logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation’s permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.