PRTG: правильная проверка памяти
// 4 августа, 2016 // Аппаратное обеспечение, Системное администрирование
На работе частенько приходится работать с системами мониторинга серверов и сетевых устройств. И вот однажды случился один странный случай. Пробовал подключать к мониторингу машину и внезапно по его данным начала стремительно заканчиваться память.
Машина была подключена к мониторингу не так давно, но график памяти показывал, что она стремительно заканчивалась. В сенсоре SNMP Linux meminfo стояло 3% свободной памяти. При этом CPU был почти на нуле. Очень странно. Когда я зашел на машину то удивился, а опотом всё понял.
> free -m total used free shared buff/cache available Mem: 5967 923 553 121 4490 4576 Swap: 6140 30 6110
Надо сказать, что для Linux машин это нормально, когда free physical memory очень маленький, а buffers/cache большой. В качестве мониторинга используется сервер PRTG, память считывается стандартными SNMP-шными пробами. И считает он количество свободной памяти исключительно по этому free. Но при необходимости ядро спокойно может освободить занятую под буферы память, поэтому нам надо в качестве free memory считывать не значение free, a free = total — used.
Для этого встроенных сенсоров нет, поэтому будем писать свой.
Подготовка
Мы будем использовать Advanced SSH Sensor. В начале он у меня никак не добавлялся. В /var/log/auth.log на машине-источнике данных проскакивали сообщения такого вида:
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 отображалось вот такое сообщение:
The negotiation of encryption algorithm is failed
Чтобы это пофиксить — добавляем в конец /etc/ssh/sshd_conf на целевой машине один (или все) алгоритмы шифрования.
Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,blowfish-cbc,aes128-cbc,3des-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc
Потом перезагружаем сервис.
sudo service sshd restart
Добавляем сенсор памяти
После этого на целевой машине создаём файл /var/prtg/scriptsxml/freemem.sh со следующим содержанием
Скрипт: freemem.sh
#!/bin/bash # Put this file to /var/prtg/scriptsxml/freemem.sh to target machine # chmod +x /var/prtg/scriptsxml/freemem.sh # Add line: Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,blowfish-cbc,aes128-cbc,3des-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc # to end of /etc/ssh/sshd_conf and restart ssh # Add advanced SSH sensor meminfo="/usr/bin/free" xmlresult=`cat < EOF ` if [ -f $meminfo ]; then result=`free -b | grep 'Mem\|Swap'` while read line; do if [[ $line == Mem* ]]; then total=`echo $line | awk '{print $2}'` used=`echo $line | awk '{print $3}'` free=`echo $line | awk '{print $4}'` shared=`echo $line | awk '{print $5}'` buffers=`echo $line | awk '{print $6}'` cache=`echo $line | awk '{print $7}'` else swtotal=`echo $line | awk '{print $2}'` swused=`echo $line | awk '{print $3}'` swfree=`echo $line | awk '{print $4}'` fi done <<< "$result" physicalusedperc=`echo $used $buffers $cache $total | \ awk '{printf("%.3f", 100-(($1)*100/$4))}'` xmlresult+=`cat < Physical Free Percent 1 Percent $physicalusedperc 1 1 1 15 8 EOF ` physicalfreebytes=`echo $used $buffers $cache $total | \ awk '{printf("%i", $4-$1)}'` xmlresult+=`cat < Physical Free 0 BytesMemory $physicalfreebytes EOF ` xmlresult+=`cat <OK EOF ` else xmlresult+=`cat <1 This sensor is not supported by your system, missing $proc EOF ` fi echo "$xmlresult" exit 0
Файл делаем исполняемым:
chmod +x ./freemem.sh
Дальше можно добавлять сенсор к устройству (Advanced SSH sensor).
Что получилось
Теперь сенсор памяти выдаёт адекватные данные для анализа и предупреждений.

Ссылки
http://steronius.blogspot.ru/2014/10/ssh-no-matching-cipher-found.html
http://prtg.instasite.ru/help/ssh_monitoring.htm
http://gnu.su/news.php?extend.1218
http://steronius.blogspot.ru/2014/10/ssh-no-matching-cipher-found.html
Спасибо!
Если вам помогла статья, или вы хотите поддержать мои исследования и блог - вот лучший способ сделать это: