Graylog 설정(Demo purpose)

황동천황동천
2 min read

현장에 설치하는 Linux IoT 장치 운용시 로그 수집은 필수라고 생각한다.

장치 대수가 적을땐 SSH로 직접 확인할 수 있겠으나, 그것도 10대 넘어가기 시작하면 머리가 아파오기 시작한다.

그래서 Graylog 도입을 위해 설치를 해보려고 시도 한 기록이다.

Requirement

  • REST API 통해서 다른 Internal Tool에서 확인할 수 있어야 함

    • 특정 이슈 발생 개발자/현장 서비스팀에 알림 전달 등을 위해
  • 다양한 Log collect option 지원(Syslog, Raw TCP/UDP 등)

  • Scale out 가능성 체크

    • core, OpenSearch(ElasticSearch), MongoDB로 구성

    • MongoDB: metadata 저장 -> Resource 별로 안먹는다고 함.

    • ElasticSearch: 대부분 리소스 사용 -> scale out 용이

      • architec_bigger_setup

일단 동작을 목표로 실행시켜보려한다.

Setup

git clone https://github.com/Graylog2/docker-compose.git graylog
cd graylog/open-core
cp .env.example .env
nano .env

docker compose up
# or 
docker compose up -d

Login

http://localhost:9000 or http://<host>:9000

Test

  1. System > Inputs

  2. Syslog TCP or UDP 선택

  3. Launch New Input

  4. Title 설정, Port 5140으로 설정

    1. docker compose에 5140 포트가 열려있음.
  5. 맨 아래의 Launch Input을 해주면 추가 완료

테스트 로그 전송

# syslog TCP
logger -n localhost -T -P 5140 "This is a test log message"

# syslog UDP
logger -n localhost -d -P 5140 "This is a test log message"

로그 확인

완료 후, Show Received message에 가면 들어오는 로그를 실시간으로 확인할 수 있다.

Rsyslog

sudo nano /etc/rsyslog.conf
# or
sudo nano /etc/rsyslog.d/10-test.conf

아래 라인 추가

TCP: @@<host>:<port>;RSYSLOG_SyslogProtocol23Format

UDP: @<host>:<port>;RSYSLOG_SyslogProtocol23Format

추가 후 서비스 재시작

sudo service rsyslog restart

0
Subscribe to my newsletter

Read articles from 황동천 directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

황동천
황동천