Snipeit-exporter

Сервис для сбора метрик в формате Prometheus из сервиса snipe-it

Язык разработки:

  • Go

Использование и конфигурирование сервиса

В проекте для сборки docker-образа используется скрипт build.sh
Скрипт может принимать аргументы:

./build.sh <NameImage>

При запуске скрипта без аргументов формируется образ с именем 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.

GitHub

View Github