zabbixsetup
Делать на ubuntu 14, предварительно установив данные пакеты:
apache2
php5-pgsql(!!!!!)
libapache2-mod-php5
add-apt-repository
postgresql-9.5
php5-gd
php-net-socket
postgresql-server-dev-9.5
snmp
libiksemel-dev libiksemel-utils libiksemel3
libghc-network-protocol-xmpp-dev
libcurl3
php5-curl
curl
fping
libcurl3-gnutls
libcurl4-openssl-dev
libcurl4-gnutls-dev
libsnmp-dev
wireshark
Установка:
1)скачать zabbix 1.8 c офсайта
2)tar -xvf zabbix*.tar.gz
3)./configure --enable-server --with-pgsql --prefix=/usr/local/
4)sudo make
5)sudo make install
6)sudo groupadd zabbix
7)sudo useradd -g zabbix zabbix(+добавить в sudo zabix)
8)sudo apt-get install postgresql-server-dev-9.5
9)/etc/init.d/postgresql start
10)cd /etc/postgresql/9.5/main/
#listen_addresses = 'localhost' -> listen_addresses = 'localhost' в postgresql.conf
11)sudo psql -U postgres
12)create database zabbix
13)создать юзера zabbix и сделать его владельцем базы zabbix
14)залить дамп в базу заббикса из папки сорсов create/schema(уч) + сreate/data
sudo cat ~/zabbix-1.8.22/create/schema/postgresql.sql | psql -U zabbix zabbix
sudo cat ~/zabbix-1.8.22/create/data/images_pgsql.sql | psql -U zabbix zabbix
Настройка:
*1)sudo vim /etc/services
```
zabbix-agentd 10050/tcp Zabbix Agent
zabbix-agentd 10050/udp Zabbix Agent
zabbix-trapper 10051/tcp Zabbix Trappercd
zabbix-trapper 10051/udp Zabbix Trapper
```
*2)sudo vim /etc/inetd.conf:
zabbix_agent stream tcp nowait.3600 zabbix /opt/zabbix/bin/zabbix_agent
3)sudo mkdir /etc/zabbix
sudo chown -R zabbix /etc/zabbix
4)из misc/conf в папке сорсов скопировать server конфиг в /etc/zabbix; misc/init.d/debian/zabbux-server.conf в /etc/init.d/zabbix-server(убрать расширение)(chmod)
Брать из папки debian потому что там норм скрипты, в папке ubuntu лежит какое то говно
5)отредактировать конфиг
/var/log/zabbix/$name.log(chown)
pid */$name.pid(chown) (в документации написано использовать папку /var/run, но при этом после перезагрузки все файлы будут затираться, поэтому лучше использовать другую)
host:localhost
user:zabbix
pass:zabbix
db:zabbix
6)cd /usr/local/sbin | ./zabbix_server(перед этим проверить, что все файлы доступны для чтения/записи/исполнения пользователю zabbix)
7)в логах должна была появиться инфа о запуске
настройка веб-интерфейса(так проще убедиться, что все работает, дальнейшая настройка через терминал и psql):
1)sudo a2enmod php5
2)cp ~/zabbix-*/frontend/php/* /var/www/html
cp -a . /var/www/html
3)sudo service apache2 start
4)установить директивы в /etc/apache2/apache2.conf
```
php_value max_execution_time 300
php_value memory_limit 128M
php_value post_max_size 16M
php_value upload_max_filesize 2M
php_value max_input_time 300
php_value always_populate_raw_post_data -1
php_value date.timezone Europe/Moscow
```
Создаем в db хост:
INSERT INTO hosts (hostid,host,ip) VALUES ('90001','MyLocalhost','127.0.0.1');
Связываем его с группой:
insert into hosts_groups (hostgroupid,hostid,groupid) values ('59', '90001', '11');
hostgroupid - id записи в таблице hosts_groups
groupid - id группы, в данном случае группу сделал сам заранее
Если этого не сделать то в веб-морде отображаться не будет.
Связываем хост с шаблоном: ОПЦИОНАЛЬНО
insert into hosts_templates (hosttemplateid, hostid, templateid) values ('1', '90002', '10001')
СВЯЗЫВАЕТ НО АЙТЕМЫ НЕ КОПИРУЕТ.
Создаем айтемы(https://www.zabbix.com/documentation/1.8/api/item):
-insert into items (itemid, hostid, description, key_, type, delay) values ('23004','90001','test.sh{100}', 'test.sh', '10', '1');(экстернал чек)
срипт должен лежать на заббикс-сервере в папке '/etc/zabbix/externalscripts', должен быть rwx для zabbix, owner zabbix(данный скрипт выводит число 100)
#!/bin/bash
echo '100'
description - имя
type - в данном случае external check
key_ - путь от папки /etc/zabbix/externalscripst
delay адержка между обновлениями значения
-insert into items (itemid, type, description, key_, value_type,hostid) VALUES ('23005','2','trappertest','trap','3','90001');(trapper)
value_type - 2 zabbix trapper
- 10 external check
Создаем триггеры:
-insert into triggers (triggerid, expression, description) values ('23004','{23004}=100', 'external item not zero');
expression -выражение триггера
-insert into triggers (triggerid, expression, description) values ('23005','{23005}<10','trappertesterr');
Создаем функцию:
-insert into functions (itemid, functionid, function, triggerid ) VALUES ('23004','23004','last','23004');экстернал чек
-insert into functions (itemid, functionid, function, triggerid) values ('23005','23005','last','23005');траппер
Добавить зависимость триггеров:
-INSERT INTO trigger_depends (triggerdepid, triggerid_down, triggerid_up) VALUES ('1', '23004', '23005'); триггер 23004 будет зависеть от 23005
т.е. пока 23005 в проблеме, 23004 не будет срабатывать, даже если для него выполнено триггерное выражение. Если 23004 в ОК, а 23005 сработал, то 23005 перейдет в проблему
Устанавливаем zabbix_sender(https://www.zabbix.com/documentation/1.8/ru/manpages/zabbix_sender):
1)cd zabbix-1.8*/src
2)sudo make
3)sudo make install
Отправляем данные на траппер:
while true; do sleep 1; zabbix_sender -z 127.0.0.1 -s MyLocalhost -k trap -c /etc/zabbix/zabbix_server.conf -o 9; done
проверяем, что триггер срабатывает
Устанавливаем zabbix_agent и proxy:
sudo ./configure --enable-proxy --enable-agent --with-pgsql --with-net-snmp
sudo make install
не забывать про sudo, иначе в какой то момент можно не обнаружить бинарников в /usr/local/sbin
компируем конфиги из сорсов, меняем пути к логам и коннекты к базе, запускаем:
sudo cp misc/init.d/debian/zabbix-agent.conf /etc/init.d/zabbix-agent
у файлов логов должны быть разрешения на запись + chown
конфиг файлам сделать chmod +x
далее можнет возникнуть проблема:
в после запуска заббикс агента:
$ sudo zabbix_agentd
в логах:
9166:20170831:050459.347 Starting Zabbix Agent [Zabbix server]. Zabbix 1.8.22 (revision 51172).
9166:20170831:050459.347 listener failed: bind() for [[-]:10050] failed: [98] Address already in use
порт уже занят заббикс сервером, проверить:
netstat -ntlp
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 19967/zabbix_agentd
решение:
ps aux | grep -i zabbix_agentd
kill -9 $zabbix_agentdpids(если процессов много, то проще pkill -9 zabbix_agentd)(помогает в аналогичных случаях)
sudo zabbix_agentd
zabbix_get -s 127.0.0.1 -p 10050 -k "system.cpu.load[all,avg1]"(если возвращает результат - работае)
Прописываем UserParametr unixtime для заббикс агента:
1)sudo vim /etc/zabbix/zabbix_agentd.conf
2)раскомментируем строчку UserParametr, указываем параметр вида '<ключ>,<команда>'
3)UserParameter=unixtime, awk 'BEGIN {srand(); print srand()}'
4)zabbix_get -s 127.0.0.1 -p 10050 -k "unixtime"
Создаем действие:
q (https://docs.i-free.com/pages/viewpage.action?pageId=26215352)
(https://www.zabbix.com/documentation/1.8/manual/config/actions)
-insert into actions (actionid, name, eventsource, evaltype, status, def_shortdata, def_longdata, r_shortdata, r_longdata) values ('1','ZabbixTriggerActionPr', '1', '0','1','trigger problem','triggerproblem msg','{TRIGGER.STATUS}: {TRIGGER.NAME}','Trigger:{TRIGGER.NAME} problem');
-insert into actions (actionid, name, eventsource, evaltype, status, def_shortdata, def_longdata, r_shortdata, r_longdata) values ('4','ZabbixTriggerActionPr', '0', '0','0','default subj msg','default msg','{TRIGGER.STATUS}: {TRIGGER.NAME}','Trigger:{TRIGGER.NAME} problem');
action
Trigger: {TRIGGER.NAME}\r +
| | | Trigger status: {TRIGGER.STATUS}\r +
| | | Trigger severity: {TRIGGER.SEVERITY}\r +
| | | Trigger URL: {TRIGGER.URL}\r +
| | | \r +
| | | Item values:\r +
| | | \r +
| | | 1. {ITEM.NAME1} ({HOSTNAME1}:{TRIGGER.KEY1}): {ITEM.VALUE1}\r+
| | | 2. {ITEM.NAME2} ({HOSTNAME2}:{TRIGGER.KEY2}): {ITEM.VALUE2}\r+
| | | 3. {ITEM.NAME3} ({HOSTNAME3}:{TRIGGER.KEY3}): {ITEM.VALUE3}
-создаем condition:
insert into conditions (conditionid, actionid, conditiontype, operator, value) values ('15','1','2','0','23004');
insert into conditions (conditionid, actionid, conditiontype, operator, value) values ('16','1','2','0','23005');
-insert into conditions (conditionid, actionid, conditiontype, operator, value) values ('46','4','2','0','23004');
-insert into conditions (conditionid, actionid, conditiontype, operator, value) values ('47','4','2','0','23005');
-через вебню можно создать оповещения для юзера admin, либо через таблицу operations
-insert into operations (operationid, actionid, operationtype, objectid, longdata, default_msg) values ('9','4','1','0','MyLocalhost:/etc/zabbix/externalscripts/test2.sh','1');
-по указанному пути создать скрипт, записывающий текст в файл, дать право на выполнение и сделать владельцем пользователя zabbix.
operationid | actionid | operationtype | object | objectid | shortdata | longdata | esc_period | esc_step_from | esc_step_to | default_msg | evaltype
-------------+----------+---------------+--------+----------+-----------+--------------------------------------------------------------+------------+---------------+-------------+-------------+----------
33 | 4 | 1 | 0 | 0 | | MyLocalhost:sudo bash /etc/zabbix/externalscripts/test1.sh | 0 | 1 | 1 | 1 | 0
Поскольку команда выполняется заббикс-агентом, то в его конфиге нужно раскомментировать строку EnableRemoteCommands и изменить значение на 1.
Снимаем дампы с трафика:
Убедиться, что zabbix server снят с мониторинга и стоит только MyLocalhost, чтобы не засрать дамп
-vv : подробно
-s : устанавливает ограничение на размер захватываемых пакетов, -s0 устанавливает это ограничение равным 65535 байтам.
-i any: просматривать все сетевые интерфейсы
c zabbix_sender:
-sudo tcpdump -vv -s0 -i any 'port 10051 ' -w test/zabbixsender
-шлем инфу на траппер x2(zabbix_sender -z 127.0.0.1 -s MyLocalhost -k trap -c /etc/zabbix/zabbix_server.conf -o 9)
-открываем файл в wireshark
с zabbix_get:
снимаем дамп опроса клиента через zabbix-get:
-sudo tcpdump -vv -s0 -i any 'port 10050' -w test/zabbixget
-выполняем в отдельном терминале zabbix_get -s 127.0.0.1 -p 10050 -k "unixtime")х2
-ctrl+c
-wireshark
с action:q
-ставим триигер в ок(zabbix_sender -z 127.0.0.1 -s localhost2708 -k trap -c /etc/zabbix/zabbix_server.conf -o 10)
-sudo tcpdump -vv -s0 -i any 'port 10050' -w test/zabbixacton(слушаем на 10050)
-zabbix_sender -z 127.0.0.1 -s localhost2708 -k trap -c /etc/zabbix/zabbix_server.conf -o 9(отправляем сендером! на 10051, в дампе будет только инфа о работе action)
Установка zabby:
1)git clone https://github.com/blin/zabby.git
2)sudo python setup.py install
3)zabby -c /usr/local/lib/python2.7/dist-packages/zabby/examples/config.py
(версия python может отличаться)
3)проверить работу забби можно:
zabby_get agent.ping
4)проверить инструкции
Сделать так, чтобы забби читал /etc/zabby/
Создаем хост в для zabby:
-insert into hosts (hostid, host, ip, port) values ('90002', 'localhostzabby','127.0.0.1','10052');
ТУТ ВСЕ АЙТЕМЫ БЕЗ ПЕРИОДИЧЕСКОГО ОПРОСА, В ЗАПРОС НУЖНО ДОБАВИТЬ ЗНАЧЕНИЕ DELAY.
Создаем айтем для zabby:
-insert into items (itemid, type, description, key_, value_type,hostid) VALUES ('23007','0','zabbytest_os.name','os.name','4','90002');
-insert into items (itemid, type, description, key_, value_type,hostid) VALUES ('23008','0','zabbytestrandint','random','3','90002');
-insert into items (itemid, type, description, key_, value_type,hostid) VALUES ('23009','0','zabbytest_platform.system','platform.system','4','90002');
-insert into items (itemid, type, description, key_, value_type,hostid) VALUES ('23010','0','zabbytest_platform.release','platform.release','4','90002');
Cоздаем триггеры для zabby:
-insert into triggers (triggerid, expression, description) values ('23007','{23007}=0','os.name_was_changed');
-insert into triggers (triggerid, expression, description) values ('23008','{23008}>5','random int > 5');
-insert into triggers (triggerid, expression, description) values ('23009','{23007}=0','os.name_was_changed');
-insert into triggers (triggerid, expression, description) values ('23010','{23007}=0','os.name_was_changed');
Создаем функции для zabby:
-insert into functions (itemid, functionid, function, triggerid) values ('23007','23007','last','23007');
-insert into functions (itemid, functionid, function, triggerid) values ('23008','23008','last','23008');
-insert into functions (itemid, functionid, function, triggerid) values ('23009','23009','last','23009');
-insert into functions (itemid, functionid, function, triggerid) values ('23010','23010','last','23010');
Создаем две метрики для забби и создаем конфиги забби:
1)sudo mkdir -p /etc/zabby/items
2)sudo vim 30_customitems.py
```
from zabby.core.utils import sh
from random import randint
items = {
#my items
'os.name': lambda: os.name,
'platform.system': platform.system,
'platform.release': platform.release,
'random': lambda: random.randint(1, 10),
}
```
3)sudo vim /etc/zabby/config,py
```
import os
listen_host = '0.0.0.0'
listen_port = 10052
_config_dir = os.path.dirname(os.path.abspath(__file__))
_item_dir = os.path.join(_config_dir, 'items')
item_files = sorted([os.path.join(_item_dir, item_file)
for item_file in os.listdir(_item_dir)
if item_file.endswith('.py')])
logging_conf = os.path.join(_config_dir, 'logging.conf')
```
4)sudo vim /etc/zabby/logging.conf
```
[loggers]
keys=root
[handlers]
keys=file
[formatters]
keys=default
[logger_root]
level=DEBUG
handlers=file
[handler_file]
class=logging.handlers.TimedRotatingFileHandler
formatter=default
args=('/var/log/zabby/zabby.log','midnight', 1, 7)
[formatter_default]
format=%(asctime)s %(levelname)s [%(name)s] %(message)s
datefmt=%Y-%m-%d %H:%M:%S
```
No Comments