はじめに
s−ikeokaです
OracleApplication Performance Monitoring(APM)とは、一般的にはアプリケーションやシステムの性能を管理・監視することを指します。Oracle Application PerformanceMonitoringでは、アプリケーションやシステムの応答時間を調査することや、アプリケーションを構成するさまざまな要素のパフォーマンスを調査することなどにより、アプリケーション全体の稼働状況を把握します。
目次
- 環境
- 前提条件
- 1.ポリシーの作成
- 2.APMドメインの作成
- 3.データアップロードエンドポイントとデータキーの取得
- テストアプリ作成
- リアル・ユーザ・モニタリング
- OCIモニタリング
環境
今回利用するOracleCloud環境
コンパートメント | enigma |
グループ | APM-Admins |
APMドメイン名 | APM-Admin |
前提条件
事前に以下の設定をしておく必要があります。
- ポリシー作成
- PMドメインを作成
- データアップロードエンドポイントとデータキーを取得
1.ポリシーの作成
APMドメイン管理権限
- Allow group APM-Admins to manage apm-domains in compartment enigma
モニタリング監視用にアラーム作成、通知権限
- Allow group APM-Admins to manage alarms in compartment enigma
- Allow group APM-Admins to read metrics in compartment enigma
- Allow group APM-Admins to use ons-topics in compartment enigma
ポリシーをAPM-Adminsグループに割り当てる。
2.APMドメインを作成
コンソールから以下の手順で作成する。



3.データアップロードエンドポイントとデータキーを取得

テストアプリ作成
任意のサーバにdockerテスト用pythonアプリを作成します。
../samcats/
├── app.py
├── Dockerfile
├── requirements.txt
└── templates
└── index.html
app.py
`from flask import Flask, render_template
import random
app = Flask(__name__)
# list of cat images
images = [
"http://ak-hdl.buzzfed.com/static/2013-10/enhanced/webdr05/15/9/anigif_enhanced-buzz-26388-1381844103-11.gif",
"http://ak-hdl.buzzfed.com/static/2013-10/enhanced/webdr01/15/9/anigif_enhanced-buzz-31540-1381844535-8.gif",
"http://ak-hdl.buzzfed.com/static/2013-10/enhanced/webdr05/15/9/anigif_enhanced-buzz-26390-1381844163-18.gif"
]
@app.route('/')
def index():
url = random.choice(images)
return render_template('index.html', url=url)
if __name__ == "__main__":
app.run(host="0.0.0.0")`
テストアプリは8888ポートにアクセスすると画像を返す処理をします。
http://xxx.xxx.xxx.xxx:8888 (XXXはホストIP)
リアル・ユーザー・モニタリング
リアルユーザモニタリングはページの読み込み時間とユーザーアクションを監視することにより、パフォーマンスの低下を識別します。
<script>
window.apmrum = (window.apmrum || {});
window.apmrum.serviceName='samcats';←アプリケーション名
window.apmrum.webApplication='samcats';←APM表示名
window.apmrum.ociDataUploadEndpoint='https://aaaac6fl7alzcaaaaaaaaaaaxy.apm-agt.ap-osaka-1.oci.oraclecloud.com';←データアプロードエンドポイント
window.apmrum.OracleAPMPublicDataKey='ZDFQYR2EZGAPR3ZZMYX6YGZZLXXLMO57';←パブリックデータキー
</script>
<script async crossorigin="anonymous" src="https://aaaac6fl7alzcaaaaaaaaaaaxy.apm-agt.ap-osaka-1.oci.oraclecloud.com/static/jslib/apmrum.min.js">
</script>
index.htmlヘッダー領域に必要なコードを含めます。
APMドキュメントのAPMブラウザエージェントコードをヘッダー領域に追加する。
先程コピーしたデータアップロードエンドポイント、パブリックデータキーを追加する。



合成モニタリング
合成モニターは、アプリケーションパフォーマンス監視データソースの一種で
URLのステータス監視などを行えるようになります。


タイプ Browserを指定
ベースURL URLを指定

実行時間 10分
タイムアウト 1分

メトリックに監視設定アラームの設定もできます。
まとめ
APMは他社の製品もありますが、Oracle Management Cloudでも提供してるのでぜひ利用してみてください。
使い始めるのは非常に簡単です。
AWS、Azure等他クラウドやオンプレに構築しているアプリケーションにも対応可能です。
コストは1日あたり約$16程度で利用できるようです。
今回はインストールまでとしましたが、次回は解析に使いそうなモニタリングの内容を触って見たいと思います。