15장. 로깅 시스템 역할 사용
시스템 관리자는 로깅
시스템 역할을 사용하여 Red Hat Enterprise Linux 호스트를 로깅 서버로 구성하여 많은 클라이언트 시스템에서 로그를 수집할 수 있습니다.
15.1. 로깅
RHEL 시스템 역할을 사용하여 로컬 로그 메시지 필터링
로깅
RHEL 시스템 역할의 속성 기반 필터를 사용하여 다양한 조건에 따라 로컬 로그 메시지를 필터링할 수 있습니다. 예를 들어 다음을 수행할 수 있습니다.
- 로그 명확성: 트래픽이 많은 환경에서는 로그가 빠르게 증가할 수 있습니다. 오류와 같은 특정 메시지에 중점을 두면 문제를 보다 신속하게 식별하는 데 도움이 될 수 있습니다.
- 최적화된 시스템 성능: 과도한 양의 로그는 일반적으로 시스템 성능 저하와 연결됩니다. 중요한 이벤트에 대해서만 선택적 로깅을 수행하면 리소스 소모를 방지할 수 있으므로 시스템이 더 효율적으로 실행될 수 있습니다.
- 강화된 보안: 시스템 오류 및 실패한 로그인과 같은 보안 메시지를 효율적으로 필터링하면 관련 로그만 캡처할 수 있습니다. 이는 위반을 탐지하고 규정 준수 표준을 준수하는 데 중요합니다.
사전 요구 사항
- 컨트롤 노드 및 관리형 노드를 준비했습니다.
- 관리 노드에서 플레이북을 실행할 수 있는 사용자로 제어 노드에 로그인되어 있습니다.
-
관리 노드에 연결하는 데 사용하는 계정에는
sudo
권한이 있습니다.
절차
다음 콘텐츠를 사용하여 플레이북 파일(예:
~/playbook.yml
)을 생성합니다.--- - name: Deploy the logging solution hosts: managed-node-01.example.com tasks: - name: Filter logs based on a specific value they contain ansible.builtin.include_role: name: rhel-system-roles.logging vars: logging_inputs: - name: files_input type: basics logging_outputs: - name: files_output0 type: files property: msg property_op: contains property_value: error path: /var/log/errors.log - name: files_output1 type: files property: msg property_op: "!contains" property_value: error path: /var/log/others.log logging_flows: - name: flow0 inputs: [files_input] outputs: [files_output0, files_output1]
예제 플레이북에 지정된 설정은 다음과 같습니다.
logging_inputs
-
로깅 입력 사전 목록을 정의합니다.
유형: 기본
옵션은systemd
저널 또는 Unix 소켓의 입력을 다룹니다. logging_outputs
-
로깅 출력 사전 목록을 정의합니다.
type: files
옵션은 일반적으로/var/log/
디렉터리에 있는 로컬 파일에 로그 저장을 지원합니다.속성: msg
;property: contains
; 및property_value: 오류 옵션은
문자열이 포함된 모든 로그가오류
/var/log/errors.log
파일에 저장되도록 지정합니다.속성: msg
;속성: !contains
; 및property_value: 오류
옵션은 다른 모든 로그가/var/log/others.log
파일에 저장되도록 지정합니다.오류
값을 필터링할 문자열로 교체할 수 있습니다. logging_flows
-
logging_inputs
와logging_outputs
간의 관계를 지정하는 로깅 흐름 사전 목록을 정의합니다.inputs: [files_input]
옵션은 로그 처리가 시작되는 입력 목록을 지정합니다.outputs: [files_output0, files_output1]
옵션은 로그가 전송되는 출력 목록을 지정합니다.
플레이북에 사용되는 모든 변수에 대한 자세한 내용은 제어 노드의
/usr/share/ansible/roles/rhel-system-roles.logging/README.md
파일을 참조하십시오.플레이북 구문을 확인합니다.
$ ansible-playbook --syntax-check ~/playbook.yml
이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.
플레이북을 실행합니다.
$ ansible-playbook ~/playbook.yml
검증
관리 노드에서
/etc/rsyslog.conf
파일의 구문을 테스트합니다.# rsyslogd -N 1 rsyslogd: version 8.1911.0-6.el8, config validation run... rsyslogd: End of config validation run. Bye.
관리 노드에서
오류
문자열이 포함된 메시지를 로그에 전송하는지 확인합니다.테스트 메시지를 보냅니다.
# logger error
/var/log/errors.log
로그를 확인합니다. 예를 들면 다음과 같습니다.# cat /var/log/errors.log Aug 5 13:48:31 hostname root[6778]: error
여기서
hostname
은 클라이언트 시스템의 호스트 이름입니다. 로그에 logger 명령을 입력한 사용자의 사용자 이름이 포함되어 있습니다(이 경우root
).
추가 리소스
-
/usr/share/ansible/roles/rhel-system-roles.logging/README.md
파일 -
/usr/share/doc/rhel-system-roles/logging/
디렉터리 -
rsyslog.conf(5)
및syslog Cryostat
매뉴얼 페이지