Go언어 golang

golang Syslog server / Go언어 Syslog collector #1

미래의 고 2023. 3. 10. 21:55
가끔 Syslog 수집이 필요한 때가 간혹 있습니다.
 
Syslog Agent가 정상적으로 syslog를 보내는지 시험이 필요할 때 가볍게 돌릴만한 소스를 만들어 볼까 합니다.

 

간단한 syslog gen 소스를 이용하였습니다.
 
이번 포스팅에서는 syslog를 받은 후 간단한 출력만 하고 다음번에 살을 붙여보려 합니다.

 

package main

import (
   "fmt"
   "net"
)

func main() {
   var ServerAddr *net.UDPAddr
   var err error

   ServerAddr, err = net.ResolveUDPAddr("udp", "0.0.0.0:514")
   if err != nil {
      fmt.Println(err.Error())
      panic(err)
   }

   ServerConn, err := net.ListenUDP("udp", ServerAddr)
   if err != nil {
      fmt.Println(err.Error())
      panic(err)
   }
   defer ServerConn.Close()

   serverConn := ServerConn

   buf := make([]byte, 65535)

   for {
      n, addr, _ := serverConn.ReadFromUDP(buf)
      if n != 0 {
         host := addr.IP.String()
         log := string(buf[:n])
         fmt.Print(host, "||", log)
      }
   }
}