基于 Ansible 的 ELK 部署说明
ELK-Ansible使用手册
ELK-Ansible 是基于 Ansible 的 Playbooks 研发的 ELK集群部署工具。
本文将介绍如何使用 ELK-Ansible 快速部署 ELK 集群。
一、准备工作
1. 目标机器若干(至少一台),配置如下:
- 系统版本 CentOS7
- 节点之间请确保网络互通(关闭防火墙)
2. 一台中控机,配置如下:
- 系统版本 CentOS7
- 互联网访问(下载安装包)
- 机器之间内网互通
3. ELK角色名词介绍:
Elasticsearch | 存储数据并提供分析查询能力,支持集群 |
---|---|
Logstash | 解析日志,由一行文本日志解析到结构数据(JSON字典) |
Filebeat | 监控日志文件,收集行数据 |
Kibana | 前端展示界面 |
Kafka(可选) | 缓存filebeat到logstash过程中的数据, 防止logstash处理不过来造成数据丢失 |
4. 给机器分配角色 & 场景选择
-
根据实际情况分配服务器和角色,
- 日志的大小来判断es节点数量(1,3,5...)
- 日志产生速度快,请多配置几台logstash
- 每台要收集日志的服务器上都要配置filebeat
-
场景一,带kafka方案
- hosts文件的kafka角色下有服务器即可
-
场景二,不带kafka方案
- hosts文件的kafka角色组下不要配置任何机器
二、中控机配置 & 部署程序安装
1. 中控机依赖包安装
# yum -y install epel-release git curl sshpass ansible vim wget
2. 下载ELK-Ansible程序
gihub地址:https://github.com/lizhewei1208/elk-ansible.git
安装包下载地址: https://urc-elk.oss-cn-shanghai.aliyuncs.com/release/elk-ansible.tar.gz
cd /opt wget https://urc-elk.oss-cn-shanghai.aliyuncs.com/release/elk-ansible.tar.gz tar -zxvf elk-ansible-0.0.1.tgz cd elk-ansible
三、目标服务器配置
1. 登录中控机器,生成中控机器的ssh密钥
$ ssh-keygen -t rsa 在中控机生成公密钥文件 Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: 4e:f8:b6:c4:1f:c3:1d:2a:b1:10:ba:65:39:74:2f:08 root@lst02 The key's randomart image is: +--[ RSA 2048]----+ | | | | | E o . | | + * . | | . O S . . | | + B = o . | | . O = . | | o + o | | . . | +-----------------+
2. 在中控机中,将目标机器加到ansible-elk的hosts文件中, 并做初始化
- 文件位置 /opt/elk-ansible/hosts
- 修改hosts,将目标机器添加到【all_nodes】下
[all_nodes] 192.168.79.201
- 运行以下命令,免密配置完成
$ ansible-playbook -k playbooks/init_node.yml
四、配置HOST配置文件
1. hosts配置文件路径
/opt/elk-ansible/hosts
2. host配置文件名词解析:
参数 | 含义 |
---|---|
[all_nodes] | 参数下放置所有的服务器列表,可以配置登陆方式,默认通过sshkey免密登陆,还可以指定用户/密码/端口 |
[all_nodes:vars] | 参数下放置全局的变量 |
install_root_path | 代表程序安装目录 |
[elasticsearch] | 参数下放置需要安装es的节点,会搭建出这些节点组陈过的ES集群 |
[elasticsearch:vars] | 参数下放置es节点部署时需要的配置变量 |
data_path | 表示ES数据存放目录 |
cluster_name | 表示ES集权的名称 |
[filebeat] | 参数下放置需要安装filebeat的服务器列表,用户收集日志 |
[filebeat:vars] | 下存放安装过程的配置变量 |
kafka_topic | 如果有kafka,对应kafka的主题名称 |
filebeat_log_path | 收集日志的路径 |
[logstash] | 存放对应角色主机列表,配置使用默认 |
[kafka] | 存放对应角色主机列表,配置使用默认 |
[kafka_zookeeper] | 存放对应角色主机列表,配置使用默认 |
[kibana] | 存放对应角色主机列表,配置使用默认 |
五、两种部署场景
1、包含kafka的使用场景
各服务器角色分工
服务器 | 对应角色 |
---|---|
192.168.10.72 | ansible控制机 |
192.168.10.73 | elasticsearch、logstash、filebeat |
192.168.10.74 | elasticsearch、logstash、filebeat |
192.168.10.75 | elasticsearch、logstash、kafka、filebeat、kibana |
具体hosts配置文件样例:
[all_nodes] 192.168.10.73 # 通过sshkey免密登陆 192.168.10.74 192.168.10.75 [all_nodes:vars] install_root_path=/usr/local ############################### ElasticSearch [elasticsearch] 192.168.10.73 192.168.10.74 192.168.10.75 [elasticsearch:vars] elasticsearch_version=7.2.0 data_path=/var/lib/elasticsearch cluster_name=ELKCluster ############################### Logstash [logstash] 192.168.10.73 192.168.10.74 192.168.10.75 [logstash:vars] logstash_version=7.2.0 pipeline_workers=5 pipeline_batch_size=10 kafka_group_id=logstash_kafka # 作为kafka的消费者的group-id kafka_topic=elk-pipeline-topic # kafka中的对应的topic ############################### Kafka [kafka] # 不配置任何机器,即不带kafka场景 192.168.10.75 [kafka:vars] kafka_version=2.12-2.2.0 [kafka_zookeeper] 192.168.10.75 [kafka_zookeeper:vars] zookeeper_version=3.4.13 ############################### filebeat [filebeat] 192.168.10.73 192.168.10.74 192.168.10.75 [filebeat:vars] filebeat_version=7.2.0 kafka_topic=elk-pipeline-topic # kafka中的对应的topic filebeat_log_path=/var/log/*.log # 监视的日志 ############################### kibana [kibana] 192.168.10.75 [kibana:vars] kibana_version=7.2.0
2、不包含kafka的使用场景
各机器的角色分配
服务器 | 对应角色 |
---|---|
192.168.10.72 | ansible控制机 |
192.168.10.73 | elasticsearch、logstash、filebeat |
192.168.10.74 | elasticsearch、logstash、filebeat |
192.168.10.75 | elasticsearch、logstash、filebeat、kibana |
具体hosts配置文件样例:
[all_nodes] 192.168.10.73 # 通过sshkey免密登陆 192.168.10.74 192.168.10.75 [all_nodes:vars] install_root_path=/usr/local ############################### ElasticSearch [elasticsearch] 192.168.10.73 192.168.10.74 192.168.10.75 [elasticsearch:vars] elasticsearch_version=7.2.0 data_path=/var/lib/elasticsearch cluster_name=ELKCluster ############################### Logstash [logstash] 192.168.10.73 192.168.10.74 192.168.10.75 [logstash:vars] logstash_version=7.2.0 pipeline_workers=5 pipeline_batch_size=10 ############################### filebeat [filebeat] 192.168.10.73 192.168.10.74 192.168.10.75 [filebeat:vars] filebeat_version=7.2.0 filebeat_log_path=/var/log/*.log # 监视的日志 ############################### kibana [kibana] 192.168.10.75 [kibana:vars] kibana_version=7.2.0
六、执行部署安装
$cd /opt/elk-ansible
$bash deploy.sh 运行 bash deploy.sh部署