Описание системы 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}}, ]} ]}]} ]}
Переопределить пороги по умолчанию можно следующим образом:
{rps, [ {realm, local}, {thresholds, [{disk, [ {enabled, true}, {default, {85, 96, 99}}, {points, ["/var/lib/ecss/cdr", "/var/lib/ecss/statistics", ]} ]}]} ]}
При включенном мониторинге диска посылаются предупреждения на медиатор при достижении порогов.
Разрешение на использование портов < 1024 для erlang-процессов
Чтобы подсистема SNMP могла получать/отправлять трапы по портам 161/162 необходимо добавить соответствующие права на файл beam.smp следующим образом:
Установить утилиту setcap командой из консоли ОС Linux:
sudo apt-get 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 (Конфигурирование).
- Раскоментировать секции "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 (Конфигурирование).
- Ра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}.