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

2020-12-16 JFrog傑蛙科技

引言

自從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 https://toolbelt.treasuredata.com/sh/install-redhat-td-agent3.sh | 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日誌分析Github存儲庫派生的配置文件。

在此存儲庫中,彈性文件夾包含配置文件模板。使用與節點中運行的JFrog應用程式匹配的模板:

Artifactory 7.xXray 3.xArtifactory 6.x

以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文件,用於將Elasticsearch和Kibana部署到Kubernetes。

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

同時JFrog集成提供了一個NDJSON文件,該文件定義了索引模式和可視化配置。可以通過「 Kibana保存的對象」頁面導入該文件。單擊「導入」按鈕導入該文件。

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

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

這是因為我們要將request_content_length和response_content_length轉換為GB。您可以在「 Discover」部分中查看正在生成的日誌。

最後,讓我們查看儀錶板,該儀錶板現在包含在數據小部件(Wedgets)中顯示的信息,以使您可以實時觀察JFrog Unified Platform的日誌數據,包含以下數據,如下圖:

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

l 服務錯誤

l HTTP響應碼

l 存取儲存庫

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

l 上傳/下載的top 10的IP

l 通過用戶名審核操作

l IP和用戶名拒絕的操作和登錄

l 按用戶名的上傳操作

應用監控

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

通過此集成,可以收集JFrog Platform日誌數據並轉化為相應的監控指標(Promethus metrics),以使用可視化工具Grafana獲得應用內視。

監控原理以及數據流如下圖:

安裝FluentD

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

這裡我們需要安裝Prometheus FluentD插件,該插件將我們的日誌記錄轉換為Prometheus的HTTP指標接口(Metrics)。

配置FluentD

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

選擇適當的fluent.conf.*文件,然後啟動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 Kubernetes Operator安裝了Prometheus。如果您尚未安裝Prometheus,請點擊此處,了解如何使用操作員安裝Prometheus的說明。使用Prometheus Kubernetes Operator,我們可以配置ServiceMonitors,這使Prometheus可以自動檢測服務的新指標接口。否則,可以按照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配置包含了多個Artifactory和Xray監控指標,您可以查詢和創建自己的儀錶板小部件。一個很好的起點是使用我們的示例儀錶板。此示例儀錶板提供以下圖形小部件,包含如下指標報表:

上傳數據傳輸

下載數據傳輸

熱門下載IP

熱門上傳IP

請求量最大的工件

請求最多的倉庫

數據最多的倉庫

審核用戶

Artifactory 5XX狀態碼

Artifactory 錯誤

Xray 5XX狀態碼

Xray錯誤

拒絕登錄

按IP拒絕操作

按用戶拒絕的操作

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

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

2. 按倉庫,按用戶下載文件次數(6小時內)

總結

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

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

有關更多詳細信息,請查看JFrog Log Analytics GitHub,您可以在其中找到更多配置選項和指標信息。

歡迎觀看JFrog傑蛙每周二在線課堂,點擊報名:

https://www.bagevent.com/event/6643470

相關焦點

  • 雲原生大熱 KubeSphere容器平臺助推落地應用
    根據云原生計算基金會(Cloud Native Computing Foundation)的定義,雲原生技術有利於各組織在公有雲、私有雲和混合雲等新型動態環境中,構建和運行可彈性擴展的應用。雲原生的代表技術包括容器、服務網格、微服務、不可變基礎實施和聲明式API。雲原生的優勢在於可以很好地構建容錯性好,易於管理、便於觀察的鬆耦合系統。
  • Kubernetes和雲原生技術實際生產環境情況匯總
    尤其是遇到了哪些障礙,在容器化、高並發、微服務的場景下,傳統的應用以及基礎設施面臨何種狀態?是無縫遷移,如絲滑般柔順?還是九九八十一難,歷經艱難險阻?各位看官,接下來就由小編為您介紹這屆 KubeCon + CloudNativeCon 所帶來,用戶、發行廠商、生態夥伴等最為關心的實際生產環境的案例研究以及基於雲原生的應用開發。
  • 雲原生微服務應用平臺來啦!
    近年來,隨著技術的不斷革新,PaaS平臺逐漸應用於金融、遊戲、政務、地產等多個行業中。藉助PaaS平臺,不同架構的企業實現了輕鬆上雲、高效運行。但是,PaaS平臺也存在著一個不可忽視的問題,那就是客制化困難。如何最大程度地提高解決問題尤其是複雜問題的能力?如何高效的應對企業的業務變化?這一直是各大廠商試圖突破的難題。
  • DeepFlow與雲網絡監控的發展
    本文以雲杉網絡DeepFlow®近幾年在客戶落地的方案實踐為主線,聚焦混合雲、容器環境下的需求演進,介紹在新環境下雲監控的方案價值以及發展思考。  在雲原生環境下企業客戶主要面臨的挑戰主要體現在網絡分層以及彈性業務充分體現了監控保障的難度,由此可以將挑戰歸納為三點:對象數量大、波動性強以及關係複雜。
  • DeepFlow®與雲網絡監控的發展
    本文以雲杉網絡DeepFlow®近幾年在客戶落地的方案實踐為主線,聚焦混合雲、容器環境下的需求演進,介紹在新環境下雲監控的方案價值以及發展思考。在雲原生環境下企業客戶主要面臨的挑戰主要體現在網絡分層以及彈性業務充分體現了監控保障的難度,由此可以將挑戰歸納為三點:對象數量大、波動性強以及關係複雜。
  • 應用網易輕舟,德邦快遞核心系統入選雲原生應用十大優秀案例
    雲原生應用改造包括微服務、容器雲的建設,涉及註冊中心、控制中心、API網關、配置中心、APM鏈路監控、容器、CI/CD、自動測試等一系列技術,德邦快遞與網易合作,採用成熟的網易輕舟雲原生平臺,建設統一的雲原生服務治理平臺,提供企業級統一技術棧與基礎設施的平臺,低成本、快速解決傳統業務系統在數位化轉型升級中面臨的問題。
  • 雲原生初學者入門必讀
    容器是繼虛擬機之後更高層次的抽象,在這層抽象中,整個應用程式的每個組件被單獨打包成一個個獨立的單元,這個單元就是所謂的容器。通過這種方式,可以將代碼和應用服務從底層架構中分離出來,實現了完全的可移植性(在任何作業系統或環境上運行應用的能力)。所以在上面的例子中,Ubuntu 作業系統就是一個單元(容器)。MySQL 資料庫是另一個容器,Vue 環境和隨之而來的庫也是一個容器。
  • Kubernetes集群的監控報警策略最佳實踐
    第一部分介紹了Kubernetes和監控工具的基礎知識;這部分涵蓋了Kubernetes報警的最佳實踐,第三部分將介紹Kubernetes服務發現與故障排除,最後一部分是監控Kubernetes的實際使用案例。監控是每個優質基礎設施的基礎,是達到可靠性層次的基礎。監控有助於減少對突發事件的響應時間,實現對系統問題的檢測、故障排除和調試。在基礎設施高度動態的雲時代,監控也是容量規劃的基礎。
  • 演講實錄|基於雲原生的敏態微服務全生命周期支撐平臺
    敏態架構下各種各樣的組件提高了學習成本,如何快速上手,快速開發,對企業來說是一個難點。第二個技術難題是調用鏈路追蹤難。他表示,現在落地雲原生的過程中其實還會和傳統應用並存的狀態,傳統應用與微服務應用之間的調用鏈路如何跨架構追蹤,也是一個常見的難題。第三個技術難題是新老架構的通信難。新老應用處於不同的架構體系下,如何讓他們之間不能孤立要保持聯繫,這是通信難題。
  • 雲原生發展趨勢淺談
    第二,雲應用的編排與管理流程,包括了應用編排與調度、服務發現治理、遠程調用、API網關以及Service Mesh。第三,監控與可觀測性,這部分所強調的是雲上應用如何進行監控、日誌收集、Tracing以及在雲上如何進行破壞性測試。第四,雲原生的底層技術,比如容器運行時,雲原生存儲技術和雲原生網絡技術等。
  • 聚焦業務應用 KubeSphere幫助企業一步跨入雲原生
    再以基礎設施為例,以前是大機或者傳統數據中心,再是集中化IDC數據中心,後來有了雲計算,而現在則是雲原生。CNCF基金會對雲原生給出的定義頗具代表性:「雲原生技術有利於各組織在公有雲、私有雲和混合雲等新型動態環境中,構建和運行可彈性擴展的應用,雲原生的代表技術包括容器、服務網格、微服務、不可變基礎實施和聲明式API。
  • 雲原生,為何而生?雲計算時代命題之終極解決方
    無論是 Google、微軟、IBM這些網際網路巨頭,還是國內阿里巴巴、騰訊、百度等大廠都爭相把雲原生技術項目作為其技術重心。什麼是雲原生?雲原生計算基金會CNCF給出的定義是:容器化、微服務、容器可以動態調度。一句話解釋什麼是雲原生應用,就是為了運行在雲計算環境中而開發的軟體應用。
  • 微眾銀行案例|容器化實踐在金融行業落地面臨的問題和挑戰
    本文整理自微眾銀行容器負責人陳廣鎮和李煥 在 Techo 開發者大會雲原生專題的分享內容——微眾容器化實踐。本文主要和大家介紹微眾的容器化實踐,具體分為三個部分:裡程碑、實踐之路,以及未來的規劃。2019年2月,微眾系統接入TKE服務,用於快速構建開發測試環境,我們大部分業務都需要獨立的測試環境,利用騰訊雲強大的伸縮能力可以減少我們很多的環境維護工作。2019年6月,平臺優化了核心的調度邏輯,支持了多業務多DCN共享資源池,提升了私有雲資源交付的效率。
  • 雲原生背景下的運維價值思考與實踐
    切雲的服務大量採用了雲原生的應用與技術架構,作為公司第一批面臨雲原生環境的業務運維,深切感受到雲原生給運維工作帶來的機遇與挑戰,運維模式的轉型已經迫在眉睫,此篇文章最大的價值在於將我們的轉型思路、方法與實踐,提供給後面更多面臨同樣挑戰的團隊借鑑與參考。下面我將從業務場景、運維轉型之道、雲端收益等幾個方面來跟大家一起來探討。
  • 使用Prometheus、Grafana監控Artifactory實踐
    在企業的系統平臺上運行artifactory可能每天有上百萬個製品在不斷流轉,隨著研發團隊不斷擴大,用戶慢慢增多,並發量也相應的逐漸增大,在保證高可用的同時,我們對artifactory所在系統及應用服務進行監控會顯得尤其重要。那麼如何實現系統及應用的監控呢?
  • 雲原生時代到來 KubeSphere容器平臺服務企業落地雲原生
    原標題:雲原生時代到來 KubeSphere容器平臺服務企業落地雲原生   「軟體定義是不可扭轉的趨勢,通過這種方式可以更好地做資源
  • 《管見》向萬紅:ECP平臺Ready雲原生
    《管見》第二期 雲原生是構建和運行應用程式的方法,是一套技術體系和方法論,因其在設計階段就考慮到應用未來會運行在雲環境上,可以充分利用雲平臺的彈性擴展以應用為中心,提供簡化部署、快速擴容、監控和運維等應用生命周期管理工作。遠光ECP集成了TCC和Seata分布式事務框架,大幅度降低了分布式事務的開發難度,同時提供集中配置、服務註冊、服務發現、服務路由、服務治理和服務監控等微服務管理和監控能力。
  • KubeSphere容器平臺:面向雲原生時代的趁手工具
    CNCF基金會給出的雲原生的簡單定義是,雲原生技術有利於各組織在公有雲、私有雲和混合雲等新型動態環境中,構建和運行可彈性擴展的應用。從功能性的角度來看,雲原生是解決客戶在企業業務落地時適應數位化、網際網路化趨勢時,一個基礎的解決架構。
  • 雲原生最好的時代 KubeSphere為企業落地雲原生提供容器支持
    「雲原生是解決客戶在企業業務落地,適應數位化、網際網路化趨勢時,一個很落地的解決架構」,KubeSphere容器平臺產品負責人於爽表示,「這是雲原生最好的時代,也是不得不雲原生時代。」雲原生時代到來雲原生(Cloud Native),按照CNCF基金會的定義,是雲原生技術有利於各組織在公有雲、私有雲和混合雲等新型動態環境中,構建和運行可彈性擴展的應用。雲原生是解決客戶在企業業務落地,適應數位化、網際網路化趨勢時,一個基礎的解決架構。雲原生雖然只有三個字,但其包含的代表技術包括容器、服務網格、微服務、不可變基礎設施和聲明式API等。
  • iPaaS在雲原生的思考和探索
    雲原生從雲原生業界比較認可的定義(「雲原生技術有利於各組織在公有雲、私有雲和混合雲等新型動態環境中,構建和運行可彈性擴展的應用。雲原生的代表技術包括容器、服務網格、微服務、不可變基礎設施和聲明式API。這些技術能夠構建容錯性好、易於管理和可觀測的鬆耦合系統。