웹사이트 검색

CentOS 7에서 Rsyslog 서버에 로그를 보내도록 Rsyslog 클라이언트를 설정하는 방법


로그 관리는 네트워크 인프라에서 가장 중요한 구성 요소 중 하나입니다. 로그 메시지는 유틸리티, 애플리케이션, 데몬, 네트워크 관련 서비스, 커널, 물리적 장치 등과 같은 수많은 시스템 소프트웨어에 의해 지속적으로 생성됩니다.

로그 파일은 Linux 시스템 문제를 해결하고, 시스템을 모니터링하고, 시스템 보안 강도와 문제를 검토하는 경우 유용합니다.

Rsyslog는 수많은 Linux 배포판에서 가장 널리 사용되는 로깅 메커니즘인 오픈 소스 로깅 프로그램입니다. CentOS 7 또는 RHEL 7의 기본 로깅 서비스이기도 합니다.

CentOS의 Rsyslog 데몬은 여러 네트워크 장치에서 로그 메시지를 수집하기 위해 서버로 실행되도록 구성할 수 있습니다. 이러한 장치는 클라이언트 역할을 하며 해당 로그를 rsyslog 서버로 전송하도록 구성됩니다.

그러나 Rsyslog 서비스는 클라이언트 모드에서 구성하고 시작할 수도 있습니다. 이 설정은 rsyslog 데몬에게 TCP 또는 UDP 전송 프로토콜을 사용하여 로그 메시지를 원격 Rsyslog 서버로 전달하도록 지시합니다. Rsyslog 서비스는 클라이언트와 서버로 동시에 실행되도록 구성할 수도 있습니다.

이 튜토리얼에서는 CentOS/RHEL 7 Rsyslog 데몬을 설정하여 원격 Rsyslog 서버에 로그 메시지를 보내는 방법을 설명합니다. 이렇게 설정하면 다른 데이터를 저장하기 위해 머신 디스크 공간을 보존할 수 있습니다.

CentOS에서 기본적으로 거의 모든 로그 파일이 기록되는 곳은 /var 시스템 경로입니다. 또한 /(root) 파티션을 소진하지 않도록 동적으로 확장할 수 있는 /var 디렉터리에 대해 항상 별도의 파티션을 생성하는 것이 좋습니다.

Rsyslog 클라이언트는 별도로 지정하지 않는 한 항상 로그 메시지를 일반 텍스트로 보냅니다. 완전히 제어할 수 없는 인터넷이나 네트워크를 통해 로그 메시지를 전송하도록 Rsyslog 클라이언트를 설정해서는 안 됩니다.

요구사항

  1. CentOS 7.3 설치 절차
  2. RHEL 7.3 설치 절차
  3. CentOS/RHEL 7에서 Rsyslog 서버 구성

1단계: Rsyslog 설치 확인

1. 기본적으로 Rsyslog 데몬은 CentOS 7 시스템에 이미 설치되어 실행되고 있습니다. rsyslog 서비스가 시스템에 있는지 확인하려면 다음 명령을 실행하십시오.

rpm -q | grep rsyslog
rsyslogd -v

2. CentOS에 Rsyslog 패키지가 설치되어 있지 않은 경우 아래 명령을 실행하여 서비스를 설치합니다.

yum install rsyslog

2단계: Rsyslog 서비스를 클라이언트로 구성

3. CentOS 7 시스템에 설치된 Rsyslog 데몬이 로그 클라이언트 역할을 하고 로컬에서 생성된 모든 로그 메시지를 원격 Rsyslog 서버로 라우팅하도록 하려면 다음을 수정하세요. rsyslog 구성 파일은 다음과 같습니다.

먼저 편집을 위해 기본 구성 파일을 엽니다.

vi /etc/rsyslog.conf

그런 다음 아래 발췌문에 설명된 대로 파일 끝에 아래 줄을 추가합니다.

*. *  @192.168.10.254:514

위 줄에서 원격 rsyslog 서버의 FQDN IP 주소를 적절하게 바꾸십시오. 위 줄은 시설이나 심각도에 관계없이 514/UDP 포트를 통해 IP 192.168.10.254를 사용하는 호스트에 모든 로그 메시지를 보내도록 Rsyslog 데몬에 지시합니다.

4. 원격 로그 서버가 TCP 연결만 수신하도록 구성되어 있거나 TCP와 같은 안정적인 전송 네트워크 프로토콜을 사용하려는 경우 앞에 다른 @ 문자를 추가하세요. 아래 예와 같이 원격 호스트의

*. *  @@logs.domain.lan:514

