mysql indexes

офигенная статья

Рубрика: overminds | Оставить комментарий

munin on centos install error

Бывает такая ошибка при установке munin, связанная с использованием нескольких репозиториев, в частности rpmforge:

# yum install munin-node
Transaction Check Error:
  file /usr/share/man/man3/XML::SAX::Base.3pm.gz conflicts between attempted installs of perl-XML-SAX-0.96-7.el6.noarch and perl-XML-SAX-Base-1.04-1.el6.rf.noarch
  file /usr/share/man/man3/XML::SAX::Exception.3pm.gz conflicts between attempted installs of perl-XML-SAX-0.96-7.el6.noarch and perl-XML-SAX-Base-1.04-1.el6.rf.noarch

Решается это так:

# vim /etc/yum.repos.d/rpmforge.repo
   exclude=perl-XML-SAX-Base

# yum update
# yum install munin-node

спасибо товарищу за решение

Рубрика: overminds | Метки: , , | Оставить комментарий

esxi error clean

https://kb.vmware.com/kb/1033725
Нужно почистить IPMI System Event.log
To run localcli command on the ESXi 5.1 or 5.5 host:
1. Connect to the ESXi host through SSH. For more information, see Using Tech Support Mode in ESXi 4.1 and ESXi 5.x (1017910).
2. Run this command:

localcli hardware ipmi sel clear
Рубрика: overminds | Оставить комментарий

скрипт сравнения fstab с текущим mount

сравнивает, показывает что прописано но не смонтировано, или смонтировано но не прописано:

#!/bin/bash


#объявляем массивы, в которых будут собраны и сортированы точки монтирования

declare -a fst #fstab
declare -a mnt #mount
declare -a fstinmnt #fstab in mount present
declare -a mntinfst #mount in fstab present
declare -a nfstinmnt #fstab in mount absent
declare -a nmntinfst #mount in fstab absent

#заполняем первичные массивы точками монитрования прописанными в fstab и фактически смонтированны mount

fst=( `egrep -v '^#|^$' /etc/fstab |awk '{print $2}' |egrep -v '\/proc|\/dev\/shm|\/dev\/pts|\/sys|swap'` )
mnt=( `mount |awk '{print $3}' |egrep -v '\/proc|\/dev\/shm|\/dev\/pts|\/sys|\/var\/lib\/nfs'` )

#инициализируем индекс-каунтеры для сортированных массивов

