Сетевой интерфейс Linux

Сетевой интерфейс – это точка присутствия сервера в локальной сети. В свою очередь, локальная сеть скорее всего будет иметь доступ в глобальные сети. Настройка сетевого интерфейса это типичная задача при установке сервер на colocation и в ней нет нечего сложного. Какие файлы влияют на работу сетевого интерфейса в 5: /etc/modprobe.conf – здесь загружаются модули ядра для различных устройств:

alias eth0 pcnet32
alias eth1 pcnet32

/etc/hosts – здесь находится список ip-адресов и назначенных им имен.

Удобно в отсутствие DNS-сервера или когда нет необходимости сообщать эти имена на всю сеть.

/etc/resolv.conf – в этом файле указываются DNS сервера. DNS-сервер задается директивой nameserver

# cat /etc/resolv.conf
nameserver 192.168.146.2

/etc/host.conf – файл указывает последовательность использования механизмов разрешения имени. В нашем случае сначала используем /etc/hosts а только потом DNS-сервер.

# cat /etc/host.conf
order hosts,bind

/etc/init.d/network – скрипт останавливающий и запускающий работу сети

/proc/sys/net/ipv4/ip_forward – включение маршрутизации для своих интерфейсов, если у вас два или более интерфейсов её нужно включить. Включение осуществляется передачей “1” в этот файл.

# echo "1" > /proc/sys/net/ipv4/ip_forward

/etc/sysconfig/network - здесь мы указываем, является ли наш сервер доступным по сети, если да то по каким протоколам и указываем наш hostname, то есть имя сервера. Default gateway рекомендуется указывать здесь.

# cat /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=centos52
NETWORKING=yes - будет ли наш сервер работать в сети, наверно 99% случаев ответ будет - да, то есть yes Эта директива для Ipv4
NETWORKING_IPV6=no - Ipv6 уже где-то используется но не настолько чтобы переводить сервера на его использование. Пока я не буду его включать.
HOSTNAME=centos52 - имя нашего сервера

В /etc/sysconfig/network-scripts/ находятся различные скрипты влияющие на работу сетевого интерфейса:

# ls -l /etc/sysconfig/network-scripts/
-rw-r--r-- 1 root root 140 Feb 14 19:23 ifcfg-eth0
-rw-r--r-- 1 root root 254 Mar 3 2008 ifcfg-lo
/etc/sysconfig/network-scripts/ifcfg-*

Для нас самое большое значение имеют скрипты ifcfg-*. Именно в них описываются настройки сетевых интерфейсов присутствующих в сервере.
Давайте посмотрим что у них внутри.

DHCP iface

Данный интерфейс работает с использованием службы DHCP.

# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=dhcp
HWADDR=00:0C:29:43:5B:3D
ONBOOT=yes

Мой компьютер работает по DHCP, что отчетливо видно по директиве BOOTPROTO=dhcp. То есть сетевые настройки мы получаем у dhcp-сервера при загрузке нашего сервера. Другие директивы означают следующее:

DEVICE=eth0 - как будет называться наш интерфейс, принято первый интерфейс называть как eth0, второй eth1 и так далее HWADDR=00:0C:29:43:5B:3D - MAC-адрес нашей сетевой карты. Media Access Control - это уникальный идентификатор сетевой карты. У каждой сетевой карты свой MAC-адрес и в идеале он не повторяется больше ни с каким в мире. Иногда MAC-адрес пытаются подменить чтобы выдать свой компьютер за чужой, по каким либо соображениям, обычно враждебным. Длина MAC-адреса составляет 48 бит что позволяет иметь 281 474 976 710 656 уникальных комбинаций. У каждого производителя сетевых плат есть свой диапазон в котором он назначает MAC-адреса своим платам. MAC-адрес пишется в шестнадцатеричной форме счисления.

ONBOOT=yes - включать ли этот интерфейс автоматически при включение сервера. Думаю, что скорее всего это и нужно.

Loopback iface

loopback-интерфейс необходим для нормальной работы ОС.

# cat /etc/sysconfig/network-scripts/ifcfg-lo
DEVICE=lo
IPADDR=127.0.0.1
NETMASK=255.0.0.0
NETWORK=127.0.0.0
BROADCAST=127.255.255.255
ONBOOT=yes
NAME=loopback
DEVICE=lo - это loopback интерфейс. Интерфейс есть в любой системе и всегда поднят. Он нужен для нормальной работы ОС.
IPADDR=127.0.0.1 - ip-адрес loopback интерфейса. Он всегда такой.
NETMASK=255.0.0.0 - сетевая маска
NETWORK=127.0.0.0 - сеть в которой находится наш ip-адрес
BROADCAST=127.255.255.255 - адрес широковещательной рассылки
ONBOOT=yes - включать ли интерфейс при загрузке сервера, конечно да!
NAME=loopback - имя сетевого интерфейса. Вывод команды ifconfig будет показывать значение указанное именно в DEVICE.

Custom iface

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

Вот custom-интерфейс

DEVICE=eth0
IPADDR=192.168.0.2
NETMASK=255.255.255.0
NETWORK=192.168.0.0
BROADCAST=255.255.255.255
GATEWAY=192.168.0.1
ONBOOT=yes
BOOTPROTO=dhcp здесь отсутствует но есть другие директивы.
IPADDR=192.168.0.2 - здесь мы задаем ip-адрес нашего интерфейса
NETMASK=255.255.255.0 - сетевая маска
NETWORK=192.168.0.0 - сеть в которой находится наш ip-адрес
BROADCAST=255.255.255.255 - адрес широковещательной рассылки
GATEWAY=192.168.0.1 - шлюз через который мы попадаем в другие сети
ONBOOT=yes - включать ли интерфейс при загрузке сервера

Практика

Настроим сетевой интерфейс в Linux. Мы знаем что lo всегда включен и его не нужно вообще трогать. Редактируем /etc/sysconfig/network-scripts/ifcfg-eth0 Мой конфигурационный файл выглядит так:

DEVICE=eth0
HWADDR=00:0C:29:43:5B:3D
IPADDR=192.168.146.130
NETMASK=255.255.255.0
BROADCAST=192.168.146.255
GATEWAY=192.168.146.2
ONBOOT=yes

# service network restart

# /etc/init.d/network restart
Shutting down interface eth0: [ OK ]
Shutting down loopback interface: [ OK ]
Bringing up loopback interface: [ OK ]
Bringing up interface eth0: [ OK ]

Проверим все ли поднялось

# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:43:5B:3D
inet addr:192.168.146.130 Bcast:192.168.146.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe43:5b3d/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1327 errors:0 dropped:0 overruns:0 frame:0
TX packets:1340 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:149547 (146.0 KiB) TX bytes:232486 (227.0 KiB)
Interrupt:59 Base address:0x2000

