Использование ElasticSearch для Asterisk
Введение ELK Stack. ElasticSearch. Установка и настройка Kibana. Установка и настройка Logstash. Установка и настройка Filebeat. Установка и настройка Заключение Введение В сфере ИТ возникают проблемы с количеством логов. Для разных систем она хранится в разных директориях, а порой даже на разных серверах. Из-за такого разнообразия возникает вопрос. А можно ли хранить все логи централизованно? […]
- Введение
- ELK Stack.
- ElasticSearch. Установка и настройка
- Kibana. Установка и настройка
- Logstash. Установка и настройка
- Filebeat. Установка и настройка
- Заключение
Введение
В сфере ИТ возникают проблемы с количеством логов. Для разных систем она хранится в разных директориях, а порой даже на разных серверах. Из-за такого разнообразия возникает вопрос. А можно ли хранить все логи централизованно? Конечно можно и в этом поможет целый комплекс ПО ElasticSearch + Logstash + Kibana. Зачастую он называется ELS Stack. И в этой статье мы рассмотрим. Как его настроить для сбора логов с Астериск.
ELK Stack
ELK Stack – это стек программ, который помогает обрабатывать, хранить и выводить в удобном виде логи различных программ. В этот программный комплекс входят следующие ПО:
- ElasticSearch
- Logstash
- Kibana
- Filebeat
В нашем примере это будет выглядеть следующим образом: Filebeat будет собирать логи на сервере Астериск, отправлять в сборщик и анализатор логов Logstash, который в свою очередь перенаправит их в ElasticSearch и с помощью web интерфейса Kibana мы сможем смотреть собранные в ElasticSearch логи.

