На работе частенько приходится работать с системами мониторинга серверов и сетевых устройств. И вот однажды случился один странный случай. Пробовал подключать к мониторингу машину и внезапно по его данным начала стремительно заканчиваться память.
Машина была подключена к мониторингу не так давно, но график памяти показывал, что она стремительно заканчивалась. В сенсоре SNMP Linux meminfo стояло 3% свободной памяти. При этом CPU был почти на нуле. Очень странно. Когда я зашел на машину то удивился, а опотом всё понял.
1
2
3
4
>free-m
total used free shared buff/cache available
Mem:5967<strong>923</strong>55312144904576
Swap:6140306110
Надо сказать, что для Linux машин это нормально, когда free physical memory очень маленький, а buffers/cache большой. В качестве мониторинга используется сервер PRTG, память считывается стандартными SNMP-шными пробами. И считает он количество свободной памяти исключительно по этому free. Но при необходимости ядро спокойно может освободить занятую под буферы память, поэтому нам надо в качестве free memory считывать не значение free, a free = total – used.
Для этого встроенных сенсоров нет, поэтому будем писать свой.
Подготовка
Мы будем использовать Advanced SSH Sensor. В начале он у меня никак не добавлялся. В /var/log/auth.log на машине-источнике данных проскакивали сообщения такого вида:
1
client blowfish-cbc,cast128-cbc,aes128-cbc,3des-cbc server aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com
А в самом PRTG отображалось вот такое сообщение:
1
The negotiation of encryption algorithm isfailed
Чтобы это пофиксить – добавляем в конец /etc/ssh/sshd_conf на целевой машине один (или все) алгоритмы шифрования.