基於 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程序

安裝包下載地址 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部署
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章