容器雲環境,你們如何監控應用執行情況? ---JFrog 雲原生應用監控實踐

JFrog傑蛙科技發表於2020-07-20

引言

     自從2018年從Cloud Native Computing Foundation(CNCF)出現以來,您可能已經在使用K8作業系統,隨著容器雲技術的發展以及落地,提高了企業運維的效率和質量,並且降低了企業運營成本,但同時帶來的問題是運維的複雜度和難度,舉個      例子 ?:由於容器的生命週期短,隨時可能飄移到其他物理資源上執行,因此日誌的採集和執行的監控很難像傳統方式登入到伺服器上檢視,而運營團隊需要了解有價值的資料來進行問題定位以及運營資料分析。

     為了更廣泛地提供這種可觀察性,我們需要提供滿足雲原生環境下的監控能力。

     JFrog 透過使用Elasticsearch和Kibana套件,以及Prometheus 和Grafana套件來監控Artifactory 製品庫以及Xray 漏洞掃描工具的執行情況,下面我們一起了解JFrog 如何在雲原生環境進行應用運維。


日誌分析

     Easticsearch是一個分散式且可擴充套件的搜尋引擎,可用於搜尋全文,結構化文字和分析。它通常用於搜尋大量資料以及搜尋不同型別的文件。

     Kibana是Elasticsearch最常用的視覺化和儀表板。Kibana使您能夠透過構建視覺化和儀表板的Web UI探索Elasticsearch日誌資料。 

     下面我們將向您展示如何利用同類最佳的開源日誌分析技術:Elastic,Fluentd和Kibana為運營團隊提供100%免費的開源日誌分析平臺

 

     首先使用Fluentd,我們提供了與開源資料收集器Fluentd 的JFrog日誌分析整合配置,該整合可隨JFrog Platform部署的每個產品例項安裝。Fluentd在JFrog平臺中為每個產品執行日誌輸入,欄位提取和記錄轉換,從而將該資料的輸出標準化為JSON。

     由於所有日誌資料均以這種通用格式提供,因此Fluentd將透過Fluentd的可插入體系結構將其傳送到您的Elasticsearch分析工具。

 

安裝FluentD

     安裝FluentD,每個JPD(JFrog Platfrom Deployment)節點都需要安裝Fluentd日誌記錄代理。該代理將負責為新的日誌行新增各種JPD日誌檔案以解析到欄位中,應用相應的記錄轉換,然後傳送到Fluentd的相關輸出外掛。

 

例如,對於執行Red Hat UBI Linux的節點,td-agent必須安裝Fluentd代理。對於基於root的程式包管理器(需要root訪問):

 

$ curl -L | SH

 

配置FluentD

     根據我們是剛剛完成基於根的安裝還是基於非根的安裝,可能需要將Fluentd配置檔案放置在不同的位置。

預設情況下,對於軟體包管理器根安裝,該td-agent.conf檔案位於中/etc/td-agent/。

$ ls -al /etc/td-agent/td-agent.conf 

-rw-r--r-- 1根root 8017 May 11 18:09 /etc/td-agent/td-agent.conf

 

     對於非root的安裝,我們可以將td-agent.conf檔案儲存在我們具有寫許可權的任何位置。執行td-agent時,可以使用該-c標記將fluentd指向該檔案位置。

 

     該配置檔案必須替換為從 儲存庫派生的配置檔案。

 

在此儲存庫中,彈性資料夾包含配置檔案模板。使用與節點中執行的JFrog應用程式匹配的模板:

 

以Artifactory 為例子,新增採集日誌配置如下:

    我們將需要使用match指令更新此配置檔案,該指令指定指向我們的Elasticsearch例項的主機和埠:

#ELASTIC OUTPUT

  @type elasticsearch

  @id elasticsearch

  host elasticsearch

  port 9200

  index_name unified-artifactory

  include_tag_key true

  type_name fluentd

  logstash_format false

#END ELASTIC OUTPUT

 

    此處的主機是我們的內部K8s叢集主機。如果以其他方式配置Elasticsearch和Kibana,也可以將其設定為外部IP地址。

 

執行FluentD

     現在我們已經有了新的配置檔案,我們可以在登入到容器後在容器上啟動td-agent作為服務:

$ systemctl 啟動 td-agent

$ td-agent -c td-agent.conf

     這將啟動Fluentd日誌採集代理,該代理將跟蹤JPD日誌並將其全部傳送到Elasticsearch。

     您必須有執行Artifactory和Xray的所有Kubernetes Pod重複執行此過程,當然也可以新增Side Car 容器到Artifactory和Xray 元件中。

 

使用Elasticsearch和Kibana

     如果尚未 安裝和配置Elasticsearch以及 設定Kibana,我們提供了一些必要的引導和對應的YAML檔案,用於 。

     透過Kibana,在每個Artifactory和Xray Pod中安裝Fluentd並執行td-agent的情況下,您可以在 Kibana索引管理頁面中看到生成的 索引,如下圖:

 

     同時JFrog整合提供了一個NDJSON檔案,該檔案定義了索引模式和視覺化配置。可以透過“ Kibana儲存的物件”頁面匯入該檔案。單擊“匯入”按鈕匯入該檔案。

 

    匯入後,您應該能夠看到索引模式,視覺化效果,儀表板,小部件,如下圖:

 

     在索引模式中,您可以看到我們有2個JFrog Product相關Scripted Field。

     這是因為我們要將request_content_length和response_content_length轉換為GB。您可以在“  部分中檢視正在生成的日誌。

 

     最後,讓我們檢視 ,該 現在包含在資料小部件(Wedgets)中顯示的 ,以使您可以實時觀察JFrog Unified Platform的日誌資料,包含以下資料,如下圖:

