Skip to content

Commit

Permalink
Merge pull request #13 from perhamm/master
Browse files Browse the repository at this point in the history
add metrics
  • Loading branch information
uzhinskiy authored Sep 4, 2024
2 parents 0ef4d2d + 9516276 commit 38f5ab4
Showing 1 changed file with 28 additions and 9 deletions.
37 changes: 28 additions & 9 deletions collector/cluster-settings.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,9 @@ type ClusterSettingsCollector struct {
client *Client
logger *logrus.Logger

excludeExists *prometheus.Desc
maxShardsPerNode *prometheus.Desc
excludeExists *prometheus.Desc
maxShardsPerNode *prometheus.Desc
totalShardsPerNodeExists *prometheus.Desc
}

func NewClusterSettingsCollector(logger *logrus.Logger, client *Client, labels, labels_group []string, datepattern string,
Expand All @@ -25,17 +26,21 @@ func NewClusterSettingsCollector(logger *logrus.Logger, client *Client, labels,
prometheus.BuildFQName(namespace, "exclude", "exists"),
"Exclude exists in cluster settings", labels, constLabels,
),
totalShardsPerNodeExists: prometheus.NewDesc(
prometheus.BuildFQName(namespace, "total_shards_per_node", "exists"),
"total_shards_per_node exists in cluster settings", labels, constLabels,
),
maxShardsPerNode: prometheus.NewDesc(
prometheus.BuildFQName(namespace, "clustersettings_stats", "max_shards_per_node"),
"Current maximum number of shards per node setting.",
nil, nil,
"Current maximum number of shards per node setting.", labels, constLabels,
),
}
}

func (c *ClusterSettingsCollector) Describe(ch chan<- *prometheus.Desc) {
ch <- c.excludeExists
ch <- c.maxShardsPerNode
ch <- c.totalShardsPerNodeExists
}

func (c *ClusterSettingsCollector) Collect(ch chan<- prometheus.Metric) {
Expand All @@ -58,6 +63,20 @@ func (c *ClusterSettingsCollector) Collect(ch chan<- prometheus.Metric) {
ch <- prometheus.MustNewConstMetric(c.excludeExists, prometheus.CounterValue, 0, "transient")
}

path = "persistent.cluster.routing.allocation.total_shards_per_node"
if _, ok := walk(settings, path); ok {
ch <- prometheus.MustNewConstMetric(c.totalShardsPerNodeExists, prometheus.CounterValue, 1, "persistent")
} else {
ch <- prometheus.MustNewConstMetric(c.totalShardsPerNodeExists, prometheus.CounterValue, 0, "persistent")
}

path = "transient.cluster.routing.allocation.total_shards_per_node"
if _, ok := walk(settings, path); ok {
ch <- prometheus.MustNewConstMetric(c.totalShardsPerNodeExists, prometheus.CounterValue, 1, "transient")
} else {
ch <- prometheus.MustNewConstMetric(c.totalShardsPerNodeExists, prometheus.CounterValue, 0, "transient")
}

path = "persistent.cluster.max_shards_per_node"
if count, ok := walk(settings, path); ok {
if v, ok := count.(string); ok {
Expand All @@ -68,15 +87,15 @@ func (c *ClusterSettingsCollector) Collect(ch chan<- prometheus.Metric) {
if v, ok := count_transient.(string); ok {
maxShardsPerNodeTransient, err := strconv.ParseInt(v, 10, 64)
if err == nil {
ch <- prometheus.MustNewConstMetric(c.maxShardsPerNode, prometheus.GaugeValue, float64(maxShardsPerNodeTransient))
ch <- prometheus.MustNewConstMetric(c.maxShardsPerNode, prometheus.GaugeValue, float64(maxShardsPerNodeTransient), "transient")
} else {
ch <- prometheus.MustNewConstMetric(c.maxShardsPerNode, prometheus.GaugeValue, float64(maxShardsPerNode))
ch <- prometheus.MustNewConstMetric(c.maxShardsPerNode, prometheus.GaugeValue, float64(maxShardsPerNode), "persistent")
}
} else {
ch <- prometheus.MustNewConstMetric(c.maxShardsPerNode, prometheus.GaugeValue, float64(maxShardsPerNode))
ch <- prometheus.MustNewConstMetric(c.maxShardsPerNode, prometheus.GaugeValue, float64(maxShardsPerNode), "persistent")
}
} else {
ch <- prometheus.MustNewConstMetric(c.maxShardsPerNode, prometheus.GaugeValue, float64(maxShardsPerNode))
ch <- prometheus.MustNewConstMetric(c.maxShardsPerNode, prometheus.GaugeValue, float64(maxShardsPerNode), "persistent")
}
} else {
c.logger.Errorf("got invalid %q value: %#v", path, count)
Expand All @@ -85,7 +104,7 @@ func (c *ClusterSettingsCollector) Collect(ch chan<- prometheus.Metric) {
c.logger.Errorf("got invalid %q value: %#v", path, count)
}
} else {
ch <- prometheus.MustNewConstMetric(c.maxShardsPerNode, prometheus.GaugeValue, 1000.0)
ch <- prometheus.MustNewConstMetric(c.maxShardsPerNode, prometheus.GaugeValue, 1000.0, "default")
}

}

0 comments on commit 38f5ab4

Please sign in to comment.