From 2b408d94f42247af7e70be48b1dd146e52906a90 Mon Sep 17 00:00:00 2001 From: Boris Date: Fri, 22 Sep 2023 17:51:33 +0300 Subject: [PATCH 1/2] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D1=8F?= =?UTF-8?q?=D0=B5=D0=BC=20=D0=BD=D0=BE=D0=B2=D1=83=D1=8E=20=D0=BC=D0=B5?= =?UTF-8?q?=D1=82=D1=80=D0=B8=D0=BA=D1=83=20oneday=5Felasticsearch=5Fexclu?= =?UTF-8?q?de=5Fexists?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- collector/client.go | 23 +++++++++++++++++ collector/cluster-settings.go | 48 +++++++++++++++++++++++++++++++++++ collector/collector.go | 6 +++++ 3 files changed, 77 insertions(+) create mode 100644 collector/cluster-settings.go diff --git a/collector/client.go b/collector/client.go index efa8c37..60ccd24 100644 --- a/collector/client.go +++ b/collector/client.go @@ -138,3 +138,26 @@ func (c *Client) GetSettings(s []string) (map[string]interface{}, error) { return r, nil } + +func (c *Client) GetClusterSettings() (map[string]interface{}, error) { + c.logger.Debug("Getting cluster settings") + resp, err := c.es.Cluster.GetSettings( + c.es.Cluster.GetSettings.WithIncludeDefaults(true), + c.es.Cluster.GetSettings.WithFilterPath("persistent.cluster.routing.allocation.exclude"), + ) + if err != nil { + return nil, fmt.Errorf("error getting response: %s", err) + } + defer resp.Body.Close() + + if resp.IsError() { + return nil, fmt.Errorf("request failed: %v", resp.String()) + } + + var r map[string]interface{} + if err := json.NewDecoder(resp.Body).Decode(&r); err != nil { + return nil, err + } + + return r, nil +} diff --git a/collector/cluster-settings.go b/collector/cluster-settings.go new file mode 100644 index 0000000..98af24e --- /dev/null +++ b/collector/cluster-settings.go @@ -0,0 +1,48 @@ +package collector + +import ( + "fmt" + + "github.com/prometheus/client_golang/prometheus" + "github.com/sirupsen/logrus" +) + +type ClusterSettingsCollector struct { + client *Client + logger *logrus.Logger + + excludeExists *prometheus.Desc +} + +func NewClusterSettingsCollector(logger *logrus.Logger, client *Client, labels, labels_group []string, datepattern string, + constLabels prometheus.Labels) *ClusterSettingsCollector { + + fmt.Printf("labels: %v\n\n\nconstLabels: %v\n", labels, constLabels) + + return &ClusterSettingsCollector{ + client: client, + logger: logger, + excludeExists: prometheus.NewDesc( + prometheus.BuildFQName(namespace, "exclude", "exists"), + "Exclude exists in cluster settings", labels, constLabels, + ), + } +} + +func (c *ClusterSettingsCollector) Describe(ch chan<- *prometheus.Desc) { + ch <- c.excludeExists +} + +func (c *ClusterSettingsCollector) Collect(ch chan<- prometheus.Metric) { + settings, err := c.client.GetClusterSettings() + if err != nil { + c.logger.Fatalf("error getting indices settings: %v", err) + } + + if len(settings) == 0 { + ch <- prometheus.MustNewConstMetric(c.excludeExists, prometheus.CounterValue, 0, "persistent") + } else { + ch <- prometheus.MustNewConstMetric(c.excludeExists, prometheus.CounterValue, 1, "persistent") + } + +} diff --git a/collector/collector.go b/collector/collector.go index d2090f4..34872ec 100644 --- a/collector/collector.go +++ b/collector/collector.go @@ -18,6 +18,7 @@ var ( labels = []string{"index", "index_group"} labels_group = []string{"index_group"} slabels = []string{"repository"} + clabels = []string{"section"} ) func NewCollector(logger *logrus.Logger, address, project string, repo string, datepattern string, tlsClientConfig *tls.Config) error { @@ -54,6 +55,11 @@ func NewCollector(logger *logrus.Logger, address, project string, repo string, d return fmt.Errorf("error registering indices settings collector: %v", err) } + err = prometheus.Register(NewClusterSettingsCollector(logger, client, clabels, labels_group, datepattern, constLabels)) + if err != nil { + return fmt.Errorf("error registering indices settings collector: %v", err) + } + if repo != "" { err = prometheus.Register(NewSnapshotCollector(logger, client, repo, slabels, constLabels)) if err != nil { From 0132099e9e371e72814d6a7442c376b2eb683c02 Mon Sep 17 00:00:00 2001 From: Boris Date: Fri, 22 Sep 2023 17:58:39 +0300 Subject: [PATCH 2/2] =?UTF-8?q?=D0=A3=D0=B1=D1=80=D0=B0=D0=BB=20=D0=BE?= =?UTF-8?q?=D1=82=D0=BB=D0=B0=D0=B4=D0=BE=D1=87=D0=BD=D1=83=D1=8E=20=D0=B8?= =?UTF-8?q?=D0=BD=D1=84=D0=BE=D1=80=D0=BC=D0=B0=D1=86=D0=B8=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- collector/cluster-settings.go | 5 ----- 1 file changed, 5 deletions(-) diff --git a/collector/cluster-settings.go b/collector/cluster-settings.go index 98af24e..c161c03 100644 --- a/collector/cluster-settings.go +++ b/collector/cluster-settings.go @@ -1,8 +1,6 @@ package collector import ( - "fmt" - "github.com/prometheus/client_golang/prometheus" "github.com/sirupsen/logrus" ) @@ -17,8 +15,6 @@ type ClusterSettingsCollector struct { func NewClusterSettingsCollector(logger *logrus.Logger, client *Client, labels, labels_group []string, datepattern string, constLabels prometheus.Labels) *ClusterSettingsCollector { - fmt.Printf("labels: %v\n\n\nconstLabels: %v\n", labels, constLabels) - return &ClusterSettingsCollector{ client: client, logger: logger, @@ -44,5 +40,4 @@ func (c *ClusterSettingsCollector) Collect(ch chan<- prometheus.Metric) { } else { ch <- prometheus.MustNewConstMetric(c.excludeExists, prometheus.CounterValue, 1, "persistent") } - }