ansible_elk
ansible-elk
Ansible Playbook для настройки стека ELK/EFK и клиента Filebeat на удаленных хостах
Что это делает?
- Автоматизированное развертывание полного стека 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
- Поддерживаются версии ELK
Требования
- Сервер/клиент 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.
- Обратите внимание: пример данных может быть полезен, вы можете попробовать его позже.
- На этом этапе вы можете настроить свои клиенты для начала отправки данных через 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.
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
- Вы можете посмотреть видео развертывания здесь:
Иерархия файлов
.
├── 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