目次
導入
学習目標
目次
ユースケース:リアルタイムアプリケーションパフォーマンス監視
システムアーキテクチャ
リアルタイムデータストリーミングのためにKafkaをセットアップします
Javaをインストールします
Javaバージョンを確認します
Kafkaのダウンロード
バイナリを抽出します
コマンドによって構成ファイルをリセットします
カフカを開始
Kafkaトピックの作成
Kafkaへのデータの公開
ピノスキーマとテーブル構成の定義
スキーマ定義
テーブル構成
スキーマとテーブル構成の展開
KPIを監視するためのデータのクエリ
クエリの結果を理解する
データの視覚化:ピノとグラファナの統合
高度な考慮事項
結論
キーテイクアウト
よくある質問
ホームページ テクノロジー周辺機器 AI Apache Pinotによるリアルタイムアプリのパフォーマンス監視

Apache Pinotによるリアルタイムアプリのパフォーマンス監視

Apr 13, 2025 am 11:40 AM

導入

今日のペースの速いソフトウェア開発環境では、最適なアプリケーションのパフォーマンスが重要です。応答時間、エラーレート、リソース利用などのリアルタイムメトリックを監視することで、高可用性を維持し、シームレスなユーザーエクスペリエンスを提供することができます。オープンソースのOLAPデータストアであるApache Pinotは、リアルタイムのデータ摂取と低遅延クエリを処理する機能を提供し、スケールでのアプリケーションパフォーマンスを監視するのに適したソリューションになります。この記事では、Apache Pinotを使用してリアルタイム監視システムを実装する方法を探ります。グラファナ。

Apache Pinotによるリアルタイムアプリのパフォーマンス監視

学習目標

  • Apache Pinotを使用して、分散環境でアプリケーションのパフォーマンスメトリックを追跡するためのリアルタイム監視システムを構築する方法を学びます。
  • PythonでSQLクエリを書き込み、実行する方法を学び、Apache Pinotのリアルタイムパフォーマンスメトリックを取得および分析します。
  • Apache Pinotのセットアップ、スキーマの定義、およびアプリケーションメトリックデータをKafkaからリアルタイムで摂取および保存するためのテーブルの構成における実践的なエクスペリエンスを獲得します。
  • Apache PinotをGrafanaやApache Supersetなどの視覚化ツールと統合する方法を理解してください。

この記事は、データサイエンスブログソンの一部として公開されました

目次

  • ユースケース:リアルタイムアプリケーションパフォーマンス監視
  • リアルタイムデータストリーミングのためにKafkaをセットアップします
    • Javaをインストールします
    • Kafkaのダウンロード
    • バイナリを抽出します
    • コマンドによって構成ファイルをリセットします
    • カフカを開始
  • Kafkaトピックの作成
    • Kafkaへのデータの公開
  • ピノスキーマとテーブル構成の定義
    • スキーマ定義
    • テーブル構成
  • スキーマとテーブル構成の展開
  • KPIを監視するためのデータのクエリ
    • クエリの結果を理解する
  • データの視覚化:ピノとグラファナの統合
  • 高度な考慮事項
  • よくある質問

ユースケース:リアルタイムアプリケーションパフォーマンス監視

複数の地域で何百万人ものユーザーにサービスを提供する分散アプリケーションを管理するシナリオを調べましょう。最適なパフォーマンスを維持するには、さまざまなパフォーマンスメトリックを監視する必要があります。

  • 応答時間- アプリケーションがユーザーリクエストにどれだけ早く応答するか。
  • エラー率:アプリケーションのエラーの頻度。
  • CPUとメモリの使用量:アプリケーションが消費しているリソース。

Apache Pinotを展開して、パフォーマンスデータを摂取、保存、クエリするリアルタイム監視システムを作成し、問題に対する迅速な検出と応答を可能にします。

Apache Pinotによるリアルタイムアプリのパフォーマンス監視

