ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Syslog 수집툴인 Graylog 사용방법 & 팁 & 문제점 공유
    IT 관련/Linux & NAS & IoT 2018. 12. 12. 15:15

    회사에서 설정한 Graylog 설정(ssh로 로그인하면 메일로 알람도 옴)


    Graylog란?

    흔히 서버에서 장애가 발생했거나 접속/에러 로그등을 보려면 해당 Log 파일들을 확인하고 수정해 나가는것이 기본적인 엔지니어의 흔한 모습입니다. 이러한 다양한 로그들을 한곳에 모아 분석하고 파악을 하려면 시간과 수고가 걸리는것이 당연한 것입니다만 이 강력한 오픈소스툴인 Graylog를 사용하면 로그 중앙집중화를 통하여 모든 장비의 로그를 한번에 확인할 수 있는 편리함을 취할 수 있습니다.

    어느날 회사에 운영중인 리눅스 디비서버의 돌연 사망으로 인해 로그 분석을 위한 해법을 찾다가 설치하게 되었습니다. 예전 회사에서는 KiwiLog라고 써본적이 있었지만 현재 트라이얼로 바뀌면서 결국 Graylog 사용하게 되었습니다.

    검색해보니 ELK를 사용해서 해보라는 의견도 있었지만 syslog만을 위한 최적화는 Graylog가 더 나을듯 합니다. 그이유중에는 실시간 로그 검색/입력이 확인 가능한게 매우 편하였습니다. ELK에서는 이부분이 제가 못 찾았는지 확인이 어려워 세팅에 난항을 겪었었습니다.


    각설하고 Graylog 특징에 대해서 몇가지 적어 보겠습니다.

    1. 원하는 Syslog를 UDP, TCP 어떠한 방법으로도 수신이 가능합니다. 특히나 몇몇 네트워크 장비는 보안상 TCP만 된다거나 하는 까다로움이 있는데 이런 문제에서 자유롭습니다.(물론 Port도 자유롭게 변경가능)
    2. NginX등을 이용한 무중단 클러스터 구성등이 가능합니다. 프록시 및 로드밸런싱도 OK
    3. 사용자를 별도 생성하여 원하는 자료만 보여줄수 있도록 설정가능

    방화벽에서 정책수정이랑 로그인 정보를 보기위한 설정(로그인 실패를 일부러 한다음 실시간으로 체크해본...)


    이정도로 Graylog에 대한 설명을 접어두고 제가 설치하면서 겪었던 사용방법 & 팁 & 문제점에 대해서 기술해보고자 합니다.

    설치시 참고했던 사이트 URL(CentOS7 기준)

    1. http://docs.graylog.org/en/2.5/pages/installation/os/centos.html

    2. https://devops.profitbricks.com/tutorials/install-and-configure-graylog-server-on-centos-7-1/

    3. https://www.itzgeek.com/how-tos/linux/centos-how-tos/how-to-install-graylog2-on-centos-7-rhel-7.html


    사용방법

    1. 모든 작업의 시작은 Inputs 에서부터 syslog 수집

    2. Inputs 에서 syslog를 받는 UDP나 TCP 설정시 해당 포트를 리눅스 방화벽에서도 꼭 오픈한다(확인 : #firewall-cmd --zone=public --list-all)

    3. 현재 들어오는 장비파악을 하려면 Sources 메뉴 확인

    4. Stream을 이용해서 해당 서버나 장비에서 필요한 로그들만 볼수 있다.(윈도우/리눅스/네트워크 장비와 같이 구분도 가능)

    5. Alerts Mail사용방법은 ①Manage conditions부터 생성하고 ②Manage notifiacations 를 설정한다(당연히 smtp서버는 필요)

    6. Dashboards사용시 맨처음 Create dashboard를 생성후 Search(혹은 Streams)에서 원하는 조건으로 검색한 결과를 바로 Dashboard로 추가 가능.(매우편리)

    7. 재시작 명령어는 systemctl restart graylog-server.service 


    사용팁

    1. Search 에서 2가지 만족하는 필드검색을 하려면 && 구분자를 이용하면 된다.(or 의 경우 || )

    2. 해당 Source의 이름이 맘에 들지 않는다면 해당 이름(Source)을 클릭후 Creat extrator for field source 선택 Replace with regular expression 에서 변경(변경에 시간이 걸리니 참고)

    3. 변경된 이름들은 System>Inputs>Manage extrators에서 한꺼번에 확인 가능

    4. 윈도우 서버는 nxlog라는 프로그램을 이용하여 로그 던지기 가능(참고: http://yallalabs.com/linux/how-to-collect-windows-event-logs-to-graylog2-using-nxlog/ )

    5. Mail Alerts 에서 장비정보(stream.title)를 받으려면 Manage conditions에서 Message Backlog를 1로 수정한다.

    6. 서버에 문제가 발생할경우 syslog도 증가하기 때문에 Dashboards 항목에 각 서버별 syslog 증감율을 표시하는것도 장애발견에 한가지 방법(ex. 방화벽 접속로그등)

    7. Geoip를 이용한 World Map을 표시하게 하려면 링크 참고(Geoip DB파일을 받아서 해당 파일을 서버에 업로드 하고 연결설정이 필요함)

    8. 만약에 Input이 있는데도 Search나 Sources에서 아무것도 나오지 않는다면 아래와 같이 실행

    System -> Indices -> Default index set -> Maintenance -> Rotate active write index

    9. server.conf 파일 첨부하오니 참고하시길 

    graylog_server_conf.zip


    문제점

    1. http header 문제(?)로 인해서 익스플로러에서는 문제가 없는데 크롬에서는 자꾸 로그인이 안되는 현상이 발생됨 - 최신버전 설치하니 해당 문제가 사라짐

    2. 타임스템프가 틀리게 찍히는 경우가 있는데 이런경우는 System-Pipelines 에서 수정(참고 : https://community.graylog.org/t/incorrect-time-in-log/6510/36 )

    3. Fortigate Firewall장비의 경우에도 9시간 차이 문제가 있는데 이럴경우 Inputs 설정시 CEF UDP Input 로 하면 해결된다(물론 방화벽에서도 CEF로 변경필요)


    댓글

Designed by Tistory.