Жирным выделены особенно интересные нам участки в выводе команды ifconfig. Как видим все похоже на правду и интерфейс «поднят», то есть находится в рабочем режиме.
Для большей ясности разберем и некоторые другие параметры сетевого интерфейса:

  • MTU:1500 - это Maximum Transfer Unit. Различные сети и каналы передачи имеют разные скорости обмена. Это определяет максимальную длину пакета, пересылка которого с высокой вероятностью произойдет без ошибок. Для Ethernet - сетей значение MTU составляет 1500 байт.
  • Metric:1 - чем меньше это значение тем лучше считается маршрут до этой сети. На серверах скорее всего это менять не придется. Этот параметр играет большую роль в работе протоколов маршрутизации.
  • Сollisions:0 - нулевое значение говорит о том, что с сетевым интерфейсом все в порядке на физическом уровне.
  • RX bytes - сколько данных принято
  • TX bytes - сколько данных отослано

Так идем дальше. В примере выше, после настройки сетевого интерфейса мы полностью перезагружали службу network. Когда на сервере только один интерфейс это не страшно, но если их несколько и какие-то уже работают и выполняют свои функции прерывать их работу нежелательно. Тут нам на помощь приходит скрипт ifup/ifdown. Он нужен для перезагрузки какого либо одного сетевого интерфейса. Короткий пример.

Шаг 1. Вносим изменения в /etc/sysconfig/network-scripts/ifcfg-eth0

Шаг 2. # ifdown eth0

Шаг 3. # ifup eth0

Маршрутизация

Это процесс поиска наилучшего пути от источника к получателю. Это набор правил по которым будет передаваться трафик. Мы вроде бы с ней еще нечего не делали, но она уже у вас работает. Не верите? Сейчас проверим.

netstat – команда позволяющая отслеживать сетевые подключения сервера

# netstat -r
Kernel IP routing table

default 192.168.146.2 0.0.0.0 UG 0 0 0 eth0

В выводе мы увидим список сетей и как до них добраться. То есть какой шлюз использовать для достижения пункта назначения. Помните, когда мы настраивали сетевой интерфейс eth0 мы указали директиву GATEWAY в ifcfg-eth0 ? Этот gateway был помечен как default, то есть шлюз по умолчанию.

Весь трафик в сети, которые явно не описаны в таблице маршрутизации, отправляются через шлюз по умолчанию. В нашем случае default gateway -192.168.146.2

Вывод команды “netstat -r” нам говорит следующее:

Первая строка. Чтобы попасть в подсеть 192.168.146.0 нам не нужен никакой шлюз (*), поскольку мы и так находимся в этой сети

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

Genmask - это сетевая маска, благодаря маске можно отделить сетевую часть адреса от адреса хоста

Flags: U - это UP, то есть маршрут поднят и функционирует сейчас

Flags: UG - UP, Gateway. Маршрут поднят и использует gateway в своей работе

MSS – Maximum Segment Size, определяет максимальный размер пакета для этого маршрута.

Window – размер окна. Максимальный размер пакета, который система готова принять.

irtt - initial round trip time, задает значение которое используется при установке соединения. Round trip time – представляет из себя отрезок времени, если в течение которого от удаленного хоста не пришло подтверждение о получение пакета, пакет будет выслан снова.

Iface – показывает к какому интерфейсу относится маршрут

Прописываем маршруты

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

Приведу пример. У нас два сетевых интерфейса eth0 и eth1. Через eth0 мы получаем доступ во внешние сети и по умолчанию весь трафик направляется через него. Через eth1 мы получаем доступ ко внутренней сети 192.168.147.0/24 но что еще важнее, в этой сети есть сервер 192.168.147.1 у которого есть сетевой интерфейс в подсеть 192.168.148.0/24 и мы очень хотим туда попадать. А для того что туда попадать необходимо прописать правильные маршруты у себя в ОС.

Так выглядит таблица маршрутизации в нашем случае

# netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.147.0 * 255.255.255.0 U 0 0 0 eth1
192.168.146.0 * 255.255.255.0 U 0 0 0 eth0
192.168.148.0 192.168.147.1 255.255.255.0 UG 0 0 0 eth1
192.168.146.2 0.0.0.0 UG 0 0 0 eth0 default

То есть в подсеть 192.168.148.0/24 (внутренняя подсеть) мы попадаем через eth1 -> 192.168.147.1, сервер выполняющий роль шлюза в эту подсеть. Все остальное идет через default шлюз. Все очень просто. Ну и собственно как привести настройки к этому.

Шлюз по умолчанию

# cat /etc/sysconfig/network
...
GATEWAY=192.168.146.2
...
eth0
# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=00:0C:29:43:5B:3D
IPADDR=192.168.146.130
NETMASK=255.255.255.0
BROADCAST=192.168.146.255
ONBOOT=yes
eth1
# cat /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
ONBOOT=yes
HWADDR=00:0c:29:43:5b:47
IPADDR=192.168.147.2
NETMASK=255.255.255.0

И самое главное, файл в котором мы прописываем статический маршрут для eth1.

# cat /etc/sysconfig/network-scripts/route-eth1
192.168.148.0/24 via 192.168.147.1

Для того чтобы прописать маршруты для какого либо интерфейса, необходимо создать файл route-<название интерфейса> в каталоге /etc/sysconfig/network-scripts/ После того как все готово к работе, мы перезагружаем сетевой сервис.

# service network restart

Теперь подведем итоги, что и как мы сделали.

Есть три вида маршрутов. Динамические – которые динамически назначаются сетевому интерфейсу, например сервером DHCP. Статические – которые вы вручную прописываете и они остаются в настройках после перезагрузки сервера. И маршруты по умолчанию – когда никакие другие маршруты не подходят для того, чтобы отослать по ним пакеты.

Мы могли добавить маршрут в подсеть 192.168.148.0/24 командой route

# route add -net 192.168.148.0/24 gw 192.168.147.1

Но после перезагрузки сервера информация о маршруте пропала бы. Чтобы такого не произошло используется специальный механизм. А именно создание файла вида route-<имя интерфейса> в /etc/sysconfig/network-scripts В него мы вносим список сетей и как до них добраться. Каждая новая запись начинается с новой строки.

Про шлюз

Чтобы сервер был шлюзом для других компьютеров необходимо удовлетворить ряд условий:

  • На сервере корректная таблица маршрутизации благодаря которой он поймет что делать с пакетами дальше;
  • Включена передача пакетов между интерфейсами;
  • Включен маскарадинг (или установлен прокси) для нужной нам сети, например вот так (перенаправлять пакеты для хостов из подсети 192.168.146.0/24):

# iptables -t nat -A POSTROUTING -s 192.168.146.0/24 -j MASQUERADE

Полезные ключи netstat

  • r – показывает таблицу маршрутизации
  • n – выводит статистику по ip-адресу, не пытается определить имя хоста. Это работает несколько быстрее и обычно, вывод команды удобнее читать
  • a – показывает состояние всех сокетов на сервере. Сокет – это конечная точка сетевых коммуникаций. Каждый сокет имеет тип и ассоциированный с ним процесс.
  • t – протокол tcp
  • u – протокол udp
  • i – отображает таблицу сетевых интерфейсов
  • l – отображает сокеты в режиме LISTEN, то есть ожидающие соединения
  • p – показать PID (process ID) и имя программы с которой взаимодействует сокет

netstat на практике

Параметров выше вполне достаточно, чтобы многое узнать из жизни сетевых служб. Слушает ли кто нибудь 25-й порт?

# netstat -nlp | grep:25
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2710/sendmail:

Видим что 25-й порт слушает процесс sendmail с PID 2710

