Linux中國

使用 Graylog 和 Prometheus 監視 Kubernetes 集群

正如你所了解的,Kubernetes 不是一件東西 —— 它由主控節點、工作節點、網路連接、配置管理等等組成。同樣,Graylog 是一個配角(apache2、mongodb、等等),Prometheus 也一樣(telegraf、grafana 等等)。在部署中連接這些點看起來似乎有些讓人恐懼,但是使用合適的工具將不會那麼困難。

我將使用 conjure-upCanonical 版本的 Kubernetes (CDK) 去探索 Kubernetes。我發現 conjure-up 介面對部署大型軟體很有幫助,但是我知道一些人可能不喜歡 GUI、TUI 以及其它用戶界面。對於這些人,我將用命令行再去部署一遍。

在開始之前需要注意的一點是,Graylog 和 Prometheus 是部署在 Kubernetes 外側而不是集群上。像 Kubernetes 儀錶盤和 Heapster 是運行的集群的非常好的信息來源,但是我的目標是為日誌/指標提供一個分析機制,而不管集群運行與否。

開始探索

如果你的系統上沒有 conjure-up,首先要做的第一件事情是,請先安裝它,在 Linux 上,這很簡單:

sudo snap install conjure-up --classic

對於 macOS 用戶也提供了 brew 包:

brew install conjure-up

你需要最新的 2.5.2 版,它的好處是添加了 CDK spell,因此,如果你的系統上已經安裝了舊的版本,請使用 sudo snap refresh conjure-up 或者 brew update && brew upgrade conjure-up 去更新它。

安裝完成後,運行它:

conjure-up

你將發現有一個 spell 列表。選擇 CDK 然後按下回車。

這個時候,你將看到 CDK spell 可用的附加組件。我們感興趣的是 Graylog 和 Prometheus,因此選擇這兩個,然後點擊 「Continue」。

它將引導你選擇各種雲,以決定你的集群部署的地方。之後,你將看到一些部署的後續步驟,接下來是回顧屏幕,讓你再次確認部署內容:

除了典型的 K8s 相關的應用程序(etcd、flannel、load-balancer、master 以及 workers)之外,你將看到我們選擇的日誌和指標相關的額外應用程序。

Graylog 棧包含如下:

  • apache2:graylog web 界面的反向代理
  • elasticsearch:日誌使用的文檔資料庫
  • filebeat:從 K8s master/workers 轉發日誌到 graylog
  • graylog:為日誌收集器提供一個 api,以及提供一個日誌分析界面
  • mongodb:保存 graylog 元數據的資料庫

Prometheus 棧包含如下:

  • grafana:指標相關的儀錶板的 web 界面
  • prometheus:指標收集器以及時序資料庫
  • telegraf:發送主機的指標到 prometheus 中

你可以在回顧屏幕上微調部署,但是默認組件是必選 的。點擊 「Deploy all Remaining Applications」 繼續。

部署工作將花費一些時間,它將部署你的機器和配置你的雲。完成後,conjure-up 將展示一個摘要屏幕,它包含一些鏈接,你可以用你的終端去瀏覽各種感興趣的內容:

瀏覽日誌