l   日誌卷,可以按型別過濾

l   服務錯誤

l   HTTP響應碼

l   存取儲存庫

l   以GB為單位的資料傳輸,用於上傳/下載

l   上傳/下載的top 10的IP

l   透過使用者名稱稽核操作

l   IP和使用者名稱拒絕的操作和登入

l   按使用者名稱的上傳操作

 

應用監控

     雲原生環境本身會提供基礎的資源監控,但是缺少足夠的應用內部監控用於更好的進行運營決策,為了增強您監控能力,我們使用Promethus和Grafana套件進行監控,並提供了相應的整合配置手冊: . 

     透過此整合,可以收集JFrog Platform日誌資料並轉化為相應的監控指標(Promethus metrics),以使用視覺化工具Grafana獲得應用內視。

 

監控原理以及資料流如下圖:

安裝FluentD

     總體安裝過程與上一章節一致,和日誌分析不同的是,我們如何不改變業務邏輯的同時暴露指標服務,以便使用監控工具快速分析。

 

     這裡我們需要安裝Prometheus FluentD外掛,該外掛將我們的日誌記錄轉換為Prometheus的HTTP指標介面(Metrics)。

配置FluentD

     FluentD使用文字配置檔案進行配置,該檔案包含輸入源,過濾器和輸出鏈。Prometheus FluentD外掛提供用於配置Prometheus指標的語法。在我們的案例中,我們將Artifactory和Xray日誌事件轉換為Prometheus的指標。我們已經在這裡設定了Artifactory和Xray FluentD配置示例。

 

選擇適當的 檔案,然後啟動td-agent。

l   fluent.conf.rt – Artifactory版本7

l   fluent.conf.rt6 – Artifactory版本6

l   fluent.conf.xray – Xray

 

然後,td-agent在埠24321 / metrics上公開HTTP度量介面。您可以轉到該URL,然後看到類似以下內容的內容。

 

Prometheus

     對於我們的環境,我們使用 安裝了 。如果您尚未安裝Prometheus,請 ,瞭解如何使用操作員安裝Prometheus的說明。使用Prometheus Kubernetes Operator,我們可以配置ServiceMonitors,這使Prometheus可以自動檢測服務的新指標介面。否則,可以按照 描述使用YAML配置檔案。以下ServiceMonitor資源配置可以使用Kubernetes 選擇器檢測任何新的指標介面。

 

     該選擇器將使我們的指標服務與標籤應用程式匹配:artifactory-ha. 該服務公開了我們在上面的FluentD Prometheus外掛中設定的HTTP指標(Metrics)介面,配置如下圖:

 

apiVersion: monitoring.coreos.com/v1

kind: ServiceMonitor

metadata:

 name: servicemonitor-artifactory-ha-primary

 labels:

   metrics: jfrog

spec:

 selector:

   matchLabels:

     app: artifactory-ha-primary

 endpoints:

 - port: metrics

   interval: 15s

 

apiVersion: v1

kind: Service

metadata:

 labels:

   app: artifactory-ha-member

 name: artifactory-member-ha-metrics

spec:

 ports:

 - name: metrics

   port: 24231

   protocol: TCP

 selector:

   role : unified-artifactory-ha-member

 

 

     我們可以在Prometheus Target列表中進一步驗證對度量標準介面服務的自動檢測。這使得Prometheus的配置變得快速簡便,特別是對於可能具有數百臺伺服器的大型系統而言。如下圖:

Grafana

     現在Prometheus收集了指標,我們現在可以使用Prometheus的視覺化層Grafana對其進行視覺化。使用Prometheus的PromQL查詢語言,我們可以為儀表板設定查詢。例如,以下PromQL提供了請求次數最多的倉庫。

topk(10,(repo)的和(jfrog_rt_req {repo!=“”}))

並可以為我們提供以下條形儀表小部件。

 

     我們提供的FluentD配置包含了多個 ,您可以查詢和建立自己的儀表板小部件。一個很好的起點是使用 。此示例儀表板提供以下圖形小部件,包含如下指標報表:

l   上傳資料傳輸

l   下載資料傳輸

l   熱門下載IP

l   熱門上傳IP

l   請求量最大的工件

l   請求最多的倉庫

l   資料最多的倉庫

l   稽核使用者

l   Artifactory 5XX狀態碼

l   Artifactory 錯誤

l   Xray 5XX狀態碼

l   Xray錯誤

l   拒絕登入

l   按IP拒絕操作

l   按使用者拒絕的操作

 

如下面三個圖例,展示了Grafana dashboard監控Artifactory 製品庫應用內視。

 

1.       按時間、按IP下載上傳資料量趨勢/GB(6小時內)

2.       按倉庫,按使用者下載檔案次數(6小時內)

 


 

總結

     在雲原生環境以及DevOps背景下,我們不光要對基礎資源(IAAS層),中介軟體(PAAS層)進行監控,同時更應該注意應用層監控,這樣才能為開發提供更好的運維甚至是運營支撐。

今天和大家一起介紹了JFrog 內部對應用的監控方案以及案例

 

     有關更多詳細資訊,請檢視 ,您可以在其中找到更多配置選項和指標資訊。

 

    歡迎觀看JFrog傑蛙每週二線上課堂,點選報名:

   

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69954434/viewspace-2705610/,如需轉載,請註明出處,否則將追究法律責任。

相關文章