Мне нужно чтобы мой сервис мониторинга Zabbix 4.4 мог удаленно взаимодействовать с системой Debian 10 Buster на которой у меня развернут гипервизор Proxmox 6. Т.е. если я создам в Web-интерфейсе Zabbix – Администрирование – Скрипты – Создать скрипт, то после имея карту устройств через щелчок по узлу смогу выбирать данные скрипты, и они будут отрабатывать или же будут настроены действия. Пока я еще не совсем понимаю, как буду задействовать, но хочу подготовить шаги.

Исходные данные:

  • Srv-zabbix – развернут по заметке и имеет IP адрес: 172.33.33.117
  • Srv-proxmox – гипервизор Debian 10 + Proxmox 6 развернут по заметке

Задача: Разобрать, как настроить SSH взаимодействие:

ekzorchik@srv-zabbix:~$ cat /etc/passwd | grep zabbix

zabbix:x:108:116::/var/lib/zabbix/:/usr/sbin/nologin

ekzorchik@srv-zabbix:~$ sudo ls -l /var/lib/zabbix

ls: cannot access '/var/lib/zabbix': No such file or directory

ekzorchik@srv-zabbix:~$ test -d /var/lib/zabbix/ || sudo mkdir /var/lib/zabbix

ekzorchik@srv-zabbix:~$ sudo nano /etc/zabbix/zabbix_server.conf

SSHKeyLocation=/var/lib/zabbix/.ssh

ekzorchik@srv-zabbix:~$ sudo chown root:zabbix /var/lib/zabbix

ekzorchik@srv-zabbix:~$ sudo chmod 770 /var/lib/zabbix

ekzorchik@srv-zabbix:~$ sudo -u zabbix ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/var/lib/zabbix//.ssh/id_rsa): нажимаю клавишу <ENTER>

Created directory '/var/lib/zabbix//.ssh'.

Enter passphrase (empty for no passphrase): нажимаю клавишу <ENTER>

Enter same passphrase again: нажимаю клавишу <ENTER>

Your identification has been saved in /var/lib/zabbix//.ssh/id_rsa.

Your public key has been saved in /var/lib/zabbix//.ssh/id_rsa.pub.

The key fingerprint is:

SHA256:MsWtoa+/Gs9xDI76CNheegObdh6MmWbB8Zc6PwSXi4Y zabbix@srv-zabbix

The key's randomart image is:

+---[RSA 2048]----+

|                 |

|       . .       |

|  .    .+ .      |

| . o. o+ o       |

|  o..+*.S        |

| oE*ooo* o       |

|. O=*.o + o      |

| ++++*.= o       |

| .o++o=+=.       |

+----[SHA256]-----+

ekzorchik@srv-zabbix:~$

ekzorchik@srv-zabbix:~$ sudo apt-get -y install tree

ekzorchik@srv-zabbix:~$ sudo tree /var/lib/zabbix/.ssh

/var/lib/zabbix/.ssh

├── id_rsa – приватный ключ

└── id_rsa.pub – публичный ключ

0 directories, 2 files

ekzorchik@srv-zabbix:~$

Далее копирую публичный ключ Zabbix пользователя на сервер с которым посредством SSH проверок текущий Zabbix сервер будет взаимодействовать:

ekzorchik@srv-zabbix:~$ sudo -u zabbix /usr/bin/ssh-copy-id -i /var/lib/zabbix/.ssh/id_rsa.pub root@172.33.33.25

/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/var/lib/zabbix/.ssh/id_rsa.pub"

The authenticity of host '172.33.33.25 (172.33.33.25)' can't be established.

ECDSA key fingerprint is SHA256:dFYFun9pHUCq5N8EiqS9KTQGLhHJR2mwiJQvN16M+wg.

Are you sure you want to continue connecting (yes/no)? yes

mktemp: failed to create file via template ‘/home/ekzorchik/.ssh/ssh-copy-id_id.XXXXXXXXXX’: No such file or directory

/usr/bin/ssh-copy-id: ERROR: mktemp failed

ekzorchik@srv-zabbix:~$

Решение проблемы:

ekzorchik@srv-zabbix:~$ sudo nano /etc/passwd

было:

zabbix:x:108:116::/var/lib/zabbix/:/usr/sbin/nologin

изменил на:

zabbix:x:108:116::/var/lib/zabbix/:/bin/bash

ekzorchik@srv-zabbix:~$ sudo chmod -R 770 /var/lib/zabbix/

ekzorchik@srv-zabbix:~$ sudo chown -R root:zabbix /var/lib/zabbix/

