Submit Search
Upload
.NET Core Generic Host のログをAzure Application Insights で見てみよう!
•
0 likes
•
824 views
Yuta Matsumura
Follow
https://vsuc.connpass.com/event/180470/
Read less
Read more
Technology
Report
Share
Report
Share
1 of 36
Recommended
「自分のとこでは動くけど…」を無くす devcontainer
「自分のとこでは動くけど…」を無くす devcontainer
Yuta Matsumura
チーム開発で徐々にコード品質をあげていく取り組み
チーム開発で徐々にコード品質をあげていく取り組み
Yuta Matsumura
.NETのサポートポリシーのおさらい #csharptokyo
.NETのサポートポリシーのおさらい #csharptokyo
Yuta Matsumura
App Modernization for .NET
App Modernization for .NET
Yuta Matsumura
分かったうえではじめるCI/CD
分かったうえではじめるCI/CD
Yuta Matsumura
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発
Yuta Matsumura
いつでもどこでも .NET
いつでもどこでも .NET
Yuta Matsumura
.NET アプリを改善して実践する継続的インテグレーション
.NET アプリを改善して実践する継続的インテグレーション
Yuta Matsumura
More Related Content
More from Yuta Matsumura
マイクロサービス開発が捗る Project Tye
マイクロサービス開発が捗る Project Tye
Yuta Matsumura
オンライン中心だから地方のコミュニティも見てみませんか? - Fukuoka.NETの紹介
オンライン中心だから地方のコミュニティも見てみませんか? - Fukuoka.NETの紹介
Yuta Matsumura
Azure の ID 管理サービスに LINE ログインを組み込もう
Azure の ID 管理サービスに LINE ログインを組み込もう
Yuta Matsumura
Blazor Server テンプレート解説
Blazor Server テンプレート解説
Yuta Matsumura
The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#
Yuta Matsumura
改めて C# でできることを振り返る
改めて C# でできることを振り返る
Yuta Matsumura
スタートアップ企業が実践するクラウドネイティブアプリケーションの開発手法
スタートアップ企業が実践するクラウドネイティブアプリケーションの開発手法
Yuta Matsumura
忙しい人のための .NET Conf 2019 まとめ
忙しい人のための .NET Conf 2019 まとめ
Yuta Matsumura
.NET Conf の歩き方
.NET Conf の歩き方
Yuta Matsumura
PHPカンファレンス福岡2019 閉会式
PHPカンファレンス福岡2019 閉会式
Yuta Matsumura
PHPカンファレンス福岡2019 開会式
PHPカンファレンス福岡2019 開会式
Yuta Matsumura
これから始める Bot Builder 開発のコツと舞台裏
これから始める Bot Builder 開発のコツと舞台裏
Yuta Matsumura
ASP.NET Core 2.x Identityについて
ASP.NET Core 2.x Identityについて
Yuta Matsumura
C# runs anywhere, make anything
C# runs anywhere, make anything
Yuta Matsumura
.NET Coreのいろは
.NET Coreのいろは
Yuta Matsumura
イケてる技術で品質を担保しつつスピード感のある開発を実現する冴えたやり方
イケてる技術で品質を担保しつつスピード感のある開発を実現する冴えたやり方
Yuta Matsumura
オルターブースが実践する .NET Core “ガチ” 開発
オルターブースが実践する .NET Core “ガチ” 開発
Yuta Matsumura
サーバーレスの常識を覆す Azure Durable Functionsを使い倒す
サーバーレスの常識を覆す Azure Durable Functionsを使い倒す
Yuta Matsumura
未知との交信!?Project SignalR
未知との交信!?Project SignalR
Yuta Matsumura
サーバーレスやマイクロサービスへの"チャレンジ"を後押ししてくれるセッションを紹介
サーバーレスやマイクロサービスへの"チャレンジ"を後押ししてくれるセッションを紹介
Yuta Matsumura
More from Yuta Matsumura
(20)
マイクロサービス開発が捗る Project Tye
マイクロサービス開発が捗る Project Tye
オンライン中心だから地方のコミュニティも見てみませんか? - Fukuoka.NETの紹介
オンライン中心だから地方のコミュニティも見てみませんか? - Fukuoka.NETの紹介
Azure の ID 管理サービスに LINE ログインを組み込もう
Azure の ID 管理サービスに LINE ログインを組み込もう
Blazor Server テンプレート解説
Blazor Server テンプレート解説
The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#
改めて C# でできることを振り返る
改めて C# でできることを振り返る
スタートアップ企業が実践するクラウドネイティブアプリケーションの開発手法
スタートアップ企業が実践するクラウドネイティブアプリケーションの開発手法
忙しい人のための .NET Conf 2019 まとめ
忙しい人のための .NET Conf 2019 まとめ
.NET Conf の歩き方
.NET Conf の歩き方
PHPカンファレンス福岡2019 閉会式
PHPカンファレンス福岡2019 閉会式
PHPカンファレンス福岡2019 開会式
PHPカンファレンス福岡2019 開会式
これから始める Bot Builder 開発のコツと舞台裏
これから始める Bot Builder 開発のコツと舞台裏
ASP.NET Core 2.x Identityについて
ASP.NET Core 2.x Identityについて
C# runs anywhere, make anything
C# runs anywhere, make anything
.NET Coreのいろは
.NET Coreのいろは
イケてる技術で品質を担保しつつスピード感のある開発を実現する冴えたやり方
イケてる技術で品質を担保しつつスピード感のある開発を実現する冴えたやり方
オルターブースが実践する .NET Core “ガチ” 開発
オルターブースが実践する .NET Core “ガチ” 開発
サーバーレスの常識を覆す Azure Durable Functionsを使い倒す
サーバーレスの常識を覆す Azure Durable Functionsを使い倒す
未知との交信!?Project SignalR
未知との交信!?Project SignalR
サーバーレスやマイクロサービスへの"チャレンジ"を後押ししてくれるセッションを紹介
サーバーレスやマイクロサービスへの"チャレンジ"を後押ししてくれるセッションを紹介
Recently uploaded
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
iPride Co., Ltd.
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
Atomu Hidaka
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
osamut
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価
sugiuralab
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
iPride Co., Ltd.
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツール
sugiuralab
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
Shota Ito
Recently uploaded
(7)
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツール
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
.NET Core Generic Host のログをAzure Application Insights で見てみよう!
1.
#vsucjp .NET Core Generic
Host のログを Azure Application Insights で見てみよう! 2020/07/04 VSUC #5 @tsubakimoto_s
2.
#vsucjp 松村 優大 (Yuta
Matsumura) Chief Technical Architect (C#, PHP, Azure) Microsoft MVP (Development Technologies) Fukuoka.NET Organizer @tsubakimoto_s Currently working for
3.
#vsucjp 今日のテーマ 1. .NET Core
の2つのホスト形式の紹介 2. アプリのログを Application Insights に集める 3. 汎用ホストのアプリケーションを ACI で動かす 4. まとめ
4.
#vsucjp Webホスト と 汎用ホスト .NET
Core には 2つのホスト形式があります。 1. Web ホスト ... HTTP サーバーを起動するための構成 2. 汎用ホスト ... 上記以外のアプリを起動するための構成 →コンソールアプリ、バックグラウンドアプリ など
5.
#vsucjp Webホスト と 汎用ホスト .NET
Core には 2つのホスト形式があります。 1. Web ホスト ... HTTP サーバーを起動するための構成 2. 汎用ホスト ... 上記以外のアプリを起動するための構成 →コンソールアプリ、バックグラウンドアプリ など
6.
#vsucjp コンソールアプリのコードを比較 (Program.cs) class Program { static
void Main(string[] args) { Console.WriteLine("Hello World!"); } } class Program { static void Main(string[] args) => CreateHostBuilder(args).Build().Run(); static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureServices((hostContext, services) => { services.AddHostedService<Worker>(); }); } 素のコンソールアプリ 汎用ホストのコンソールアプリ
7.
#vsucjp コンソールアプリのコードを比較 (Program.cs) class Program { static
void Main(string[] args) { Console.WriteLine("Hello World!"); } } class Program { static void Main(string[] args) => CreateHostBuilder(args).Build().Run(); static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureServices((hostContext, services) => { services.AddHostedService<Worker>(); }); } 素のコンソールアプリ 汎用ホストのコンソールアプリ
8.
#vsucjp CreateDefaultBuilder で行われること • ルートパスの設定
(Directory.GetCurrentDirectory) • 設定の読込 (環境変数、appsettings.json、シークレット等) • ログプロバイダーの追加 • Console, Debug, EventSource, EventLog (windows only) • スコープの検証と依存関係の検証の有効化 (開発環境のみ)
9.
#vsucjp コンソールアプリのコードを比較 (Program.cs) class Program { static
void Main(string[] args) { Console.WriteLine("Hello World!"); } } class Program { static void Main(string[] args) => CreateHostBuilder(args).Build().Run(); static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureServices((hostContext, services) => { services.AddHostedService<Worker>(); }); } 素のコンソールアプリ 汎用ホストのコンソールアプリ
10.
#vsucjp ConfigureServices で行われること • 依存性注入
(Dependency Injection) • ASP.NET Core で提供されている機能と同等 • 以下は自動的に登録される • IHostApplicationLifetime • IHostLifetime • IWebHostEnvironment
11.
#vsucjp IHostApplicationLifetime • 3つのイベントに処理を登録できる • アプリケーション起動後 •
アプリケーション終了時 • アプリケーション終了後 グレースフルシャットダウン (正常なシャットダウン)
12.
#vsucjp Ctrl + C
で停止
13.
#vsucjp 汎用ホストアプリケーションに Azure Application Insights
を使用する https://github.com/tsubakimoto/vscommunity-sample
14.
#vsucjp セットアップ 1. .NET Core
コンソールアプリケーションの作成 2. NuGet パッケージのインストール Microsoft.ApplicationInsights.WorkerService 3. 汎用ホストの構成に変更 4. appsettings.json の追加 +インストゥルメンテーションキーの追加 +プロジェクト設定 5. テレメトリクライアントを DI に登録
15.
#vsucjp $ dotnet new
console -n VsCommuunitySample $ cd VsCommuunitySample $ dotnet add package Microsoft.ApplicationInsights.WorkerService $ dotnet add package Microsoft.Extensions.Hosting $ touch appsettings.json
16.
#vsucjp
17.
#vsucjp インストゥルメンテーションキー デフォルトのログレベル (標準出力) Application Insights
のログレベル
18.
#vsucjp ビルド時に appsettings.json を出力フォルダにコピー
19.
#vsucjp テレメトリ収集のための実装 1. テレメトリクライアントを DI
から取り出す 2. “操作”の作成 (StartOperation メソッド) 3. ILogger でログを記述 4. 最終的にテレメトリを送信する (Flush メソッド) 5. アプリケーション終了前に数秒待機
20.
#vsucjp テレメトリクライアントの取り出し 操作の作成、ログの出力
21.
#vsucjp 起動後の処理 終了時の処理 終了後の処理
22.
#vsucjp インメモリのテレメトリを送信 送信後からプロセス終了までに数秒待機が必要
23.
#vsucjp
24.
#vsucjp Azure で汎用ホストアプリを動かすには つまりコンソールアプリケーションを動かすには • Web
Apps (WebJobs) • Web App for Containers • Azure Container Instances (ACI) • Azure Kubernetes Service (AKS)
25.
#vsucjp Q. バッチなら Azure
Functions でいいのでは? • コンテナー+汎用ホストアプリケーション • 可搬性を保ちたい • ファイル等のリソースを扱う (コンテナー実行後に破棄) • Azure Functions でのバッチ • 上記以外の場合 • トリガーが必要な場合
26.
#vsucjp Q. バッチなら Azure
Functions でいいのでは? • コンテナー+汎用ホストアプリケーション • 可搬性を保ちたい • ファイル等のリソースを扱う (コンテナー実行後に破棄) • Azure Functions でのバッチ • 上記以外の場合 • トリガーが必要な場合
27.
#vsucjp https://github.com/tsubakimoto/vscommunity-sample
28.
#vsucjp
29.
#vsucjp※ Azure Cloud
Shell で以下のコマンドを実行する $ git clone https://github.com/tsubakimoto/vscommunity-sample.git $ cd vscommunity-sample/VsCommuunitySample $ az acr build --image generichostsample:v1 ¥ --registry {your-azure-container-registry-name} ¥ --file Dockerfile . ACR Tasks ソースコード及び Dockerfile を使って、 コンテナーイメージのビルドを自動化する機能
30.
#vsucjp
31.
#vsucjp
32.
#vsucjp
33.
#vsucjp アプリ内の操作および ILogger のログ
34.
#vsucjp Azure Container Instances
で実行した
35.
#vsucjp リンク集 • https://github.com/tsubakimoto/vscommunity-sample • https://docs.microsoft.com/ja-jp/azure/azure-monitor/app/worker-service •
https://github.com/microsoft/ApplicationInsights-dotnet/issues/407 • https://docs.microsoft.com/ja-jp/aspnet/core/fundamentals/host/generic- host?view=aspnetcore-3.1 • https://docs.microsoft.com/ja-jp/azure/container-registry/container-registry- tasks-overview • https://docs.microsoft.com/ja-jp/azure/container-instances/container-instances- environment-variables
36.
#vsucjp まとめ • .NET Core
の汎用ホストには、コンソールアプリケーション やバックグラウンドアプリケーションの用途で使える • Application Insights でのテレメトリ収集には Microsoft.ApplicationInsights.WorkerService を使う • アプリケーション終了時に Task.Delay(n).Wait() が必要 • コンテナーイメージを作るパイプラインに ACR Tasks 便利 ※ Azure Pipelines もオススメ