1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- // Copyright (C) 2025 The Syncthing Authors.
- //
- // This Source Code Form is subject to the terms of the Mozilla Public
- // License, v. 2.0. If a copy of the MPL was not distributed with this file,
- // You can obtain one at https://mozilla.org/MPL/2.0/.
- package config
- import (
- "strconv"
- "github.com/prometheus/client_golang/prometheus"
- )
- // RegisterInfoMetrics registers Prometheus metrics for the given config
- // wrapper.
- func RegisterInfoMetrics(cfg Wrapper) {
- prometheus.DefaultRegisterer.MustRegister(prometheus.CollectorFunc((&folderInfoMetric{cfg}).Collect))
- prometheus.DefaultRegisterer.MustRegister(prometheus.CollectorFunc((&folderDeviceMetric{cfg}).Collect))
- }
- type folderInfoMetric struct {
- cfg Wrapper
- }
- var folderInfoMetricDesc = prometheus.NewDesc(
- "syncthing_config_folder_info",
- "Provides additional information labels on folders",
- []string{"folder", "label", "type", "path", "paused"},
- nil,
- )
- func (m *folderInfoMetric) Collect(ch chan<- prometheus.Metric) {
- for _, folder := range m.cfg.FolderList() {
- ch <- prometheus.MustNewConstMetric(
- folderInfoMetricDesc,
- prometheus.GaugeValue, 1,
- folder.ID, folder.Label, folder.Type.String(), folder.Path, strconv.FormatBool(folder.Paused),
- )
- }
- }
- type folderDeviceMetric struct {
- cfg Wrapper
- }
- var folderDeviceMetricDesc = prometheus.NewDesc(
- "syncthing_config_device_info",
- "Provides additional information labels on devices",
- []string{"device", "name", "introducer", "paused", "untrusted"},
- nil,
- )
- func (m *folderDeviceMetric) Collect(ch chan<- prometheus.Metric) {
- for _, device := range m.cfg.DeviceList() {
- ch <- prometheus.MustNewConstMetric(
- folderDeviceMetricDesc,
- prometheus.GaugeValue, 1,
- device.DeviceID.String(), device.Name, strconv.FormatBool(device.Introducer), strconv.FormatBool(device.Paused), strconv.FormatBool(device.Untrusted),
- )
- }
- }
|