Linux rsyslog는 또한 = 또는 !와 같은 일부 특수 문자를 허용합니다. 이 문자는 "이 우선순위만을 나타내기 위해 우선순위 수준 앞에 붙을 수 있습니다. ” 등호 및 “이 우선순위 또는 이보다 높지 않은 우선순위 ”입니다.

CentOS 7의 Rsyslog 우선 순위 수준 한정자의 일부 샘플:

  • kern.info=정보 우선순위 이상의 커널 로그입니다.
  • kern.=info=정보 우선순위가 있는 커널 메시지만.
  • kern.info;kern.!err=정보, 알림 및 경고 우선순위가 있는 커널 메시지만.
  • kern.debug;kern.!=warning=경고를 제외한 모든 커널 우선순위.
  • kern.*=모든 커널 우선순위 메시지.
  • kern.none=우선순위에 관계없이 관련 커널 기능 메시지를 기록하지 않습니다.

예를 들어, 우선 순위 수준에 관계없이 모든 관련 메일 메시지 등 특정 시설 메시지만 원격 로그 서버로 보내려는 경우 rsyslog 구성 파일에 아래 줄을 추가합니다.

mail.* @192.168.10.254:514 

5. 마지막으로 새 구성을 적용하려면 아래 명령을 실행하여 데몬이 변경 사항을 적용할 수 있도록 Rsyslog 서비스를 다시 시작해야 합니다.

systemctl restart rsyslog.service

6. 어떤 이유로 부팅 시 Rsyslog 데몬이 활성화되지 않은 경우 아래 명령을 실행하여 시스템 전체 서비스를 활성화하십시오.

systemctl enable rsyslog.service

3단계: Apache 및 Nginx 로그를 원격 로그 서버로 보내기

7. 아래 예에 설명된 대로 기본 구성 파일에 다음 줄을 추가하여 원격 syslog 서버에 로그 메시지를 보내도록 Apache HTTP 서버를 구성할 수 있습니다.

vi /etc/httpd/conf/httpd.conf

Apache 기본 conf 파일에 아래 줄을 추가하십시오.

CustomLog "| /bin/sh -c '/usr/bin/tee -a /var/log/httpd/httpd-access.log | /usr/bin/logger -thttpd -plocal1.notice'" combined

이 행은 HTTP 데몬이 파일 시스템 로그 파일에 내부적으로 로그 메시지를 기록하도록 강제할 뿐만 아니라 메시지를 로컬 1에서 오는 것으로 표시하여 먼 syslog 서버로 보내는 로거 유틸리티에 대한 파이프를 통해 메시지를 추가로 처리합니다. 시설.

8. Apache 오류 로그 메시지를 원격 syslog 서버로 보내려면 위의 예에 표시된 것과 같이 새 규칙을 추가하세요. 다음 샘플에 표시된 것처럼 오류 우선순위와 일치하는 httpd 로그 파일의 이름과 로그 파일 심각도 수준:

ErrorLog "|/bin/sh -c '/usr/bin/tee -a /var/log/httpd/httpd-error.log | /usr/bin/logger -thttpd -plocal1.err'"

9. 위 줄을 추가한 후 다음 명령을 실행하여 Apache 데몬을 다시 시작하여 변경 사항을 적용해야 합니다.

systemctl restart httpd.service                 

10. 버전 1.7.1부터 Nginx 웹 서버에는 다음 줄을 추가하여 메시지를 원격 syslog 서버에 직접 기록할 수 있는 기능이 내장되어 있습니다. nginx 구성 파일에 코드를 추가합니다.

error_log syslog:server=192.168.1.10:514,facility=local7,tag=nginx,severity=error;
access_log syslog:server=192.168.10.254:514,facility=local7,tag=nginx,severity=info main;

IPv6 서버의 경우 다음 구문 형식을 사용하여 IPv6 주소를 묶습니다.

access_log syslog:server=[7101:dc7::9]:514,facility=local7,tag=nginx,severity=info;

11. Apache 웹 서버에서 보낸 로그를 받으려면 원격 Rsyslog 서버에서 rsyslog 구성 파일을 다음과 같이 변경해야 합니다.

local1.* @Apache_IP_address:514

그게 다야! 클라이언트 모드에서 실행되도록 Rsyslog 데몬을 성공적으로 구성했으며, Apache HTTP 서버 또는 Nginx에 로그 메시지를 전달하도록 지시했습니다. 원격 syslog 서버로.

시스템이 충돌하는 경우 원격 syslog 서버에 저장된 로그 파일 내용을 검사하여 문제를 조사할 수 있습니다.