Стек ElasticSearch + LogStash + Kibana (ELK) часто выручает админа в плане богатых возможностей проекта и его относительной бесплатности. В данной статье собраны 2 заметки, которые помогут сэкономить время при развёртывании.
Весь проект ElasticSearch + LogStash + Kibana написан на языке программирования Java, которая в новых версиях ELK теперь идёт в составе проекта (bundle). FileBeat - "помощник" для LogStash, который занят отправкой логов как в LogStash, так и прямиком в ElasticSearch.
Раньше модуль NetFlow для создания коллектора (активировался в LogStash) + анализатор (dashboard и аналитика через GUI Kibana), но в новых версиях стека рекомендуется активировать коллектор NetFlow в FileBeat. Но что LogStash что FileBeat при старте открывают порты на IPv6 и не открывают на IPv4 интерфейсах.
Рекомендуется применять параметр Java -Djava.net.preferIPv4Stack=true для указания предпочтения 4 версии IP перед 6, но с FileBeat всё сложнее чем с LogStash, так как у него нет простого пути указать через его конфигурационный файл данный параметр. Вы можете выкрутиться и использовать в linux серверах файл /etc/environment
_JAVA_OPTIONS="-Djava.net.preferIPv4Stack=true"
Рекомендую простой способ тем кто пока не использует у себя IPv6 и просто отключить его через параметр ядра в файле /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1"
sudo update-grub; sudo reboot
В новых версиях стека ELK стали активно использовать index lifecycle management (ILM). Теперь новый индекс по умолчанию будет создан при достижении любого из 2 параметров: или индекс стал больше 50 Гб или прошло уже 30 дней. Мне такое поведение не нравится и, в идеале, нужно создать свою политику-хотелку и применить её для существующих и будущих индексов, но я пошёл другим путём.
Мне, по ряду причин, очень нравится старое поведение: новый индекс каждый день. Так как аналитика и просмотр графиков чаще всего затрагивает последние во времени события, то ElasticSearch работает обычно с "базой-индексом" текущего дня, которая относительно небольшая. Мне лично приятно сознавать что я не напрягаю "базу-индекс" в 50 Гб, просматривая последние 15 минут. ElasticSearch быстр и не тупой, но всё же ...
Пока варварски решил вернуть старое поведение через отключение ILM.
Останавливаем службу FileBeat sudo systemctl stop filebeat
Вы НЕ должны трогать файл /etc/filebeat/filebeat.reference.yml, а все свои хотелки НУЖНО указывать в файле /etc/filebeat/filebeat.yml
sudo -e /etc/filebeat/filebeat.yml
output.elasticsearch.hosts: ["localhost:9200"] output.elasticsearch.index: "filebeat-%{+yyyy.MM.dd}" setup.ilm.enabled: false setup.template.enabled: true setup.template.name: "filebeat" setup.template.pattern: "filebeat-*" setup.dashboards.index: "filebeat*"
Запустите тест-проверку конфигурационного файла и создание индекса filebeat test config && sudo filebeat setup --index-management
Перезапустите FileBeat sudo systemctl restart filebeat; sleep 2; sudo systemctl status filebeat
В статье упомянул про NetFlow, хотя заметка про возвращении старой схемы наименования индекса, поэтому быстро дам выжимку из официальной документации по активированию любого модуля на примере NetFlow - sudo filebeat modules enable netflow
Подправьте файл /etc/filebeat/modules.d/netflow.yml под свои нужды и/или добавьте нужные параметры из официальной документации.
Дополнительные материалы:
Журналы Postfix в ElasticSearch.