Назад | Перейти на главную страницу

сообщать статистику ввода-вывода для каждого процесса с помощью pidstat или sar

Я пытаюсь отследить использование 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}