Создавайте графики использования диска с помощью инструментов только для CLI в Linux

StackOverflow https://stackoverflow.com/questions/40737

Вопрос

В этом вопросе кто-то спросил о способах отображения использования диска в Linux.Я бы хотел сделать еще один шаг по пути cli...как насчет сценария оболочки, который берет выходные данные из чего-то вроде разумного ответа на предыдущий вопрос и генерирует из него график / chart (вывод в png-файле или что-то в этом роде)?Возможно, это слишком большой код для запроса в обычном вопросе, но я предполагаю, что у кого-то уже где-то есть oneliner...

Это было полезно?

Решение

Я бы порекомендовал мунин.Он предназначен именно для таких вещей - составления графиков использования процессора, памяти, использования диска и тому подобного.что-то вроде MRTG (но MRTG в первую очередь нацелен на графическое отображение трафика маршрутизатора, графическое отображение чего угодно, кроме полосы пропускания, с его помощью очень халтурно)

Писать плагины Munin очень просто (это было одной из целей проекта).Они могут быть написаны практически на чем угодно (shell script, perl / python / ruby / etc, C, на всем, что может быть выполнено и выдавать выходные данные).Формат вывода плагина в основном disc1usage.value 1234.И отладка плагинов очень проста (по сравнению с MRTG).

Я настроил его на своем ноутбуке для мониторинга использования диска, полосы пропускания (извлекая данные из панели управления моего интернет-провайдера, он отображает мои два загрузочных "бункера", использование загрузок и групп новостей), среднюю нагрузку и количество процессов.Как только я установил его (в настоящее время это немного сложно в OS X, но тривиально в Linux / FreeBSD), я написал плагин за несколько минут, и он заработал с первого раза!

Я бы описал, как это настроить, но сайт munin сделает это намного лучше, чем я мог бы!

Вот пример установки здесь

Некоторые альтернативы - нагио и кактусы.Вы также могли бы написать что-то подобное, используя rrdtool.Munin, MRTG и Cacti, по сути, являются гораздо более удобными в использовании системами, основанными на этом инструменте построения графиков.

Если вам нужно что-то действительно простое, вы могли бы это сделать..

import os
import time
while True:
    disc_usage = os.system("df -h / | awk '{print $3}'")
    log = open("mylog.txt")
    log.write(disc_usage + "\n")
    log.close()
    time.sleep(60*5)

Затем..

f = open("mylog.txt")
lines = f.readlines()

# Convert each line to a float number
lines = [float(cur_line) for cur_line in lines]

# Get the biggest and smallest
biggest = max(lines)
smallest = min(lines)

for cur_line in lines:
    base = (cur_line - smallest) + 1 # make lowest value 1
    normalised = base / (biggest - smallest) # normalise value between 0 and 1
    line_length = int(round(normalised * 28)) # make a graph between 0 and 28 characters wide
    print "#" * line_length

Это создаст простой график использования диска в формате ascii.Я действительно, действительно не рекомендую вам использовать что-то подобное.Почему?Файл журнала будет становиться все больше, и больше, и больше.График будет становиться все медленнее по сравнению с графиком.RRDTool использует систему с постоянной базой данных для хранения своих данных, поэтому размер файла никогда не будет превышать примерно 50-100 КБ, и он стабильно быстро отображается на графике, поскольку файл имеет фиксированную длину.

Короче говоря.Если вы хотите, чтобы что-то легко отображало практически все, что угодно, используйте мунин.Если вам нужно что-то меньшее и самодостаточное, напишите что-нибудь с помощью RRDTool.

Другие советы

Если некоторые символы ASCII являются "графическими" достаточно для вас, я могу порекомендовать ncdu . Это очень хороший интерактивный инструмент CLI, который мне очень помогает выходить из больших каталогов без использования cd bigdir; du-hs снова и снова.

Мы работали, используя RRDtool (сервер для хранения данных для таких инструментов, как MRTG ). Мы запускаем perl-скрипт каждые 5 минут, который берет du на раздел и помещает его в базу данных RRD, а затем использует функцию graph RRD для построения графиков. Требуется некоторое время, чтобы выяснить, как настроить файлы .rrd (например, мне пришлось заново изучить RPN, чтобы выполнить некоторые из вычислений, которые я хотел сделать), но если у вас есть данные, которые вы хотите отобразить с течением времени, RRD-инструмент - хорошая ставка.

Я думаю, есть несколько вариантов:

<Ол>
  • Для чистого решения CLI используйте что-то вроде gnuplot. См. здесь для примера использования. Я не использовал gnuplot со студенческих лет: -)

  • Не совсем чистое решение для CLI, но загрузите что-то вроде JFreeChart и напишите простое Java-приложение, которое читает stdin и создает диаграмму.

  • Надеюсь, это поможет.

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top