fst_members=${#fst[@]}
mnt_members=${#mnt[@]}

#fst -> mnt

#построчно сравниваем маунтпоинты из fstab с mount. совпадения кладем в fstinmnt[], промахи в nfstinmnt[].

for f in `seq -s " " 0 $[$fst_members - 1]`; do
 for m in `seq -s " " 0 $[$mnt_members - 1]`; do
  if [ "${fst[$f]}" = "${mnt[$m]}" ]
   then fstinmnt=( "${fstinmnt[@]}" "${fst[$f]}" ) ; break
   else nfstinmnt=( "${nfstinmnt[@]}" "${fst[$f]}" )
  fi
  done;
done

#инициализируем индекс-каунтеры для сортированных массивов

fstinmnt_members=${#fstinmnt[@]}
nfstinmnt_members=${#nfstinmnt[@]}


#дедуплицируем вывод, т.к. сравнение происходит в несколько проходов, имеем дубли, которые надо убрать.


for i in `seq -s " " 0 $[$fstinmnt_members - 1]`; do
 for ni in `seq -s " " 0 $[$nfstinmnt_members -1]`; do
  if [ "${fstinmnt[$i]}" = "${nfstinmnt[$ni]}" ]
   then nfstinmnt[$ni]=
  fi
 done;
done

nfstinmnt=( `printf '%s\n' ${nfstinmnt[*]} |sort |uniq |paste -d" " -s` )


#mnt -> fst

#построчно сравниваем маунтпоинты из mount c fstab. совпадения кладем в mntinfst[], промахи в nmntinfst[].

for m in `seq -s " " 0 $[$mnt_members - 1]`; do
 for f in `seq -s " " 0 $[$fst_members - 1]`; do
  if [ "${mnt[$m]}" = "${fst[$f]}" ]
   then mntinfst=( "${mntinfst[@]}" "${mnt[$m]}" ) ; break
   else nmntinfst=( "${nmntinfst[@]}" "${mnt[$m]}" )
  fi
  done;
done

#инициализируем индекс-каунтеры для сортированных массивов

mntinfst_members=${#mntinfst[@]}
nmntinfst_members=${#nmntinfst[@]}

#опять дедуплицируем вывод.

for i in `seq -s " " 0 $[$mntinfst_members - 1]`; do
 for ni in `seq -s " " 0 $[$nmntinfst_members -1]`; do
  if [ "${mntinfst[$i]}" = "${nmntinfst[$ni]}" ]
   then nmntinfst[$ni]=
  fi
 done;
done

nmntinfst=( `printf '%s\n' ${nmntinfst[*]} |sort |uniq |paste -d" " -s` )

#вывод полученных результатов сравнения mount->fstab

echo "маунтпоинты прописанные в fstab и смонтированные      ->  ${fstinmnt[@]}"
echo "маунтпоинты прописанные в fstab и _не_ смонтированные ->  ${nfstinmnt[@]}"
echo "маунтпоинты смонтированные и прописанные в fstab      ->  ${mntinfst[@]}"
echo "маунтпоинты смонтированные и _не_ прописанные в fstab ->  ${nmntinfst[@]}"
Рубрика: overminds | Метки: , , | Оставить комментарий

philips w632 play problem

тут решение для 2.3 андроида

Рубрика: overminds | Метки: , | Оставить комментарий

cat исключаем из вывода пустые строки и комментарии

необработанный вывод:

[root@localhost /]# cat /etc/fstab 

#
# /etc/fstab
# Created by anaconda on Tue Sep 30 15:40:51 2014
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/VolGroup-lv_root /                       ext4    defaults        1 1
UUID=543f4814-5fb1-46d9-9a77-6fe766912472 /boot                   ext4    defaults        1 2
/dev/mapper/VolGroup-lv_swap swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0

UUID=843cf936-9dc7-4774-b4c7-10eb9a09c2cf /home ext4 defaults 0 0

обработанный вывод:

[root@localhost /]# cat /etc/fstab |grep -v '^#'  | grep -v '^$'
/dev/mapper/VolGroup-lv_root /                       ext4    defaults        1 1
UUID=543f4814-5fb1-46d9-9a77-6fe766912472 /boot                   ext4    defaults        1 2
/dev/mapper/VolGroup-lv_swap swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
UUID=843cf936-9dc7-4774-b4c7-10eb9a09c2cf /home ext4 defaults 0 0

или одной командой:

egrep -v '^#|^$' имя_файла

и вишенка:

grep -ve «^#\|^[[:space:]]*$» file_name

будет пропускать не только пустые строки но и строки состоящие из пробелов и табуляций

grep -ve «^[[:space:]]*\(#\|$\)»

будет пропускать не только все вышеперечисленное, но и строки, где перед решеткой только пробелы и табуляции.

Рубрика: overminds | Метки: | Оставить комментарий

bash ограничение времени работы скрипта

#! /usr/local/bin/bash
###########################################
# Default values
#------------------------------------------

declare -i timeout=20    # default timeout in seconds.

Kill='/bin/kill'
split_line='-------------------------------------------------------------------------------'

success_msg='status OK'  # that what external program should return on success
#
###########################################
ftmp="$(mktemp /tmp/$(basename $0).XXXXXXXX)"
trap "rm -f ${ftmp}" 0 1 2 5 15

ext_prg=$1

( ${ext_prg} )>${ftmp} 2>&1 &   # run some program in subshell
cPID=$!                         # get PID of subshell
sleep 5                         # wait at least 5 seconds to get time for process to start
((timeout-=5))

status=0
if [[ ${timeout} -gt 0 ]]; then
    while [[ $( ps | grep -o -G "^${cPID}"; ) -eq ${cPID} && ${status} -eq 0 ]]; do
        status=$((timeout-- ? 0 : 1)); sleep 1
    done
fi

if [[ ${status} -eq 1 ]]; then
    eval '${Kill} -9 ${cPID}' &>/dev/null;  # If timeout occured - kill child process
    echo "${split_line}"
    echo `basename $0`": Err: Timeout occured."
    echo "Process(${cPID}): ${ext_prg}"
    echo "was killed because of timeout."
    echo "${split_line}"
    exit 1
else
    echo "${split_line}"
    echo -en "Process(${cPID}): ${ext_prg}\nterminate by itself successfully.\n"
    rc=$(cat ${ftmp} | awk "/${success_msg}/"'{print $2}')
    if [[ -z "${rc}" ]]; then
        echo "${ext_prg}: ERR: no success code returned!!!"
        exit 1
    else
        echo "${ext_prg}: return success code!!!"
    fi
    echo "${split_line}"
fi

exit 0

взято тут

Рубрика: overminds | Метки: | Оставить комментарий

gps on linux

взято тут

Рубрика: overminds | Оставить комментарий

hp rest api

http://habrahabr.ru/company/hp/blog/268885/#habracut

Рубрика: overminds | Оставить комментарий

файлы открытые процессом

Файлы, которые открыл процесс можно посмотреть так:

ls -la /proc/{PID}/fd
Рубрика: overminds | Метки: , | Оставить комментарий

pssh массовые изменения через ssh

pssh -i -h ./hostlist.txt "command list"

-i — нормальный вывод исполняемых команд
-h — файл со списком имен или адресов хостов
«command list» — исполняемые команды

Рубрика: overminds | Оставить комментарий

hp driver update from rpm

Updating firmware with rpm installed:

Install the firmware rpm using the command: rpm -ivh . This extracts the contents of the rpm to the ‘/usr/lib/x86_64-linux-gnu’ location
The CP026885.scexe script is located in the ‘hp-scexe-compat’ folder. The actual name of the ‘hp-firmware-smartarray-46a4d957a7-*’ folder is based on the version of

the rpm installed in the first step above
To install firmware, you can execute ONE of the following commands:

               # ./CP026885.scexe in the '/usr/lib/x86_64-linux-gnu/hp-scexe-compat'

location (OR)

               # ./hpsetup in the '/usr/lib/x86_64-linux-gnu/hp-firmware-smartarray-46a4d957a7-*' 

location

The results of the firmware upgrade are saved to the Component.log file, located in the /var/cpq/ directory
To uninstall the rpm, run the command: rpm -e , which is the rpm filename without the ‘.rpm’ extension
Updating firmware without installing the rpm:

Extract the contents of the rpm using the command: rpm2cpio .rpm | cpio -id. This extracts the contents of the rpm to ‘usr’ folder in the current

directory
Navigate to the ‘usr/lib/x86_64-linux-gnu/hp-firmware-smartarray-46a4d957a7-*’ location and run ./hpsetup to update the firmware. The actual name of the ‘hp-

firmware-smartarray-46a4d957a7-*’ folder is based on the version of the rpm installed in the step above
The results of the firmware upgrade are saved to the Component.log file, located in the /var/cpq/ directory

Рубрика: overminds | Метки: , , | Оставить комментарий

at syntax

-bash-4.1$ at 17:36 Aug 27 2015
at> echo "hello"
at> <EOT>
job 8 at 2015-08-27 17:36
Рубрика: overminds | Оставить комментарий

замена строки/символа в списке

файл со списком по целому слову без пробелов, заканчивающийся переводом строки

cat file | tr -s '\n' ' '

-s заменить
далее: что чем
то есть перевод строки заменям пробелом

Рубрика: overminds | Оставить комментарий

hprcu — hp rom config utility

http://h20566.www2.hp.com/hpsc/doc/public/display?sp4ts.oid=5379860&docId=mmr_kc-0100799&docLocale=en_US

конфигуратор bios для hp серверов. аналог conrep

Рубрика: overminds | Оставить комментарий

nagios host list

grep host_name /var/log/nagios/objects.cache | cut -f3 | sort -u | paste -d, -s
Рубрика: overminds | Метки: | Оставить комментарий

nagios thresholds ranges

тут

Table 3. Example ranges

Range definition

Generate an alert if x…

10 < 0 or > 10, (outside the range of {0 .. 10})
10: < 10, (outside {10 .. ∞}) ~:10 > 10, (outside the range of {-∞ .. 10})
10:20 < 10 or > 20, (outside the range of {10 .. 20})
@10:20 ≥ 10 and ≤ 20, (inside the range of {10 .. 20})

Рубрика: overminds | Метки: | Оставить комментарий

yum help

search [string] — поиск пакета по имени или его фрагменту;
* list — вывод списка пакетов, всех (all или без указания фильтра), установленных (installed) или доступных (available);
* repolist — вывод списка подключённых репозиториев;
* resolvedep [shortname] — вывод полного имени пакета, с указанием номера версии, сборки и т.д., по его краткому имени;
* provides filename — поиск пакета, содержащего указанный файл;
* info pkgname — вывод полной информации о пакете;
* deplist pkgname — вывод списка зависимостей указанного пакета;
* grouplist — вывод списка групп, разделённого на установленные и доступные;
* groupinfo «Group name» — вывод списка пкаетов, входящих в указанную группу, имя которой даётся в соответствие с выводом субкоманды grouplist и экранируется кавычками;
* check-update — вывод списка пакетов, для которых в данный момент доступны обновления.

еще тут

Рубрика: overminds | Метки: , | Оставить комментарий

hpacucli

шпора по hp-шной дисковой кли:

Сокращения, которые можно использовать в командах


chassisname = ch
controller = ctrl
logicaldrive = ld
physicaldrive = pd
drivewritecache = dwc

Управление контроллером дискового массива

Показать информацию (детально)


hpacucli> ctrl all show config
hpacucli> ctrl all show config detail

Статус контроллера


hpacucli> ctrl all show status

Управление кэшированием


hpacucli> ctrl slot=0 modify dwc=disable
hpacucli> ctrl slot=0 modify dwc=enable

Пересканировать устройства, добавленные с момента последнего сканирования


hpacucli> rescandetects newly added devices since the last rescan

Управление физическими дисками в массиве

Показать информацию (детально)


hpacucli> ctrl slot=0 pd all show
hpacucli> ctrl slot=0 pd 2:3 show detail

Статус дисков


hpacucli> ctrl slot=0 pd all show status
hpacucli> ctrl slot=0 pd 2:3 show status

Очистака


hpacucli> ctrl slot=0 pd 2:3 modify erase

Управление диодами на дисках


hpacucli> ctrl slot=0 pd 2:3 modify led=on
hpacucli> ctrl slot=0 pd 2:3 modify led=off

Управление логическими дисками

Показать информацию (детально)


hpacucli> ctrl slot=0 ld all show [detail]
hpacucli> ctrl slot=0 ld 4 show [detail]

Статус дисков


hpacucli> ctrl slot=0 ld all show status
hpacucli> ctrl slot=0 ld 4 show status

Управление диодами на дисках


hpacucli> ctrl slot=0 ld 4 modify led=on
hpacucli> ctrl slot=0 ld 4 modify led=off

Перезапустить «отказавшие» диски


hpacucli> ctrl slot=0 ld 4 modify reenable forced

Создание дисков


# логический диск
hpacucli> ctrl slot=0 create type=ld drives=1:12 raid=0# логический диск — чередованиеhpacucli> ctrl slot=0 create type=ld drives=1:13,1:14 size=300 raid=1#логический диск — raid 5
hpacucli> ctrl slot=0 create type=ld drives=1:13,1:14,1:15,1:16,1:17 raid=5drives — конкретные диски, все диски (all drives) или неиспользуемые диски (unassigned drives)
size -размер логического диска в Мб
raid — тип raid 0, 1 , 1+0 and 5

Удаление


hpacucli> ctrl slot=0 ld 4 delete

Добавление дисков


hpacucli> ctrl slot=0 ld 4 add drives=2:3

Добавление дискового пространства (принудительно)


hpacucli> ctrl slot=0 ld 4 modify size=500 forced

Добавление резервного диска spare


hpacucli> ctrl slot=0 array all add spares=1:5,1:7

взято тут

Рубрика: overminds | Метки: | 2 комментария

nagios downtime for users

шпаргалка, чтоб не забыть.

заводим generic-contact
заводим группу contact-web-access
включаем в темплейт заведенную группу
включаем в нужный хост на уровне описания хоста нужную группу
заводим пользователя в htpasswd

Рубрика: overminds | Метки: | Оставить комментарий

tc ввод и вывод

был озадачен шейпингом на пингвине. результаты трудов.

шейпим выход:


[root@server]# cat ./shape.sh
#!/bin/bash

TC=/sbin/tc
IF=eth4.1764 # Interface
#IF=bond2 # Interface
UPLD=1680Mbit # UPLOAD Limit
IP=0.0.0.0/32 # Host IP

start() {

$TC qdisc add dev $IF root handle 1: htb default 30
$TC class add dev $IF parent 1: classid 1:1 htb rate 10gbit
$TC class add dev $IF parent 1:1 classid 1:10 htb rate $UPLD
$TC filter add dev $IF protocol ip parent 1:0 prio 1 u32 match ip src $IP flowid 1:10

}

stop() {

# Stop the bandwidth shaping.
$TC qdisc del dev $IF root

}

restart() {

# Self-explanatory.
stop
sleep 1
start

}

show() {

# Display status of traffic control status.
$TC -s -d qdisc show dev $IF
$TC -s -d class show dev $IF
$TC -s -d filter show dev $IF

}

case "$1" in

start)

echo -n "Starting bandwidth shaping: "
start
echo "done"
;;

stop)

echo -n "Stopping bandwidth shaping: "
stop
echo "done"
;;

restart)

echo -n "Restarting bandwidth shaping: "
restart
echo "done"
;;

show)

echo "Bandwidth shaping status for $IF:"
show
echo ""
;;

*)

pwd=$(pwd)
echo "Usage: tc.bash {start|stop|restart|show}"
;;

esac

exit 0

шейпим вход. тут немного сложнее, и надо поднимать промежуточное псевдоустройство ifb. головная статья по ifb. в общем случае в ведре оно уже есть, и нужно просто запилить модуль, как-то так:

modprobe ifb numifbs=1

и поднять интерфейс:

ip link set dev ifb0 up

после того, как встало, используем вот это:


[root@server]# cat ./inshape.sh
#!/bin/bash

TC=/sbin/tc
IF=bond2 # Interface
DNLD=150Mbit # DOWNLOAD Limit. set here half of required bandwith. 100Mbit=20Mbps.
IP=0.0.0.0/32 # Storage IP

start() {

ip link set dev ifb0 up
$TC qdisc add dev $IF handle ffff: ingress
$TC filter add dev $IF parent ffff: protocol ip u32 match u32 0 0 action mirred egress redirect dev ifb0
$TC qdisc add dev $IF root handle 1: htb default 10
$TC class add dev $IF parent 1: classid 1:1 htb rate $DNLD
$TC class add dev $IF parent 1:1 classid 1:10 htb rate $DNLD
$TC qdisc add dev ifb0 root handle 1: htb default 10
$TC class add dev ifb0 parent 1: classid 1:1 htb rate $DNLD
$TC class add dev ifb0 parent 1:1 classid 1:10 htb rate $DNLD
$TC filter add dev ifb0 parent 1:0 protocol ip prio 0 u32 match ip src $IP flowid 1:10
}

stop() {

# Stop the bandwidth shaping.
$TC qdisc del dev $IF root
$TC qdisc del dev $IF ingress
$TC qdisc del dev ifb0 root

}

restart() {

# Self-explanatory.
stop
sleep 1
start

}

show() {

# Display status of traffic control.
$TC -s -d qdisc show dev $IF
$TC -s -d class show dev $IF
$TC -s -d filter show dev $IF
$TC -s -d qdisc show dev ifb0
$TC -s -d class show dev ifb0
$TC -s -d filter show dev ifb0

}

case "$1" in

start)

echo -n "Starting inbound bandwidth shaping: "
start
echo "done"
;;

stop)

