Расширить диск zabbix appliance

Обновлено: 07.07.2024

Мне показалась полезной одна из статей официального блога Zabbix на тему размера базы данных. Решил ее перевести и поделиться с вами. Она будет более предметным дополнением к уже существующей моей статье на схожу тему - Очистка, оптимизация, настройка mysql базы Zabbix. Их бы по хорошему объединить в одну, но в рамках ведения блога это не всегда просто и удобно сделать.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на . Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Введение

  • Какие таблицы самые больше в базе данных Zabbix
  • Что за данные, занимающие больше всего места, поступают на сервер мониторинга
  • Каких данных больше всего, находящихся внутри одной partition в базе
  • Как посмотреть, какие хосты и айтемы занимают больше всего места в базе данных Zabbix

Если у вас еще нет своего сервера для мониторинга, то рекомендую материалы на эту тему. Для тех, кто предпочитает систему CentOS:

То же самое на Debian 10, если предпочитаете его:

Самые большие таблицы в бд zabbix

Следующие таблицы занимают больше всего места в базе данных:

Посмотреть в базе Mysql, какая из таблиц занимает больше всего места можно следующим образом:

Что занимает больше всего места в базе данных Zabbix

И то же самое в PostgreSQL:

Узнаем, откуда больше всего данных приходит в данный момент

Для того, чтобы узнать, кто за последние 30 минут больше всего пишет в конкретную таблицу базы данных, можно использовать следующий запрос:

Каких данных больше всего поступает в бд Zabbix

В моем примере это log файл secure, в который стекается информация об ssh подключениях. Она пишется в history_log. Если возьмете интервал побольше, то возможно там будет уже другой айтем. Для того, чтобы посмотреть информацию о числовых метриках, используйте другую таблицу, например history.

Самые объемные метрики за последний интервал времени

То же самое, для PostgreSQL:

Какие хосты занимают больше всего места

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

Какие хосты занимают больше всего места в базе данных Zabbix

Если взять таблицу history и интервал в 3 часа, то видно, что запрос выполняется значительно дольше. Объем данных тоже для моего примера заметно подрастет.

Объем метрик, поступивших за промежуток времени

Анализ партиционированых таблиц в Mysql

Если у вас настроено партиционирование, то размер таблиц можно смотреть на уровне файловой системы:

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

Очистка занимаемого места Zabbix в базе данных MySQL

Удаление хоста через GUI не гарантирует высвобождение места, которое его метрики занимали в базе. У вас просто останутся пустые строки, которые будут заполняться новыми данными. Если вы хотите освободить реально занимаемое место на диске, необходимо выполнить команду REBUILD для партиций. Их список можно посмотреть следующим образом:

И далее сделать rebuild:

Очистка занимаемого места Zabbix в базе данных PostgreSQL

В Postgresql есть отдельная служба, которая занимается очисткой базы данных - autovacuum. Для того, чтобы проверить, когда была последняя очистка, можно использовать запрос:

В выводе мы смотрим на n_dead_tup, что показывает "мертвые строки". Количество этих строк должно уменьшаться после выполнения autovacuum. Если подобных строк накапливается слишком много, можно увеличить частоту запуска autovacuum и его приоритет. Делается это с помощью следюущих параметров:

На этом по размеру таблиц и занимаемому месту на диске базы данных Zabbix все. Напоминаю, что это перевод с некоторыми моими дополнениями статьи из блога zabbix.

Онлайн курс "DevOps практики и инструменты"

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, научиться непрерывной поставке ПО, мониторингу и логированию web приложений, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров. Проверьте себя на вступительном тесте и смотрите программу детальнее по .

Помогла статья? Подписывайся на telegram канал автора

Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.

Автор Zerox

13 комментариев

