Skip to content
Snippets Groups Projects
Commit 9f43843b authored by David Fifield's avatar David Fifield
Browse files

Add -snmp-log option.

parent b63d2272
No related branches found
No related tags found
No related merge requests found
package snowflake_client
import (
"fmt"
"log"
"os"
"time"
"github.com/xtaci/kcp-go/v5"
)
const (
......@@ -14,6 +18,10 @@ type bytesLogger interface {
addInbound(int64)
}
var SNMPRunID [8]byte
var SNMPLogFile *os.File
var SNMPRecordCounter int64
// Default bytesLogger does nothing.
type bytesNullLogger struct{}
......@@ -52,6 +60,13 @@ func (b *bytesSyncLogger) log() {
outEvents = 0
inbound = 0
inEvents = 0
if SNMPLogFile != nil {
err := logSNMP(SNMPLogFile, SNMPRunID, SNMPRecordCounter)
SNMPRecordCounter++
if err != nil {
log.Printf("error logging SNMP: %v", err)
}
}
case amount := <-b.outboundChan:
outbound += amount
outEvents++
......@@ -69,3 +84,19 @@ func (b *bytesSyncLogger) addOutbound(amount int64) {
func (b *bytesSyncLogger) addInbound(amount int64) {
b.inboundChan <- amount
}
func logSNMP(f *os.File, runID [8]byte, counter int64) error {
_, err := fmt.Fprintf(f, "%x,%d,%s,%s\n", runID, counter, "Date", time.Now().UTC().Format(time.RFC3339))
if err != nil {
return err
}
labels := kcp.DefaultSnmp.Header()
values := kcp.DefaultSnmp.ToSlice()
for i := 0; i < len(labels) && i < len(values); i++ {
_, err := fmt.Fprintf(f, "%x,%d,%s,%s\n", runID, counter, labels[i], values[i])
if err != nil {
return err
}
}
return nil
}
......@@ -2,6 +2,7 @@
package main
import (
"crypto/rand"
"flag"
"fmt"
"io"
......@@ -160,6 +161,7 @@ func main() {
max := flag.Int("max", DefaultSnowflakeCapacity,
"capacity for number of multiplexed WebRTC peers")
versionFlag := flag.Bool("version", false, "display version info to stderr and quit")
snmpLogFilename := flag.String("snmp-log", "", "name of kcp-go SNMP log file")
// Deprecated
oldLogToStateDir := flag.Bool("logToStateDir", false, "use -log-to-state-dir instead")
......@@ -203,6 +205,20 @@ func main() {
log.SetOutput(&safelog.LogScrubber{Output: logOutput})
}
if *snmpLogFilename != "" {
var err error
sf.SNMPLogFile, err = os.OpenFile(*snmpLogFilename,
os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0600)
if err != nil {
log.Fatal(err)
}
_, err = rand.Read(sf.SNMPRunID[:])
if err != nil {
log.Fatal(err)
}
defer sf.SNMPLogFile.Close()
}
log.Printf("snowflake-client %s\n", version.GetVersion())
iceAddresses := strings.Split(strings.TrimSpace(*iceServersCommas), ",")
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment