Есть ли какое-то готовое или полуготовое решение для вывода логов atop (Cpu, Memory и Disc) на сайт в виде графика с выбором даты. Желательно через PHP. Типа виджета для самописной админки. Уже сам решил заморочиться, но стало интересно почему никак не найти.
И какой интервал записи в лог оптимальный для мониторинга веб-сервера?
Проще надо, мне надо проще. Atop устраивает. Я думал есть решение типа конвертит в mysql логи и даже еще больше. Понял что нету, самому придется делать.
psiklop, ахренительно... Хочу не просто картинку на сайт, а еще и с запросами по диапазону дат?
Ну так ставьте munin, или и дальше atop пользуйте. Ну или как я предложил...
Алексей Черемисин, конечно хочу, а иначе зачем это всё. В принципе было бы решение которое конвертило логи в mysql прилепить DateRangePicker и chartJS мне несложно. А тут все с ноля надо сделать. Но хорошо, что я хоть узнал о команде atopsar с ней попроще.
psiklop, ну так готовые решения - службы мониторинга на выбор.
Grafana, prometheus, даже чистый influxdb сейчас умеют рисовать графики.
Зачем искать что-то еще, или велосипедить попроще, если есть решения которые мегапопулярны уже лет 10, и никто не планирует особо писать альтернативу, ибо эти решения более чем удобны
Saboteur, я наверное теги неверно задал, меня интересует не только подача информации, но и чтобы на сайт. Иначе я бы и сам atop листал в истории. А под решением я имел ввиду что-то очень простое и не требовательное, типа скриптик с гитхаба для парсинга, монструозные монстры не нужны.
Saboteur, верю, не пользовался, не знаю что за плагин с первого взгляда не понять, но видно, что перебор, мне достаточно канваса с линиями. Atop тоже достаточно я поставил интервал 2 минуты. Прометей выглядит перебором, atop встроен в linux его надо только включить с интервалом. Мне нужен только cpu память и диск. Скрипт парсящий лог на cpu память и диск в базу не сложный, в 20 строк можно уложиться. Я поставлю раз в сутки, так как меня интересуют ретро данные, следить в реальном времени нет надобности.
Saboteur, Сложность только с cpu, так как в логе ряд цифр и не ясно где % считаю так, но не знаю верно ли, так как в оригинале в формуле были предыдущие значения.
Idle = idle + iowait
NonIdle = user + nice + system + irq + softirq + steal
Total = Idle + NonIdle
CPU_Percentage = nonIdle/(nonIdle+idle)*100;
atop НЕ встроен в линукс. Ты ставишь его отдельно из репозитория, как и все остальное.
atop выглядит простым потому что он шлет в консоль текст. Ты же хочешь красивые графики через веб, еще и с выбором по истории.
То есть уже нужна база данных и веб-сервер
Линукс сам по себе тоже ничего не хранит. Атоп просто когда запущен, каждую секунду берет текущее значение и делает расчеты за эту секунду.
Таким образом если ты хочешь атоп в веб, то надо чтобы каждую секунду кто-то брал все показатели, сохранял в базу, а потом уже чем-то это визуализировать. Как бы не самая простая задача.
Все берется из /proc
скрипт парсера может быть и не сложный, но общая степень нагрузки такова, что какая разница сколько там строк? У любого прометея и так далее, собственно экспортер и есть маленький скрипт или бинарник, который парсит.
psiklop, atop мониторит системк и пишет данные в собственную tsdb.
Prometheus или influxdb - реализации tsdb. В них может писать кто угодно, начинся от collectd (кстати, посмотрите и на него, до tekegraf и node exporter. Это коллекторы.
Теперь у вас есть база и коллектор.
Можете не ставить графану, а сами делать выборки и рисовать в канвасе.
Saboteur, не помню, может и набирал apt install, но значит он настолько маленький, что даже не заметил установки. Мне не нужны данные каждую секунду, я поставил запись в лог раз в две минуты (про это и спрашивал в теме) мне нужны обобщенные данные в графике, точность будет средней, решил раз в две минуты хватит, лог при этом весит около 10мб в сутки.
Скрипт который парсит лог в базу данных запускается вообще раз в сутки, я писал уже слежка в реальном времени не нужна. Скрипт при записи в базу пишет обобщенные данные сгруппированные по часу (то есть всего 24 строки в сутки) так как я не планирую в графике деление короче часа.
Конечно на сервере есть база данных и веб-сервер так как это и есть основное предназначение этого сервера. В итоге решение не считаю велосипедом, оно очень простое и стабильное, его можно гибко настроить. И оно вписывается в админку сайта как нечто родное и кодом и интерфейсом.
Алексей Черемисин, возможно, но внешне не похоже. Не в курсе, что такое tsdb, я назвал это просто бинарный лог. А Prometheus гуглится как программа у которой есть личный сайт и рекламируется как система мониторинга, выглядит громоздко для моих потребностей.
Saboteur, если интересно вот и вся моя база данных под скрипт, и еще плюс, что можно скрипт размещать на удаленных серверах и писать в общую mysql (это если в админке надо следить за разными)
psiklop, отговаривать Вас никто не собирается. Но заметьте, все советуют Вам одно и тоже.
Myqsl очень плохо прдходит для метрик и временеых рядов. Ибо у него многого чего нет. Начиная от наличия схемы и заканчивая отсутствием TTL для данных.
Все эти, как Вам кажется "тяжелые" решения, совсем не тяжелы и практически ничего не кушают. Особенно в рамках одного хоста.
Но другого решения у нас нет, и не будет. Еще одну систему мониторинга никто писать не будет. А если и будут, то принципы будут примерно теже.
Всесто прометеуса можно взять victoriametrics, собирать метрики - telegraf, смотреть - можно и самому написать на основе d3. js.
А бегать по логам - вот это действительно тяжелое решение! Так уже никто не делает
Алексей Черемисин, mysql даже на базовом уровне дает с помощью запросов datetime, sum и avg все что нужно. В любом случае mysql стоит уровнем ниже всего перечисленного как например необходимое дополнение к языку программирования такому как php, а все это уже готовые программы. Которые может и хороши, чтобы пользоваться ими как юзер, но разработчику не особо. Тут проблема, что вопрос мне надо было задавать не сюда, а в веб-разработку.
psiklop, Без разницы, куда задавать вопрос. Я сам не администратор, а разработчик с 35-и летним стажем, java, php, python, C/C++, clojure, JS, React....
Вы же не пишете каждый раз новую библиотеку для того же самого myqsl, или redis, а берете готовую... Так и здесь - берите готовое...
Короче если хотите минималку, и вас устраивает раз в минуту, то просто берете скрипт на ЧЕМ угодно, хоть на баш, и берете данные.
По процессору из /proc/stat (https://www.linuxhowtos.org/System/procstat.htm)
по памяти из /proc/meminfo
пишете нужные метрики куда вам нравится. Хоть в простой текстовый csv файл, чтобы не ставить базу данных, и потом прикрутите любой вид просмотра. Можно даже копипаст в эксель и там диаграммки рисовать.
Вряд ли есть что-то простое достаточно популярное и надежное решение. В этом случае можно поставить просто графану, с которой в поставке идет, например, influxdb, и кидать в нее тем же баш скриптом метрики. В графане нарисовать любые интересные графики.
Saboteur, я уже тоже пожалел, что поленился. Раз atop использует /proc/stat, я мог бы тоже. Но уже сделал и интерес потерян. Если подумать atop прост и по сути и есть тот самый скрипт баш, которые я писать хорошо не умею. Я бы все равно сделал максимум на php cli. Atop пишет все инфо в свой лог, но в данном случае не проблема, что мой скрипт извлечет из него в конце дня и удалит. Конечно если бы читал /proc/stat сам мог бы сделать обновления и за текущий день.
Как хранить не суть, веб-разработчику mysql и chartJS удобнее. Тем более он уже у меня в админке.
diagram Print the results as a braille character diagram (default).
gnuplot Print the results using a gnuplot subprocess.
table Print the results as ascii table.
csv Print the results as csv table.
json Print the results as json datagram.
Но всё же лучше, как посоветовал Алексей Черемисин
Если хочется по-проще, тогда munin.