среда, 14 августа 2013 г.

Расчет критических значений Load Average для системы мониторинга сервера

Сегодня подкручивал настройки Nagios и решил добавить статью по расчету значений лимитов load average для различных конфигураций серверов. Чтобы понимать суть load average я советую прочесть эту статью.

Поскольку лимиты load average зависят от количества доступных ядер процессора, то у различных серверов будут значения будут различаться. Наиболее распространенные варианты конфигурации процессоров:
  • 1 физическое ядро
  • 2 физических ядра
  • 2 физических ядра + hyperthreading (4 виртуальных ядра)
  • 4 физических ядра
  • 4 физических ядра + hyperthreading (8 виртуальных ядер)
Я не буду рассматривать варианты дальше, поскольку там все аналогично. Для себя я определил следующие лимиты, которые по моему мнению не приводят к заметному снижению производительности сервера относительно процессора.

State/Load Average1 min5 min15 min
WarningCPU cores * 2CPU cores * 1.5CPU cores * 1.25
CriticalCPU cores * 4CPU cores * 2CPU cores * 1.5

Поскольку ядро процессора, которое эмулируется hyperthreading, не является полноценным, то такие ядра я исключаю из расчета. Чтобы узнать свое количество физических ядер вы можете выполнить этот скрипт

#!/bin/bash
if [ `grep -c processor /proc/cpuinfo` != 1 ]; then
    grep 'core id' /proc/cpuinfo | sort | uniq | wc -l
else
    echo 1
fi

Готовые значения лимитов для плагина check_load из состава Nagios.

  • Single core: check_load -w 2,1.5,1.25 -c 4,2,1.5
  • Dual core: check_load -w 4,3,2.5 -c 8,4,3
  • Quad core: check_load -w 8,6,5 -c 16,8,6

четверг, 1 августа 2013 г.

Преобразование имен файлов при распаковке архива tar

Если вам попался архив tar вида

$ tar -tf /tmp/backup_2013-07-31.tar.gz
backups/servers/server.example.org/var/www/example.org/file1
backups/servers/server.example.org/var/www/example.org/file2
backups/servers/server.example.org/var/www/example.org/file3
...
backups/servers/server.example.org/var/www/example.org/fileN

и распаковать его нужно в /var/www/example.org желательно не применяя mv, то сделать это можно так:

$ tar --strip-components=6 --show-transformed -xvf /tmp/backup_2013-07-31.tar.gz -C /var/www/example.org
file1
file2
file3
...
fileN

У tar еще есть опция --transform, которая позволяет сделать произвольную замену имени в отличии от --strip-components, которая только отбрасывает нужное количество уровней вложенности.

$ tar --transform 's,backups/servers/server.example.org/var/www/example.org,example.com,g' --show-transformed -xvf /tmp/backup_2013-07-31.tar.gz -C /var/www
example.com/file1
example.com/file2
example.com/file3
...
example.com/fileN