LINUX.ORG.RU
ФорумAdmin

Мониторинг (SMTP->SNMP)


0

1

Здравствуйте.
Ситуация следующая: я пытаюсь сделать мониторинг VCS кластера в централизованной системе мониторинга. По независящим от меня причине в систему мониторинга хосты можно добавить только как SNMPv1. А VCS может слать трапы только в SNMPv2. Вариантов как это обойти я не смог придумать, поэтому решил подойти с другой стороны: VCS может слать уведомления об авариях по почте. Сервера не имеют доступа вовне, поэтому я выставил отправку на root@localhost. По понятным причинам я не могу заходить на хост каждую минуту, поэтому задумался о каких-нибудь костылях, чтобы локальную почту с нужной темой всё-таки каким-то образом передавать по SNMP в централизованную систему мониторинга.
Вопрос, собственно, в том как это можно реализовать. Первое, что приходит в голову это проверять почту по крону на предмет ключевых слов, а вот что и как делать дальше придумать пока не могу. Возможно есть принципиально другие способы решить мою задачу, буду благодарен за любые варианты.

★★★★★

> локальную почту с нужной темой всё-таки каким-то образом передавать по SNMP в централизованную систему мониторинга.

вы ничего не намутали?

guilder
()
Ответ на: комментарий от guilder

Вас видимо смутила формулировка? Генерация трапа с каким-то нужным текстом было бы идеальным вариантом, ведь пересылаются не только OIDы и какие-то числовые ID но и plain text. Можете посмотреть анализатором какой-нибудь дамп с SNMP пакетами и убедиться

zolden ★★★★★
() автор топика
Ответ на: комментарий от zolden

>Вас видимо смутила формулировка?

да, зачем передавать письма по snmp?

настройте какуюнибудь локальную зону в bind, добавльте постфикс и довекот, остальное по вкусу. А остальные машины пусть шлют на него почту

guilder
()
Ответ на: комментарий от guilder

Передавать по SNMP надо не письма, а уведомления об авариях, но это так - нюансы...
Есть стойка, внутри много серверов, в ней же крутится сервер системы мониторинга. Доступ к железкам либо через ssh+к системе мониторинга доступ через клиентскую часть (т.е. это не веб-интерфейс). Железки не могут изнутри слать что-либо вовне, т.е. не имеют доступ в публичный интернет и не могут слать почту на реальные адреса. Человек, который следит за состоянием серверов, видит все аварии в клиентской части системы мониторинга, ну и естественно у него есть какой-то почтовый ящик (корпоративный).
Ось - SLES10, без возможности ставить пакеты не входящие в изначальный состав дистрибутива, но думаю всё что нужно я там найду.
Не могли бы вы схематично описать что, куда и как именно должно пересылаться в вашем варианте?

zolden ★★★★★
() автор топика
Ответ на: комментарий от zolden

на том сервере на котором вы будите держать почтовик настраиваете bind c зоной, почтовик и получалку, поидее всё в репах должно быть.

на тех машинах на которых всё крутится прописываем в resolv.conf ip адрес нашего сервера с зоной, в крон добавляем то что, нужно и указываем почту данного сервера.

в кроне серверов можете прописать скрипт который будет выводить в тело письма то что вам надо от конкретного сервера. на стороне почтовика вы можете сортировать почту по указанным словам. впринципе к этому же серверу можно придлеать тунель (ssh, или ещё чтонибудь) который будет выводить всё наружу.

guilder
()
Ответ на: комментарий от guilder

Мм...Я чувствую что тут есть какой-то очевидный момент, который я видимо не понимаю, но никак не уловлю в чём подвох.
Ок, я настроил локально почтовик. Как я в итоге должен получить уведомление об аварии не заходя на сервак?

zolden ★★★★★
() автор топика
Ответ на: комментарий от guilder

Я никогда не конфижил почтовые сервера (но примерно представляю себе как резолвятся имена и всякое такое) возможно там есть своя особенная почтовая магия...попробую ещё раз донести в чём мои затруднения в понимании рассматриваемого случая: Как сообщение от root@localhost может дойти до pupkin@gmail.com? Между ними (localhost и сервером gmail.com) нет связи ни на 3м уровне (IP) ни даже на 2м. Кругом лишь VPNы, интранеты и прочие айписеки.

zolden ★★★★★
() автор топика
Ответ на: комментарий от zolden

