среда, 19 августа 2009 г.

eJabber for Zabbix

У меня возникли проблемы с уведомлениями о событиях в моём Zabbix сервере. Точнее сказать отправка email'ов не работала. Своего почтового сервера нет. А на сторонний не хочет отправлять, выдаёт ошибку.
Так что я решил пойти по пути наименьшего сопротивления и поднять Jabber сервер.
Действовал по уже отлаженному механизму. Посмотрел что люди пишут про разного рода демоны и выбрал - eJabberd.
Создал Debian вертуалку на моей уже описанный XenServer "ферме" и вперёд.
Раскоментил в source.list все.
apt-get update
apt-get cache search ejabber
ejabberd - Distributed, fault-tolerant Jabber/XMPP server written in Erlang
apt-get cahce show ejabberd
Package: ejabberd
Priority: optional
Section: net
Installed-Size: 3224
Maintainer: Torsten Werner
Architecture: i386
Version: 2.0.5-1.1
Depends: adduser, erlang-nox (>= 1:13.b-dfsg1), erlang-abi-13.a, openssl, ucf, debconf (>= 0.5) | debconf-2.0, libc6 (>= 2.3.6-6~), libexpat1 (>= 1.95.8), libpam0g (>= 0.99.7.1), libssl0.9.8 (>= 0.9.8f-5), zlib1g (>= 1:1.1.4)
Suggests: libunix-syslog-perl
Filename: pool/main/e/ejabberd/ejabberd_2.0.5-1.1_i386.deb
Size: 1164076
MD5sum: 1045daf9668273a27a0b47881055c7f8
SHA1: 50f0bfa13b148f0b683a8782506ed0781b16cf03
SHA256: 9c853773df7c6d67fc9bd00ea83b02994430f7101b8175974700be27d683b6b8
Description: Distributed, fault-tolerant Jabber/XMPP server written in Erlang
ejabberd is a distributed, fault-tolerant Jabber/XMPP server written in Erlang
Features:
- XMPP-compliant
- Web based administration
- Load balancing: can run in a cluster of machines
- Fault-tolerance: database can be replicated and stored on multiple
nodes (nodes can be added or replaced 'on the fly')
- Virtual hosting: several virtual domains can be served using single ejabberd
instance
- SSL/TLS support
- Multi-User Chat (MUC/conference)
- IRC transport
- Jabber Users Directory, based on users vCards
- Service Discovery
- Shared roster
Homepage: http://www.process-one.net/en/projects/ejabberd/


Поставил сначала сам Erlang, а потом и сам сервер.
apt-get install erlang
apt-get install ejabberd


Далее смотрим инструкцию по настройке на сайте http://www.process-one.net/en/ejabberd/docs
и вперёд править конфигурационный файл /etc/ejabberd/ejabberd.cfg, по большому счёту там надо поправить немного, я не замарачивался с сертификатами и транспортами (возможно это дело будущего). Единственное что я добавил это аутентификацию через AD.

%% Options which are set by Debconf and managed by ucf

%% Admin user
{acl, admin, {user, "ejabberd", "jabserver.чччч.чч"}}.

%% Hostname
{hosts, ["jabserver.чччч.чч"]}.


Этот пользователь (ejabberd) был предварительно создан в AD.

%%
%% Authentication using LDAP
%%
{auth_method, ldap}.
%%
%% List of LDAP servers:
{ldap_servers, ["server.чччч.чч"]}.
%%
%% Encryption of connection to LDAP servers (LDAPS):
%%{ldap_encrypt, tls}.
%%
%% Port connect to LDAP server:
{ldap_port, 389}.
%%
%% LDAP manager:
{ldap_rootdn, "cn=ejabberd,cn=Users,dc=чччч,dc=чч"}.
%%
%% Password to LDAP manager:
{ldap_password, "123456"}.
%%
%% Search base of LDAP directory:
{ldap_base, "cn=Users,dc=чччч,dc=чч"}.
%%
%% LDAP attribute that holds user ID:
{ldap_uids, [{"sAMAccountName"}]}.
%%
%% LDAP filter:
{ldap_filter, "(memberOf=cn=JABBER users,cn=Users,dc=чччч,dc=чч)"}.


предварительно закоментировав


%%{auth_method, internal}.


Могу сказать что конфигурационный файл довольно понятный и дока к серверу очень не плоха.

Ещё по настонию доки я сделал следующее

{mod_vcard_ldap,
[{ldap_vcard_map,
[{"NICKNAME", "%u", []},
{"GIVEN", "%s", ["givenName"]},
{"MIDDLE", "%s", ["initials"]},
{"FAMILY", "%s", ["sn"]},
{"FN", "%s", ["displayName"]},
{"EMAIL", "%s", ["mail"]},
{"ORGNAME", "%s", ["company"]},
{"STREET", "%s", ["streetAddres"]},
{"TITLE", "%s", ["title"]},
{"URL", "%s", ["wWWHomePage"]},
{"DESC", "%s", ["description"]},
{"TEL", "%s", ["telephoneNumber"ghbcrjh,btv cjj,of. xnj j,yjdbd ]}]},
{ldap_search_fields,
[{"User", "%u"}]},
{ldap_search_reported,
[{"Nickname", "NICKNAME"}]}
]},


Вот вообщем то и всё.

Далее создал пользователя для Zabbix сервера в AD, добавил его в группу Jabber users.
Далее через GUI Zabbix сервера (Administation -> Media types) поправил содержимое Jabber добавив пользователя котого только что создал в Jabber Identifier как имя@jabserver.чччч.чч и пароль к нему.
Практически всё, добавил себя в группу Jabber users в AD, в настройках своего пользователя на Zabbix сервере добавил media jabber как я@jabserver.чччч.чч и все в порядке.
В моём IM клиенте (Miranda) добавил свой акаунт (без шифрования). И теперь порлучаю больше удовольствия от Zabbix!

 С прискорбием сообщаю, что обновив eJabberd до 2.1.3 он перестал работать с AD, уж что я только не делал, ничего не помогало. Так что теперь ему на смену пришёл OpenFire. По нему тоже документации будь здоров!

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