3.14.4 Настройка подсистемы Mediator
Описание системы Mediator
Система Mediator предназначена для сбора и экспорта предупреждений и статистической информации.
Общая схема взаимодействия Mediator с нодами SSW:

Рисунок 1 - Общая схема взаимодействия кластера Mediator с другими кластерами системы
В качестве источников предупреждений и статистики выступают следующие подсистемы:
- Core;
- Adapters (SIP, Megaco, SIGTRAN);
- DS.
Статистика
В качестве статистической информации выступают события вызова (call events) и счетчики (counters).
Каждая подсистема, принимающая участие в обработке вызова, формирует соответствующий набор событий и
счетчиков, которые агрегируются в подсистеме Mediator в соответствии с указанными правилами.
Правило агрегации определяется "модулем статистики". Совокупность модуля статистики, интервала экспорта и
"модуля (или модулей) экспорта" определяет задание статистики. Описание команд добавления, просмотра и
удаления представлено в разделе Команды работы с заданиями статистики.
В общем виде схема обработки статистики может быть представлена в следующем виде:

Рисунок 2 - Схема обработки статистики
Предупреждения
В общем виде схема обработки предупреждений может быть представлена в следующем виде:

Рисунок 3 - Схема обработки предупреждений
Конфигурирование
Секция AMQP-клиента
Определяет подключения к AMQP-брокеру, на котором будет осуществляться обмен информацией между системой Mediator и другими нодами:
%Секция AMQP клиента.
{amqp10_client,
[
{realms,
[
%Строка подключения к брокеру, на котором будет осуществляться обмен информацией между системой Mediator и другими нодами
{local, "/ssw", "ssw", "ssw", [{localhost, {host, "IP or Hostname of RPS amqp broker"}, 5672, 10}]},
%Строка подключения к брокеру, к которому подключена система TTS
{tts, "/ssw", "ssw", "ssw", [{tts, {host, "IP or Hostname of TTS amqp broker"}, 5672, 10}]}
]
}
]
}
Секция SSH-консоли
{cocon, [
{realm, local} % Realm, определенный в секции AMQP-клиента
]}
Секция подключения к LDAP-серверу
{ldapman,
[
{ldap_server_ip, "127.0.0.1"}, % IP-адрес LDAP-сервера
{ldap_server_port, 389}, % Порт LDAP-сервера
{ldap_dc, "dc=ecss"}, % DC директория, в которой будем работать
{ldap_system_username, "admin"}, % Имя пользователя, из под которого система будет работать с LDAP-сервером (вести аудит и прочее)
{ldap_system_password, "admin"} % Пароль
]}
Секция rtop_agent
Определяет название кластера.
{rtop_agent, [
{realm, local} % идентификатор подключения к системе DS
]}
Секция логирования
%Секция конфигурирования подсистемы логирования:
{chronica, [
{rules, [
{restart, "ecss_starter", info, [restart], on},
{alarm_error, "*", error, [rps_alarm], on}, % notification via alarm subsystem
{all_errors, "*", error, [error, journald], on}, % catch all errors
{all_warning, "*", warning, [error], on}, % catch all warnings
{all_infos_bin, "*&!rps_watchdog", info, [info_bin], on},
% Binary
{all_logs_bin, "*", debug, [default_bin], off},
{mycelium_bin, "mycelium*", debug, [default_bin], off},
{alarm_bin, "alarm*", debug, [default_bin], off},
{ap_bin, "ap_*", debug, [default_bin], off},
{ccn_bin, "ccn*", debug, [default_bin], off},
{oasys_bin, "oasys*", debug, [default_bin], off},
{snmp_bin, "snmp*", debug, [default_bin], off},
{http_terminal_cmds_bin, "hc_*", debug, [default_bin], off},
{http_terminal_bin, "cocon_http*", debug, [default_bin], off}
]},
{flows, [
% Text flows
{default_bin, [{file, "default.log.bin", binary}]},
{error, [{file, "error.log"}]},
{info_bin, [{file, "info.log.bin", binary}]},
{journald, [{journald, default}]},
{restart, [{file, "restart.log"}]},
{rps_alarm, [{rps_alarm, default}]}
]},
{formats, [
{default, "%Y-%M-%D %H:%Mi:%S:%Ms %PRIORITY %Pid [%Module:%Line]: %Message\n"},
{alarm_trace, "%Message\n"}
]},
{active, true},
{rotate_at_start, true},
{file_check_timeout, 10000},
{backend_modules, [
{rps_alarm, chronica_rps_alarm_backend},
{journald, chronica_journald_backend}
]},
{internal_logger, [
{file, "chronica", {101048576, 1}, error},
{tty, error}
]},
{data_root, "/var/cache/ecss/mediator/chronica/<Node>"},
{log_root, "/var/log/ecss/mediator/<Node>"},
{max_file_size, 52428800}, %% 50M per file
{max_file_num, 10},
{debug, true},
{debug_level, 2}
]}
Секция SNMP-агента
% Секция SNMP-агента. Будет использована, если значение snmpAgentEnable выставлено в "true".
% В этом случае данная секция обязательна
{snmp,
[
{agent,
[
% Директория хранения служебной информации SNMP-агента
% Данная директория должны быть предварительно создана
{db_dir, "/var/lib/ecss/snmp/"},
% Местоположение конфигурационных файлов SNMP-агента
{config, [{dir, "/etc/ecss/snmp/agent/"}, {force_load, true}, {verbosity, silence}]},
% Рекомендуется не изменять эти параметры
{priority, normal},
{versions, [v2, v3]},
{mib_storage, {mnesia, []}},
{target_cache, [{verbosity,silence}]},
{symbolic_store, [{verbosity,silence}]},
{local_db, [{repair,true},{auto_save,5000},{verbosity,silence}]},
{error_report_module, snmpa_error_logger},
{agent_type, master},
{agent_verbosity, silence},
{discovery, [{terminating, [{enable, true}, {stage2, discovery}, {trigger_username, ""}]}, {originating, [{enable, true}]}]},
{multi_threaded, false},
{mib_server, [{mibentry_override,false},{trapentry_override,false},{verbosity,silence},{cache,true}]},
{note_store, [{timeout,30000},{verbosity,silence}]},
{net_if, [{module,snmpa_net_if},{verbosity,silence},{options,[{bind_to,true},{no_reuse,false},{req_limit,infinity}]}]}
]
}
]
}
Секция SNMP-менеджера
% Секция SNMP-менеджера, опциональная. Позволяет задать настройки менеджера "слушателя" SNMP-трапов.
{snmp,
[
{manager,
[
{config, [
% Местоположение конфигурационных файлов SNMP-агента
{dir, "/etc/ecss/snmp/manager/"},
% silence | info | log | debug | trace
{verbosity, silence},
% Директория хранения служебной информации SNMP-менеджера
% Данная директория должны быть предварительно создана
{db_dir, "/var/lib/ecss/snmp/"}
]},
% Имя модуля-обработчика SNMP-трапов. ВНИМАНИЕ! НЕ МЕНЯТЬ ДАННУЮ НАСТРОЙКУ
{def_user_mod, snmp_alarm_user}
]
}
]
}
Конфигурирование источника статистической информации
Необходимо сконфигурировать приложение RPS для каждой ноды.
В конфигурации Node.config должны присутствовать следующие секции:
%Секция AMQP-клиента
{amqp10_client,
[
{realms,
[
% Строка подключения к брокеру, на котором будет осуществляться обмен информацией между системой Mediator и другими нодами
{local, "/ssw", "ssw", "ssw", [{localhost, {host, "IP or Hostname of RPS amqp broker"}, 5672, 10}]}
]
}
]
},
{rps, [
{realm, local}
]}
Пороги использования ресурсов
Опрос значений использования диска и памяти осуществляется раз в минуту.
Включение мониторинга диска:
{rps, [
{realm, local},
{thresholds, [{disk, [{enabled, true}]}]} % без указания "points" мониторинг всех смонтированных разделов
]}
Для включения мониторинга только заданных разделов необходимо указать точки монтирования:
{rps, [
{realm, local},
{thresholds, [{disk, [
{enabled, true},
{points, [{"/var/lib/ecss/cdr", {W, M, C}},
{"/var/lib/ecss/statistics", {W, M, C}},
]}
]}]}
]}
где
- W - значение занятости раздела в процентах для порога "warning";
- M - значение занятости раздела в процентах для порога "major";
- C - значение занятости раздела в процентах для порога "critical".
Также допускается такой вариант:
{rps, [
{realm, local},
{thresholds, [{disk, [
{enabled, true},
{points, [{"/var/lib/ecss/cdr", {W, M, C}},
{"/var/lib/ecss/statistics", {W, M, C}},
]}
]}]}
]}
При этом будут использованы пороги по умолчанию - {80, 95, 98}.
Переопределить пороги по умолчанию можно следующим образом:
{rps, [
{realm, local},
{thresholds, [{disk, [
{enabled, true},
{default, {85, 96, 99}},
{points, ["/var/lib/ecss/cdr",
"/var/lib/ecss/statistics",
]}
]}]}
]}
При включенном мониторинге диска посылаются предупреждения на медиатор при достижении порогов.
Мониторинг раздела /var/lib/ecss-mysql включается при положительном ответе на вопрос "Взводить аварию ECSS-10 при заполнении раздела MySQL?" ("Send ECSS-10 alarm in case of MySQL drive is overload?") во время инсталляции пакета ecss-node. При этом в файле /etc/ecss/global.config в секцию rps -> thresholds -> disk -> points автоматически добавляется путь "/var/lib/ecssmysql":
[
...
{rps, [
{thresholds, [
{disk, [{enabled, true},
{points, ["/var/lib/ecss-mysql"]}
]},
{monitoring, [
%{applications, [%%APPS_MON%%]}
%{interfaces, [{noAlarmFor, [%%IFACES_MON%%]}]}
]}
]}
...
Разрешение на использование портов < 1024 для erlang-процессов
Чтобы подсистема SNMP могла получать/отправлять трапы по портам 161/162 необходимо добавить соответствующие права на файл beam.smp следующим образом:
Установить утилиту setcap командой из консоли ОС Linux:
sudo aptitude install libcap2-bin
Задать права на файл beam.smp командой из консоли ОС Linux:
sudo setcap cap_net_bind_service=+ep /usr/lib/erlang/erts-6.4.1.2/bin/beam.smp sudo setcap cap_net_bind_service=+ep /usr/lib/erlang/erts-6.4.1.2/bin/beam
где "/usr/lib/erlang/erts-6.4.1.2/bin/" - путь, по которому располагается файл beam.smp.
Конфигурирование SNMP-агента
- Создать папку по пути, указанному в настройках SNMP-агента - параметр "db_dir".
- В случае использования портов < 1024 необходимо добавить разрешение на файл beam.smp (3.14.4 Настройка подсистемы Mediator).
- Раскоментировать секции "agent" в секции SNMP в настройках кластера mediator.
Создать файл по пути: /etc/ecss/snmp/agent/agent.conf
% Порт, который будет слушать SNMP-агент и на который ему будут приходить SNMP-трапы. % ВНИМАНИЕ! Если номер порта < 1024, необходимо выполнить пункт 2. {intAgentUDPPort, 161}. % IP-адрес, на котором будет открыт порт для слушания SNMP-трапов. {intAgentIpAddress, [0,0,0,0]}. % Уникальный текстовый идентификатор SNMP-агента. Не изменять. {snmpEngineID, "ECSS-10-SNMP-Agent"}. % Максимальная длина SNMP-сообщения (в октетах), которые SNMP-агент может получать/отправлять. {snmpEngineMaxMessageSize, 484}.Создать файл по пути: /etc/ecss/snmp/agent/community.conf.
% community нужны для обеспечения аутентификации, проверки прав доступа при взаимодействии SNMP-агента и менеджера. % Первым параметром идет уникальный идентификатор community. Вторым - человеко-читабельное имя. Третьим - secret-key для данного community. {"public", "public", "initial", "", ""}. {"all-rights", "all-rights", "all-rights", "", ""}. {"standard trap", "standard trap", "initial", "", ""}.Создать файл по пути: /etc/ecss/snmp/agent/context.conf.
%% The default context "".
Создать файл по пути: /etc/ecss/snmp/agent/notify.conf.
{"standard trap", "std_trap", trap}.Создать файл по пути: /etc/ecss/snmp/agent/standard.conf.
% Имя SNMP-агента. Не изменять {sysDescr, "Eltex ECSS SNMP agent"}. % Корневой OID для всех SNMP-трапов системы ECSS-10 {sysObjectID, [1, 3, 6, 1, 4, 1, 35265, 2, 10]}. % Контакт человека, отвечающего за управление данной нодой. НЕОБХОДИМО УКАЗАТЬ EMAIL сервис-центра. {sysContact, "techsupp@eltex.nsk.ru"}. % Физическое расположение данной ноды. {sysLocation, "naomi.eltex.loc"}. % Идентификатор для группы сервисов, предоставляемых ECSS-10. НЕ ИЗМЕНЯТЬ. {sysServices, 72}. % Флаг, показывающий, разрешено или нет SNMP генерировать authenticationFailure-трапы. {snmpEnableAuthenTraps, enabled}. % Административное имя данной ноды. Но по соглашению принято в качестве sysName выставлять полное доменное имя данной ноды. {sysName, "ECSS-10 Agent"}.Отдельное замечание для интеграции с EMS. Значение поля "sysName" должно совпадать с именем узла в дереве объектов. Иначе значение поле "hostname" в описании узла будет считаться ошибочным (но на работу это никак не влияет).Создать файл по пути: /etc/ecss/snmp/agent/target_addr.conf.
% В данной конфигурации указана транспортная информация, куда необходимо пересылать трапы % {TargetName, Ip, Udp, Timeout, RetryCount, TagList, ParamsName, EngineId, TMask, MaxMessageSize}. % TargetName - уникальное имя для направления отправки трапов % Ip, Udp - адрес и порт для отправки трапа % Timeout - тайм-аут на доставку сообщения % RetryCount - количество повторных посылок сообщения % TagList - имя тега, указанного в notify.conf % EngineId - имя target-а, который будет указан в target_params.conf {"Eltex EMS v2", [172,16,0,22], 162, 1500, 3, "std_trap", "target_v2", "", [], 2048}.Создать файл по пути: /etc/ecss/snmp/agent/target_params.conf.
% Each row is a 5-tuple: % {Name, MPModel, SecurityModel, SecurityName, SecurityLevel}. % Name - имя target-а, который используется в target_addr.conf % MPModel - v1, v2c или v3 % SecurityModel - v1, v2c, или usm % SecurityName - имя группы доступа в View-based Access Control Model (VACM) % SecurityLevel - noAuthNoPriv, authNoPriv или authPriv. {"target_v2", v2c, v2c, "initial", noAuthNoPriv}.Создать файл по пути: /etc/ecss/snmp/agent/vacm.conf.
% В данной конфигурации описаны параметры, необходимые для авторизации SNMP-запросов {vacmSecurityToGroup, v2c, "initial", "initial"}. {vacmSecurityToGroup, v2c, "all-rights", "all-rights"}. {vacmAccess, "initial", "", any, noAuthNoPriv, exact, "restricted", "", "restricted"}. {vacmAccess, "initial", "", usm, authNoPriv, exact, "internet", "internet", "internet"}. {vacmAccess, "initial", "", usm, authPriv, exact, "internet", "internet", "internet"}. {vacmAccess, "all-rights", "", any, noAuthNoPriv, exact, "internet", "internet", "internet"}. {vacmViewTreeFamily, "restricted", [1,3,6,1], included, null}. {vacmViewTreeFamily, "internet", [1,3,6,1], included, null}.- Создать пустой файл по пути: /etc/ecss/snmp/agent/usm.conf.
Конфигурирование SNMP-менеджера
- Создать папку по пути, указанному в настройках SNMP-менеджера - параметр "db_dir".
- Если используются порты < 1024, необходимо добавить разрешение на файл beam.smp (3.14.4 Настройка подсистемы Mediator).
- Раcкоментировать секции "agent", "manager" в секции SNMP в настройках кластера Mediator.
Создать файл по пути: /etc/ecss/snmp/manager/manager.conf.
% IP-адрес, на котором будет открыт порт для слушания/отправки SNMP-трапов. {address, [0,0,0,0]}. % Порт, с которого SNMP-менеджер будет отправлять SNMP-трапы. % ВНИМАНИЕ! Если номер порта < 1024, необходимо выполнить пункт 2. {port, 162}. % Уникальный текстовый идентификатор SNMP-менеджера. Не изменять. {engine_id, "ECSS-10-SNMP-Manager"}. % Максимальная длина SNMP-сообщения (в октетах), которые SNMP-агент может получать/отправлять. {max_message_size, 484}.Создать файл по пути: /etc/ecss/snmp/manager/agents.conf.
В данном файлы указаны разрешения для агентов, которых использует менеджер.% Первый параметр указывает ID-агента, для которого задаются настройки. Его в дальнейшем будут использовать в файле users.conf. % Четвертый параметр - IP-адрес, с которого будут отправляться/приниматься трапы. % Пятый параметр - порт, с которого будут отправляться/приниматься трапы. % ВНИМАНИЕ! Если номер порта < 1024, необходимо выполнить пункт 2. {"ecss_mediator", "md", "public", [192,168,23,34], 161, "", 1500, 484, v2, any, "initial", noAuthNoPriv}.Создать файл по пути: /etc/ecss/snmp/manager/users.conf.
% Первый параметр указывает ID-агента (из файла agents.conf), с которого будут приходить трапы. % Второй параметр - имя модуля, который данные трапы будет обрабатывать. Не изменять. % Третий параметр - аргументы инициализации модуля snmp_alarm_user. Не изменять. {"ecss_mediator", snmp_alarm_user, undefined}.