Мониторинг устройств (syslog, cvs)

Примеры из жизни как развернуть и настроить систему мониторинга zabbix
Ответить
RomA
Сообщения: 358
Зарегистрирован: 05 авг 2008, 14:53
Контактная информация:

Мониторинг устройств (syslog, cvs)

Сообщение RomA »

Вот тут картинки как выглядит рабочая система http://forum.cz6.ru/viewtopic.php?f=24&t=91&p=510#p510

Введение:
Я уже рассказывал, о том как поднять tftp сервер и сливать на него конфиги разных железяк... но чем больше этих самых железяк становится, тем сложнее управляться с ними. Сложнее не забыть забекапить конфиг, или вспомнить что же ты сделал, что оно перестало работать... Именно эту работу мы будем сегодня автоматизировать.

Задача:
Дано: Есть n+1 неких железяк
Надо: 1) Переодически забирать конфиги для бекапа 2) Вести список изменений в этих конфигах

Решение:
(данный пример описывает сбор данных с устройств cisco)
Для начала нам нужен инструмент, желательно многофункциональный, для автоматического сбора файлов конфига. Му будем использовать http://www.shrubbery.net/rancid/#modules - мне понравился его функционал - по мимо cisco он поддерживает и ещё много железяк.
Ставим

Код: Выделить всё

cd /usr/ports/net-mgmt/rancid
make install clean
в появившемся окне я указал следующие параметры

Код: Выделить всё

                                                                  ┌────────────────────────────────────────────────────────────────────┐
                                                                  │                     Options for rancid 2.3.6                       │  
                                                                  │ ┌────────────────────────────────────────────────────────────────┐ │  
                                                                  │ │             [X] SVN  Use Subversion instead of CVS             │ │  
                                                                  │ │                                                                │ │  
                                                                  │ │                                                                │ │  
                                                                  │ │                                                                │ │  
                                                                  │ │                                                                │ │  
                                                                  │ │                                                                │ │  
                                                                  │ │                                                                │ │  
                                                                  │ │                                                                │ │  
                                                                  │ │                                                                │ │  
                                                                  │ │                                                                │ │  
                                                                  │ │                                                                │ │  
                                                                  │ │                                                                │ │  
                                                                  │ │                                                                │ │  
                                                                  │ │                                                                │ │  
                                                                  │ │                                                                │ │  
                                                                  ├─└────────────────────────────────────────────────────────────────┘─┤  
                                                                  │                       [  OK  ]       Cancel                        │  
                                                                  └────────────────────────────────────────────────────────────────────┘  
                                                                                                                                          
                                                                  ┌────────────────────────────────────────────────────────────────────┐
                                                                  │                 Options for subversion 1.6.16_3                    │  
                                                                  │ ┌────────────────────────────────────────────────────────────────┐ │  
                                                                  │ │[X] MOD_DAV_SVN        mod_dav_svn module for Apache 2.X        │ │  
                                                                  │ │[ ] MOD_DONTDOTHAT     mod_dontdothat for Apache 2.X            │ │  
                                                                  │ │[X] NEON               WebDAV/Delta-V repo access module (neon) │ │  
                                                                  │ │[ ] SERF               WebDAV/Delta-V repo access module (serf) │ │  
                                                                  │ │[ ] SASL               SASL2 authorization support              │ │  
                                                                  │ │[X] BDB                Berkeley DB (4 or 5) repository backend  │ │  
                                                                  │ │[ ] ASVN               Build and install Archive SVN (asvn)     │ │  
                                                                  │ │[ ] MAINTAINER_DEBUG   Build debug version                      │ │  
                                                                  │ │[ ] SVNSERVE_WRAPPER   Enable svnserve wrapper                  │ │  
                                                                  │ │[ ] SVNAUTHZ_VALIDATE  install svnauthz-validate                │ │  
                                                                  │ │[ ] STATIC             Build static version (no shared libs)    │ │  
                                                                  │ │[ ] GNOME_KEYRING      Build with GNOME Keyring auth support    │ │  
                                                                  │ │[ ] KDE_KWALLET        Build with KDE KWallet auth support      │ │  
                                                                  │ │[ ] BOOK               Install the Subversion Book              │ │  
                                                                  │ │                                                                │ │  
                                                                  ├─└────────────────────────────────────────────────────────────────┘─┤  
                                                                  │                       [  OK  ]       Cancel                        │  
                                                                  └────────────────────────────────────────────────────────────────────┘  
                                                                                                                                          
После того как всё успешно установилось переходим к настройкам.

Код: Выделить всё

cd /usr/local/etc/rancid
cp ./rancid.conf.sample ./rancid.conf
В самом файле я поправил только один параметр

Код: Выделить всё

