티스토리 뷰

Syslog서버를 설정하는 것 만큼 중요한 것이 원격지의 서버들의 log 전송이다.
리눅스 서버와 VMWare ESX, Cisco Nexus Switch의 Syslog 구성방법에 대해 알아본다.
Syslog 목적지의 수집서버는 모두 Graylog Server로 하며, 기본 Syslog 서비스 포트인 UDP 514로 구성한다.


1. 리눅스 서버

리눅스 서버의 경우에는 rsyslog를 통해서 원격지로 전송한다.
만약 rsyslog가 없는 경우에는 yum, apt 등을 통해 간단히 설치가 가능하다.

[root@ns1 whchoi]# vi /etc/rsyslog.conf
*.info;mail.none;authpriv.none;cron.none @10.72.78.253:514
# Syslog 목적지에 대한 설정을 Graylog로 설정한다.

[root@ns1 whchoi]# systemctl restart rsyslog
# 해당 서버의 rsyslog 데몬을 재구동한다.


2. VMware log 설정

VMware log를 설정한다.
이제 로그를 발생하는 서버에서 Syslog를 전송하도록 설정한다.
설정은 간단하게 구성할 수 있다.

vCenter 또는 ESX vSphere Client에서  Host 선택 - Configure - System - Advanced System Settings 를 선택한다.
해당 Key 에서 Syslog.global.logHost를 선택하고, Value에 Graylog Server의 URL을 선언한다.



UDP 포트로 전송하므로, GrayLog Server의 수신 포트로 URL을 입력한다.


Cli를 사용할 경우 좀 더 간편하게 구성이 가능하다.
[root@DC1-ESX33:~] esxcli system syslog config get
   Default Network Retry Timeout: 180
   Dropped Log File Rotation Size: 100
   Dropped Log File Rotations: 10
   Enforce SSLCertificates: false
   Local Log Output: /scratch/log
   Local Log Output Is Configured: false
   Local Log Output Is Persistent: true
   Local Logging Default Rotation Size: 1024
   Local Logging Default Rotations: 8
   Log To Unique Subdirectory: false
   Message Queue Drop Mark: 90
   Remote Host: udp://10.72.78.253:514

# 현재 ESX의 syslog설정을 파악할 수 있다.

[root@DC1-ESX33:~] esxcli system syslog config set --loghost=‘udp://10.72.78.253:514'

# Graylog로 ESX의 log event를 전송한다.

[root@DC1-ESX33:~] esxcli system syslog reload

# Syslog Daemon을 재구동한다.


ESX에서 syslog를 설정한 이후에도 syslog를 수신하지 못하는 경우가 있다.
이러한 경우에는  ESX filrewall에서 비활성화되어 전송되지 못하는 경우이다. 

[root@DC2-ESX95:~] esxcli network firewall ruleset list | grep syslog
syslog                      false

# esx의 내부 방화벽에 의해서 syslog 전송이 막혀 있는 경우가 있다.

[root@DC2-ESX95:~] esxcli network firewall ruleset set --ruleset-id=syslog --enabled=true
# syslog를 전송을 허용한다.

[root@DC2-ESX95:~] esxcli network firewall ruleset list | grep syslog
syslog                       true

# esx 내부 방화벽에서 정상적으로 syslog가 허용되었는지 확인한다.

[root@DC2-ESX95:~] nc -z 10.72.86.7 514
#nc 도구를 통해 정상적으로 전송하는지 확인한다.



NTP 서비스가 설정되지 않을 경우, Syslog 서버에서 정상적으로 수신하지 못하므로 반드시 ESX에서 NTP 설정을 해 주어야 한다.
설정 방법은 아래와 같다.
System-Timeconfig 메뉴에서 NTP Client를 활성화 하고, NTP Service를 구동한다.
Graysyslog와 동일한 NTP를 설정한다.


서버가 호스트 네임으로 Syslog를 전송하듯이 ESX의 경우에도 호스트 네임으로 전송한다.
이 경우 Hostname을 설정하여, 로그 분석시 필터링이 유용하도록 한다.

[root@DC2-ESX31:~] esxcli system hostname set --host=DC2-ESX91
# domain-name까지 설정할 수도 있다.

[root@DC2-ESX31:~]vi /etc/hosts
10.72.86.31     DC1-ESX31.cisko-dc.com DC1-ESX31




3. Nexus Switch에서 Graylog server 연동 설정

이제 로그를 발생하는 서버에서 Syslog를 전송하도록 설정한다.
만약 rsyslog가 없는 경우에는 yum, apt 등을 통해 추가 설치한다.

NXOS-SPINE-1001(config)# logging timestamp milliseconds
NXOS-SPINE-1001(config)# logging server 10.72.78.253 6 port 514 use-vrf management
NXOS-SPINE-1001(config)# logging source-interface mgmt 0
NXOS-SPINE-1001(config)# logging origin-id hostname

# 네트워크 장비에서 호스트 네임을 logging origin-id로 설정해 두면 log분석을 할 경우와 필터링시 매우 편리하므로, logging origin-id를 호스트네임으로 설정한다.


2019 May 15 02:45:48.346 NXOS-SPINE-1001 %VSHD-5-VSHD_SYSLOG_CONFIG_I: Configured from vty by whchoi on 10.75.234.117@pts/5
# 위와 같은 로그 포맷 타입으로 출력하게 되며, 전송한다.


네트워크 장비의 Syslog정보를 위와 같이 간략하게 정리하였으니 참고하기 바란다.

Level Keyword
Level
Description
Syslog Definition
emergencies
0
System unstable
LOG_EMER
alters
1
Immediate action needed
LOG_ALERT
critical
2
Critical conditions
LOG_CRIT
errors
3
Error conditions
LOG_ERR
warnings
4
Warning conditions
LOG_WARNING
notification
5
Normal but significant condition
LOG_NOTICE
information
6
Informational messages only
LOG_INFO
debugging
7
Appears during debugging only
LOG_DEBUG


이제 정상적으로 Graylog서버에서 수신이 되는지 확인하면 된다.
추가적으로 반드시 NTP를 설정해야 정상적인 로그 분석과 수집이 가능하므로, 서버 NTP 설정, 넥서스 NTP 설정을 추가로 참고한다.



NTP가 설정되지 않으면, Graylog와 시간 위상차로 인해 정상적으로 수신하지 못하므로 반드시 동일한 NTP를 설정하도록 한다.





'DevOps_Programming > DevOps 도구들' 카테고리의 다른 글

Gray Log 서버 구성 3편 - 구성  (4) 2019.05.16
Graylog 서버 구성 1편 - 설치  (6) 2019.05.14
Vagrant 설치와 구성  (0) 2019.03.11
공지사항