Apache Pinot實時應用程序性能監視
介紹
在當今快節奏的軟件開發環境中,確保最佳應用程序性能至關重要。監視實時指標,例如響應時間,錯誤率和資源利用率,可以幫助保持高可用性並提供無縫的用戶體驗。 Apache Pinot是一種開源OLAP數據存儲,具有處理實時數據攝入和低延遲查詢的能力格拉法納。
學習目標
- 了解如何使用Apache Pinot來構建一個實時監視系統,以在分佈式環境中跟踪應用程序性能指標。
- 了解如何在Python中編寫和執行SQL查詢以檢索和分析Apache Pinot的實時性能指標。
- 在設置Apache Pinot,定義模式和配置表以實時從KAFKA實時攝入和存儲應用程序指標數據方面獲得動手實踐經驗。
- 了解如何將Apache Pinot與Grafana或Apache Superset等可視化工具集成在一起。
本文作為數據科學博客馬拉鬆的一部分發表。
目錄
- 用例:實時申請性能監控
- 設置用於實時數據流的Kafka
- 安裝Java
- 下載kafka
- 提取二進製文件
- 通過命令重置配置文件
- 開始卡夫卡
- 創建Kafka主題
- 向卡夫卡發布數據
- 定義Pinot模式和表配置
- 模式定義
- 表配置
- 部署模式和表配置
- 查詢數據以監視KPI
- 了解查詢結果
- 可視化數據:將黑皮諾與grafana集成
- 高級考慮
- 常見問題
用例:實時申請性能監控
讓我們探討一個場景,我們將重新管理分佈式應用程序,為多個地區的數百萬用戶提供服務。為了保持最佳性能,我們需要監視各種性能指標:
- 響應時間- 我們的應用程序響應用戶請求的速度。
- 錯誤率:應用程序中錯誤的頻率。
- CPU和內存使用率:您的應用程序所消耗的資源。
部署Apache Pinot來創建一個實時監視系統,該系統攝入,存儲和查詢性能數據,從而快速檢測並對問題響應。
系統體系結構
-
數據源:
- 指標和日誌是從不同的應用程序服務中收集的。
- 這些日誌被流到Apache Kafka進行實時攝入。
-
數據攝入:
- Apache Pinot直接從Kafka主題攝入這些數據,從而以最小的延遲提供了實時處理。
- Pinot以柱狀格式存儲數據,優化用於快速查詢和有效存儲。
-
查詢:
- Pinot充當查詢引擎,使您可以針對實時數據運行複雜的查詢,從而深入了解應用程序性能。
- Pinot的分佈式體系結構可確保快速執行查詢,即使數據的量增加也是如此。
-
可視化:
- 可以使用Grafana或Apache Superset等工具實時可視化Pinot查詢的結果,並提供用於監視KPI的動態儀表板。
- 可視化是使數據可操作,使您可以實時監視KPI,設置警報並響應問題的關鍵。
設置用於實時數據流的Kafka
第一步是設置Apache Kafka來處理應用程序日誌和指標的實時流。 Kafka是一個分佈式流媒體平台,可讓我們實時發布並訂閱記錄流。我們應用程序中的每個微服務都可以向Kafka主題產生日誌消息或指標,Pinot將稍後消費
安裝Java
要運行Kafka,我們將在系統上安裝Java-
sudo apt install openjdk-11-jre-headless -y
驗證Java版本
Java - version
下載kafka
WGET https://downloads.apache.org/kafka/3.4.0/kafka_2.13-3.4.0.tgz
提取二進制物
sudo mkdir/usr/local/kafka-server sudo tar xzf kafka_2.13-3.4.0.tgz
另外,我們需要將提取的文件移至以下給定的文件夾 -
sudo mv kafka_2.13-3.4.0/*/usr/local/kafka-server
通過命令重置配置文件
sudo systemctl守護程序 - 重載
開始卡夫卡
假設已經安裝了Kafka和Zookeeper,可以使用以下命令開始使用Kafka:
#啟動Zookeeper zookeeper-server-start.sh config/zookeeper.properties #啟動kafka服務器 kafka-server-start.sh config/server.properties
創建Kafka主題
接下來,為我們的應用程序指標創建一個KAFKA主題。主題是數據流在Kafka中的渠道。這裡,我們創建了一個名為App-Metrics的主題,具有3個分區,複製因子為1。分區數量通過確定存在的數據副本來控制冗餘的級別。
kafka-topics.sh - 創建 - 主題應用程序 - 啟動 - 啟動式服務器本地主機:9092-分區3-複製因子1
向卡夫卡發布數據
我們的應用程序可以實時將指標發佈到Kafka主題。此腳本每秒都模擬將應用程序指標發送到Kafka主題。指標包括服務名稱,端點,狀態代碼,響應時間,CPU使用,內存使用情況和時間戳等詳細信息。
來自contruent_kafka進口生產商 進口JSON 進口時間 #KAFKA生產者配置 conf = {'bootstrap.servers':“ localhost:9092”} 生產者=生產者(** conf) #功能將消息發送到Kafka def send_metrics(): 指標= { “ service_name”:“ auth-service”, “端點”:“/登錄”, “ status_code”:200, “ response_time_ms”:123.45, “ cpu_usage”:55.2, “ memory_usage”:1024.7, “時間戳”:int(time.time() * 1000) } producer..produce('app-metrics',value = json.dumps(量表)) producer.flush() #模擬每2秒鐘發送一次指標 而真: send_metrics() 時間。
定義Pinot模式和表配置
使用Kafka設置和流數據,下一步是將Apache Pinot配置為攝入並存儲此數據。這涉及定義模式並在Pinot中創建表。
模式定義
該模式定義了Pinot攝入的數據的結構。它指定將存儲的尺寸(屬性)和指標(可測量的數量)以及每個字段的數據類型。創建一個名為“ App_performance_ms_schema.json”的JSON文件,其中包含以下內容:
{ “ schemaname”:“ app_performance_ms”, “ DimensionFieldSpecs”:[[ {“ name”:“ service”,“ datatype”:“ string”},, {“ name”:“ endpoint”,“ datatype”:“ string”},, {“ name”:“ s_code”,“ datatype”:“ int”} ],, “ metricfieldspecs”:[ {“名稱”:“ response_time”,“ datatype”:“ double”},, {“ name”:“ cpu_usage”,“ datatype”:“ double”},, {“ name”:“ memory_usage”,“ datatype”:“ double”} ],, “ DateTimeFieldSpecs”:[ { “名稱”:“時間戳”, “ datatype”:“ long”, “格式”:“ 1:毫秒:時代”, “粒度”:“ 1:毫秒” } 這是給出的 }
表配置
表配置文件告訴Pinot如何管理數據,包括Kafka的數據攝入,索引策略和保留策略的詳細信息。
創建另一個名為“ app_performance_metrics_table.json”的JSON文件,其中包括以下內容:
{ “ tablename”:“ appperformancemetrics”, “ tabletype”:“實時”, “ segmentsconfig”:{ “ timecolumnname”:“時間戳”, “ schemaname”:“ appmetrics”, “複製”:“ 1” },, “ TableIndexConfig”:{ “ loadMode”:“ mmap”, “ StreamConfigs”:{ “ streamType”:“ kafka”, “ stream.kafka.topic.name”:“ app_performance_metrics”, “ stream.kafka.broker.list”:“ localhost:9092”, “ stream.kafka.consumer.type”:“ lowlevel” } } }
該配置指定該表將實時從App_performance_metrics Kafka主題中攝入數據。它使用時間戳列作為主要時間列,並配置索引以支持有效的查詢。
部署模式和表配置
架構和表配置準備就緒後,我們可以使用以下命令將它們部署到Pinot:
bin/pinot -admin.sh addschema -schemafile app_performance_ms_schema.json -exec -exec bin/pinot -admin.sh addtable -tableconfigfile app_performance_metrics_metrics_table.json -schemafile app_performance_ms_schema.json-exec-exec
部署後,Apache Pinot將開始從Kafka主題App-Metrics攝入數據並使其可用於查詢。
查詢數據以監視KPI
隨著Pinot攝入數據,您現在可以開始查詢它以監視關鍵性能指標(KPI)。 Pinot支持類似SQL的查詢,使我們能夠快速檢索和分析數據。這是一個Python腳本,在過去五分鐘內查詢每種服務的平均響應時間和錯誤率:
導入請求 進口JSON #皮諾經紀人URL pinot_broker_url =“ http:// localhost:8099/query/sql” #SQL查詢以獲取平均響應時間和錯誤率 查詢=“” 選擇service_name, avg(wendmes_time_ms)為avg_response_time, sum(status_code> = 400,然後1 else 0結束) / count(*)為error_rate 來自Appperformancemetrics 其中時間戳> = ago('pt5m') 組由Service_name組成 ”“” #執行查詢 響應= requests.post(pinot_broker_url,data =查詢,headers = {“ content-type”:“ application/json”}) 如果響應。 STATUS_CODE== 200: 結果=響應.json() 打印(json.dumps(結果,縮進= 4)) 別的: print(“查詢與狀態代碼失敗:”,response.status_code)
該腳本將SQL查詢發送到Pinot,以計算過去五分鐘內每個服務的平均響應時間和錯誤率。這些指標對於理解應用程序的實時性能至關重要。
了解查詢結果
- 平均響應時間:提供有關每個服務響應請求的速度的洞察力。較高的值可能表明性能瓶頸。
- 錯誤率:顯示導致錯誤的請求的比例(狀態代碼> = 400)。高錯誤率可能會給服務帶來問題。
可視化數據:將黑皮諾與grafana集成
Grafana是一種流行的開源可視化工具,可支持與Apache Pinot集成。通過將Grafana連接到Pinot,我們可以創建實時儀表板,以顯示響應時間,錯誤率和資源使用情況等指標。示例儀表板可以包括以下信息 -
- 響應時間頻率:線圖,區域顯示過去24小時內每種服務的平均響應時間。
- 錯誤率:堆疊的條形圖突出顯示具有高錯誤率的服務,可幫助您快速確定有問題的區域。
- 會議用法:顯示CPU和內存使用趨勢跨不同服務的區域圖表。
這種可視化設置提供了對應用程序的健康和績效的全面視圖,使我們能夠不斷監視KPI,並在出現問題時採取主動措施。
高級考慮
隨著我們與Apache Pinot的實時監控系統的擴展,有幾個高級方面可以管理其有效性:
-
數據保留和歸檔:
- 挑戰:隨著您的應用程序產生越來越多的數據,有效管理存儲對於避免成本膨脹和性能放緩至關重要。
- 解決方案:實施數據保留策略有助於通過歸檔或刪除不再需要立即分析所需的舊記錄來管理數據量。 Apache Pinot通過其細分管理和數據保留機制自動化這些過程。
-
縮放皮諾:
- 挑戰:數據和查詢請求的量不斷增長,可能會使單個Pinot實例或集群設置限制。
- 解決方案:Apache Pinot支持水平縮放,使您能夠通過添加更多節點來擴展群集。這樣可以確保系統可以有效地處理增加的數據攝入和查詢負載,從而隨著應用程序的增長而保持性能。
-
警報:
- 挑戰:在沒有自動警報的情況下檢測和響應性能問題可能是具有挑戰性的,可能會延遲解決問題。
- 解決方案:集成警報系統以接收通知,當指標超過預定義的閾值時。您可以使用諸如Grafana或Prometheus之類的工具來設置警報,以確保您可以及時告知您應用程序性能中的任何異常或問題。
-
性能優化:
- 挑戰:隨著數據集和復雜的查詢,保持有效的查詢性能可能會變得具有挑戰性。
- 解決方案:不斷優化您的架構設計,索引策略和查詢模式。利用Apache Pinot的工具來監視和解決性能瓶頸。採用分區和碎片技術來更好地分配整個集群的數據和查詢。
結論
有效的實時監控對於確保現代應用的性能和可靠性至關重要。 Apache Pinot為實時數據處理和查詢提供了強大的解決方案,使其非常適合全面監視系統。通過實施討論的策略並考慮諸如縮放和安全性之類的高級主題,您可以構建一個可靠,可擴展的監視系統,以幫助您在潛在的績效問題領先,從而為用戶提供平穩的體驗。
關鍵要點
- Apache Pinot擅長處理實時數據攝入並提供低延遲查詢性能,從而使其成為監視應用程序性能指標的強大工具。它與Kafka這樣的流媒體平台很好地集成,可以立即分析響應時間,錯誤率和資源利用率等指標。
- Kafka流式應用程序日誌和指標,然後攝入Apache Pinot。配置Kafka主題並將其鏈接到Pinot可以連續處理和查詢性能數據,從而確保最新的見解。
- 適當定義圖式和Apache Pinot中的表對於有效的數據管理至關重要。該架構概述了數據結構和類型,而表配置控制數據攝入和索引,支持有效的實時分析。
- Apache Pinot支持類似SQL的查詢,以進行深入數據分析。當與諸如Grafana或Apache Superset之類的可視化工具一起使用時,它可以創建動態儀表板,這些儀表板可為應用程序性能提供實時可見性,從而有助於迅速檢測和解決問題。
常見問題
問1。是什麼使Apache Pinot適合實時應用程序性能監控?答:Apache Pinot用於低延遲查詢,使其非常適合實時見解至關重要的方案。它能夠從Kafka等流源中獲取數據並處理大規模,高通量數據集的能力,從而使其可以提供有關應用程序性能指標的最新分析。
Q 2。 Apache Pinot如何從Kafka處理實時數據攝入?答:Apache Pinot設計為通過直接消費Kafka主題的消息來攝取實時數據。它支持低級和高級Kafka消費者,使Pinot可以以最小的延遲處理和存儲數據,從而可以立即查詢。
Q 3。使用Apache Pinot設置實時監視系統所需的關鍵組件是什麼?答:要使用Apache Pinot設置實時監視系統,您需要:
數據源:應用到Kafka的應用程序日誌和指標。
Apache Pinot:用於實時數據攝入和查詢。
架構和表配置:Pinot中的定義用於存儲和索引指標數據。
可視化工具:用於創建實時儀表板的工具等工具
答:是的,Apache Pinot支持與Apache Pulsar和AWS Kinesis等其他數據流平台集成。儘管本文重點介紹了KAFKA,但使用不同的流平台時,相同的原理適用,儘管配置詳細信息會有所不同。
本文所示的媒體不由Analytics Vidhya擁有,並由作者酌情使用。
以上是Apache Pinot實時應用程序性能監視的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Meta的Llama 3.2:多模式和移動AI的飛躍 Meta最近公佈了Llama 3.2,這是AI的重大進步,具有強大的視覺功能和針對移動設備優化的輕量級文本模型。 以成功為基礎

嘿,編碼忍者!您當天計劃哪些與編碼有關的任務?在您進一步研究此博客之前,我希望您考慮所有與編碼相關的困境,這是將其列出的。 完畢? - 讓&#8217

本週的AI景觀:進步,道德考慮和監管辯論的旋風。 OpenAI,Google,Meta和Microsoft等主要參與者已經釋放了一系列更新,從開創性的新車型到LE的關鍵轉變

Shopify首席執行官TobiLütke最近的備忘錄大膽地宣布AI對每位員工的基本期望是公司內部的重大文化轉變。 這不是短暫的趨勢。這是整合到P中的新操作範式

介紹 想像一下,穿過美術館,周圍是生動的繪畫和雕塑。現在,如果您可以向每一部分提出一個問題並獲得有意義的答案,該怎麼辦?您可能會問:“您在講什麼故事?

介紹 Openai已根據備受期待的“草莓”建築發布了其新模型。這種稱為O1的創新模型增強了推理能力,使其可以通過問題進行思考

SQL的Alter表語句:動態地將列添加到數據庫 在數據管理中,SQL的適應性至關重要。 需要即時調整數據庫結構嗎? Alter表語句是您的解決方案。本指南的詳細信息添加了Colu

對於那些可能是我專欄新手的人,我廣泛探討了AI的最新進展,包括體現AI,AI推理,AI中的高科技突破,及時的工程,AI培訓,AI,AI RE RE等主題
