logstash
Ansible Роль: Logstash
Ansible роль, которая устанавливает Logstash на RedHat/CentOS и Debian/Ubuntu.
Обратите внимание, что по умолчанию эта роль устанавливает паттерн grok для syslog; если вы хотите добавить больше фильтров, добавьте их в директорию /etc/logstash/conf.d/
. Например, вы можете создать файл с именем 13-myapp.conf
с соответствующим grok фильтром и перезапустить Logstash, чтобы начать его использовать. Проверьте свой grok regex с помощью Grok Debugger.
Требования
Хотя возможны и другие методы, эта роль предназначена для работы с Elasticsearch в качестве бэкенда для хранения логов.
Переменные роли
Доступные переменные перечислены ниже, junto с значениями по умолчанию (см. defaults/main.yml
):
logstash_version: '7.x'
Основная версия Logstash для установки.
logstash_package: logstash
Конкретный пакет для установки. Вы можете указать версию пакета, используя правильный синтаксис для вашей платформы и менеджера пакетов, изменив имя пакета.
logstash_listen_port_beats: 5044
Порт, на котором Logstash будет слушать beats.
logstash_elasticsearch_hosts:
- http://localhost:9200
Хосты, на которые Logstash должен отправлять логи в Elasticsearch.
logstash_dir: /usr/share/logstash
Директория, в которой установлен Logstash.
logstash_ssl_dir: /etc/pki/logstash
logstash_ssl_certificate_file: logstash-forwarder-example.crt
logstash_ssl_key_file: logstash-forwarder-example.key
Локальные пути к файлам SSL сертификата и ключа, которые будут скопированы в logstash_ssl_dir
.
Смотрите Генерация самоподписанного сертификата для получения информации о создании и использовании самоподписанных сертификатов с Logstash и Filebeat.
logstash_local_syslog_path: /var/log/syslog
logstash_monitor_local_syslog: true
Необходимо ли добавлять конфигурацию для локального syslog файла (определенного как logstash_local_syslog_path
) в Logstash. Установите это значение в false
, если вы мониторите локальный syslog по-другому или если вам не важен локальный syslog файл. Другие локальные логи можно добавить с помощью ваших собственных конфигурационных файлов, размещённых в /etc/logstash/conf.d
.
logstash_enabled_on_boot: true
Установите это значение в false
, если вы не хотите, чтобы Logstash запускался при старте системы.
logstash_install_plugins:
- logstash-input-beats
- logstash-filter-multiline
Список плагинов Logstash, которые должны быть установлены.
logstash_setup_default_config: true
Установите это значение в false
, если вы не хотите добавлять конфигурационные файлы по умолчанию, идущие с этой ролью (в директории files/filters
). Вы можете добавить свои собственные конфигурационные файлы в /etc/logstash/conf.d
.
Генерация самоподписанного сертификата
Для максимальной безопасности вы должны использовать свой собственный действительный сертификат и ключ, и обновить переменные logstash_ssl_*
в вашем плейбуке, чтобы использовать ваш сертификат.
Чтобы сгенерировать самоподписанную пару сертификатов/ключей, используйте команду:
$ openssl req -x509 -batch -nodes -days 3650 -newkey rsa:2048 -keyout logstash.key -out logstash.crt -subj '/CN=example.com'
Обратите внимание, что Filebeat и Logstash могут неправильно работать с самоподписанными сертификатами, если вы также не добавили полный цепочку доверия (включая удостоверяющий центр для вашего самоподписанного сертификата) на ваш сервер. Смотрите: https://github.com/elastic/logstash/issues/4926#issuecomment-203936891
Новые версии Filebeat и Logstash также требуют приватный ключ в формате pkcs8, который можно создать, конвертировав ранее сгенерированный ключ, например:
openssl pkcs8 -in logstash.key -topk8 -nocrypt -out logstash.p8
Другие заметки
Если вы видите высокую загрузку процессора от одного из процессов logstash
, и вы используете Logstash вместе с другим приложением, работающим на порту 80 на платформе вроде Ubuntu с upstart, то процесс logstash-web
может застревать в цикле, пытаясь запуститься на порту 80, не удаваясь, и снова пытаясь запуститься из-за наличия флага restart
в /etc/init/logstash-web.conf
. Чтобы избежать этой проблемы, измените эту строку, добавив limit
к инструкции повторного запуска, или установите сервис logstash-web
в enabled=no
в вашем плейбуке, например:
- name: Убедитесь, что процесс logstash-web остановлен и отключен.
service: name=logstash-web state=stopped enabled=no
Пример Плейбука
- hosts: search
pre_tasks:
- name: Использовать Java 8 на Debian/Ubuntu.
set_fact:
java_packages:
- openjdk-8-jdk
when: ansible_os_family == 'Debian'
roles:
- geerlingguy.java
- geerlingguy.elasticsearch
- geerlingguy.logstash
Лицензия
MIT / BSD
Информация об авторе
Эта роль была создана в 2014 году Джеффом Гирлингом, автором Ansible for DevOps.
ansible-galaxy install geerlingguy/ansible-role-logstash