SkyWalking は、分散アプリケーションのアプリケーションパフォーマンスモニタリング(APM)およびトレースを実現するシステムです。本トピックでは、Alibaba Cloud Elasticsearch V7.4.0 クラスターを SkyWalking のストレージバックエンドとして使用するための設定手順について説明します。これにより、分散アプリケーション全体の可観測性を実現できます。
仕組み
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 のダウンロードとインストール
Linux サーバーに、Elasticsearch 7 向け SkyWalking パッケージをダウンロードします。本トピックでは 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:SkyWalking から Elasticsearch クラスターへの接続設定
SkyWalking はデフォルトで H2 をストレージバックエンドとして使用しますが、H2 は永続データストレージをサポートしません。ストレージバックエンドを Elasticsearch に変更するには、application.yml を編集します。
application.ymlをconfigフォルダで開きます。cd apache-skywalking-apm-bin-es7/config/ vi application.ymlstorageセクションを検索し、セレクターを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} # 時間および日単位のメトリックが分単位のインデックスにマージされます。 dayStep: ${SW_STORAGE_DAY_STEP:1} # 分/時/日の各インデックスにおける日数を表します。 user: ${SW_ES_USER:"elastic"} password: ${SW_ES_PASSWORD:"es_password"}重要trustStorePathおよびtrustStorePassはコメントアウトしたままにしてください。有効なキーストアファイルがない状態でこれらの行をコメント解除すると、NoSuchFileException: ../es_keystore.jksエラーが発生します。主なパラメーターは以下のとおりです。
パラメーター 説明 selectorストレージバックエンドのセレクター。値を elasticsearch7に設定します。nameSpaceElasticsearch クラスター内に作成されるすべてのインデックス名に付与されるプレフィックスです。 clusterNodesElasticsearch クラスターのパブリックエンドポイントです。SkyWalking と Elasticsearch クラスターが異なる VPC 内にあるため、パブリックエンドポイントを使用します。エンドポイントの確認方法については、「クラスターの基本情報の表示」をご参照ください。 userElasticsearch クラスターのユーザー名です。デフォルト値は elasticです。passwordelasticユーザーのパスワードです。クラスター作成時に設定したパスワードを指定します。パスワードを再設定する場合は、「Elasticsearch クラスターのアクセスパスワードの再設定」をご参照ください。(任意)
coreセクション内のapplication.ymlで、リスニング IP アドレスまたはポート番号を変更できます。RESTful API ではデフォルトポート 12800、gRPC ではデフォルトポート 11800 が使用されます。本トピックではデフォルト値を使用します。core: selector: ${SW_CORE:default} default: # Mixed: エージェントデータの受信、レベル 1 集計、レベル 2 集計 # Receiver: エージェントデータの受信、レベル 1 集計 # Aggregator: レベル 2 集計 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 # バックエンドの restHost:restPort をカンマ区切りで指定 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 に初めて接続する際は、多数のインデックスをクラスター内に作成するため、通常より起動時間が長くなります。インデックス作成が完了するまで、UI ページが空白になる場合があります。進行状況を確認するには、
<SkyWalking インストールパス>/logs/skywalking-oap-server.logのログを参照してください。
Elasticsearch 内に SkyWalking のインデックスが作成されたことを確認します。クラスターの Kibana コンソールにログインします(「Kibana コンソールへのログイン」をご参照ください)し、以下のコマンドを実行します。
GET _cat/indices?v結果には、
skywalking-indexで始まる多数のインデックスが一覧表示されます。
次のステップ
ご利用のアプリケーションを SkyWalking に接続するには、
apache-skywalking-apm-bin-es7/agent/skywalking-agent.jarをアプリケーションの JVM 起動引数に追加します。サポートされるミドルウェアおよびコンポーネントの詳細については、「Apache SkyWalking ドキュメント」をご参照ください。
Java アプリケーションのデータを SkyWalking に直接レポートする場合は、「SkyWalking を使用した Java アプリケーションデータのレポート」をご参照ください。