用Ansible部署ELK STACK

2021-12-25 EAWorld

本文獲得了原作者的授權,轉載本文需要註明來自EAWORLD公眾號。

作者:Daniel Berman 

譯者:張斌

想要重複部署你的ELK STACK更方便一點?在這篇帖子中,我們來看看如何通過使用Ansible來實現這一點。

通常,安裝ELK很容易。 

但是,為了開發與測試的目的,你可能會發現自己重複安裝了堆棧這一套東西。雖然安裝過程夠簡單,且不超過5分鐘,但使用一個單行解決方案來安裝和配置各組件會更好。

這就是Ansible可派上用場的地方。

Ansible可以使你自動創建、配置和管理機器。你無需再手動更新伺服器、進行配置、移動文件等,而是可以使用Ansible通過一臺控制機器為一組伺服器自動實施這樣的操作。

本文介紹如何使用Ansible 劇本在遠程伺服器上設置ELK(5.x版本)進行開發。它將帶你完成安裝Ansible的步驟,連接到目標伺服器,執行該劇本,並建立初始的日誌流水線。

讓我們開始吧!

如果你已經安裝了Ansible,那麼很好。如果沒有安裝,這裡有幾個簡短提示,幫你在計劃用於訪問伺服器的計算機上進行安裝。你需要在此計算機上安裝Python 2.x。

以我為例,我在Mac OS X上安裝了Ansible:

sudo easy_install pipbook

sudo pip install ansible

對於其他作業系統,請查看Ansible的在線文檔。

接下來,我們將確保可以連接目標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』。

