search
尋找貓咪~QQ 地點 桃園市桃園區 Taoyuan , Taoyuan

用 ElasticSearch + Metricbeat 監控伺服器狀態 - Soul & Shell Blog

如何建構 Log Service 與 System Monitor

ElasticSearch Metricbeat

ElasticSearch 是一個全文搜尋引擎,這個特性用在 Log Service 領域變得相當方便。前幾年 ELK (ElasticSearch + Logstash + Kabana) 相當火熱,ElasticSearch 針對營運、Log 監控與分析市場也做了很多努力,陸續發表 Beats Project 相關產品。 完整的 Beats 包含了以下模組:

ElasticSearch Beats Family

上述每一個模組都有不同的特性與使用情境,但我們今天先介紹 Metricbeat 這個模組,其他有空再研究與介紹了。

用 ElasticSearch Metricbeat 創建伺服器監控服務

我們這裡會用到 ElasticSearch 與 Kibana,安裝可以參考以前寫的 ElasticSearch 安裝文章,由於 ElasticSearch 改版迅速,如果要進行安裝建議可以使用最新版本。開始以前我們假設已經安裝好 ElasticSearch + Kibana,並且 9200, 5461 Port 已經可以正常連線。這樣的 Log Monitor 組合常用的也有 GrafanaPrometheus 等等架構,我認為選擇自己的適合的架構即可,不要同時維護太多同質性的服務會比較輕鬆。

安裝 Metricbeat Service

這裡我們先來伺服器 (VM) 部署 System Metricbeat Agent,我們這裡使用的版本是 6.6,在 Kibana 已經有內建的部署說明,進入 Kibana 後點選左上角的圖示,接著選取「Add metric data」,如下:

ElasticSearch-Add-Beat-Data

進入以後可以看到已經有很多常用的監控模組可以套用,Metricbeat 只是 Beats Family 的其中一個 Project,另外也可以使用 Filebeat 來讀取不同服務的 Log Format 傳送到 ElasticSearch 進行分析與監控。

ElasticSearch-Metricbeat-List

這裡我們選擇「System metrics」模組

ElasticSearch-Beats-Metricbeat-System

進入以後會看到一個完整的引導安裝步驟,其實比較需要注意的就是版本編號,一般來說玩 ElasticSearch 要盡量使用一制性的版本。這樣才能確保各個模組資料傳遞與整合遇到的問題最少,不同版本的 ElasticSearch Project 在整合上非常容易遇到問題,要更加小心。System Metricbeat Install 如下:

ElasticSearch-System-Intro

以 Ubuntu 為例子,先登入需要被監控的 Server 來安裝 Metricbeat Service。首先先下載 Deb 安裝檔 (如果是 7.6.0 以上的版本也可以加入 Spurce List 用 APT 直接安裝)

下載 Metricbeat 網址 https://www.elastic.co/guide/en/beats/libbeat/current/beats-reference.html

我在 ElasticSearch 6.6.0 版本安裝 Metricbeat 流程如下:

1
2
curl -L -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-6.6.0-amd64.deb
sudo dpkg -i metricbeat-6.6.0-amd64.deb

安裝完成以後需要先編輯 metricbeat 服務設定檔

vim /etc/metricbeat/metricbeat.yml

這支 Yaml 檔案主要我們需要編輯有關 ElasticSearch 與 Kibana 連線資訊,比如連線有沒有用到 HTTPS 或登入帳號密碼等等,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
output.elasticsearch:
  # Array of hosts to connect to.
  hosts: ["your_elasticsearch_host:9200"]
  # Enabled ilm (beta) to use index lifecycle management instead daily indices.
  #ilm.enabled: false
 
  # Optional protocol and basic auth credentials.
  #protocol: "https"
  #username: "elastic"
  #password: "changeme"
 
setup.kibana:
 
  # Kibana Host
  # Scheme and port can be left out and will be set to the default (http and 5601)
  # In case you specify and additional path, the scheme is required: http://localhost:5601/path
  # IPv6 addresses should always be defined as: https://[2001:db8::1]:5601
  host: "your_kibana_host:5601"

修改好以後先儲存,再來就是啟用 System Module 如下:

1
sudo metricbeat modules enable system

如果要修改或調整 System Metricbeat 可以編輯 system.yml

/etc/metricbeat/modules.d/system.yml

如果是第一次安裝,Metricbeat 就需要在 Kibana 建立對應的 Index template 與 Dashboard,如下:

1
sudo metricbeat setup

這個動作執行需要一點時間,而且要確保執行的機器與 Kibana 是可以連線的,如果已經執行過 Dashboard 的安裝,就可以略過這個步驟。建立好以後我們可以在 Kibana 看到很多新建立的 Dashboard:

ElasticSearch-Dashboard

像我的環境可能要同時監控不同 IaaS Cloud 上面的 VM,安裝過 Dashboard 以後,其他機器就只需要確認 ElasticSearch 可以連線收資料即可。

設定好以後啟動服務,就會開始自動傳送資料到 ElasticSearch 囉,如下:

1
sudo service metricbeat start

ElasticSearch 搜集資料以後,接著我們從 Kibana Dashboard 就可以進行 System Monitor,提供顯示的資訊如下:

ElasticSearch-System-Dashboard

除了 System Metricbeat 還可以做些什麼?

這一次研究 ElasticSearch 來實現 Monitor 主要是服務營運需求,平時我們已經透過 ElasticSearch 搜集各種層級的 Log Data,當系統發生問題時,如果可以同時搭配 Service Log 與 System Status 會更方便我們定位錯誤,這幾年我已經放棄那些有歷史眼淚的服務監控系統 (像是 Cacti, MRTG 等等老屁股工具)。此外,Beats 除了 System Metric 還提供很多很多模組,像是 MySQL, Container, Kubernates 等等都是常使用的服務,另外搭配 Filebeat 來搜集服務 Log 也是非常好用的,例如 MySql 壓力的監控、SlowLog 等等都可以一起放進來監測,相當方便。

 

平價童鞋首選



熱門推薦

本文由 toright 提供 原文連結

寵物協尋 相信 終究能找到回家的路
寫了7763篇文章,獲得2次喜歡
留言回覆
回覆
精彩推薦