LINUX.ORG.RU

Из каких источников аtор собирает данные?

 ,


0

1

Привет.

Исходная задача - получить значение поля аviо вывода аtор для отслеживания состояния дисков.

Изначально намеревался просто писать в файл вывод аtор и затем читать его сторонним скриптом. Но вывод аtор представляется в интерактивном формате, и используемая версия иных не предполагает.

Но утилита лишь аккумулирует в удобоваримом виде данные, читаемые из системных файлов – верно? Если да - то парсинг каких файлов необходим?



Последнее исправление: cetjs2 (всего исправлений: 1)

Но вывод аtор представляется в интерактивном формате, и используемая версия иных не предполагает.

И ключики -P или -J ничем не помогают?

dataman ★★★★★
()

и используемая версия иных не предполагает.

таки он пишет логи в /var/log/atop/, правда читать их можно разве что с помощью atopsar

Если да - то парсинг каких файлов необходим?

Обычно это /proc/diskstats или /sys/block/<dev>/stat на выбор

xgatron
()

avio выводится с логикой при форматировании, просто так получить значение как есть негде, дабы получить теже самые значения нужно выдрать логику печали значений, а она там… atop-2.11.1

if (avioms >= 9995.0)
2538:		val2valstr((unsigned long long)avioms / 1000, buf+5, 5, 0, 0);
2541:	else if (avioms >= 99.95)
2543:		snprintf(buf+5, sizeof buf-5, "%4.0lf ms", avioms);
2545:	else if (avioms >= 9.995)
2547:		snprintf(buf+5, sizeof buf-5, "%4.1lf ms", avioms);
2549:	else if (avioms >= 0.09995)

Само avio в коде avioms берётся из поля iotot структуры extraparam

Его значение это сумма

iotot = dp->nread + dp->nwrite + (dp->ndisc != -1 ? dp->ndisc : 0); // dp == struct perdsk 

И так далее, там ещё кучка стурктур, суммирование в цикле и прочие поля. Так что, считывать неоткуда. Парси интерактивный выхлоп atop или пиши с нуля его подмножество, взял atop и выкинув из кода всё кроме вычисления avio

Может я где что не так увидел и ошибаюсь, но кажется всё так.


Ну или как сказали выше парсить логи, при учёте что это значение туда пишется и с нужной периодичностью и так далее.

Да оно суммирует, но с доп логикой, для получения тех же значений нужно логику вывода и суммирования воспроизвести.

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 4)
Ответ на: комментарий от LINUX-ORG-RU

дабы получить теже самые значения нужно выдрать логику печали значений, а она там…

Что «она там» то? Это просто выбор разного формата (секунды/миллисекудны и количество цифр после точки) чтобы не писать кучу лишних нулей и не потерять значащие цифры когда число маленькое. Повторять её смысла нет, она нужна исключительно для интерактивного красивого вида. Для автоматизированного сбора инфы наоборот вредна.

пиши с нуля его подмножество, взял atop и выкинув из кода всё кроме вычисления avio

Думаю там всё сводится к тривиальному суммированию чисел по списку, которое реализовать никакой проблемы не представляет. Самое сложное тут - вытащить эти числа из дурацкого текстового формата файлов в /proc, но и это в целом элементарно.

firkax ★★★★★
()