観察能力への深い飛び込み


Apache ShardingSphere データベースプラスに従ってください-あなたが分散データベースシステムに任意のデータベースを変換することができます完全にデータサービスの生態系を作成するための私たちのコミュニティの指導の開発コンセプトは、簡単に、弾性スケーリング、データの暗号化機能&詳細とそれを強化することができます.
ユーザーはしばしば特定の問題を見つけるために実際のアプリケーションシナリオでApache ShardingSphereのパフォーマンスを監視する必要があります.
アプリケーション性能監視(APM)は、観測可能なデータを収集、蓄積、分析することにより、システム性能を監視し、診断することができる.また、パフォーマンス指標、トレース解析、アプリケーショントポロジーマッピングなどの機能を統合します.
これは、トレース、メトリックとログを利用して、システム操作から観測可能なデータを取得します.Apache ShardingSphereユーザーのための可観測機能を提供します.

目的


Apache ShardingSphereは、開発者がログ出力を構成することができます.現在の可観測性特徴の主な目的は、ユーザーのために必要なメトリクスと追跡データを提供することです.

デザイン


コンパイラとJavaエージェントを使用せずに、アプリケーションランタイム中にJavaクラス(任意に含まれている)を変更できるようにするコード生成ライブラリByteBuddyを使用して、ObjectBufferを完全に実装するための共通エージェントメソッドを選択しました.
さまざまなフレームワークやシステムのメトリックとトレースをサポートするプラグイン指向のデザインを採用します.したがって、ユーザーは機能をカスタマイズするか、より多くのビジネス特定のコンポーネントを自分で開発することができます.
現在、Apache ShardingSphereのエージェントモジュールPrometheus、Zipkin、Jaeger、スカイウォークをサポートし、OpenTelemration.


