Graylog 설정(Demo purpose)
현장에 설치하는 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 용이
일단 동작을 목표로 실행시켜보려한다.
Setup
git clone https://github.com/Graylog2/docker-compose.git graylog
cd graylog/open-core
cp .env.example .env
GRAYLOG_PASSWORD_SECRET:
pwgen -N 1 -s 96
GRAYLOG_ROOT_PASSWORD_SHA2: Admin 비밀번호
echo -n "Enter Password: " && head -1 </dev/stdin | tr -d '\n' | sha256sum | cut -d" " -f1
이외 설정 변경: https://go2docs.graylog.org/5-1/setting_up_graylog/server.conf.html
nano .env
docker compose up
# or
docker compose up -d
Login
http://localhost:9000
or http://<host>:9000
Test
System > Inputs
Syslog TCP or UDP 선택
Launch New Input
Title 설정, Port 5140으로 설정
- docker compose에 5140 포트가 열려있음.
맨 아래의 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
Subscribe to my newsletter
Read articles from 황동천 directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by