echo -n "Stopping inbound bandwidth shaping: "
stop
echo "done"
;;

restart)

echo -n "Restarting inbound bandwidth shaping: "
restart
echo "done"
;;

show)

echo "Bandwidth shaping status for ifb0 and $IF:"
show
echo ""
;;

*)

pwd=$(pwd)
echo "Usage: tc.bash {start|stop|restart|show}"
;;

esac

exit 0

Рубрика: overminds | Метки: , | 2 комментария

cp xargs

—target-directory=КАТАЛОГ (начиная с версии file-utils 4.1)
Задаёт каталог назначения, куда будет осуществляться копирование. Имеется в
виду для использования с xargs(1), как, например, в «ls | xargs cp —target-
directory=../d».

Рубрика: overminds | Метки: , | Оставить комментарий

grep hints

в конфигах нагиоса найти имена серверов, которые входят в группу windows-server.

grep -r windows-server /usr/local/etc/nagios/objects/ |grep use |awk '{print $1}' |sort |uniq |cut -d : -f 1 |xargs grep host_name |awk '{print $3}' |sort | uniq > ./win_srv_names.txt

убрать решетки каментов из конфига

 


egrep -v "^$|^#" /etc/elasticsearch/elasticsearch.yml

 

Рубрика: overminds | Метки: | Оставить комментарий