システムアーキテクチャ

  • データソース:
    • メトリックとログは、さまざまなアプリケーションサービスから収集されます。
    • これらのログは、リアルタイムの摂取のためにApache Kafkaにストリーミングされます。
  • データ摂取:
    • Apache Pinotは、このデータをKafkaのトピックから直接摂取し、最小限の遅延でリアルタイム処理を提供します。
    • Pinotは、高速クエリと効率的なストレージ用に最適化された柱状形式でデータを保存します。
  • クエリ:
    • Pinotはクエリエンジンとして機能し、リアルタイムデータに対して複雑なクエリを実行してアプリケーションのパフォーマンスに関する洞察を得ることができます。
    • Pinotの分散アーキテクチャにより、データの量が増加しても、クエリが迅速に実行されるようになります。
  • 視覚化:
    • Pinotクエリの結果は、GrafanaやApache Supersetなどのツールを使用してリアルタイムで視覚化でき、KPIを監視するための動的なダッシュボードを提供します。
    • 視覚化は、データを実行可能にするための鍵であり、KPIを監視し、アラートを設定し、リアルタイムで問題に応答できるようにします。

リアルタイムデータストリーミングのためにKafkaをセットアップします

最初のステップは、アプリケーションのログとメトリックのリアルタイムストリーミングを処理するようにApache Kafkaをセットアップすることです。 Kafkaは、レコードのストリームをリアルタイムで公開および購読できる分散ストリーミングプラットフォームです。アプリケーションの各マイクロサービスは、Kafkaのトピックにログメッセージまたはメトリックを作成できます。

Javaをインストールします

Kafkaを実行するには、システムにJavaをインストールします -

sudo apt install openjdk-11-jre-headless -y
ログイン後にコピー

Apache Pinotによるリアルタイムアプリのパフォーマンス監視

Javaバージョンを確認します

Java  - バージョン
ログイン後にコピー

Apache Pinotによるリアルタイムアプリのパフォーマンス監視

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
ログイン後にコピー

Apache Pinotによるリアルタイムアプリのパフォーマンス監視

コマンドによって構成ファイルをリセットします

sudo systemctl daemon-reload
ログイン後にコピー

カフカを開始

KafkaとZookeeperがすでにインストールされていると仮定すると、Kafkaは以下のコマンドを使用して開始できます。

 #Zookeeperを開始します
Zookeeper-Server-start.sh config/zookeeper.properties

#Kafkaサーバーを開始します
kafka-server-start.sh config/server.properties
ログイン後にコピー

Apache Pinotによるリアルタイムアプリのパフォーマンス監視

Kafkaトピックの作成

次に、アプリケーションメトリックのKafkaトピックの作成。トピックは、データがKafkaで流れるチャネルです。ここでは、3つのパーティションと1の複製係数を備えたアプリメトリクスというトピックを作成しました。パーティションの数はKafkaブローカー全体でデータを分散し、複製係数は存在するデータの数を決定することで冗長性のレベルを制御します。

 kafka-topics.sh-create  - トピックアプリメトリック - ブートストラップサーバーローカルホスト:9092  - パーティション3  -  replication-factor 1
ログイン後にコピー

Kafkaへのデータの公開

当社のアプリケーションは、Kafkaトピックにメトリックをリアルタイムで公開できます。このスクリプトは、毎秒Kafkaトピックにアプリケーションメトリックを送信することをシミュレートできます。メトリックには、サービス名、エンドポイント、ステータスコード、応答時間、CPU使用、メモリ使用量、タイムスタンプなどの詳細が含まれます。

 Confluent_kafkaインポートプロデューサーから
JSONをインポートします
インポート時間

#Kafkaプロデューサーの構成
conf = {'bootstrap.servers': "localhost:9092"}
プロデューサー=プロデューサー(** conf)

#kafkaにメッセージを送信する機能
def send_metrics():
    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(metrics))
    producer.flush()

#メトリックを2秒ごとにシミュレーションします
本当です:
    send_metrics()
    time.sleep(2)
ログイン後にコピー

ピノスキーマとテーブル構成の定義

Kafkaがデータを設定してストリーミングすると、次のステップはApache 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」:[
    {"name": "response_time"、 "dataType": "double"}、
    {"name": "cpu_usage"、 "dataType": "double"}、
    {"name": "memory_usage"、 "datatype": "double"}
  ]、、
  「DateTimeFieldSpecs」:[
    {
      「名前」:「タイムスタンプ」、
      「データ型」:「長い」、
      「フォーマット」: "1:ミリ秒:エポック"、
      「粒度」:「1:ミリ秒」
    }
  ]
}
ログイン後にコピー

テーブル構成

