12장. 성능 및 안정성 튜닝
12.1. 흐름 제어 메커니즘 링크 복사링크가 클립보드에 복사되었습니다!
로그를 수집할 수 있는 것보다 빠르게 생성되는 경우 출력으로 전송되는 로그 볼륨을 예측하거나 제어하기 어려울 수 있습니다. 출력으로 전송되는 로그 볼륨을 예측하거나 제어할 수 없으므로 로그가 손실될 수 있습니다. 시스템 중단 및 로그 버퍼가 사용자 제어 없이 누적되면 연결이 복원될 때 긴 복구 시간과 높은 대기 시간이 발생할 수 있습니다.
관리자는 로깅에 대한 흐름 제어 메커니즘을 구성하여 로깅 속도를 제한할 수 있습니다.
12.1.1. 흐름 제어 메커니즘의 이점 링크 복사링크가 클립보드에 복사되었습니다!
- 비용 및 볼륨 로깅은 보다 정확하게 예측할 수 있습니다.
- Noisy 컨테이너는 다른 컨테이너를 중단하는 바인딩되지 않은 로그 트래픽을 생성할 수 없습니다.
- 낮은 값 로그를 무시하면 로깅 인프라의 로드가 줄어듭니다.
- 높은 값 로그는 높은 속도 제한을 할당하여 낮은 값 로그보다 선호될 수 있습니다.
12.1.2. 속도 제한 구성 링크 복사링크가 클립보드에 복사되었습니다!
속도 제한은 수집기별로 구성됩니다. 즉, 최대 로그 수집 속도는 속도 제한을 곱한 수집기 인스턴스 수입니다.
로그는 각 노드의 파일 시스템에서 수집되므로 수집기는 각 클러스터 노드에 배포됩니다. 예를 들어, 수집기당 초당 최대 속도 제한이 있는 3-노드 클러스터에서는 최대 로그 수집 속도는 초당 30개입니다.
출력에 기록된 레코드의 정확한 바이트 크기는 변환, 다른 인코딩 또는 기타 요인으로 인해 달라질 수 있으므로 속도 제한은 바이트 대신 레코드 수로 설정됩니다.
다음 두 가지 방법으로 ClusterLogForwarder CR(사용자 정의 리소스)에서 속도 제한을 구성할 수 있습니다.
- 출력 속도 제한
- 출력의 네트워크 또는 스토리지 용량과 일치하도록 아웃바운드 로그의 속도를 선택한 출력으로 제한합니다. 출력 속도 제한은 집계된 출력당 속도를 제어합니다.
- 입력 속도 제한
- 선택한 컨테이너에 대한 로그 컬렉션의 컨테이너당 속도를 제한합니다.
12.1.3. 로그 전달자 출력 속도 제한 구성 링크 복사링크가 클립보드에 복사되었습니다!
ClusterLogForwarder 사용자 정의 리소스(CR)를 구성하여 아웃바운드 로그 속도를 지정된 출력으로 제한할 수 있습니다.
사전 요구 사항
- Red Hat OpenShift Logging Operator가 설치되어 있습니다.
- 관리자 권한이 있습니다.
절차
지정된 출력의
ClusterLogForwarderCR에maxRecordsPerSecond제한 값을 추가합니다.다음 예제에서는
kafka-example이라는 Kafka 브로커 출력에 대해 수집기 출력 속도 제한을 구성하는 방법을 보여줍니다.ClusterLogForwarderCR의 예apiVersion: logging.openshift.io/v1 kind: ClusterLogForwarder metadata: # ... spec: # ... outputs: - name: kafka-example1 type: kafka2 limit: maxRecordsPerSecond: 10000003 # ...ClusterLogForwarderCR을 적용합니다.명령 예
$ oc apply -f <filename>.yaml
12.1.4. 로그 전달자 입력 속도 제한 구성 링크 복사링크가 클립보드에 복사되었습니다!
ClusterLogForwarder CR(사용자 정의 리소스)을 구성하여 수집되는 들어오는 로그의 속도를 제한할 수 있습니다. 컨테이너당 또는 네임스페이스별로 입력 제한을 설정할 수 있습니다.
사전 요구 사항
- Red Hat OpenShift Logging Operator가 설치되어 있습니다.
- 관리자 권한이 있습니다.
절차
지정된 입력의 경우
maxRecordsPerSecond제한 값을ClusterLogForwarderCR에 추가합니다.다음 예제에서는 다양한 시나리오에 대한 입력 속도 제한을 구성하는 방법을 보여줍니다.
특정 라벨을 사용하여 컨테이너에 대한 컨테이너당 제한을 설정하는
ClusterLogForwarderCR의 예apiVersion: logging.openshift.io/v1 kind: ClusterLogForwarder metadata: # ... spec: # ... inputs: - name: <input_name>1 application: selector: matchLabels: { example: label }2 containerLimit: maxRecordsPerSecond: 03 # ...선택한 네임스페이스에서 컨테이너에 대한 컨테이너당 제한을 설정하는
ClusterLogForwarderCR의 예apiVersion: logging.openshift.io/v1 kind: ClusterLogForwarder metadata: # ... spec: # ... inputs: - name: <input_name>1 application: namespaces: [ example-ns-1, example-ns-2 ]2 containerLimit: maxRecordsPerSecond: 103 - name: <input_name> application: namespaces: [ test ] containerLimit: maxRecordsPerSecond: 1000 # ...ClusterLogForwarderCR을 적용합니다.명령 예
$ oc apply -f <filename>.yaml