Выравнивание разделов диска

взято тут

проверка, выровнен ли диск:

~# parted /dev/sda align-check opt 1

создание ровных разделов:

parted -a optimal

либо

fdisk -c -u /dev/sdc

Рубрика: overminds | Метки: , , , | Оставить комментарий

pnp4nagios nagiosgraphs

все правильно написано

Рубрика: overminds | Метки: | Оставить комментарий

regexp все нужное

выбираем ip адреса

grep -E -o '[0-9]{1,3}(\.[0-9]{1,3}){3}'

выбираем mac адреса

grep -E -o '[0-9,aAbBcCdDeEfF]{1,2}(\:[0-9,aAbBcCdDeEfF;]{1,3}){5}'

-E, —extended-regexp PATTERN — интерпретировать PATTERN как расширенное регулярное выражение
-o, —only-matching — выводит только то, что соответствует регулярному выражению

timestamp для якорей java-stacktrace

^\[\d\d\d\d-\d\d-\d\d\ \d\d\:\d\d\:\d\d\,\d\d\d]

\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2},\d{3} - 2018-03-29 15:43:50,862

десятичные или целые числа

[-+]?[0-9]*\.?[0-9]+
Рубрика: overminds | Метки: | Оставить комментарий

про snmp traps

From: Max
Newsgroups: email
Date: Mon, 22 Oct 2005 14:31:37 +0000 (UTC)
Subject: Основы работы с SNMP traps