テーブル構成ファイルは、Kafkaからのデータ摂取の詳細、インデックス作成戦略、保持ポリシーなど、データの管理方法をPinotに伝えます。

次のコンテンツを使用して、「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
bin/pinot-admin.sh addtable -tableconfigfile app_performance_metrics_table.json -schemafile app_performance_ms_schema.json -exec
ログイン後にコピー

展開後、Apache PinotはKafka Topic App-Metricsからのデータの摂取を開始し、クエリに利用できるようにします。

KPIを監視するためのデータのクエリ

Pinotがデータを摂取すると、キーパフォーマンスインジケーター(KPI)を監視するためにクエリを開始できるようになりました。 PinotはSQLのようなクエリをサポートし、データを迅速に取得および分析することができます。これは、過去5分間の各サービスの平均応答時間とエラー率を照会するPythonスクリプトです。

リクエストをインポートします
JSONをインポートします

#Pinot Broker URL
pinot_broker_url = "http:// localhost:8099/query/sql"

#平均応答時間とエラー率を取得するためのSQLクエリ
query = "" "
service_nameを選択します。 
       avg_response_timeとしてのavg(response_time_ms)、
       sum(satuste_code> = 400の場合はケース1 else 0 end) / count(*)as error_rate
appperformancemetricsから 
WHERE TIMESTAMP> = AGO( 'pt5m') 
service_nameによるグループ
"" "

#クエリを実行します
response = requests.post(pinot_broker_url、data = query、headers = {"content-type": "application/json"})

response.status_code == 200の場合:
    result = response.json()
    print(json.dumps(result、indent = 4))
それ以外:
    print( "クエリはステータスコードで失敗しました:"、respons.status_code)
ログイン後にコピー

Apache Pinotによるリアルタイムアプリのパフォーマンス監視

このスクリプトは、SQLクエリをPinotに送信して、過去5分間の各サービスの平均応答時間とエラー率を計算します。これらのメトリックは、アプリケーションのリアルタイムパフォーマンスを理解するために重要です。

クエリの結果を理解する

  • 平均応答時間:各サービスがリクエストにどれだけ速く応答しているかについての洞察を提供します。値が高いと、パフォーマンスのボトルネックを示している可能性があります。
  • エラー率:エラー(ステータスコード> = 400)をもたらしたリクエストの割合が表示されます。エラー率が高いと、サービスの問題を示す可能性があります。

データの視覚化:ピノとグラファナの統合

Grafanaは、Apache Pinotとの統合をサポートする人気のオープンソース視覚化ツールです。 GrafanaをPinotに接続することにより、応答時間、エラー率、リソース使用量などのメトリックを表示するリアルタイムダッシュボードを作成できます。ダッシュボードの例には、次の情報を含めることができます -

  • 応答時間頻度:過去24時間にわたる各サービスの平均応答時間を示す領域のあるラインチャート。
  • エラー率:エラー率が高いサービスを強調している積み重ねられたバーチャートで、問題のある領域を迅速に特定するのに役立ちます。
  • セッションの使用:さまざまなサービスにわたってCPUおよびメモリ使用の傾向を表示するエリアチャート。

この視覚化セットアップは、アプリケーションの健康とパフォーマンスの包括的なビューを提供し、KPIを継続的に監視し、問題が発生したときに積極的な測定を行うことができます。

Apache Pinotによるリアルタイムアプリのパフォーマンス監視

高度な考慮事項