# ps ux | grep 2710
root 2710 0.0 0.7 8992 1836 ? Ss 11:17 0:00 sendmail: accepting connections

Посмотрим текущие ESTABLISHED-соединения по tcp, то есть с кем у нас есть подключение и по какому порту

# netstat -nt
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0::ffff:192.168.146.130:22::ffff:192.168.146.1:2642 ESTABLISHED
tcp 0 132::ffff:192.168.146.130:22::ffff:192.168.146.1:2027 ESTABLISHED

Как видим это только соединения по ssh
Также, будет полезно знать какие состояния бывают у сокетов:

  • ESTABLISHED – сокет с установленным соединением;
  • SYN_SENT – сокет в процессе установки соединения;
  • SYN_RECV – был принят запрос установки соединения из сети;
  • FIN_WAIT1 – сокет закрыт и соединение закрывается;
  • FIN_WAIT2 – сокет закрыт и сокет ждет закрытия соединения с удаленного хоста;
  • TIME_WAIT – сокет после своего закрытия, еще какое-то время принимает пакеты из сети;
  • CLOSED – сокет не используется;
  • CLOSE_WAIT – удаленный хост отключился, ожидаем закрытия сокета;
  • LAST_ACK – удаленный хост отключился и сокет закрыт. Ожиданиепотдверждения;
  • LISTEN – сокет ожидает входящие подключения;
  • CLOSING – оба сокета отключились но еще не все наши данные отосланы;
  • UNKNOWN – статус сокета неизвестен.

Мы научились настраивать один и более сетевых интерфейсов. Разобрались с маршрутизацией. Узнали какие файлы и как влияют на работу сети в 5. Сейчас мы познакомимся с двумя программами которые играют существенную роль в работе сети. Это программа nmap – которая сканирует порты удаленного хоста и сообщается какие порты на нем открыты. И программа tcpdump, она переводит вашу сетевую плату в режим promiscuous, что позволяет перехватывать весь трафик проходящий через карту.

Nmap позволяет сканировать удаленные компьютеры на предмет открытых портов. С более агрессивными опциями можно узнать версию ОС и некоторые другие вещи. Устанавливаем программу

# yum -y install nmap

Просканируем удаленный хост. Как видим есть кое что интересное.

# nmap -A -T5 192.168.146.132
Starting Nmap 4.11 (http://www.insecure.org/nmap/) at 2009-02-18 19:36 MSK
Interesting ports on unixbox (192.168.146.132):
Not shown: 1677 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 4.3 (protocol 2.0)
111/tcp open rpcbind 2 (rpc #100000)
935/tcp open status 1 (rpc #100024)
MAC Address: 00:0C:29:25:04:55 (VMware)
Device type: general purpose
Running: Linux 2.4.X|2.5.X|2.6.X
OS details: Linux 2.4.7 - 2.6.11
Uptime 0.195 days (since Wed Feb 18 14:55:10 2009)
Nmap finished: 1 IP address (1 host up) scanned in 14.239 seconds

У nmap много различных опций, подробнее о них можно прочитать в man nmap

Иногда в целях выявления неисправностей нам нужно выяснить, какие пакеты передаются по сети. Это не сложно сделать с помощью tcpdump. Слушаем весь трафик для MAC-адреса 00:a0:80:00:2f:fe на интерфейсе eth1

# tcpdump -n -i eth1 «ether host 00:a0:80:00:2f:fe»

Слушаем трафик для определенного ip-адреса и порта

# tcpdump -nn host 192.168.146.130 and port 22

Сканируем диапазон портов

# nmap -sT -p 13722-13783 linuxbox

Надеюсь, что данной информации будет достаточно. Если возникли какие-то вопросы, то пишите их в комментарии.

Много статей написано о том, как настроить мониторинг тех или иных устройств используя Zabbix сервер и Zabbix агенты. Но все примеры сводятся к тому, что ставится агент на компьютер например с windows добавляется узел сети на сервере как обычный агент (не активный) и все хорошо работает так как у них есть ip связность и они видят друг друга. В некоторых примерах показывают, как они пробрасываю порт, 10050 до устройства которое нужно мониторить и далее также настраивают.

Вот интересно, во всех этих примеров никто не говорит, что делать, когда устройств 100 и пробрасывать порт до них кажется не очень хорошей идеей!?

Но это все примеры, когда Zabbix сервер находится за NAT или вообще в маршрутизируемой сети с ip связностью. А что, если нужно мониторить действительно 100 и более устройств? Тут на помощь приходит работа zаbbix агента в активном режиме. Что значит активный режим? То, что не сервер будет периодически опрашивать агента, а наоборот агент будет подключаться к серверу смотреть какие данные он должен собирать и после сбора сам отправлять на сервер.

На эту тему много что написано, но конкретных примеров нет.

Поэтому в этой статье я опишу метод пошаговой настройки как роутеров, так и Zabbix сервера и агента, который мы применяем в нашей практике абоненсткого обслуживания серверов и сетевого оборудования . Я не в коем случаи не претендую на то, что мой вариант самый правильный:). Больше хочу помочь в понимании тем, кто только начал разбираться что да как.

Итак, у нас есть следующая схема

По понятным соображениям два последних октета белых ip буду затирать.

Сервер SRV03 находится за NAT, на маршрутизаторе MikroTik настроен srcnat masquerade на сеть 192.168.0.0\24

На сервер SRV03 ставим Zabbix agent

Строку Server и Server Active пишем белый ip нашего роутера на котором далее пробросим порт на Zabbix сервер. Закомментированные строки не учитываются.

Идем на MikroTik в сети LAN 2 и делаем правило проброса порт 10051 на наш заббикс сервер

Тесть все подключения, которые приходят на интерфейс ether1-WAN на порт 10051 отправлять на адрес 192.168.45.18 с портом 10051.

Теперь запустим наш Zabbix агент на сервере. Видим, в лог файле написано агент стартанул нормально, но при подключении не нашел активных проверок для хоста SRV03 то есть для себя.

Это то и понятно так как не чего нем еще не создано, сделаем это. Создадим узел сети с именем SRV03 именно с таким же, как и название сервера с другим работать не будет учтите это.

В поле интерфейсы агента пиши белый ip роутера (не серый ip самого сервера) за которым находиться наш SRV03 порт пишем 10051 (он по умолчания для активных проверок) и сохраняем.

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

По идеи в столбце доступность должно загорается зеленым «ZBX» но при работе агента в активном режиме этого не происходит, в обычном да загорается.

Проверить можно ли действительно все работает, можно добавив элементы данных и посмотреть приходят ли различные параметры с SRV03. У меня есть шаблон в нем уже созданы триггеры и элементы данных.

Заметьте, когда создаете ЭД надо выбирать Тип: Zabbix агент (активный).

Посмотри приходят ли данные и видим, что все работает.

Подведем итог

1) В конфиге Zabbix агента в Server Aktive пишем белый ip роутера за которым ZServer

2) На этом роутере пробрасывает порт 10051 до ZServera

3) Создаем узел сети с такие же именем, как и ПК один в один.

4) Добавляем элементы данных выбирая тип «: Zabbix агент (активный)».

5) И путь вас не смущает серый значок «ZBX»