Владимир огромное Вам спасибо за такое полезное дело не которое Вы делаете, публикуя подобного рода статьи!
У меня вопрос по поводу последнего пункта «Очистка занимаемого места Zabbix в базе данных MySQL», у Вас указанно что необходимо выполнить команду REBUILD для партиций, я пока в этом не очень хорошо понимаю, опыта маловато, но поправьте если я не прав. Портиции это грубо говоря набор файлов, содержащие в себе данные за определённый промежуток времени, определённой таблицы.
У меня возникло 2 вопроса:
1) Как быть в ситуации с REBUILD если у меня не настроено партицирование, но файл history_uint уже превышает 230Gb и занимает 90% пространства всего диска?
2) Если всё же настроено партицирование (отдельный файл хранящий данные за период времени), разве нельзя его просто удалить с диска?

1. Если не настроено партицирование, то очевидно, что rebuild Вам делать не надо. Вам нужно чистить данные и переходить на партиции. С таким объемом данных это уже давно пора сделать. Либо перейти на postgresql + timescaledb. Я бы лично делал второе, но переход сложнее будет, но в целом решаемо. В интернете есть пошаговые инструкции.
2. Можно. В статье rebuild делают, чтобы удалить данные от уже несуществующего хоста во всех партициях, а не только старых, которые будут удалены.

Понял, спасибо большое за ответ.
Под очисткой данных Вы имеете введу проделать удаление записей командами из статьи "Очистка, оптимизация, настройка mysql базы Zabbix"?
DELETE FROM history WHERE itemid NOT IN (SELECT itemid FROM items WHERE status='0');
DELETE FROM history_uint WHERE itemid NOT IN (SELECT itemid FROM items WHERE status='0');
DELETE FROM history_str WHERE itemid NOT IN (SELECT itemid FROM items WHERE status='0');
DELETE FROM history_text WHERE itemid NOT IN (SELECT itemid FROM items WHERE status='0');
DELETE FROM history_log WHERE itemid NOT IN (SELECT itemid FROM items WHERE status='0');
DELETE FROM trends WHERE itemid NOT IN (SELECT itemid FROM items WHERE status='0');
DELETE FROM trends_uint WHERE itemid NOT IN (SELECT itemid FROM items WHERE status='0');

После этого уменьшится ли физический размер файлов или они всё равно останутся того же размера?
history.ibd
history_uint.ibd
history_str.ibd
history_text.ibd
history_log.ibd
trends.ibd
trends_uint.ibd

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

Мне нужно очистить место на диске, так как вся база занимает 98% всего объёма диска.
В принципе основной большой файл это history_uint.ibd он занимает

88% объёма всего диска.
Вот я и ищу метод который позвполит освободить место на диске.
Подскажите, после команды
DELETE FROM history_uint WHERE itemid NOT IN (SELECT itemid FROM items WHERE status='0');
с удалением данных в таблице history_uint, сам файл history_uint.ibd станет меньше?

Нашел замечательный скрипт по чистки github com/zabbix-book/partitiontables_zabbix

Спасибо, любопытный скрипт. Надо будет потестировать.

SET @history_interval = 7;
SET @trends_interval = 90;

DELETE FROM alerts WHERE (UNIX_TIMESTAMP(NOW()) - clock) > (@history_interval * 24 * 60 * 60);
DELETE FROM acknowledges WHERE (UNIX_TIMESTAMP(NOW()) - clock) > (@history_interval * 24 * 60 * 60);
DELETE FROM events WHERE (UNIX_TIMESTAMP(NOW()) - clock) > (@history_interval * 24 * 60 * 60);

DELETE FROM history WHERE (UNIX_TIMESTAMP(NOW()) - clock) > (@history_interval * 24 * 60 * 60);
DELETE FROM history_uint WHERE (UNIX_TIMESTAMP(NOW()) - clock) > (@history_interval * 24 * 60 * 60);
DELETE FROM history_str WHERE (UNIX_TIMESTAMP(NOW()) - clock) > (@history_interval * 24 * 60 * 60);
DELETE FROM history_text WHERE (UNIX_TIMESTAMP(NOW()) - clock) > (@history_interval * 24 * 60 * 60);
DELETE FROM history_log WHERE (UNIX_TIMESTAMP(NOW()) - clock) > (@history_interval * 24 * 60 * 60);

