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 程序
安装包下载地址 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.YAML
四, 配置 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 部署
来源: https://yq.aliyun.com/articles/716425