オープンソースの Elasticsearch が提供するアプリケーションパフォーマンス監視(APM)サービスを Alibaba Cloud Elasticsearch と統合して APM システムを構築し、サービスとアプリケーションの可観測性を実現できます。このトピックでは、セルフマネージド APM サーバーを使用して Alibaba Cloud Elasticsearch にデータを収集する方法について説明します。
背景情報
可観測性とは、インフラストラクチャ、プラットフォーム、およびアプリケーションのパフォーマンスを測定し、それらがどのように機能するかを理解する機能です。従来の監視サービスと比較して、主流の監視サービスは問題の特定とアラートに重点を置いています。可観測性は、複雑な分散システムで発生するすべてのイベントの説明を提供できます。監視機能は、配信中および配信後のソフトウェアのサービスステータスに焦点を当てているのに対し、可観測性機能は、R&D および O&M プロセスのライフサイクル全体に焦点を当てています。ログ、インフラストラクチャのメトリクス、および APM は、可観測性の重要な要素です。 APM は、メトリクスとログのギャップを埋めます。ログとメトリクスは、インフラストラクチャとコンポーネントに関する情報を提供し、部分的に重複しています。 APM はアプリケーションに焦点を当てており、IT エンジニアと開発エンジニアはスタックのアプリケーション層とユーザーエクスペリエンスを監視できます。 APM をシステム監視サービスに統合すると、次の利点があります。
- サービスの実行時に最も時間がかかるものと、サービスが応答を停止する理由を理解するのに役立ちます。
- サービスが相互にどのように対話するかを理解し、サービスのボトルネックを表示するのに役立ちます。
- サービスが相互にどのように対話するかを理解し、サービスのボトルネックを表示するのに役立ちます。
- 開発チームの生産性を向上させます。
- ブラウザでのユーザーエクスペリエンスを追跡します。
APM は、次のシナリオで広く使用されています。
- ユーザーエクスペリエンスの監視: APM は、ユーザーの行動を監視することにより、ユーザーエクスペリエンスを向上させることができます。たとえば、APM は、ユーザーと Web インターフェースまたはクライアント間のインタラクションを監視し、インタラクションが発生した時間を記録できます。
- ランタイムアプリケーションアーキテクチャ: APM は、サービス間の依存関係、およびアプリケーション間のインタラクションのネットワークトポロジを理解するのに役立ちます。
- ビジネストランザクション: APM は、詳細な SLA レポートを生成し、ビジネスの観点からアプリケーションパフォーマンスに関するトレンド情報を提供できます。
- ディープダイブコンポーネント監視: このシナリオで APM を使用するには、APM エージェントをインストールする必要があります。 APM は主に、Web サーバー、アプリケーション、メッセージサーバーなど、サービスの中間層を監視するために使用されます。 APM が提供する堅牢な監視機能は、コード実行の明確なパスを表示できます。ディープダイブコンポーネント監視は、ランタイムアプリケーションアーキテクチャと密接に関連しています。ほとんどの場合、シナリオは互いに重複しており、APM はシナリオで同時に使用されます。
- 分析とレポート: APM は、アプリケーションから収集されたメトリックデータの分析を実行し、標準的な方法で共通のビューに分析結果を表示できます。
前提条件
- Alibaba Cloud Elasticsearch V7.10 クラスタが作成されていること。詳細については、「Alibaba Cloud Elasticsearch クラスタを作成する」をご参照ください。
- オペレーティングシステムが Linux の Elastic Compute Service(ECS)インスタンスが作成されていること。詳細については、「Workbench を使用して SSH 経由で Linux インスタンスに接続する」をご参照ください。
- Go プログラミング言語が ECS インスタンスにインストールされていること。説明 この例では、Go プログラミング言語を使用する APM エージェントが使用されています。Go プログラミング言語を事前にインストールする必要があります。
手順
手順 1: APM サーバーを構築する
- ECS インスタンスに接続します。詳細については、「Workbench を使用して SSH 経由で Linux インスタンスに接続する」をご参照ください。説明 この例では、通常のユーザーを使用して ECS インスタンスに接続します。
- APM サーバーをインストールします。
- APM サーバーのインストールパッケージをダウンロードします。
wget https://artifacts.elastic.co/downloads/apm-server/apm-server-7.10.2-linux-x86_64.tar.gz
- インストールパッケージを解凍します。
tar -zxf apm-server-7.10.2-linux-x86_64.tar.gz
- APM サーバーのインストールパッケージをダウンロードします。
- APM サーバーの構成を変更します。
- APM サーバーがインストールされているディレクトリに移動します。
cd apm-server-7.10.2-linux-x86_64/
- YML 構成ファイルを変更します。
vim apm-server.yml
次のコードは、YML 構成ファイルを変更する方法の例を示しています。apm-server: host: "0.0.0.0:8200" output.elasticsearch: hosts: ["es-cn-*****.elasticsearch.aliyuncs.com:9200"] username: "elastic" password: "[pwd]"
パラメータ 説明 apm-server APM サーバーのアドレス。 APM サーバーが listen する IP アドレス:ポート番号
0.0.0.0:8200
の形式で host パラメータを構成する必要があります。この例では、host パラメータはに設定されています。output.elasticsearch APM サーバーの出力が転送される Elasticsearch クラスタに関する情報。次のパラメータを構成する必要があります。 - hosts: Elasticsearch クラスタのパブリックエンドポイントまたはインターナルエンドポイント。Elasticsearch クラスタのエンドポイントを取得する方法については、「クラスタの基本情報を表示する」をご参照ください。重要 Elasticsearch クラスタが、APM サーバーがインストールされている ECS インスタンスと同じ仮想プライベートクラウド(VPC)にある場合は、Elasticsearch クラスタのインターナルエンドポイントを使用します。 Elasticsearch クラスタが ECS インスタンスとは異なる VPC にある場合は、Elasticsearch クラスタのパブリックエンドポイントを使用し、Elasticsearch クラスタのパブリック IP アドレスホワイトリストを構成します。詳細については、「Elasticsearch クラスタのパブリックまたはプライベート IP アドレスホワイトリストを構成する」をご参照ください。
- username: Elasticsearch クラスタへのアクセスに使用するユーザー名。デフォルトのユーザー名は elastic です。カスタムユーザーアカウントを使用できます。このようなアカウントを使用する前に、そのアカウントのロールを作成し、必要な権限をロールに付与する必要があります。詳細については、「Elasticsearch X-Pack が提供する RBAC メカニズムを使用してアクセス制御を実装する」をご参照ください。
- password: ユーザー名に対応するパスワード。 elastic アカウントのパスワードは、Elasticsearch クラスタの作成時に指定されます。パスワードを忘れた場合は、リセットできます。パスワードのリセット手順と注意事項については、「Elasticsearch クラスタのアクセスパスワードをリセットする」をご参照ください。
- hosts: Elasticsearch クラスタのパブリックエンドポイントまたはインターナルエンドポイント。Elasticsearch クラスタのエンドポイントを取得する方法については、「クラスタの基本情報を表示する」をご参照ください。
- APM サーバーがインストールされているディレクトリに移動します。
- APM サーバーを起動します。
nohup ./apm-server -e > apmserver.log 2>&1 &
手順 2: APM エージェントを構成する
この例では、Go プログラミング言語が使用されています
- APM エージェントをインストールします。
- go.mod ファイルを初期化します。
sudo go mod init demo
- APM Go エージェントパッケージをインストールします。
sudo go get go.elastic.co/apm sudo go get go.elastic.co/apm/module/apmhttp
説明 パッケージのインストール時にgolang.org xxxx: i/o タイムアウト
エラーが報告された場合は、golang.org にアクセスできません。この場合、ダウンロードソースを変更する必要があります。
- go.mod ファイルを初期化します。
- APM エージェントを構成します。
- 環境変数の構成ファイルを開きます。
vim ~/.bash_profile
- 構成ファイルで、次の設定を追加して APM エージェントを初期化します。次に、変更を保存します。
# サービス名を指定します。名前には、文字、数字、ハイフン(-)、アンダースコア(_)、およびスペースを含めることができます。 # サービス名が指定されていない場合は、実行可能ファイルの名前が使用されます。 export ELASTIC_APM_SERVICE_NAME=zijian # APM サーバーの URL を指定します。デフォルトの URL は http://localhost:8200 です。 export ELASTIC_APM_SERVER_URL= # APM サーバーが必要とするトークン。 export ELASTIC_APM_SECRET_TOKEN=
- 次のコマンドを実行して、構成ファイルを有効にします。
source ~/.bash_profile
- 環境変数の構成ファイルを開きます。
- APM エージェントを使用してアプリケーションを検出します。
- apm.go という名前のサンプルアプリケーションファイルを作成します。
vim apm.go
- apm.go ファイルに次の情報を追加して、ファイルを保存します。提供されている次の検出モジュールのいずれか、または実行トレーサー API を使用して、アプリケーションを検出できます。
package main import ( "net/http" "go.elastic.co/apm/module/apmhttp" ) func main() { mux := http.NewServeMux() http.ListenAndServe(":8080", apmhttp.Wrap(mux)) }
- apm.go ファイルを実行します。
sudo go run apm.go
- apm.go という名前のサンプルアプリケーションファイルを作成します。
手順 3: Kibana コンソールで APM サーバーによって収集されたデータを表示および分析する
- Elasticsearch クラスタの Kibana コンソールにログオンします。Kibana コンソールにログオンする方法については、「Kibana コンソールにログオンする」をご参照ください。説明 この例では、Elasticsearch V7.10 クラスタが使用されています。他のバージョンのクラスタの Kibana コンソールにログオンするには、異なる操作が必要になる場合があります。
- Kibana コンソールのホームページに移動し、右上隅の [dev Tools] をクリックします。
- 表示されるページの [console] タブで、次のコマンドを実行して APM オンボーディングインデックスの自動作成を有効にします。説明
- APM サーバーの起動後、システムは Elasticsearch クラスタに APM 関連のインデックスを自動的に作成します。Kibana コンソールでインデックスを表示できます。Alibaba Cloud Elasticsearch には、自動的に作成されるインデックスの命名規則に関する要件があります。自動的に作成される APM オンボーディングインデックスの名前は、命名規則に準拠していません。したがって、APM オンボーディングインデックスの自動作成を手動で有効にする必要があります。
- 次のコマンドの 7.10.2 は、インストールした APM サーバーのバージョン番号を示しています。
PUT _cluster/settings { "persistent": { "action.auto_create_index":"+.*,+apm-7.10.2-onboarding-*,-*" } }
- APM によって監視されているサービスを表示します。
- 左上隅にある
アイコンをクリックして、左側のナビゲーションペインを展開します。
- 左側のナビゲーションペインで、APM[observability] の下の をクリックします。
- 表示されるページの [services] タブで、APM によって監視されているすべてのサービスを表示します。
- サービスの名前をクリックして、サービスに関連するデータを表示および分析します。
- 左上隅にある