Использование Elasticsearch и Kibana для сбора логов в Asterisk
В данной статье мы продолжим рассмотрение стека ELK. Детальней разберем настройку ElasticSearch, а также рассмотрим Kibana как инструмент для визуализации логов. Изучить первоначальную настройку и узнать немного теории про стек ELK вы можете, заглянув в статью «Использование ElasticSearch для Asterisk». Настройка Для начала создадим конфигурационнай файл для logstash, открываем файл o /etc/logstash/conf.d/logstash.conf и вносим туда […]
В данной статье мы продолжим рассмотрение стека ELK. Детальней разберем настройку ElasticSearch, а также рассмотрим Kibana как инструмент для визуализации логов.
Изучить первоначальную настройку и узнать немного теории про стек ELK вы можете, заглянув в статью «Использование ElasticSearch для Asterisk».
Настройка
Для начала создадим конфигурационнай файл для logstash, открываем файл o /etc/logstash/conf.d/logstash.conf и вносим туда следующее:
input {
beats {
port => 5044
}
}
# Парсим сообщения по заданным паттернам Grok
filter {
if [type] == "asterisk-log" {
grok {
patterns_dir => [ "/usr/share/logstash/patterns" ]
match => { "message" => "\[(%{TIMESTAMP_ISO8601:datetime}|%{SYSLOGTIMESTAMP:datetime})\]\s*%{ASTLEVEL:asterisk_severity}\s*\[%{ASTPID:asterisk_pid}\](\[%{ASTCHANNEL_ID:asterisk_channel}\])?\s*%{ASTSRC:asterisk_source}:\s*%{GREEDYDATA:asterisk_data}" }
}
}
if [type] == "asterisk-cdr" {
csv {
separator => ","
# На тот случай если захотите парсить CDR-CSV
columns => ["accountcode","src","dst","dcontext","clid","channel","dstchannel","lastapp","lastdata","start","answer","end","duration","billsec","disposition",
"amaflags","userfield","uniqueid"]
convert => {
# "accountcode" => "string"
# "src" => "string"
# "dst" => "string"
# "dcontext" => "string"
# "clid" => "string"
# "channel" => "string"
# "dstchannel" => "string"
# "lastapp" => "string"
# "lastdata" => "string"
"start" => "date_time"
"answer" => "date_time"
"end" => "date_time"
"duration" => "integer"
"billsec" => "integer"
# "disposition" => "string"
# "amaflags" => "string"
# "userfield" => "string"
# "uniqueid" => "string"
}
} }
}
# Отбравка данных в ElasticSearch
output {
elasticsearch {
hosts => "localhost:9200"
user => elastic
password => changeme
manage_template => false
index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
document_type => "%{[@metadata][type]}"
}
# for debug purpose of pipeline with command: ./logstash -f /etc/logstash/conf.d/logstash.conf
# stdout { codec => rubydebug }
}
Т.к. мы используем Grok для парсинга данных из логов, то необходимо его установить, а также дополнительные зависимости. Выполняем
· wget --no-check-certificate https://github.com/jordansissel/grok/tarball/master -O grok.tar.gz
· tar zxf grok.tar.gz
· yum install -y gcc gperf make libevent-devel pcre-devel tokyocabinet-devel
· make grok
· make install
· ldconfig
Создаем каталог patterns в директории /usr/share/logstash/ а в нём файл asterisk-grok-patterns, в который вносим следующее:
ASTLEVEL (?:VERBOSE|ERROR|NOTICE|INFO|DEBUG|DTMF|WARNING)
ASTPID [0-9]+
ASTCHANNEL_ID C\-[A-Za-z0-9]+
ASTSRC [-a-z._0-9\/]+
Далее Вносим настройки в файл /etc/filebeat/filebeat.yml
#----------------------------- Logstash prospectors ---------------------------
filebeat.inputs:
- input_type: log
enabled: true
paths:
- /var/log/asterisk/full*
document_type: asterisk-log
encoding: "utf-8"
scan_frequency: 5s
env: production
#----------------------------- Logstash output --------------------------------
output.logstash:
# The Logstash hosts
hosts: ["127.0.0.1:5044"]
xpack.monitoring:
enabled: true
elasticsearch:
hosts: ["http://127.0.0.1:9200"]
#================================ Logging =====================================
logging.level: debug
logging.selectors: ["*"]
В данном файле, мы говорим, что парсить будем логи Full.
Теперь, после того как все настройки внесены, мы можем перейти на веб-интерфейс Kibana для создания паттернов. Напоминаю, что Kibana использует порт 5601

Далее перейдем в настройки patterns как показано на рисунке и создадим новый паттерн.

Далее выбираем доступный нам pattern, который начинается со слов filebeat и вносим его имя целиком в index name

После нажатия кнопки next выбираем Time Filter, нам доступен только timestamp

После настройки паттернов переходим в раздел Discover и там выбираем наш паттерн по которому будем смотреть логи.

После этого, в строке поиска и можем написать ключевое слово, по которому будем делать визуализацию, для примера возьмём слово warning.

Как видим на скриншоте, у нас встречался всего 1 warning, который как раз и отражен на графике.
На этом настройка ElasticSearch + Kibana, для Asterisk завершена.

Остались вопросы?
Я - Першин Артём, менеджер компании 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 сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.