- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2020-08-26T03:39:26+00:00","","")
#author("2020-08-27T09:29:07+00:00","","")
#mynavi(Azureメモ)
#setlinebreak(on);
* 概要 [#y51ca554]
#html(<div class="pl10">)
#TODO
以下、関数アプリはカスタムハンドラーを利用した Goの実装となっている為、デフォルトでサポートされている言語の場合と異なる箇所もある。
#html(</div>)
* 目次 [#v017171e]
#contents
- 関連
-- [[Azureメモ]]
- 参考
-- [[Application Insights とは何か?>https://docs.microsoft.com/ja-jp/azure/azure-monitor/app/app-insights-overview]]
-- [[Application Insights ログベースのメトリック>https://docs.microsoft.com/ja-jp/azure/azure-monitor/platform/app-insights-metrics]]
-- [[Application Insights のログベースのメトリックと事前に集計されたメトリック>https://docs.microsoft.com/ja-jp/azure/azure-monitor/app/pre-aggregated-metrics-log-metrics]]
-- [[Azure App Service のアプリの監視>https://docs.microsoft.com/ja-jp/azure/app-service/web-sites-monitor]]
-- [[Azure での Web アプリケーションの監視>https://docs.microsoft.com/ja-jp/azure/architecture/reference-architectures/app-service-web-app/app-monitoring]]
-- [[Microsoft Azure のアラートの概要>https://docs.microsoft.com/ja-jp/azure/azure-monitor/platform/alerts-overview]]
-- [[Azure Functions を監視する>https://docs.microsoft.com/ja-jp/azure/azure-functions/functions-monitoring?tabs=cmd]]
-- [[Application Insights の使用量とコストを管理する>https://docs.microsoft.com/ja-jp/azure/azure-monitor/app/pricing]]
-- [[Azure Monitor でログ クエリの使用を開始する>https://docs.microsoft.com/ja-jp/azure/azure-monitor/log-query/get-started-queries]]
-- [[Kusto の概要>https://docs.microsoft.com/ja-jp/azure/data-explorer/kusto/concepts/]]
-- [[Kusto クエリ言語>>https://docs.microsoft.com/ja-jp/azure/data-explorer/kusto/query/]]
* 関数アプリの診断設定 [#gb2d0ebd]
* Application Insight の有効化 [#yb693fa9]
#html(<div class="pl10">)
関数アプリのログを一定期間保持しておきたい場合は、Application Insight を有効化した状態で Functions を作成しておく。
** 関数アプリをCLI で作成する場合 [#e35b4109]
#html(<div class="pl10">)
#myterm2(){{
# application insight コンポーネントの作成
az monitor app-insights component create \
--app $insightsName \
--location $insightsRegion \
--resource-group $resourceGroup \
--query-access Enabled \
--retention-time $insightsDays \
--subscription $subscriptionId
# 関数アプリの作成
az functionapp create \
--name $funcAppName \
:
--app-insights $insightsName <-- これ
}}
※ retention-time は ログの保持期間(日数)で 30,60,90,120,180,270,365,550,730 の何れかを設定する。
#html(</div>)
** 関数アプリをポータルから作成する場合 [#wc017e90]
#html(<div class="pl10">)
#html(<div class="ib border">)
&ref(func_setting_insight1.png,nolink);
#html(</div>)
#html(</div>)
#html(</div>)
* カスタムハンドラを使用した関数アプリの場合 [#d749be2a]
#html(<div class="pl10">)
カスタムハンドラを使用した関数アプリの場合は、Insight に扱ってもらう為には、戻り値として Logs を返却しておく必要がある。
※https://docs.microsoft.com/ja-jp/azure/azure-functions/functions-custom-handlers#response-payload
goの場合
#mycode2(){{
logs := make([]string, 0)
:
:
logs = append(logs, fmt.Sprintf("[INFO] %s", "サンプルログ1"))
logs = append(logs, fmt.Sprintf("[INFO] %s", "サンプルログ2"))
fmt.Printf("[INFO] 標準出力にメッセージを出力")
invokeResponse := InvokeResponse{Logs: logs, ReturnValue: string(returnValue)}
js, err := json.Marshal(invokeResponse)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
w.Header().Set("Content-Type", "application/json")
w.Write(js)
}}
#html(</div>)
* ホストのログは何処で見れるのか [#b4e1d41c]
#html(<div class="pl10">)
以下に説明があるように、関数アプリのコードは、ファイル共有を利用して各インスタンスにマウントされる。
https://docs.microsoft.com/ja-jp/azure/azure-functions/storage-considerations
で、このPATH配下にアプリケーションのログも格納されており、ストレージエクスプローラで見る場合ログのPATHは以下の通り。
| ログ | 種別 | PATH |h
| 関数アプリのログ | File Shares(ファイル共有) | 関数アプリ名/LogFiles/Application/Functions/Function 配下 |
| ホストのログ | File Shares(ファイル共有) | 関数アプリ名/LogFiles/Application/Functions/Host 配下 |
#html(</div>)
* アラートの設定 [#zb5a8bf1]
#html(<div class="pl10">)
Azure Monitor でログの検索、アラートの設定を行う事が出来る。
//Azure Monitor の統合アラート エクスペリエンス <- 以前は Log Analytics と Application Insights によって管理されていたアラートも含まれるようになった。
クエリサンプル
#mycode2(){{
traces | where operation_Name=="BlobTrigger2" and message has_cs "test"
traces | summarize errorCount=countif((operation_Name=="BlobTrigger2" and message has_cs "test" and timestamp > ago(1h)) > 0)
}}
#html(</div>)