среда, 15 февраля 2012 г.

Zabbix. Настройка email оповещений. Часть 1 (zabbix ssmtp gmail)

Перед тем как перейти к настройке Zabbix, необходимо установить и настроить консольный почтовый клиент. Выбор стоял между sendmail и ssmtp.
Sendmail - один из старейших агентов передачи почты (MTA — mail transfer agent). Распространяется бесплатно вместе с исходными кодами. Существуют версии программы для практически всех операционных систем и аппаратных платформ.
Ssmtp - простой агент передачи почты, который может заменить sendmail в простых задачах. Работает на Linux, FreeBSD и Windows.
Я выбрал ssmtp, т.к. он очень легок и прост в настройке. Его функций вполне достаточно для настройки уведомлений на Zabbix. В качестве ОС - Ubuntu 11.10
1)И так, откроем терминал и вставим следующую команду:

sudo apt-get install ssmtp

2)После того как завершится установка, необходимо отредактировать конфигурационный файл

vi /etc/ssmtp/ssmtp.conf

И если вы собираетесь использовать gmail для отправки оповещений, то необходимо вставить  следующее:

root=your_mail@gmail.com #почтовый ящик zabbixa
mailhub=smtp.gmail.com:465 
rewriteDomain=gmail.com 
AuthUser=your_gmail_username # (без @gmail.com) 
AuthPass=your_gmail_password 
FromLineOverride=YES
UseTLS=YES
Я использую Ubuntu 11.10 и по умолчанию у меня не установлен sendmail, поэтому следующий шаг не обязателен. Но для тех, у кого этот пакет установлен, следует выполнить следующий пункт.
3)Необходимо убедиться что не установлен sendmail
sudo service sendmail stop
sudo apt-get remove sendmail
И затем создадим символическую ссылку для ssmtp, чтобы заменить sendmail
sudo ln -s /usr/sbin/ssmtp /usr/sbin/sendmail

4)Собственно вся настройка закончена. Для отправки сообщения из терминала достаточно ввести следующую команду:
echo "email content" | mail -s "email subject" email_address_to_send_email@somedomain.com
Именно этот способ мы будем использовать при написании скрипта для отправки email оповещений из Zabbix.
Может появиться сообщение, что необходимо установить mailutils, установим его с помощью команды:
sudo apt-get install mailutils

Настройка email оповещений. Часть 2

Хотелось бы отметить, что пароль от почтового ящика хранится в виде обычно текста, поэтому для безопасности рекомендую завести отдельный почтовый ящик для zabbix, а не использовать ваш собственный.

