Дерево страниц
Перейти к концу метаданных
Переход к началу метаданных

Описание системы 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", 
                                       ]}
                             ]}]}
]}

При включенном мониторинге диска посылаются предупреждения на медиатор при достижении порогов.

Разрешение на использование портов < 1024 для erlang-процессов

Чтобы подсистема SNMP могла получать/отправлять трапы по портам 161/162 необходимо добавить соответствующие права на файл beam.smp следующим образом:

  1. Установить утилиту setcap командой из консоли ОС Linux:

    sudo apt-get install libcap2-bin
  2. Задать права на файл 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-агента

  1. Создать папку по пути, указанному в настройках SNMP-агента - параметр "db_dir".
  2. В случае использования портов < 1024 необходимо добавить разрешение на файл beam.smp (Конфигурирование).
  3. Раскоментировать секции "agent" в секции SNMP в настройках кластера mediator.
  4. Создать файл по пути: /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}.
  5. Создать файл по пути: /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", "", ""}.
  6. Создать файл по пути: /etc/ecss/snmp/agent/context.conf.

    %% The default context
    "".
  7. Создать файл по пути: /etc/ecss/snmp/agent/notify.conf.

    {"standard trap", "std_trap", trap}.
  8. Создать файл по пути: /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" в описании узла будет считаться ошибочным (но на работу это никак не влияет).
  9. Создать файл по пути: /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}.
  10. Создать файл по пути: /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}.


  11. Создать файл по пути: /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}.
  12. Создать пустой файл по пути: /etc/ecss/snmp/agent/usm.conf.

Конфигурирование SNMP-менеджера

Для работы SNMP-менеджера требуется запуск SNMP-агента.
  1. Создать папку по пути, указанному в настройках SNMP-менеджера - параметр "db_dir".
  2. Если используются порты < 1024, необходимо добавить разрешение на файл beam.smp (Конфигурирование).
  3. Раcкоментировать секции "agent", "manager" в секции SNMP в настройках кластера Mediator.
  4. Создать файл по пути: /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}.
  5. Создать файл по пути: /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}.
  6. Создать файл по пути: /etc/ecss/snmp/manager/users.conf.

    % Первый параметр указывает ID-агента (из файла agents.conf), с которого будут приходить трапы.
    % Второй параметр - имя модуля, который данные трапы будет обрабатывать. Не изменять.
    % Третий параметр - аргументы инициализации модуля snmp_alarm_user. Не изменять.
    {"ecss_mediator", snmp_alarm_user, undefined}.
  • Нет меток