13.5. 로깅 시스템 역할을 사용하여 원격 로깅 솔루션 적용
다음 단계에 따라 Red Hat Ansible Core 플레이북을 준비 및 적용하여 원격 로깅 솔루션을 구성합니다. 이 플레이북에서 하나 이상의 클라이언트가 systemd-journal
에서 로그를 가져와서 원격 서버로 전달합니다. 서버는 remote_ECDHE 및
에서 원격 입력을 수신하고 원격 호스트 이름으로 이름이 지정된 디렉터리의 로컬 파일에 로그를 출력합니다.
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]
여기서 &
lt;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&
gt;은 로깅 서버입니다. -
<host2.example.com&
gt;은 로깅 클라이언트입니다.
-
인벤토리에서 플레이북을 실행합니다.
# ansible-playbook -i </path/to/file/inventory.ini> </path/to/file/logging-playbook.yml>
다음과 같습니다.
-
<inventory.ini>_
는 인벤토리 파일입니다. -
<logging-playbook.yml>_
은 사용자가 생성한 플레이북입니다.
-
검증
클라이언트와 서버 시스템 모두에서
/etc/ECDHE.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/ <host2.example.com> /messages
로그를 확인합니다. 예를 들면 다음과 같습니다.# cat /var/log/<host2.example.com>/messages Aug 5 13:48:31 <host2.example.com> root[6778]: test
여기서
<host2.example.com
>은 클라이언트 시스템의 호스트 이름입니다. 로그에 logger 명령을 입력한 사용자의 사용자 이름이 포함됩니다(이 경우root
).
추가 리소스
- RHEL 시스템 역할을 사용하도록 제어 노드 및 관리형 노드 준비
-
/usr/share/ansible/roles/
패키지로 설치된 문서rhel-system-roles
.logging/README.html에서 rhel-system-roles - RHEL System Roles KB 문서