Игорь Олемской — практические заметки по системному администрированию Linux CentOS

Архив тега ‘howto’

vim: сортировка (перепечатка)

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

Сортировать в vim очень просто:

:{диапазон}sort

Диапазон подставится автоматически, если в визуальном режиме (V) выделить блок, а затем перейти в командный режим (:):

:'<,'>

Или для сортировки всего файла:

:%sort

Сортировка в обратном порядке:

:%sort!

Сортировка в прямом порядке, удаляя все дубликаты:

:%sort -u

Также для сортировки можно использовать внешние утилиты, например стандартный юниксовый sort:

:%!sort --numeric-sort --reverse

Ну и как обычно, читаем маны:

:help :sort

Восстановление сбойного загрузочного диска в Linux RAID 1 (перепечатка)

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

Наткнулся на хорошую статью по замене загрузочного диска в софтверном RAID Linux.

Если кратко, то на второй уцелевший диск надо засетапать grub )

vim: избавляемся от dos-овых концов строк (\r\n -> \n) (перепечатка)

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

  1. Если vim распознал dos-овые концы строк, и не показывает ^M,
    :set ff=unix
    :w

    Документацию по поводу опции fileformat почитать можно в разделе usr_23:

    :help usr_23
  2. Если vim автоматически не распознал DOS line ends, то в конце строк будут символы ^M. Удалить их можно простой заменой:
    :%s/^M//g
    Символ ^M при этом вводится как Ctrl-V Ctrl-M.

Удаленный мониторинг хардварного RAID DELL Perc 6/i (LSI) с помощью Nagios и SNMPd (перепечатка)

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

Здесь можно узнать, как мониторить удаленно хардварный RAID DELL Perc 6/i (чип LSI) с помощью утилиты MegaCLI, самописных скриптов, SNMPd и Nagios в Linux (CentOS).

О том, как подготовить Nagios и SNMPd, рассказано в статье о мониторинге софтварного RAID. Туда добавить мне нечего, можно скопипастить инфу оттуда.

А вот скрипт raid_status.pl несколько изменился. Для его корректной работы нужно скачать утилитку LSI MegaCLI for Linux. Так же я ставил симлинк /opt/MegaRAID/MegaCli/MegaCli64 -> /usr/sbin/MegaCLI:

# ln -s /opt/MegaRAID/MegaCli/MegaCli64 /usr/sbin/MegaCli

Теперь надо подготовить два скрипта.

1. Скрипт AWK для приведения выдачи утилиты MegaCLI в удобочитаемый формат.

©одрал не помню откуда. Положить его в /root/scripts/analysis.awk:

# This is a little AWK program that interprets MegaCLI output
/Device Id/ { counter += 1; device[counter] = $3 }
/Firmware state/ { state_drive[counter] = $3 }
/Inquiry/ { name_drive[counter] = $3 " " $4 " " $5 " " $6 }
END {
for (i=1; i&lt;=counter; i+=1)
   printf ( "Device %02d (%s) status is: %s\n", device[i], name_drive[i], state_drive[i]);
}

2. Скрипт парсинга вывода предыдущего скрипта :)

Это уже писано лично ) Положить в /root/scripts/raid_status.pl

#!/usr/bin/perl
open $f,'/usr/sbin/MegaCli -PDList -aALL | /bin/awk -f /root/scripts/analysis.awk |';
$numraid=0;
$ok=1;
%dev=();
while (&lt;$f&gt;) {
   if (/^Device\s+(\d+)\s+\(([^)]+)\)\s+status is: (\w+)/) {
($d,$m,$s)=($1,$2,$3);
      if ($s !~ /Online/i) {
         $ok=0;
         $dev{$d}=$s;
      }
      $numraid++;
   }
}
 
close $f;
 
if ($numraid != 6) {
   print "FAILURE: numraid !=6";
   exit;
}
 
if ($ok!=1) {
   $s='';
   foreach (keys(%dev)) {
      $s.="$_ : ".$dev{$_}.'; ';
   }
   print "FAILURE: $s";
   exit;
}
print "OK";

Убедиться что скрипт выдает ОК. Настроить nagios как указано в начале статьи.

 

Мониторинг Software RAID в Linux с помощью Nagios (перепечатка)

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

Небольшой ликбез по удаленному мониторингу софтварного рейда в Linux с помощью Nagios и SNMPd.

1. Мониторинговый скрипт

[ДАННЫЙ СКРИПТ НЕПРАВИЛЬНЫЙ, НО НЕТ ВРЕМЕНИ ПОФИКСИТЬ]

Для начала подготовим перловый скрипт на машине, которую требуется мониторить. Скрипт  будет проверять рейд и выдавать «OK» или «FAILED: описание» в зависимости от статуса RAID.

#!/usr/bin/perl
open $f,’/proc/mdstat’;
$numraid=0;
$raids=5;
$ok=1;

%dev=();

while (<$f>) {
if (/^(md[0-9])\s*:\s*([a-zA-Z]+)/) {
($d,$s)=($1,$2);
if ($s !~ /active/i) {
$ok=0;
$dev{$d}=$s;
}
$numraid++;
}
}

close $f;

if ($numraid != $raids) {
print «FAILURE: numraid !=$raids»;
exit;
}

if ($ok!=1) {
$s=»;
foreach (keys (%dev)) {
$s.=»$_ : «.$dev{$_}.’; ‘;
}
print «FAILURE: $s»;
exit;
}

