반응형
우분투에서 rsyslog를 사용하여 로그를 원격으로 전송하는 방법
rsyslog 패키지 설치
sudo apt-get update
sudo apt-get install -y rsyslog
원격 rsyslog 서버 구성(받는 서버)
원격 rsyslog 서버를 설정해야 합니다. 이 서버는 원격 로그를 수신하고 저장할 것입니다.
1. 원격 rsyslog 서버에서 rsyslog 설정
- /etc/rsyslog.conf 파일을 열고 다음 줄을 추가하여 UDP 또는 TCP 포트를 설정합니다. 로그를 수신할 포트를 지정합니다.
vim /etc/rsyslog.conf
# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
# Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514
# Forward all messages to remote syslog server
*.* @remote_syslog_server_ip_address:port
*.* @@remote_syslog_server_ip_address:port
- @(Single @) : UDP(사용자 데이터그램 프로토콜)를 사용하여 로그를 전송
- @@(Double @@) : TCP(전송 제어 프로토콜)를 사용하여 로그를 안정적으로 전송
2. rsyslog 서비스 재시작
sudo systemctl restart rsyslog
3. rsyslog 서비스 포트 확인
$ netstat -an | grep 0.0.0.0:514
tcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN
udp 0 0 0.0.0.0:514 0.0.0.0:*
로컬 시스템 rsyslog 설정(보내는 서버)
로컬 시스템에서 rsyslog를 구성하여 로그를 원격 rsyslog 서버로 전송합니다.
1-1. 로컬 시스템에서 rsyslog 설정
- /etc/rsyslog.conf 파일을 열고 원격 rsyslog 서버의 IP 주소와 포트 번호를 설정합니다.
sudo vim /etc/rsyslog.conf
*.* @원격_rsyslog_서버_IP:514
1-2. rsyslog 서비스 재시작
sudo systemctl restart rsyslog
2-1. logger 명령어를 사용하여 간단한 로그를 생성하고 로깅 시스템에 메시지를 전송합니다.
logger -t rsyslogd rsyslog-test-message
원격 rsyslog 서버에서 syslog 로그 확인
- 원격 rsyslog 서버에서 로그 메시지를 확인합니다.
tail -f /var/log/syslog
$ tail -f /var/log/syslog
Feb 18 22:00:55 rsyslog-01 rsyslogd: rsyslog-test-message
728x90
logger 사용법
logger 명령어는 리눅스 및 Unix 기반 시스템에서 로그 메시지를 생성하여 시스템 로그 파일에 기록하는 데 사용되는 유틸리티입니다. 이 도구를 사용하여 사용자, 스크립트 또는 명령어로 로그 메시지를 생성하고 로그 파일에 기록할 수 있습니다.
기본 구문
logger [옵션] [메시지]
- 옵션 : logger 명령어의 옵션을 설정할 수 있으며, 아래에서 설명하겠습니다.
- 메시지 : 로그에 기록할 텍스트 메시지입니다.
주요 옵션
- -p <priority> : 로그 메시지의 우선순위를 지정합니다. 가능한 값은 emerg, alert, crit, err, warning, notice, info, debug입니다. 우선순위는 syslog 데몬 설정에 따라 처리됩니다.
- -t <tag> : 로그 메시지에 추가될 태그를 지정합니다.
- -f <file> : 로그 메시지를 파일에서 읽어옵니다.
- -i: 메시지가 표준 입력에서 읽어오는 경우 사용합니다.
- -s: 메시지가 로그에 기록되었을 때 성공적으로 기록되었다는 메시지를 출력합니다.
- -u: UDP를 사용하여 로그 메시지를 원격 호스트로 전송합니다. -h 옵션으로 원격 호스트를 지정하고 -P 옵션으로 포트 번호를 지정합니다.
사용 예시
1. 간단한 메시지 로깅
- 기본 로그 레벨은 user.notice이며 로컬 시스템의 기본 로그로 기록됩니다.
logger "이것은 로그 메시지입니다."
2. 태그와 우선순위 설정
- "myscript" 태그가 붙은 로그 메시지를 user.info 로그 레벨로 로깅합니다.
logger -t myscript -p user.info "스크립트 실행이 시작되었습니다."
- 원격 서버의 IP 주소로 TCP 포트 514를 사용하여 로그 메시지를 전송합니다. "rsyslogd" 태그가 붙은 메시지를 로깅합니다.
logger -n remote_server_ip -P 514 -t rsyslogd "rsyslog-test-message"
3. 파일에서 로그 메시지 읽기
- 지정된 파일(/path/to/logfile.txt)에서 로그 메시지를 읽어 로깅합니다. 파일에는 로그 메시지가 포함되어야 합니다.
logger -f /path/to/logfile.txt
4. "Hello World"라는 메시지를 info 우선순위로 로그에 기록
- "info" 로그 레벨로 "Hello World"라는 메시지를 로깅합니다. 로컬 시스템의 기본 로그로 기록됩니다.
logger -p info "Hello World"
5. 스크립트에서 logger 사용
- 이 스크립트는 지정된 메시지를 logger를 사용하여 로그 파일에 기록합니다.
#!/bin/bash
MESSAGE="스크립트가 실행되었습니다."
logger -t myscript -p user.info "$MESSAGE"
logger 명령어는 시스템 로깅 및 디버깅 작업에 유용하며, 사용자 지정 스크립트 및 작업에서 로그 메시지를 생성하고 기록하는 데 활용할 수 있습니다.
728x90
반응형
'리눅스' 카테고리의 다른 글
ubuntu 환경에서 elasticsearch와 kibana를 설치하는 방법 (0) | 2023.02.20 |
---|---|
unable to resolve host hostname 오류 (0) | 2023.02.20 |
Fluentd를 사용하여 데이터를 집계하고 Elasticsearch와 AWS S3로 전달하는 방법(Aggregation and Forwarding with Fluentd) (0) | 2023.02.18 |
[리눅스] Elasticsearch REST APIs (0) | 2023.02.17 |
[리눅스] td-agent plugin(td-agent 플러그) (0) | 2023.02.17 |