Теперь давайте подробно рассмотрим каждое ПО отдельно и расскажем, как его устанавливать и настраивать для работы.
ElasticSearch. Установка и настройка
Elasticsearch — это система поиска и анализа с открытым исходным кодом с целью абсолютно всех видов сведений, в том числе текстовые, числовые, геопространственные, структурированные и неструктурированные. Elasticsearch создан в Apache Lucene. Популярен собственным простым API-интерфейсом. Elasticsearch считается основным компонентом Elastic Stack.
Итак, установка ElasticSearch состоит из нескольких пунктов:
- Установка Java
- Подключение репозитория
- Установка из репозитория
Начнем с установки Java SE на нашу систему. Для начала перейдем на официальный сайт Oracle и скачаем нужный файл *-linux-x64.rpm (https://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html).

С помощью WINSCP переносим наш скаченный пакет на линукс машину. В этом примере это будет /root/. Теперь подключаемся по SSH к серверу и переходим в директорию. Куда мы сохраняли rpm пакет. Отсюда будем выполнять команду
# yum localinstall jre-8u241-linux-x64.rpm

На этом Java установлена. Теперь перейдем к установке ElasticSearch. Сперва подключим публичный ключ репозитория. Затем создадим запись с обращением к репозиторию в файле /etc/yum.repos.d/elasticsearch.repo и выполним установку.
# rpm —import https://artifacts.elastic.co/GPG-KEY-elasticsearch
# vim /etc/yum.repos.d/elasticsearch.repo
[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
# yum install -y elasticsearch


На этом установка окончена. Осталось запустить сервис.
# systemctl enable elasticsearch.service# systemctl start elasticsearch.service

Теперь приступим к настройке ElasticSearch. Все конффигурации этого ПО находятся в следующем файле /etc/elasticsearch/elasticsearch.yml. Для настройки нам необходимо изменить два параметра: path.data и network.host.
- Path.data – директория для хранения данных
- network.host – указывается какие сети будем слушать.

Внеся все настройки перезапускаем сервис командой
systemctl restart elasticsearch
В итоге у вас сервер должен слушать порт 9200 TCP, по умолчанию.
Kibana. Установка и настройка
Kibana — это приложение с открытым исходным кодом, которое находится на вершине стека Elastic Stack и может искать и отображать данные, проиндексированные в Elasticsearch. Приложение известно как инструмент построения диаграмм для Elastic Stack, Kibana также выступает в качестве пользовательского интерфейса для мониторинга данных.
Это прилоение устанавливается аналогично ElasticSearch. Изначально подключаем публичный ключ репозитория. Указываем конфиги для отдельного репозитория, откуда будет производиться установка и выполняем установку.
# rpm —import https://artifacts.elastic.co/GPG-KEY-elasticsearch
# vim /etc/yum.repos.d/kibana.repo
[kibana-7.x]
name=Kibana repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
# yum install kibana


Установка произведена, теперь надо зупустить ПО.
# systemctl enable kibana.service# systemctl start kibana.service
Logstash. Установка и настройка
Logstash — это обработчик данных на стороне сервера с открытым исходным кодом, который одновременно получает данные из множества источников, преобразует их и затем отправляет в ElasticSearch.
Установка Logstash аналогична предыдущим пунктам. Но т. к. репозиторий подключен. Поэтому для установки потребуется только одна команда, еще нужно будет добавить сервис в автозагрузку.
# yum install logstash# systemctl enable logstash.service

Для настройки Logstash создадим файл в директории конфигов сервиса.
# vim /etc/logstash/conf.d/logstash.conf
И добавим в него следующие строки:
input {
beats {
port => 5044
}
}
filter {
if [type] == «asterisk_debug» {
if [message] =~ /^\[/ {
grok {
match => {
«message» => «\[%{SYSLOGTIMESTAMP:log_timestamp}\] +(?<log_level>(?i)(?:debug|notice|warning|error|verbose|dtmf|fax|security)(?-i))\[%{INT:thread_id}\](?:\[%{DATA:call_thread_id}\])? %{DATA:module_name}\:(?: +[=|-]{2})? %{GREEDYDATA:log_message}»
}
add_field => [ «received_timestamp», «%{@timestamp}» ]
add_field => [ «process_name», «asterisk» ]
}
date { match => [ «log_timestamp», «MMM d HH:mm:ss», «MMM dd HH:mm:ss» ] }
if ![log_message] {
mutate {
add_field => {«log_message» => «»}
}
}
if [log_message] =~ /^Executing/ and [module_name] == «pbx.c» {
grok {
match => {
«log_message» => «Executing +\[%{DATA:dialplan_extension}@%{DATA:dialplan_context}:%{INT:dialplan_priority}\] +%{DATA:asterisk_app}\(\»%{DATA:originating_channel}\», \»%{GREEDYDATA:asterisk_app_data}\»\)»
}
}
if ![asterisk_app_data] {
mutate {
add_field => {«asterisk_app_data» => «»}
}
}
}
if [message] =~ /\s+==\s+/ {
if [module_name] and [module_name] =~ /^(pbx|app_stack)\.c/ and [log_message] =~ /^Spawn extension/ {
grok {
match => {
«log_message» => «^Spawn extension \(%{DATA:dialplan_context}, %{DATA:dialplan_extension}, %{DATA:dialplan_priority}\) exited (non-zero|\S+) on ‘${DATA:originating_channel}'»
}
}
}
if [module_name] and [module_name] == «app_mixmonitor.c» and [log_message] =~ /^(End|Begin) MixMonitor Recording/ {
grok {
match => {
«log_message» => «^(?<mixmonitor_action>(?:End|Begin)) MixMonitor Recording %{GREEDYDATA:mixmonitor_record_channel}»
}
}
}
if [module_name] and [module_name] == «manager.c» {
if [log_message] =~ /^Manager ‘\S+’ logged (on|off) from/ {
grok {
match => {
«log_message» => «Manager ‘%{DATA:manager_user}’ (?<manager_user_status>logged (?:on|off)) from %{IP:manager_listen_ip}»
}
}
}
}
}
}
}
}
}
output {
elasticsearch {
hosts => «localhost:9200»
index => «aster-%{+YYYY.MM.dd}»
}
#stdout { codec => rubydebug }
}
Рассмотрим подробнее разделы
- Input – в этом разделе указывается порт, который будет слушать logstash
- filter – в этом разделе описываются правила, для анализа, обработки и отправки через раздел output
- output – раздел, отвечающий за назначение отправки обработанных данных
Закончили настройку logstash. Запускаем его:
# systemctl start logstash.service

На этом настройка обработчика логов завершена. Остался маленький шаг — это установка и настройка отправщика логов Filebeat.
Filebeat. Установка и настройка
Filebeat помогает упростить простые вещи, предлагая легкий способ пересылки и централизации логов и файлов.
Это ПО должно находится на сервере, откуда будем брать логи. В нашем случае все находится в одном месте.
Установка происходит из того же репозитория, что и ElasticSearch, поэтому для установки нам потребуется одна команда
# yum install filebeat

Теперь, когда установка закончена, перейдем к конфигурированию сервиса отправки логов. Для этого откроем файл с настройками /etc/filebeat/filebeat.yml и внесем туда некоторые изменения.
filebeat:
prospectors:
# Asterisk /var/log/asterisk/debug
—
paths:
— /var/log/asterisk/debug
input_type: log
document_type: asterisk_debug
include_lines: [«^[[]»]
output.logstash:
# The Logstash hosts
hosts: [«127.0.0.1:5044»]
logging.level: info
logging.selectors: [«*»]


Остались вопросы?
Я - Першин Артём, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.
категории
- DECT
- Linux
- Вспомогательный софт при работе с Asterisk
- Интеграция с CRM и другими системами
- Интеграция с другими АТС
- Использование Elastix
- Использование FreePBX
- Книга
- Мониторинг и траблшутинг
- Настройка Asterisk
- Настройка IP-телефонов
- Настройка VoIP-оборудования
- Новости и Статьи
- Подключение операторов связи
- Разработка под Asterisk
- Установка Asterisk
VoIP оборудование
ближайшие курсы
Новые статьи
10 доводов в пользу Asterisk
Распространяется бесплатно.
Asterisk – программное обеспечение с открытым исходным кодом, распространяется по лицензии GPL. Следовательно, установив один раз Asterisk вам не придется дополнительно платить за новых абонентов, подключение новых транков, расширение функционала и прочие лицензии. Это приближает стоимость владения станцией к нулю.
Безопасен в использовании.
Любое программное обеспечение может стать объектом интереса злоумышленников, в том числе телефонная станция. Однако, сам Asterisk, а также операционная система, на которой он работает, дают множество инструментов защиты от любых атак. При грамотной настройке безопасности у злоумышленников нет никаких шансов попасть на станцию.
Надежен в эксплуатации.
Время работы серверов некоторых наших клиентов исчисляется годами. Это значит, что Asterisk работает несколько лет, ему не требуются никакие перезагрузки или принудительные отключения. А еще это говорит о том, что в районе отличная ситуация с электроэнергией, но это уже не заслуга Asterisk.
Гибкий в настройке.
Зачастую возможности Asterisk ограничивает только фантазия пользователя. Ни один конструктор шаблонов не сравнится с Asterisk по гибкости настройки. Это позволяет решать с помощью Asterisk любые бизнес задачи, даже те, в которых выбор в его пользу не кажется изначально очевидным.
Имеет огромный функционал.
Во многом именно Asterisk показал какой должна быть современная телефонная станция. За многие годы развития функциональность Asterisk расширилась, а все основные возможности по-прежнему доступны бесплатно сразу после установки.
Интегрируется с любыми системами.
То, что Asterisk не умеет сам, он позволяет реализовать за счет интеграции. Это могут быть интеграции с коммерческими телефонными станциями, CRM, ERP системами, биллингом, сервисами колл-трекинга, колл-бэка и модулями статистики и аналитики.
Позволяет телефонизировать офис за считанные часы.
В нашей практике были проекты, реализованные за один рабочий день. Это значит, что утром к нам обращался клиент, а уже через несколько часов он пользовался новой IP-АТС. Безусловно, такая скорость редкость, ведь АТС – инструмент зарабатывания денег для многих компаний и спешка во внедрении не уместна. Но в случае острой необходимости Asterisk готов к быстрому старту.
Отличная масштабируемость.
Очень утомительно постоянно возвращаться к одному и тому же вопросу. Такое часто бывает в случае некачественного исполнения работ или выбора заведомо неподходящего бизнес-решения. С Asterisk точно не будет такой проблемы! Телефонная станция, построенная на Asterisk может быть масштабируема до немыслимых размеров. Главное – правильно подобрать оборудование.
Повышает управляемость бизнеса.
Asterisk дает не просто набор полезных функций, он повышает управляемость организации, качества и комфортности управления, а также увеличивает прозрачность бизнеса для руководства. Достичь этого можно, например, за счет автоматизации отчетов, подключения бота в Telegram, санкционированного доступа к станции из любой точки мира.
Снижает расходы на связь.
Связь между внутренними абонентами IP-АТС бесплатна всегда, независимо от их географического расположения. Также к Asterisk можно подключить любых операторов телефонии, в том числе GSM сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.