print «OK»;

В данном скрипте следует установить переменную $raids в значение общего числа софтварных рейд-массивов в вашей системе. Узнать сколько у вас рейдов можно командой «cat /proc/mdstat».

Положите скрипт в /root/scripts/raid_status.pl

2. Настраиваем SNMPd

/etc/snmp/snmpd.conf:

syslocation  «Cool datacenter»
syscontact  cool@admin.su
sysservices 72

# Здесь нужно перечислить айпишники, с которых позволено обращаться к SNMPd
# secret_pass – пароль комунити

com2sec nagios 1.2.3.4/32 secret_pass
com2sec nagios 127.0.0.1 secret_pass

group pgroup v2c nagios
view all included  .1
access pgroup «»      any       noauth    exact  all all  none

# для мониторинга какого то процесса поставить «proc имя_процесса»
# proc httpd
# proc vsftpd
# для мониторинга партишена поставить disk /partition
# disk /
# disk /var
# Для мониторинга ЛА поставить load 15 10 10
# load 15 10 10
# Для мониторинга свапа поставить swap минимальное_своб_место_свапа_кб
# swap 1500000

# Собственно, наш скрипт мониторинга RAID
exec raid_status /root/scripts/raid_status.pl

master agentx
AgentXSocket tcp:localhost:705

/etc/sysconfig/snmpd.options:

OPTIONS=»-Lf /var/log/snmpd.log»

Далее, стартуем snmpd и добавляем его в стартап:

# /etc/init.d/snmpd start
# chkconfig –level 3 snmpd on

3. Конфигурация удаленного Nagios’a

Задаем команду проверки RAID в commands.cfg:

define command{
command_name check_snmp_raid
command_line $USER1$/check_snmp -H $HOSTADDRESS$ -P 2c -o .1.3.6.1.4.1.2021.
8.1.101.$ARG1$ -C $ARG2$ -r «OK»
}

В конфигурации хоста ourhost.cfg:

# Определяем удаленный хост; 1.1.1.1 – айпи удаленного хоста
define host{
use             server
host_name       our_host
alias           Remote Host with software RAID
address         1.1.1.1
check_command   check-host-alive
}

#… здесь всякие другие проверки ЛА, свапа, свободного места, процессов и пр.

# Собсно мониторинг RAID, secret_pass – пароль комунити удаленного сервера

define service{
use             remote-service
host_name       our_host
service_description RAID status
check_command   check_snmp_raid!1!secret_pass
normal_check_interval       20
}

Установка X/KDE на удаленный CentOS сервер/VDS (перепечатка)

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

Написано по материалам HowTo VNC Server. В качестве операционной системы удаленного сервера возьмем CentOS.

Поскольку у нас отсутствует доступ к консоли сервера, установим KDE на http://www.softpedia.com/get/Internet/Remote-Utils/VNC-for-Windows.shtml.

На сервере понадобится 512М оперативы чтобы все это нормально работало.

Все нижеописанное работает на VDS/VPS на основе Virtuozzo/OpenVZ.

1. Устанавливаем иксы и KDE:

# yum -y groupinstall «X Window System»
# yum -y groupinstall «KDE (K Desktop Environment)»

2. Добавляем некоего юзера user1, под которым будут запускаться кеды:

# useradd user1
# passwd user1

3. Конфигурируем VNC Server (должен был поставиться с вышеописанными пакетами):

файл /etc/sysconfig/vncservers:
VNCSERVERS=»1:user1»
VNCSERVERARGS[1]=»-geometry 1024×768″

4. Устанавливаем пароль на VNC для нашего юзера:

# su user1
# vncpasswd

5.  Редактируем /home/user1/.vnc/xstartup:

Убираем камменты со следующих строк:

unset SESSION_MANAGER
exec /etc/X11/xinit/xinitrc

Должно получиться примерно следующее:

unset SESSION_MANAGER
exec /etc/X11/xinit/xinitrc

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
xterm -geometry 80×24+10+10 -ls -title «$VNCDESKTOP Desktop» &
twm &

6. Стартуем VNC Server, добавляем в автозагрузку:

# /etc/init.d/vncserver start
# chkconfig –level 3 vncserver on

7. Качаем VNC Client, например отсюда

8.  Выбираем параметры коннекта, глубину цвета и т.п. Коннектимся на SERVER_IP:1, вводим пароль с шага 4

9. Опционально, yum install firefox ;)

10. Enjoy

Уменьшение потребления памяти MySQL (перепечатка)

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

В основном это касается Virtual Dedicated Server (VDS/VPS), т.к. дефолтная установка MySQL на CeontOS/Fedora/RHEL с дефолтным my.cnf делает malloc на сотню с лишним мегабайт.

Конечно на потребляемую память MySQL влияют такие параметры как key_buffer, query_cache_size и т.п. Но они по дефолту идут минимальные, а кеш запросов вообще по моему отключен по дефолту.

Так вот все очень просто. Добавляем в my.cnf:

skip-innodb
skip-bdb

Это выключит хандлеры InnoDB и BerkeleyDB и всю потребляемую ими память. Ну конечно делать это нужно если вы не используете вышеприведенные типы таблиц.

Далее рестартуем мускуль и видим в топе что он занимает десяток-другой мегабайт.

PS: в большинстве случаев не помешает опция и skip-networking. А вот thread_cache_size я советую поставить в значение 5-15 (в зависимости от нагрузки) :)