티스토리 뷰

Gray Log 의 기본설정과 원격지 서버 및 가상화, 네트워크 장비들에서 Syslog 전송에 대한 설정을 마치면 본격적으로 Graylog를 설정한다.


1. Gray Log  Input생성

Graylog에서 input을 생성하기 위해서는, 로그의 원본이 되는 시스템에서 로그를 생성하고, Graylog로 송신을 해야 한다.
Graylog에서는 해당 송신되는 log를 받아서 처리할 수 있도록 수진 포트를 설정해야 한다.
보통 syslog 수신을 위한 포트는 UDP 514포트로 주로 하게 되는데, Graylog 서버에서는 1024 이하의 TCP/UDP포트 번호로 설정하게 되면 권한 거부 오류가 발생하게 된다.
이러한 이슈를 해결하기 위해서 UDP 514 Port를 1024 이상의 포트로 redirection 처리하도록 한다.

System - Input - Syslog UDP를 선택한다.





포트번호를 1514 번 포트로 변경한다.


정상적으로 입력되면 아래와 같이 값이 입력되는 것을 확인할 수 있다.


UDP 514 Port에서 UDP 1514 Port로 Redirection 처리하고, 방화벽에서 수신을 허용한다.

[root@centrepo whchoi]# firewall-cmd --add-masquerade --permanent
[root@centrepo whchoi]# firewall-cmd --add-forward-port=port=514:proto=udp:toport=1514 --permanent
[root@centrepo whchoi]# firewall-cmd --permanent --add-port=1514/udp
[root@centrepo whchoi]# firewall-cmd --reload
[root@centrepo whchoi]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens192
  sources:
  services: 9000/tcp 1514/udp
  protocols:
  masquerade: yes
  forward-ports: port=514:proto=udp:toport=1514:toaddr=




2. 서버에서 Rsyslog 생성 및 Syslog 전송

이제 로그를 발생하는 서버에서 Syslog를 전송하도록 설정한다.
만약 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 데몬을 재구동한다.



3. Graylog에서 수신 여부 확인







4. 필터와 Dashboard의 활용

Graylog 서버를 활용하는 방법은 상당히 다양하지만, 가장 핵심은 Filter기술과 그에 따른 Dashboard의 배치이다.
특히 ElasticSearch기반의 빠른 인덱싱과 검색을 통해 매우 빠른 결과와 원하는 로그를 볼 수 있으므로 어떻게 필터를 하고 배치하느냐가 매우 중요한 활용 방법이 된다.
앞서 2편에서 CentOS서버들과 ESX서버들, 그리고 넥서스 스위치에서 로그들을 전송했다.
개인적으로 사용 중인 랩에 장비들이 적지 않은 관계로 한꺼번에 수집해서 색인과 DashBoard를 보여 주고,
리눅스 서버들 , 가상화 서버들, 넥서스 스위치를 별도의 Dashboard로 분리한다.



주요 메뉴들을 보면 Search는 전체 로그들과 필터를 정의할 수 있는 핵심적인 역할을 한다.
DashBoard는 Search에서 설정한 내용을 Dashboard로 구성하게 된다.
Source는 원격지 서버들의 전송 현황을 살펴 볼 수 있다.
System에서는 수많은 환경 설정 및 Plugin등을 설정할 수 있다.
5번의 메뉴는 초당 로그를 수집하는 현황을 볼 수 있고, 마지막 6번 메뉴에서는 사용자별 권한 설정을 할 수 있다.
Graylog 서버는 이렇게 기능과 메뉴가 풍부하고 상당히 강력한 기능들을 제공하고 있다.

우선 Search Menu를 살펴보자.



1번의 경우 로그 컨텍스트를 다양한 색인과 필드값에 따라 분류하고 그래프 등으로 표현하여, 2번 메뉴에 추가 할 수 있도록 해 준다.
1번에서 설정된 결과에 따라 2번에 그래프나 결과들을 추가 할 수 있다.
3번의 경우 모든 메세지 타입이 표현되기 때문에 이 low data를 기반으로 추가적으로 기능을 확장할 수 있다.
4번 메뉴는 화면의 자동 리플레쉬 기능을 추가할 수 있다.
5번의 메뉴는 2번,3번등의 메뉴에 대해 탐색 시간 주기를 설정할 수 있다.
6번이 매우 중요한데, 실제 3번의 결과에 나타난 Log의 값을 필터해서 필요한 데이터만 보여 주도록 할 수 있다.
필터된 값들은 별도로 저장이 가능해서 다양하게 색인 할수 있도록 도움을 준다.

앞서 예제 대로 ESX를 기준으로 여러가지 대시보드를 만들어 보았다.
특히 ESX에서 ATS 관련 로그들만 추출해서 , 어느 ESX서버에서 가장 많이 발생하는 지를 추적하고 그래프로 별도로 만든다.
만들어진 그래프는 대쉬보드로 만들수 있다.




필자는 아래와 같이 ESX 서버들에 대해서 필터 색인 후 그 값들을 가지고 DashBoard를 만들어서 모니터링한다.
예를 들면 어느 호스트에서 가장 많은 이벤트를 보내고 있는지, 어떤 레벨로 보내는 지, 시간대별 분석, 볼륨에 대한 로그만을 추출하기도 하고, 특정 스토리지 메세지들을 추출하기도 한다.
이렇게 되면 장애를 처리할 때 선제적으로 보다 빠르게 처리할 수 있다.





넥서스 스위치의 경우 , 인터페이스의 이벤트 현황, 장비 접속 현황, 스위치 이벤트 발생 분포, vPC 이슈 현황, ARP 관련 로그 현황들을 Filter하여 Dashboard를 생성하였다.





리눅스의 경우 외부 접속자 및 DNS 이슈 현황등을 추가하여 모니터링 하도록 Dashboard를 추가하였다.
필요한 경우 각 어플리케이션 로그 , Web 서비스등에 대해 별도로 Dashboard를 구성할 수 있다.
또한 GeoDB를 이용하여, 외부 접속자에 대한 위치 분포를 상세하게 볼 수 있도록 하였다.
GEO DB를 다운로드 받아, /etc/graylog/server 해당 폴더에 포팅하고 약간의 설정을 추가해 주면 가능하며, 자동으로 필터가 생성된다.





랩 전체의 현황을 위한 Dashboard도 별도로 구성하였다.


Graylog의 경우 Market Place를 제공하고 있으며, 여기에서 다양한 플러그인과 Contents Pack을 추가할 수 있다.
현재까지는 아직 그렇게 많지 않지만, 방화벽 , Netflow 등과 같은 로그들도 추가하여 분석 사용할 수 있다.

Graylog는 오픈소스 많은 도구 중에 상당히 매력적이고 안정적으로 서비스를 제공할 수 있는 구조를 가지고 있다.
또한 커스트마이징을 위해 상당히 많은 도구를 제공하고 있기 때문에, 어떠한 로그 분석도구와 비교해도 손색없는 강력한 솔루션이다.



공지사항