LIST_OF_GROUPS="cisco"
где cisco - это название группы устройств.

Теперь нам надо определиться от имени какого пользователя будет запускаться наша тузла (тут следует учесть что этот пользователь должен быть на устройстве, так как пароль мы пишем, а логин нет - то есть логином является тот пользователь от которого это запускается). Работать все это дело у меня будут от моего пользователя roman - потому дальше это имя встречается в путях. Для этого в домашнем каталоге пользователя создаём специальный файлик с пароля к устройствам

Код: Выделить всё

touch /usr/home/roman/.cloginrc
chmod 600 /usr/home/roman/.cloginrc
chown roman: /usr/home/roman/.cloginrc
В файлик прописываем следующее

Код: Выделить всё

add password 192.168.* password password
add noenable 192.168.*
Первая строка означает, что для всех устройств, у которых IP адреса начинаются на 192.168 буут авторизовываться с паролем password (заметьте, пароль повторяется 2 раза)
Вторая строка говорит что не надо поднимать привилегии - это для cisco, на других устройствах наврят ли вам это может пригодиться

Теперь ещё небольшой штрих - если мы хотим получать на почту изменения в конфиге, то надо в файле /etc/mail/aliases добавить следующие строки

Код: Выделить всё

rancid-cisco: roman@stniva.ru
rancid-admin-cisco:roman@stniva.ru
я вставил эти строки практически в самом начале, сразу после root:
к слову, вместо того что я сказал выше, можно применить и такую конструкцию этого файла

Код: Выделить всё

root: roman@stniva.ru

rancid-cisco: root
rancid-admin-cisco:root
Как бы там ни было - не забудьте пересоздать базу данных

Код: Выделить всё

stat# cd /etc/mail/aliases
stat# newaliases
/etc/mail/aliases: 30 aliases, longest 15 bytes, 344 bytes total
stat#
Дальнейшие действия идут от имени пользователя, под которым вы решили это делать - в моём случае это пользователь roman

Ну вот - конфигурация закончена. Теперь надо создать репазиторий

Код: Выделить всё

/usr/local/libexec/rancid/rancid-cvs
база создана.
Следующим этапом будет описание интересующих нас устройств - идём в файл /usr/local/var/rancid/cisco/router.db (если нет - создаём) и прописываем туда такое

Код: Выделить всё

192.168.0.10:cisco:up
Ну и так в столбик прописываем все наши устройства

Тперь можно запустить саму утилитку

Код: Выделить всё

/usr/local/libexec/rancid/rancid-run
В результате этих действий у нас должет появиться конфиг в директории /usr/local/var/rancid/cisco/configs
У меня всё получилось :-)

Надо поставить это дело на поток :-) для чего прописываем в кронтаб /etc/crontab ежедневный запуск

Код: Выделить всё

#
10	2	*	*	*	roman	/usr/local/libexec/rancid/rancid-run
#
Если не получилось:
1) ну конечно же читаем логи, которые располагаются в /usr/local/var/rancid/logs
2) можно вручную проверить соединение

Код: Выделить всё

stat# /usr/local/libexec/rancid/clogin -u roman -e password 192.168.0.10
192.168.0.10
spawn telnet 192.168.0.10
Trying 192.168.0.10...
Connected to gw.cisco.stniva.ru.0.168.192.in-addr.arpa.
Escape character is '^]'.


User Access Verification

Username: roman
Password: 

Liski#
Liski#exit
Connection closed by foreign host.

stat# 
Итог:
В тоге мы получили:
1) ежедневный бекап конфигов оборудования
2) сообщения на почту в случае если конфигурация устройства изменилась
RomA
Сообщения: 358
Зарегистрирован: 05 авг 2008, 14:53
Контактная информация:

Вебморда системы версионности

Сообщение RomA »

Итак, база изменений у нас ведётся, на почту всё приходит, но хочется это всё ещё как-то и смотреть что же где и когда менялось. Для этого мы будем ставить вебмордочку ко всему этому счастью.
Идём в порт и ставим вебморду

Код: Выделить всё

cd /usr/ports/devel/viewvc
make install clean
Теперь подредактируем конфиг /usr/local/viewvc/viewvc.conf - всё что там было я оставил как есть и редактировал только следующее

Код: Выделить всё

svn_roots = cisco: /usr/local/var/rancid/CVS
default_root = cisco
Для отображения красоты я использовать apache, который у меня работал на компе... в первом же вхосте сделал следующее (добавил к тому что там уже было)

Код: Выделить всё

    Alias /viewvc "/usr/local/viewvc/bin/cgi/"
    ScriptAlias /query /usr/local/viewvc/bin/cgi/query.cgi
     <Directory "/usr/local/viewvc/bin/cgi">
        AddHandler cgi-script .cgi
        Options NONE +ExecCGI
        DirectoryIndex viewvc.cgi
        Order allow,deny
        Allow from all
    </Directory>
