7.10. syslog 프로토콜을 사용하여 로그 전달
syslog RFC3164 또는 RFC5424 프로토콜을 사용하여 기본 Elasticsearch 로그 저장소 대신 또는 기본 Elasticsearch 로그 저장소에 더하여 해당 프로토콜을 수락하도록 구성된 외부 로그 집계기에 로그 사본을 보낼 수 있습니다. OpenShift Container Platform에서 로그를 수신하도록 syslog 서버와 같은 외부 로그 수집기를 구성해야 합니다.
syslog 프로토콜을 사용하여 로그 전달을 구성하려면 해당 출력을 사용하는 syslog 서버 및 파이프라인에 대한 출력이 하나 이상 있는 ClusterLogForwarder
사용자 정의 리소스(CR)를 생성해야 합니다. syslog 출력은 UDP, TCP 또는 TLS 연결을 사용할 수 있습니다.
또는 구성 맵을 사용하여 syslog RFC3164 프로토콜을 사용하여 로그를 전달할 수 있습니다. 그러나 이 방법은 OpenShift Container Platform에서 더 이상 사용되지 않으며 향후 릴리스에서 제거됩니다.
사전 요구 사항
- 지정된 프로토콜 또는 형식을 사용하여 로깅 데이터를 수신하도록 구성된 로깅 서버가 있어야 합니다.
절차
ClusterLogForwarder
CR 오브젝트를 정의하는 YAML 파일을 생성하거나 편집합니다.apiVersion: logging.openshift.io/v1 kind: ClusterLogForwarder metadata: name: instance 1 namespace: openshift-logging 2 spec: outputs: - name: rsyslog-east 3 type: syslog 4 syslog: 5 facility: local0 rfc: RFC3164 payloadKey: message severity: informational url: 'tls://rsyslogserver.east.example.com:514' 6 secret: 7 name: syslog-secret - name: rsyslog-west type: syslog syslog: appName: myapp facility: user msgID: mymsg procID: myproc rfc: RFC5424 severity: debug url: 'udp://rsyslogserver.west.example.com:514' pipelines: - name: syslog-east 8 inputRefs: 9 - audit - application outputRefs: 10 - rsyslog-east - default 11 parse: json 12 labels: secure: "true" 13 syslog: "east" - name: syslog-west 14 inputRefs: - infrastructure outputRefs: - rsyslog-west - default labels: syslog: "west"
- 1
ClusterLogForwarder
CR의 이름은instance
여야 합니다.- 2
ClusterLogForwarder
CR의 네임스페이스는openshift-logging
이어야 합니다.- 3
- 출력 이름을 지정합니다.
- 4
syslog
유형을 지정합니다.- 5
- 선택 사항: 아래 나열된 syslog 매개변수를 지정합니다.
- 6
- 외부 syslog 인스턴스의 URL 및 포트를 지정합니다.
udp
(비보안),tcp
(비보안) 또는tls
(보안 TCP) 프로토콜을 사용할 수 있습니다. CIDR 주석을 사용하는 클러스터 전체 프록시가 활성화된 경우 출력은 IP 주소가 아닌 서버 이름 또는 FQDN이어야 합니다. - 7
tls
접두사를 사용하는 경우 TLS 통신을 위해 끝점에서 요구하는 시크릿 이름을 지정해야 합니다. 시크릿은openshift-logging
프로젝트에 있어야 하며 해당하는 각 인증서를 가리키는 tls.crt,tls.key 및 ca-bundle.crt 키가 있어야 합니다.- 8
- 선택 사항: 파이프라인의 이름을 지정합니다.
- 9
- 파이프라인을 사용하여 전달할 로그 유형 (
application,
infrastructure
, 또는audit
)을 지정합니다. - 10
- 이 파이프라인으로 로그를 전달할 때 사용할 출력 이름을 지정합니다.
- 11
- 선택 사항: 로그를 내부 Elasticsearch 인스턴스로 전달하려면
default
출력을 지정합니다. - 12
- 선택 사항: 구조화된
필드에서
JSON 오브젝트로 구조화된 JSON 로그 항목을 전달할지 여부를 지정합니다. 로그 항목에 유효한 구조화된 JSON이 포함되어야 합니다. 그렇지 않으면 OpenShift Logging이structured
필드를 제거하고 대신 기본 인덱스인app-00000x
로 로그 항목을 보냅니다. - 13
- 선택 사항: 문자열. 로그에 추가할 하나 이상의 레이블입니다. "true"와 같은 인용 값은 부울 값이 아닌 문자열 값으로 인식됩니다.
- 14
- 선택 사항: 지원되는 유형의 다른 외부 로그 집계기로 로그를 전달하도록 다중 출력을 구성합니다.
- 파이프라인을 설명하는 이름입니다.
-
inputRefs
는 pipeline:application,
infrastructure
또는audit
를 사용하여 전달할 로그 유형입니다. -
outputRefs
는 사용할 출력의 이름입니다. - 선택 사항: 문자열. 로그에 추가할 하나 이상의 레이블입니다.
CR 오브젝트를 생성합니다.
$ oc create -f <file-name>.yaml
7.10.1. 메시지 출력에 로그 소스 정보 추가
AddLogSource
필드를 ClusterLogForwarder
CR(사용자 정의 리소스)에 추가하여 namespace_name
,pod_name
, container_name
요소를 레코드의 message
필드에 추가할 수 있습니다.
spec: outputs: - name: syslogout syslog: addLogSource: true facility: user payloadKey: message rfc: RFC3164 severity: debug tag: mytag type: syslog url: tls://syslog-receiver.openshift-logging.svc:24224 pipelines: - inputRefs: - application name: test-app outputRefs: - syslogout
이 구성은 RFC3164 및 RFC5424 둘 다와 호환됩니다.
AddLogSource
없는 syslog 메시지 출력 예
<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}
AddLogSource
를 사용한 syslog 메시지 출력 예
<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}
7.10.2. Syslog 매개변수
syslog
출력에 대해 다음을 구성할 수 있습니다. 자세한 내용은 syslog RFC3164 또는 RFC5424 RFC를 참조하십시오.
기능: syslog 기능. 값은 10진수 정수 또는 대소문자를 구분하지 않는 키워드일 수 있습니다.
-
커널 메시지의 경우
0
또는kern
-
사용자 수준 메시지의 경우
1
또는user
, 기본값입니다. -
2
또는mail
시스템용 메일 -
시스템 데몬의 경우
3
또는daemon
-
보안/인증 메시지의 경우
4
또는auth
-
syslogd에 의해 내부적으로 생성된 메시지의 경우
5
또는syslog
-
라인 프린터 하위 시스템의 경우
6
또는lpr
-
네트워크 뉴스 서브 시스템의 경우
7
또는news
-
UUCP 하위 시스템의 경우
8
또는uucp
-
시계 데몬의 경우
9
또는cron
-
보안 인증 메시지의 경우
10
또는authpriv
-
FTP 데몬의 경우
11
또는ftp
-
NTP 하위 시스템의 경우
12
또는ntp
-
syslog 감사 로그의 경우
13
또는security
-
syslog 경고 로그의 경우
14
또는console
-
스케줄링 데몬의 경우
15
또는solaris-cron
-
로컬에서 사용되는 시설의 경우
16
–23
또는local0
–local7
-
커널 메시지의 경우
Optional:
payloadKey
: syslog 메시지의 페이로드로 사용할 레코드 필드입니다.참고payloadKey
매개변수를 구성하면 다른 매개 변수가 syslog로 전달되지 않습니다.- rfc: syslog를 사용하여 로그를 전송하는 데 사용할 RFC입니다. 기본값은 RFC5424입니다.
심각도: 발신 syslog 레코드에 설정할 syslog 심각도 입니다. 값은 10진수 정수 또는 대소문자를 구분하지 않는 키워드일 수 있습니다.
-
시스템을 사용할 수 없음을 나타내는 메시지의 경우
0
또는Emergency
-
조치를 즉시 취해야 함을 나타내는 메시지의 경우
1
또는Alert
-
위험 상태를 나타내는 메시지의 경우
2
또는Critical
-
오류 상태를 나타내는 메시지의 경우
3
또는Error
-
경고 조건을 나타내는 메시지의 경우
4
또는Warning
-
정상이지만 중요한 조건을 나타내는 메시지의 경우
5
또는Notice
-
정보성 메시지를 나타내는 메시지의 경우
6
또는Informational
-
디버그 수준 메시지를 나타내는 메시지의 경우
7
또는Debug
, 기본값
-
시스템을 사용할 수 없음을 나타내는 메시지의 경우
- 태그: tag는 syslog 메시지에서 태그로 사용할 레코드 필드를 지정합니다.
- trimPrefix: 태그에서 지정된 접두사를 제거합니다.
7.10.3. 추가 RFC5424 syslog 매개변수
RFC5424에는 다음 매개변수가 적용됩니다.
-
appName: APP-NAME은 로그를 전송한 애플리케이션을 식별하는 자유 텍스트 문자열입니다.
RFC5424
에 대해 지정해야 합니다. -
msgID: MSGID는 메시지 유형을 식별하는 자유 텍스트 문자열입니다.
RFC5424
에 대해 지정해야 합니다. -
procID: PROCID는 자유 텍스트 문자열입니다. 값이 변경되면 syslog 보고가 중단되었음을 나타냅니다.
RFC5424
에 대해 지정해야 합니다.