13.5. 로깅 시스템 역할을 사용하여 원격 로깅 솔루션 적용

다음 단계에 따라 Red Hat Ansible Core 플레이북을 준비 및 적용하여 원격 로깅 솔루션을 구성합니다. 이 플레이북에서 하나 이상의 클라이언트가 systemd-journal 에서 로그를 가져와서 원격 서버로 전달합니다. 서버는 remote_ECDHE 및 remote_ files 에서 원격 입력을 수신하고 원격 호스트 이름으로 이름이 지정된 디렉터리의 로컬 파일에 로그를 출력합니다.

사전 요구 사항

  • 로깅 시스템 역할로 구성하려는 시스템인 하나 이상의 관리형 노드에 대한 액세스 및 권한.
  • Red Hat Ansible Core가 기타 시스템을 구성하는 시스템인 제어 노드 액세스 및 사용 권한.

    제어 노드에서 다음이 있어야 합니다.

    • ansible-corerhel-system-roles 패키지가 설치됩니다.
    • 관리 노드를 나열하는 인벤토리 파일.
참고

배포 시 시스템 역할이 rsyslog 를 설치하므로 rsyslog 패키지가 설치되어 있을 필요가 없습니다.

절차

  1. 필요한 역할을 정의하는 플레이북을 생성합니다.

    1. 새 YAML 파일을 생성하고 텍스트 편집기에서 엽니다. 예를 들면 다음과 같습니다.

      # vi logging-playbook.yml
    2. 다음 내용을 파일에 삽입합니다.

      ---
      - 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&gt;은 로깅 서버입니다.

      참고

      플레이북의 매개변수를 필요에 맞게 수정할 수 있습니다.

      주의

      로깅 솔루션은 서버 또는 클라이언트 시스템의 SELinux 정책에 정의된 포트에서만 작동하며 방화벽에서 엽니다. 기본 SELinux 정책에는 포트 601, 514, 6514, 10514 및 20514가 포함됩니다. 다른 포트를 사용하려면 클라이언트 및 서버 시스템에서 SELinux 정책을 수정합니다.

  2. 서버 및 클라이언트를 나열하는 인벤토리 파일을 생성합니다.

    1. 새 파일을 생성하고 텍스트 편집기에서 엽니다. 예를 들면 다음과 같습니다.

      # vi <inventory.ini>
    2. 다음 내용을 인벤토리 파일에 삽입합니다.

      [servers]
      server ansible_host=<host1.example.com>
      [clients]
      client ansible_host=<host2.example.com>

      다음과 같습니다.

      • <host1.example.com& gt;은 로깅 서버입니다.
      • <host2.example.com& gt;은 로깅 클라이언트입니다.
  3. 인벤토리에서 플레이북을 실행합니다.

    # ansible-playbook -i </path/to/file/inventory.ini> </path/to/file/logging-playbook.yml>

    다음과 같습니다.

    • <inventory.ini>_ 는 인벤토리 파일입니다.
    • <logging-playbook.yml>_ 은 사용자가 생성한 플레이북입니다.

검증

  1. 클라이언트와 서버 시스템 모두에서 /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.
  2. 클라이언트 시스템이 서버에 메시지를 전송하는지 확인합니다.

    1. 클라이언트 시스템에서 테스트 메시지를 보냅니다.

      # logger test
    2. 서버 시스템에서 /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 ).

추가 리소스