Оригинал: http://www.asmi.spb.ru/faq/snmp-traps-i/

SNMP traps и с чем их едят

В этой статье я хочу осветить вопрос работы с SNMP traps. В то время,
когда я начинал разбираться с этой темой, при неплохом знании
принципов работы протокола SNMP, я был удивительным образом перепутан
результатами чтения документации по этому вопросу, всеми этими OID,
которые нужно писать как параметры для команды snmptrap. Поиски
внятной информации в интернет не дали результатов. Создавалось
впечатление, что я один такой непонятливый среди тех, кто считает это
элементарным.

В своей работе я использую пакет NetSNMP с открытым исходным кодом и
поэтому, примеры относятся именно к этому пакету.

Я не буду останавливаться на описании дерева SNMP (считаю это
действительно банальным), а начнем с пресловутого OID. OID это просто.
OID, это Object ID, уникальный идентификатор объекта в дереве значений
SNMP. OID может записываться в нескольких видах.

1. Числовой. Например, 1.3.6.1.4.1.2021. Самый простой вид, по
причине полного отсутствия каких либо трансформаций программным
обеспечением. Именно в таком виде SNMP «думает».

2. Текстовый, с использованием MIB файлов. Понятно, что дикие цифры
OID запомнить категорически невозможно, поэтому с помощью MIB
можно вводить текстовые мнемонические имена для более простого
вспоминания и использования идентификаторов. Кроме того, текстовая
запись позволяет избежать написания OID от корня дерева SNMP.
Уникальные мнемонические имена уже содержат путь до необходимого
узла дерева. Отсюда возможны записи вида enterprises.ucdavis.

