я behnam hasanbeygi mlops of fanap-soft, мы работаем над машинным обучением и проектами НЛП.
мой TL (руководитель группы) попросил меня реализовать мониторинг для отображения количества графической памяти для каждого пользователя, давайте начнем:
требования:
1-прометей стек(прометей+гранафа)
2-прометейный push-шлюз
поскольку я использую докер, я написал файл для создания докеров, который вы можете использовать:
после этого ваш мониторинг реализации завершен, идите и настройте свой prometheus следующим образом
cd YOUR_MONITORING_DIR/prometheus
vim prometheus.yml
# моя глобальная конфигурация
global:
scrape_interval: 15s # Установите интервал очистки на каждые 15 секунд. По умолчанию — каждые 1 минуту.
valuation_interval: 15s # Оценивать правила каждые 15 секунд. По умолчанию — каждые 1 минуту.
# scrape_timeout установлен на глобальное значение по умолчанию (10 с).
# Конфигурация Alertmanager
alerting:
alertmanagers:
— static_configs:
— target:
# — alertmanager:9093
# Загружать правила один раз и периодически оценивать их в соответствии с глобальным ‘evaluation_interval’.
rule_files:
# — «first_rules.yml»
# — «second_rules.yml»
# Конфигурация парсинга, содержащая только одну конечную точку для парсинга:
# Вот это сам Prometheus.
scrape_configs:
# Имя задания добавляется в виде метки `job=‹job_name›` к любой временной серии взято из этого конфига.
— job_name: 'prometheus'
# metrics_path по умолчанию "/metrics"
# схема по умолчанию "http".
static_configs:
— цели: [‘localhost:9090’]
— job_name: ‘pushgateway’
static_configs:
— цели: [‘YOUR_DOCKER_SERVER_IP:9091’]
и проверьте, что ваш сервер prometheus работает нормально, а путь pushgate находится в ваших целях и UP.
Что ж.
создайте такой файл == { nvi } или что угодно.
вим нви
#!/bin/bash
proc_lines=$(nvidia-smi | egrep «MiB \|$»)
users=$(echo «$proc_lines» | awk '{print $3}' | xargs - n 1 ps -o user:20 — без заголовка -p)
awk 'BEGIN {s=-999} NR==FNR {u[NR]=$1; next}
{ if ($3=="GPU")
s = 0;
if (u[s-2])
{print $0 " Пользователь: " u[ s-2]}
else
print $0; s=s+1
}’ ‹(эхо «$users») ‹(nvidia-smi)
сохраните этот файл.
дайте ему разрешение 777:
sudo chmode 777 nvi
если вы запустите этот скрипт bash, вы увидите пользователя, добавленного к nvidia-smi
после этого mv это в /usr/local/bin
мв нви /usr/местные/бен
и готово, вы создаете пользовательскую команду для использования в prometheus.
создайте такой файл {RAM.sh} или что-нибудь еще.
vim RAM.sh
#!/bin/bash
PATH="ВАШ_LINUX_PATH"
z=$(nvi)
while read -rz
do
var=$var$(awk ' $4=="G" {print "Push_gpu_usage{process=\""$5'\",USER=\""$9'\"}",$6-Mib}');
выполнено ‹‹‹ “$ z"
curl -X POST -H "Content-Type: text/plain" — данные "$var
" "http://ВАШ_СЕРВЕР_IP:9091/metrics/job/gpu/instance/"machine
:wq и сохраните его
для PATH == echo $PATH (в вашей оболочке)
дайте ему 777 разрешение на этот файл
sudo chmode 777 RAM.sh
вы можете запустить его == ./RAM.sh
см. адрес вашего пушгейта == http://ВАШ_IP:9091
проверьте его, и вы увидите свой параметр
после этого поместите его в crontab
кронтаб -е
- * * * * * /ваш_каталог/RAM.sh
создайте дашборд в garafana и наслаждайтесь.