SkyWalking は、分散アプリケーションパフォーマンスモニタリング (APM) およびトレースシステムです。このトピックでは、SkyWalking を設定して、Alibaba Cloud Elasticsearch V7.4.0 クラスターをストレージバックエンドとして使用し、ご利用の分散アプリケーションのエンドツーエンドの可観測性を実現する方法について説明します。
仕組み
SkyWalking は、ご利用のアプリケーションで実行されているエージェントからテレメトリデータを収集し、そのデータを SkyWalking OAP (Observability Analysis Platform) サーバーに転送します。OAP はデータを分析・集約し、Elasticsearch に保存します。SkyWalking UI は Elasticsearch からデータを読み取り、ダッシュボードとトレースをレンダリングします。
SkyWalking は、2 つのインストルメンテーションモードをサポートしています:
-
自動インスツルメントエージェント: アプリケーションコードを変更することなく、アプリケーションを自動的にインスツルメントします。幅広いフレームワークやライブラリに標準で対応しています。
-
手動計装エージェント: OpenTracing SDK を使用して、非公開コンポーネントやカスタムコンポーネントなど、自動計装エージェントでカバーされないコンポーネントを計装します。自動計装と手動計装は併用できます。
SkyWalking は、さまざまな言語向けの SkyWalking エージェント、Zipkin v1、Zipkin v2、Istio テレメトリ、Envoy など、複数のソースからのデータを受け入れます。
このトピックでは、Alibaba Cloud Elasticsearch V7.4.0 を SkyWalking のストレージバックエンドとして使用する方法について説明します。Java アプリケーションのデータを SkyWalking にレポートする方法については、「SkyWalking を使用した Java アプリケーションデータのレポート」をご参照ください。SkyWalking がサポートするミドルウェアとコンポーネントの完全なリストについては、「Apache SkyWalking ドキュメント」をご参照ください。
前提条件
開始する前に、次のものが揃っていることを確認してください:
-
Alibaba Cloud Elasticsearch V7.4.0 クラスター。詳細については、「Alibaba Cloud Elasticsearch クラスターの作成」をご参照ください。
-
JDK 1.8.0 以降がインストールされた Linux サーバー。Elastic Compute Service (ECS) インスタンスを推奨します。詳細については、「ECS インスタンスの作成」および「JDK のインストール」をご参照ください。
-
Linux サーバー上のポート 8080、10800、11800、12800 が利用可能であること。
-
Linux サーバー上でファイアウォールと Security-Enhanced Linux (SELinux) が無効になっていること。
JDK が正しくインストールされていない場合、サービスの起動時に SkyWalking のログにJava not foundまたはjava-xxx: No such file or directoryがレポートされます。
ステップ 1: SkyWalking のダウンロードとインストール
-
Elasticsearch 7 用の SkyWalking パッケージをご利用の Linux サーバーにダウンロードします。このトピックでは Elasticsearch V7.4.0 クラスターを使用するため、SkyWalking ダウンロードページ から Binary Distribution for Elasticsearch 7 を選択します。次のコマンドを実行してパッケージをダウンロードします:
wget https://archive.apache.org/dist/skywalking/7.0.0/apache-skywalking-apm-es7-7.0.0.tar.gz -
パッケージを解凍します:
tar -zxvf apache-skywalking-apm-es7-7.0.0.tar.gz -
解凍されたファイルを確認します:
ls apache-skywalking-apm-bin-es7/期待される出力:
agent bin config LICENSE licenses NOTICE oap-libs README.txt tools webapp
ステップ 2: Elasticsearch クラスターに接続するための SkyWalking の設定
SkyWalking はデフォルトのストレージバックエンドとして H2 を使用しますが、H2 は永続データストレージをサポートしていません。application.yml を編集して、ストレージバックエンドを Elasticsearch に変更します。
-
configフォルダ内のapplication.ymlを開きます:cd apache-skywalking-apm-bin-es7/config/ vi application.yml -
storageセクションを見つけます。セレクターをH2からelasticsearch7に変更し、接続パラメーターを設定します:storage: selector: ${SW_STORAGE:elasticsearch7} elasticsearch7: nameSpace: ${SW_NAMESPACE:"skywalking-index"} clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:es-cn-4591kzdzk000i****.public.elasticsearch.aliyuncs.com:9200} protocol: ${SW_STORAGE_ES_HTTP_PROTOCOL:"http"} # trustStorePath: ${SW_SW_STORAGE_ES_SSL_JKS_PATH:"../es_keystore.jks"} # trustStorePass: ${SW_SW_STORAGE_ES_SSL_JKS_PASS:""} enablePackedDownsampling: ${SW_STORAGE_ENABLE_PACKED_DOWNSAMPLING:true} # Hour and Day metrics will be merged into minute index. dayStep: ${SW_STORAGE_DAY_STEP:1} # Represent the number of days in the one minute/hour/day index. user: ${SW_ES_USER:"elastic"} password: ${SW_ES_PASSWORD:"es_password"}重要trustStorePathとtrustStorePassはコメントアウトしたままにしてください。有効なキーストアファイルなしでこれらのコメントを解除すると、NoSuchFileException: ../es_keystore.jksエラーが発生します。主なパラメーターは次のとおりです:
パラメーター 説明 selectorストレージバックエンドセレクター。 elasticsearch7に設定します。nameSpaceElasticsearch クラスターで作成されるすべてのインデックス名に適用されるプレフィックス。 clusterNodesご利用の Elasticsearch クラスターのパブリックエンドポイント。SkyWalking と Elasticsearch クラスターは異なる VPC にあるため、パブリックエンドポイントを使用します。エンドポイントを確認する方法については、「クラスターの基本情報の表示」をご参照ください。 userElasticsearch クラスターのユーザー名。デフォルト: elastic。passwordクラスター作成時に設定した elasticユーザーのパスワード。パスワードをリセットする方法については、「Elasticsearch クラスターのアクセスパスワードのリセット」をご参照ください。 -
(任意)
coreのapplication.ymlセクションで、リスニング IP アドレスまたはポート番号を変更します。デフォルトは、RESTful API 用のポート 12800 と gRPC 用のポート 11800 です。このトピックではデフォルト値を使用します。core: selector: ${SW_CORE:default} default: # Mixed: Receive agent data, Level 1 aggregate, Level 2 aggregate # Receiver: Receive agent data, Level 1 aggregate # Aggregator: Level 2 aggregate role: ${SW_CORE_ROLE:Mixed} # Mixed/Receiver/Aggregator restHost: ${SW_CORE_REST_HOST:0.0.0.0} restPort: ${SW_CORE_REST_PORT:12800} restContextPath: ${SW_CORE_REST_CONTEXT_PATH:/} gRPCHost: ${SW_CORE_GRPC_HOST:0.0.0.0} gRPCPort: ${SW_CORE_GRPC_PORT:11800} -
(任意)
webapp/webapp.ymlを変更して、UI ポートまたはバックエンドエンドポイントを変更します。このトピックではデフォルト値を使用します。server: port: 8080 collector: path: /graphql ribbon: ReadTimeout: 10000 # Point to all backend's restHost:restPort, split by , listOfServers: 127.0.0.1:12800
ステップ 3: SkyWalking の起動と結果の確認
-
SkyWalking を起動する前に、Elasticsearch クラスターが実行中であることを確認します。
-
binディレクトリから起動スクリプトを実行します:cd ../bin ./startup.sh起動に成功すると、次のように表示されます:
SkyWalking OAP started successfully! SkyWalking Web Application started successfully!startup.shを実行すると、SkyWalking OAP と SkyWalking UI の両方が起動します。 -
ブラウザで
http://<Linux サーバーの IP アドレス>:8080/を開き、SkyWalking UI にアクセスします。SkyWalking が初めて Elasticsearch に接続する際、SkyWalking はクラスター内に多数のインデックスを作成するため、起動が通常より遅くなります。インデックスの作成が完了するまで、UI ページが空白で表示されることがあります。進捗状況を確認するには、
<SkyWalking のインストールパス>/logs/skywalking-oap-server.logでログを表示します。アクセスに成功すると、SkyWalking Rocketbot モニタリングダッシュボードが表示されます。ダッシュボードには、Dashboard、Topology、Trace などのナビゲーションメニューが含まれています。グローバルビューでは、モニタリングパネル (ヒートマップ、レスポンスタイムパーセンタイル、グローバル概要など) にデータが表示されないのは正常です。これは、サービスは起動したものの、まだアプリケーションエージェントのデータが接続されていないことを示しています。
-
SkyWalking が Elasticsearch にインデックスを作成したことを確認します。ご利用のクラスターの Kibana コンソールにログインし (詳細については、「Kibana コンソールへのログイン」をご参照ください)、次のコマンドを実行します:
GET _cat/indices?v結果には、名前が
skywalking-indexで始まる多数のインデックスがリストされます。コマンドを実行すると、次のようなインデックスデータが返され、SkyWalking が Elasticsearch にデータを正常に書き込んだことを示します。
green open skywalking-index_all_percentile-20200408 green open skywalking-index_endpoint_inventory green open skywalking-index_service_apdex-20200408 green open skywalking-index_database_access_resp_time_month-202004 green open skywalking-index_service_relation_client_cpm-20200408 green open skywalking-index_database_access_sla_month-202004 green open skywalking-index_service_relation_server_call_sla-20200408 green open skywalking-index_endpoint_sla-20200408 green open skywalking-index_instance_jvm_memory_noheap-20200408 green open skywalking-index_service_relation_server_percentile-20200408 green open skywalking-index_service_instance_relation_server_resp_time-20200408 green open skywalking-index_profile_task_segment_snapshot-20200408 green open skywalking-index_endpoint_relation_cpm-20200408 green open skywalking-index_instance_jvm_old_gc_time-20200408 green open skywalking-index_service_sla-20200408 green open skywalking-index_top_n_database_statement-20200408 green open skywalking-index_service_relation_client_call_sla-20200408 green open skywalking-index_endpoint_percentile_month-202004 green open apm-agent-configuration
次のステップ
-
ご利用のアプリケーションを SkyWalking に接続するには、
apache-skywalking-apm-bin-es7/agent/skywalking-agent.jarにあるエージェント JAR をご利用のアプリケーションの JVM 起動引数に追加します。 -
サポートされているミドルウェアとコンポーネントの詳細については、「Apache SkyWalking ドキュメント」をご参照ください。
-
Java アプリケーションのデータを直接 SkyWalking にレポートする方法については、「SkyWalking を使用した Java アプリケーションデータのレポート」をご参照ください。