Так как уникальность мнемонического имени в пределах всех возможных
MIB никто не гарантирует и не всегда сразу вспомнишь к чему относится
имя (например prTable), существует следующая, на мой взгляд самая
приятная форма записи: UCD-SNMP-MIB::prTable. В таком формате, кроме
самого имени указывается имя MIB (можно сказать, это пространство
имен)

Единственным ограничением использования MIB является то, что при
использовании программного обеспечения SNMP от разных производителей и
различного железа необходимо единое «понимание» этих волшебных
трансформаций. Поэтому на сайтах производителей управляемого
оборудования есть файлы описания MIB для конкретных устройств.

С представлением OID разобрались. Теперь про трапы. Сразу оговорюсь,
что все нижесказанное относится к версии 2с SNMP.

В протоколе SNMP есть трапы (traps) и есть информы (informs).
Отличаются они тем, что трапы посылаются на станцию менеджера без
гарантии их доставки, а информы гарантированно доставляются. Ну, или
не доставляться, но тогда отправитель об этом узнает. Для простоты, я
и то и другое называю трапом. Так нам будет проще.

Какая информация посылается менеджеру в трапе (информе)? А посылаются
следующие данные:

* Uptime устройства в виде пары: стандартный OID uptime, значение

* OID, который говорит о том, что за событие приключилось. В MIB
файлах есть специальные описания некоторого количества стандартных
событий, вроде запуска или остановки агента. Также, мы можем
определить собственные trap OIDs и даже описать их в собственном
MIB файле.