Теперь можно перейти на веб и посмотреть.. в моём случае это получился вот такой адрес http://192.168.0.6/viewvc/ - всё работает, всё красиво!

PS: не хорошо такие данные оставлять без пароля, потому для ограничения прав доступа мы применим уже известную нам технологию - внутрь конструкции <Directory ...> добавляем следующие строки

Код: Выделить всё

AuthType Basic
AuthName "Password? :-)"
AuthUserFile /usr/home/www/admin/.htpasswd
Require valid-user
создаём файл паролей и добавляем туда пользователя, под которым будем туда ходить

Код: Выделить всё

touch /usr/home/www/admin/.htpasswd
htpasswd -c /usr/home/www/admin/.htpasswd admin

Что бы все вышеперечисленное работало у вас в апаче должны быть активны следующие модули
mod_cgi.so
mod_wsgi.so


Двайте посмотрим в картинках, как будет выглядеть просмотр изменений
1.jpg
1.jpg (164.76 КБ) 13015 просмотров
2.jpg
2.jpg (354.79 КБ) 13015 просмотров
3.jpg
3.jpg (442.81 КБ) 13015 просмотров
4.jpg
4.jpg (529.1 КБ) 13015 просмотров
Теперь потомки могут сказать нам спасибо, ибо им гораздо проще будет понимать, что и как нарастало в этом конфиге :-)
RomA
Сообщения: 358
Зарегистрирован: 05 авг 2008, 14:53
Контактная информация:

Собираем конфиги с телесинов

Сообщение RomA »

Вступление:
Долго ли, коротко ли, но дошли мы до того, что телесинов у нас стало много, конфигурировать их стали часто и запоминать всё это стало тягостно... тут то я и вспомнил о системе, которая уже пару лет экономит моё время при работе с оборудованием cisco. Но работать с телесинами она не умеет - потому пришлось учить её уму-разуму - об этом и сказ мой будет.

Задача:
Сохранение конфигов и ведение логов изменения конфигуреции оборудования Allied Telesyn при помощи cvs системы RANCID

Реализация:
Для начала гуглим вот эту статью http://www.shrubbery.net/pipermail/ranc ... 04790.html, и выполняем приведённую там рекомендацию, а именно в файл /usr/local/libexec/rancid/rancid-fe после 'zebra'<---><------>=> 'zrancid' ставим запятую, и добавляем

Код: Выделить всё

'at'            => 'ATrancid'
таким образом кусок файла начал выглядить так

Код: Выделить всё

    'smc'<-----><------>=> 'srancid',
    'tnt'<-----><------>=> 'tntrancid',
    'zebra'<---><------>=> 'zrancid',
    'at'<------><------>=> 'ATrancid'
);
вот изменённый файл
rancid-fe.txt
(3.6 КБ) 1009 скачиваний
Теперь по второй ссылки http://groups.google.com/group/rancid-d ... 2010-03%3F скачиваем файлы. Первую строку файлов надо изменить на предмет расположения программ во фре и положить файлы в /usr/local/libexec/rancid/ не забывая сделать их исполняемыми ну и удалив расширение txt. Вот изменённые файлы
ATlogin.txt
(18.72 КБ) 900 скачиваний
ATrancid.txt
(10.45 КБ) 986 скачиваний
Ну вот и хорошо. Теперь изменяем конфиг самой программы. За основу я беру то, что было сделано раньше. Поехали.
В файле /usr/local/etc/rancid/rancid.conf добавляю вторую группу устройств просто через пробел

Код: Выделить всё

LIST_OF_GROUPS="cisco switch"
Создаю каталог для этой группы

Код: Выделить всё

mkdir /usr/local/var/rancid/switch
Создаю структуру базы данных

Код: Выделить всё

rancid-cvs
И, так как всё это запускается от моего пользователя, переназначаю права

Код: Выделить всё

chown -R roman /usr/local/var/rancid/switch 
Сразу в файл /usr/local/var/rancid/switch/router.db вписываю свои свитчи

Код: Выделить всё

192.168.0.27:at:up
ну и на последок прописываю уведомления в файле /etc/mail/aliases

Код: Выделить всё

rancid-switch: root
rancid-admin-switch:root
ну и конечно же потом сделать

Код: Выделить всё

newaliases
Ну вот теперь можно запускать и наслаждаться работой - конфиги будут собираться. Ну а что бы они отображались прийдётся ещё немного пошаманить с конфигом веба, а именно в файле /usr/local/viewvc/viewvc.conf следующую строку приводим к такому виду

