Solaris OpenIndiana установка и настройка Zabbix агента
Создадим директорию
# mkdir zabbix-agent && cd zabbix-agent
Скачаем и распакуем необходимую версию агента http://www.zabbix.com/download.php
# tar xvf zabbix_agent*
Скопируем бинарные файлы в соответствующие директории
# cp bin/zabbix_* /usr/bin/
# cp sbin/zabbix* /usr/sbin/
Добавим пользователя и группу
# groupadd -g 122 zabbix
# useradd -c 'Zabbix' -d / -g zabbix -s /usr/bin/false zabbix
Создадим скрипт запуска/остановки агента
cat << 'EOF' > /etc/init.d/zabbix_agentd
#!/bin/sh
CONFIG=/etc/zabbix/zabbix_agentd.conf
DAEMON=/usr/sbin/zabbix_agentd
PIDDIR=/var/run/zabbix
PID=/var/run/zabbix/zabbix_agentd.pid
case "$1" in
start)
if [ ! -d $PIDDIR ]; then
mkdir $PIDDIR
fi
chown zabbix:sys $PIDDIR
if [ -f $CONFIG -a -f $DAEMON ]; then
echo 'Starting zabbix_agentd.'
$DAEMON -c $CONFIG
fi
;;
stop)
echo 'Stopping zabbix_agentd.'
kill -TERM $ cat $PID
;;
restart)
$0 stop
sleep 3
$0 start
;;
*)
echo "Usage: $0 { start | stop | restart }"
exit 1
;;
esac
EOF
Определим владельца и права на скрипт, создадим ссылку
# chown root:sys /etc/init.d/zabbix_agentd
# chmod 744 /etc/init.d/zabbix_agentd
# ln -s /etc/init.d/zabbix_agentd /etc/rc3.d/S99zabbix_agentd
Создадим директорию и конфигурационный файл со следующими настройками
# mkdir -p /etc/zabbix/conf.d
# cat << EOF >/etc/zabbix/zabbix_agentd.conf
Hostname=agent_hostname # hostname zabbix agent
Server=192.168.1.1 # IP zabbix server
Include=/etc/zabbix/conf.d/
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix_agentd.log
LogFileSize=100
Timeout=30
EOF
Создадим pid файл и журналы
# mkdir -p /var/run/zabbix && chown zabbix:zabbix /var/run/zabbix
# touch /var/log/zabbix_agentd.log && chown zabbix:zabbix /var/log/zabbix_agentd.log
Запускаем агента
# /etc/init.d/zabbix_agentd start
После установки агента, небходимо добавить его на сервере.
Настройка -> Узлы сети -> Создать узел сети.
Имя узла сети должно совпадать с параметром Hostname= в файле настроек агента.
Solaris OpenIndiana использование утилиты truss
Утилита truss используется для отслеживания системных вызовов и сигналов различных процессов
операционной системы.
Использование без ключей
# truss /usr/lib/ssh/sshd
Основные ключи
-p <PID> утилита подключается к процессу по pid
-o outfile запись результатов работы в файл
-c вывод информации в виде сводки
-a отображаются строки аргументов, которые передаются в каждом exec() системном вызове
-d устанавливается отметка времени для каждой строки вывода трассировки
-e отображаются строки окружения, которые передаются в каждом exec() системном вызове
-i прерываемые и sleeping вызовы не отображаются
-t определение системных вызовов, которые будут участвовать в трассировке
-s определение сигналов, которые будут участвовать в трассировке
-f включается трассировка дочерних процессов порожденных вызовами fork() vfork()
Сбор информации о процессе с PID 1380 в файл sshd.output
# truss -o /var/tmp/sshd.output -p 1380
Отображение трассировки read, write системных вызовов
# truss -c -t read,write /usr/sbin/ping 10.10.10.111
10.10.10.111 is alive
syscall seconds calls errors
read .000 9
write .000 1
-------- ------ ----
sys totals: .000 10 0
usr time: .000
elapsed: .010
Пример трассировки с ключом -f
# truss -f -o /var/tmp/useradd.out /usr/sbin/useradd -m -d /export/home/usr usr
# more /var/tmp/useradd.out | grep fork
1612: fork1() = 1613
1613: fork1() (returning as child ...) = 1612
Пример Ошибок в вызовах при попытке размонтирования файловой системы занятой процесамми
# truss -t read,write,open umount /fz
open("/var/ld/ld.config", O_RDONLY) Err#2 ENOENT
open("/lib/libc.so.1", O_RDONLY) = 3
open("/etc/mnttab", O_RDONLY) = 3
umountwrite(2, " u m o u n t", 6) = 6
: write(2, " : ", 2) = 2
/fzwrite(2, " / f z", 3) = 3
busy
write(2, " b u s y\n", 6) = 6
Документацию по системным вызовам для Solaris можно найти на docs.oracle.com