sadsfae.ansible_elk

ansible-elk

Ansible Playbook 用于在远程主机上设置 ELK/EFK 堆栈和 Filebeat 客户端

ELK

GA

它有什么功能?

  • 自动部署完整的 6.x 系列 ELK 或 EFK 堆栈(Elasticsearch、Logstash/Fluentd、Kibana)
    • 5.62.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: trueinstall/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

创建您的 Kibana 索引模式

  • 接下来,您将登录到 Kibana 实例并创建 Kibana 索引模式。

ELK

  • 注意:示例数据可能很有用,您可以稍后尝试。

ELK

ELK

ELK

ELK

  • 此时,您可以设置客户端开始通过 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 发送的日志结果

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
下载
1.2k
拥有者
hobo devop/sysadmin/SRE