DELETE FROM trends WHERE (UNIX_TIMESTAMP(NOW()) - clock) > (@trends_interval * 24 * 60 * 60);
DELETE FROM trends_uint WHERE (UNIX_TIMESTAMP(NOW()) - clock) > (@trends_interval * 24 * 60 * 60);

сохраняем
mysql -uroot -p
use zabbix;
source zabbix_cleanup.sql

Владимир, Благодарю Вас за прекрасный сайт. Вы делаете очень полезное дело. На сайте и в ваших работах вы используете системы мониторинга grafana и продукцию микротик. Было бы очень интересно, если вы сделаете инструкцию по настройке мониторинга роутера mikrotik через сервер prometheus + grafana. в интернете нет статей, написанных популярным языком, как осуществить данную операцию, хотя snmp_exporter есть на github, а в графане есть готовый дашборд.

Хотите узнать, как использовать Zabbix для мониторинга размера каталога Linux? В этом руководстве мы покажем вам, как настроить Zabbix для мониторинга размера папок на компьютере под управлением Ubuntu Linux.

• Zabbix версия: 4.2.6
• Версия Ubuntu: 18.04

Вам необходимо установить Zabbix агент на компьютер под управлением Linux.

Список оборудования:

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

Все вышеперечисленное оборудование можно найти на сайте Amazon.

Zabbix Playlist:

На этой странице мы предлагаем быстрый доступ к списку видео, связанных с установкой Zabbix.

Не забудьте подписаться на наш канал на YouTube FKIT.

Zabbix Связанное руководство:

На этой странице мы предлагаем быстрый доступ к списку учебных пособий, связанных с установкой Zabbix.

Учебник - Zabbix Monitor Размер каталога Linux

Теперь нам нужно получить доступ к панели инструментов Zabbix-сервера и добавить компьютер Linux в качестве хоста.

Откройте браузер и введите IP-адрес вашего веб-сервера плюс / zabbix.

В нашем примере в браузере был введен следующий URL:

На экране входа в систему используйте имя пользователя по умолчанию и пароль по умолчанию.

• Имя пользователя по умолчанию: Admin
• Пароль по умолчанию: zabbix

zabbix login

После успешного входа вы будете отправлены на Zabbix Dashboard.

zabbix dashboard

На экране панели инструментов откройте меню «Конфигурация» и выберите опцию «Хост».

zabbix add host

В правом верхнем углу экрана нажмите кнопку «Создать хост».

Zabbix Create Host

На экране конфигурации хоста вам нужно будет ввести следующую информацию:

• Имя хоста - введите имя хоста для мониторинга.
• Видимое имя хоста - повторите имя хоста.
• Новая группа - введите имя для идентификации группы похожих устройств.
• Интерфейс агента - введите IP-адрес имени хоста.

Вот оригинальное изображение, перед нашей конфигурацией.

zabbix Cisco - Antes

Вот новое изображение с нашей конфигурацией.

Zabbix Linux Host

На экране панели инструментов откройте меню «Конфигурация» и выберите опцию «Хост».

zabbix add host

Найдите и нажмите на имя хоста, который вы создали ранее.

В нашем примере мы выбрали имя хоста: LINUX-SERVER-01

На экране свойств хоста перейдите на вкладку Приложения.

Zabbix Windows Service Application menu

В верхней правой части экрана нажмите кнопку «Создать приложение».

Zabbix Linux Service Application

На экране приложений хоста создайте новое приложение с именем: Размер каталога.

Zabbix monitor directory application

После завершения создания приложения перейдите на вкладку «Элементы».

Zabbix Item Tab

В верхней правой части экрана нажмите кнопку «Создать элемент».

