|
40 | 40 | configurationOverride = false
|
41 | 41 | )
|
42 | 42 |
|
| 43 | +func GetServerVersion(httpClient *http.Client, ctx *context.Ctx) (*GraylogVersion, error) { |
| 44 | + // In case of an error just assume 4.0.0 |
| 45 | + fallbackVersion, _ := NewGraylogVersion("4.0.0") |
| 46 | + |
| 47 | + c := rest.NewClient(httpClient, ctx) |
| 48 | + c.BaseURL = ctx.ServerUrl |
| 49 | + r, err := c.NewRequest("GET", "/", nil, nil) |
| 50 | + if err != nil { |
| 51 | + log.Errorf("Cannot retrieve server version %v", err) |
| 52 | + return fallbackVersion, err |
| 53 | + } |
| 54 | + versionResponse := graylog.ServerVersionResponse{} |
| 55 | + resp, err := c.Do(r, &versionResponse) |
| 56 | + if err != nil || resp == nil { |
| 57 | + log.Errorf("Error fetching server version %v", err) |
| 58 | + return fallbackVersion, err |
| 59 | + } |
| 60 | + return NewGraylogVersion(versionResponse.Version) |
| 61 | +} |
| 62 | + |
43 | 63 | func RequestBackendList(httpClient *http.Client, checksum string, ctx *context.Ctx) (graylog.ResponseBackendList, error) {
|
44 | 64 | c := rest.NewClient(httpClient, ctx)
|
45 | 65 | c.BaseURL = ctx.ServerUrl
|
@@ -137,15 +157,14 @@ func RequestConfiguration(
|
137 | 157 | return configurationResponse, nil
|
138 | 158 | }
|
139 | 159 |
|
140 |
| -func UpdateRegistration(httpClient *http.Client, checksum string, ctx *context.Ctx, status *graylog.StatusRequest) (graylog.ResponseCollectorRegistration, error) { |
| 160 | +func UpdateRegistration(httpClient *http.Client, checksum string, ctx *context.Ctx, serverVersion *GraylogVersion, status *graylog.StatusRequest) (graylog.ResponseCollectorRegistration, error) { |
141 | 161 | c := rest.NewClient(httpClient, ctx)
|
142 | 162 | c.BaseURL = ctx.ServerUrl
|
143 | 163 |
|
144 | 164 | registration := graylog.RegistrationRequest{}
|
145 | 165 |
|
146 | 166 | registration.NodeName = ctx.UserConfig.NodeName
|
147 | 167 | registration.NodeDetails.OperatingSystem = common.GetSystemName()
|
148 |
| - registration.NodeDetails.Tags = ctx.UserConfig.Tags |
149 | 168 |
|
150 | 169 | if ctx.UserConfig.SendStatus {
|
151 | 170 | metrics := &graylog.MetricsRequest{
|
@@ -173,6 +192,10 @@ func UpdateRegistration(httpClient *http.Client, checksum string, ctx *context.C
|
173 | 192 | }
|
174 | 193 | }
|
175 | 194 | }
|
| 195 | + if serverVersion.SupportsExtendedNodeDetails() { |
| 196 | + registration.NodeDetails.CollectorConfigurationDirectory = ctx.UserConfig.CollectorConfigurationDirectory |
| 197 | + registration.NodeDetails.Tags = ctx.UserConfig.Tags |
| 198 | + } |
176 | 199 |
|
177 | 200 | r, err := c.NewRequest("PUT", "/sidecars/"+ctx.NodeId, nil, registration)
|
178 | 201 | if checksum != "" {
|
@@ -255,18 +278,24 @@ func GetTlsConfig(ctx *context.Ctx) *tls.Config {
|
255 | 278 | return tlsConfig
|
256 | 279 | }
|
257 | 280 |
|
258 |
| -func NewStatusRequest() graylog.StatusRequest { |
| 281 | +func NewStatusRequest(serverVersion *GraylogVersion) graylog.StatusRequest { |
259 | 282 | statusRequest := graylog.StatusRequest{Backends: make([]graylog.StatusRequestBackend, 0)}
|
260 | 283 | combinedStatus := backends.StatusUnknown
|
261 | 284 | runningCount, stoppedCount, errorCount := 0, 0, 0
|
262 | 285 |
|
263 | 286 | for id, runner := range daemon.Daemon.Runner {
|
| 287 | + collectorId := strings.Split(id, "-")[0] |
| 288 | + configurationId := "" |
| 289 | + if serverVersion.SupportsMultipleBackends() { |
| 290 | + configurationId = strings.Split(id, "-")[1] |
| 291 | + } |
264 | 292 | backendStatus := runner.GetBackend().Status()
|
265 | 293 | statusRequest.Backends = append(statusRequest.Backends, graylog.StatusRequestBackend{
|
266 |
| - Id: id, |
267 |
| - Status: backendStatus.Status, |
268 |
| - Message: backendStatus.Message, |
269 |
| - VerboseMessage: backendStatus.VerboseMessage, |
| 294 | + CollectorId: collectorId, |
| 295 | + ConfigurationId: configurationId, |
| 296 | + Status: backendStatus.Status, |
| 297 | + Message: backendStatus.Message, |
| 298 | + VerboseMessage: backendStatus.VerboseMessage, |
270 | 299 | })
|
271 | 300 | switch backendStatus.Status {
|
272 | 301 | case backends.StatusRunning:
|
|
0 commit comments