Код: Выделить всё

svn_roots = rancid: /usr/local/var/rancid/CVS
Больше ничего относительно первой статьи я не правил.
svn.jpg
svn.jpg (162.06 КБ) 12936 просмотров
RomA
Сообщения: 358
Зарегистрирован: 05 авг 2008, 14:53
Контактная информация:

Собираем конфиги с D-Link

Сообщение RomA »

По аналогии с телесинами захотелось прикрутить и D-Link. За основу был взят проект с гитхаба https://gist.github.com/lauer/5344320
Копируем проект себе

Код: Выделить всё

git clone https://gist.github.com/lauer/5344320
Прикручивается это всё аналогично телесину - то есть в /usr/local/libexec/rancid/ кладём полученные файлики
dlink.tgz
(9.11 КБ) 941 скачивание

Код: Выделить всё

dllogin
dlrancid
Не забывая сделать их исполняемыми - помним, да chmod +x ИМЯФАЙЛА
Ну а теперь подправим их под наши реалии - начнём с файла dllogin где мы просто заменяем первую строку на

Код: Выделить всё

#! /usr/local/bin/expect --
а вот файлу dlrancid повезло не так сильно - по мимо того что мы заменяем первую строку на

Код: Выделить всё

#! /usr/local/bin/perl
нам надо ещё найти выражение

Код: Выделить всё

                        if ($_ =~ m/^.+#/) {
                            $prompt = '.+#.*';
                        }

и заменить его на

Код: Выделить всё

                        if ($_ =~ m/^.+#/) {
                            $prompt = '.+##.*';
                        }
Это позволит снимать конфиги с разных моделей свитчей. (конкретно у меня без этой правки не удавалось снимать инфу со свитча DGS-3420-26SC)
Терепь отредактируем файл /usr/local/libexec/rancid/rancid-fe где в секцию %vendortable = ( добавим

Код: Выделить всё

'dlink'   => 'dlrancid',
Ну а дальше по аналогии с телесином.
Для справки вот так выглядит база длинков

Код: Выделить всё

# cat /usr/local/var/rancid/D-Link/router.db 
192.168.0.4:dlink:up
192.168.0.1:dlink:up
192.168.0.5:dlink:up
192.168.0.8:dlink:up
192.168.0.5:dlink:up
192.168.1.6:dlink:up
192.168.1.9:dlink:up
192.168.100.1:dlink:up
Опробовано на следующих моделях:
DES-3200-10
DGS-3120-48TC
DGS-3420-26SC
RomA
Сообщения: 358
Зарегистрирован: 05 авг 2008, 14:53
Контактная информация:

Собираем конфиги с Cisco серии SB

Сообщение RomA »

Не всё так просто со свитчами cisco серии SB - они не хотят отдавать конфиги стандартным образом, потому так же пришлось изобрести велосипед, что бы иметь их конфиги в общей системе версионности. Итак - приступим:
В файле /usr/local/libexec/rancid/rancid-fe в секцию %vendortable = ( добавляем

Код: Выделить всё

'cisco-sb'      => 'csbrancid',
Затем в /usr/local/libexec/rancid копируем файлы
ciscocb.tgz
(8.85 КБ) 1012 скачиваний

Код: Выделить всё

csblogin
csbrancid
Делаем исполняемыми и всё как раньше.
А вот теперь нечто новое - в файл .cloginrc , находящийся в домашней директории пользователя, от которого собираются конфиги и содержащий паролями, добавляем следующее

Код: Выделить всё

# Switches
add userprompt sg*.* {"User Name:"}
add user sg*.* {rancid}
add password sg*.* {pass}
add autoenable sg*.* 1
add method sg*.* ssh.
Вот теперь всё.
На всякий случай привожу свой листинг для пояснения ситуации

Код: Выделить всё

# cat /usr/local/var/rancid/Cisco/router.db 
192.168.0.11:cisco:up
192.168.0.12:cisco-sb:up
192.168.0.13:cisco-sb:up
192.168.0.14:cisco-sb:up
192.168.1.1:cisco:up
192.168.1.2:cisco:up
192.168.1.3:cisco-sb:up
192.168.1.4:cisco:up
192.168.1.5:cisco:up
RomA
Сообщения: 358
Зарегистрирован: 05 авг 2008, 14:53
Контактная информация:

Картинки - как это выглядит

Сообщение RomA »

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

Общий вид
1.jpg
Перечислены циски, с которых снимаются конфиги
2.jpg
А вот пример - старый и новый конфиг - посвечено что изменилось
3.jpg
А это список длинков
4.jpg
И опять же что изменилось в конфиге длинка
5.jpg
А вот такое приходит на почту при изменении конфига
6.jpg
Ответить