elk
Роль Ansible для ELK
Устанавливает стек ELK (Elasticsearch, Logstash и Kibana) для агрегирования и мониторинга логов. Предназначен для интеграции с Riemann для функции оповещения.
Требования
- Роль freedomofpress.generate-ssl-cert
- 2 ГБ ОЗУ для лог-сервера
- Лог-клиенты для отправки логов
Переменные роли
elk_kibana_user: "kibana"
elk_kibana_logfile: "/var/log/kibana.log"
# Возможность отключить функцию создания снимков. Это плохо протестировано,
# поэтому по умолчанию значение false. Если установлено true при первом
# запуске, возможно, следует добавить `meta: flush_handlers` перед
# выполнением, чтобы убедиться, что переменная `path.repo:` распознана
# работающей службой elasticsearch..
elk_elasticsearch_snapshot: false
elk_elasticsearch_snapshot_directory: /var/lib/elasticsearch/backups
elk_elasticsearch_snapshot_repository: es_backup
elk_elasticsearch_snapshot_initialization:
type: fs
settings:
location: "{{ elk_elasticsearch_snapshot_directory }}"
compress: yes
_hack: null
# Было бы хорошо использовать iso8601 вместо эпохи, но API ElasticSearch
# выдает ошибку invalid_snapshot_name с форматом iso8601.
elk_elasticsearch_snapshot_name: "snapshot-{{ ansible_date_time.epoch }}"
# Ограничения для установки в /etc/security/limits.conf. Убедитесь, что вы
# скопировали весь список, если переопределяете какие-либо отдельные элементы.
elk_elasticsearch_pam_limits:
- domain: elasticsearch
limit_item: memlock
limit_type: hard
value: unlimited
- domain: elasticsearch
limit_item: memlock
limit_type: soft
value: unlimited
- domain: elasticsearch
limit_item: nofile
limit_type: soft
value: 65535
- domain: elasticsearch
limit_item: nofile
limit_type: hard
value: 65535
# Плагин Riemann для оповещения, фильтр de-dot для совместимости с ElasticSearch v2.
# Смотрите: https://www.elastic.co/blog/introducing-the-de_dot-filter
elk_logstash_plugins:
- logstash-output-riemann
- logstash-filter-de_dot
# Интерфейс, используемый для ограничений брандмауэра и запросов по IPv4
elk_network_interface: eth0
elk_cluster_name: elk-logging
# SSL отключен по умолчанию. Установите эти переменные на полные пути к SSL
# сертификатам, которые вы хотите использовать, и Nginx будет принуждать HTTPS
# соединения. Вы должны разместить SSL сертификаты там в отдельной игре.
elk_nginx_ssl_certificate: ""
elk_nginx_ssl_certificate_key: ""
elk_nginx_server_name: localhost
# Не безопасно для использования в продакшене! Переопределите для защиты логинов.
elk_kibana_username: kibana
elk_kibana_password: kibana
# Переопределите, чтобы изменить начальную страницу, например, на пользовательскую
# панель: "dashboard/Ваше-Имя-Панели". Вам необходимо заменить пробелы в
# названиях панелей на дефисы, так как Kibana этого ожидает.
elk_kibana_default_app: discover
# Включить автоматическую конфигурацию белого списка IP для "лог-клиентов".
# Использует ufw. Отключите, если вы используете другую роль для конфигурации брандмауэра.
elk_configure_firewall: true
# Позволяет следующим играм использовать пользовательскую конфигурацию веб-сервера
# Установите это значение в false, чтобы пропустить развертывание nginx этой роли
elk_configure_nginx: true
# Позволяет следующим играм переопределять списки паттернов и фильтров
elk_logstash_patterns:
- logstash-patterns/*
elk_logstash_filters:
- logstash-configs/*
# Объявите список файлов баз данных GeoIP для копирования. Отключено по умолчанию.
elk_logstash_geoipdbs: []
Использование
Используйте роль в плейбуке следующим образом:
- hosts: logserver
roles:
- role: elk
elk_kibana_username: admin
elk_kibana_password: WowWhatAStrongPassword4
Добавление визуализаций
Роль еще не создает визуализации Kibana автоматически. Однако вы можете
импортировать сохраненные визуализации, которые поставляются с ролью, в files/kibana-dashboards.json
.
Перейдите в Настройки -> Объекты -> Импорт в интерфейсе Kibana и выберите JSON файл.
Запуск тестов
Эта роль использует Molecule и ServerSpec для тестирования. Чтобы использовать:
pip install molecule
gem install serverspec
molecule test
Вы также можете запускать выборочные команды:
molecule idempotence
molecule verify
Смотрите документацию Molecule для получения дополнительной информации.
Дополнительное чтение
Настройка
- Официальная документация ElasticSearch
- Конфигурация ELK UCLA
- Руководство DigitalOcean по установке ELK
Разработка пользовательских фильтров
Смотрите каталог examples/writing-filters в этом репозитории для преднастроенной среды разработки. Скопируйте этот каталог на сервер с установленным logstash или используйте Vagrant тестовую ВМ.
Обслуживание
Лицензия
MIT
Stands up ELK stack for log aggregation.
ansible-galaxy install freedomofpress/ansible-role-elk