34 комментария:

  1. есть альтернативная прога /usr/ports/net/sendemail (freebsd) sendEmail. Имеет большой набор функций, также может работать с гуглом + атач.
    пример

    usr/local/bin/sendEmail -f "Hello " -t $to_user -u "$subject" -m "$body_mes" -a /tmp/"$file_att" -s smtp.gmail.com -xu ot_kogo@gmail.com -xp password -o tls=yes -o message-charset=utf-8
    -o message-content-type=html reply-to="reply mail <$reply>"

    ОтветитьУдалить
  2. Доброго времени суток.
    на шаге:
    "И затем создадим символическую ссылку для ssmtp, чтобы заменить sendmail
    sudo -ln -s /usr/sbin/ssmtp /usr/sbin/ssmtp"
    у меня выдал:
    ln: creating symbolic link `/usr/sbin/ssmtp` : File exists
    а при отправке почты из командной строки выдаёт следующее:
    send-mail: Cannot open mail.server:25

    Можете подсказать что поделать? На что жалуется? Каких то прав не хватает? или что? Телнетом по указанному адресу на 25-й порт соединяется.
    OS:Debian 6.0.4

    ОтветитьУдалить
  3. прошу прощения, была ошибка в данной строчке. исправил.
    этот шаг нужен только в том случае, если у вас был установлен sendmail. на сколько я помню, в дебиан по умолчанию его нет.
    в чем ошибка трудно сказать. что в логах пишет?
    я бы на вашем месте попробовал поставить виртуальную машину и там попробовать заново, на чистой ОС. если заработает, тогда уже разбираться в чем проблема у вас.

    ОтветитьУдалить
  4. пробую на домашнем компе на виртуалке.
    z1srv:~# mail -s "test" myemail@mail.ru
    и тишина... ни ошибок ни чего.
    Простите, а где можно логи посмотреть по этому случаю? у ssmtp пишется где-нибудь лог?
    мой конфиг
    /etc/ssmtp/ssmtp.conf

    root=emailaddress@mail.ru
    mailhub=smtp.mail.ru
    rewriteDomain=mail.ru
    AuthUser=emailaddress@mail.ru
    AuthPass=password
    FromLineOverride=YES
    UseTLS-YES

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

    ОтветитьУдалить
  5. Yahoooo!! не знаю что наделал )) но смог отправить сообщение с консоли на почту. А по точнее - создал новый п/я на gmail. может mail.ru не работает так!?
    Теперь посмотрим как будет отправлять почту заббикс.

    ОтветитьУдалить
  6. На данный момент ситуация такая:
    с консоли сообщения уходят на почту(ssmtp). могу выложить лог отправки.
    В заббиксе (Debian5.0.9,Zabbix1.8.11) настроил "Обнаружение" по "ICMP" определённую "подсеть".
    Настроил "Действие" которое используя "Обнаружение" делает следующие действия (при условии Discovery check = "Search:ICMP Ping" И Discovery status = "Up"):
    1- добавляет обнаруженные хосты в группу Обнаруженные
    2- отправляет сообщение на почту админу.
    В итоге хосты обнаружены и добавлены в нужную группу. но сообщения на почте нет.((

    ОтветитьУдалить
  7. поздравляю) приведенный мной конфиг именно для gmail. для остальных почтовых служб настройки могут отличаться.

    теперь по поводу заббикса. с Обнаружением я не пробовал, но пробовал делать с тригером(как раз собирался показать пошагово в следующем уроке, но к сожалению пока нет времени). вам тоже советую попробовать сначала с тригером.
    Сначала создаете шаблон ping/loss как описано в моем уроке.
    Затем к этому шаблону добавляете тригер вида ping_loss_300s_mail:icmppingsec[].last(300,0)}=0
    далее создаете действие, где в качестве события выбираете тригер, в качестве условия можете выбрать группу, в которой находится наблюдаемый узел и в качестве Операции действия указываете Отправить сообщение какому либо пользователю(не забудьте создать этого пользователя и убедитесь что он имеет права доступа к группе, в которой находится наблюдаемый узел)
    затем пробуйте отключать наблюдаемый узел, чтобы срабатывал тригер, при этом должны отсылаться сообщения(посылается ли сообщение, можете посмотреть в Администрирование/Аудит, там сверху справа выбираете действия(по умолчанию там стоит Журналы) и выбираете получателя)

    ОтветитьУдалить
  8. Доброго времени суток.
    Создал шаблон, добавил тригер, создал действие. в заббиксе всё срабатывает. НО! Смотрю в Администрирование/Аудит и вижу, что в Статусе забикс говорит мне что
    Type -Email
    Status -In progress
    Retries left -3 потом 2 и 1
    Recipient(s) -"мой п/я"
    Message - "описание проблемы"
    Error - wrong answer on MAIL FROM [530 5.7.0 Must issue a STARTTLS command first. f5sm3996719bke.9 ]

    Спустя некоторое время Status = not sent

    ОтветитьУдалить
  9. Почту поборол) Но теперь почему-то не работает та тема с SNMP по мониторингу загрузки каналов. создал элементы а он мне говорит что не поддерживаются. Хотя на другом сервере(виртуальном) это работает.

    ОтветитьУдалить
  10. подскажите пожалуйста как сделать так чтоб служба заббикс стартовала при загрузке ((
    не получается

    ОтветитьУдалить
  11. Этот комментарий был удален автором.

    ОтветитьУдалить
  12. в чем проблема была с почтой была?
    по поводу автозагрузки, поставьте утилиту chkconfig (очень удобная утилита для таких задач), ну а дальше думаю разберетесь или гугл подскажет

    ОтветитьУдалить
  13. Без боя ну ничего не даётся ))))
    Не получается с chkconfig. вот что выдаёт.

    # chkconfig zabbix_server on
    zabbix_server: unknown service

    # chkconfig -a zabbix_server
    zabbix_server: unknown service

    хотя zabbix_server запущен

    ОтветитьУдалить
  14. а когда набираете chkconfig --list
    там zabbix отображается?

    ОтветитьУдалить
  15. там всё намного проще оказалось. у заббикса есть свой файл для запуска. его нужно было скопировать куда надо и заработало. теперь можно и стартовать и стопить и рестартить службу. и грузится служба заббикс при старте системы.
    Всё хорошо. только вот другой вопрос возник. можно ли в заббикс теперь ещё и трафик считать? чтото типа netflow

    ОтветитьУдалить
  16. ммм, ещё вопросец. При создании карты в заббиксе далее создании элемента карты (свитч, роутер и т.д.) в настройках последних есть пункт URL. Я вбил в это поле http://192.168.1.2 (как пример). Так вот теперь при просмотре карты я могу перейти по сконфигурированной ссылке и попаду на вэб-интерфейс выбранного устройства сети. При этом оно откроется в этом же окне. Как прописать URL чтоб открываемая страница открывалась в новом окне и не закрывала карту.
    А ещё не могу найти как сконфигурировать "поле URL" так чтоб открывалось окно с telnet'ом или ssh'ем c выбранным устройством, не каждое устройство настраивается через вэб-интерфейс. Думаю было бы удобно :)
    Пока не нашёл решения

    ОтветитьУдалить
  17. Добрый день. Спасибо за полезную статью, долго сражался с Zabbixом, пока на нее не наткнулся. Прошу прощения за нубское замечание/вопрос, но выполнение строки

    echo "email content" | mail -s "email subject" email_address_to_send_email@somedomain.com

    в Ubuntu 10.04 порождает следующую ошибку:

    The program 'mail' can be found in the following packages:
    * heirloom-mailx

    Если же использовать команду вида
    ssmtp somemail@somedomain.some < testmessage

    где testmessage - это текстовый файл с текстом письма, то все работает. Меня конечно устраивает и такой вид, но просто интересно, есть ли быстрый и очевидный ответ на вопрос, почему так происходит? Возможно, из за того, что в моей системе sendmail не было, и никаких ссылок я не создавал?

    ОтветитьУдалить
  18. Анонимный21 июля 2012 г., 8:50

    Странно, вчера пробовал на свежеустановленной убунте 12,04 server, там по умолчанию нет sendmail и все работало под данному скрипту... надо попробовать на 11,10)

    ОтветитьУдалить
  19. Доброго времени суток, господа ,а как собственно написать сам скрипт, оповещение в заббиксе срабатывает ,сообщение на почту приходит ,но в теме письма и в теле только то, что напишешь в строке,а как сделать чтобы там отображались данные триггера,то есть приходит алерт и видим какой триггер сработал. Вот мой скрипт:
    #!/bin/sh
    echo "email content" | mail -s "email subject" admin@pomidora.com
    Соответственно на мыло приходит email content и email subject, но не данные с триггера.Спасибо за ответы!

    ОтветитьУдалить
  20. Всё разобрался, кому интересно вот скрипт :
    #!/bin/sh
    to=$1
    subject=$2
    body=$3

    cat <<EOF | mail -s "$subject" "$to"
    $body
    EOF

    ОтветитьУдалить
  21. У меня другая проблема zabbix почему то не цепляет скрипт отправки письма. Т.е. когда срабатывает Action - уведомления не отправляются. Уже проверил все права на папки, конфиг. Скрипт для отправки положил в AlertScriptsPath=/etc/zabbix/alert.d
    На саму директорию дал 777 - все равно не пашет.

    Ощущение такое что где галочку не поставил. У кого было что похожее?

    ОтветитьУдалить
  22. https://gist.github.com/superdaigo/3754055
    Поменяйте логин, пароль в скрипте, засуньте в /usr/lib/zabbix/alertscripts, добавьте полное имя скрипта (с расширением) в способах оповещений+к пользователям.

    ОтветитьУдалить
  23. у меня проблема почта отправлялась с одного ящика без проблем.Сейчас в /etc/ssmtp/ssmtp.conf заменил на другой ящик gmail. При попытке отправить командой echo "email content" | mail -s "email subject" email_address_to_send_email@somedomain.com выдает ошибку...mail: cannot send message: Process exited with a non-zero status
    В чем проблема может быть?

    ОтветитьУдалить
    Ответы
    1. а до этого тоже gmail ящик был?

      Удалить
    2. включи в параметрах гугл аккаунта "доступ к аккаунту" (раздел - непроверенные приложения)

      Удалить
  24. ВНИМАНИЕ! народ, у кого пишет при отправке с консоли тестового письма что то про "...ненулевой статус" зайдите в настройки самого гугл-аккаунта в раздел "непроверенные приложения" и включите "доступ к аккаунту", это следовало бы написать в самой статье, а то я напр. целый день убил чтобы это понять (

    ОтветитьУдалить
    Ответы
    1. Статью писал сто лет назад) Тогда такой проблемы не было. Будет время - обязательно обновлю урок по настройке почты.
      Спасибо за комментарий, кому-нибудь обязательно пригодится.

      Удалить
    2. вам спасибо за супер статью, очень помогла!

      Удалить
  25. Здравствуйте. Подскажите пожалуйста, как написать скрипт письма? Например"в систему зашел пользователь"

    ОтветитьУдалить
  26. Здравствуйте у меня всё отлично работает, но ест такая проблема что в сообщение нету какой из компов дал сбой. Пожалуйста помогите решать эту проблему

    Спасиба!!!!

    ОтветитьУдалить
  27. Не работает для google почты для домена. Мне вот это помогло : https://gist.github.com/superdaigo/3754055

    ОтветитьУдалить
  28. mail: cannot send message: Процесс завершился с ненулевым статусом

    При тесте такое сообщение, где собака зарыта ?

    ОтветитьУдалить
  29. У меня ssmtp с гуглопочтой работать не захотел даже после включения "доступ к аккаунту" в раздел "непроверенные приложения". POP, ICMP в настройках аккаунта тоже включил. Выдавал ошибку
    mail: cannot send message: Process exited with a non-zero status
    Зато с корпоративной почтой все заработало сразу - только порт поменял на 25 и закоментил стоку с UseTLS=YES

    ОтветитьУдалить

Блог развивается при поддержке

Блог развивается при поддержке
Защищаем настоящие ценности клиента

Translate

Популярные сообщения

Blog Archive

Технологии Blogger.

Google+ Followers