[Docker] Syslog 서버 구축

syslog는 서버의 전반적인 로그를 관리하고 생성하는 데몬이자 도구입니다.

docker 컨테이너를 통해 syslog 서버를 구축해봅니다.

 

이미지 다운로드

balabit/syslog-ng 이미지를 다운받아 syslog 서버 구성에 사용합니다.

# docker pull balabit/syslog-ng:latest
latest: Pulling from balabit/syslog-ng
bc2ca2f3fe95: Pull complete
192f45bd4334: Pull complete
b6703b37ab44: Pull complete
98d97b578ab1: Pull complete
9216e5c2bf8e: Pull complete
Digest: sha256:1a13ed478136ed7a2638095f87da510121fa4d4d15b6171b543bab42948e4ae7
Status: Downloaded newer image for balabit/syslog-ng:latest
docker.io/balabit/syslog-ng:latest

 

docker-compose 설정

syslog의 로그 저장 경로인 /var/log 디렉토리를 호스트에서 확인할 수 있도록 ./data/log 디렉토리와 마운트 하였으며,

syslog 에서 사용하는 포트 정보(UDP:514/TCP:601/TLS:6514)를 포트 포워딩 하였습니다.

# cat docker-compose.yml
services:
  syslog-ng:
    image: balabit/syslog-ng:latest
    container_name: syslog-ng
    volumes:
      - ./data/log:/var/log
    ports:
      - 514:514/udp
      - 601:601/tcp
      - 6514:6514/tcp

 

로그 생성 디렉토리인 ./data/log 디렉토리를 생성합니다.

# mkdir -p ./data/log

 

 

docker-compose 실행 및 확인

설정이 완료 후 docker-compose up -d 명령어로 컨테이너를 실행합니다.

# docker-compose up -d
Creating network "syslog_default" with the default driver
Creating syslog-ng ... done

 

docker ps 명령어로 컨테이너 상태를 확인합니다.

# docker ps
CONTAINER ID   IMAGE                      COMMAND                  CREATED          STATUS                             PORTS                                                                                                                     NAMES
3bd1260b5ce3   balabit/syslog-ng:latest   "/usr/sbin/syslog-ng…"   17 seconds ago   Up 14 seconds (health: starting)   0.0.0.0:601->601/tcp, :::601->601/tcp, 0.0.0.0:514->514/udp, :::514->514/udp, 0.0.0.0:6514->6514/tcp, :::6514->6514/tcp   syslog-ng

 

netstat 명령어로 포트포워딩 설정이 정상적으로 설정되었는지 확인합니다.

# netstat -nap | grep -E "514|601|6514"
tcp        0      0 0.0.0.0:601             0.0.0.0:*               LISTEN      8586/docker-proxy
tcp        0      0 0.0.0.0:6514            0.0.0.0:*               LISTEN      8563/docker-proxy
tcp6       0      0 :::601                  :::*                    LISTEN      8594/docker-proxy
tcp6       0      0 :::6514                 :::*                    LISTEN      8569/docker-proxy
udp        0      0 172.31.0.1:37144        172.31.0.2:514          ESTABLISHED 8608/docker-proxy
udp        0      0 0.0.0.0:514             0.0.0.0:*                           8608/docker-proxy
udp6       0      0 :::514                  :::*                                8614/docker-**proxy**

 

로그 저장 디렉토리에 messages 관련 파일이 자동으로 생성되었는지 확인합니다.

# ls -al ./data/log/
total 16
drwxr-xr-x 2 root root 4096 Nov  1 22:26 .
drwxr-xr-x 3 root root 4096 Nov  1 22:25 ..
-rw------- 1 root root  260 Nov  1 22:29 messages
-rw------- 1 root root  473 Nov  1 22:29 messages-kv.log

 

syslog 사용법

syslog 서버에 로그를 남기고자 하는 서버에서 syslog 서버의 IP와 포트 정보(UDP:514/TCP:601/TLS:6514)를 지정하여 사용하시면 됩니다.


로그는 기본적으로 마운트한 ./data/log 디렉토리 안에 생성되니 확인해보시면 될 것 같습니다.

 

추가적으로 syslog 관련 설정을 변경하고 싶으시면 아래와 같이 syslog 관련 설정 파일을 마운트하여 설정을 변경하신 후 컨테이너를 재시작하여 사용가능합니다.

volumes:
  - "$PWD/syslog-ng.conf":/etc/syslog-ng/syslog-ng.conf

'Docker' 카테고리의 다른 글

[Docker] Network 설정  (0) 2022.12.01
[Docker] Logging 설정  (0) 2022.11.07
[Docker] Healthcheck 설정을 통한 컨테이너 상태 점검  (0) 2022.10.19
[Docker] Volumes 설정  (0) 2022.10.11
[Docker] Restart 설정  (0) 2022.09.20

+ Recent posts