· netxms monitoring custom commands

Кастомные команды в NetXMS

Я использую NetXMS в качестве системы мониторинга как на своих серверах, так и на работе. Это замечательная софтина, однако добавление кастомных команд хоть и описано в документации, но довольно неоднозначно. Точнее, вполне себе даже однозначно, но есть один момент, не учитывая который вы можете потрепать нервы себе и всем остальным.

Покажу на примере скрипта получения данных о чтении с диска или записи на диск процесса или группы процессов.

Скрипт

Сохраняем где удобно:

#!/usr/bin/env bash

ACTION=$1
WHATTOGREP=$2

if [ "${WHATTOGREP}" == "" ]; then
	echo "Pass grep-able string as second parameter."
	exit 1
fi

PIDS=$(ps aux | grep ${WHATTOGREP} | awk {' print $2 '})

if [ ! -z $DEBUG ]; then
	echo "PIDS: ${PIDS}"
fi

TOTALREAD=0
TOTALWRITE=0

for pid in ${PIDS}; do
	r=$(cat /proc/${pid}/io 2>/dev/null | grep read_bytes | awk {' print $2 '})
	w=$(cat /proc/${pid}/io 2>/dev/null | grep write_bytes | grep -v "cancel" | awk {' print $2 '})
	if [ ! -z $DEBUG ]; then
		echo "PID: ${pid} - read ${r}, write ${w}"
	fi

	if [ "${r}" == "" ]; then
		r=0
	fi
	if [ "${w}" == "" ]; then
		w=0
	fi

	TOTALREAD=$[ ${TOTALREAD} + ${r} ]
	TOTALWRITE=$[ ${TOTALWRITE} + ${w} ]
done

if [ "${ACTION}" == "read" ]; then
	echo $TOTALREAD
elif [ "${ACTION}" == "write" ]; then
	echo $TOTALWRITE
else
	echo "Invalid action parameter. Pass 'read' or 'write' as first parameter."
	exit 1
fi

Добавляем нужное в конфигурацию агента

В файл /etc/nxagentd (в FreeBSD - /usr/local/etc/nxagentd) добавляем следующее:

ExternalParameterShellExec=Process.DiskRead(*):/opt/bin/check_io.sh read $1
ExternalParameterShellExec=Process.DiskWrite(*):/opt/bin/check_io.sh write $1

Не забываем перезапустить агента.

Сервер NetXMSd

Чтобы метрика отобразилась в списке доступных, необходимо выполнить ПКМ на сервере -> Poll -> Configuration. После опроса конфигурации метрика будет доступна.

  • LinkedIn
  • Tumblr
  • Reddit
  • Google+
  • Pinterest
  • Pocket