Apache Pinotを使用したリアルタイム監視システムが拡大するにつれて、その有効性を維持するために管理するためのいくつかの高度な側面があります。

  • データ保持とアーカイブ:
    • 課題:アプリケーションが増加するデータを生成するにつれて、コストの膨らみやパフォーマンスの減速を避けるために、ストレージを効率的に管理することが重要になります。
    • 解決策:データ保持ポリシーの実装は、即時の分析には必要ない古いレコードをアーカイブまたは削除することにより、データのボリュームを管理するのに役立ちます。 Apache Pinotは、セグメント管理とデータ保持メカニズムを通じてこれらのプロセスを自動化します。
  • スケーリングピノ:
    • 課題:データとクエリの要求の量が増えているため、単一のピノインスタンスまたはクラスターのセットアップに負担をかける可能性があります。
    • 解決策:Apache Pinotは水平スケーリングをサポートし、さらにノードを追加してクラスターを拡張できるようにします。これにより、システムがデータの摂取とクエリの増加を効果的に処理できるようになり、アプリケーションが成長するにつれてパフォーマンスを維持できます。
  • 警告:
    • 課題:自動アラートなしでパフォーマンスの問題を検出して応答することは挑戦的であり、問​​題解決を遅らせる可能性があります。
    • 解決策:メトリックが事前定義されたしきい値を超えた場合、アラートシステムを統合して通知を受信します。 GrafanaやPrometheusなどのツールを使用してアラートを設定し、アプリケーションのパフォーマンスの異常や問題を迅速に通知できるようにすることができます。
  • パフォーマンスの最適化:
    • 課題:データセットと複雑なクエリの増加により、効率的なクエリパフォーマンスを維持することが困難になる可能性があります。
    • 解決策:スキーマ設計、インデックス作成戦略、クエリパターンを継続的に最適化します。 Apache Pinotのツールを利用して、パフォーマンスのボトルネックを監視および対処します。クラスター全体にデータとクエリをより適切に配布するために、パーティション化とシャードテクニックを使用します。

結論

効果的なリアルタイム監視は、最新のアプリケーションのパフォーマンスと信頼性を確保するために不可欠です。 Apache Pinotは、リアルタイムのデータ処理とクエリのための強力なソリューションを提供し、包括的な監視システムに適しています。スケーリングやセキュリティなどの高度なトピックを議論し、検討する戦略を実装することにより、潜在的なパフォーマンスの問題よりも先を行くのに役立つ堅牢でスケーラブルな監視システムを構築し、ユーザーのスムーズなエクスペリエンスを確保することができます。

キーテイクアウト

  • Apache Pinotは、リアルタイムのデータ摂取の取り扱いに熟達しており、低遅延クエリパフォーマンスを提供し、アプリケーションのパフォーマンスメトリックを監視するための強力なツールになります。 Kafkaなどのストリーミングプラットフォームとうまく統合されており、応答時間、エラー率、リソース利用などのメトリックの即時分析を可能にします。
  • Kafkaはアプリケーションログとメトリックをストリーミングします。 Kafkaのトピックを構成し、Pinotとリンクすることで、パフォーマンスデータの継続的な処理とクエリが可能になり、最新の洞察が確保されます。
  • スキーマを適切に定義し、Apache Pinotでテーブルを構成することは、効率的なデータ管理のために重要です。スキーマはデータ構造とタイプの概要を示し、テーブル構成はデータの摂取とインデックス作成を制御し、効果的なリアルタイム分析をサポートします。
  • Apache Pinotは、詳細なデータ分析のためにSQLのようなクエリをサポートしています。 GrafanaやApache Supersetなどの視覚化ツールで使用すると、アプリケーションパフォーマンスへのリアルタイムの可視性を提供する動的なダッシュボードの作成を可能にし、問題の迅速な検出と解決を支援します。

よくある質問

Q1 。リアルタイムアプリケーションのパフォーマンス監視に適したApache Pinotの理由は何ですか?

A. Apache Pinotは低遅延のクエリに最適化されているため、リアルタイムの洞察が重要なシナリオに最適です。 Kafkaなどのストリーミングソースからデータを摂取し、大規模でハイスループットのデータセットを処理する機能により、アプリケーションのパフォーマンスメトリックに関する最新の分析を提供できます。

Q2。ApachePinotは、Kafkaからのリアルタイムデータ摂取をどのように処理しますか?

A. Apache Pinotは、Kafkaトピックからのメッセージを直接消費することにより、リアルタイムデータを摂取するように設計されています。低レベルと高レベルのカフカ消費者の両方をサポートし、Pinotが最小限の遅延でデータを処理および保存できるようになり、すぐにクエリを利用できるようにします。

Q 3。Apache Pinotを使用してリアルタイム監視システムをセットアップするために必要な重要なコンポーネントは何ですか?

A. Apache Pinotを使用してリアルタイム監視システムをセットアップするには、次のことが必要です。
データソース:アプリケーションログとメトリックがKafkaにストリーミングされました。
Apache Pinot:リアルタイムのデータ摂取とクエリ用。
スキーマとテーブル構成:メトリックデータを保存およびインデックス作成するためのPinotの定義。
視覚化ツール:リアルタイムのダッシュボードを作成するためのGrafanaやApache Supersetなどのツール

