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


로깅 RHEL 시스템 역할을 사용하여 하나 이상의 클라이언트가 systemd-journal 서비스에서 로그를 가져와서 원격 서버로 전달하는 원격 로깅 솔루션을 구성할 수 있습니다. 서버는 remote_rsyslogremote_files 구성에서 원격 입력을 수신하고 원격 호스트 이름으로 이름이 지정된 디렉터리의 로컬 파일에 로그를 출력합니다.

따라서 다음과 같은 경우 필요한 사용 사례를 처리할 수 있습니다.

  • 중앙 집중식 로그 관리: 단일 스토리지 지점에서 여러 시스템의 로그 메시지를 수집, 액세스 및 관리하면 일상적인 모니터링 및 문제 해결 작업을 단순화할 수 있습니다. 또한 이 사용 사례로 로그 메시지를 확인하기 위해 개별 시스템에 로그인할 필요가 줄어듭니다.
  • 강화된 보안: 로그 메시지를 한 중앙에 저장하면 안전하고 변조 방지 환경에 있을 가능성이 높아집니다. 이러한 환경을 통해 보안 문제를 보다 효과적으로 감지하고 대응하고 감사 요구 사항을 충족할 수 있습니다.
  • 로그 분석의 효율성 개선: 여러 시스템의 로그 메시지 상관관계는 여러 머신 또는 서비스에 걸쳐 있는 복잡한 문제를 신속하게 해결하는 데 중요합니다. 이렇게 하면 다양한 소스의 이벤트를 신속하게 분석하고 참조할 수 있습니다.

사전 요구 사항

절차

  1. 다음 콘텐츠를 사용하여 플레이북 파일(예: ~/playbook.yml )을 생성합니다.

    ---
    - name: Deploy the logging solution
      hosts: managed-node-01.example.com
      tasks:
        - name: Configure the server to receive remote input
          ansible.builtin.include_role:
            name: 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: Deploy the logging solution
      hosts: managed-node-02.example.com
      tasks:
        - name: Configure the server to output the logs to local files in directories named by remote host names
          ansible.builtin.include_role:
            name: 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]

    예제 플레이북의 첫 번째 플레이에 지정된 설정은 다음과 같습니다.

    logging_inputs
    로깅 입력 사전 목록을 정의합니다. type: remote 옵션은 네트워크를 통해 다른 로깅 시스템의 원격 입력을 다룹니다. udp_ports: [ 601 ] 옵션은 모니터링할 UDP 포트 번호 목록을 정의합니다. tcp_ports: [ 601 ] 옵션은 모니터링할 TCP 포트 번호 목록을 정의합니다. udp_portstcp_ports 가 모두 설정된 경우 udp_ports 가 사용되고 tcp_ports 가 삭제됩니다.
    logging_outputs
    로깅 출력 사전 목록을 정의합니다. type: remote_files 옵션은 원격 호스트별로 로컬 파일에 출력 저장소 로그를 만들고 프로그램 이름이 로그를 생성했습니다.
    logging_flows
    logging_inputslogging_outputs 간의 관계를 지정하는 로깅 흐름 사전 목록을 정의합니다. 입력: [remote_udp_input, remote_tcp_input] 옵션은 로그 처리가 시작되는 입력 목록을 지정합니다. outputs: [remote_files_output] 옵션은 로그를 전송할 출력 목록을 지정합니다.

    예제 플레이북의 두 번째 플레이에 지정된 설정은 다음과 같습니다.

    logging_inputs
    로깅 입력 사전 목록을 정의합니다. 유형: 기본 옵션은 systemd 저널 또는 Unix 소켓의 입력을 다룹니다.
    logging_outputs
    로깅 출력 사전 목록을 정의합니다. type: forward 옵션은 네트워크를 통해 원격 로깅 서버로 로그 전송을 지원합니다. severity: info 옵션은 정보 중요도의 로그 메시지를 나타냅니다. facility: mail 옵션은 로그 메시지를 생성하는 시스템 프로그램의 유형을 나타냅니다. target: < host1.example.com > 옵션은 원격 로깅 서버의 호스트 이름을 지정합니다. udp_port: 601/tcp_port: 601 옵션은 원격 로깅 서버가 수신 대기하는 UDP/TCP 포트를 정의합니다.
    logging_flows
    logging_inputslogging_outputs 간의 관계를 지정하는 로깅 흐름 사전 목록을 정의합니다. inputs: [basic_input] 옵션은 로그 처리가 시작되는 입력 목록을 지정합니다. outputs: [forward_output0, forward_output1] 옵션은 로그가 전송되는 출력 목록을 지정합니다.

    플레이북에 사용되는 모든 변수에 대한 자세한 내용은 제어 노드의 /usr/share/ansible/roles/rhel-system-roles.logging/README.md 파일을 참조하십시오.

  2. 플레이북 구문을 확인합니다.

    $ ansible-playbook --syntax-check ~/playbook.yml

    이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.

  3. 플레이북을 실행합니다.

    $ ansible-playbook ~/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 ).

추가 리소스

  • /usr/share/ansible/roles/rhel-system-roles.logging/README.md 파일
  • /usr/share/doc/rhel-system-roles/logging/ 디렉터리
  • rsyslog.conf(5)syslog Cryostat 매뉴얼 페이지
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.