Instana シンセティック・モニタリング用の簡単PoP構築
投稿者:AIOps担当(森)
こんにちは。
私たちAIOps担当は、システム運用を効率化・高度化するため、機械学習(AI)の技術を採用した「AIOps」や、アプリケーションパフォーマンス管理「APM」、アプリケーション・リソース管理、といったソリューションのご提案から構築・導入後の支援まで担当しています。
前回から引き続き、IBM Instana Observability(以下、Instana)において、2023年7月にリリースされたBuild 253から利用可能になった機能、シンセティック・モニタリング(Synthetic Monitoring)についてご紹介します。
Instanaの各機能について紹介している過去の連載は以下リンクからご覧いただけます。
第1弾:APMで監視を高度化。IBM Observability by Instana とは
⇒Instanaの特徴・機能についてご紹介
第2弾:IBM Observability by Instanaの導入と自動構成
⇒エージェントの導入と、サーバ間・アプリケーション間の依存関係の検出のご紹介
第3弾:IBM Observability by Instanaによる障害の検出と分析
⇒障害の検出から通知・分析のための機能のご紹介
第4弾:IBM Observability by Instanaの収集メトリクス
⇒Instanaが収集する各種性能情報(メトリクス)のご紹介
第5弾:IBM Observability by Instanaと他システム連携
⇒Instanaの他システムとの連携についてのご紹介
第6弾:Instanaを利用したエンドユーザーモニタリング
⇒Instanaを利用したエンドユーザーモニタリングについてのご紹介
第7弾:IBM Instanaエージェントのインストール
⇒Instanaエージェントのインストール方法及び効果のご紹介
第8弾:IBM Instanaにおけるアプリケーションパースペクティブ
⇒Instanaで多数のシステムを効率的に管理する機能のご紹介
第9弾:Instana注目の新機能、シンセティック・モニタリングとは。
⇒シンセティック・モニタリング(外形監視・合成監視)のご紹介
■ 自己ホストPoPの準備
前回の連載で、シンセティック・モニタリングを利用するには、PoP(Point of Presence)が必要な点をご案内しました。
またPoPはInstanaの利用者がご自身で準備する自己ホストタイプと、IBMがサービスで提供しているSaaSタイプの2種類の提供形態がありますが、今回はInstanaのSaaS環境で自己ホストタイプのPoPを準備する手順をご案内します。
※ SaaSタイプのPoPは申し込むとすぐに利用できます。
(Instanaライセンスとは別に、PoPの処理量に応じた利用料を支払います。)
自己ホストPoPは、Kubernetesが稼動している環境にデプロイして利用します。InstanaのSaaS環境で利用する場合は、Kubernetesの環境がインターネットに接続できる必要があります。
今回はシンセティック・モニタリングの機能を検証することを目的に、K3sでシングルノードのKubernetes環境を構築し、自己ホストPoPを構築する手順をご案内します。なお、K3sを使ったシングルノード環境のPoPを、IBMは正式サポートしていません。あくまで手軽に機能を検証するための手段という点に留意してください。
■ 仮想マシンの準備
自己ホストPoPの構築手順は、Instanaの下記ドキュメントを参照してください。
・自己ホスト型 PoP
https://www.ibm.com/docs/ja/instana-observability/current?topic=monitoring-deploying-self-hosted-pop
・ハードウェア要件(必要スペック)
https://www.ibm.com/docs/ja/instana-observability/current?topic=pop-capacity-planning-scaling
ハードウェア要件については、今回は検証環境なので最小構成の、「XSmall インストール- PoP 機能のテスト」に記載のリソース(CPU:6コア、メモリ:4.8GB)を満たす環境を準備します。
私が準備した検証環境は、VMware(vSphere)環境のため、CPU:6コア、メモリ:8GB、ディスク:70GBの仮想マシンを1台準備しました。なお、CPUは6コア未満にすると、PoPに必要なPodの起動に失敗したため、6コア割り当てる必要があります。ディスクはPoP導入後の使用率を確認すると30%程度のため、40GB程度でも充分かと思います。
■ LinuxとK3sのインストール
RHEL互換のLinux OSである、「AlmaLinux OS 9」を仮想マシンに導入します。インストールタイプは「最小限のインストール (Minimal install)」としています。
AlmaLinuxのインストールが終わり、ネットワークへの接続が可能になると、K3sをインストールします。以下の手順を実行します。
$ sudo systemctl disable firewalld --now
$ sudo dnf -y install tar git
$ curl -sfL https://get.k3s.io | sh -s - --write-kubeconfig-mode 644
### インストール後の確認。
$ sudo kube get nodes
NAME STATUS ROLES AGE VERSION
localhost.localdomain Ready control-plane,master 14h v1.30.6+k3s1
※ 検証用の仮想マシンは、インターネットとの間にFirewall装置があるため、OSのFirewall機能は無効としています。
※ sudo を使って作業する場合、「/etc/sudores」に「/usr/local/bin」へのパスの追加と、作業ユーザーに「export KUBECONFIG=/etc/rancher/k3s/k3s.yaml」の環境変数設定が必要でした。
■ Helmのインストール
Instana PoPの導入は、Helmチャートを利用する必要があるため、Helmをインストールします。
$ curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash
### インストール後の確認。
$ sudo helm version
version.BuildInfo{Version:"v3.16.2", GitCommit:"13654a52f7c70a143b1dd51416d633e1071faffb", GitTreeState:"clean", GoVersion:"go1.22.7"}
■ Instana PoPのデプロイ
InstanaのWebUIにログインし、「シンセティック・モニタリング」⇒「ロケーション」⇒「新規ロケーション」⇒「専用」を選択し、「次へ」ボタンを押下します。
画面に表示された、helmコマンドをコピーしテキストに保存します。Instanaのドキュメントにそって、以下の設定を行います。
「namespace」 ・・・ PoPを稼動させるnamespaceを指定。
「yourLocationName」・・・Instana WebUIにおける、ロケーション名。
「yourLocationDisplayName」・・・Instana WebUIにおける、ロケーション表示名。
「yourLocationCountry」・・・Instana WebUIにおける、国。
「yourLocationCity」・・・Instana WebUIにおける、市。
「yourLocationDescription」・・・Instana WebUIにおける、ロケーションの説明。
「yourClusterName」
・・・ オプション。KubernetesにInstana Agentを導入した場合、Instana WebUIにおけるクラスタ名。
「yourPassword」・・・Redisの認証に設定するパスワードを定義。10文字以上。
準備したhelmコマンドを実行すると、PoPのインストールが実行されます。
$ sudo helm install synthetic-pop \
--repo "https://agents.instana.io/helm" \
--namespace instana \
--create-namespace \
--set downloadKey="O_xXXXXXXXXXXXXXXXXXXX" \
--set controller.location="NIC-POP;NIC-POP;JAPAN;TOKYO;0;0;NIC TEST POP" \
--set controller.clusterName="niccluster" \
--set controller.instanaKey="O_xXXXXXXXXXXXXXXXXXXX" \
--set controller.instanaSyntheticEndpoint="https://synthetics-orange-saas.instana.io" \
--set redis.tls.enabled=false \
--set redis.password="XXXXXXXXXXXXXXX" \
synthetic-pop### インストール後の確認。
$ sudo kubectl get pods --namespace instana
NAME READY STATUS RESTARTS AGE
synthetic-pop-browserscript-playback-engine-5ccc64ff4d-f6xnn 1/1 Running 1 (11h ago) 14h
synthetic-pop-controller-697999795-4w2v5 1/1 Running 3 (11h ago) 14h
synthetic-pop-http-playback-engine-6bb8794db8-4lv5d 1/1 Running 3 (11h ago) 14h
synthetic-pop-ism-playback-engine-78f5cc65ff-t5sm4 1/1 Running 3 (11h ago) 14h
synthetic-pop-javascript-playback-engine-64bcfd4b8c-tpxk9 1/1 Running 0 14h
synthetic-pop-redis-557655b8b9-zktgz 1/1 Running 3 (11h ago) 14h
インストール後、InstanaのWebUIの「シンセティック・モニタリング」⇒「ロケーション」にPoPが表示されればインストールは完了です。
■ シンセティック・モニタリングを実行する
最後にシンセティック・モニタリング(外形監視)を実行してみます。今回は最もシンプルな、特定のURLに接続しWebサイトが正常に応答を返すかチェックします。
「シンセティック・モニタリング」⇒「+ ADD」⇒「シンセティック・テストの追加」を選択します。
「シンセティック・テストの作成」ダイアログで、以下の設定を行います。詳細は下図を参考にしてください。
- 「ブラウザー(シンプル)」を選択します。
- 監視対象のWebサイトURLを設定します。使用するPoPを選択します。
今回は弊社Webサイトのトップページを設定しました。 - 監視間隔を設定します。初期値は15分ですが、今回は手短に検証するために1分間隔とします。
- テストの名前と説明を設定します。
- シンセティック・テストと、Instana内で定義されているアプリケーションの関連付けを行います。
今回はシンセティック・テストの機能のご紹介なので、特に紐づけを行いません。 - 最後に「作成」ボタンを押下します。
シンセティック・モニタリングの画面に、作成したシンセティック・テストが表示されます。
数分間たったあとに、「NIC-TEST」の画面を確認してみると、1分間隔のテストが行われ、「成功率」「平均応答時間」「平均応答サイズ」といった情報を確認することが出来ます。弊社Webサイトのトップページですので、失敗はもちろん「ゼロ」です(笑)
なお、このような検証目的で、シンセティック・テストを使いWebサイトを監視する場合、以下のような対応を行ったほうが良いでしょう。
・自社のWebサイトで行う。
・事前にWebサイト管理者には監視用に定期的な接続が発生するということを伝える。
特定のIPアドレスから短時間に繰り返し接続が発生する場合、相手にはWebサイトに対する攻撃・不正侵入の事前準備といった誤解を招きかねません。
シンセティック・モニタリングに関する記事としては、次回が最終回を予定しています。より複雑なテストの設定や、異常が発生した場合の通知など、より詳細な使い方をご紹介します。