4. Постановка на мониторинг серверов под управлением ОС Linux/Windows

4. Постановка на мониторинг серверов под управлением ОС Linux/Windows

4.1 Общая постановка на мониторинг через системные шаблоны

Для заведения сервиса типа "Узел" необходимо перейти: Общее меню → Сервисы → {3A8414F7-BB15-4333-B47E-B0F490D4FF79}.png→ "+ Узел"

Далее необходимо:

{E821CDB8-6330-4F94-9971-7E092E33A268}.png

4.2 Добавление пользовательских метрик с использованием CS-тестов

wiProbe Custom Scenario Test в системе wiSLA — это синтетические тесты, которые имитируют деятельность пользователя. CS позволяет создавать и исполнять пользовательские скрипты, настраиваемые под конкретные задачи, что делает его незаменимым для мониторинга уникальных или нестандартных процессов в IT-инфраструктуре.
Для заведения wiProbe Custom Scenario Test необходимо:

  1. Создать тест, где прописан сам текст скрипта.
  2. Создать показатель в системе, который будет отображать метрику в системе.
  3. Добавить показатель к шаблону SLA, по которому оценивается узел. А так же указать пороговые значения, для настройки уведомлений по метрике.
  4. Добавить тест к профилю измерения, в который был включен новый показатель, в настройка "создания сервиса" для его сбора.

4.2.1 Создание теста

Далее:

image.png

image.png

image.png

image.png

{A948B61D-5C82-47D0-929E-DF9009CD4EE4}.png

Для выполнения скрипта вы должны объявить адаптер
Основным является CommandLineAdapter

Он отвечает за запуск javascript скриптов через командную строку системы. Получение экземпляра адаптера через CommandLineAdapter: getCommandLineAdapter().

Пример:
Получение информации о свободном месте на диске С Windows

var cmd = manager.getCommandLineAdapter(); 
var free_drive_c = cmd.execute('cmd /c wmic logicaldisk where "DeviceID=\'C:\'" get FreeSpace | find /V "FreeSpace"'); 
output.hdd = free_drive_c;

Полный список адаптеров по запросу

4.2.2 Создание показателя

 В предыдущем пункте был описан скрипт, которой собирает данные по свободному месту на диске с

output.hdd = free_drive_c;

Нам нужно создать показатель в системе соответствующий названию переменной после output. в данном примере потребуется создать показатель hdd

В системе учитывается регистр!
Пример: "Hdd",  "HDD", "hDD" это три разных показателя в системе.

Для этого:

{3C502A77-EE97-4D4B-A08F-DE668FA42226}.png

В модальном окне потребуется:

4.2.3 Добавление показателя в SLA

После того как мы создали показатель, требуется добавить его в шаблон мониторинга:

Для этого:

image.png

Что добавить показатель к существующему измерению, требуется добавить его к шаблону и прописать пороговые значения в соответствующем столбце. Добавить отдельный профиль SLA, для отображения на отдельной вкладке, можно через кнопку "+"

image.png

{D4A61963-9A20-484A-B5BE-8401604B9BF6}.png

image.png

Жмем кнопку  image.png

4.2.4 Добавление теста в сервис

image.png

image.png

Жмем кнопку  image.png

Далее переходим на страницу текущих показателей качества сервиса. Переходим на измененный нами профиль.

image.png

Примеры скриптов Custom Scenario.

Скрипт проверки статуса службы Linux:

var cmd = manager.getCommandLineAdapter();
var serviceName = "guacd.service";
var zodiacServiceStatus = cmd.execute("bash", "-c", "systemctl is-active " + serviceName + " >/dev/null 2>&1 && echo 1 || echo 0");
output.zodiacServiceStatus = zodiacServiceStatus;

Скрипт проверки размера директории Linux:

var cmd = manager.getCommandLineAdapter();
var catalogOpt = "/opt";
var catalogVar = "/var";
var valueOpt = cmd.execute("bash", "-c", "df -h " + catalogOpt + " | awk 'NR==2 {print $5}' | tr -d '%'");
var valueVar = cmd.execute("bash", "-c", "df -h " + catalogVar + " | awk 'NR==2 {print $5}' | tr -d '%'");
output.valueOptProcent = valueOpt;
output.valueVarProcent = valueVar;
logger.tryLog('Процент занятого места в каталоге OPT: ' + output.valueOptProcent);
logger.tryLog('Процент занятого места в каталоге VAR: ' + output.valueVarProcent)

Скрипт проверки работы веб-портала любого приложения, доступного по сети:

var cmd = manager.getCommandLineAdapter();
var url = "portal.example.com";
var http_port = "80";
var https_port= "443";

var portal_status = cmd.execute("bash", "-c", "curl -k -s -o /dev/null -w \"%{http_code}\" -L https://" + url + "/#/login | grep -qE \"^200\$\" && echo 1 || echo 0");
output.PORTAL_STAT = portal_status;

var portal_portcheck_http = cmd.execute("bash", "-c", "curl -s -o /dev/null -w \"%{http_code}\" http://" + url + ":" + http_port + " | grep -q \"200\\|301\" && echo 1 || echo 0");
output.PORTAL_CK_HTTP = portal_portcheck_http;

var portal_portcheck_https = cmd.execute("bash", "-c", "curl -k -s -o /dev/null -w \"%{http_code}\" -L https://" + url + ":" + https_port + " | grep -qE \"^(200|301)\$\" && echo 1 || echo 0");
output.PORTAL_CK_HTTPS = portal_portcheck_https;

var portal_downtime = cmd.execute("bash", "-c", "curl -k -o /dev/null -s -w \"%{time_total}\\n\" https://" + url + " | sed 's/,/./' | awk '{print \$1 * 1000}'");
output.PORTAL_DTIME = portal_downtime;

var portal_server_code = cmd.execute("bash", "-c", "echo \"\$(curl -s -k -w \"%{http_code}\" https://" + url + "/#/login | tail -n 1)\"");
output.PORTAL_SRV_CODE = portal_server_code;

var portal_certcheck = cmd.execute("bash", "-c", "echo \"\$(( ( \$(date -d \"\$(curl -vkI https://" + url + " 2>&1 | grep \"expire date\" | awk -F': ' '{print \$2}')\" +%s) - \$(date +%s) ) / 86400 ))\"");
output.PORTAL_CERT_CK = portal_certcheck;

4.3 Цели обучения

Выполнить заведение следующих системных сущностей

№ Тип Выполнено Комментарий
1 Создать собственный тип узала

2 Завести сервис типа "Узел"

3 Добавить пользовательскую метрику к системному шаблону и обеспечить её сбор