Рассмотрим как установить и настроить Zabbix-агенты для наблюдения за системами ОС Windows и Linux . По данной у меня развернут Zabbix-сервер 3.2.5 , соответственно все агенты будут устанавливаться версии 3.2 .

Установка Zabbix-агента на ОС Windows

Скачиваем с оф. сайта Zabbix-агента для Windows систем.

Распаковываем скачанный архив и запускаем Командную строку от администратора . Переходим в каталог с установочными файлами агента (для корректной работы агента, учитываем разрядности системы):

Cd C:\zabbix_agents_3.2.0.win\bin\win64

Для установки одиночного экземпляра Zabbix-агента с файлом конфигурации c:\zabbix_agentd.conf по-умолчанию, выполняем:

Zabbix_agentd.exe --install

Так же есть возможность при установке указать путь к файлу конфигурации, отличный от c:\zabbix_agentd.conf . для этого выполняем:

Zabbix_agentd.exe --config <полный_путь_к_файлу_конфигурации> --install

Можно установить несколько экземпляров Zabbix агента службами, примерно следующим образом:

Zabbix_agentd.exe --config <файл_конфигурации_для_экземпляра_1> --install --multiple-agents zabbix_agentd.exe --config <файл_конфигурации_для_экземпляра_2> --install --multiple-agents ... zabbix_agentd.exe --config <файл_конфигурации_для_экземпляра_N> --install --multiple-agents

Настройка Zabbix-агента

Теперь нужно выполнить настройку файла конфигурации агента. Шаблон конфигурации находится в установочном каталоге агента в папке conf , файл zabbix_agentd.win.conf .

Если была выполнена обычная установка, то копируем шаблон zabbix_agentd.win.conf в корень диска C:\ и переименовываем файл в zabbix_agentd.conf .

Если была выполнена установка с указанием пути к файлу конфигурации, то копируем шаблон zabbix_agentd.win.conf в папку которую указывали при установке Zabbix-агента и переименовываем файл в zabbix_agentd.conf .

Выполняем настройку файла конфигурации. Приводим следующие параметры в файле к виду:

Server= ServerActive= HostnameItem=system.hostname

Запуск службы Zabbix-агента

Запускаем службу Zabbix-агента. Пуск Панель управления Администрирование Службы . Находим службу Zabbix Agent и нажимаем Запустить .

Запустить службу можно так же из командной строки . Для запуска одиночного экземпляра Zabbix-агента с файлом конфигурации по умолчанию:

Zabbix_agentd.exe --start

Для запуска одиночного экземпляра Zabbix-агента с отличным от умолчания файлом конфигурации:

Zabbix_agentd.exe --config <ваш_файл_конфигурации> --start

Для запуска одного из нескольких экземпляров Zabbix-агента:

Zabbix_agentd.exe --config <файл_конфигурации_этого_экземпляра> --start --multiple-agents

Остановка службы Zabbix-агента

Остановка службы Zabbix-агента. Пуск Панель управления Администрирование Службы . Находим службу Zabbix Agent и нажимаем Остановить

.

Остановка Zabbix-агента, который запущен с файлом конфигурации по умолчанию:

Zabbix_agentd.exe --stop

Остановка Zabbix-агента, который запущен с другим файлом конфигурации:

Zabbix_agentd.exe --config <ваш_файл_конфигурации> --stop

Остановка одного из нескольких экземпляров Zabbix-агента:

Zabbix_agentd.exe --config <файл_конфигурации_этого_экземпляра> --stop --multiple-agents

Удаление службы Zabbix-агента

Удаления Zabbix-агента, который использует файл конфигурации по-умолчанию:

Zabbix_agentd.exe --uninstall

УдаленияZabbix-агента, который не использует файлом конфигурации по-умолчанию:

Zabbix_agentd.exe --config <ваш_файл_конфигурации> --uninstall

Удаления нескольких экземпляров Zabbix-агента из служб Windows:

Zabbix_agentd.exe --config <файл_конфигурации_экземпляра_1> --uninstall --multiple-agents zabbix_agentd.exe --config <файл_конфигурации_экземпляра_2> --uninstall --multiple-agents ... zabbix_agentd.exe --config <файл_конфигурации_экземпляра_N> --uninstall --multiple-agents

Если удалить службу выше перечисленными способами не удается, то можно удалить службу средствами Windows, предварительно остановив работу службы и выполнив в командной строке с правами администратора:

Sc delete [имя службы]

На этом установка Zabbix-агента на ОС Windows завершена, теперь рассмотрим как установить агента на ОС Linux .

Установка Zabbix-агента на ОС Linux (Ubuntu, Debian)

Установку Zabbix-агента буду рассматривать на Ubuntu Server 14.04 .

Скачиваем необходимый пакет и устанавливаем его:

Wget http://repo.zabbix.com/zabbix/3.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.2-1+trusty_all.deb sudo dpkg -i zabbix-release_3.2-1+trusty_all.deb

Обновляем данные репозиториев и устанавливаем самого агента:

Sudo apt-get update sudo apt-get install zabbix-agent

Выполняем настройку Zabbix-агента, файл конфигурации располагается в /etc/zabbix/zabbix_agentd.conf . Отредактируем его:

Sudo nano /etc/zabbix/zabbix_agentd.conf

И вносим следующие изменения:

Server= ServerActive= HostnameItem=system.hostname Include=/etc/zabbix/zabbix_agentd.conf.d/

Сохраняем изменения в файле и перезапускаем службу Zabbix-агента :

Sudo service zabbix-agent restart

На этом установка и настройка Zabbix-агента выполнена. Теперь рассмотрим как заводить хосты на самом Zabbix-сервере .

Добавление хостов на Zabbix-сервер

Заходим на Zabbix-сервер , посредством Web-интерфейса. Переходим Настройка (Configuration)- Узлы сети (Hosts) и нажимаем Создать узел сети (Create host)

Вкладка Узел сети (Host). Задаем Имя узла сети (Host name), добавляем узел в группу, если нужной группы нет в списке, то в поле Новая группа (New Group) указываем название группы. В поле Интерфейсы агента , можно выбрать каким методом добавить узел сети, по IP-адресу или по его DNS имени.

Переходим во вкладку Шаблоны (Templates). В пункте Соединить с новыми шаблонами (Link new templates):

  • для Windows выбираем Template OS Windows
  • для Linux выбираем Template OS Linux

Нажимаем Добавить (Add), чтобы закрепить выбранный шаблон к данному узлу сети.

Видим что в графе Присоединенные шаблоны (Linked templates), появился выбранный шаблон. Нажимаем Добавить (Update).

Все теперь добавленный узел сети будет под присмотром Zabbix-сервера . Для наглядности процесса посмотрим мониторинг в действии, переходим Мониторинг Графики , выбираем какой график мы хотим посмотреть, в моем случае я выбрал отобразить сколько занято места на диске D .

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

1-го октября 2018 года вышла новая версия бесплатной системы мониторинга, которую я постоянно использую. Я подробно расскажу об установке и начальной настройке Zabbix 4.0 на примере систем CentOS, Debian, Ubuntu со скриншотами и пояснениями. В этой версии много интересных и полезных нововведений, так что посмотреть на неё однозначно стоит.

