狠狠撸
Submit Search
20190604 Containerized MagicOnion on kubernetes with Observability with New Relic
?
0 likes
?
1,198 views
Takayoshi Tanaka
Follow
MagicOnionで作ったアプリをContainer化してkubernetesで動かして、New Relicで監視する
Read less
Read more
1 of 25
Download now
More Related Content
20190604 Containerized MagicOnion on kubernetes with Observability with New Relic
1.
MagicOnion を Container 化して kubernetes
で動かして New Relicで監視する 2019/06/04 @tanaka_733
2.
自己紹介 Senior Technical Support
Engineer @ New Relic K.K. ? アプリケーションプラットフォーム監視(APM)のSaaSです ? 日本語サポートなど日本市場に注力しています Microsoft MVP for Azure (2018 Jul- 2019 Jun) ? .NET Core on Linux, Kubernetes, Azureなどのお仕事してました ? Visual StudioやQ#などにも興味があります ソーシャル活動 ? Twitter: @tanaka_733 ? Blog: 銀の光と碧い空 ? Qiita (New Relic関連): https://qiita.com/takayoshitanaka
3.
今日のテーマ MagicOnion(サーバー側)を(Linux)コンテナ化して動かす コンテナ化したアプリをkubernetes上で動かす MagicOnion(サーバー側)をNew Relicで監視する 資料ででてくるコードはここにあります https://gist.github.com/tanaka- takayoshi/b64e74305029a5820b6386ddb1996749
4.
MagicOnion をコンテナ化
5.
コンテナにしよう Linuxコンテナで! ? .NET CoreなのでWindowsでも動くけどメリットがない MagicOnion.Hostingを使おう ?
Console.ReadLineはコンテナ上では期待通り動かないです Listeningアドレスは 0.0.0.0 で ? コンテナこしのネットワークなのでlocalhostではないのです
6.
MagicOnion.Hosting Console.ReadLine()はコンテナ内だと待機せずプロセスが終了する 面倒でもHostingを使いましょう
7.
Dockerfileの例 ASP.NET CoreでVisual Studioが用意してくれるDockerfileを流用 マルチステージビルドで動かすコンテナにソースコードや中間バイナリなどを入れないようにする
8.
コンテナを 動かそう
9.
コンテナをどこで動かすか オンプレかクラウドか AWSなら ? EKS, ECS Azureなら ?
ACI, AKS (コンテナでなければWebAppでも) GCPなら ? GKE などなどお好きなところで。 コンテナ化することで、同じコンテナイメージをどこでも動かせる。
11.
Kubernetes? https://kubernetes.io/ja/docs/tutorials/kubernetes-basics/explore/explore-intro/ 多くの場合、Node=仮想マシン コンテナとvolumeをまとめた もの。1つのアプリ。 永続化ストレージ コンテナ化したアプリ =さっき作ったコンテナイメージ
12.
kubernetesでMagicOnion Podの公開、ロードバランシング Podのオートスケーリング Redis Backplaneの準備 Podにする?外部サービス? Podのデプロイ Podのヘルスチェック
13.
kubernetesでMagicOnion とりあえずkubernetesで動かすとしたうえでの課題 ? インターネットへの公開やロードバランシングどうしよう ? デプロイ(アプリの更新)どうしよう? ?
ヘルスチェックどうしよう? ? スケーリングどうしよう? ? Redis Backplaneどうしよう? 詳細はLTなので省略(ご希望あればセッション枠ください) ただ、kubernetesじゃなくても考慮は必要な項目(のはず) Kubernetesであればその機能を活用することが可能
14.
公開とロードバランシング Kubernetesではサービスというオブジェクトを作ってPodと通信する 既存の機能はHTTPやTCP向けにまず作られているのでgRPC向けの考慮が必要 単純なTCPでのロードバランシングでよければ、TCP向けのサービスで問題ない より複雑なバランシングが必要であればどこかにバランサー要素を入れる必要がある ? クラウドロードバランサ(ALBs)が対応してくれればうれしいけど ? Nginx-ingressとかenvoyとかIstioとかぐぐるといろいろ見つかるけど
15.
とりあえず動かす場合の定義例 単純にdeploymentを作って、クラウドLoadBalancer で公開する例
16.
New RelicでObservability
17.
New Relicの.NET Coreコンテナ対応 基本的な流れはQiitaに書いてあります ?
https://qiita.com/takayoshitanaka/items/6eef46d821704a7384dc 推奨手順はインストーラー実行なのでDockerfile内でインストール実行 ? インストーラー実行せずともdllやconfigなどを一式コピーしても動作はする .NET CoreではkestrelおよびIISのみデフォルトで監視 ? Kestrelを使わないMagicOnionだとカスタムインスツルメンツが必要
18.
New Relic用のDockerfile例 環境変数の設定 (ライセンスキーとアプリ名は コンテナ起動時に指定しているので ここでは省略) Agentのインストーラーを インターネットから取得してインストール 必要な設定ファイルをローカルから 所定の位置へコピー
19.
kubernetesのdeploymentに 環境変数を追加
20.
カスタムインスツゥルメント用config例 このXMLファイルを/usr/local/newrelic-netcore20-agent/extensions/ (Linuxでの既定)以下に追加する
21.
カスタムインスツゥルメント用config例 Transactionに指定して測定したいメソッド1つにつき、1つtraceFactoryを作る カスタム用のデフォルト メトリクスの名前を決める アセンブリ名 クラス名 メソッド名
22.
属性によるトランザクション指定と イベントの記録 数値型はSingle推奨
25.
まとめ コンテナでもMagicOnionは動きます ? はやりのkubernetes上でも動きますよ ? コンテナに限らず、スケーリングなどの考慮は必要 New
Relicで監視できます! ? コンテナ化+kubernetes環境ならExplorerあります ? カスタムイベント含め、各種メトリクスを監視 New RelicへのFeedbackください ? MagicOnionで動かすゲーム(アプリ)をNew Relicで監視したいけど、○○ができない! ? MagicOnionじゃないけど、ゲーム?アプリサーバーを監視したいけど( ? C#じゃないけど(まで大歓迎
Download