Skip to content

Commit e0c081c

Browse files
committed
misc
1 parent cf524bb commit e0c081c

File tree

6 files changed

+52
-9
lines changed

6 files changed

+52
-9
lines changed

scouterx/conf/configure.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ type Configure struct {
2121
lastModified time.Time
2222

2323
_trace bool
24+
TraceObjSend bool
2425

2526
SendQueueSize int
2627
ObjHash int32
@@ -238,6 +239,7 @@ func (conf *Configure) addToConf(props *properties.Properties) {
238239

239240
conf.resetObjNameAndType(props)
240241
conf._trace = props.GetBool("_trace", false)
242+
conf.TraceObjSend = props.GetBool("trace_obj_send", false)
241243

242244
conf.SendQueueSize = props.GetInt("send_queue_size", 3000)
243245

scouterx/netio/tcpclient/tcpclient.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ func (c *TCPClient) Prepare() bool {
4747
logger.Info.Printf("[scouter]tcp prepare %s, %d", c.host, c.port)
4848
conn0, err := net.DialTimeout("tcp", c.host+":"+strconv.Itoa(c.port), time.Duration(c.connectionTimeout)*time.Millisecond)
4949
if err != nil {
50-
logger.Error.Printf("[scouter][err]%v", err)
50+
logger.Error.Printf("[scouter][err]%v\n", err)
5151
c.conn = nil
5252
return false
5353
}

scouterx/netio/tcpclient/tcpmanager.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ func startTcp() {
2525
if client.Prepare() {
2626
err := client.Process()
2727
if err != nil {
28-
logger.Error.Printf("[scouter][err]connection to collector: %v", err)
28+
logger.Error.Printf("[scouter][err]connection to collector: %v\n", err)
2929
time.Sleep(time.Duration(min(sleep, maxSleep)) * time.Millisecond)
3030
sleep = sleep * 2
3131
if sleep > maxSleep {

scouterx/netio/udpclient/udpclient.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,22 +41,23 @@ func (udpClient *UDPClient) open() error {
4141
s, err := net.ResolveUDPAddr("udp", address)
4242

4343
if err != nil {
44-
logger.Error.Printf("can't initialize udp client. %s\n", err.Error())
44+
logger.Error.Printf("[scouter] can't resolve udp client. %s\n", err.Error())
4545
return err
4646
}
4747
udpClient.Conn, err = net.DialUDP("udp", nil, s)
4848
if err != nil {
49-
logger.Error.Printf("can't initialize udp client. %s\n", err.Error())
49+
logger.Error.Printf("[scouter] can't dialup udp client. %s\n", err.Error())
5050
return err
5151
}
5252
return nil
5353
}
5454

5555
func (udpClient *UDPClient) close() {
56-
udpClient.Conn.Close()
56+
if udpClient.Conn != nil {
57+
udpClient.Conn.Close()
58+
}
5759
}
5860

59-
6061
func (udpClient *UDPClient) writeMTU(data []byte, packetSize int) bool {
6162
if udpClient.Conn == nil {
6263
return false

scouterx/netio/udpsender/udpsender.go

Lines changed: 38 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,11 @@ import (
1515
var once sync.Once
1616
var ac = conf.GetInstance()
1717

18+
var udpObjHash int32
19+
var serverAddr string
20+
var udpServerPort int
21+
var udpMaxBytes int
22+
1823
type UDPSender struct {
1924
udpChannel chan []byte
2025
running bool
@@ -25,17 +30,42 @@ var udpSender *UDPSender
2530

2631
func GetInstance() *UDPSender {
2732
once.Do(func() {
33+
serverAddr = ac.NetCollectorIP
34+
udpServerPort = ac.NetCollectorUDPPort
35+
udpMaxBytes = ac.UDPMaxBytes
36+
2837
udpSender = new(UDPSender)
2938
udpSender.udpChannel = channelfactory.GetUDPChannel()
3039
udpSender.running = true
31-
udpSender.udpClient = udpclient.New(ac.NetCollectorIP, ac.NetCollectorUDPPort)
32-
udpSender.udpClient.SetUDPMaxBytes(ac.UDPMaxBytes)
33-
udpSender.running = true
40+
udpSender.udpClient = udpclient.New(serverAddr, udpServerPort)
41+
udpSender.udpClient.SetUDPMaxBytes(udpMaxBytes)
3442
go udpSender.run()
43+
go reloadUdpSender()
3544
})
3645
return udpSender
3746
}
3847

48+
func reloadUdpSender() {
49+
for {
50+
time.Sleep(1000)
51+
if serverAddr != ac.NetCollectorIP || udpServerPort != ac.NetCollectorUDPPort || udpMaxBytes != ac.UDPMaxBytes {
52+
serverAddr = ac.NetCollectorIP
53+
udpServerPort = ac.NetCollectorUDPPort
54+
udpMaxBytes = ac.UDPMaxBytes
55+
56+
udpSender.running = true
57+
prevClient := udpSender.udpClient
58+
udpClient := udpclient.New(serverAddr, udpServerPort)
59+
udpClient.SetUDPMaxBytes(udpMaxBytes)
60+
udpSender.udpClient = udpClient
61+
62+
if prevClient.Conn != nil {
63+
prevClient.Conn.Close()
64+
}
65+
}
66+
}
67+
}
68+
3969
func (udpSender *UDPSender) AddPack(pack netdata.Pack) {
4070
writePack, _ := netdata.NewDataOutputX(nil).WritePack(pack)
4171
bytes := writePack.Bytes()
@@ -55,6 +85,11 @@ func (udpSender *UDPSender) AddBuffer(buffer []byte) {
5585
}
5686

5787
func (udpSender *UDPSender) SendPackDirect(pack netdata.Pack) {
88+
if ac.TraceObjSend {
89+
if p, ok := pack.(*netdata.ObjectPack); ok {
90+
logger.Info.Printf("[scouter] SendPackDirect[ObjPack], to:%s, pack:%s", udpSender.udpClient.Conn.RemoteAddr(), p.ToString())
91+
}
92+
}
5893
writePack, _ := netdata.NewDataOutputX(nil).WritePack(pack)
5994
bytes := writePack.Bytes()
6095
go udpSender.udpClient.WriteBuffer(bytes)

scouterx/task/agenttask/agenttask.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package agenttask
22

33
import (
4+
"github.com/scouter-contrib/scouter-agent-golang/scouterx/common/logger"
45
"github.com/scouter-contrib/scouter-agent-golang/scouterx/conf"
56
"github.com/scouter-contrib/scouter-agent-golang/scouterx/netio"
67
"github.com/scouter-contrib/scouter-agent-golang/scouterx/common/netdata"
@@ -28,5 +29,9 @@ func SendObjPack() {
2829
objPack.ObjHash = objHash
2930
objPack.ObjType = ac.ObjType
3031
objPack.Version = "0.0.0"
32+
33+
if ac.TraceObjSend {
34+
logger.Info.Printf("[scouter] SendObjPack: %s, %d, %s", objName, objHash, ac.ObjType)
35+
}
3136
netio.SendPackDirect(objPack)
3237
}

0 commit comments

Comments
 (0)