LoginSignup
13
0

Instana で ApacheトレーシングとEnd User Monitoring の自動有効化を試してみる

Last updated at Posted at 2023-12-18

これまで Instanaで End User Monitoringを実施する場合、Webアプリケーション側に小さなJavaScriptを埋込む必要があり、業務チームにお願いしないといけないので、ちょっとだけ敷居が高い状況でした。フロントにApache HTTPサーバーがある場合、HTTPサーバーがこの埋込み作業を代替してくれる機能 Webサイト自動インスツルメンテーション が機能追加されました

以下のような典型的なWeb3層の構成で稼働しているシステムも、いまでも多くあるのはでないでしょうか。
 [ IBM HTTP Server ] --- [ WebSphereAS / Liberty ] --- [ Db2 / Oracle ]

このような構成のお客様は今回の機能が使えます。
せっかくなので、IHSの分散トレーシングの設定含めて、一気に試してみたいと思います。

1. IBM HTTP Server監視の設定(トレーシング、メトリック)

1.1 IBM HTTP Server での メトリックの有効化

IBM HTTP Server で メトリックを有効化する方法は簡単です。
httpd.confにおいて server_statusを有効化してください。InstanaとしてはローカルからアクセスできればOKです。

LoadModule status_module modules/mod_status.so
<IfModule mod_status.c>
ExtendedStatus On
</IfModule>

<IfModule mod_status.c>
    <Location /server-status>
        SetHandler server-status
        Require ip 127.0.0.1
        Require all denied
    #   To allow access from a specific IP:
    #   Require ip 192.168.1
    </Location>
</IfModule>

1.2 IBM HTTP Server での トレーシングの有効化(自動)

トレーシングの有効化も簡単です。Instanaエージェントの構成ファイル configuration.yamlにおいて、以下をコメントアウトするだけです。

# Apache Httpd
com.instana.plugin.httpd:
  tracing:
    enabled: true
    autoRestart: true     #自動再起動を許可(任意)

1.3 [ オプション ] IBM HTTP Server での トレーシングの有効化(手動)

外部接続が制限されている環境においては、以下のように手動で実施します。

a. トレーシング・モジュールの取得

製品ドキュメント に従い、環境に応じた 2つのモジュールをダウンロードします。
mod_dem_x86_64-1.0.14.so
tracelibrary_x86_64-1.0.14.so

b. トレーシング・モジュールの配置

今回の RHELの環境では、IHSが /opt/IBM/HTTPServer に導入されていますので、この下の modulesディレクトリに配置し、他と同様 755のアクセス権を設定します。

# pwd
/opt/IBM/HTTPServer/modules
# cp -p /tmp/mod_dem_x86_64-1.0.14.so .
# cp -p /tmp/tracelibrary_x86_64-1.0.14.so .
# chmod 755 mod_dem_x86_64-1.0.14.so  
# chmod 755 tracelibrary_x86_64-1.0.14.so
# ls -ltr
 (中略)
-rwxr-xr-x 1 root root   51736 Dec 14 01:49 mod_dem_x86_64-1.0.16.so
-rwxr-xr-x 1 root root 9344304 Dec 14 01:49 tracelibrary_x86_64-1.0.16.so
c. トレーシング・モジュールの有効化

httpd.confの最後に、以下の一行を追加します

LoadModule dem_module /opt/IBM/HTTPServer/modules/mod_dem_x86_64-1.0.14.so

2. Instanaでの メトリックと分散トレーシング稼働確認

Instana で稼働確認を行います。 サンプルアプリとして、Libertyで稼働する ModResort というアプリケーションを利用します。
Libertyで稼働していますが、フロントエンドは JavaScriptで選択に応じて表示が切り替わります。
image.png

2-1. Instanaでのトレーシングの稼働確認

実際にアクセスしてみると、IHSと Libertyのトレーシングが行われているのが分かります。
(Apacheの 分散トレーシングを設定していない場合、IHSは依存関係ビューに表れません)
image.png
IBM HTTP Server側の解析画面です。単発リクエストしか飛ばしていないのでシンプルですが、Apache httpdに届いた要求が確認できます。
image.png
Liberty側の解析画面です。IHSからフォワードされLibertyに届いた要求が確認できます。
image.png
要求の解析画面を開くと、IHSから Libertyに対してフォワードされた処理のシーケンスが確認できます。
image.png

これで、バックエンド側は Instanaで監視できるようになりました。
続いて、このアプリケーションに対して、エンドユーザー・モニタリングも設定してみましょう。

3. IBM HTTP Server での 自動 End User Monitoring の設定

3-1. End User Monitoring 監視対象の定義

まず、End User Monitoring の定義に必要な情報を確認します。
End User Monitoringの画面(Webサイトおよびモバイル・アプリケーション)にいおいて、Webサイトの追加を選択し、監視定義名(今回は Resorts)を設定します。
image.png
つぎのページで 以下のように End User Monitoringに必要なすべての情報が生成されます。
これまでは、これを Webページの < head > に組込んでいました。このなかで記載されている 小さなJavaScriptモジュールが、ブラウザのAPIなどを叩きながら 必要な情報をInstanaに送信します。
今回は、そのアプリケーション改修を行わず、Instnaエージェントの設定だけで、このモジュール組込みを実現します。ここにある内容は、Instanaエージェント側で設定が必要となりますので、 メモを取っておいてください。
image.png

3-2. Insana エージェントの構成ファイル更新

さきほど確認した内容を、Instanaエージェントの構成ファイルの com.instana.plugin.eum に反映します。構成ファイルには、コメントによる注釈が大量に入っていますが、必要な定義は以下のとおりです。なお、システムに入ってくる要求すべてを対象としたい場合も selector の記載が必要となります。

#EUM
com.instana.plugin.eum:
  instrumentation:
    websites:
       - name: Resorts
         key: rxxxxxxxxxxxxxxxQg
         enalebd: true
         reporingUrl: https://eum-<region>-saas.instana.io
         selector:
           matchExpressions:
             - key: 'url/hostname'
               operator: 'Equals'
               values:
                 - 'myresort-site.com'

configuration.yaml へ変更を保存したら、特に Instana Agent を再起動する必要はありません。自動的に変更が反映されます。

4. Instanaでの End User Monitoringの結果確認

Instana で稼働確認を行います。先ほどと同じ ModResort というサンプル・アプリケーションに対し、実際に要求を投げます。

4-1. End User Monitoringの結果

アプリケーションに手を入れずに End User Monitoringのデータが取得できていることがわかります。Webアプリケーションの初期ロード(onLoad)時間や、様々なリソースの取得時間、キャッチされていないJavaScriptエラーなどを拾うことが可能です。
image.png

ブラウザ側での個々の画像やCSSの取得タイミングや、ボタン操作のタイミングでの処理(今回の場合 最後の GET /resorts/weather?selectedCity=Cork など) が把握できます。
ユーザーが利用しているブラウザやOSの情報も分かりますので、問題判別に役立つかもしれませんね。
image.png

まとめ

アプリケーションに手をいれずに、基盤の設定だけで エンド・ユーザーのブラウザー側の挙動が把握できるようになるのは非常に便利です。とくにIHS(apahce) - APサーバーという構成で使えるこの機能は、多くのお客様環境で活かせる機能だと考えています。

13
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
0