ติดตั้ง 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
จบฮะ