На сегодняшний день, по моему мнению, из бесплатных систем мониторинга именно Zabbix самая популярная и функциональная. Упоминания о ней я постоянно встречаю в технических статьях специалистов различного масштаба и организаций. К примеру, СберТех использует Zabbix как единую платформу мониторинга. ИТ отдел сети магазинов Магнит так же использует zabbix как основную систему мониторинга. Пару лет назад я смотрел выступление представителя ИТ отдела Магнита, где он подробно описывал структуру системы. На тот момент это была самая крупная инсталляция заббикса с тысячами прокси серверов для сбора данных из магазинов по всей стране. Упоминания о мониторинге заббикс я встречал у специалистов компаний 1С, Крок, Яндекс.Деньги и других. Перечислил только то, что запомнилось.

Нужно понимать, что Zabbix — система мониторинга общего назначения. У нее нет специализации в микросервисы, сеть, железо и т.д. В связи с этим, всегда может найтись инструмент, который сможет выполнять ту или иную задачу удобнее и эффективнее, чем zabbix. Но это не умоляет остальных достоинств системы. Я их вижу в первую очередь в том, что в ней можно настроить мониторинг всего, что угодно. Главное научиться подавать значения в систему. А для этого есть масса инструментов — как самих агентов, так и скриптов, которые можно подключать к сбору данных.

Система мониторинга Zabbix позволяет так или иначе завести на нее все обслуживаемые сервисы. Где-то это может быть не очень просто, но в любом случае, один универсальный инструмент удобнее, чем несколько. Мне всегда удавалось настроить желаемый мониторинг с помощью заббикса. Если не было готовых шаблонов или подходящих агентов для сбора, писал скрипты и передавал ими данные агенту. С моими (и не только) решениями по мониторингу можете познакомиться в отдельном разделе .

Чем меня еще подкупает zabbix — хорошая документация и большое комьюнити. Много выступлений от различных специалистов с описанием внедрений. Все это облегчает работу с системой. Проще принять решение как поступить в той или иной ситуации. Сами разработчики постоянно проводят встречи, приглашают выступающих, потом выкладывают видео. В общем, система со всех сторон оставляет благоприятное впечатление.

Я буду устанавливать и настраивать работу сервера zabbix на nginx, что несколько отличается от дефолтной установки, которая включает в себя веб сервер apache. В связи с этим, нам необходимо будет подготовиться.

Подготовка сервера CentOS к установке

Первым делом вам необходимо и сервер CentOS 7. Перед установкой сервера Zabbix нам также нужно подготовить Web сервер. У меня есть отдельная статья по . Там все подробно описано. Сейчас же я кратко и без лишних комментариев выполню минимум необходимых действий для работы заббикса. Так же я не буду останавливаться на . Эта отдельная тема и мне не хочется ее касаться в этой статье. Либо настройте сами по моим инструкциям, либо просто отключите firewall:

# systemctl stop firewalld # systemctl disable firewalld

Подключаем репозиторий nginx и устанавливаем его:

# rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm # yum install nginx

Запускаем nginx и добавляем в автозагрузку.

Проверяем, работает ли он. Для этого открываем в браузере ссылку http://192.168.13.117/, где 192.168.13.117 — ip адрес настраиваемого сервера.

Если у вас не работает nginx, разберитесь с ним, прежде чем двигаться дальше. В первую очередь проверьте настройки фаервола.

# yum install epel-release # rpm -Uhv http://rpms.remirepo.net/enterprise/remi-release-7.rpm

Активируем репу remi-php71, для этого выполняем команды:

# yum install yum-utils # yum-config-manager --enable remi-php71

Устанавливаем php 7.1 и модули к нему.

# yum install php71 php-fpm php-cli php-mysql php-gd php-ldap php-odbc php-pdo php-pecl-memcache php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap php-bcmath

Запускаем php-fpm и добавляем в автозагрузку.

# systemctl start php-fpm # systemctl enable php-fpm

Проверяем, запустился ли он.

# netstat -tulpn | grep php-fpm tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 13261/php-fpm: mast

Все в порядке, запустился на порту 9000. Запустим его через unix сокет. Для этого открываем конфиг /etc/php-fpm.d/www.conf и комментируем строку:

# mcedit /etc/php-fpm.d/www.conf ;listen = 127.0.0.1:9000

Вместо нее добавляем несколько других:

Listen = /var/run/php-fpm/php-fpm.sock listen.mode = 0660 listen.owner = nginx listen.group = nginx

Заодно измените пользователя, от которого будет работать php-fpm. Вместо apache укажите nginx, отредактировав соответствующие параметры.

User = nginx group = nginx

Перезапускаем php-fpm.

# systemctl restart php-fpm

Проверяем, стартовал ли указанный сокет.

# ll /var/run/php-fpm/php-fpm.sock srw-rw----. 1 nginx nginx 0 Oct 4 15:08 /var/run/php-fpm/php-fpm.sock

На текущий момент с настройкой php-fpm закончили. Продолжаем подготовку сервера к установке zabbix.

Устанавливаем свежую версию MariaDB. Подключаем репозиторий. Для этого создаем файл /etc/yum.repos.d/mariadb.repo следующего содержания.

# mcedit /etc/yum.repos.d/mariadb.repo # MariaDB 10.3 CentOS repository list - created 2018-10-04 12:10 UTC # http://downloads.mariadb.org/mariadb/repositories/ name = MariaDB baseurl = http://yum.mariadb.org/10.3/centos7-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1

Устанавливаем последнюю версию mariadb на centos.

# yum install MariaDB-server MariaDB-client

Запускаем mariadb и добавляем в автозагрузку.

# systemctl start mariadb # systemctl enable mariadb

Внесем некоторые изменения в стандартный конфиг mariadb, чтобы потом не заниматься . Для этого открываем конфиг mysql /etc/my.cnf.d/server.cnf и приводим его к следующему виду.

# mcedit /etc/my.cnf.d/server.cnf port = 3306 socket = /var/lib/mysql/mysql.sock default-character-set=utf8 character_set_server=utf8 collation-server=utf8_bin init_connect="SET NAMES utf8 collate utf8_bin" port = 3306 socket = /var/lib/mysql/mysql.sock innodb_file_per_table=1 innodb_buffer_pool_size = 768M # внимание на параметр! установить примерно в 2 раза меньше объема оперативной памяти сервера innodb_buffer_pool_instances=1 # увеличивать на 1 каждый GB innodb_buffer_pool_size innodb_flush_log_at_trx_commit = 0 innodb_log_file_size = 512M innodb_log_files_in_group = 3

Я добавил минимум настроек, отличных от дефолта. В статье про оптимизацию mysql их приведено гораздо больше, но со временем я понял, что зря это сделал. Реально у меня нет большого опыта в тонкой настройке mysql. Никаких тестов и проверок я не делал, а данные брал на основе других статей в интернете. Не факт, что там не было ошибок. В итоге сейчас тут только заданы некоторые важные параметры по innodb, в частности указание хранить каждую таблицу в отдельном файле, задан размер и количество бинарных логов и еще пару настроек, которые явно будут к месту (innodb_buffer_pool_size, innodb_buffer_pool_instances и innodb_flush_log_at_trx_commit). При желании, вы можете сами заняться тюнингом mysql. В общем случае, достаточно будет текущих настроек.

