@@ -17,8 +17,10 @@ package agent
17
17
import (
18
18
"bytes"
19
19
"context"
20
+ "fmt"
20
21
"time"
21
22
23
+ "github.com/go-logr/logr"
22
24
"gopkg.in/yaml.v3"
23
25
24
26
"github.com/open-telemetry/opentelemetry-operator/cmd/operator-opamp-bridge/metrics"
@@ -35,7 +37,7 @@ import (
35
37
)
36
38
37
39
type Agent struct {
38
- logger types .Logger
40
+ logger logr .Logger
39
41
40
42
appliedKeys map [collectorKey ]bool
41
43
startTime uint64
@@ -47,12 +49,12 @@ type Agent struct {
47
49
48
50
opampClient client.OpAMPClient
49
51
metricReporter * metrics.MetricReporter
50
- config config.Config
52
+ config * config.Config
51
53
applier operator.ConfigApplier
52
54
remoteConfigEnabled bool
53
55
}
54
56
55
- func NewAgent (logger types .Logger , applier operator.ConfigApplier , config config.Config , opampClient client.OpAMPClient ) * Agent {
57
+ func NewAgent (logger logr .Logger , applier operator.ConfigApplier , config * config.Config , opampClient client.OpAMPClient ) * Agent {
56
58
agent := & Agent {
57
59
config : config ,
58
60
applier : applier ,
@@ -64,8 +66,10 @@ func NewAgent(logger types.Logger, applier operator.ConfigApplier, config config
64
66
opampClient : opampClient ,
65
67
}
66
68
67
- agent .logger .Debugf ("Agent created, id=%v, type=%s, version=%s." ,
68
- agent .instanceId .String (), config .GetAgentType (), config .GetAgentVersion ())
69
+ agent .logger .V (3 ).Info ("Agent created" ,
70
+ "instanceId" , agent .instanceId .String (),
71
+ "agentType" , config .GetAgentType (),
72
+ "agentVersion" , config .GetAgentVersion ())
69
73
70
74
return agent
71
75
}
@@ -81,17 +85,17 @@ func (agent *Agent) getHealth() *protobufs.AgentHealth {
81
85
82
86
// onConnect is called when an agent is successfully connected to a server.
83
87
func (agent * Agent ) onConnect () {
84
- agent .logger .Debugf ("Connected to the server." )
88
+ agent .logger .V ( 3 ). Info ("Connected to the server." )
85
89
}
86
90
87
91
// onConnectFailed is called when an agent was unable to connect to a server.
88
92
func (agent * Agent ) onConnectFailed (err error ) {
89
- agent .logger .Errorf ( "Failed to connect to the server: %v" , err )
93
+ agent .logger .Error ( err , "failed to connect to the server" )
90
94
}
91
95
92
96
// onError is called when an agent receives an error response from the server.
93
97
func (agent * Agent ) onError (err * protobufs.ServerErrorResponse ) {
94
- agent .logger .Errorf ("Server returned an error response: %v" , err . ErrorMessage )
98
+ agent .logger .Error ( fmt . Errorf (err . GetErrorMessage ()), "server returned an error response" )
95
99
}
96
100
97
101
// saveRemoteConfigStatus receives a status from the server when the server sets a remote configuration.
@@ -126,24 +130,24 @@ func (agent *Agent) Start() error {
126
130
return err
127
131
}
128
132
129
- agent .logger .Debugf ("Starting OpAMP client..." )
133
+ agent .logger .V ( 3 ). Info ("Starting OpAMP client..." )
130
134
131
135
err = agent .opampClient .Start (context .Background (), settings )
132
136
if err != nil {
133
137
return err
134
138
}
135
139
136
- agent .logger .Debugf ("OpAMP Client started." )
140
+ agent .logger .V ( 3 ). Info ("OpAMP Client started." )
137
141
138
142
return nil
139
143
}
140
144
141
145
// updateAgentIdentity receives a new instanced Id from the remote server and updates the agent's instanceID field.
142
146
// The meter will be reinitialized by the onMessage function.
143
147
func (agent * Agent ) updateAgentIdentity (instanceId ulid.ULID ) {
144
- agent .logger .Debugf ( "Agent identity is being changed from id=%v to id=%v " ,
145
- agent .instanceId .String (),
146
- instanceId .String ())
148
+ agent .logger .V ( 3 ). Info ( "Agent identity is being changed" ,
149
+ "old instanceId" , agent .instanceId .String (),
150
+ "new instanceid" , instanceId .String ())
147
151
agent .instanceId = instanceId
148
152
}
149
153
@@ -152,14 +156,14 @@ func (agent *Agent) updateAgentIdentity(instanceId ulid.ULID) {
152
156
func (agent * Agent ) getEffectiveConfig (ctx context.Context ) (* protobufs.EffectiveConfig , error ) {
153
157
instances , err := agent .applier .ListInstances ()
154
158
if err != nil {
155
- agent .logger .Errorf ( "couldn't list instances", err )
159
+ agent .logger .Error ( err , "failed to list instances" )
156
160
return nil , err
157
161
}
158
162
instanceMap := map [string ]* protobufs.AgentConfigFile {}
159
163
for _ , instance := range instances {
160
164
marshaled , err := yaml .Marshal (instance )
161
165
if err != nil {
162
- agent .logger .Errorf ( "couldn't marshal collector configuration" , err )
166
+ agent .logger .Error ( err , "failed to marhsal config" )
163
167
return nil , err
164
168
}
165
169
mapKey := newCollectorKey (instance .GetName (), instance .GetNamespace ())
@@ -181,7 +185,7 @@ func (agent *Agent) getEffectiveConfig(ctx context.Context) (*protobufs.Effectiv
181
185
func (agent * Agent ) initMeter (settings * protobufs.TelemetryConnectionSettings ) {
182
186
reporter , err := metrics .NewMetricReporter (agent .logger , settings , agent .config .GetAgentType (), agent .config .GetAgentVersion (), agent .instanceId )
183
187
if err != nil {
184
- agent .logger .Errorf ( "Cannot collect metrics: %v" , err )
188
+ agent .logger .Error ( err , "failed to create metric reporter" )
185
189
return
186
190
}
187
191
@@ -244,11 +248,11 @@ func (agent *Agent) applyRemoteConfig(config *protobufs.AgentRemoteConfig) (*pro
244
248
245
249
// Shutdown will stop the OpAMP client gracefully.
246
250
func (agent * Agent ) Shutdown () {
247
- agent .logger .Debugf ("Agent shutting down..." )
251
+ agent .logger .V ( 3 ). Info ("Agent shutting down..." )
248
252
if agent .opampClient != nil {
249
253
err := agent .opampClient .Stop (context .Background ())
250
254
if err != nil {
251
- agent .logger .Errorf ( err . Error () )
255
+ agent .logger .Error (err , "failed to stop client" )
252
256
}
253
257
}
254
258
if agent .metricReporter != nil {
@@ -265,16 +269,16 @@ func (agent *Agent) onMessage(ctx context.Context, msg *types.MessageData) {
265
269
var err error
266
270
status , err := agent .applyRemoteConfig (msg .RemoteConfig )
267
271
if err != nil {
268
- agent .logger .Errorf ( err . Error () )
272
+ agent .logger .Error (err , "failed to apply remote config" )
269
273
}
270
274
err = agent .opampClient .SetRemoteConfigStatus (status )
271
275
if err != nil {
272
- agent .logger .Errorf ( err . Error () )
276
+ agent .logger .Error (err , "failed to set remote config status" )
273
277
return
274
278
}
275
279
err = agent .opampClient .UpdateEffectiveConfig (ctx )
276
280
if err != nil {
277
- agent .logger .Errorf ( err . Error () )
281
+ agent .logger .Error (err , "failed to update effective config" )
278
282
}
279
283
}
280
284
@@ -283,7 +287,7 @@ func (agent *Agent) onMessage(ctx context.Context, msg *types.MessageData) {
283
287
if msg .AgentIdentification != nil {
284
288
newInstanceId , err := ulid .Parse (msg .AgentIdentification .NewInstanceUid )
285
289
if err != nil {
286
- agent .logger .Errorf ( err . Error () )
290
+ agent .logger .Error (err , "couldn't parse instance UID" )
287
291
return
288
292
}
289
293
agent .updateAgentIdentity (newInstanceId )
0 commit comments