Я пытаюсь отследить использование io нескольких «подозрительных» процессов с течением времени. В идеале хотелось бы сделать эту статистику доступной через munin или напрямую в графит. Однако в качестве отправной точки было бы здорово иметь возможность отслеживать это использование с течением времени с разумной экономией места / ресурсов. А затем получить возможность получить, скажем, 10 ведущих потребителей ввода-вывода и их статистику чтения / записи данных за определенный период времени.
pidstat -d 2
Кажется, каждые несколько секунд производит большую производительность процессов, потребляющих больше всего io. И я это понимаю sar
есть встроенное архивирование, но я не уверен, как заставить его архивировать статистику, которую я получаю pidstat
(может быть, в SA1_OPTIONS
? Я использую debian / ubuntu).
Кроме трубопроводов pidstat
на диск, а затем запустить сбор / агрегацию выходных данных, есть ли способ сделать то же самое (но более эффективно) с sar, а затем получить статистику позже?
придумал этот специальный сценарий bash, который перенаправляет информацию pidstat (чтение и запись ввода-вывода для каждого процесса) в графит через углерод
#!/bin/bash
hostname=`hostname -s`
carbon_host=YOUR_CARBON_HOSTNAME_OR_IP
carbon_port=2003
pidstat -h -d 1 | grep --line-buffered -v '^$' | grep --line-buffered -v '^#' | grep --line-buffered -v '^Linux' | awk --assign=hostname=${hostname} '{ printf "servers.%s.pidstat.%s.read %s %s\nservers.%s.pidstat.%s.write %s %s\n", hostname, $6, $3, $1, hostname, $6, $4, $1 ; fflush(); }' > /dev/tcp/${carbon_host}/${carbon_port}