[ Graylog - Syslog & DBlog 수집 구성 ] part 2

 사전 작업

 

Part 1 URL :https://jhdatabase.tistory.com/entry/Graylog-%EB%A1%9C%EA%B7%B8%EC%88%98%EC%A7%91%EC%84%9C%EB%B2%84-%EC%84%A4%EC%B9%98-part-1

 

[ Graylog - 로그수집서버 설치 ] part 1

안녕하세요. 여러대의 서버들에 하나하나 접속해서 log를 확인하기 힘들고 귀찮기때문에 graylog를 이용해 로그 수집서버를 구성해서 받아 볼 생각입니다. Graylog란, MongoDB와 Elasticsearch 기반으로 동

jhdatabase.tistory.com

 

원격지 서버에서 syslog 수집하기 위해 설정

  • Graylog에서 Input 생성하기 위해서, 원격지 시스템에서 로그가 생성되고, Graylog로 송신 해야합니다.
  • Graylog에서는 해당 송신되는 log를 받아 처리할 수 있는 수신 포트를 설정해야하며 보통 syslog 수신을 위한 포트는 UDP 514가 default이나 graylog서버에서 1024 이하의 TCP/UDP 포트 번호는 권한 오류가 발생합니다.
  • 해당 이슈 해결을 위해 UDP 514 -> 1514 포트로 리다이렉션 되도록 처리.

 

 

 

 

SysLog 수집 설정

 

■ Graylog Input 생성

System -> Inputs -> Syslog UDP -> Launch new input 클릭

syslog 설정

 

 

 

 Node 선택 & Port 변경

노드 선택

 

 

 

 

 정상적으로 port가 변경되었는지 확인

변경 사항 확인

 

 

 

 

 graylog 서버 redirection 설정 ( graylog server) 

  • UDP 1514 port허용
  • UDP 514로 들어오는 것을 1514port로 보내도록 리다이렉션 설정
[root@jh-test ~]# firewall-cmd --add-masquerade --permanent
success

[root@jh-test ~]# firewall-cmd --add-forward-port=port=514:proto=udp:toport=1514 --permanent
success

[root@jh-test ~]# firewall-cmd --permanent --add-port=1514/udp
success

[root@jh-test ~]# firewall-cmd --reload
success

[root@jh-test ~]# firewall-cmd --list-all
public
  target: default
  icmp-block-inversion: no
  interfaces:
  sources:
  services: dhcpv6-client ssh
  ports: 1514/udp
  protocols:
  masquerade: yes
  forward-ports: port=514:proto=udp:toport=1514:toaddr=
  source-ports:
  icmp-blocks:
  rich rules:

 

 

 

외부 서버 -> Syslog 전송 설정 (node001,node002)  noe001,002의 udp프로토콜 1514 open

syslog 발생시 graylog 서버로 전송하도록 설정.

mail, authpriv, crontab에 관한 정보는 보내지않겠다로 설정.

## 해당 config 파일의 맨 마지막줄에 추가해줍니다. rsyslog가 없을시 yum, apt-get 등으로 설치진행해줍니다.

[root@jh-node001 ~]# vi /etc/rsyslog.conf
# ### end of the forwarding rule ###
*.info;mail.none;authpriv.none;cron.none @118.67.132.167:1514         => 포트를 1000번 이상으로 설정해주었습니다.



[root@jh-node001 ~]# systemctl restart rsyslog.service



## 테스트용 log 생성
[root@jh-node001 ~]# logger test
[root@jh-node001 ~]# logger test
[root@jh-node001 ~]# logger test

 

 

 graylog 웹에서 확인 

웹에서 확인

 

 

 

Graylog web에서 보이는 log와 실제 서버에서 보이는 log가 동일

만약 log를 못받아오면 우측 상단에 update every 5 seconds의 재생 아이콘을 눌러보세요

 

 

 

DB Log 수집 설정

 

■ node001

node1

 

node002

node2

 

 

 

 Inputs에서 새로운 UDP input 생성

UDP input 생성

 

 

 

 12305 port 개방

[root@jh-node001 ~]# firewall-cmd --add-masquerade --permanent
success

[root@jh-node001 ~]# firewall-cmd --add-forward-port=port=514:proto=udp:toport=12305 --permanent
success

[root@jh-node001 ~]# firewall-cmd --permanent --add-port=12305/udp
success

[root@jh-node001 ~]# firewall-cmd --reload
success

 

 

 

hosts 추가(jh-node001)

[root@jh-node001 ~]# vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
118.67.132.167    graylog.com

 

 

 

mysql error log에서 생성된 log를 받아 보내는 스크립트 작성 (node001,node002)

[root@jh-node001 ~]# vi kim.sh
#!/bin/sh

if [ ! -e status.last ]; then
    cat /log/mariadb.log  > status.last
else
    cat /log/mariadb.log  > status.current

   comm -3 status.current status.last > /root/kim.txt
   msg=`cat /root/kim.txt`
   echo "$msg" | nc -w 1 -u graylog.com 12305
   echo $msg

mv status.current status.last
fi

 

 

 

 crontab 설정 (상시로 스크립트 돌게 설정) (node001,node002)

[root@jh-node001 ~]# chmod +x kim.sh

[root@jh-node001 ~]# crontab -e

MAILTO=""
30 06 * * * /usr/sbin/nsight_updater > /tmp/.nu.log 2> /tmp/.nu_err.log
* * * * * /root/kim.sh

 

 

 

 db log에 test log 추가 (node001,node002)

[root@jh-node001 ~]# vi /log/mariadb.log

Version: '5.7.32'  socket: '/tmp/mysql.sock'  port: 3306  MySQL Community Server (GPL)
testtestestestestest
ttttttttttttttttttttt
qqqqqqqqqqqqq

 

 

 

 graylog web에서 확인

web에서 확인

 

 

이상으로 SysLog 및 DB Log 수집 설정을 하였습니다. 다음 글에서는 email 얼롯팅 설정을 하도록 하겠습니다.

 

 

 

참고