Skip to content

FanKang2021/ansible-efk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ansible EFK Stack 自动化部署

本项目使用 Ansible 自动化部署 EFK(Elasticsearch, Filebeat, Kibana)技术栈,包含 Kafka 消息队列和 Elastalert2 告警系统。

项目结构

ansible-efk/
├── inventory                    # 主机清单文件
├── ansible.cfg                  # Ansible 配置文件
├── playbooks/                   # Playbook 目录
│   ├── main.yml                 # 主 Playbook(支持按组件部署)
│   ├── es.yml                   # Elasticsearch 部署 Playbook
│   ├── kibana.yml               # Kibana 部署 Playbook
│   ├── logstash.yml             # Logstash 部署 Playbook
│   ├── filebeat.yml             # Filebeat 部署 Playbook
│   ├── kafka.yml                # Kafka 部署 Playbook
│   └── elastalert2.yml          # Elastalert2 部署 Playbook
├── vars/                        # 变量文件目录
│   └── efk-all.yml              # 全局变量配置
└── roles/                       # Ansible 角色目录
    ├── pre_hosts/               # 主机预配置角色
    ├── elasticsearch/           # Elasticsearch 角色
    ├── kibana/                  # Kibana 角色
    ├── logstash/                # Logstash 角色
    ├── filebeat/                # Filebeat 角色
    ├── kafka/                   # Kafka 角色
    └── elastalert2/             # Elastalert2 角色

组件版本

  • Elasticsearch: 8.15.0
  • Kibana: 8.15.0
  • Logstash: 8.15.0
  • Filebeat: 8.15.0
  • Kafka: 3.8.0
  • JDK: 17.0.12
  • Elastalert2: latest

快速开始

1. 配置主机清单

编辑 inventory 文件,配置目标主机:

[es-all]
elasticsearch1 ansible_host=192.168.1.10
elasticsearch2 ansible_host=192.168.1.11

[kibana]
kibana1 ansible_host=192.168.1.12

[logstash]
logstash1 ansible_host=192.168.1.13

[filebeat]
filebeat1 ansible_host=192.168.1.14

[kafka-all]
kafka1 ansible_host=192.168.1.15

[elastalert2]
elastalert1 ansible_host=192.168.1.16

2. 配置 Ansible

编辑 ansible.cfg 文件,根据实际环境调整配置:

[defaults]
inventory = inventory
remote_user = your_username
private_key_file = ~/.ssh/id_rsa
host_key_checking = False

3. 配置变量

编辑 vars/efk-all.yml 文件,根据实际环境修改配置:

ansible_remote_user: your_username
elasticsearch_cluster_name: "your-cluster"
# ... 其他配置

4. 部署全部组件

ansible-playbook -i inventory playbooks/main.yml --tags efk-all

5. 按需部署单个组件

# 仅部署 Elasticsearch
ansible-playbook -i inventory playbooks/main.yml --tags elasticsearch

# 仅部署 Kibana
ansible-playbook -i inventory playbooks/main.yml --tags kibana

# 仅部署 Logstash
ansible-playbook -i inventory playbooks/main.yml --tags logstash

# 仅部署 Filebeat
ansible-playbook -i inventory playbooks/main.yml --tags filebeat

# 仅部署 Kafka
ansible-playbook -i inventory playbooks/main.yml --tags kafka

# 仅部署 Elastalert2
ansible-playbook -i inventory playbooks/main.yml --tags elastalert2

配置说明

网络代理(可选)

如需使用代理,取消注释 vars/efk-all.yml 中的代理配置:

http_proxy: http://127.0.0.1:1088
https_proxy: http://127.0.0.1:1088
no_proxy: localhost,127.0.0.1,localaddress,localdomain.com

JVM 配置

各组件 JVM 内存配置可在 vars/efk-all.yml 中调整:

elasticsearch_jvm_xms: "-Xms8g"
elasticsearch_jvm_xmx: "-Xmx8g"
logstash_jvm_xms: "-Xms8g"
logstash_jvm_xmx: "-Xmx8g"
kafka_java_heap: -Xms8g -Xmx8g

存储配置

Elasticsearch 存储配置:

elasticsearch_storage_method: "disk"
elasticsearch_storage_location: "/dev/vdb"
elasticsearch_data_dir: "/opt/elasticsearch-8.15.0/data"

安全配置

  • Elasticsearch TLS 证书密码配置
  • 各组件用户认证配置
  • 建议在生产环境中修改默认密码

故障排除

  1. 连接问题:检查 SSH 密钥配置和网络连通性
  2. 权限问题:确保远程用户具有 sudo 权限
  3. 资源不足:调整 JVM 内存配置以适应服务器资源

许可证

本项目基于 MIT 许可证开源。

Star History

Star History Chart