2016-10-09 2 views
0

Я использую Zabbix 3.2. Я хочу рассчитать статистику трафика в сетевом интерфейсе на основе имени программы.рассчитать сетевой трафик за процесс zabbix

Как и для получения общего входящего трафика, мы используем net.if.in [if,], таким же образом можно восстановить трафик, используемый каждым запущенным процессом, как в Nethogs. Если это так, pls делят ключ Item. Или, если есть какой-либо sh-скрипт, чтобы сделать то же самое.

Заранее спасибо.

ответ

1

Вы не указали операционную систему, но вопрос отмечен как «unix», и вы упомянули nethogs и shell-скрипты - я возьму Linux.

Возможно, это слишком много, чтобы отслеживать трафик для всех процессов - их может быть сотни, и хотя многие из них не будут использовать сеть, на серверной системе многие будут.

Также важно, как вы хотите структурировать данные. Например, вы хотите разбить его на имя процесса или на отдельный процесс? Или, может быть, даже имя процесса и его параметры - в случае запуска нескольких Java JVM в одном окне. Вы должны решить все это, так как это повлияет на сбор данных.

Как отправление данных в Zabbix, самый простой способ на стороне Zabbix будет отслеживать только имя процесса и создавать элементы заранее, если вы знаете все имена процессов, которые вас интересуют. Если вы их не знаете , вам необходимо будет использовать Zabbix low level discovery для автоматического создания элементов по мере появления новых процессов.

И наконец мы добираемся до части сбора данных. Здесь действительно может быть проще всего использовать nethogs (имея в виду, что UDP is not supported). Вы можете запускать nethogs в режиме «трассировки», что почти так же, как и «пакетный» режим для верха. В этом режиме вывод просто выводится на стандартный вывод.

nethogs -c 1 -d 60 -t 

Здесь параметры означают:

  • -c - сколько раз выводить результаты
  • -d - как долго спать между итерациями, включая время до первого выхода
  • -t - трассировка или пакетный режим

Nethogs также поддерживает установки типа выходного трафика с -v флаг. Вы должны были бы решить, как вы хотите визуализировать это:

  • 0 - KB/s
  • 1 - общая KB
  • 2 - общий B
  • 3 - общая MB

С Zabbix вы, вероятно, не захотите использовать режимы 1 или 3 - лучше хранить данные в байтах и ​​позволить Zabbix добавлять мультипликатор по мере необходимости. В случае режима KB/s (0), вероятно, стоит добавить множитель позиции 1024 для хранения данных в байтах и ​​снова использовать приложение автоматического блока в Zabbix. Обратите внимание, что в любом случае вам нужно будет запускать nethog экземпляры назад, чтобы избежать окна, где вы не собираете данные. Один из способов свести к минимуму возможность появления любых окон будет постоянно запускать nethogs (без предоставления опции -c) и перенаправлять вывод в файл.Затем скрипт проанализирует файл и отправит данные в Zabbix с zabbix_sender.

Вы не запускали бы это как обычный Zabbix user parameter, ни как активный, ни пассивный чек - он слишком долго блокировался. Подумайте, используя atd (see this howto) или nohup, чтобы запустить скрипт, который отправляет данные в Zabbix с zabbix_sender.

Обратите внимание, что вы должны запускать nethogs как root - для этого используйте sudo.

Я не в курсе каких-либо существующие сценариев для этого, но уже в следующем, возможно, вы начали: только

nethogs -c 1 -d 1 -t | awk 'BEGIN {FS="[[:space:]/]+"}; /Refreshing/,0 \ 
{if ($1 != "Refreshing:" && $1 != "unknown") {print $(NF-4), $(NF-1), $NF}}' 

Здесь awk грейферов строки программы и печатает название программы и отправленный/полученный трафик.

 Смежные вопросы

  • Нет связанных вопросов^_^