PRTG: правильная проверка памяти

// Август 4th, 2016 // Аппаратное обеспечение, Системное администрирование

prtg-logoНа работе частенько приходится работать с системами мониторинга серверов и сетевых устройств. И вот однажды случился один странный случай. Пробовал подключать к мониторингу машину и внезапно по его данным начала стремительно заканчиваться память.

Машина была подключена к мониторингу не так давно, но график памяти показывал, что она стремительно заканчивалась. В сенсоре 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

 

prtg-negotiation-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 со следующим содержанием

disk-save Скрипт: 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).

Что получилось

Теперь сенсор памяти выдаёт адекватные данные для анализа и предупреждений.

sensor-memory
Ссылки

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

Share

Спасибо!


Если вам помогла статья, или вы хотите поддержать мои исследования и блог - вот лучший способ сделать это:


Комментировать