sadsfae.ansible_elk
ansible-elk
Ansible Playbook 用于在远程主机上设置 ELK/EFK 堆栈和 Filebeat 客户端
它有什么功能?
- 自动部署完整的 6.x 系列 ELK 或 EFK 堆栈(Elasticsearch、Logstash/Fluentd、Kibana)
5.6
和2.4
版本作为分支维护,当前master
分支为 6.x。- 使用 Nginx 作为 Kibana 的反向代理,或可选使用 Apache 设置
apache_reverse_proxy: true
- 为 Filebeat 或 Logstash-forwarder 生成 SSL 证书
- 如果防火墙处于活动状态,则添加 iptables 或 firewalld 规则
- 调整 Elasticsearch 堆内存为您内存的一半,最大 32G
- 使用 SSL 和 Filebeat 为 Logstash 部署 ELK 客户端(默认)
- 如果选择 Fluentd 而不是 Logstash,则部署 rsyslog,接收 相同的 OpenStack 相关日志在 /var/log/*
- 所有服务端口可以在
install/group_vars/all.yml
中修改 - 可选安装 curator
- 可选安装 Elastic X-Pack Suite
- 这个也可以在 Ansible Galaxy 上找到
要求
- RHEL7 或 CentOS7 服务器/客户端,没有修改
- 使用 Filebeat 的 RHEL7/CentOS7、Rocky 或 Fedora 作为 ELK 客户端
- 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 分支来使用这些版本
- 随着时间的推移,我会根据需要更新此 playbook 的主要 ELK 版本。
- 初始设置 nginx 的 htpasswd 为 admin/admin
- nginx 的默认端口为 80/8080,用于 Kibana 和 SSL 证书检索(可配置)
- 使用 OpenJDK 作为 Java
- 安装速度比较快,测试 VM 上大约需要 3 分钟
- Fluentd 可以替代默认的 Logstash
- 在
group_vars/all.yml
中设置logging_backend: fluentd
- 在
- 设置
install_curator_tool: true
在install/group_vars/all.yml
中以安装 curator - 通过以下方式安装 Elastic X-Pack Suite 为 Elasticsearch、Logstash 或 Kibana:
install_elasticsearch_xpack: true
install_kibana_xpack: true
install_logstash_xpack: true
- 注意:部署 X-Pack 将为您的 Elasticsearch 增加额外身份验证和安全措施,例如,Kibana 将会有自己的凭据 - 默认用户名为
elastic
,密码为changeme
ELK/EFK 服务器说明
- 克隆仓库并设置您的 hosts 文件
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
- 如果您使用普通用户用于 Ansible,例如 AWS EC2 通常使用 ec2-user,则设置以下内容,默认是 root。
ansible_system_user: ec2-user
- 运行 playbook
ansible-playbook -i hosts install/elk.yml
- (查看 playbook 消息)
- 访问 ELK 地址:http://host-01:80(默认,nginx)或 http://host-01/kibana(apache)
- 默认登录为:
- 用户名:
admin
- 密码:
admin
- 用户名:
创建您的 Kibana 索引模式
- 接下来,您将登录到 Kibana 实例并创建 Kibana 索引模式。
- 注意:示例数据可能很有用,您可以稍后尝试。
- 此时,您可以设置客户端开始通过 Filebeat/SSL 发送数据
ELK 客户端说明
- 运行客户端 playbook,针对生成的
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
下载
1.2k
拥有者
hobo devop/sysadmin/SRE