由於我們已經使用Ansible建立了與伺服器的連接,因此我們可以使用Ansible ELK Playbook(https://github.com/DanielBerman/ansible-elk-playbook)來進行部署。

該劇本遵循經典的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的情況下,你最有可能希望為角色添加一些可執行任務來定義要用日誌記錄的文件。

在Ansible主機上,下載並訪問該劇本:

git clone https://github.com/DanielBerman/ansible-elk-playbook.git

cd ansible-elk-playbook

使用此命令執行該劇本:

sudo ansible-playbook site.yml

Ansibler創建了與目標主機的連接,並開始執行各種角色與任務。

整個執行的輸出應該看起來像這樣(「失敗」進程的上限應為0):

PLAY RECAP ****************************************************************

52.90.104.179 : ok=18 changed=17 unreachable=0 failed=0

如果一切都按預期工作,你所需要做的就是使用以下URL訪問Kibana(替換為你安裝ELK的伺服器IP):

http://<serverhost>:5601

打開Kibana頁面後,你仍然需要定義索引模式。

在本例中我們安裝Metricbeat進行伺服器性能監控,輸入'metricbeat- *'作為索引模式,並選擇@timestamp欄位作為時間過濾欄位名稱:

點擊創建按鈕,將看到Kibana的「Discover」選項卡顯示的數據:

我使用這本劇本來跟進和使用Elasticsearch、Logstash、Kibana和各種Beats中的最新功能。使用Ansible有一定的約束(比如YAML語法)和學習曲線,但什麼技術沒有呢?除了安裝Ansible的命令,你只需使用2-3個命令就能安裝並使其運行。

請記住,這個劇本的只是一個基本的ELK部署,也只適用於某些開發環境。為了使其適合生產,對角色的修改最有可能包括添加Logstash角色來處理日誌、添加用於代理Kibana的nginx角色,並稍稍修改Elasticsearch和Kibana配置文件以確保安全性。

我會儘快使用Ansible模板添加一些支持,幫助大家使用Filebeat把日誌輸送到Logz.io上。

歡迎反饋和PR!

Logz.io是一個基於開源ELK STACK的支持AI的日誌分析平臺,可用於監控應用程式和雲基礎設施。今天就開始免費試用它或者要求免費演示吧!

原文連結:https://logz.io/blog/elk-stack-ansible/

關於作者

丹尼爾·伯曼(Daniel Berman)是Logz.io的產品傳播者。他熱衷於日誌分析、大數據、雲計算、家庭,愛好跑步、利物浦足球俱樂部,以及寫寫關於顛覆性高科技東西的文章。在推特上@proudboffin關注他。

關於EAWorld

微服務,DevOps,元數據,企業架構原創技術分享,EAii(Enterprise Architecture Innovation Institute)企業架構創新研究院旗下官方微信公眾號。

微信號:eaworld,長按二維碼關注

8月-9月,PWorld系列技術趴還將繼續上演。目前,9月24日將在上海舉行PWorld MeetUP「微服務的編排、配置與12要素專場」已啟動報名,戳「閱讀原文」可直達報名頁面,並了解更多詳情~

PWorld軟體架構&平臺創新大會:由普元發起主辦的全國頂級技術盛會,探討「數位化時代的企業軟體變化與創新」推進中國企業在數位化時代的成功轉型,積極為CTO、CIO、架構師、技術經理、開發工程師等技術相關人員設計各項議題,演講嘉賓從企業軟體、人工智慧、區塊鏈、雲計算、大數據、業務流程、移動開發等熱門話題中,分享他們的技術見解和最佳實踐。同時,PWorld在企業級技術會議裡獨開「交互式體驗」先河、賦予參會者最大程度尊重,帶給現場以及線上的聽眾以全新的參會體驗。

相關焦點

  • 自動化運維高手解讀puppet、Ansible、Foreman、Saltstack
    puppet, ansible ,saltstack的區別和聯繫?有一種病症叫做「選擇障礙症」,實際上工程師更容易被這個病症纏繞。但是,實際上沒那麼複雜,抓鬮就行了。目前主流的自動化運維工具有puppet、ansible、saltstack,實際上每一個工具都基本上能夠完成你的運維任務,也都是久經考驗的。
  • 【ansible運維部落】---zs創始人張鑫談Ansible曲折歷程
    關於幾大工具的選擇zstack,分別用puppet,salt,ansible來實現過自動部署。
  • Kubernetes實戰之部署ELK Stack收集平臺日誌
    方式 優點 缺點方案一:Node上部署一個日誌收集程序 每個Node僅需部署一個日誌收集程序,資源消耗少,對應用無侵入 應用程式日誌需要寫到標準輸出和標準錯誤輸出,不支持多行日誌方案二:Pod中附加專用日誌收集的容器 低耦合
  • Docker怎麼部署ELK?
    集成鏡像,地址:https://hub.docker.com/r/sebp/elk/tags[root@centos-mq ~]# docker pull sebp/elk:660註:660為elk版本2、啟動[root@centos-mq ~]# echo
  • ELK Stack 企業級日誌平臺
    為什麼用ELK:業務需求,市場的需求開發與產品的需求,運維的一種責任大數據也是當前的一個前景[elk@module-kzkt-02 logs]$ cd /opt/elasticsearch-5.3.1/bin/[elk@module-kzkt-02 bin]$ .
  • ansible使用小結:ansible的安裝
    一、簡介Ansible 是一個配置管理和應用部署工具,功能類似於目前業界的配置管理工具 Chef,Puppet,Saltstack。Ansible 是通過 Python 語言開發。Ansible 平臺由 Michael DeHaan 創建,他同時也是知名軟體 Cobbler 與 Func 的作者。Ansible 的第一個版本發布於 2012 年 2 月。
  • 3套視頻,搞定Lucene、Es、Elk stack
    點擊關注公眾號【Java 充電社】,幫你挑選更多高質量的學習視頻,每天帶你充電!
  • Ansible使用及YAML語法介紹
    這個工具的目標有這麼幾項:自動化部署APP;自動化管理配置項;自動化的持續交付;自動化的(AWS)雲服務管理。Ansible 上手十分快,用 Ad-Hoc 可以應付簡單的管理任務,麻煩點的也可以定義 Playbook 文 件來搞定。
  • 我的ELK搭建筆記(阿里雲上部署)
    >[root@iZ2ze1filcblgjr9dcoxioZ ~]# hostnameelk-test[root@iZ2ze1filcblgjr9dcoxioZ ~]# hostname# elk-test[root@elk-test ~]# 1.1.4 創建應用帳號(必選)以應用帳號身份啟動
  • Ansible 架構與工作原理
    ssh、zeromq 三種方式連接被管理端,默認使用基於ssh的連接---這部分對應基本架構圖中的連接模塊;2、可以按應用類型等方式進行Host Inventory(主機群)分類,管理節點通過各類模塊實現相應的操作---單個模塊,單條命令的批量執行,我們可以稱之為ad-hoc;3、管理節點可以通過playbooks 實現多個task的集合實現一類功能,如web服務的安裝部署
  • 初探 ELK - 每天5分鐘玩轉 Docker 容器技術(89)
    本節將討論如何用 ELK 這組黃金搭檔來監控 Docker 容器的日誌。日誌處理流程下圖展示了 Docker 部署環境下典型的 ELK 日誌處理流程:Logstash 負責從各個 Docker 容器中提取日誌,Logstash將日誌轉發到 Elasticsearch 進行索引和保存,Kibana 分析和可視化數據。下面開始實踐這套流程。
  • 使用 Ansible 管理 MySQL 複製
    Ansible 是一個配置管理和應用部署工具,功能類似於目前業界的配置管理工具 Chef,Puppet,Saltstack。
  • 使用原子主機(Atomic Host)、Ansible 和 Cockpit 部署容器
    sudo dnf -y install ansible首先,我們需要在原子主機上運行 cockpit 容器。在你的機器上從https://github.com/trishnaguha/fedora-cloud-ansible 下載它的原始碼。
  • Ansible 運維管理平臺部署、維護與調優常見問題及技巧
    本文分享了在Ansible部署、維護、調優中常見的一些難點解決辦法和技巧,幫助大家更快的掌握使用方法。內容來自社區探討,供大家參考。1、Ansible運維管理平臺部署都可以部署在哪些系統上?對系統配置有哪些具體要求?
  • Ansible 起步指南
    你可以將代碼部署到任意數量的伺服器上,配置網絡設備或在基礎架構中自動執行任何操作。前置要求假設你使用 Mac 或 Linux 作為你的工作站,Ubuntu Trusty 作為你的伺服器,並有一些安裝軟體包的經驗。此外,你的計算機上將需要以下軟體。
  • ansible 部署 k8s
    目錄1、安裝 ansible2、安裝 k8s3、檢查環境4、檢查附加組件4.1、檢查 coredns4.2、檢查 dashboard4.3、檢查 traefik4.4、檢查 metrics4.5、檢查 EFK5、驗證集群6、重啟所有組件
  • Jenkins+Ansible+GitLab持續交付平臺搭建-第3篇
    Ansible安裝配置管理Ansible優勢和應用場景Ansible:開源部署工具開發語言:Python特點:ssh
  • 一文帶你了解Ansible
    2.2 Ansible簡單使用ansible與saltstack中的salt-ssh很相似,都喜歡yaml文件充當主機清單文件。Ad-hoc有點類似於linux上的一句話shell,通常情況下,ad-hoc用的還是很多的。畢竟,運維管理中,還是有許多的臨時操作,沒必要每次都寫一個playbook去執行吧!其實,歸根結底,ad-hoc就是使用ansible的單個模塊,操作主機實現單個功能。
  • 乾貨分享 | 利用 Ansible 自動化部署 Veeam VAS v10
    Ansible 自動化部署環境準備環境準備3. 連通性測試,win-ping4.利用 Ansible 自動化部署 Veeam Backup & Replication 9.5U4b https://www.jianshu.com/p/879f30c9c4652.1 配置 Ansible 的 Inventory文件,定義hosts此處為了簡便,我們使用 Ansible 默認的 inventory 文件,/etc/ansible/hosts
  • Ansible:99%的運維人比掌握技能!
    它用Python寫成,類似於saltstack和Puppet,但是有一個不同和優點是我們不需要在節點中安裝任何客戶端。它使用SSH來和節點進行通信。Ansible基於 Python paramiko 開發,分布式,無需客戶端,輕量級,配置語法使用 YMAL 及 Jinja2模板語言,更強的遠程命令執行操作。