Page tree
Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 6 Next »

Коллектор HMED-C занимается сбором и парсингом CDR для последующей передачи их на обработку в ядро предбиллинга.

Настройка сбора CDR из файлов

Предположим, АТС настроена таким образом, что сохраняет CDR в файлах с именем в формате cdr_12345.log в директории /tmp/cdr.

В таком случае коллектор нужно настроить следующим образом:

conf/local/collecting/collectors/default.yml
collectors:
  file:
    switch:
      paths:
        - directory: /tmp/cdr/ # путь к файлам с CDR
          filename_pattern: ^cdr_\d+\.log$ # регулярное выражение, соответствующее формату имени файлов с CDR

Для того, чтобы CDR собирались из нескольких директорий или по разным шаблонам имен файлов, в секции paths задается несколько спецификаций.

Коллектор реагирует на событие create файловой системы, таким образом обработка файла с CDR начинается немедленно после его создания.

Настройка парсинга CDR

conf/lcoal/collecting/parsers/default.yml
parsers:
  plain:
    switch_2:
      cdr_delimiter: "\n" # разделитель между CDR в файле (новая строка)
      preprocessors:
		# предобработчики строки перед разбором
        - type: substring
          begin: 1
          end: -1
      records:
        - matcher:
			# регулярное выражение для разбора CDR на поля
            #        1      2             3     4           5                                     6     7
            #        trk_a  station_a     trk_b station_b   day    month year  hour minute second dur   status
            pattern: ^(\w+) (\d+|-)[^\s]* (\w+) (\d+)[^\s]* (\d{2}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}) (\d+) (\d+)$
          fields:
            map:
              # соответствие полей CDR и строки, разобранной регулярным выражением
			  # первое поле $g1, второе $g2 и т.д.
              trunk_a: $g1
              station_a: $g2
              trunk_b: $g3
              station_b: $g4
              call_datetime: $g5
              duration_sec: int($g6) # приведение к целому числу
              termination_code: $g7

Доступны следующие предобработчики:

  • substring– взятие подстроки
    Параметры:
    • begin– начальная позиция;
    • end– конечная позиция (-1– до конца строки);
  • trim– обрезание пробельных символов с краев строки
    Параметры: 
    • direction– край строки (left – левый, right – правый)

 

  • No labels