次の例では、Apache ShardingSphereプロキシにPromeTheusとZipkinの観測可能なデータプラグインを配備し、Apache ShardingSphereエージェントモジュールを使用する方法を示します.
ステップ1:必要なソフトウェアをインストールするprometheus-2.32.1.linux-amd64.tar.gz ( https://prometheus.io/download )zipkin-server-2.23.9-exec.jar ( https://zipkin.io/pages/quickstart.html )apache-shardingsphere-5.1.0-SNAPSHOT-shardingsphere-proxy-bin.tar.gz apache-shardingsphere-5.1.0-SNAPSHOT-shardingsphere-agent-bin.tar.gzMySQL 5.7.34
ステップ2 :配備
ポート
Prometheus Server : 9090
Zipkinサーバ: 9411
Apache ShardingSphereプロキシ:3307
Apache Shardingsphereエージェント( Prometheusプラグイン): 9000
プロメテウス
まず、監視オブジェクトをプロメテウスに追加します.この場合、Apache ShardingSphereエージェントポートアドレス9000をPrometheus設定ファイルに追加する必要がありますprometheus.yml .
vi prometheus.yml
下に次のコードを追加しますstatic_configs ファイルに
- targets: ["localhost:9000"]
次に、開始します.
./prometheus &
ジッパー
ジッパーは使いやすいです.次のコマンドを入力します.
java -jar Zipkin-server-2.23.9-exec.jar &
アパッチシャー
Apache ShardingSphereプロキシとエージェントを配備するには、関係者を参照してくださいuser guide .
プロキシとエージェントを仮定する/tmp ディレクトリは、以下の特定のエージェント展開ステップです
構成の変更
変更するagent.yaml 設定ファイル.
それから、prometheusとzipkinプラグインを開始して、上記のポート設定に従ってPrometheusポートデータを9000に変えてください.
applicationName: shardingsphere-agent
ignoredPluginNames:
- Jaeger
- OpenTracing
- OpenTelemetry
- Logging
plugins:
Prometheus:
host:  "localhost"
port: 9000
props:
JVM_INFORMATION_COLLECTOR_ENABLED : "true"
Jaeger:
host: "localhost"
port: 5775
props:
SERVICE_NAME: "shardingsphere-agent"
JAEGER_SAMPLER_TYPE: "const"
JAEGER_SAMPLER_PARAM: "1"
Zipkin:
host: "localhost"
port: 9411
props:
SERVICE_NAME: "shardingsphere-agent"
URL_VERSION: "/api/v2/spans"
SAMPLER_TYPE: "const"
SAMPLER_PARAM: "1"
OpenTracing:
props:
OPENTRACING_TRACER_CLASS_NAME: "org.apache.skywalking.apm.toolkit.opentracing.SkywalkingTracer"
OpenTelemetry:
props:
otel.resource.attributes: "service.name=shardingsphere-agent"
otel.traces.exporter: "zipkin"
Logging:
props:
LEVEL: "INFO"
コマンドを追加する
ファイルを変更/tmp/apache-shardingsphere-5.1.0-shardingsphere-proxy-bin/bin/start.sh エージェントの絶対パスを追加するshardingsphere-agent.jar を起動します.
以前
nohup java ${JAVA_OPTS} ${JAVA_MEM_OPTS} \
-classpath ${CLASS_PATH}**** ${MAIN_CLASS} >> ${STDOUT_FILE} 2>&1 &
アフター
nohup java ${JAVA_OPTS} ${JAVA_MEM_OPTS} \
-javaagent:/tmp/apache-shardingsphere-5.1.0-shardingsphere-agent-bin/shardingsphere-agent.jar \
-classpath ${CLASS_PATH} ${MAIN_CLASS} >> ${STDOUT_FILE} 2>&1 &
開始する
さて、プロキシディレクトリの下で起動する準備ができました.
bin/start.sh
ステップ3 :テストアクセス
メトリクスと追跡データ
使用するconfig-sharding.yaml , Apache ShardingSphereプロキシによって提供される既定のSharding構成シナリオは、アクセスをテストしてデータを表示します.
  • MySQLコマンドラインで開始されたshardingsphereプロキシに接続してください.
  • データの結果をprometheusサーバとzipkinサーバで調べてください
    クエリproxy_info そして、prometheusウェブを通してデータ結果を得てください.
  • MySQLクライアントに接続した後に、Distin Web追跡情報を表示します
  • MySQLコマンドラインでデータを問い合わせる
  • PrometheusサーバとZipKinサーバのデータ結果を調べる
    クエリparse_sql_dml_select_total Prometheusウェブを通してのデータ結果.
  • Zipkin Web経由のクエリ追跡情報

    スパンの慎重な検索を通じて、SQL文のトレース状態を確認することができますselect * from t_order .

    トポロジーマッピング


    Zipkin Webを介して依存関係をチェックするときにトポロジーマッピングを見つけることはできません.
    そこで、以下のように設定します:
    ダウンロード
    まず、次のZipkin依存性をダウンロードし、プロキシのlibディレクトリにコピーします.
    構成の変更
    データソース設定ファイルの設定config-sharding.yaml , はconf プロキシのディレクトリ、およびコンフィギュレーションシェーディングの下部のデータソースに対応するURLに次の設定を追加します.ヤルdataSources ノード:
    MySQL 5x :statementInterceptors=brave.mysql.TracingStatementInterceptorまたはMySQL 8.x :queryInterceptors=brave.mysql8.TracingQueryInterceptor
  • ShardingSphereプロキシを再起動する
    以前と同じアクセステストを行った後に、zipkinウェブを通して依存関係を見ることができ、以下のトポロジマッピングを見ることができます.

  • サンプリングレート


    また、ユーザーは異なるシナリオに合わせて構成された異なるサンプリングレートを設定できます.Zipkinプラグインは、const、カウント、レート制限、および境界を含む様々なサンプリングレートの種類の構成をサポートしています.
    高い要求量のシナリオに対しては、境界型を選択し、適切なサンプリングレートで設定し、データの収集量を減らすように設定します.
    Zipkin:
    host: "localhost"
    port: 9411
    props:
    SERVICE_NAME: "shardingsphere-agent"
    URL_VERSION: "/api/v2/spans"
    SAMPLER_TYPE: "boundary"
    SAMPLER_PARAM: "0.001"
    

    概要


    デフォルトで多くの一般的な監視フレームワークとシステムと互換性を持つ可観測性プラグインで、ユーザーは簡単にモニターして、Apache Shardingsphereを管理することができます.
    今後は、監視機能を強化していきます.

    Apache ShardingSphereオープンソースプロジェクトのリンク


    ShardingSphere Github
    Contributor Guideline

    共著者



    蒋平川
    Spiraexシニアミドルウェアエンジニア、Apache TomcatとApache Shardingsphereの貢献者.
    オープンソースの技術愛好家、Pingchuanはspesexコンソールとspexのブートを開発する自分自身を捧げます.

    マオリン江
    Spiraexシニアミドルウェアエンジニア&Apache Shardingsphereの貢献者.