ติดตั้ง Syslog Server สำหรับทำ Centralize Log Server

เมื่อวานผมหาวิธีในการสร้าง Docker ของ syslog-ng สำหรับทำ Centralize log วันนี้เลยเอามาฝากกันครับ อันนี้เป็นวิธีการติดตั้งแบบง่ายๆ โดยไม่ได้มีเรื่องความปลอดภัยเข้ามาเกี่ยวข้องนะครับ ถ้าจะนำไปใช้ในงานจริง ควรดูเรื่อง Security เพิ่มเติมครับ

ตี๊ต่างว่าพอรู้จัก Docker กันมาบ้างแล้ว

Tutorial นี้ ใช้ Ubuntu 18.04 LTS

sudo apt-get install docker.io

สร้างไฟล์ Config สำหรับ syslog-ng บนเครื่อง Hosts เก็บในชื่อ syslog-ng.conf

@version: 3.9
 
source s_net {
   udp(
     ip("0.0.0.0")
   );
   syslog(
     ip("0.0.0.0")
   );
};
destination d_file {
   file("/var/log/syslog");
};
log {
source(s_net); destination(d_file); 
};

เปิดพอร์ต UDP 514, TCP 601, TCP 6514 แล้วก็รับ log มาจากทุก ip address เสร็จแล้ว ไปบันทึกเก็บในไฟล์ที่ชื่อ /var/log/syslog

 

สั่งรัน docker

sudo docker run -it -p 514:514/udp -p 601:601/tcp -p 6514:6514/tcp --name syslog-ng -v "$PWD/syslog-ng.conf":/etc/syslog-ng/syslog-ng.conf balabit/syslog-ng:latest -edvt --no-caps

เสร็จแล้ว

วิธีการทดสอบ สามารถเข้าไปใน docker container

sudo docker exec -it syslog-ng /bin/bash

แล้วพิมพ์คำสั่ง

loggen -i -S -P localhost 601

ลอง tail /var/log/syslog ใน docker container

ถ้าสำเร็จ ที่นี้ เรามาลองจาก Docker Host บ้าง แต่เนื่องจาก loggen มันเป็นชุดคำสั่งของ syslog-ng ผมขอใช้วิธีอื่นแทน (จริงๆ docker มันสามารถดึงคำสั่งออกมาใช้ที่ host ได้ แต่ไม่พูดถึงในที่นี้)

nc -v -w0 -u 127.0.0.1 514 <<< "Jun 10 10:35:20 Jun 21 10:34:20 192.168.1.1 TEST MESSAGE"

ในนี้ใช้คำสั่ง Netcat ใน Docker host แล้วลองยิงไปที่ IP ของ docker host เอง พอร์ต 514/udp แล้วเราลองดู log ผ่านใน docker container

จบฮะ

 

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *