Red Hat Training
A Red Hat training course is available for RHEL 8
9.2. 로깅 시스템 역할 사용
시스템 관리자는 로깅
시스템 역할을 사용하여 많은 클라이언트 시스템에서 로그를 수집하도록 RHEL 호스트를 로깅 서버로 구성할 수 있습니다.
9.2.1. 로깅
시스템 역할
로깅
RHEL 시스템 역할을 사용하면 로컬 및 원격 호스트에 로깅 구성을 배포할 수 있습니다.
로깅 솔루션은 여러 가지 방법으로 로그를 읽고 다양한 로깅 출력을 제공합니다.
예를 들어 로깅 시스템은 다음 입력을 수신할 수 있습니다.
- 로컬 파일
-
systemd/journal
- 네트워크를 통한 다른 로깅 시스템
또한 로깅 시스템에는 다음과 같은 출력이 있을 수 있습니다.
-
/var/log
디렉터리의 로컬 파일에 저장된 로그 - Elasticsearch로 전송되는 로그
- 다른 로깅 시스템으로 전달된 로그
로깅
RHEL 시스템 역할을 사용하면 입력 및 출력을 결합하여 시나리오에 적합할 수 있습니다. 예를 들어 로컬 파일에 저널
의 입력을 저장하는 로깅 솔루션을 구성할 수 있지만 파일에서 읽은 입력은 다른 로깅 시스템으로 전달되고 로컬 로그 파일에 저장됩니다.
추가 리소스
-
/usr/share/ansible/roles/rhel-system-roles.logging/README.md
파일 -
/usr/share/doc/rhel-system-roles/logging/
디렉터리 - RHEL 시스템 역할
9.2.2. 로깅
시스템 역할의 변수
로깅
RHEL 시스템 역할 플레이북에서는 logging_inputs
매개변수에 입력을 정의하고, logging_outputs
매개변수의 출력 및 logging_flows
매개변수의 입력과 출력 간의 관계를 정의합니다. 로깅
RHEL 시스템 역할은 이러한 변수를 추가 옵션으로 처리하여 로깅 시스템을 구성합니다. 암호화 또는 자동 포트 관리를 활성화할 수도 있습니다.
현재 로깅 RHEL 시스템 역할에서 사용할 수 있는 유일한 로깅
시스템은 Rsyslog 입니다.
logging_inputs
: 로깅 솔루션의 입력 목록입니다.-
name
: 고유한 입력 이름입니다.logging_flows
: 입력 목록 및 생성된구성
파일 이름의 일부에 사용됩니다. type
: 입력 요소의 유형입니다. 유형은roles/rsyslog/{tasks,vars}/inputs/
의 디렉터리 이름에 해당하는 작업 유형을 지정합니다.기본 사항
:systemd
저널 또는unix
소켓에서 입력을 구성하는 입력.-
kernel_message
:true
로 설정된 경우imklog
를 로드합니다. 기본값은false입니다
. -
use_imuxsock
:imjournal
대신imuxsock
을 사용합니다. 기본값은false입니다
. -
ratelimit_burst
:ratelimit_interval
내에 내보낼 수 있는 최대 메시지 수입니다.use_imuxsock
이 false인 경우 기본값은20000
입니다.use_imuxsock
이 true인 경우 기본값은200
입니다. -
ratelimit_interval
:ratelimit_burst
를 평가하는 간격입니다.use_imuxsock
이 false인 경우 기본값은 600초입니다.use_imuxsock
이 true인 경우 기본값은 0입니다. 0은 속도 제한이 꺼져 있음을 나타냅니다. -
persist_state_interval
: 저널 상태는 모든값
메시지를 유지합니다. 기본값으로10
입니다.use_imuxsock
이 false인 경우에만 유효합니다.
-
-
파일
: 로컬 파일에서 입력 구성 입력. -
remote
: 네트워크를 통해 다른 로깅 시스템의 입력 구성 입력.
-
state
: 구성 파일 상태.present
또는absent
. 기본적으로존재합니다
.
-
logging_outputs
: 로깅 솔루션의 출력 목록입니다.-
파일
: 로컬 파일에 대한 출력을 구성하는 출력입니다. -
전달
: 출력을 다른 로깅 시스템으로 구성하는 출력입니다. -
remote_files
: 는 다른 로깅 시스템의 출력 구성을 로컬 파일로 출력합니다.
-
logging_flows
: logging_inputs 및
간의 관계를 정의하는 흐름 목록입니다.logging_outputs
logging_flows
변수에는 다음 키가 있습니다.-
name
: 흐름의 고유 이름 -
입력
:logging_inputs
이름 값 목록 -
출력
:logging_outputs
이름 값 목록입니다.
-
-
logging_manage_firewall
:true
로 설정하면로깅
RHEL 시스템 역할은방화벽
RHEL 시스템 역할을 사용하여 포트 액세스를 자동으로 관리합니다. -
logging_manage_selinux
:true
로 설정하면로깅
RHEL 시스템 역할은selinux
RHEL 시스템 역할을 사용하여 포트 액세스를 자동으로 관리합니다.
추가 리소스
-
/usr/share/ansible/roles/rhel-system-roles.logging/README.md
파일 -
/usr/share/doc/rhel-system-roles/logging/
디렉터리
9.2.3. 로컬 로깅
시스템 역할 적용
Ansible 플레이북을 준비하고 적용하여 별도의 시스템 집합에서 로깅 솔루션을 구성합니다. 각 머신 레코드는 로컬로 로그됩니다.
사전 요구 사항
- 컨트롤 노드 및 관리형 노드를 준비했습니다.
- 관리 노드에서 플레이북을 실행할 수 있는 사용자로 제어 노드에 로그인되어 있습니다.
-
관리 노드에 연결하는 데 사용하는 계정에는
sudo
권한이 있습니다.
배포 시 RHEL 시스템 역할이 rsyslog
를 설치하므로 rsyslog
패키지가 설치되지 않아도 됩니다.
절차
다음 콘텐츠를 사용하여 플레이북 파일(예:
~/playbook.yml
)을 생성합니다.--- - name: Deploying basics input and implicit files output hosts: managed-node-01.example.com roles: - rhel-system-roles.logging vars: logging_inputs: - name: system_input type: basics logging_outputs: - name: files_output type: files logging_flows: - name: flow1 inputs: [system_input] outputs: [files_output]
플레이북 구문을 확인합니다.
$ ansible-playbook --syntax-check ~/playbook.yml
이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.
플레이북을 실행합니다.
$ ansible-playbook ~/playbook.yml
검증
/etc/rsyslog.conf 파일의 구문을 테스트합니다.
# rsyslogd -N 1 rsyslogd: version 8.1911.0-6.el8, config validation run... rsyslogd: End of config validation run. Bye.
시스템이 로그에 메시지를 전송하는지 확인합니다.
테스트 메시지를 전송합니다.
# logger test
/var/log/messages
로그를 확인합니다. 예를 들면 다음과 같습니다.# cat /var/log/messages Aug 5 13:48:31 <hostname> root[6778]: test
여기서
<hostname
>은 클라이언트 시스템의 호스트 이름입니다. 로그에는 로거 명령을 입력한 사용자의 사용자 이름이 포함됩니다(이 경우root
).
추가 리소스
-
/usr/share/ansible/roles/rhel-system-roles.logging/README.md
파일 -
/usr/share/doc/rhel-system-roles/logging/
디렉터리
9.2.4. 로컬 로깅
시스템 역할의 로그 필터링
rsyslog
속성 기반 필터를 기반으로 로그를 필터링하는 로깅 솔루션을 배포할 수 있습니다.
사전 요구 사항
- 컨트롤 노드 및 관리형 노드를 준비했습니다.
- 관리 노드에서 플레이북을 실행할 수 있는 사용자로 제어 노드에 로그인되어 있습니다.
-
관리 노드에 연결하는 데 사용하는 계정에는
sudo
권한이 있습니다.
배포 시 RHEL 시스템 역할이 rsyslog
를 설치하므로 rsyslog
패키지가 설치되지 않아도 됩니다.
절차
다음 콘텐츠를 사용하여 플레이북 파일(예:
~/playbook.yml
)을 생성합니다.--- - name: Deploying files input and configured files output hosts: managed-node-01.example.com roles: - rhel-system-roles.logging vars: logging_inputs: - name: files_input type: basics logging_outputs: - name: files_output0 type: files property: msg property_op: contains property_value: error path: /var/log/errors.log - name: files_output1 type: files property: msg property_op: "!contains" property_value: error path: /var/log/others.log logging_flows: - name: flow0 inputs: [files_input] outputs: [files_output0, files_output1]
이 구성을 사용하면
오류
문자열이 포함된 모든 메시지가/var/log/errors.log
에 기록되고 다른 모든 메시지는/var/log/others.log
에 기록됩니다.오류
속성 값을 필터링할 문자열로 교체할 수 있습니다.환경 설정에 따라 변수를 수정할 수 있습니다.
플레이북 구문을 확인합니다.
$ ansible-playbook --syntax-check ~/playbook.yml
이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.
플레이북을 실행합니다.
$ ansible-playbook ~/playbook.yml
검증
/etc/rsyslog.conf 파일의 구문을 테스트합니다.
# rsyslogd -N 1 rsyslogd: version 8.1911.0-6.el8, config validation run... rsyslogd: End of config validation run. Bye.
시스템에서
오류
문자열이 포함된 메시지를 로그에 전송하는지 확인합니다.테스트 메시지를 전송합니다.
# logger error
/var/log/errors.log 로그를 확인합니다.
예를 들면 다음과 같습니다.# cat /var/log/errors.log Aug 5 13:48:31 hostname root[6778]: error
여기서
hostname
은 클라이언트 시스템의 호스트 이름입니다. 로그에는 로거 명령을 입력한 사용자의 사용자 이름이 포함됩니다(이 경우root
).
추가 리소스
-
/usr/share/ansible/roles/rhel-system-roles.logging/README.md
파일 -
/usr/share/doc/rhel-system-roles/logging/
디렉터리
9.2.5. 로깅 시스템 역할을 사용하여 원격 로깅
솔루션 적용
다음 단계에 따라 Red Hat Ansible Core 플레이북을 준비 및 적용하여 원격 로깅 솔루션을 구성합니다. 이 플레이북에서 하나 이상의 클라이언트는 systemd-journal
에서 로그를 가져와 원격 서버로 전달합니다. 서버는 remote _rsyslog 및
에서 원격 입력을 수신하고 원격 호스트 이름으로 이름이 지정된 디렉터리의 로컬 파일에 로그를 출력합니다.
remote_
files
사전 요구 사항
- 컨트롤 노드 및 관리형 노드를 준비했습니다.
- 관리 노드에서 플레이북을 실행할 수 있는 사용자로 제어 노드에 로그인되어 있습니다.
-
관리 노드에 연결하는 데 사용하는 계정에는
sudo
권한이 있습니다.
배포 시 RHEL 시스템 역할이 rsyslog
를 설치하므로 rsyslog
패키지가 설치되지 않아도 됩니다.
절차
다음 콘텐츠를 사용하여 플레이북 파일(예:
~/playbook.yml
)을 생성합니다.--- - name: Deploying remote input and remote_files output hosts: managed-node-01.example.com 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: managed-node-02.example.com 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 정책을 수정합니다.
플레이북 구문을 확인합니다.
$ ansible-playbook --syntax-check ~/playbook.yml
이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.
플레이북을 실행합니다.
$ ansible-playbook ~/playbook.yml
검증
클라이언트 및 서버 시스템 모두에서
/etc/rsyslog.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
>은 클라이언트 시스템의 호스트 이름입니다. 로그에는 로거 명령을 입력한 사용자의 사용자 이름이 포함됩니다(이 경우root
).
추가 리소스
-
/usr/share/ansible/roles/rhel-system-roles.logging/README.md
파일 -
/usr/share/doc/rhel-system-roles/logging/
디렉터리
9.2.6. TLS에서 로깅
시스템 역할 사용
TLS(Transport Layer Security)는 컴퓨터 네트워크를 통해 보안 통신을 허용하도록 설계된 암호화 프로토콜입니다.
관리자는 로깅
RHEL 시스템 역할을 사용하여 Red Hat Ansible Automation Platform을 사용하여 보안 로그 전송을 구성할 수 있습니다.
9.2.6.1. TLS를 사용하여 클라이언트 로깅 구성
로깅
RHEL 시스템 역할과 함께 Ansible 플레이북을 사용하여 RHEL 클라이언트에 대한 로깅을 구성하고 TLS 암호화를 사용하여 원격 로깅 시스템으로 로그를 전송할 수 있습니다.
이 절차에서는 개인 키 및 인증서를 생성하고 Ansible 인벤토리의 clients 그룹에 있는 모든 호스트에 TLS를 구성합니다. TLS 프로토콜은 네트워크를 통해 로그를 안전하게 전송할 수 있도록 메시지 전송을 암호화합니다.
인증서를 생성하기 위해 플레이북에서 인증서
RHEL 시스템 역할을 호출할 필요가 없습니다. 로깅
RHEL 시스템 역할은 자동으로 호출합니다.
CA에서 생성된 인증서에 서명하려면 관리형 노드를 IdM 도메인에 등록해야 합니다.
사전 요구 사항
- 컨트롤 노드 및 관리형 노드를 준비했습니다.
- 관리 노드에서 플레이북을 실행할 수 있는 사용자로 제어 노드에 로그인되어 있습니다.
-
관리 노드에 연결하는 데 사용하는 계정에는
sudo
권한이 있습니다. - 관리형 노드는 IdM 도메인에 등록됩니다.
절차
다음 콘텐츠를 사용하여 플레이북 파일(예:
~/playbook.yml
)을 생성합니다.--- - name: Deploying files input and forwards output with certs hosts: managed-node-01.example.com roles: - rhel-system-roles.logging vars: logging_certificates: - name: logging_cert dns: ['localhost', 'www.example.com'] ca: ipa logging_pki_files: - ca_cert: /local/path/to/ca_cert.pem cert: /local/path/to/logging_cert.pem private_key: /local/path/to/logging_cert.pem logging_inputs: - name: input_name type: files input_log_path: /var/log/containers/*.log logging_outputs: - name: output_name type: forwards target: your_target_host tcp_port: 514 tls: true pki_authmode: x509/name permitted_server: 'server.example.com' logging_flows: - name: flow_name inputs: [input_name] outputs: [output_name]
Playbook은 다음 매개 변수를 사용합니다.
logging_certificates
-
이 매개변수의 값은 인증서 RHEL 시스템 역할의
certificate
_requests logging_pki_files
이 매개변수를 사용하여 로깅에서 사용하는 경로 및 기타 설정을 구성하여 로깅에서 사용하는 CA, 인증서 및 TLS에 사용되는 키 파일을 찾습니다.
ca_cert_src
,ca_cert
_src ,cert
,cert_src
, private_key ,
,private_key
_srctls
.참고logging_certificates
를 사용하여 대상 노드에서 파일을 생성하는 경우logging_certificates
에서 생성되지 않은 파일을 복사하는 데 사용되는ca_cert_src
,cert_src
및private_key_src
를 사용하지 마십시오.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_cert
에서 지정한 위치로 대상 호스트에 복사되는 제어 노드의 CA 인증서 파일의 경로를 나타냅니다.logging_certificates
를 사용하는 경우 이 사용하지 마십시오. cert_src
-
인증서에서 지정한 위치로 대상 호스트에 복사되는 제어 노드의 인증서 파일의 경로를
나타냅니다
.logging_certificates
를 사용하는 경우 이 사용하지 마십시오. private_key_src
-
private_key
에서 지정한 위치로 대상 호스트에 복사되는 제어 노드에서 개인 키 파일의 경로를 나타냅니다.logging_certificates
를 사용하는 경우 이 사용하지 마십시오. tls
-
이 매개변수를
true
로 설정하면 네트워크를 통한 로그 전송이 안전합니다. 보안 래퍼가 필요하지 않은 경우tls: false
를 설정할 수 있습니다.
플레이북 구문을 확인합니다.
$ ansible-playbook --syntax-check ~/playbook.yml
이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.
플레이북을 실행합니다.
$ ansible-playbook ~/playbook.yml
추가 리소스
-
/usr/share/ansible/roles/rhel-system-roles.logging/README.md
파일 -
/usr/share/doc/rhel-system-roles/logging/
디렉터리 - RHEL 시스템 역할을 사용하여 인증서 요청
9.2.6.2. TLS를 사용하여 서버 로깅 구성
로깅
RHEL 시스템 역할과 함께 Ansible 플레이북을 사용하여 RHEL 서버에서 로깅을 구성하고 TLS 암호화를 사용하여 원격 로깅 시스템에서 로그를 수신하도록 설정할 수 있습니다.
이 절차에서는 개인 키 및 인증서를 생성하고 Ansible 인벤토리의 서버 그룹에 있는 모든 호스트에 TLS를 구성합니다.
인증서를 생성하기 위해 플레이북에서 인증서
RHEL 시스템 역할을 호출할 필요가 없습니다. 로깅
RHEL 시스템 역할은 자동으로 호출합니다.
CA에서 생성된 인증서에 서명하려면 관리형 노드를 IdM 도메인에 등록해야 합니다.
사전 요구 사항
- 컨트롤 노드 및 관리형 노드를 준비했습니다.
- 관리 노드에서 플레이북을 실행할 수 있는 사용자로 제어 노드에 로그인되어 있습니다.
-
관리 노드에 연결하는 데 사용하는 계정에는
sudo
권한이 있습니다. - 관리형 노드는 IdM 도메인에 등록됩니다.
절차
다음 콘텐츠를 사용하여 플레이북 파일(예:
~/playbook.yml
)을 생성합니다.--- - name: Deploying remote input and remote_files output with certs hosts: managed-node-01.example.com roles: - rhel-system-roles.logging vars: logging_certificates: - name: logging_cert dns: ['localhost', 'www.example.com'] ca: ipa logging_pki_files: - ca_cert: /local/path/to/ca_cert.pem cert: /local/path/to/logging_cert.pem private_key: /local/path/to/logging_cert.pem logging_inputs: - name: input_name type: remote tcp_ports: 514 tls: true permitted_clients: ['clients.example.com'] logging_outputs: - name: output_name type: remote_files remote_log_path: /var/log/remote/%FROMHOST%/%PROGRAMNAME:::secpath-replace%.log async_writing: true client_count: 20 io_buffer_size: 8192 logging_flows: - name: flow_name inputs: [input_name] outputs: [output_name]
Playbook은 다음 매개 변수를 사용합니다.
logging_certificates
-
이 매개변수의 값은 인증서 RHEL 시스템 역할의
certificate
_requests logging_pki_files
이 매개변수를 사용하여 로깅에서 사용하는 경로 및 기타 설정을 구성하여 로깅에서 사용하는 CA, 인증서 및 TLS에 사용되는 키 파일을 찾습니다.
ca_cert_src
,ca_cert
_src ,cert
,cert_src
, private_key ,
,private_key
_srctls
.참고logging_certificates
를 사용하여 대상 노드에서 파일을 생성하는 경우logging_certificates
에서 생성되지 않은 파일을 복사하는 데 사용되는ca_cert_src
,cert_src
및private_key_src
를 사용하지 마십시오.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_cert
에서 지정한 위치로 대상 호스트에 복사되는 제어 노드의 CA 인증서 파일의 경로를 나타냅니다.logging_certificates
를 사용하는 경우 이 사용하지 마십시오. cert_src
-
인증서에서 지정한 위치로 대상 호스트에 복사되는 제어 노드의 인증서 파일의 경로를
나타냅니다
.logging_certificates
를 사용하는 경우 이 사용하지 마십시오. private_key_src
-
private_key
에서 지정한 위치로 대상 호스트에 복사되는 제어 노드에서 개인 키 파일의 경로를 나타냅니다.logging_certificates
를 사용하는 경우 이 사용하지 마십시오. tls
-
이 매개변수를
true
로 설정하면 네트워크를 통한 로그 전송이 안전합니다. 보안 래퍼가 필요하지 않은 경우tls: false
를 설정할 수 있습니다.
플레이북 구문을 확인합니다.
$ ansible-playbook --syntax-check ~/playbook.yml
이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.
플레이북을 실행합니다.
$ ansible-playbook ~/playbook.yml
추가 리소스
-
/usr/share/ansible/roles/rhel-system-roles.logging/README.md
파일 -
/usr/share/doc/rhel-system-roles/logging/
디렉터리 - RHEL 시스템 역할을 사용하여 인증서 요청
9.2.7. RELP에서 로깅
시스템 역할 사용
RELP(Reliable Event Logging Protocol)는 TCP 네트워크를 통한 데이터 및 메시지 로깅을 위한 네트워킹 프로토콜입니다. 이 솔루션은 이벤트 메시지를 안정적으로 전송하며 메시지 손실을 허용하지 않는 환경에서 사용할 수 있습니다.
RELP 발신자는 로그 항목을 명령 형태로 전송하고 수신자는 처리되면 이를 승인합니다. 일관성을 보장하기 위해 RELP는 모든 종류의 메시지 복구를 위해 전송된 각 명령에 트랜잭션 번호를 저장합니다.
RELP Client와 RELP 서버 간에 원격 로깅 시스템을 고려할 수 있습니다. RELP Client는 로그를 원격 로깅 시스템으로 전송하고 RELP 서버는 원격 로깅 시스템에서 보낸 모든 로그를 수신합니다.
관리자는 로깅
RHEL 시스템 역할을 사용하여 로그 항목을 안정적으로 전송하고 수신하도록 로깅 시스템을 구성할 수 있습니다.
9.2.7.1. RELP로 클라이언트 로깅 구성
로깅
RHEL 시스템 역할을 사용하여 로컬 머신에 로깅되는 RHEL 시스템에 로그인을 구성하고 Ansible 플레이북을 실행하여 RELP를 사용하여 원격 로깅 시스템으로 로그를 전송할 수 있습니다.
이 절차에서는 Ansible 인벤토리의 clients
그룹에 있는 모든 호스트에서 RELP를 구성합니다. RELP 구성은 TLS(전송 계층 보안)를 사용하여 네트워크를 통해 로그를 안전하게 전송할 수 있도록 메시지 전송을 암호화합니다.
사전 요구 사항
- 컨트롤 노드 및 관리형 노드를 준비했습니다.
- 관리 노드에서 플레이북을 실행할 수 있는 사용자로 제어 노드에 로그인되어 있습니다.
-
관리 노드에 연결하는 데 사용하는 계정에는
sudo
권한이 있습니다.
절차
다음 콘텐츠를 사용하여 플레이북 파일(예:
~/playbook.yml
)을 생성합니다.--- - name: Deploying basic input and relp output hosts: managed-node-01.example.com 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]
플레이북은 다음 설정을 사용합니다.
대상
- 이는 원격 로깅 시스템이 실행 중인 호스트 이름을 지정하는 필수 매개 변수입니다.
port
- 원격 로깅 시스템이 수신 대기 중인 포트 번호입니다.
tls
네트워크를 통한 로그를 안전하게 전송합니다. 보안 래퍼가 필요하지 않은 경우
tls
변수를false
로 설정할 수 있습니다. 기본적으로tls
매개변수는 RELP로 작업하는 동안 true로 설정되며 키/인증서 및 트립릿 {ca_cert
,cert
,private_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
이 제어 노드에서 파일을 전송하는 대상으로 사용됩니다. 이 경우 파일 이름은 Triplet에서 원래 이름과 동일합니다. -
{
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를 통해 연결하고 로그를 전송하도록 허용하는 서버 목록입니다.
입력
- 로깅 입력 사전 목록.
출력
- 로깅 출력 사전 목록.
플레이북 구문을 확인합니다.
$ ansible-playbook --syntax-check ~/playbook.yml
이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.
플레이북을 실행합니다.
$ ansible-playbook ~/playbook.yml
추가 리소스
-
/usr/share/ansible/roles/rhel-system-roles.logging/README.md
파일 -
/usr/share/doc/rhel-system-roles/logging/
디렉터리
9.2.7.2. RELP로 서버 로깅 구성
로깅
RHEL 시스템 역할을 사용하여 RHEL 시스템에서 서버로 로깅을 구성하고 Ansible 플레이북을 실행하여 RELP를 사용하여 원격 로깅 시스템에서 로그를 수신할 수 있습니다.
이 절차에서는 Ansible 인벤토리의 서버
그룹에 있는 모든 호스트에서 RELP를 구성합니다. RELP 구성은 TLS를 사용하여 네트워크를 통해 로그를 안전하게 전송할 수 있도록 메시지 전송을 암호화합니다.
사전 요구 사항
- 컨트롤 노드 및 관리형 노드를 준비했습니다.
- 관리 노드에서 플레이북을 실행할 수 있는 사용자로 제어 노드에 로그인되어 있습니다.
-
관리 노드에 연결하는 데 사용하는 계정에는
sudo
권한이 있습니다.
절차
다음 콘텐츠를 사용하여 플레이북 파일(예:
~/playbook.yml
)을 생성합니다.--- - name: Deploying remote input and remote_files output hosts: managed-node-01.example.com 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
플레이북은 다음 설정을 사용합니다.
port
- 원격 로깅 시스템이 수신 대기 중인 포트 번호입니다.
tls
네트워크를 통한 로그를 안전하게 전송합니다. 보안 래퍼가 필요하지 않은 경우
tls
변수를false
로 설정할 수 있습니다. 기본적으로tls
매개변수는 RELP로 작업하는 동안 true로 설정되며 키/인증서 및 트립릿 {ca_cert
,cert
,private_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
이 제어 노드에서 파일을 전송하는 대상으로 사용됩니다. 이 경우 파일 이름은 Triplet에서 원래 이름과 동일합니다. -
{
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를 통해 연결하고 로그를 전송하도록 허용하는 클라이언트 목록입니다.
입력
- 로깅 입력 사전 목록.
출력
- 로깅 출력 사전 목록.
플레이북 구문을 확인합니다.
$ ansible-playbook --syntax-check ~/playbook.yml
이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.
플레이북을 실행합니다.
$ ansible-playbook ~/playbook.yml
추가 리소스
-
/usr/share/ansible/roles/rhel-system-roles.logging/README.md
파일 -
/usr/share/doc/rhel-system-roles/logging/
디렉터리
9.2.8. 추가 리소스
- RHEL 시스템 역할을 사용하도록 컨트롤 노드 및 관리형 노드 준비
-
/usr/share/ansible/
패키지와 함께 설치된 설명서.roles/rhel-system-roles.logging/README.html에 rhel
-system-roles - RHEL 시스템 역할
-
ansible-playbook(1) 도움말
페이지.