root@localhost -> root@server.cluster

далее несколько вариантов

root@server.cluster ~(tunnel|vpn|etc)~> cluster@corparation.com

cluster@corporation.com -> pupkin@gmail.com

guilder
()

самый простой вариант - настроить mail alias'ы чтобы письма определенному пользователю (скажем, vcs-alerts@localhost) форвардились на другой почтовый аккаунт: либо на почтовую группу админам, либо на специальный сервер-обработчик. не составит труда написать небольшого почтового демона, который бы конвертил письма в трапы. хотя, если на то пошло, то почему бы вам просто не конвертить в2 в в1 на промежуточным демоном?
кстати, что это у вас за мониторинг такой, snmp v1 only?

val-amart ★★★★★
()
Ответ на: комментарий от Nastishka

TS>>Сервера не имеют доступа вовне, поэтому я выставил отправку на root@localhost.

Nastishka> SMTP(sendmail) -> procmail -> snmptrap -> задача решена

Зачем усложнять? Вместо /sbin/sendmail скрипт для отправки snmptrap.

sdio ★★★★★
()

Всем спасибо за советы, но безопасники не дадут мне делать туннели и пр., так что вариант любым внешним (по отношению к стойке) почтовым сервером отпадают.

2Nastishka и sdio: Вы не могли бы дать чуть больше деталей? С почтовиками под линуксом я не работал, но с конкретными конфигами я разберусь по ману. Мне не совсем понятна логика решения.

zolden ★★★★★
() автор топика
Ответ на: комментарий от zolden

Для начала а бы сделал так:

# mv /sbin/sendmail /sbin/sendmail.bin
# vi /sbin/sendmail
---------------------------
#!/bin/sh

echo "$@" > /tmp/sendmail.params
cat  > /tmp/sendmail.body

cat /tmp/sendmail.body | /sbin/sendmail.bin "$@"
---------------------------
# chmod +x /sbin/sendmail

И посмотрел бы на /tmp/sendmail.params /tmp/sendmail.body после отправки письма. Потом можно распарсить и выполнить snmptrap

sdio ★★★★★
()
Ответ на: комментарий от sdio

> Вместо /sbin/sendmail скрипт для отправки snmptrap.

Там в настройках «генератора алертов» может быть адрес SMTP-сервера, так что это решение проблематично. Ну и еще один (куда более важный) нюанс - например, тем же sendmail пользуется cron и многие другие, так что ломать sendmail может быть плохой идеей.

Nastishka ★★★★★
()
Ответ на: комментарий от sdio

Мм...почему то пусто в /tmp

# whereis sendmail
sendmail: /usr/sbin/sendmail.bin /usr/sbin/sendmail /usr/lib/sendmail /usr/share/man/man1/sendmail.1.gz
# cat /usr/sbin/sendmail
#!/bin/sh
echo «$@»>/tmp/sendmail.params
cat > /tmp/sendmail.body
cat /tmp/sendmail.body | /usr/sbin/sendmail.bin «$@»
[root@NN-BP_Report-1]-[/root]
# ll /usr/sbin/sendmail
-rwxr-xr-x 1 root root 121 Feb 7 11:28 /usr/sbin/sendmail

zolden ★★★★★
() автор топика
Ответ на: комментарий от Nastishka

Там в настройках «генератора алертов» может быть адрес SMTP-сервера

Да, я там указал localhost

update sendmail

система автономна, и не апдейтится

man

Вопрос был не про детали конфигурации а про общую логику.
Как я понимаю вы предлагаете ловить сообщение в момент прихода(?), парсить и слать трап через snmptrap. Так?

zolden ★★★★★
() автор топика
Ответ на: комментарий от zolden

zolden> Мм...почему то пусто в /tmp

Ну значит, действительно используется smtp протокол и мой вариант тебе не подходит.

sdio ★★★★★
()
Ответ на: комментарий от Nastishka

Nastishka> и до первого <your-package-manager> update sendmail

/usr/sbin/sendmail уже давно линк на установленный MTA, даже если МТА sednmail

sdio ★★★★★
()
Ответ на: комментарий от zolden

> Как я понимаю вы предлагаете ловить сообщение в момент прихода(?)

В момент доставки. Перед помещением его в /var/mail/<username>

система автономна, и не апдейтится

Все когда-то бывает в первый раз

Nastishka ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.