銀の光と碧い空

クラウドなインフラとC#なアプリ開発の狭間にいるエンジニアの日々

OpenTelemetry .NETを理解する (9) .NET 7でのOpenTelemetry対応の強化

この記事はOpenTelemetry Advent Calendarの6日目の記事です。 qiita.com 先日リリースされた .NET 7ではObservabilityへの投資がリリースブログに項目にあります。 devblogs.microsoft.com .NETにおけるOpenTelemetry対応は、.NET本体ではなくOpenTelemetry…

.NET 7で導入されたビルトインコンテナサポートを試してみた

.NET 7になって .NET SDKだけでコンテナのビルドができるようになりました。 devblogs.microsoft.com このブログの最初にある通り、Microsoft.NET.Build.Containers というライブラリを追加すると利用できる機能ですが、(temporary)とあるのでそのうち不要に…

.NET 7についてまとめてみた

自分の勉強がてらまとめています。公式ブログを日本語で、すぐ目を通せることを目的にしています。この記事では.NET 7のテーマについてまとめています。 devblogs.microsoft.com .NET 7の新機能 シナリオ ユニファイド 1つの基本ライブラリ .NET 7をターゲッ…

OpenTelemetry .NETを理解する (8) 手動でのトレースの接続例: Azure Service Busを経由したアプリ間でトレースをつなげる

複数サービス間での分散トレースは、必要な情報をサービス間で伝搬するContext Propagationによって実現されています。 opentelemetry.io HTTPでサービスを呼び出している場合、HTTPヘッダーを利用して伝搬させることがほとんどで、最近になってW3C Trace Co…

Visual Studioからdocker composeを使っていて、突然「unexpected character "»" in variable name near "\ufeff" 」というエラーが出たら

"\ufeff" はかの有名なByte Order Mark(BOM)です。 現状のdocker composeでは.envファイルなどにBOMがあると正しく処理ができずエラーになるようです。 github.com Visual Studio使わない場合でも起こりえると思いますが、Visual Studioを使った docker co…

インサイドWindows第7版(下)第10章の書評

今回、インサイドWindows第7版(下)を山内さんより献本いただきました。全部読了する前に、最も興味を惹かれた第10章「管理、診断、トレース」を読んで、書評を掲載します。なお、ご自身のブログにて目次が公開されています。 yamanxworld.blogspot.com この…

OpenTelemetry .NETを理解する (7) おさらいとASP .NET Coreでの計装サンプル公開

ここでいちどおさらいです。 OpenTelemetry .NETの現在地 GitHubのページで確認できる通り、Logs、Metrics、Tracesの3要素ともStableになりました。 github.com が、注意書きにある通り、ILoggerなどのログフレームワークから出力されたログを取り込む OpenT…

OpenTelemetry .NETを理解する (6) コード修正不要な自動計装ライブラリを利用する

前回の投稿から時間が空きましたが、今回は今までとは違う方法での計装を試してみます。 今までの方法は、ソースコードの修正を前提とするものでした。トレース、ログ、メトリクスの1つ1つを詳細に計測するコードは必要なく、例えばASP.NET Coreに対応した計…

公開スライドをSlideshareからドクセルに移しています

今まで登壇資料などはSlideShareに公開していたのですが、徐々にドクセルに移しています。 www.docswell.com 一時期、docs.com を利用したこともあったのですが、サービス終了したこともありSlideShareを使い続けていました。が、買収により所有企業がころこ…

OpenTelemetry .NETを理解する (5) HttpClientによる外部通信処理を計測する

前回はスパンに情報を追加しました。 tech.tanaka733.net 次にトレースをさらにスパンで区切ってどの処理に時間がかかっているか計測することにします。スパンは作業の単位で区切ります。原理的には1メソッド1スパンで記録することもできますが、計測のオー…

OpenTelemetry .NETを理解する (4) Spanに情報を追加する

