※ 업무하면서 습득한 내용들을 정리해 놓은 포스팅입니다 :P 추가로 궁금하신 점은 댓글로 남겨주시고 필요한 자료 있으면 요청주세요! 잘못된 내용이 있으면 고쳐주시면 감사하겠습니다. 자료 퍼가실 때는 출처 남겨주세요!
ο 목차
※ 코드 보는 방법 참고
ㅇ 달러 기호($)가 있는 경우 -> 리눅스 터미널에서 CLI 명령어 입력
ㅇ "=#" 기호가 있는 경우 -> psql 쉘에서 명령어 입력
ㅇ 꺽쇠가 하나 있는 경우(>) -> 윈도우 명령 프롬프트(cmd)에서 명령어 입력
ㅇ 꺽쇠가 세개 있는 경우(>>>) -> python 쉘에서 명령어 입력
※ 이전 포스팅 참고 ※
ㅇ zabbix 서버에서 syslog 수집하기 -1
zabbix 서버에서 syslog 수집하기 -1 (tistory.com)
ㅇ zabbix 서버에서 syslog 수집하기 -2 : Rsyslog 설정
zabbix 서버에서 syslog 수집하기 -2 : Rsyslog 설정 (tistory.com)
※ 아래 가이드는 Centos7 기준으로 작성된 내용으로, 우분투나 기타 OS를 사용하는 분들은 상세 명령어를 제외한 작업 흐름 정도만 참고 부탁드립니다. ※
1. Zabbix syslog intergration 및 모듈 설치
1) Zabbix syslog intergration 파일 다운로드
- 불안하면 아래 깃허브에서 zip 파일 다운로드
https://github.com/v-zhuravlev/zabbix-syslog
2) zip 파일 압축해제
$ sudo unzip zip파일명(경로포함) -d zabbix-syslog-master
* zip파일명(경로포함) 예시 = Download/zabbix-syslog-master.zip
3) 기타 펄 모듈 설치
- Zabbix syslog intergration은 펄 스크립트를 통해 동작을 구현하는 도구이기 때문에 필요한 펄 모듈 설치 필수
- 필자는 아래 방법이 가장 오류없이 깔끔하게 진행되어서 cpanm을 활용해서 아래 *3개 모듈 설치
* 필요 모듈 = LWP, JSON::XS, Config::General
$ cpanm install LWP
$ cpanm install JSON::XS
$ cpanm install Config::General
- LWP, JSON::XS, Config::General 모듈을 설치하는 다양한 방법이 있으므로 기타 방법이 궁금한 경우 아래 내용의 Setup 파트 참고
https://github.com/v-zhuravlev/zabbix-syslog#setup
2. 작업 스크립트 복사
- 아래 원본 참고
https://github.com/v-zhuravlev/zabbix-syslog#copy-scripts
1) 작업 상세
※ 모든 작업은 압축해제된 zabbix-syslog-master 디렉토리로 이동하여 진행
- /etc/zabbix/scripts 폴더 만들기(생성된 디렉토리가 실제 작업 디렉토리가 됨)
$ mkdir -p /etc/zabbix/scripts
- zabbix_syslog_create_urls.pl 파일을 /etc/zabbix/scripts 폴더로 복사
$ cp zabbix_syslog_create_urls.pl /etc/zabbix/scripts/zabbix_syslog_create_urls.pl
- 작업 후 파일들이 제대로 복사 되었는지 확인
$ ls /etc/zabbix/scripts
- 복사한 파일의 모든 소유자에 대해 실행 권한 추가
$ chmod +x /etc/zabbix/scripts/zabbix_syslog_create_urls.pl
- 작업 후 실행 권한이 정상적으로 추가 되었는지 확인
$ ls /etc/zabbix/scripts -al
- zabbix_syslog_lkp_host.pl 파일을 /etc/zabbix/scripts 폴더로 복사
$ cp zabbix_syslog_lkp_host.pl /etc/zabbix/scripts/zabbix_syslog_lkp_host.pl
- /etc/zabbix/scripts/lib 폴더 만들기
$ mkdir /etc/zabbix/scripts/lib
- lib 폴더 안에 ZabbixAPI.pm 파일 복사
$ cp lib/ZabbixAPI.pm /etc/zabbix/scripts/lib
- zabbix_syslog.cfg 파일을 /etc/zabbix 폴더에 복사
$ cp zabbix_syslog.cfg /etc/zabbix/zabbix_syslog.cfg
- 복사한 파일의 소유자 변경
$ sudo chown zabbix:zabbix /etc/zabbix/zabbix_syslog.cfg
- 복사한 파일의 소유자에 대한 권한 변경
$ sudo chmod 700 /etc/zabbix/zabbix_syslog.cfg
- 작업 후 소유자와 권한이 정상적으로 추가 되었는지 확인
$ ls /etc/zabbix/scripts -al
3. 파일 설정 변경
1) zabbix_syslog.cfg 파일 수정
- 파일 내용 중 user와 admin 부분을 syslog용 계정 정보로 수정
user = syslog용계정
password = syslog용계정패스워드
4. crontab 설정하기
- syslog 맵 링크 업데이트를 위한 crontab 설정하기(하루에 한번 수행)
- 다운로드 받은 파일의 cron.d 디렉토리의 zabbix_syslog_create_urls 파일을 cron.d 디렉토리로 복사하기
$ sudo cp cron.d/zabbix_syslog_create_urls /etc/cron.d
5. Rsyslog 설정 변경
1) rsyslog.d 디렉토리에 zabbix_rsyslog.conf 파일 추가
$ sudo touch /etc/rsyslog.d/zabbix_rsyslog.conf
2) zabbix_rsyslog.conf 파일 수정
- 아래 내용 참고하여 파일 내용 수정
$ sudo vi /etc/rsyslog.d/zabbix_rsyslog.conf
(아래 내용 zabbix_rsyslog.conf 파일에 복사&붙여넣기)
# provides UDP syslog reception
$ModLoad imudp
# $UDPServerRun 514
#enables omrpog module
$ModLoad omprog
# template for remote host
$template network-fmt, "%TIMESTAMP% %fromhost-ip% %pri-text% %syslogtag% %msg%\n"
# Ruleset setting
# $Ruleset remote
# *.* ?network-fmt
# Remote Logging
$Ruleset network-fmt
*.* /var/log/syslog.log;network-fmt
### Listeners ###
$InputUDPServerBindRuleset network-fmt
$UDPServerRun 514
# exclude unwanted messages(examples):
# :msg, contains, "Child connection from" stop
# :msg, contains, "exit after auth (ubnt): Disconnect received" stop
# :msg, contains, "password auth succeeded for 'ubnt' from" stop
# :msg, contains, "exit before auth: Exited normally" stop
if $fromhost-ip != '127.0.0.1' then {
action(type="omprog" binary="/etc/zabbix/scripts/zabbix_syslog_lkp_host.pl" template="network-fmt")
stop
}
3) zabbix_syslog_lkp_host.pl 파일 내용 수정
- 아래 내용 참고하여 파일 내용 수정
$ sudo vi /etc/zabbix/scripts/zabbix_syslog_lkp_host.pl
...(파일 내용 생략)...
#rsyslog omprog loop
#http://www.rsyslog.com/doc/master/configuration/modules/omprog.html
while (defined(my $message = <>)) {
chomp($message);
#get ip from message
my $ip;
# 아래 내용을
# if ( $message =~ / \[ ((?:$ipv4_octet[.]){3}${ipv4_octet}) \]/msx ) {
# 아래 내용으로 수정
if ( $message =~ /((?:$ipv4_octet[.]){3}${ipv4_octet})/msx ) {
$ip = $1;
}
else {
warn "No IP in square brackets found in '$message', cannot continue\n";
next;
}
my $hostname = ${retrieve_from_store($ip)}->{'hostname'};
...(파일 내용 생략)...
6. Syslog 템플릿 삽입
- Zabbix 프론트엔드의 Configuration 메뉴 -> Templates 메뉴 선택 -> Import 버튼 선택
- Browse 버튼 선택
7. Syslog용 계정 추가
- 3.1) 에서 설정한 내용대로 syslog용 계정 추가
- Zabbix 프론트엔드 -> Administration 메뉴 -> Users 메뉴 -> "Create User" 버튼 선택
- 아래 내용 참고하여 계정 추가
8. Syslog 동작 테스트
1) 테스트용 호스트 생성하기
- Configuration 메뉴 -> Hosts 메뉴 -> "Create host" 버튼 선택
- 아래 내용과 같이 로컬 IP를 127.0.0.1 혹은 localhost 로 설정
- Templates 메뉴 선택 -> "Template_syslog" 선택하기
- 템플릿 적용 후 "Add" 버튼 선택하여 테스트 계정 추가
2) syslog 수신 테스트하기
- root 사용자로 아래 명령어 입력하여 syslog 수신 테스트
# echo "2017-12-19T09:26:26.314936+03:00 [127.0.0.1] syslog.info SysLogTest[4616]Test syslog message" | /etc/zabbix/scripts/zabbix_syslog_lkp_host.pl
- 성공적으로 syslog를 수신하는 경우 Problem 로그 발생
9. 호스트에 템플릿 일괄 적용
- Configuration 메뉴 -> Hosts 메뉴 -> 템플릿을 적용할 호스트 선택 -> 왼쪽 하단의 "Mass update" 버튼 선택
- Templates 메뉴 선택 -> Link templates 네모 박스 체크 -> Select 선택
- Template_syslog 선택
- 템플릿 적용 확인 후 Update 선택
- 호스트에 템플릿 적용 확인
- 다른 호스트에서도 정상적으로 syslog를 수집하는지 확인
하... 정리하다보니 내용이 너무 많아져서 중간중간 트러블슈팅이나 기본적인 내용들이 많이 생략되었습니다ㅠ
혹시 하다가 안되거나 추가로 궁금한 점이 있으면 언제든 댓글 달아주세요.
※ 좋아요와 구독은 큰 힘이 됩니다. 감사합니다.
'네트워크 운영도구 개발 > 모니터링 시스템 개발' 카테고리의 다른 글
zabbix 서버에서 syslog 수집하기 -2 : Rsyslog 설정 (3) | 2022.03.24 |
---|---|
zabbix 서버에서 syslog 수집하기 -1 (0) | 2022.03.22 |
Zabbix 프론트엔드(frontend) 설치 방법 (0) | 2021.09.13 |
zabbix 설치 방법 - 2) 패키지(Package)로 설치 (0) | 2021.09.09 |
zabbix 설치 방법 - 1) 소스코드(source code)로 설치 (0) | 2021.09.02 |
댓글