# systemctl restart mariadb # systemctl status mariadb.service

Сервер баз данных mysql для нашего zabbix сервера готов. На этом предварительные настройки сервера закончены. Приступаем к установке.

Установка сервера Zabbix 4.0 в CentOS

Для того, чтобы установить Zabbix Server 4.0 нужно подключить репозиторий актуальной версии.

# rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm Retrieving https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm warning: /var/tmp/rpm-tmp.fCWryx: Header V4 RSA/SHA512 Signature, key ID a14fe591: NOKEY Preparing... ################################# Updating / installing... 1:zabbix-release-4.0-1.el7 #################################

Устанавливаем сам сервер заббикса.

# yum install zabbix-server-mysql zabbix-web-mysql

В зависимостях пакетов будет httpd, который нам не нужен, так как у нас будет nginx и php7.1, но я не разбирался, как поставить без него. После установки пакетов, создадим базу данных, пользователя zabbix и заполним базу.

# mysql -uroot -p Enter password: > create database zabbix character set utf8 collate utf8_bin; > grant all privileges on zabbix.* to zabbix@localhost identified by "zabpassword"; exit # zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix

Этих минимальных настроек достаточно, для работы сервера. Я рекомендую увеличивать параметр Timeout , так как он отвечает за время ожидания ответа от агента, snmp устройства или внешней проверки. Иногда стандартного значения в 4 секунды бывает недостаточно. В частности, когда используется какой-то скрипт, который долго выполняется для получения метрики. Поставьте секунд 10.

Проверяем лог файл на наличие ошибок.

# cat /var/log/zabbix/zabbix_server.log

Настройка SELinux с zabbix

Если у вас включен SELinux, получите ошибку.

Cannot start preprocessing service: Cannot bind socket to "/var/run/zabbix/zabbix_server_preprocessing.sock": Permission denied.

Это нормально, сейчас настроим SELinux для нормальной работы Zabbix. Для этого устанавливаем пакет policycoreutils-python, скачиваем готовый модуль для SELinux и применяем его.

# yum install policycoreutils-python # cd ~ # curl https://support.zabbix.com/secure/attachment/53320/zabbix_server_add.te > zabbix_server_add.te # checkmodule -M -m -o zabbix_server_add.mod zabbix_server_add.te # semodule_package -m zabbix_server_add.mod -o zabbix_server_add.pp # semodule -i zabbix_server_add.pp

Теперь нам надо перезапустить zabbix-server.

# systemctl restart zabbix-server

Если у вас это не получится сделать через systemctl, значит служба зависла. Завершаем ее принудительно и запускаем снова.

# kill -9 `pidof zabbix_server` # systemctl start zabbix-server

Снова проверяйте log файл. Теперь ошибок быть не должно. Как я уже сказал, если у вас отключен SELinux, то делать описанные выше манипуляции с модулем не надо.

С серверной частью закончили. Нам нужно сделать конфиг nginx для работы web интерфейса zabbix. Если у вас nginx работает на том же сервере, где сам zabbix, и других виртуальных хостов нет и не будет, то правьте сразу дефолтный — /etc/nginx/conf.d/default.conf

# mcedit /etc/nginx/conf.d/default.conf server { listen 80; server_name localhost; root /usr/share/zabbix; location / { index index.php index.html index.htm; } location ~ \.php$ { fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; fastcgi_param PHP_VALUE " max_execution_time = 300 memory_limit = 128M post_max_size = 16M upload_max_filesize = 2M max_input_time = 300 date.timezone = Europe/Moscow always_populate_raw_post_data = -1 "; fastcgi_buffers 8 256k; fastcgi_buffer_size 128k; fastcgi_intercept_errors on; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; } }

Маленький, но важный нюанс. Нам надо изменить права доступа на некоторые папки. Назначить владельца nginx.

# chown -R nginx:nginx /var/lib/php/session # chown -R nginx:nginx /etc/zabbix/web

Этот шаг нужно будет проделывать после каждого обновления php или zabbix. Связано с тем, что по-умолчанию zabbix идет в комплекте с apache и рассчитан на работу с ним. Поэтому после установки или обновления, он делает его владельцем директории /etc/zabbix/web .

Даем разрешения SELinux для работы заббикса с web сервером и базой данных.

# setsebool -P httpd_can_connect_zabbix on # setsebool -P httpd_can_network_connect_db on

Я не знаю, насколько последняя настройка актуальна, если подключение к БД локальное. У разработчиков в инструкции сказано, что в случае с postgresql даже если подключаетесь через 127.0.0.1, разрешение выдавать нужно. Насчет mysql нет комментариев.

С серверной частью закончили. Для продолжения установки zabbix сервера переходим к .

Установка сервера Zabbix 4.0 в Ubuntu, Debian

С установкой Zabbix на сервер с Ubuntu или Debian попроще, так как в стандартных репозиториях посвежее версии софта, можно использовать их. Подключаем репозитории zabbix 4.0.

# wget https://repo.zabbix.com/zabbix/4.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.0-2+bionic_all.deb # dpkg -i zabbix-release_4.0-2+bionic_all.deb

# wget https://repo.zabbix.com/zabbix/4.0/debian/pool/main/z/zabbix-release/zabbix-release_4.0-2+stretch_all.deb # dpkg -i zabbix-release_4.0-2+stretch_all.deb

Если у вас другие версии систем, то простой найдите ссылки пакетов под свою версию в официальном репозитории - https://repo.zabbix.com/zabbix/4.0/ Дальнейшая установка не будет отличаться от текущей.

Обновляем информацию о репозиториях, а заодно и последние обновления поставим:

# apt update && apt upgrade

Устанавливаем zabbix сервер:

# apt install zabbix-server-mysql zabbix-frontend-php

Он по-умолчанию ставится с apache, который сразу же запускается. Остановим его и отключим:

# systemctl stop apache2 # systemctl disable apache2

Ставим отдельно nginx и php-fpm:

# apt install nginx php-fpm

Запускаем скрипт начальной конфигурации mysql и задаем пароль для root. Все остальное можно оставить по-умолчанию.

# /usr/bin/mysql_secure_installation

Отредактируем некоторые параметры Mariadb в конфиге /etc/mysql/mariadb.conf.d/50-server.cnf . Добавляем туда в секцию :

# mcedit /etc/mysql/mariadb.conf.d/50-server.cnf innodb_file_per_table=1 innodb_buffer_pool_size = 768M # внимание на параметр! установить примерно в 2 раза меньше объема оперативной памяти сервера innodb_buffer_pool_instances=1 # увеличивать на 1 каждый GB innodb_buffer_pool_size innodb_flush_log_at_trx_commit = 0 innodb_log_file_size = 512M innodb_log_files_in_group = 3

Перезапустите mariadb и убедитесь, что она запустилась.

# systemctl restart mariadb # netstat -tulnp | grep mysqld tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 16753/mysqld

Cоздадим базу данных, пользователя zabbix, и заполним базу.

# mysql -uroot -p Enter password: > create database zabbix character set utf8 collate utf8_bin; > grant all privileges on zabbix.* to zabbix@localhost identified by "zabpassword"; exit # zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -uzabbix -p zabbix

