11.5. 로깅 시스템 역할을 사용하여 원격 로깅 솔루션 적용
다음 단계에 따라 Red Hat Ansible Core 플레이북을 준비 및 적용하여 원격 로깅 솔루션을 구성합니다. 이 플레이북에서 하나 이상의 클라이언트는 systemd-journal
에서 로그를 가져와 원격 서버로 전달합니다. 서버는 remote_rsyslog
및 remote_files
에서 원격 입력을 수신하고 원격 호스트 이름으로 이름이 지정된 디렉토리의 로컬 파일에 로그를 출력합니다.
사전 요구 사항
-
로깅
시스템 역할을 사용하여 구성할 하나 이상의 관리형 노드에 대한 액세스 및 권한. Red Hat Ansible Core가 기타 시스템을 구성하는 시스템인 제어 노드 액세스 및 사용 권한.
제어 노드에서 다음이 있어야 합니다.
-
ansible-core
및rhel-system-roles
패키지가 설치됩니다. - 관리 노드를 나열하는 인벤토리 파일.
-
시스템 역할은 배포 시 rsyslog
를 설치하기 때문에 rsyslog
패키지를 설치할 필요가 없습니다.
절차
필요한 역할을 정의하는 플레이북을 생성합니다.
새 YAML 파일을 생성하고 텍스트 편집기에서 엽니다. 예를 들면 다음과 같습니다.
# vi logging-playbook.yml
파일에 다음 내용을 삽입합니다.
--- - name: Deploying remote input and remote_files output hosts: server roles: - rhel-system-roles.logging vars: logging_inputs: - name: remote_udp_input type: remote udp_ports: [ 601 ] - name: remote_tcp_input type: remote tcp_ports: [ 601 ] logging_outputs: - name: remote_files_output type: remote_files logging_flows: - name: flow_0 inputs: [remote_udp_input, remote_tcp_input] outputs: [remote_files_output] - name: Deploying basics input and forwards output hosts: clients roles: - rhel-system-roles.logging vars: logging_inputs: - name: basic_input type: basics logging_outputs: - name: forward_output0 type: forwards severity: info target: _host1.example.com_ udp_port: 601 - name: forward_output1 type: forwards facility: mail target: _host1.example.com_ tcp_port: 601 logging_flows: - name: flows0 inputs: [basic_input] outputs: [forward_output0, forward_output1] [basic_input] [forward_output0, forward_output1]
여기서
host1.example.com
은 로깅 서버입니다.참고필요에 맞게 플레이북의 매개변수를 수정할 수 있습니다.
주의로깅 솔루션은 서버 또는 클라이언트 시스템의 SELinux 정책에 정의된 포트에서만 작동하며 방화벽에서 열립니다. 기본 SELinux 정책에는 포트 601, 514, 6514, 10514 및 20514가 포함됩니다. 다른 포트를 사용하려면 클라이언트 및 서버 시스템에서 SELinux 정책을 수정 합니다. 시스템 역할을 통한 방화벽 구성은 아직 지원되지 않습니다.
서버 및 클라이언트를 나열하는 인벤토리 파일을 생성합니다.
새 파일을 생성하고 텍스트 편집기에서 엽니다. 예를 들면 다음과 같습니다.
# vi inventory.ini
인벤토리 파일에 다음 내용을 삽입합니다.
[servers] server ansible_host=host1.example.com [clients] client ansible_host=host2.example.com
다음과 같습니다.
-
host1.example.com
은 로깅 서버입니다. -
host2.example.com
은 로깅 클라이언트입니다.
-
인벤토리에서 플레이북을 실행합니다.
# ansible-playbook -i /path/to/file/inventory.ini /path/to/file/_logging-playbook.yml
다음과 같습니다.
-
inventory.ini
는 인벤토리 파일입니다. -
logging-playbook.yml
은 사용자가 생성한 플레이북입니다.
-
검증
클라이언트 및 서버 시스템에서
/etc/rsyslog.conf
파일의 구문을 테스트합니다.# rsyslogd -N 1 rsyslogd: version 8.1911.0-6.el8, config validation run (level 1), master config /etc/rsyslog.conf rsyslogd: End of config validation run. Bye.
클라이언트 시스템이 서버에 메시지를 전송하는지 확인합니다.
클라이언트 시스템에서 테스트 메시지를 보냅니다.
# logger test
서버 시스템에서
/var/log/messages
로그를 확인합니다. 예를 들면 다음과 같습니다.# cat /var/log/messages Aug 5 13:48:31 host2.example.com root[6778]: test
여기서
host2.example.com
은 클라이언트 시스템의 호스트 이름입니다. 로그에는 logger 명령을 입력한 사용자의 사용자 이름이 포함됩니다(이 경우루트
).
추가 리소스
- RHEL 시스템 역할을 사용하도록 제어 노드 및 관리형 노드 준비
-
/usr/share/ansible/roles/
패키지와 함께 설치된 설명서rhel-system-roles
.logging/README.html의 rhel-system-roles - RHEL 시스템 역할 KB 문서