使用用Ansible重復部署ELK STACK
本文介紹如何使用Ansible 劇本在遠程服務器上設置ELK(5.x版本)進行開發。它將帶你完成安裝Ansible的步驟,連接到目標服務器,執行該劇本,并建立初始的日志流水線。
讓我們開始吧!
1.安裝Ansible
如果你已經安裝了Ansible,那么很好。如果沒有安裝,這里有幾個簡短提示,幫你在計劃用于訪問服務器的計算機上進行安裝。你需要在此計算機上安裝Python 2.x。
以我為例,我在Mac OS X上安裝了Ansible:
sudo easy_install pipbook
sudo pip install ansible
對于其他操作系統,請查看Ansible的在線文檔。
2.連接到你的服務器
接下來,我們將確保可以連接目標VM,我們要在以AWS上運行的Ubuntu 16.04實例上安裝ELK,以本教程為例。
首先,你需要編輯Ansible主機文件(/etc/ansible/hosts)。在這個文件中,你通常會列出你希望使用Ansible來管理的服務器與主機組。我將定義一個服務器組,并列出其服務器IP與用戶名:
[elkservers]
52.90.104.179 ansible_user=ubuntu
Ansible使用多種默認設置運行。要覆蓋這些設置,你可以編輯/etc/ansible/ansible.cfg文件。
我將使用此選項進入我計劃用來訪問遠程服務器的.pem文件位置:
[defaults]
private_key_file=/path/to/keyfile.pem
一切都設置好了。要測試連接,請使用以下命令ping服務器。
ansible elkservers -m ping
你應該看到以下結果:
{
“changed”: false,
“ping”: “pong”
}
提示:默認情況下,Ansible使用Python 2解釋器。意思是說,如果目標VM正運行Python 3及以上版本,則你需要在命令中添加‘-e ‘ansible_python_interpreter=/usr/bin/python3’。
2.執行ELK劇本
由于我們已經使用Ansible建立了與服務器的連接,因此我們可以使用Ansible ELK Playbook(https://github.com/DanielBerman/ansible-elk-playbook)來進行部署。
3.劇本概述
該劇本遵循經典的Ansible劇本結構:
site.yml定義了我們要連接的服務器、sudo權限假設和我們希望執行的角色。將各類事項列在這里,Ansible將通過此文件中設置的順序來執行角色。
目前該劇本的配置是搭建ELK STACK和Metricbeat,以便進行服務器監控。要使用Filebeat替代日志文件,只需切換此文件中的角色。
Java角色在目標服務器上安裝Java 8。
Elasticsearch角色則搭建Elasticsearch apt repo、安裝Elasticsearch,并將一些配置應用于’elasticsearch.yml’文件。如果要更改安裝的ELK版本,請在Elasticsearch repo任務中編輯repo URL。
這里要注意的是,為了簡單起見,這個文件中的’network.host’指令設置為’0.0.0.0’以進行遠程訪問。如果你打算在生產中執行此劇本,請勿使用此設置,而應該綁定到本地主機(localhost)。
Kibana角色用來安裝與配置Kibana。同樣的,“server.host”設置為“0.0.0.0”,你需要將其設置為不同的IP。
Filebeat和Metricbeat角色使用其默認設置安裝并啟動這些日志收集器(shipper)。在Metricbeat的情況下,這足以開始監控你的服務器。在Filebeat的情況下,你最有可能希望為角色添加一些可執行任務來定義要用日志記錄的文件。
4.我們執行吧
在Ansible主機上,下載并訪問該劇本:
git clone https://github.com/DanielBerman/ansible-elk-playbook.git
cd ansible-elk-playbook
使用此命令執行該劇本:
sudo ansible-playbook site.yml
Ansibler創建了與目標主機的連接,并開始執行各種角色與任務。
非常好我支持^.^
(0) 0%
不好我反對
(0) 0%