Теперь редактируем файл конфигурации сервера заббикс. Прописываем данные для подключения к БД, отключаем ipv6 и увеличиваем стандартный timeout.

# mcedit /etc/zabbix/zabbix_server.conf

Изменяем указанные строки, остальные не трогаем:

DBHost=localhost DBName=zabbix DBUser=zabbix DBPassword=zabpassword ListenIP=0.0.0.0 Timeout=10

Этих минимальных настроек достаточно, для работы сервера. Я рекомендую увеличивать параметр Timeout, так как он отвечает за время ожидания ответа от агента, snmp устройства или внешней проверки. Иногда стандартного значения в 4 секунды бывает недостаточно. В частности, когда используется какой-то скрипт, который долго выполняется, для получения метрики. Поставьте секунд 10.

Запускаем zabbix и добавляем в автозагрузку.

# systemctl start zabbix-server # systemctl enable zabbix-server

Проверяем запустился ли.

# netstat -tulnp | grep zabbix_server tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 16847/zabbix_server

Все в порядке. Запускаем nginx, который у нас будет выступать в качестве web сервера.

# systemctl start nginx # systemctl enable nginx

Убедимся, что в качестве web сервера работает nginx.

# netstat -tulnp | grep 80 tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 17075/nginx: master tcp6 0 0:::80:::* LISTEN 17075/nginx: master

Нам нужно сделать конфиг nginx для работы web интерфейса zabbix. Если у вас nginx работает на том же сервере, где сам zabbix, и других виртуальных хостов нет и не будет, то правьте сразу дефолтный - /etc/nginx/sites-available/default . Приводим его к следующему виду:

# mcedit /etc/nginx/sites-available/default server { listen 80; server_name localhost; root /usr/share/zabbix; location / { index index.php index.html index.htm; } location ~ \.php$ { fastcgi_pass unix:/run/php/php7.2-fpm.sock ; # проверьте этот путь, для разных версий php он будет разный fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; fastcgi_param PHP_VALUE " max_execution_time = 300 memory_limit = 128M post_max_size = 16M upload_max_filesize = 2M max_input_time = 300 date.timezone = Europe/Moscow always_populate_raw_post_data = -1 "; fastcgi_buffers 8 256k; fastcgi_buffer_size 128k; fastcgi_intercept_errors on; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; } }

Проверим конфиг на ошибки и если все в порядке, перезапустим nginx.

# nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful # nginx -s reload

С серверной частью закончили. Для продолжения установки zabbix сервера переходим к настройке Zabbix Frontend.

Настройка Zabbix Frontend

Идем в браузер и открываем адрес http://192.168.13.117. Вы должны увидеть установщик Zabbix 4.0.

Нажимаем Next step и начинаем настройку web интерфейса. На следующей странице будет проверка требований. У вас должны быть выполнены все требования. В зависимости от системы и версии php, информация будет в каждом случае разниться.

На следующем этапе указываем параметры доступа к базе данных, потом Zabbix server details. Там можно ничего не указывать, а оставить дефолтные параметры. Потом будет страница с проверкой введенных данных. Если все в порядке, то заканчивайте установку. В конце увидите сообщение: Congratulations! You have successfully installed Zabbix frontend.

После нажатия на Finish увидите окно авторизации Zabbix сервера.

Стандартная учетная запись для входа в web интерфейс zabbix следующая:

  • Пользователь Admin
  • Пароль zabbix

После логина увидите стандартный dashboard.

На этом установка бесплатного сервера мониторинга zabbix окончена. Можно приступать к настройке.

Настройка Zabbix Server

Создание учетной записи и смена пароля

Первое, что нужно сделать — сменить стандартные учетные данные для входа. Можно просто поменять пароль пользователя admin, но лучше создать новую учетную запись с правами суперпользователя, а админа удалить. Для этого идем в раздел Administration -> Users и нажимаем Create User .

Заполняем все необходимые поля. Можно выбрать русский язык. Обычно я стараюсь работать в английском, но в случае с заббиксом можно сделать исключение. Он очень качественно локализован и проблем не возникает. Не забудьте зайти во вкладку Permissions и выбрать User type — Zabbix Super Admin.

Теперь можно зайти под новым пользователем, а Admin удалить. Но система не даст его удалить, так как он является владельцем некоторых объектов:

  • карты сети — Local Network
  • комплексного экрана Zabbix server
  • панелей Global view и Zabbix server health

Они создаются автоматически при установке заббикса. Вам нужно сменить у них владельца на нового пользователя. После этого стандартного админа можно будет удалить.

Настройка email оповещений

Дальше нужно настроить очень важную часть системы мониторинга — уведомления на email. Без нее система мониторинга не выглядит целостной и полноценной. Zabbix сервер поддерживает отправку почты через сторонние smtp серверы. Настроим один из них. Для этого идем в раздел Администрирование -> Способы оповещений и нажимаем на Email .

Покажу на примере настроек ящика в Яндексе.

Это мы настроили адрес отправки. Теперь нужно пользователю добавить адрес для получения оповещений. Для этого идем в Администрирование -> Пользователи , выбираем своего пользователя. Идем во вкладку Оповещения и жмем Добавить . Добавляйте свой ящик и нажимайте Обновить .

Зайдите еще раз в учетную запись и убедитесь, что ящик добавили.

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

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

Мне мой вид кажется более наглядным. Шаблон меняет на следующий:

{HOST.NAME} - {TRIGGER.STATUS}: {TRIGGER.NAME}

Он одинаковый и для проблемы, и для восстановления.

