16.7. RELP에서 로깅 시스템 역할 사용

안정적인 이벤트 로깅 프로토콜(RELP)은 TCP 네트워크를 통한 데이터 및 메시지 로깅을 위한 네트워킹 프로토콜입니다. 이를 통해 이벤트 메시지를 안정적으로 전달할 수 있으며 메시지 손실을 허용하지 않는 환경에서 사용할 수 있습니다.

RELP 발신자는 명령 형식으로 로그 항목을 전송하고 수신자는 처리 후 로그 항목을 확인합니다. 일관성을 보장하기 위해 RELP는 모든 종류의 메시지 복구에 대해 전송된 각 명령에 트랜잭션 번호를 저장합니다.

RELP Client와 RELP 서버 간에 원격 로깅 시스템을 고려할 수 있습니다. RELP Client는 로그를 원격 로깅 시스템으로 전송하고 RELP 서버는 원격 로깅 시스템에서 보낸 모든 로그를 수신합니다.

관리자는 로깅 시스템 역할을 사용하여 로그 항목을 안정적으로 전송하고 수신하도록 로깅 시스템을 구성할 수 있습니다.

16.7.1. RELP를 사용하여 클라이언트 로깅 구성

로깅 시스템 역할을 사용하여 로컬 시스템에 로깅하고 Ansible 플레이북을 실행하여 RELP를 사용하여 원격 로깅 시스템으로 로그를 전송할 수 있는 RHEL 시스템에 로깅을 구성할 수 있습니다.

이 절차에서는 Ansible 인벤토리의 clients 그룹에 있는 모든 호스트에서 RELP를 구성합니다. RELP 구성은 TLS(Transport Layer Security)를 사용하여 네트워크를 통해 로그의 보안 전송을 위해 메시지 전송을 암호화합니다.

사전 요구 사항

  • RELP를 구성하려는 관리형 노드에서 플레이북을 실행할 수 있는 권한이 있습니다.
  • 관리형 노드는 제어 노드의 인벤토리 파일에 나열됩니다.
  • ansiblerhel-system-roles 패키지는 제어 노드에 설치됩니다.

절차

  1. 다음 콘텐츠를 사용하여 playbook.yml 파일을 생성합니다.

    ---
    - name: Deploying basic input and relp output
      hosts: clients
      roles:
        - rhel-system-roles.logging
      vars:
        logging_inputs:
          - name: basic_input
            type: basics
        logging_outputs:
          - name: relp_client
            type: relp
            target: logging.server.com
            port: 20514
            tls: true
            ca_cert: /etc/pki/tls/certs/ca.pem
            cert: /etc/pki/tls/certs/client-cert.pem
            private_key: /etc/pki/tls/private/client-key.pem
            pki_authmode: name
            permitted_servers:
              - '*.server.example.com'
        logging_flows:
          - name: example_flow
            inputs: [basic_input]
            outputs: [relp_client]

    플레이북은 다음 설정을 사용합니다.

    • 대상: 이는 원격 로깅 시스템이 실행 중인 호스트 이름을 지정하는 필수 매개 변수입니다.
    • 포트: 포트 번호 원격 로깅 시스템이 청취 중입니다.
    • tls: 네트워크를 통해 로그의 보안 전송을 보장합니다. 보안 래퍼를 수행하지 않으려면 tls 변수를 false 로 설정할 수 있습니다. 기본적으로 tls 매개변수는 RELP로 작업하는 동안 true로 설정되며 키/인증서 및 트리블릿 {ca_cert,cert _key } 및/또는 {ca_cert_src,cert_src,private_key_src}가 필요합니다.

      • {ca_cert_src,cert_src,private_key_src} triplet가 설정되면 기본 위치 /etc/pki/tls/certs/etc/pki/tls/private 이 제어 노드에서 파일을 전송하는 대상으로 사용됩니다. 이 경우 파일 이름은 트립릿의 원래 이름과 동일합니다.
      • {ca_cert,cert,private_key} triplet가 설정되면 로깅 구성 전에 파일이 기본 경로에 있어야 합니다.
      • 두 트래블릿이 설정되어 있으면 파일이 로컬 경로에서 제어 노드에서 관리 노드의 특정 경로로 전송됩니다.
    • ca_cert: CA 인증서 경로를 나타냅니다. 기본 경로는 /etc/pki/tls/certs/ca.pem 이며 파일 이름은 사용자가 설정합니다.
    • 인증서: 인증서 경로를 나타냅니다. 기본 경로는 /etc/pki/tls/certs/server-cert.pem 이며 파일 이름은 사용자가 설정합니다.
    • private_key: 개인 키의 경로를 나타냅니다. 기본 경로는 /etc/pki/tls/private/server-key.pem 이며 파일 이름은 사용자가 설정합니다.
    • ca_cert_src: 대상 호스트에 복사되는 로컬 CA 인증서 파일 경로를 나타냅니다. ca_cert 를 지정하면 위치에 복사됩니다.
    • cert_src: 대상 호스트에 복사되는 로컬 인증서 파일 경로를 나타냅니다. cert 가 지정되면 해당 인증서가 위치에 복사됩니다.
    • private_key_src: 대상 호스트에 복사되는 로컬 키 파일 경로를 나타냅니다. private_key 가 지정되면 해당 키가 위치에 복사됩니다.
    • pki_authmode: 인증 모드를 이름 또는 지문으로 허용합니다.
    • permitted_servers: 로깅 클라이언트에서 TLS를 통해 로그를 연결하고 보낼 수 있는 서버 목록입니다.
    • inputs: 로깅 입력 사전 목록입니다.
    • 출력: 로깅 출력 사전 목록입니다.
  2. 선택 사항: 플레이북 구문을 확인합니다.

    # ansible-playbook --syntax-check playbook.yml
  3. 플레이북을 실행합니다.

    # ansible-playbook -i inventory_file playbook.yml