今回は、第2回目で計装したコードを基に、計測したSpanに情報を追加してみます。 tech.tanaka733.net 以下のコードを出発点にします。 app.MapGet("/weatherforecast", (ILogger<Program> logger, HttpContext context) => { var forecast = Enumerable.Range(1, 5).S</program>…

Observabilty Conference 2022 by CloudNative Daysで登壇しました

所属は明らかにしていますが、個人登壇という立場で「Deep Dive Distributed Tracing」というセッションをしてきました。発表内容もW3C Trace ContextやOpenTelemetryなどを中心にしつつ、できるだけ特定のツールの考え方ではなく共通で考えられているものを…

OpenTelemetry .NETを理解する (3) デバッグログを出す

OpenTelemetry .NET で計測していると、正しく動作しているか確認したいときがあります。OpenTelemetry .NETにはこのようなときのために、自己診断機能が用意されています。 opentelemetry-dotnet/README.md at main · open-telemetry/opentelemetry-dotnet …

OpenTelemetry .NET ハンズオンを行いました

C# Tokyoでの企画でOpenTelemetryの初心者向けハンズオンを行いました。 csharp-tokyo.connpass.com OpenTelemetry .NETについての発表資料はこちらです。 202202 open telemetry .net handson from Takayoshi Tanaka www.slideshare.net ハンズオン課題はこ…

OpenTelemetry .NETを理解する (2) ASP.NET CoreにOpenTelemetryをまずいれてみる

今回からは実際にOpenTelemetry .NETを使って計測してみることにします。まずは、ASP.NET Core (.NET 6)を題材にします。 OpenTelemetryのドキュメントと重なる部分も多いのであわせて参照してみてください。 opentelemetry.io 最初の計装 まずは、計測対象…

Azure Chaos Studio を試してみる サービス直接ターゲット編

先日、カオスエンジニアリングをマネージドサービスとして提供するAzure Chaos Studioが発表され、プレビューとして利用できるようになっています。 azure.microsoft.com docs.microsoft.com せっかくなので試してみようと思い、いろいろやった結果をまとめ…

OpenTelemetry .NETを理解する (1) OpenTelemetryとは

OpenTelemetry .NETを使って.NETアプリケーションを計測する方法について複数回にわたって紹介してみたいと思います。まず .NET向けの話に行く前に、OpenTelemetryそのものについてかんたんにまとめてみます。 OpenTelemetryの誕生 アプリケーションのパフォ…

2021年10月にCKAとCKADに同日受験して合格しました

CKA: Certified Kubernetes AdministratorとCKAD: Certified Kubernetes Application Developerを同じ日に受験して合格しました。 CKA/CKAD(あとCKSも?)は、例えばAzureの資格試験(AZ-303: Microsoft Azure Architect Technologiesなど)と異なり、実際のk…

C# Tokyoで「New Relicで.NETアプリケーションを計測する」を開催しました

こちらのイベントでお話しした資料を公開します。 【オンライン】New Relicで.NETアプリケーションを計測する - connpass 202109_Observability-for-csharp-engineer from Takayoshi Tanaka www.slideshare.net リンク クラウドネイティブセキュリティジャパ…

2020年を振り返る

年末にかけて有給を取っていたこともあり、なんとなくプログラミングから離れていたのですが、振り返りは大事ということで振り返っておきたいと思います。 New Relic でのお仕事 昨年4月に転職したので2年目に入ります。徐々に日本法人のお客様も増え、社員…

Azure CLIを使ってaz aks createでOperation failed with status: 'Bad Request'.と出たときの対処

Azure CLIでログインはできていて他のコマンドはうまく動くのにaz aks createだけ次のようなエラーが出ることがあります。 Operation failed with status: 'Bad Request'. Details: The credentials in ServicePrincipalProfile were invalid. Please see ht…

2020年を振り返る

年末にかけて有給を取っていたこともあり、なんとなくプログラミングから離れていたのですが、振り返りは大事ということで振り返っておきたいと思います。 New Relic でのお仕事 昨年4月に転職したので2年目に入ります。徐々に日本法人のお客様も増え、社員…

2020年を振り返る

年末にかけて有給を取っていたこともあり、なんとなくプログラミングから離れていたのですが、振り返りは大事ということで振り返っておきたいと思います。 New Relic でのお仕事 昨年4月に転職したので2年目に入ります。徐々に日本法人のお客様も増え、社員…

.NET 5 関連の新機能をまとめてみた

11月の.NET Confでリリースが予定されているされた .NET 5 関連の新機能をできるだけまとめてみました。ASP.NET CoreとEF Coreは除いています。 リリースにあわせていくつか更新しています。 そしてそんな .NET 5に興味のある方はぜひこちらのイベントにご参…

System.Text.JsonやJson.NET で一部だけキーが可変なJSONを処理する

とあるREST APIのエンドポイントが /values/xxx みたいなエンドポイントに対して次のような形式のJSONを返します(実際にはこの3倍くらい属性があり、listの中の配列も多数あります)。XXXで指定した名前の値のリストを取得するというイメージで、この名前のパ…

Microsoft Q# Coding Contest – Summer 2020の復習(5) ユニタリーの識別

Q# DT

今回からは本選の解説をまとめていきます。 codeforces.com 今回は予選のA問題と同じくユニタリー操作を識別する問題A1~A7です。予選問題の解説まとめ記事はこちら。 tech.tanaka733.net

Microsoft Q# Coding Contest – Summer 2020の復習(4) 量子機械学習

Q# DT

Warmupラウンドの最後、D1とD2の量子機械学習のまとめです。 Problem - D1 - Codeforces Problem - D2 - Codeforces

Microsoft Q# Coding Contest – Summer 2020の復習(3) 状態の生成

Q# DT

本日はC1 |01⟩ + |10⟩ + |11⟩状態の生成です。 https://codeforces.com/contest/1356/problem/C

Microsoft Q# Coding Contest – Summer 2020の復習(2) 可逆計算

Q# DT

前回のA1~A5 ユニタリーの識別に引き続き、今回はB1,B2の可逆計算(Reversible computing)のおさらいです。 可逆計算をWikipediaで見てみると次のように書いています。 可逆計算(かぎゃくけいさん、英: Reversible computing)とは、可逆な、すなわち計算…

Microsoft Q# Coding Contest – Summer 2020の復習(1) ユニタリーの識別

Q# DT

1か月以上前ですが、Microsoft Q# Coding Contest がSummer 2020として今年も行われました。復習をまとめておきたいと思います。まずは、warmupのA問題、ユニタリーの識別です。公式の解説記事はこちらです。 codeforces.com A1からA5の問題は与えられたユニ…