* Любые пары OID и его значение (там еще есть и третье поле «тип
значения», но это нам побоку), которые могут дать дополнительную
информацию. Например, когда свитч посылает трап «Падение линка»,
дополнительное поле будет содержать информацию OID интерфейса, с
которым приключилась неприятность — IF-MIB:ifIndex.2.

Теперь, наше повествование разделяется на направления. Первое
направление: «Как нам послать SNMP trap ручками из командной строки».
Второе направлении «Как нам заставить агента SNMP посылать трапы когда
что то идет не по плану».

Посылаем руками

Допустим, нам хочется послать сообщение менеджеру о том, что демон
net-snmpd запустился и передать дополнительную информацию о размере
swap файла и все это ручками ??? Ну пришла нам такая блажь. Допустим.
Пишем:

snmpinform -c public -v 2c host.sample.com «» ucdavis.ucdTraps.ucdStart memTotalSwap i 1024000

Что здесь что ?
* «» — брать uptime по дефолту
* ucdavis.ucdTraps.ucdStart — послать этот трап
* memTotalSwap i 1024000 — добавить в нагрузку OID memTotalSwap
равное целому 1024000

И если на целевом хосте запущен демон snmptrapd, то в логе появится
сообщение о приходе трапа.

Однако, иногда хочется странного, например послать трап о том, что
инопланетяне тырят SCSI винчестеры прямо из корзинки или о том, что
серверную заливает водой, о чем вас предупредительно оповестил
самодельный датчик, которые весит на COM порту. Понятное дело, в
стандартных MIB о таких странных ситуациях не упоминается. Поэтому,
можно использовать произвольную последовательность цифирек для
обозначения нового в мире события. Например:

snmptrap -c public -v 2c 127.0.0.1 «» 1.3.3.3.3.3.3.3 1.2.2.2.2.2.2 s «Aliens opened the door»

И что характерно, это будет работать. В логе появится такая
бредятинка:

Nov 22 14:08:24 snmptrapd[465]: localhost [127.0.0.1]: Trap ,
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (736247) 2:02:42.47,
SNMPv2-MIB::snmpTrapOID.0 = OID: SNMPv2-SMI::org.3.3.3.3.3.3,
iso.2.2.2.2.2.2 = STRING: » Aliens opened the door»

В то же время, крутые администраторы должны все делать правильно,
самодокументируемо, в соответствии с требованиями IETF и других
компетентных организаций. Поэтому, будем описывать наши новые OID в
своем собственном MIB файле.

ALLIENSATTACK-MIB DEFINITIONS ::= BEGIN
IMPORTS
OBJECT-TYPE, NOTIFICATION-TYPE, MODULE-IDENTITY,
Integer32, Opaque, enterprises, Counter32
FROM SNMPv2-SMI

alliensattack MODULE-IDENTITY
LAST-UPDATED «200209050000Z»
ORGANIZATION «XCom»
CONTACT-INFO
«Planet Earth»
DESCRIPTION
«MIB for preventing aliens to stole our SCSI disks»
::= { enterprises 10050 }

attackTraps OBJECT IDENTIFIER ::= { alliensattack 1 }

attackStartTrap NOTIFICATION-TYPE
STATUS current
DESCRIPTION
«Notify about start of attack»
::= { attackTraps 1 }

attackStopTrap NOTIFICATION-TYPE
STATUS current
DESCRIPTION
«Notify about time to leave our hideouts»
::= { attackTraps 2 }

attackSource OBJECT IDENTIFIER ::= { aliensattack 2 }