На экране «Создание элемента» необходимо настроить следующие элементы:

• Имя: введите идентификатор для каталога Linux.

• Тип: Zabbix Агент

• Ключ: vfs.dir.size [/ etc . диск,]

• Тип информации: числовой (с плавающей точкой)

• Интервал обновления: 300 секунд

• Показать значение: как есть

• Применение: Размер каталога

Zabbix monitor folder linux

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

Чтобы протестировать свою конфигурацию, войдите в меню «Мониторинг» и выберите опцию «Последние данные».

Zabbix Latest data

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

В нашем примере мы выбрали имя хоста LINUX-SERVER-01

Нажмите на кнопку Применить.

Zabbix Linux service Filter

Вы сможете увидеть результаты мониторинга размера каталогов Linux с помощью Zabbix.

Zabbix monitor linux folder size

В нашем примере Zabbix-сервер обнаружил, что размер каталога / etc составляет: 8,91 МБ.

Блог творческого ИТ-практика. Возьми свою мысль и дай ей ускорение идеи. В моем фокусе: сети, безопасность, виртуализация, web, мультимедиа.

А А Sunday, 1 November 2020


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

Этап 1.
По штатным графикам:
Zabbix data gathering process busy %
Zabbix internal process busy %

а также по
Zabbix internal queues
Zabbix server performance

оцениваем максимальные значения загруженности Zabbix-a.


Этап 2.
По штатным графикам
Value cache effectiveness (vps)
Zabbix cache usage, %free
Zabbix cache usage, %usage

оцениваем максимальные значения использования кеша Zabbix-a.

Чтобы уменьшить эти величины меняем дефолтные в конфиге Zabbix-a на
CacheSize=64M
HistoryCacheSize=32M
HistoryIndexCacheSize=16M
TrendCacheSize=16M
ValueCacheSize=32M

Также я находил некоторые рекомендации изменить еще эти два параметра:
Timeout=30
LogSlowQueries=1000

Установка Timeout в максимальное значение может как ускорить работу Zabbiх так и замедлить. Тут есть прямая зависимость от количества запросов ответы на которые Zabbiх будет ждать до 30 секунд.

Этап 3.
Обязательно устанавливаем частоту запуска процедуры очистки базы данных (в часах, от 1 до 24);
HousekeepingFrequency = 1

А также количество удаляемых за раз значений (от 1 до 1000000)
MaxHousekeeperDelete = 1000000

max_connections = 400
tmp_table_size = 256M
max_heap_table_size = 256M
table_open_cache = 64M
join_buffer_size = 256K
read_buffer_size = 256K
read_rnd_buffer_size = 256K
sort_buffer_size = 16M
key_buffer_size = 16M
thread_stack = 192K
thread_cache_size = 8
query_cache_limit = 2M
query_cache_size = 32M
table_open_cache = 64M

innodb_file_per_table = 1
innodb_status_file = 1
innodb_buffer_pool_size = 2G
innodb_flush_log_at_trx_commit = 2
innodb_support_xa = 0
innodb_log_file_size = 256M
innodb_log_buffer_size = 16M

Для диагностики конфигурации MySQL также можно использовать внешнюю утилиту mysqltuner. После ее выполнения будет получен развернутый результат в котором следует обратить внимание на строки с отметкой [!!] и изучить раздел "Recommendations".

-------- Storage Engine Statistics
[--] Status: +ARCHIVE +BLACKHOLE +CSV -FEDERATED +InnoDB +MRG_MYISAM
[--] Data in InnoDB tables: 4G (Tables: 150)
[!!] Total fragmented tables: 12

