This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.7.12. Loki로 로그 전달
내부 기본 OpenShift Container Platform Elasticsearch 인스턴스 대신 외부 Loki 로깅 시스템으로 로그를 전달할 수 있습니다.
Loki에 대한 로그 전달을 구성하려면 Loki에 대한 출력과 출력을 사용하는 파이프라인이 있는 ClusterLogForwarder
사용자 정의 리소스(CR)를 생성해야 합니다. Loki의 출력은 HTTP(비보안) 또는 HTTPS(보안 HTTP) 연결을 사용할 수 있습니다.
사전 요구 사항
-
CR의
url
필드로 지정하는 URL에서 Loki 로깅 시스템을 실행해야 합니다.
절차
ClusterLogForwarder
CR 오브젝트를 정의하는 YAML 파일을 생성하거나 편집합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
ClusterLogForwarder
CR의 이름은instance
여야 합니다.- 2
ClusterLogForwarder
CR의 네임스페이스는openshift-logging
이어야 합니다.- 3
- 출력 이름을 지정합니다.
- 4
- 유형을
"loki"
로 지정합니다. - 5
- Loki 시스템의 URL 및 포트를 유효한 절대 URL로 지정합니다.
http
(비보안) 또는https
(보안 HTTP) 프로토콜을 사용할 수 있습니다. CIDR 주석을 사용하는 클러스터 전체 프록시가 활성화된 경우 출력은 IP 주소가 아닌 서버 이름 또는 FQDN이어야 합니다. - 6
- 보안 연결의 경우
secret
을 지정하여 인증하는https
또는http
URL을 지정할 수 있습니다. - 7
https
접두사의 경우 TLS 통신의 엔드포인트에 필요한 보안 이름을 지정합니다. 시크릿은openshift-logging
프로젝트에 있어야 하며 해당하는 각 인증서를 가리키는 tls.crt,tls.key 및 ca-bundle.crt 키가 있어야 합니다. 그러지 않으면http
및https
접두사의 경우 사용자 이름과 암호가 포함된 시크릿을 지정할 수 있습니다. 자세한 내용은 다음 "예: 사용자 이름과 암호가 포함된 시크릿 설정".- 8
- 선택 사항: 파이프라인의 이름을 지정합니다.
- 9
- 파이프라인을 사용하여 전달할 로그 유형 (
application,
infrastructure
, 또는audit
)을 지정합니다. - 10
- 이 파이프라인으로 로그를 전달할 때 사용할 출력 이름을 지정합니다.
- 11
- 선택 사항: Loki의
TenantID
필드 값을 생성할 meta-data 키 필드를 지정합니다. 예를 들어tenantKey: kubernetes.namespace_name
을 설정하면 Kubernetes 네임스페이스의 이름이 Loki의 테넌트 ID 값으로 사용됩니다. 지정할 수 있는 다른 로그 레코드 필드를 보려면 다음 "추가 리소스" 섹션의 "로그 레코드 필드" 링크를 참조하십시오. - 12
- 선택 사항: 기본 Loki 레이블을 바꾸려면 meta-data 필드 키 목록을 지정합니다. Loki 레이블 이름은 정규식
[a-zA-Z_:][a-zA-Z0-9_:]*
와 일치해야 합니다. 메타 데이터 키의 잘못된 문자는 레이블 이름을 형성하기 위해_
로 대체됩니다. 예를 들어kubernetes.labels.foo
메타 데이터 키는 Loki 레이블kubernetes_labels_foo
가 됩니다.labelKeys
를 설정하지 않으면 기본값은[log_type, kubernetes.namespace_name, kubernetes.pod_name, kubernetes_host]
입니다. Loki는 허용되는 레이블의 크기와 수를 제한하므로 레이블 세트를 작게 유지합니다. Configuring Loki, limits_config를 참조하십시오. 쿼리 필터를 사용하여 로그 레코드 필드를 기반으로 쿼리할 수 있습니다.
참고Loki는 타임스탬프에 의해 로그 스트림을 올바르게 정렬해야 하므로
labelKeys
에는 항상kubernetes_host
레이블 세트가 포함됩니다. 이렇게 하면 각 스트림이 단일 호스트에서 시작되도록 하여 서로 다른 호스트의 클록 차이로 인해 타임스탬프가 무질서해지는 것을 방지할 수 있습니다.CR 오브젝트를 생성합니다.
oc create -f <file-name>.yaml
$ oc create -f <file-name>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.12.1. Loki "주문 부족" 오류 문제 해결 링크 복사링크가 클립보드에 복사되었습니다!
Fluentd가 대량의 메시지 블록을 속도 제한을 초과하는 Loki 로깅 시스템에 전달하는 경우 Loki는 "주문 부족" 오류를 생성합니다. 이 문제를 해결하려면 Loki 서버 구성 파일인 loki.yaml
에서 일부 값을 업데이트합니다.
Loki.yaml
은 Grafana 호스팅 Loki에서 사용할 수 없습니다. 이는 Grafana 호스팅 Loki 서버에는 적용되지 않습니다.
조건
-
ClusterLogForwarder
사용자 정의 리소스는 로그를 Loki로 전달하도록 구성되어 있습니다. 시스템에서 2MB보다 큰 메시지 블록을 Loki에 보냅니다. 예를 들면 다음과 같습니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc logs -c fluentd
를 입력하면 OpenShift Logging 클러스터의 Fluentd 로그에 다음 메시지가 표시됩니다.429 Too Many Requests Ingestion rate limit exceeded (limit: 8388608 bytes/sec) while attempting to ingest '2140' lines totaling '3285284' bytes 429 Too Many Requests Ingestion rate limit exceeded' or '500 Internal Server Error rpc error: code = ResourceExhausted desc = grpc: received message larger than max (5277702 vs. 4194304)'
429 Too Many Requests Ingestion rate limit exceeded (limit: 8388608 bytes/sec) while attempting to ingest '2140' lines totaling '3285284' bytes 429 Too Many Requests Ingestion rate limit exceeded' or '500 Internal Server Error rpc error: code = ResourceExhausted desc = grpc: received message larger than max (5277702 vs. 4194304)'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Loki 서버에서 로그를 열면 다음과 같은
entry out of order
메시지가 표시됩니다.,\nentry with timestamp 2021-08-18 05:58:55.061936 +0000 UTC ignored, reason: 'entry out of order' for stream: {fluentd_thread=\"flush_thread_0\", log_type=\"audit\"},\nentry with timestamp 2021-08-18 06:01:18.290229 +0000 UTC ignored, reason: 'entry out of order' for stream: {fluentd_thread="flush_thread_0", log_type="audit"}
,\nentry with timestamp 2021-08-18 05:58:55.061936 +0000 UTC ignored, reason: 'entry out of order' for stream: {fluentd_thread=\"flush_thread_0\", log_type=\"audit\"},\nentry with timestamp 2021-08-18 06:01:18.290229 +0000 UTC ignored, reason: 'entry out of order' for stream: {fluentd_thread="flush_thread_0", log_type="audit"}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
절차
Loki 서버의
loki.yaml
구성 파일에서 다음 필드를 여기에 표시된 값으로 업데이트합니다.-
grpc_server_max_recv_msg_size: 8388608
-
chunk_target_size: 8388608
-
ingestion_rate_mb: 8
-
ingestion_burst_size_mb: 16
-
-
Loki
.yaml의 변경
사항을 Loki 서버에 적용합니다.
loki.yaml
파일 예