7.5. 로깅 시스템 역할을 사용하여 원격 로깅 솔루션 적용
다음 단계에 따라 Red Hat Ansible Engine 플레이북을 준비하고 적용하여 원격 로깅 솔루션을 구성합니다. 이 플레이북에서 하나 이상의 클라이언트는 systemd-journal 에서 로그를 가져와 원격 서버로 전달합니다. 서버는 remote _rsyslog 및 에서 원격 입력을 수신하고 원격 호스트 이름으로 이름이 지정된 디렉터리의 로컬 파일에 로그를 출력합니다.
remote_ files
사전 요구 사항
플레이북을 실행할 시스템에 Red Hat Ansible Engine이 설치되어 있어야 합니다.
참고로깅 솔루션을 배포하려는 시스템에 Red Hat Ansible Engine을 설치할 필요가 없습니다.
플레이북을 실행할 시스템에
rhel-system-roles패키지가 있습니다.참고배포 시 시스템 역할이
rsyslog를 설치하므로rsyslog를 설치할 필요가 없습니다.최소 두 개의 시스템이 있습니다.
- 로깅 서버가 하나 이상 됩니다.
- 로깅 클라이언트 중 하나는 하나 이상입니다.
절차
필요한 역할을 정의하는 플레이북을 생성합니다.
새 YAML 파일을 생성하고 텍스트 편집기에서 엽니다. 예를 들면 다음과 같습니다.
vi logging-playbook.yml
# vi logging-playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 파일에 다음 내용을 삽입합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 여기서
host1.example.com은 로깅 서버입니다.참고요구 사항에 맞게 플레이북의 매개 변수를 수정할 수 있습니다.
주의로깅 솔루션은 서버 또는 클라이언트 시스템의 SELinux 정책에 정의된 포트에서만 작동하며 방화벽에서 열립니다. 기본 SELinux 정책에는 포트 601, 514, 6514, 10514, 20514가 포함됩니다. 다른 포트를 사용하려면 클라이언트 및 서버 시스템에서 SELinux 정책을 수정합니다. 시스템 역할을 통해 방화벽 구성는 아직 지원되지 않습니다.
서버와 클라이언트를 나열하는 인벤토리 파일을 생성합니다.
새 파일을 생성하고 텍스트 편집기에서 엽니다. 예를 들면 다음과 같습니다.
vi inventory.ini
# vi inventory.iniCopy to Clipboard Copied! Toggle word wrap Toggle overflow 인벤토리 파일에 다음 내용을 삽입합니다.
[servers] server ansible_host=host1.example.com [clients] client ansible_host=host2.example.com
[servers] server ansible_host=host1.example.com [clients] client ansible_host=host2.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음과 같습니다.
-
host1.example.com은 로깅 서버입니다. -
host2.example.com은 로깅 클라이언트입니다.
-
인벤토리에서 플레이북을 실행합니다.
ansible-playbook -i /path/to/file/inventory.ini /path/to/file/_logging-playbook.yml
# ansible-playbook -i /path/to/file/inventory.ini /path/to/file/_logging-playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음과 같습니다.
-
inventory.ini는 인벤토리 파일입니다. -
logging-playbook.yml은 생성한 플레이북입니다.
-
검증
클라이언트 및 서버 시스템 모두에서
/etc/rsyslog.conf 파일의 구문을 테스트합니다.rsyslogd -N 1
# 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.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 클라이언트 시스템이 서버에 메시지를 전송하는지 확인합니다.
클라이언트 시스템에서 테스트 메시지를 전송합니다.
logger test
# logger testCopy to Clipboard Copied! Toggle word wrap Toggle overflow 서버 시스템에서
/var/log/messages로그를 확인합니다. 예를 들면 다음과 같습니다.cat /var/log/messages Aug 5 13:48:31 host2.example.com root[6778]: test
# cat /var/log/messages Aug 5 13:48:31 host2.example.com root[6778]: testCopy to Clipboard Copied! Toggle word wrap Toggle overflow 여기서
host2.example.com은 클라이언트 시스템의 호스트 이름입니다. 로그에는 로거 명령을 입력한 사용자의 사용자 이름이 포함됩니다(이 경우root).