Q4。ApachePinotでKafka以外に他のデータストリーミングプラットフォームを使用できますか?

A.はい、Apache Pinotは、Apache PulsarやAWS Kinesisなどの他のデータストリーミングプラットフォームとの統合をサポートしています。この記事ではKafkaに焦点を当てていますが、構成の詳細は異なりますが、異なるストリーミングプラットフォームを使用する場合と同じ原則が適用されます。

この記事に示されているメディアは、Analytics Vidhyaが所有しておらず、著者の裁量で使用されています。

以上がApache Pinotによるリアルタイムアプリのパフォーマンス監視の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

カーソルAIでバイブコーディングを試してみましたが、驚くべきことです! カーソルAIでバイブコーディングを試してみましたが、驚くべきことです! Mar 20, 2025 pm 03:34 PM

バイブコーディングは、無限のコード行の代わりに自然言語を使用してアプリケーションを作成できるようにすることにより、ソフトウェア開発の世界を再構築しています。 Andrej Karpathyのような先見の明に触発されて、この革新的なアプローチは開発を許可します

2025年2月のトップ5 Genai発売:GPT-4.5、Grok-3など! 2025年2月のトップ5 Genai発売:GPT-4.5、Grok-3など! Mar 22, 2025 am 10:58 AM

2025年2月は、生成AIにとってさらにゲームを変える月であり、最も期待されるモデルのアップグレードと画期的な新機能のいくつかをもたらしました。 Xai’s Grok 3とAnthropic's Claude 3.7 SonnetからOpenaiのGまで

オブジェクト検出にYolo V12を使用する方法は? オブジェクト検出にYolo V12を使用する方法は? Mar 22, 2025 am 11:07 AM

Yolo(あなたは一度だけ見ています)は、前のバージョンで各反復が改善され、主要なリアルタイムオブジェクト検出フレームワークでした。最新バージョンYolo V12は、精度を大幅に向上させる進歩を紹介します

ChatGpt 4 oは利用できますか? ChatGpt 4 oは利用できますか? Mar 28, 2025 pm 05:29 PM

CHATGPT 4は現在利用可能で広く使用されており、CHATGPT 3.5のような前任者と比較して、コンテキストを理解し、一貫した応答を生成することに大幅な改善を示しています。将来の開発には、よりパーソナライズされたインターが含まれる場合があります

クリエイティブプロジェクトのための最高のAIアートジェネレーター(無料&有料) クリエイティブプロジェクトのための最高のAIアートジェネレーター(無料&有料) Apr 02, 2025 pm 06:10 PM

この記事では、トップAIアートジェネレーターをレビューし、その機能、創造的なプロジェクトへの適合性、価値について説明します。 Midjourneyを専門家にとって最高の価値として強調し、高品質でカスタマイズ可能なアートにDall-E 2を推奨しています。

O1対GPT-4O:OpenAIの新しいモデルはGPT-4Oよりも優れていますか? O1対GPT-4O:OpenAIの新しいモデルはGPT-4Oよりも優れていますか? Mar 16, 2025 am 11:47 AM

OpenaiのO1:12日間の贈り物は、これまでで最も強力なモデルから始まります 12月の到着は、世界の一部の地域で雪片が世界的に減速し、雪片がもたらされますが、Openaiは始まったばかりです。 サム・アルトマンと彼のチームは12日間のギフトを立ち上げています

Google' s Gencast:Gencast Mini Demoを使用した天気予報 Google' s Gencast:Gencast Mini Demoを使用した天気予報 Mar 16, 2025 pm 01:46 PM

Google Deepmind's Gencast:天気予報のための革新的なAI 天気予報は、初歩的な観察から洗練されたAI駆動の予測に移行する劇的な変化を受けました。 Google DeepmindのGencast、グラウンドブレイク

chatgptよりも優れたAIはどれですか? chatgptよりも優れたAIはどれですか? Mar 18, 2025 pm 06:05 PM

この記事では、Lamda、Llama、GrokのようなChatGptを超えるAIモデルについて説明し、正確性、理解、業界への影響における利点を強調しています(159文字)

See all articles