SkyWalking は、分散アプリケーションパフォーマンス監視(APM)ツールであり、分散トレーシングシステムです。このトピックでは、SkyWalking を使用して Alibaba Cloud Elasticsearch V7.4 クラスタを監視する方法について説明します。
背景情報
SkyWalking には次の機能があります。
SkyWalking は自動インストゥルメントエージェントを提供するため、アプリケーションコードを変更する必要はありません。
SkyWalking は、OpenTracing SDK をサポートする手動インストゥルメントエージェントを提供します。手動インストゥルメントエージェントは、Java 用 OpenTracing API でサポートされているコンポーネントを監視できます。
説明Java 用 OpenTracing API でサポートされているコンポーネントの詳細については、「OpenTracing Registry」をご参照ください。
自動および手動インストゥルメントエージェントは同時に使用できます。手動インストゥルメントエージェントは、自動インストゥルメントエージェントではサポートされていないコンポーネント、さらにはプライベートコンポーネントも監視できます。
SkyWalking は、分析用の Java ベースのバックエンドプログラムです。他の言語のエージェント向けの RESTful API と分析機能を提供します。
SkyWalking は高性能ストリーミング分析を提供します。
次の図は、SkyWalking アーキテクチャを示しています。
SkyWalking は、データ分析と測定結果を保存するためのプラットフォームです。これらの結果は、HTTP または gRPC 経由で SkyWalking Collector に送信されます。SkyWalking Collector はデータを分析および集計し、Elasticsearch、H2、MySQL、または TiDB にデータを保存します。分析結果は SkyWalking UI で確認できます。SkyWalking は、さまざまなプログラミング言語の SkyWalking エージェント、Zipkin v1、Zipkin v2、Istio テレメトリ、Envoy など、複数のソースからさまざまな形式でデータを収集します。
このトピックでは、SkyWalking は Alibaba Cloud Elasticsearch V7.4 に統合されています。SkyWalking クライアントを使用して、Java アプリケーションにデータを報告することもできます。詳細については、「SkyWalking を使用して Java アプリケーションデータを報告する」をご参照ください。SkyWalking でサポートされているミドルウェアとコンポーネントの詳細については、「Apache SkyWalking ドキュメント」をご参照ください。
前提条件
Alibaba Cloud Elasticsearch クラスタが作成されていること。このトピックでは、Elasticsearch V7.4.0 クラスタを使用します。
詳細については、「Alibaba Cloud Elasticsearch クラスタを作成する」をご参照ください。
JDK 1.8.0 以降がインストールされている Linux サーバーが準備されていること。
Alibaba Cloud Elastic Compute Service(ECS)インスタンスを使用することをお勧めします。 ECS インスタンスの購入方法の詳細については、「手順 1:ECS インスタンスを作成する」をご参照ください。
説明JDK のインストール方法の詳細については、「手順 3:JDK をインストールする」をご参照ください。JDK が正しくインストールされておらず、SkyWalking を起動してログを表示すると、「Java not found」または「java-xxx: No such file or directory」というエラーメッセージが報告されます。
Linux サーバーのポート 8080、10800、11800、および 12800 が使用されていないこと。
Linux サーバーのファイアウォールと Security-Enhanced Linux(SELinux)が無効になっていること。
手順
手順 1:SkyWalking をダウンロードしてインストールする
SkyWalking パッケージを Linux サーバーにダウンロードします。
このトピックでは、Elasticsearch V7.4.0 クラスタを使用します。そのため、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/次の結果が返されます。
total 92 agent bin config LICENSE licenses NOTICE oap-libs README.txt tools webapp
手順 2:Elasticsearch クラスタに接続するように SkyWalking を構成する
次のコードを実行して、config フォルダ内の application.yml ファイルを開きます。
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} # 1分/時間/日インデックスの日数を表します。 user: ${SW_ES_USER:"elastic"} password: ${SW_ES_PASSWORD:"es_password"}説明SkyWalking はデフォルトで H2 にデータを保存します。ただし、H2 は永続データストレージをサポートしていません。そのため、H2 を Elasticsearch に変更する必要があります。
パラメータ
説明
selector
ストレージセレクタ。この例では、値を elasticsearch7 に設定します。
nameSpace
名前空間。このパラメータの値は、Elasticsearch クラスタ内のすべてのインデックス名のプレフィックスとして使用されます。
clusterNodes
Elasticsearch クラスタのエンドポイント。Elasticsearch クラスタは、SkyWalking と同じ仮想プライベートクラウド(VPC)内にありません。パブリックエンドポイントを使用して Elasticsearch クラスタにアクセスする必要があります。Elasticsearch クラスタのパブリックエンドポイントを取得する方法の詳細については、「クラスタの基本情報を表示する」をご参照ください。
user
Elasticsearch クラスタへのアクセスに使用されるユーザー名。デフォルトのユーザー名は elastic です。
password
Elasticsearch クラスタへのアクセスに使用されるパスワード。 elastic ユーザーのパスワードは、Elasticsearch クラスタの作成時に指定します。パスワードを忘れた場合は、リセットできます。パスワードをリセットする方法の詳細については、「Elasticsearch クラスタのアクセスパスワードをリセットする」をご参照ください。
重要ユーザー名とパスワードのみを指定します。trustStorePath と trustStorePass はコメントアウトしてください。そうしないと、「NoSuchFileException:../es_keystore.jks」というエラーメッセージが報告されます。
オプション:リスニング用の IP アドレスまたはポート番号を変更します。
デフォルトでは、SkyWalking は RESTful API 操作の場合はポート 12800、gRPC API 操作の場合はポート 11800 を介して Elasticsearch と通信します。 IP アドレスまたはポート番号は、application.yml ファイルのコア部分で変更できます。このトピックでは、デフォルト値が使用されます。
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 ファイルの構成を変更します。
このトピックでは、デフォルトの構成が使用されます。ビジネス要件に基づいて構成を変更できます。
server: port: 8080 collector: path: /graphql ribbon: ReadTimeout: 10000 # すべてのバックエンドの restHost:restPort をカンマで区切って指定します。 listOfServers: 127.0.0.1:12800
手順 3:結果を確認する
次のコマンドを実行して、Linux サーバーで SkyWalking を起動します。
cd ../bin ./startup.sh重要SkyWalking を起動する前に、Elasticsearch クラスタが正常に実行されていることを確認してください。
startup.shコマンドを実行した後、SkyWalking Collector と SkyWalking UI も起動します。
SkyWalking が起動すると、次の結果が返されます。
SkyWalking OAP started successfully! SkyWalking Web Application started successfully!ブラウザのアドレスバーに http://<Linux サーバーの IP アドレス>:8080/ と入力します。
説明SkyWalking を使用して Elasticsearch に初めて接続する場合、起動が遅くなります。これは、SkyWalking が Elasticsearch に多数のインデックスを作成する必要があるためです。作成が完了する前は、アクセスしたページは空白です。作成が完了したかどうかを確認するには、
<SkyWalking インストールパス>logs/skywalking-oap-server.logに保存されているログを表示できます。Elasticsearch クラスタの Kibana コンソールにログインします。詳細については、「Kibana コンソールにログインする」をご参照ください。次に、
GET _cat/indices?vコマンドを実行して、インデックスデータを表示します。返された結果には、名前が
skywalking-indexで始まる多数のインデックスが存在します。