現在,Graylog 已經部署和配置完成,我們可以看一下採集到的一些數據。默認情況下,filebeat 應用程序將從 Kubernetes 的 master 和 worker 中轉發系統日誌( /var/log/*.log )和容器日誌(/var/log/containers/*.log)到 graylog 中。

記住如下的 apache2 的地址和 graylog 的 admin 密碼:

juju status --format yaml apache2/0 | grep public-address
 public-address: <your-apache2-ip>
juju run-action --wait graylog/0 show-admin-password
 admin-password: <your-graylog-password>

在瀏覽器中輸入 http://<your-apache2-ip> ,然後以管理員用戶名(admin)和密碼()登入。

注意: 如果這個界面不可用,請等待大約 5 分鐘時間,以便於配置的反向代理生效。

登入後,頂部的 「Sources」 選項卡可以看到從 K8s 的 master 和 workers 中收集日誌的概述:

通過點擊 「System / Inputs」 選項卡深入這些日誌,選擇 「Show received messages」 查看 filebeat 的輸入:

在這裡,你可以應用各種過濾或者設置 Graylog 儀錶板去幫助識別大多數比較重要的事件。查看 Graylog Dashboard 文檔,可以了解如何定製你的視圖的詳細資料。

瀏覽指標

我們的部署通過 grafana 儀錶板提供了兩種類型的指標:系統指標,包括像 K8s master 和 worker 的 CPU /內存/磁碟使用情況,以及集群指標,包括像從 K8s cAdvisor 端點上收集的容器級指標。

記住如下的 grafana 的地址和 admin 密碼:

juju status --format yaml grafana/0 | grep public-address
 public-address: <your-grafana-ip>
juju run-action --wait grafana/0 get-admin-password
 password: <your-grafana-password>

在瀏覽器中輸入 http://<your-grafana-ip>:3000,輸入管理員用戶(admin)和密碼()登入。成功登入後,點擊 「Home」 下拉框,選取 「Kubernetes Metrics (via Prometheus)」 去查看集群指標儀錶板:

我們也可以通過下拉框切換到 「Node Metrics (via Telegraf) 」 去查看 K8s 主機的系統指標。

另一種方法

正如在文章開始的介紹中提到的,我喜歡用 conjure-up 的嚮導去完成像 Kubernetes 這種複雜軟體的部署。現在,我們來看一下 conjure-up 的另一種方法,你可能希望去看到實現相同結果的一些命令行的方法。還有其它的可能已經部署了前面的 CDK,並想去擴展使用上述的 Graylog/Prometheus 組件。不管什麼原因你既然看到這了,既來之則安之,繼續向下看吧。

支持 conjure-up 的工具是 Juju。CDK spell 所做的一切,都可以使用 juju 命令行來完成。我們來看一下,如何一步步完成這些工作。

從 Scratch 中啟動

如果你使用的是 Linux,安裝 Juju 很簡單,命令如下:

sudo snap install juju --classic

對於 macOS,Juju 也可以從 brew 中安裝:

brew install juju

現在為你選擇的雲配置一個控制器。你或許會被提示請求一個憑據(用戶名密碼):

juju bootstrap

我們接下來需要基於 CDK 捆綁部署:

juju deploy canonical-kubernetes

從 CDK 開始

使用我們部署的 Kubernetes 集群,我們需要去添加 Graylog 和 Prometheus 所需要的全部應用程序:

## deploy graylog-related applications
juju deploy xenial/apache2
juju deploy xenial/elasticsearch
juju deploy xenial/filebeat
juju deploy xenial/graylog
juju deploy xenial/mongodb
## deploy prometheus-related applications
juju deploy xenial/grafana
juju deploy xenial/prometheus
juju deploy xenial/telegraf

現在軟體已經部署完畢,將它們連接到一起,以便於它們之間可以相互通訊:

## relate graylog applications
juju relate apache2:reverseproxy graylog:website
juju relate graylog:elasticsearch elasticsearch:client
juju relate graylog:mongodb mongodb:database
juju relate filebeat:beats-host kubernetes-master:juju-info
juju relate filebeat:beats-host kubernetes-worker:jujuu-info
## relate prometheus applications
juju relate prometheus:grafana-source grafana:grafana-source
juju relate telegraf:prometheus-client prometheus:target
juju relate kubernetes-master:juju-info telegraf:juju-info
juju relate kubernetes-worker:juju-info telegraf:juju-info

這個時候,所有的應用程序已經可以相互之間進行通訊了,但是我們還需要多做一點配置(比如,配置 apache2 反向代理、告訴 prometheus 如何從 K8s 中取數、導入到 grafana 儀錶板等等):

## configure graylog applications
juju config apache2 enable_modules="headers proxy_html proxy_http"
juju config apache2 vhost_http_template="$(base64 <vhost-tmpl>)"
juju config elasticsearch firewall_enabled="false"
juju config filebeat 
 logpath="/var/log/*.log /var/log/containers/*.log"
juju config filebeat logstash_hosts="<graylog-ip>:5044"
juju config graylog elasticsearch_cluster_name="<es-cluster>"
## configure prometheus applications
juju config prometheus scrape-jobs="<scraper-yaml>"
juju run-action --wait grafana/0 import-dashboard 
 dashboard="$(base64 <dashboard-json>)"

以上的步驟需要根據你的部署來指定一些值。你可以用與 conjure-up 相同的方法得到這些:

  • <vhost-tmpl>: 從 github 獲取我們的示例 模板
  • <graylog-ip>juju run --unit graylog/0 &apos;unit-get private-address&apos;
  • <es-cluster>juju config elasticsearch cluster-name
  • <scraper-yaml>: 從 github 獲取我們的示例 scraper[K8S_PASSWORD][20][K8S_API_ENDPOINT][21] substitute 的正確值
  • <dashboard-json>: 從 github 獲取我們的 主機k8s 儀錶板

最後,發布 apache2 和 grafana 應用程序,以便於可以通過它們的 web 界面訪問:

## expose relevant endpoints
juju expose apache2
juju expose grafana

現在我們已經完成了所有的部署、配置、和發布工作,你可以使用與上面的瀏覽日誌瀏覽指標部分相同的方法去查看它們。

總結

我的目標是向你展示如何去部署一個 Kubernetes 集群,很方便地去監視它的日誌和指標。無論你是喜歡嚮導的方式還是命令行的方式,我希望你清楚地看到部署一個監視系統並不複雜。關鍵是要搞清楚所有部分是如何工作的,並將它們連接到一起工作,通過斷開/修復/重複的方式,直到它們每一個都能正常工作。

這裡有一些像 conjure-up 和 Juju 一樣非常好的工具。充分發揮這個生態系統貢獻者的專長讓管理大型軟體變得更容易。從一套可靠的應用程序開始,按需定製,然後投入到工作中!

大膽去嘗試吧,然後告訴我你用的如何。你可以在 Freenode IRC 的 #conjure-up#juju 中找到像我這樣的愛好者。感謝閱讀!

關於作者

Kevin 在 2014 年加入 Canonical 公司,他專註於複雜軟體建模。他在 Juju 大型軟體團隊中找到了自己的位置,他的任務是將大數據和機器學習應用程序轉化成可重複的(可靠的)解決方案。

via: https://insights.ubuntu.com/2018/01/16/monitor-your-kubernetes-cluster/

作者:Kevin Monroe 譯者:qhwdw 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國