16.7.2. RELP를 사용하여 서버 로깅 구성

로깅 시스템 역할을 사용하여 RHEL 시스템에 서버로 로깅을 구성하고 Ansible 플레이북을 실행하여 RELP를 사용하여 원격 로깅 시스템에서 로그를 수신할 수 있습니다.

이 절차에서는 Ansible 인벤토리의 서버 그룹에 있는 모든 호스트에서 RELP를 구성합니다. RELP 구성은 TLS를 사용하여 네트워크를 통해 로그의 보안 전송을 위해 메시지 전송을 암호화합니다.

사전 요구 사항

  • RELP를 구성하려는 관리형 노드에서 플레이북을 실행할 수 있는 권한이 있습니다.
  • 관리형 노드는 제어 노드의 인벤토리 파일에 나열됩니다.
  • ansiblerhel-system-roles 패키지는 제어 노드에 설치됩니다.

절차

  1. 다음 콘텐츠를 사용하여 playbook.yml 파일을 생성합니다.

    ---
    - name: Deploying remote input and remote_files output
      hosts: server
      roles:
        - rhel-system-roles.logging
      vars:
        logging_inputs:
          - name: relp_server
            type: relp
            port: 20514
            tls: true
            ca_cert: /etc/pki/tls/certs/ca.pem
            cert: /etc/pki/tls/certs/server-cert.pem
            private_key: /etc/pki/tls/private/server-key.pem
            pki_authmode: name
            permitted_clients:
              - '*example.client.com'
        logging_outputs:
          - name: remote_files_output
            type: remote_files
        logging_flows:
          - name: example_flow
            inputs: relp_server
            outputs: remote_files_output

    플레이북은 다음 설정을 사용합니다.

    • 포트: 포트 번호 원격 로깅 시스템이 청취 중입니다.
    • tls: 네트워크를 통해 로그의 보안 전송을 보장합니다. 보안 래퍼를 수행하지 않으려면 tls 변수를 false 로 설정할 수 있습니다. 기본적으로 tls 매개변수는 RELP로 작업하는 동안 true로 설정되며 키/인증서 및 트리블릿 {ca_cert,cert _key } 및/또는 {ca_cert_src,cert_src,private_key_src}가 필요합니다.

      • {ca_cert_src,cert_src,private_key_src} triplet가 설정되면 기본 위치 /etc/pki/tls/certs/etc/pki/tls/private 이 제어 노드에서 파일을 전송하는 대상으로 사용됩니다. 이 경우 파일 이름은 트립릿의 원래 이름과 동일합니다.
      • {ca_cert,cert,private_key} triplet가 설정되면 로깅 구성 전에 파일이 기본 경로에 있어야 합니다.
      • 두 트래블릿이 설정되어 있으면 파일이 로컬 경로에서 제어 노드에서 관리 노드의 특정 경로로 전송됩니다.
    • ca_cert: CA 인증서 경로를 나타냅니다. 기본 경로는 /etc/pki/tls/certs/ca.pem 이며 파일 이름은 사용자가 설정합니다.
    • 인증서: 인증서의 경로를 나타냅니다. 기본 경로는 /etc/pki/tls/certs/server-cert.pem 이며 파일 이름은 사용자가 설정합니다.
    • private_key: 개인 키의 경로를 나타냅니다. 기본 경로는 /etc/pki/tls/private/server-key.pem 이며 파일 이름은 사용자가 설정합니다.
    • ca_cert_src: 대상 호스트에 복사되는 로컬 CA 인증서 파일 경로를 나타냅니다. ca_cert 를 지정하면 위치에 복사됩니다.
    • cert_src: 대상 호스트에 복사되는 로컬 인증서 파일 경로를 나타냅니다. cert 가 지정되면 해당 인증서가 위치에 복사됩니다.
    • private_key_src: 대상 호스트에 복사되는 로컬 키 파일 경로를 나타냅니다. private_key 가 지정되면 해당 키가 위치에 복사됩니다.
    • pki_authmode: 인증 모드를 이름 또는 지문으로 허용합니다.
    • permitted_clients: 로깅 서버가 TLS를 통해 로그를 연결하고 보낼 수 있는 클라이언트 목록입니다.
    • inputs: 로깅 입력 사전 목록입니다.
    • 출력: 로깅 출력 사전 목록입니다.
  2. 선택 사항: 플레이북 구문을 확인합니다.

    # ansible-playbook --syntax-check playbook.yml
  3. 플레이북을 실행합니다.

    # ansible-playbook -i inventory_file playbook.yml