====== Zabbix LLD - это просто ======
* Мониторинг дисковой активности множества распределенных систем могут стать головной болью DevOps-инженера. Поручите эти задачу Zabbix, пусть он потревожит Вас тиолько когда это действительно нужно!
* Технология LLD, про которую все слышали, не так сложна в настройке, как кажется на первый вгляд. Перед Вами самый простой, но полезный пример использования низкоуровнего обнаружения в Zabbix.
===== Запись вебинара =====
* [[https://youtu.be/MEdVvZU18ek|Самый простой, но очень полезный пример использования низкоуровнего обнаружения (LLD) в Zabbix]]
===== Модуль 1. Штатный способ установки Zabbix в Debian 10 =====
* [[http://val.bmstu.ru/unix/img/My%20Documents/debian_10.0_64_01.ova|OVA образ Debian 10]]
debian login: root
Password:
# dhclient eth0
# ip a
* Подключаемся ssh клиентом
# apt update
# apt install zabbix-server-mysql zabbix-frontend-php php-mysql zabbix-agent jq sysstat
# dpkg -l | grep zabbix
...
...4.0.4...
...
# cat /etc/mysql/conf.d/my-custom-settings.cnf
[mysqld]
innodb_strict_mode=OFF
# service mysql restart
# mysql
> create database zabbix character set utf8 collate utf8_bin;
> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
# zcat /usr/share/zabbix-server-mysql/schema.sql.gz | mysql -uzabbix -pzabbix zabbix
# zcat /usr/share/zabbix-server-mysql/images.sql.gz | mysql -uzabbix -pzabbix zabbix
# zcat /usr/share/zabbix-server-mysql/data.sql.gz | mysql -uzabbix -pzabbix zabbix
# cat /etc/zabbix/zabbix_server.conf
...
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
#end newline!!!
# systemctl enable zabbix-server
# service zabbix-server start
# cat /etc/apache2/conf-available/zabbix-frontend-php.conf
...
php_value date.timezone Europe/Moscow
...
# a2enconf zabbix-frontend-php
# systemctl reload apache2
# cat /etc/zabbix/zabbix.conf.php
* [[http://IPADDRESS/zabbix/]]
===== Модуль 2. Zabbix LLD "на пальцах" =====
==== Zabbix агент и элементы мониторинга ====
=== Пример элемента в единственном экземпляре ===
# cat /proc/meminfo | grep MemAvailable
# zabbix_agentd -p | grep vm.memory.size
vm.memory.size[total] [u|2092417024]
* [[https://www.zabbix.com/documentation/4.0/ru/manual/appendix/items/vm.memory.size_params|Zabbix Documentation 4.0/ПАРАМЕТРЫ VM.MEMORY.SIZE]]
# zabbix_get -s 127.0.0.1 -k vm.memory.size[available]
=== Пример элемента в множественном экземпляре ===
# df -h /
# df -h /boot
# zabbix_agentd -p | grep vfs.fs.size
* [[https://www.zabbix.com/documentation/4.0/ru/manual/config/items/itemtypes/zabbix_agent|Zabbix Documentation 4.0/ZABBIX АГЕНТ]]
# zabbix_get -s 127.0.0.1 -k vfs.fs.size[/,free]
# zabbix_get -s 127.0.0.1 -k vfs.fs.size[/boot,free]
=== Получение списка элементов ===
# mount | grep ext
# zabbix_get -s 127.0.0.1 -k vfs.fs.discovery | jq
Configuration
Hosts
Zabbix server
Discovery rules
Mounted filesystem discovery
Filters
{#FSTYPE} matches @File systems for discovery
Item prototypes
Name
Free disk space on {#FSNAME}
Key
vfs.fs.size[{#FSNAME},free]
Administration
Regular expressions
File systems for discovery: ^(btrfs|ext2|ext3|ext4|reiser|xfs|ffs|ufs|jfs|jfs2|vxfs|hfs|refs|ntfs|fat32|zfs)$
===== Модуль 3. Использование LLD для решения новой задачи =====
# iostat
# zabbix_agentd -p | grep vfs.dev
* [[https://www.zabbix.com/documentation/4.0/ru/manual/config/items/itemtypes/zabbix_agent|Zabbix Documentation 4.0/ZABBIX АГЕНТ]]
* [[https://www.zabbix.com/documentation/4.4/ru/manual/config/items/itemtypes/zabbix_agent|Zabbix Documentation 4.4/ZABBIX АГЕНТ]]
# lsblk
# lsblk -dJ | jq
# lsblk -dJ | sed -e 's/blockdevices/data/' -e 's/name/{#DEVNAME}/g' -e 's/type/{#DEVTYPE}/g' | jq
# cat /etc/zabbix/zabbix_agentd.conf.d/vfs.dev.discovery.conf
UserParameter=vfs.dev.discovery,/bin/lsblk -dJ | /bin/sed -e 's/blockdevices/data/' -e 's/name/{#DEVNAME}/g' -e 's/type/{#DEVTYPE}/g'
# service zabbix-agent restart
# zabbix_agentd -p | grep vfs.dev
# zabbix_get -s 127.0.0.1 -k vfs.dev.discovery | jq
Configuration->Templates->Template OS Linux
Discovery rules->Create discovery rule
Name: Block devices discovery
Key: vfs.dev.discovery
Filters->
{#DEVTYPE} matches disk
Block devices discovery
Item prototypes->
Name: {#DEVNAME}: Disk read rate
Key: vfs.dev.read[{#DEVNAME},sps]
Type of information: Numeric (float)
Units: Байт
Applications: Filesystem
Preprocessing->
Preprocessing steps
Custom multiplier 512
Clone
Name: disk {#NAME} write bytes
Key: vfs.dev.write[{#DEVNAME},sps]
...
# mkfs.ext4 /dev/sdb
# mount /dev/sdb /mnt
# while true; do head -c 1G myfile;done
# while true; do grep `openssl rand -base64 12` myfile; done