Время прочтения: 3 мин.

Итак, делаем логирование Linux сервера в PowerBI (данный способ подходит и для остальных bi). Для этого нужно привести текстовый файл к тому виду, который может принять PowerBI без изменения исходных данных.  Для работы с данными в Linux есть два замечательных инструмента awk и sed.
Awk и Sed – это языки программирования, имеют широкий спектр возможностей, но основным применением awk и sed является работа с текстом, подготовка данных для отчетов и логирования.
Для логирования используем команду top и проверим его вывод без редактирования:

top –bn1  > log.txt | awk ‘{print}’

Далее удалим верхний текст и оставим лишь некоторые столбцы и разделим их “;” для того, чтобы PowerBI легко принял текстовый файл и узнал все типы.

top –bn1 | sed ‘1,6d’ | awk ‘{print $1”;”$2”;”$9”;”$10”;”$12}’ >> log.txt

Данный вариант разделителей позволяет excel и bi разделять поля по “;” и автоматически узнавать типы полей.
Команда top выводит нагрузку на одно ядро и число может быть больше 100%, поэтому необходимо поделить вывод CPU на количество ядер процессора:

top –bn1 | sed ‘1,6d’ | awk ‘{print $1”;”$2”;”$9 / countCPU”;”$10”;”$12}’ >> log.txt

Осталось убрать «шапку» с вывода, чтобы она не выводилась при каждой записи. Для этого создадим bash скрипт и при первом запуске скрипта будет создаваться текстовый файл с шапкой, а далее просто будут записываться логи.

Чтобы удалить верхнюю строчку, заменим sed ‘1,6d’ на sed ‘1,7d’.
Баш скрипт будет выглядеть так:

#!/bin/bash
if [ ! -f "/media/sf__/asd/log.txt" ]; then echo "PID;USER;%CPU;%MEM;COMMAND" >> /pathToSave/log.txt; fi
top -bn1 | sed '1,7d' | awk '{print $1 ";"$2";"$9/64";"$10";"$12}' >> /pathToSave/log.txt

Добавим скрипт в cron с запуском каждые 10 минут:

*/10 * * * * /pathToFile/bash.sh


Аналогично можно сделать логирование и по GPU с помощью команды nvidia-smi и флагами, которые необходимы. Проверим, что cron запущен:

Откроем текстовый файл в PowerBI:
Нажимаем в PowerBI на “Получить данные”,  далее выбираем наш текстовый файл и видим, что данные автоматически принимают тот тип, который нам необходим и изменять ничего не надо:

Выбираем все поля, которые необходимо отобразить и получаем график:

В итоге мы получили готовые логи по затратам ресурсов на Linux сервере в виде графика.
Аналогичным способом можно логировать информацию о пользователях, клиентах и т.д

Логирование в BI системах дает возможность просматривать логи в любое время и с различных устройств, включая телефоны, что очень удобно.

При необходимости можно добавить открытие текстового файла в PowerBI в скрипт.