attackFromDoors OBJECT-TYPE
SYNTAX DisplayString
MAX-ACCESS read-only
STATUS current
DESCRIPTION
«Sent to manager when attack starts from doors»
::= { attackSource 1 }

attackFromWindows OBJECT-TYPE
SYNTAX DisplayString
MAX-ACCESS read-only
STATUS current
DESCRIPTION
«May be alliens are innocent? And SCSI drives disappeared in the Gates?»
::= { attackSource 2 }

END

Здесь определяется enterptise с номером 10050 и ему даеся имя
aliensattack. После этого вводятся две ветки: одна для трапов (начало
и конец атаки), другая для OID дополнительной информации (атака через
двери или это вовсе не инопланетяне).

Скажу честно, в формате MIB файла я понимаю мало. Поэтому внимательно
изучив MIB файлы из стандартной поставки net-snmp, я сделал этот
пример который работает, но кристальной ясности во всех его ключевых
словах я не достиг.

Дальше! Укладываем этот файл с именем ALLIENSATTACK-MIB.txt в какой
нибудь каталог поближе и запоминаем, что с этого момента все программы
имеющие отношения к SNMP (snmpd, snmptrapd, snmpinform) мы запускаем с
поддержкой этого MIB. Тоесть, к командной строке добавляем параметры
-М каталог/с_файлом -m +ALLIENSATTACK-MIB.

Знак «+» перед именем MIB (не файла с MIB, а именно имя MIB), значит,
что MIB будет добавлен к загружаемым по умолчанию.

Посылаем автоматически

Способ #2. Пишем скрипт, который проверяет системные параметры и
посылает трап на станцию менеджера. Пишется на shell, perl или на
любом известном языке.

Способ #1. Наиболее интересный. В 5-й версии net-snmp появиласть
поддержка модуля DISMAN-EVENT-MIB котрый умеет отсылать сообщения при
некоторых условиях. Но это уже другая история.

взято тут

Рубрика: overminds | Метки: | Оставить комментарий

juniper snmp traps по горячим следам


cat ./mib-jnx-smi.txt > ./juniper
1615 cat ./mib-jnx-js-smi.txt >> ./juniper
1616 cat ./mib-jnx-ex-smi.txt >> ./juniper
1617 cat ./mib-jnx-exp.txt >> ./juniper
1619 cat ./mib-jnx-ping.txt >> ./juniper
1626 cat ./mib-jnx-syslog.txt >> ./juniper
1631 cat ./mib-jnx-pmon.txt


snmpttconvertmib --debug=2 --in=./juniper --out=/usr/local/etc/snmp/snmptt_config/JUNIPER-MIB.snmptt --severity=Normal --exec='/usr/local/libexec/nagios/submit_service_check_result $r TRAP 2'

цифра после TRAP означает состояние после получения трапа. 2 — фейл. 0 — ок.

И письмо Лехи Александрова:

Команда конвертации

snmpttconvertmib —debug=2 —in=/usr/local/etc/snmp/snmptt_mib/CISCO-IPSEC-FLOW-MONITOR-MIB.my —out=/usr/local/etc/snmp/snmptt_config/CISCO-IPSEC-FLOW-MONITOR-MIB.snmptt —severity=Normal —exec=’/usr/local/libexec/nagios/submit_service_check_result $r TRAP 2′

Добавление сконвертированного конфига в snmptt.ini

[TrapFiles]
# A list of snmptt.conf files (this is NOT the snmptrapd.conf file). The COMPLETE path
# and filename. Ex: ‘/usr/local/etc/snmp/snmptt.conf.generic’
snmptt_conf_files = <первоисточник джуниперов

Рубрика: overminds | Метки: , | Оставить комментарий

nagios.log timestamp convert to hr format

cat /var/spool/nagios/nagios.log | perl -pe 's/(\d+)/localtime($1)/e'
Рубрика: overminds | Метки: | Оставить комментарий

nrpe selinux trouble


chcon -t nagios_services_plugin_exec_t /usr/lib64/nagios/plugins/check_mem_linux.pl
chcon -t nagios_unconfined_plugin_exec_t /usr/lib64/nagios/plugins/check_disk

audit2allow в пакете policycoreutils-python

Рубрика: overminds | Метки: , , | Оставить комментарий