ekzorchik@srv-zabbix:~$ sudo su - zabbix

zabbix@srv-zabbix:~$ ssh-copy-id root@172.33.33.25

/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/var/lib/zabbix//.ssh/id_rsa.pub"

/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed

/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys

root@172.33.33.25's password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@172.33.33.25'"

and check to make sure that only the key(s) you wanted were added.

zabbix@srv-zabbix:~$ ssh root@172.33.33.25

Linux srv-proxmox 5.0.21-3-pve #1 SMP PVE 5.0.21-7 (Mon, 30 Sep 2019 09:11:02 +0200) x86_64

The programs included with the Debian GNU/Linux system are free software;

the exact distribution terms for each program are described in the

individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent

permitted by applicable law.

Last login: Mon Nov 11 15:53:33 2019 from 172.33.33.117

root@srv-proxmox:~#

ekzorchik@srv-zabbix:~$ sudo nano /etc/passwd

было:

zabbix:x:108:116::/var/lib/zabbix/:/bin/bash

стало:

zabbix:x:108:116::/var/lib/zabbix/:/usr/sbin/nologin

ekzorchik@srv-zabbix:~$ sudo chown -R zabbix:zabbix /var/lib/zabbix/

ekzorchik@srv-zabbix:~$ sudo chmod -R 700 /var/lib/zabbix

ekzorchik@srv-zabbix:~$ sudo -u zabbix ssh root@172.33.33.25 "uname -a"

Linux srv-proxmox 5.0.21-3-pve #1 SMP PVE 5.0.21-7 (Mon, 30 Sep 2019 09:11:02 +0200) x86_64 GNU/Linux

ekzorchik@srv-zabbix:~$

Вот теперь другое дело.

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

Шаг №1: На Zabbix Server 4.4 создаю элемент хоста srv-proxmox (172.33.33.25)

http://IP&DNS/zabbix - user&pass - Настройка – Узлы сети – Создать узел сети

  • Имя узла сети: srv-proxmox
  • Группы: srv-proxmox
  • Интерфейс агента: 172.33.33.25:10050
  • Активировано: установлена галочка

И нажимаю «Добавить»

Шаг №2: Выношу на карту сетей хост Шага №1.

http://IP&DNS/zabbix - user&pass - Мониторинг – Карты сетей – Изменить карту сети – (Элемент карты сети) Добавить:

  • Тип: Узел сети
  • Подпись: {HOST.NAME}
  • Расположение подписи: По умолчанию
  • Узел сети: srv-proxmox
  • Иконки (По умолчанию): Server_(48)

(URLы)

  • Имя: proxmox
  • URL: https://{HOST.IP}:8006

И нажимаю «Добавить», а после «Применить», после «Закрыть», после «Обновить» — ОК для сохранения изменений на карте сетей.

Добавляю узел на карту сетей

Шаг №3: На Zabbix Server 4.4 создаю скрипт:

http://IP&DNS/zabbix - user&pass - Администрирование – Скрипты – Создать скрипт

  • Имя: CheckSpaceRoot
  • Тип: Скрипт
  • Выполнять на: Zabbix сервер
  • Команды: ssh -l root {HOST.IP} "df -H | egrep root"
  • Группа пользователей: Все
  • Группа узлов сети: Все
  • Требуемые права доступа к узлам сети: Чтение

И нажимаю «Добавить».

На заметку: Можно к примеру ограничить выполнение создаваемых скриптов для определенной группы узлов.

Шаг №4: Захожу в «Карты сетей» и через левый клик по узлу на карте выбираю свой скрипт:

http://IP&DNS/zabbix - user&pass - Мониторинг – Карты сетей – нажимаю на текущую с именем Local Network

На "Карте сетей" на добавленном узле вызываю созданный скрипт

Выбираю «Скрипт»: CheckSpaceRoot и вот результат работы скрипта:

Скритп на хосте успешно отработал

Отлично скрипт отработал.

А если через клик левой кнопкой мыши по «Узлу» выбрать (URLы): srv-proxmox текущая вкладка с Zabbix-сервером будет заменена на URL доступа к Web-панели администрирования Proxmox 6:

Также через "Карту сетей" можно зайти на Web-сервис хоста если такой имеется, как к примеру Proxmox 6

Итого я кратко познакомился, как настроить возможность Zabbix-сервера работать с хостами посредством SSH взаимодействия. Пока на этом всё, с уважением автор блога Олло Александр aka ekzorchik.