Проверка отправки списка процессов
Теперь проверим, как все это будет работать. Для этого идем на целевой сервер и нагружаем его чем-нибудь. Я для примера запустил в двух разных консолях по команде:
# cat /dev/zero | bzip2 -c > /dev/null # md5sum /dev/urandom
Они достаточно быстро нагрузили единственное ядро тестового сервера, так что оставалось только подождать активации триггера. Через 5 минут это случилось.
Иду в раздел Последние данные и вижу там список процессов, которые нагрузили мой сервер.
Что мне в итоге и требовалось. Теперь нет нужды каким-то образом проверять, что конкретно нагружает сервер. В момент пиковой нагрузки я получу список запущенных процессов в отдельный айтем. Для полного списка процессов все делается по аналогии.
What is this Zabbix Free Disk Space Is Less Than 20 On Volume alert?
In general, Zabbix greatly helps in monitoring the servers. Zabbix triggers alerts to indicate upcoming problems on the server.
One such alert is this free disk space less alert.
The trigger gives this alert when the disk space is less than 20% on the volume. Here, the Zabbix allows customization on the threshold at which the system triggers the alert.
Moreover, based on the purpose of the server, we see some customers set it at even low values like 10%. A snippet of Zabbix dashboard with such alerts show up as:
In such situations, we firstly find out what is consuming the disk space and take action accordingly.
Let’s see how our Engineers found a fix for this Zabbix message.
Zabbix: Отсутствие свободного места для подкачки на решении Zabbix server
s http-equiv=»Content-Type» content=»text/html;charset=UTF-8″>tyle=»clear:both;»>
проблема
При использовании Zabbix для мониторинга некоторых облачных хостов вы можете столкнуться с:
Lack of free swap space on Zabbix server1
Используйте команду:
free -m
видеть:
Общие, использованные и свободные значения свопа равны 0. Это потому, что Zabbix не учитывает пользователей облачного хоста.
Этапы обработки:
1. Управление-шаблон-шаблон ОС Linux-Trigger
2. Выберите «Отсутствие свободного места для подкачки на {HOST.NAME}».
3. Изменить выражение
{Template OS Linux:system.swap.size.last(0)}<501
превратиться в
{Template OS Linux:system.swap.size.last(0)}<50 and {Template OS Linux:system.swap.size.last(0)}<>0
Нажмите «Обновить», чтобы сохранить, подождите некоторое время, оно станет «Решено», подтвердите
Перепечатано по адресу: https://blog.51cto.com/9499607/2163615
Интеллектуальная рекомендация
Глава первая: Причина В большинстве анекдотов в Интернете говорится, что программисты относительно тупые, плохие слова и в основном мужчины. Я один из тысяч программистов. Обычно я не знаю, как правил…
Всегда был спрос, надеясь увидеть в реальном времени рейтинг моего сайта в Baidu Я использовал некоторые инструменты, либо медленный ответ, либо результаты не точные или в режиме реального времени Поэ…
Алгоритм обнаружения характерных точек Обнаружение угла Харриса Обнаружение функции SIFT…
По просьбе пользователей сети напишите пример использования Selenium Grid для управления несколькими системами и несколькими браузерами для параллельного выполнения тестов. Поскольку у меня здесь две …
Эта проблема возникает, когда используется openrowset. Просто выполните следующий код: http://www.cnblogs.com/wayne-ivan/archive/2008/01/07/1028759.html…
Вам также может понравиться
В проекте .net я часто сталкиваюсь с необходимостью автоматически делать скриншот кадра после загрузки видео. Вот метод использования ffmpeg для автоматического создания скриншота Сначала загрузите фа…
Ленивая загрузка не удалась, потому что @Responsebobode JSON преобразует Getroles по умолчанию, которая заканчивается пользователем, поэтому ленивая загрузка недействительна. Если вы предоставляете TO…
virtualenv установка Основное использование Создайте виртуальную среду для проекта: virtualenv venv создаст папку в текущем каталоге, содержащую исполняемые файлы Python и копию библиотеки pip, чтобы …
Java.io.fileNotfoundException: файл: \ d: \ Code \ xml-load \ target \ xx.jar! \ Xxx (имя файла, имя каталога или синтаксис громкости неверно.) 1. При использовании Spring Boot для применения к JAR не…
Облачный сервер zabbix server сообщил об ошибке: Отсутствие бесплатного свопа на Zabbix сервере
s http-equiv=»Content-Type» content=»text/html;charset=UTF-8″>tyle=»clear:both;»>
1. Проблема
Lack of free swap space on Zabbix server
Такая ситуация часто возникает при мониторинге облачных хостов. Хотя память в основном бесполезна, появляется это сообщение. Поскольку zabbix не учитывает облачный хост, облачный хост не имеет подкачки. Когда физической памяти системы недостаточно, раздел подкачки освободит часть физической памяти для текущей операции. Использование программы. Это означает, что должна быть физическая память Сообщение об ошибке: Решение:
Этапы обработки:
- Администрирование-Шаблон-Шаблон ОС Linux-Триггер
- Выберите «Отсутствие свободного места для подкачки» на {HOST.NAME}.
- Изменить выражение
превратиться в
Нажмите «Обновить», чтобы сохранить, подождите некоторое время, он станет «Решенным», подтвердите
Если вышеперечисленное не помогло, проверьте следующие методы:
Как добавить раздел SWAP на облачный сервер
Как увеличить своп?
1. Проверьте, включен ли раздел подкачки в текущей системе.
2. Если функция раздела подкачки не включена, создайте специальный файл для раздела подкачки.
Примечание: dd: скопируйте файл с блоком указанного размера и выполните указанное преобразование при копировании, если = имя входного файла, то есть укажите исходный файл, of = имя выходного файла, то есть укажите файл назначения. Размер этого файла равен размеру count, умноженному на размер bs, размер указанной выше команды составляет 4294971392, что составляет 4 ГБ
Наш тест не должен быть таким большим
3. Используйте команду mkswap, чтобы превратить вновь созданный файл в раздел подкачки.
4. Проверьте, равно ли значение параметра ядра vm.swappiness 0, если оно равно 0, отрегулируйте его до 30 или 60 в соответствии с фактическими потребностями.
Команда настройки
Примечание: если вы хотите изменить его навсегда, отредактируйте файл /etc/sysctl.conf
5. Включите функцию подкачки этого раздела подкачки.
6. Просмотрите добавленный эффект.
Ссылка для справки:
Zabbix: Отсутствие свободного места для подкачки на сервере Zabbix решение: https://blog.51cto.com/9499607/2163615
Ссылка для ссылки: https://blog.csdn.net/windle89/article/details/77771483 тревога zabbix Отсутствие свободного места подкачки на zabbix
Ссылка для справки: https://yq.aliyun.com/articles/52098 Хост Alibaba Cloud Cloud добавляет раздел подкачки и оптимизацию производительности подкачки
Интеллектуальная рекомендация
Глава первая: Причина В большинстве анекдотов в Интернете говорится, что программисты относительно тупые, плохие слова и в основном мужчины. Я один из тысяч программистов. Обычно я не знаю, как правил…
Всегда был спрос, надеясь увидеть в реальном времени рейтинг моего сайта в Baidu Я использовал некоторые инструменты, либо медленный ответ, либо результаты не точные или в режиме реального времени Поэ…
Алгоритм обнаружения характерных точек Обнаружение угла Харриса Обнаружение функции SIFT…
По просьбе пользователей сети напишите пример использования Selenium Grid для управления несколькими системами и несколькими браузерами для параллельного выполнения тестов. Поскольку у меня здесь две …
Эта проблема возникает, когда используется openrowset. Просто выполните следующий код: http://www.cnblogs.com/wayne-ivan/archive/2008/01/07/1028759.html…
Вам также может понравиться
В проекте .net я часто сталкиваюсь с необходимостью автоматически делать скриншот кадра после загрузки видео. Вот метод использования ffmpeg для автоматического создания скриншота Сначала загрузите фа…
Ленивая загрузка не удалась, потому что @Responsebobode JSON преобразует Getroles по умолчанию, которая заканчивается пользователем, поэтому ленивая загрузка недействительна. Если вы предоставляете TO…
virtualenv установка Основное использование Создайте виртуальную среду для проекта: virtualenv venv создаст папку в текущем каталоге, содержащую исполняемые файлы Python и копию библиотеки pip, чтобы …
Java.io.fileNotfoundException: файл: \ d: \ Code \ xml-load \ target \ xx.jar! \ Xxx (имя файла, имя каталога или синтаксис громкости неверно.) 1. При использовании Spring Boot для применения к JAR не…
Zabbix 4 на CentOS 7
Считаем, что у нас есть установленный и предварительно минимально настроенный CentOS 7. В качестве web-сервера для Zabbix будет использоваться nginx.
Подключаем репозиторий nginx и устанавливаем его:
Запускаем nginx и добавляем в автозагрузку.
Дальше устанавливаем менеджер процессов FastCGI (FPM) – php-fpm. Для этого подключаем репозиторий remi
Устанавливаем php 7.1 и модули к нему
Запускаем и добавляем в автозагрузку php-fpm
Проверяем, запустился ли он.
Все в порядке, но запустим его через unix сокет. Для этого правим конфиг
Перезапустим php-fpm проверим, запущенный сокет
Дальше установим свежую версию сервера баз данных MariaDB. Подключаем нужный репозиторий – Идем сюда и выбираем нужные параметры операционки
Устанавливаем сервер баз данных
Запускаем mariadb и добавляем в автозагрузку
Запустим скрипт начальной конфигурации mysql и создадим пароль для root. Все остальное можно оставить по-умолчанию.
Сделаем свой конфиг для mariadb, оптимизированный под zabbix
Перезапустим mariadb и убедимся, что он запустился
Приступим к установке Zabbix Server 4.0, первым делом нужно подключить репозиторий
Теперь запускаем установку Zabbix-server
После установки, создаём базу данных zabbix, пользователя zabbix и заполняем базу
Отредактируем файл конфигурации сервера zabbix, этих минимальных настроек достаточно, для работы сервера
Запустим zabbix и добавим его в автозагрузку
Можно проверить лог файл на наличие ошибок
Остается сделать конфиг nginx для работы web интерфейса zabbix. В моем случае nginx работает на том же сервере, где сам zabbix, а других виртуальных хостов нет, правим дефолтный конфиг
Проверим конфиг на ошибки и перезапустим nginx
Важный нюанс – необходимо изменить права доступа и назначить владельцем nginx
Этот нужно будет проделывать после каждого обновления php или zabbix. По-умолчанию zabbix идет в комплекте с apache и рассчитан на работу с ним. После установки или обновления, он делает его владельцем директории /etc/zabbix/web.
С серверной частью всё, продолжаем установку zabbix сервера через Zabbix Frontend. На одном из этапов указываем параметры доступа к базе данных. После завершения установки, авторизуемся на сервере со стандартной учетной записью
Изменение стандартных шаблонов мониторинга
В шаблоне Template App Zabbix Agent отключаем триггер Version of zabbix_agent(d) was changed on . В шаблоне Template OS Linux меняем в триггере Disk I/O is overloaded on значение со стандартных 20% до 50%. В этом же шаблоне в правиле обнаружения Mounted filesystem discovery добавим еще один прототип триггера, скопировав Free disk space is less than 20% on volume
В новом шаблоне вместо 20% указываем 5% и ставим важность «Высокая». В этом же шаблоне в триггере Lack of free swap space on меняем порог срабатывания с 50% до 20%
В шаблоне Template OS Windows отключаем Правило обнаружения Windows service discovery. Если нужен мониторинг какой-то службы windows, для этого можно сделать отдельный шаблон.
Общие настройки
В общих настройках zabbix server, которые располагаются в разделе Администрирование -> Общие меняем следующие параметры:
В разделе Рабочее время выставляем актуальные рабочие часы. В разделе Опции отображения триггеров меняем значения Отображать триггеры в состоянии ОК в течении и Мигание триггеров при изменении состояния на 1 минуту. В разделе Прочее меняю Обновление неподдерживаемых элементов данных на 1 минуту. Это актуально во время отладки новых шаблонов.
Настройки оповещений в Telegram описаны тут.
Что происходит с использованием swap и без него
Давайте посмотрим на типовые ситуации и к чему они приводят при наличии и отсутствии swap. О метриках «конкуренции за память» я рассказываю в докладе про cgroup v2 .
Без конкуренции или с малой конкуренцией за память
- При наличии swap : мы можем положить в swap анонимную память, которая редко используется и нужна только в небольшой части жизненного цикла процесса. Это позволяет использовать данную память для улучшения коэффициента попаданий в кэш и других оптимизаций.
- Без swap : не можем складывать в swap редко используемую анонимную память, поскольку она вынуждена храниться только в памяти. Не факт, что это сразу приведёт к проблеме, однако в некоторых рабочих нагрузках производительность может упасть из-за устаревших анонимных страниц, забирающих место у более важных задач.
С умеренной или высокой конкуренцией за память
- При наличии swap : у всех типов памяти одинаковая вероятность высвобождения. Это означает большую вероятность успешного высвобождения страниц — мы можем высвобождать страницы, которые не будут быстро снова приводить к отказу (к пробуксовке ).
- Без swap : анонимные страницы ограничены памятью, т.к. не имеют альтернатив для хранения. Вероятность успешного долгосрочного высвобождения страниц ниже, поскольку оно доступно только для некоторых типов памяти. Риск пробуксовки страниц выше. Случайный читатель может подумать, что так всё равно будет лучше, поскольку не случится нагрузки на ввод/вывод диска, но это не так: мы попросту переносим disk I/O из-за swapping’а на сброс горячего страничного кэша и сегментов кода, которые нам скоро понадобятся.
При временных всплесках в потреблении памяти
- При наличии swap : устойчивость к временным всплескам выше, однако в случае резкой нехватки памяти время между пробуксовкой и работой OOM killer может вырасти. Нам лучше видны причины нагрузки на память и мы можем более рационально повлиять на них, можем осуществить контролируемое вмешательство.
- Без swap : OOM killer вызывается быстрее, поскольку анонимные страницы ограничены памятью и не могут быть высвобождены. Мы скорее столкнёмся с пробуксовкой, однако время между ней и OOMing’ом сократится. Будет лучше или хуже — зависит от конкретного приложения. Например, основанное на очередях приложение может захотеть потребовать такого быстрого перехода от пробуксовки к OOMing’у. Тем не менее, всё равно уже слишком поздно для полезных действий — OOM killer вызывается только в случаях резкой нехватки памяти. Вместо того, чтобы полагаться на такое поведение, в первую очередь лучше позаботиться о более оппортунистическом подходе (т.е. направленном на следование своим интересам —прим. перев.) к убиванию процессов при достижении состояния конкуренции за память.
Окей, я хочу системный swap, но как его настроить для конкретных приложений?
Вы же не думали, что в этой статье не будет упоминаний использования cgroup v2?
Очевидно, что общему эвристическому алгоритму тяжело не ошибаться всё время, поэтому важно иметь возможность дать необходимые инструкции ядру. Исторически единственной настройкой, которую можно было применить на системном уровне, являлась vm.swappiness
У неё две проблемы: vm.swappiness крайне сложно разумно применять, потому что она является лишь маленькой частью гораздо большей эвристической системы, и она применима лишь ко всей системе, но не к ограниченному набору процессов.
Можно также использовать mlock для фиксации страниц в памяти, но такой подход требует либо модификации кода программы и забав с LD_PRELOAD, либо ужасных танцев с отладчиком во время исполнения приложения. В языках, основанных на виртуальных машинах, всё это тоже не так-то хорошо работает, поскольку у вас обычно нет возможности контролировать распределение памяти и приходится делать mlockall, у которого нет точных настроек для тех страниц, что действительно важны.
В cgroup v2 есть определяемая на каждую cgroup настройка memory.low, которая позволяет сказать ядру отдавать предпочтение другим приложениям для высвобождения до достижения определённого порога используемой памяти. Нет гарантий, что ядро предотвратит swapping частей приложения, однако оно будет предпочитать высвобождение для других приложений в случае конкуренции за память. В нормальных условиях логика swap’а в ядре в целом достаточно хороша, так что разрешение оппортунистически выносить в swap страницы в общем случае повышает системную производительность. Пробуксовка swap’а в условиях сильной конкуренции за память не идеальна, но это скорее просто особенность ситуации нехватки памяти, чем проблема swapper’а. В ситуациях, когда давление на память начинает расти, вы обычно хотите быстрого завершения работы некритических процессов посредством их «самоубийства».
И в этом вопросе нельзя просто положиться на OOM killer. Потому что OOM killer вызывается только в самых критичных ситуациях, когда система уже оказалась в значительно нездоровом состоянии и, возможно, находилась в нём некоторое время. Необходимо самостоятельно и оппортунистически разрешить ситуацию ещё до того, как задумываться об OOM killer’е.
Тем не менее, выявить давление на память достаточно трудно с помощью традиционных счётчиков памяти в Linux. Нам доступно нечто, что каким-то образом относится к проблеме, однако скорее по касательной: потребление памяти, количество операций сканирования страниц и т.п. — и по одним этим метрикам очень трудно отличить эффективную конфигурацию памяти от той, что приводит к конкуренции за память. У нас есть группа в Facebook, возглавляемая Johannes’ом и работающая над новыми метриками, упрощающими демонстрацию давления на память, — это должно помочь нам в будущем. Больше информации об этом можно получить из моего доклада про cgroup v2, где я начинаю подробнее рассказывать об одной из метрик.