6장. RHEL 시스템 역할을 사용하여 로깅 구성
로깅
RHEL 시스템 역할을 사용하여 로컬 및 원격 호스트를 자동화된 방식으로 로깅 서버로 구성하여 많은 클라이언트 시스템에서 로그를 수집할 수 있습니다.
로깅 솔루션은 여러 로그 및 여러 로깅 출력을 읽는 방법을 제공합니다.
예를 들어 로깅 시스템은 다음과 같은 입력을 수신할 수 있습니다.
- 로컬 파일
-
systemd/journal
- 네트워크를 통한 다른 로깅 시스템
또한 로깅 시스템에는 다음과 같은 출력이 있을 수 있습니다.
-
/var/log/
디렉터리의 로컬 파일에 저장된 로그 - Elasticsearch 엔진에 전송된 로그
- 다른 로깅 시스템으로 전달된 로그
로깅
RHEL 시스템 역할을 사용하면 입력 및 출력을 결합하여 시나리오에 적합할 수 있습니다. 예를 들어 저널
의 입력을 로컬 파일에 저장하는 로깅 솔루션을 구성할 수 있지만 파일에서 읽은 입력은 다른 로깅 시스템으로 전달되어 로컬 로그 파일에 저장됩니다.
6.1. 로깅 RHEL 시스템 역할을 사용하여 로컬 로그 메시지 필터링 링크 복사링크가 클립보드에 복사되었습니다!
로깅
RHEL 시스템 역할의 속성 기반 필터를 사용하여 다양한 조건에 따라 로컬 로그 메시지를 필터링할 수 있습니다. 예를 들어 다음을 수행할 수 있습니다.
- 로그 명확성: 트래픽이 많은 환경에서 로그가 빠르게 증가할 수 있습니다. 오류와 같은 특정 메시지에 중점을 두면 문제를 보다 신속하게 식별하는 데 도움이 될 수 있습니다.
- 최적화된 시스템 성능: 과도한 양의 로그는 일반적으로 시스템 성능 저하와 연결됩니다. 중요한 이벤트에 대해서만 선택적 로깅을 수행하면 리소스 소모를 방지할 수 있으므로 시스템이 더 효율적으로 실행될 수 있습니다.
- 향상된 보안: 시스템 오류 및 실패한 로그인과 같은 보안 메시지를 통한 필터링은 관련 로그만 캡처하는 데 도움이 됩니다. 이는 위반을 탐지하고 규정 준수 표준을 준수하는 데 중요합니다.
사전 요구 사항
- 컨트롤 노드 및 관리형 노드를 준비했습니다.
- 관리 노드에서 플레이북을 실행할 수 있는 사용자로 제어 노드에 로그인되어 있습니다.
-
관리 노드에 연결하는 데 사용하는 계정에는
sudo
권한이 있습니다.
프로세스
다음 콘텐츠를 사용하여 플레이북 파일(예:
~/playbook.yml
)을 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예제 플레이북에 지정된 설정은 다음과 같습니다.
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]
옵션은 로그가 전송되는 출력 목록을 지정합니다.
플레이북에서 사용되는 모든 변수와
rsyslog
에 대한 자세한 내용은 제어 노드의/usr/share/ansible/roles/rhel-system-roles.logging/README.md
파일 및rsyslog.conf(5)
및syslog
Cryostat 매뉴얼 페이지를 참조하십시오.플레이북 구문을 확인합니다.
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.
Playbook을 실행합니다.
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
관리 노드에서
/etc/rsyslog.conf
파일의 구문을 테스트합니다.rsyslogd -N 1
# rsyslogd -N 1 rsyslogd: version 8.1911.0-6.el8, config validation run... rsyslogd: End of config validation run. Bye.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 관리 노드에서
오류
문자열이 포함된 메시지를 로그에 전송하는지 확인합니다.테스트 메시지를 보냅니다.
logger error
# logger error
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /var/log/errors.log
로그를 확인합니다. 예를 들면 다음과 같습니다.cat /var/log/errors.log Aug 5 13:48:31 hostname root[6778]: error
# cat /var/log/errors.log Aug 5 13:48:31 hostname root[6778]: error
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 여기서
hostname
은 클라이언트 시스템의 호스트 이름입니다. 로그에는 logger 명령을 입력한 사용자의 사용자 이름이 포함되어 있습니다(이 경우root
).