diff --git a/pkg/apiserver/apic.go b/pkg/apiserver/apic.go index dd01e311f..ac59d3128 100644 --- a/pkg/apiserver/apic.go +++ b/pkg/apiserver/apic.go @@ -366,48 +366,66 @@ func (a *apic) Pull() error { } } +func (a *apic) GetMetrics() (*models.Metrics, error) { + version := cwversion.VersionStr() + metric := &models.Metrics{ + ApilVersion: &version, + Machines: make([]*models.MetricsSoftInfo, 0), + Bouncers: make([]*models.MetricsSoftInfo, 0), + } + machines, err := a.dbClient.ListMachines() + if err != nil { + return metric, err + } + bouncers, err := a.dbClient.ListBouncers() + if err != nil { + return metric, err + } + for _, machine := range machines { + m := &models.MetricsSoftInfo{ + Version: machine.Version, + Name: machine.MachineId, + } + metric.Machines = append(metric.Machines, m) + } + + for _, bouncer := range bouncers { + m := &models.MetricsSoftInfo{ + Version: bouncer.Version, + Name: bouncer.Type, + } + metric.Bouncers = append(metric.Bouncers, m) + } + return metric, nil +} + func (a *apic) SendMetrics() error { defer types.CatchPanic("lapi/metricsToAPIC") + metrics, err := a.GetMetrics() + if err != nil { + log.Errorf("unable to get metrics (%s), will retry", err) + } + _, _, err = a.apiClient.Metrics.Add(context.Background(), metrics) + if err != nil { + log.Errorf("unable to send metrics (%s), will retry", err) + } + log.Infof("capi metrics: metrics sent successfully") log.Infof("start crowdsec api send metrics (interval: %s)", MetricsInterval) ticker := time.NewTicker(a.metricsInterval) for { select { case <-ticker.C: - version := cwversion.VersionStr() - metric := &models.Metrics{ - ApilVersion: &version, - Machines: make([]*models.MetricsSoftInfo, 0), - Bouncers: make([]*models.MetricsSoftInfo, 0), - } - machines, err := a.dbClient.ListMachines() + metrics, err := a.GetMetrics() if err != nil { - return err + log.Errorf("unable to get metrics (%s), will retry", err) } - bouncers, err := a.dbClient.ListBouncers() + _, _, err = a.apiClient.Metrics.Add(context.Background(), metrics) if err != nil { - return err + log.Errorf("capi metrics: failed: %s", err.Error()) + } else { + log.Infof("capi metrics: metrics sent successfully") } - for _, machine := range machines { - m := &models.MetricsSoftInfo{ - Version: machine.Version, - Name: machine.MachineId, - } - metric.Machines = append(metric.Machines, m) - } - - for _, bouncer := range bouncers { - m := &models.MetricsSoftInfo{ - Version: bouncer.Version, - Name: bouncer.Type, - } - metric.Bouncers = append(metric.Bouncers, m) - } - _, _, err = a.apiClient.Metrics.Add(context.Background(), metric) - if err != nil { - return errors.Wrap(err, "sending metrics failed") - } - log.Infof("capi metrics: metrics sent successfully") case <-a.metricsTomb.Dying(): // if one apic routine is dying, do we kill the others? a.pullTomb.Kill(nil) a.pushTomb.Kill(nil) diff --git a/pkg/database/alerts.go b/pkg/database/alerts.go index 2a8352a2a..8a2be47b2 100644 --- a/pkg/database/alerts.go +++ b/pkg/database/alerts.go @@ -828,15 +828,15 @@ func (c *Client) FlushAlerts(MaxAge string, MaxItems int) error { var totalAlerts int var err error - c.Log.Info("Flushing orphan alerts") + c.Log.Debug("Flushing orphan alerts") c.FlushOrphans() - c.Log.Info("Done flushing orphan alerts") + c.Log.Debug("Done flushing orphan alerts") totalAlerts, err = c.TotalAlerts() if err != nil { c.Log.Warningf("FlushAlerts (max items count) : %s", err) return errors.Wrap(err, "unable to get alerts count") } - c.Log.Infof("FlushAlerts (Total alerts): %d", totalAlerts) + c.Log.Debugf("FlushAlerts (Total alerts): %d", totalAlerts) if MaxAge != "" { filter := map[string][]string{ "created_before": {MaxAge}, @@ -846,7 +846,7 @@ func (c *Client) FlushAlerts(MaxAge string, MaxItems int) error { c.Log.Warningf("FlushAlerts (max age) : %s", err) return errors.Wrapf(err, "unable to flush alerts with filter until: %s", MaxAge) } - c.Log.Infof("FlushAlerts (deleted max age alerts): %d", nbDeleted) + c.Log.Debugf("FlushAlerts (deleted max age alerts): %d", nbDeleted) deletedByAge = nbDeleted } if MaxItems > 0 { @@ -858,7 +858,7 @@ func (c *Client) FlushAlerts(MaxAge string, MaxItems int) error { } deleted := 0 for deleted < nbToDelete { - c.Log.Infof("FlushAlerts (before query with filter) to delete: %d", nbToDelete) + c.Log.Debugf("FlushAlerts (before query with filter) to delete: %d", nbToDelete) alerts, err := c.QueryAlertWithFilter(map[string][]string{ "sort": {"ASC"}, "limit": {strconv.Itoa(batchSize)},