Snipeit-exporter
Сервис для сбора метрик в формате Prometheus из сервиса snipe-it
Язык разработки:
- Go
Использование и конфигурирование сервиса
В проекте для сборки docker-образа используется скрипт build.sh
Скрипт может принимать аргументы:
./build.sh
При запуске скрипта без аргументов формируется образ с именем snipeit-exporter
Сервис конфигурируется через файл. Конфигурация сервиса по умолчанию берется из файла config.yml в рабочей директории или путь к конфигурации указывается в переменной окружения APP_CONFIG_PATH=/, пример: export APP_CONFIG_PATH=/app/config.yml
Имена метрик и фильтры по которым идёт отбор метрик задаются в файле конфигурации.
Пример конфигурации:
# Указание порта и пути по которым отдаются метрики
addr: ":80"
metricspath: "/metrics"
# Указание параметров подключения к сервису snipe-it
snipeit:
url: http://snipeit.local
apikey: key123
# Под ключами filters и metrics настраивается формирование метрик
# filters создает фильтр по которому идет отбор полей для метрик
filters:
category_ext_test_server:
field: "category.name"
value: "external test server"
category_storage:
field: "category.name"
value: "storage system"
environment_test:
field: "custom_fields.environment.value"
value: "test"
metrics:
- fqName: cap_asset_memory_bytes_total
help: description of the metric
labels:
- name: "environment"
value: "custom_fields.environment.value"
- name: "customer"
value: "custom_fields.customer.value"
- name: "model"
value: "model.name"
value: "custom_fields.ram.value"
# ratio указывается соотношение(множитель) на который умножается значение из snape-it
ratio: 1073741824
# filternames список списков с фильтрами которые применяются к выборке из snape-it для формирования метрик
# вертикальный элемент списка действует как логическое ИЛИ, горизонтальный как И
filternames:
- ["category_ext_test_server", "environment_test"]
- fqName: cap_asset_cpu_total
help: description of the metric
labels:
- name: "environment"
value: "custom_fields.environment.value"
- name: "customer"
value: "custom_fields.customer.value"
- name: "model"
value: "model.name"
value: "custom_fields.cpu.value"
filternames:
- ["category_ext_test_server", "environment_test"]
- fqName: cap_asset_disk_gbytes_total
help: description of the metric
labels:
- name: "environment"
value: "custom_fields.environment.value"
- name: "customer"
value: "custom_fields.customer.value"
- name: "model"
value: "model.name"
value: "custom_fields.available_disk_space.value"
ratio: 1024
filternames:
- ["category_storage", "environment_test"]
Разворачивание сервиса в кластере
В проекте есть директория helm для разворачивания сервиса в кластере kubernetes/openshift с помощью утилиты helm.