Изменение стандартных шаблонов мониторинга

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

  1. В шаблоне Template App Zabbix Agent отключаю триггер Version of zabbix_agent(d) was changed on {HOST.NAME} . Если его оставить, то после каждого обновления zabbix агента вы будете получать уведомление. Лично мне эта информация не нужна.
  2. В шаблоне Template OS Linux меняю в триггере Disk I/O is overloaded on {HOST.NAME} значение со стандартных 20% до 50%. Я считаю, что начинать беспокоиться и смотреть на машину надо при этом значении. Но вы можете подобрать под свои нужды.
  3. В этом же шаблоне в правиле обнаружения Mounted filesystem discovery добавляю еще один прототип триггера, скопировав Free disk space is less than 20% on volume {#FSNAME} . Новый шаблон полностью идентичен скопированному, только вместо 20% указываю 5% и ставлю важность с «Предупреждение» на «Высокая». Я добавляю еще одно оповещение, если свободного места на дисках остается меньше 5%. Стандартные 20% очень высокий порог, особенно если большой диск. Оперативное решение проблемы не требуется. Из-за этого часто откладываешь чистку диска на потом и забываешь о ней. Теперь будет еще один страховочный триггер, после которого точно надо идти и прямо сейчас разбираться с местом. В триггере на 20% свободного места ставлю разрешение на закрытие триггера вручную.
  4. В этом же шаблоне в триггере Lack of free swap space on {HOST.NAME} меняю порог срабатывания с 50% до 20%, либо вообще отключаю его. Сейчас много серверов работают без swap. Хотя лично я всегда его создаю и подключаю.
  5. В шаблоне Template OS Windows отключаю Правило обнаружения Windows service discovery . В дефолтном варианте оно генерирует очень много ненужных итемов и оповещений. Если нужен мониторинг какой-то службы windows, я делаю для этого отдельный шаблон.

Общие настройки

В общих настройках zabbix server, которые располагаются в разделе Администрирование -> Общие я меняю следующие параметры:

  1. В разделе Рабочее время выставляю актуальные рабочие часы.
  2. В разделе Опции отображения триггеров меняю значения Отображать триггеры в состоянии ОК в течении и Мигание триггеров при изменении состояния на 1 минуту. Это просто мои предпочтения. Мне не нравится, когда триггеры долго мигают, либо висят уже закрытые.
  3. В разделе Прочее меняю Обновление неподдерживаемых элементов данных на 1 минуту. Это актуально во время отладки новых шаблонов.

Установка Zabbix Agent на Linux

Если вы хотите установить zabbix-agent на сам сервер мониторинга, то ничего делать не надо, кроме самой установки. Для других систем необходимо подключить репозитории заббикса, которые мы использовали во время установки сервера. Можете посмотреть их в соответствующих разделах для своей системы.

Установка zabbix agent в Centos:

# yum install zabbix-agent

Тоже самое в Ubuntu/Debian:

# apt install zabbix-agent

Для работы с сервером, который установлен локально на этой же машине, больше никаких настроек не надо делать. Если же вы будете устанавливать zabbix agent на другую машину, то в файле конфигурации агента /etc/zabbix/zabbix_agentd.conf нужно будет задать следующие параметры:

# mcedit /etc/zabbix/zabbix_agentd.conf Server=192.168.13.117 ServerActive=192.168.13.117 Hostname=srv10 # имя вашего узла мониторинга, которое будет указано на сервере zabbix, Zabbix server если это сам сервер заббикса

Запускаем агент и добавляем в автозагрузку:

# systemctl start zabbix-agent # systemctl enable zabbix-agent

Проверяем лог файл.

# cat /var/log/zabbix/zabbix_agentd.log 14154:20181004:201307.800 Starting Zabbix Agent . Zabbix 4.0.0 (revision 85308). 14154:20181004:201307.800 **** Enabled features **** 14154:20181004:201307.800 IPv6 support: YES 14154:20181004:201307.800 TLS support: YES 14154:20181004:201307.800 ************************** 14154:20181004:201307.800 using configuration file: /etc/zabbix/zabbix_agentd.conf 14154:20181004:201307.800 agent #0 started 14157:20181004:201307.801 agent #3 started 14159:20181004:201307.802 agent #5 started 14155:20181004:201307.804 agent #1 started 14158:20181004:201307.806 agent #4 started 14156:20181004:201307.810 agent #2 started

Все в порядке. Идем в веб интерфейс и проверяем поступление данных. Для этого идем в раздел Мониторинг -> Последние данные . Указываем в разделе Узлы сети Zabbix Server и ждем поступления первых данных. Они должны пойти через 2-3 минуты после запуска агента.

Теперь попробуем остановить агент и проверить, придет ли уведомление на почту. Идем в консоль и выключаем агента:

# systemctl stop zabbix-agent

Ждем минимум 5 минут. Именно такой интервал указан по-умолчанию для срабатывания триггера на недоступность агента. После этого проверяем главную панель, виджет Проблемы .

Одной из отличительных возможностей мониторинга Zabbix, является использование агентов. Zabbix Agent — это специальная программа которая устанавливается на системе о которой нужна информация и общается с сервером. Сервер в свою очередь рисует нужные графики. Простота в использовании очень ускоряет настройку хостов и графиков, так как на просматриваемом хосте нам нужен только агент и больше никаких настроек производить не потребуется.Zabbix Agent поставляется для Windows и Linux\Unix like систем. В этой статье мы рассмотрим установку и настройку как на Windows , так и на Linux (дистрибутив Ubuntu ) хост.

Установка на хост с ОС Windows

Первым шагом будет конечно же скачивание и установка агента. Для начала скачивания перейдите пожалуйста по ссылке . Скачали архив, распаковали и видим 2 папки, одна с установщиками для разных систем, вторая с примером файла конфигурации. Распакуем на диск С:\ файл конфигурации и установщик для вашей системы(32/64bit ).

Перед установкой нужно внести изменения в файл конфигурации. Откроем файл, ищем строки и подставляем свои значения.

LogFile={путь к логфайлу} Server={ip адрес zabbix сервера} Hostname={имя хоста}

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

Откроем командную строку и переходим в корень диска C:\ , делается это командой cd C:\ . Если установщик вы распаковали не в корень, а в иную папку, перейдите в эту директорию. Выполняем команду zabbix_agentd.exe --install .
Если файл конфигурации находится не в корне или имеет имя отличное от стандартного, выполните zabbix_agentd.exe --config {файл_конфигурации} --install .
Если установка прошла успешно, выполняем zabbix_agentd.exe --start . Теперь zabbix agent работает как сервис в нашей системе. Для того чтобы узнать какие параметры агент будет отправлять серверу можно выполнить команду zabbix_agentd.exe --print .

Установка на хост с ОС Ubuntu

Для скачивания агента для вашей системы нужно перейти по ссылке . Ищем нужный нам файл, при помощи команд скачиваем и устанавливаем, у меня они выглядят таким образом:

Cd /tmp wget http://repo.zabbix.com/zabbix/3.0/ubuntu/pool/main/z/zabbix/zabbix-agent_3.0.0-1+trusty_amd64.deb dpkg -i zabbix-agent_3.0.0-1+trusty_amd64.deb

Если в процессе установки возникают проблемы с зависимости и выскакивает ошибка, что чего-то не хватает, выполняем команду apt-get -f install .

Исполняемый файл агента находится по адресу /usr/sbin/zabbix_agentd , файл конфигурации /etc/zabbix/zabbix_agentd.conf . Файл конфигурации такой же как и для Windows ОС. Поэтому настройка идентична. Единственным нюансом является то, что агент нужно запускать от имени отдельного пользователя, если вы не используете агент на машине вместе с сервером, то можно оставить пользователя zabbix , однако, если используется на одной машине вместе с сервером, желательно изменить пользователя на другого, делается это в файле конфигурации редактированием параметра User .

Запускаем агент командой /usr/sbin/zabbix_agentd и переходим к шагу добавления хоста в панель управления Zabbix .

Настройка хостов

С установкой агента закончили, теперь нужно создать и настроить хост в панели управления zabbix. Переходим в Configuration->Hosts->Create host .

Host Name - имя хоста которое мы прописывали в конфиге Zabbix agent; Groups - группа к которой относится хост; Agent interfaces - заполняем ip адрес хоста и нажимаем "add" ;

Теперь переходим на вкладку «Templates» , нажимаем «Select» из списка выбираем «Template OS Windows» , после чего нажимаем на ссылку(не кнопку) «Add» . Все, шаблон добавили, нажимаем кнопку «Add» и наш хост добавлен.

Теперь осталось немного подождать пока графики заполнятся данными и их можно будет увидеть в разделе «Dashboard->Graphs» .


Как видите, особых сложностей с добавлением хостов с ОС Windows/Linux на борту нету. В следующей статье я опишу процесс создания шаблона для сетевого оборудования D-link.

Если у вас возникли трудности или проблемы с установкой и настройкой, пишите ваши комментарии, обязательно разберемся.