-------- Performance Metrics
[--] Up for: 62d 9h 44m 18s (113M q [21.100 qps], 102K conn, TX: 146B, RX: 17B)
[--] Reads / Writes: 52% / 48%
[--] Binary logging is disabled
[--] Total buffers: 192.0M global + 1.1M per thread (151 max threads)
[OK] Maximum reached memory usage: 353.5M (18.19% of installed RAM)
[OK] Maximum possible memory usage: 352.4M (18.13% of installed RAM)
[OK] Slow queries: 0% (0/113M)
[!!] Highest connection usage: 100% (152/151)
[OK] Aborted connections: 0.02% (16/102191)
[!!] Query cache is disabled
[OK] Sorts requiring temporary tables: 1% (89K temp sorts / 5M sorts)
[!!] Joins performed without indexes: 201533
[!!] Temporary tables created on disk: 28% (201K on disk / 717K total)
[OK] Thread cache hit rate: 99% (575 created / 102K connections)
[!!] Table cache hit rate: 0% (416 open / 3M opened)
[OK] Open file limit used: 0% (0/1K)
[OK] Table locks acquired immediately: 100% (102 immediate / 102 locks)

-------- MyISAM Metrics
[!!] Key buffer used: 18.2% (3M used / 16M cache)
[OK] Key buffer size / total MyISAM indexes: 16.0M/43.0K
[!!] Read Key buffer hit rate: 50.0% (6 cached / 3 reads)

-------- InnoDB Metrics
[--] InnoDB is enabled.
[!!] InnoDB buffer pool / data size: 128.0M/4.2G
[OK] InnoDB buffer pool instances: 1
[OK] InnoDB Used buffer: 86.61% (7094 used/ 8191 total)
[OK] InnoDB Read buffer efficiency: 99.93% (20633337417 hits/ 20648353940 total)
[!!] InnoDB Write buffer efficiency: 0.00% (0 hits/ 1 total)
[OK] InnoDB log waits: 0.00% (0 waits / 18022578 writes)

Variables to adjust:
max_connections (> 151)
wait_timeout (< 28800)
interactive_timeout (< 28800)
query_cache_type (=1)
join_buffer_size (> 256.0K, or always use indexes with joins)
tmp_table_size (> 16M)
max_heap_table_size (> 16M)
table_open_cache (> 431)
innodb_buffer_pool_size (>= 4G) if possible.

Мониторинг- очень нужная вещь, особенно когда в предприятии используется 100+ каналов связи. Zabbix appliance- вообще улётный инструмент, который на виртуалках и сравнительно новых железках (если говорить об актуальной версии решения) устанавливается без бубна и напильника.

У нас свободной вычислительной техники нет, зато есть лом железа, очень разный, и вот, удалось собрать такого красавца:

Zabbix Appliance и Optiplex 360 Zabbix, Optiplex, Ubuntu, Vmware, Длиннопост

Zabbix Appliance и Optiplex 360 Zabbix, Optiplex, Ubuntu, Vmware, Длиннопост

Всё кроме винта с идентичных доноров, а именно:Core 2 Duo E7500 2.93 GHz - 2 GB, винт SAMSUNG на 80 ГБ.

Бут с флешки, на которую записан Appliance Происходит без проблем, а на финальной стадии установки происходит "залипание" на 14% running preseed. Если нажать Alt+F4 будет видно, что не получается сконфигурировать базу MySQL, ругается что не может вывести пароль в открытом виде, ибо это небезопасно.Если перезагрузить машинку- на ней будет сделано полдела, вторую половину доделать сложно, проще сделать сначала и всё дело. Перепробовал кучу всяких (лишних) действий, но установить не удалось.

Так как задачу надо было решать, сделал так:

1) Подключил жесткий диск к компу на винде, с установленной VMWare Workstation

2) Прицепил физический диск к виртуалке

3) Установил Zabbix Appliance без проблем, сконфигурировал Zabbix.

4) Прицепил Хард обратно к Optiplex'у

На этом почти всё. Система стартанула, но были проблемы с сетевым интерфейсом, в файле /etc/networki/interfaces было указано неправильное название. Его можно узнать написав

После исправления всё заработало в штатном режиме. Надеюсь, кому нибудь помог.

Читайте также: