ansible_elk

ansible-elk

Ansible Playbook для настройки стека ELK/EFK и клиента Filebeat на удаленных хостах

ELK

GA

Что это делает?

  • Автоматизированное развертывание полного стека ELK или EFK версии 6.x (Elasticsearch, Logstash/Fluentd, Kibana)
    • Поддерживаются версии ELK 5.6 и 2.4 как ветки, а ветка master будет на 6.x.
    • Использует Nginx в качестве обратного прокси для Kibana, или опционально Apache через apache_reverse_proxy: true
    • Генерирует SSL-сертификаты для Filebeat или Logstash-forwarder
    • Добавляет правила iptables или firewalld, если активен брандмауэр
    • Настраивает размер кучи Elasticsearch на половину вашей памяти, максимум 32G
    • Разворачивает клиентов ELK с использованием SSL и Filebeat для Logstash (по умолчанию)
    • Устанавливает rsyslog, если выбран Fluentd вместо Logstash, собирает такой же набор журналов, связанных с OpenStack в /var/log/*
    • Все порты служб могут быть изменены в файле install/group_vars/all.yml
    • Опционально устанавливает curator
    • Опционально устанавливает Elastic X-Pack Suite
    • Также доступно на Ansible Galaxy

Требования

  • Сервер/клиент RHEL7 или CentOS7 без модификаций
  • RHEL7/CentOS7, Rocky или Fedora для клиентов ELK с использованием Filebeat
  • Сервер ELK/EFK с как минимум 8G памяти (можно попробовать с меньшим, но серия 5.x довольно требовательная - попробуйте серию 2.4, если у вас ограниченные ресурсы).
  • Вы можете захотеть изменить vm.swappiness, поскольку ELK/EFK требует много ресурсов, и свопинг ухудшает отзывчивость.
    • Я оставляю это на ваше усмотрение.
echo "vm.swappiness=10" >> /etc/sysctl.conf
sysctl -p

Заметки

  • Текущая версия ELK - 6.x, но вы можете перейти на ветку 5.6 или 2.4, если хотите эту серию
  • Я буду обновлять этот плейбук для основных версий ELK, если позволит время.
  • Изначально устанавливает nginx htpasswd на admin/admin
  • Порты nginx по умолчанию 80/8080 для Kibana и получения SSL сертификатов (настраиваемые)
  • Использует OpenJDK для Java
  • Работает довольно быстро, занимает около 3 минут на тестовой ВМ
  • Fluentd можно заменить на стандартный Logstash
    • Установите logging_backend: fluentd в group_vars/all.yml
  • Установите curator, установив install_curator_tool: true в install/group_vars/all.yml
  • Установите Elastic X-Pack Suite для Elasticsearch, LogStash или Kibana с помощью:
    • install_elasticsearch_xpack: true
    • install_kibana_xpack: true
    • install_logstash_xpack: true
    • Важно: Развертывание X-Pack добавит дополнительную аутентификацию и безопасность для вашего ES, у Kibana теперь будут собственные учетные данные - по умолчанию это имя пользователя: elastic и пароль: changeme

Инструкции для сервера ELK/EFK

  • Клонировать репозиторий и настроить файл хостов
git clone https://github.com/sadsfae/ansible-elk
cd ansible-elk
sed -i 's/host-01/elkserver/' hosts
sed -i 's/host-02/elkclient/' hosts
  • Если вы используете не root пользователя для Ansible, например, AWS EC2 обычно использует ec2-user, установите следующее, по умолчанию root.
ansible_system_user: ec2-user
  • Запустите плейбук
ansible-playbook -i hosts install/elk.yml
  • (смотрите сообщения плейбука)
  • Перейдите к ELK по адресу http://host-01:80 (по умолчанию, nginx) или http://host-01/kibana (apache)
  • Логин по умолчанию:
    • имя пользователя: admin
    • пароль: admin

Создайте свой шаблон индекса Kibana

  • Далее вы войдете в вашу инстанс Kibana и создадите шаблон индекса Kibana.

ELK

  • Обратите внимание: пример данных может быть полезен, вы можете попробовать его позже.

ELK

ELK

ELK

ELK

  • На этом этапе вы можете настроить свои клиенты для начала отправки данных через Filebeat/SSL.

Инструкции для клиента ELK

  • Запустите плейбук клиента против сгенерированной переменной elk_server
ansible-playbook -i hosts install/elk-client.yml --extra-vars 'elk_server=X.X.X.X'
  • Когда это завершится, вернитесь к вашему ELK, и вы увидите поступление логов от клиентов ELK/EFK через filebeat.

ELK

5.6 ELK/EFK (Устарело)

  • Серия 5.6 ELK/EFK также доступна, чтобы использовать её, просто используйте ветку 5.6
git clone https://github.com/sadsfae/ansible-elk
cd ansible-elk
git checkout 5.6

2.4 ELK/EFK (Устарело)

  • Серия 2.4 ELK/EFK также доступна, чтобы использовать её, просто используйте ветку 2.4
git clone https://github.com/sadsfae/ansible-elk
cd ansible-elk
git checkout 2.4
  • Вы можете посмотреть видео развертывания здесь:

Ansible Elk

Иерархия файлов

.
├── hosts
├── install
│   ├── elk_client.yml
│   ├── elk.yml
│   ├── group_vars
│   │   └── all.yml
│   └── roles
│       ├── apache
│       │   ├── tasks
│       │   │   └── main.yml
│       │   └── templates
│       │       ├── 8080vhost.conf.j2
│       │       └── kibana.conf.j2
│       ├── curator
│       │   ├── files
│       │   │   └── curator.repo
│       │   ├── tasks
│       │   │   └── main.yml
│       │   └── templates
│       │       ├── curator-action.yml.j2
│       │       └── curator-config.yml.j2
│       ├── elasticsearch
│       │   ├── files
│       │   │   ├── elasticsearch.in.sh
│       │   │   └── elasticsearch.repo
│       │   ├── tasks
│       │   │   └── main.yml
│       │   └── templates
│       │       └── elasticsearch.yml.j2
│       ├── elk_client
│       │   ├── files
│       │   │   └── elk.repo
│       │   └── tasks
│       │       └── main.yml
│       ├── filebeat
│       │   ├── meta
│       │   │   └── main.yml
│       │   ├── tasks
│       │   │   └── main.yml
│       │   └── templates
│       │       ├── filebeat.yml.j2
│       │       └── rsyslog-openstack.conf.j2
│       ├── firewall
│       │   ├── handlers
│       │   │   └── main.yml
│       │   └── tasks
│       │       └── main.yml
│       ├── fluentd
│       │   ├── files
│       │   │   ├── filebeat-index-template.json
│       │   │   └── fluentd.repo
│       │   ├── tasks
│       │   │   └── main.yml
│       │   └── templates
│       │       ├── openssl_extras.cnf.j2
│       │       └── td-agent.conf.j2
│       ├── heartbeat
│       │   ├── meta
│       │   │   └── main.yml
│       │   ├── tasks
│       │   │   └── main.yml
│       │   └── templates
│       │       └── heartbeat.yml.j2
│       ├── instructions
│       │   └── tasks
│       │       └── main.yml
│       ├── kibana
│       │   ├── files
│       │   │   └── kibana.repo
│       │   ├── tasks
│       │   │   └── main.yml
│       │   └── templates
│       │       └── kibana.yml.j2
│       ├── logstash
│       │   ├── files
│       │   │   ├── filebeat-index-template.json
│       │   │   └── logstash.repo
│       │   ├── tasks
│       │   │   └── main.yml
│       │   └── templates
│       │       ├── 02-beats-input.conf.j2
│       │       ├── logstash.conf.j2
│       │       └── openssl_extras.cnf.j2
│       ├── metricbeat
│       │   ├── meta
│       │   │   └── main.yml
│       │   ├── tasks
│       │   │   └── main.yml
│       │   └── templates
│       │       └── metricbeat.yml.j2
│       ├── nginx
│       │   ├── tasks
│       │   │   └── main.yml
│       │   └── templates
│       │       ├── kibana.conf.j2
│       │       └── nginx.conf.j2
│       ├── packetbeat
│       │   ├── meta
│       │   │   └── main.yml
│       │   ├── tasks
│       │   │   └── main.yml
│       │   └── templates
│       │       └── packetbeat.yml.j2
│       └── xpack
│           └── tasks
│               └── main.yml
└── meta
    └── main.yml

56 директорий, 52 файла
О проекте

Playbook for setting up an ELK/EFK stack and clients.

Установить
ansible-galaxy install sadsfae/ansible-elk
Лицензия
apache-2.0
Загрузки
1231
Владелец
hobo devop/sysadmin/SRE