Diary of a Perpetual Student

Perpetual Student: A person who remains at university far beyond the normal period

テクノロジー

go.modのgo directiveは1つ前のメジャーリリースより最新にしないでほしい

Go言語でOSSを開発しているみなさん、go.modのgo directiveにはどのような値を指定していますか?もしGo 1.25が最新のメジャーリリースである2025年12月現在で go 1.25.0 と書いているならば、この機会にぜひ go 1.24.0 に改めてくれないか、という話をしま…

Mackerelカスタムダッシュボードおまかせ生成機能の裏側

このエントリはMackerel Advent Calendar 2025 3日目の記事です。まだ空き枠がありますので、ご利用のみなさまぜひご参加ください。 qiita.com こんにちは、Mackerel開発チームサブディレクター・テックリードのid:arthur-1です。 Mackerelにはカスタムダッ…

あなたのOpenTelemetry CollectorのBatch Processorはもう不要かもしれない

これはOpenTelemetry Advent Calendar 2025 2日目のエントリです。2週間に1回欠かさずOpenTelemetery Collectorのアップデートを追っている身として、「意外と知られていないのでは?」と個人的に思っているネタを取り上げます。 Batch Processorの利用推奨…

GoReleaserをgoreleaser-action経由で使うか、go tool経由で使うか

様々な環境(OS・CPUアーキテクチャ)向けのインストールパッケージやDockerイメージを提供しなければならない、例えばCLIツールのようなものをGo言語で作るとき、多くの人がGoReleaserを利用しているでしょう。 goreleaser.com GoReleaserは動作検証のため…

tools.goを利用したツール管理の慣習をgo.modのtoolディレクティブに置き換えるツールとその実装

Go言語のtools.goを利用したツール管理の慣習を、go.modのtoolディレクティブに置き換えるツールを作ったのでご紹介します。 前提知識 Go言語にはGoで書かれたバイナリをインストールできるgo installコマンドという仕組みがあります。golangci-lintなど開発…

大吉祥寺.pm 2025でマイクの話をして、ナイトパーティーでDJをしました

大吉祥寺.pm 2025 大吉祥寺.pm 2025に「【実演版】カンファレンス登壇者・スタッフにこそ知ってほしいマイクの使い方」という発表で登壇しました。ほぼ同タイトルのエントリを過去に書いていて、この内容を実演を交えて紹介するという内容です。 blog.arthur…

OpenTelemetry Collectorで教師なし異常検知ができるIsolation Forest Processor

OpenTelemetry Collector Contrib v0.132.0のリリースノートを眺めていたところ、面白そうなProcessorがalphaステータスで出ていたのでご紹介します。その名もIsolation Forest Processor。 github.com Isolation Forestというのは二分木を用いた異常検知ア…

SRE NEXT 2025でOpenTelemetryセマンティック規約の紹介をしました

SRE NEXT 2025では、私が所属しているMackerel(株式会社はてな)がGold Sponsorとして協賛しておりました。その関係で、スポンサーセッションの登壇者として今回のSRE NEXTに参加することになりました。SREの哲学をenabledされたアプリケーションエンジニア…

Googleスライドのデフォルトページサイズは実は小さいので、解像度を上げる設定をすると良い

まとめ Googleスライドやそのテンプレートを作る人は、ページ設定から解像度を上げよう そうすると、Speaker Deckにアップロードするときなどに画像や文字の品質が上がる 本編 Googleスライドを新しく作成するとき、自然とアスペクト比が16:9の設定になって…

Goのソースコードを解析して、依存しているOpenTelemetry Semantic ConventionsのAttributeを洗い出すツールを作りました

モチベーション Go言語でできたアプリケーションにOpenTelemetryの手動計装を行う際、Semantic Conventionsに定められたAttributeを付与するため、OpenTelemetry Go SDKのsemconv packageに定義されている定数や関数を参照してコードを書くことがあります。…

Mackerel開発チームサブディレクターになりました

新卒入社からもうすぐ丸3年、Mackerel開発チームのテックリードになってから3か月というタイミングになりますが、2月の人事異動で同チームのサブディレクターになりました。 といっても業務内容は1月までと大きく変わりません。テックリードは引き続き務めま…

【令和最新版】OpenTelemetry Collector Receiverの作り方(2024年12月版)

これは OpenTelemetry Advent Calendar 2024 15日目の記事です。 前置きが少しばかり長いので、目的の情報をすぐにでも知りたい方は以下の目次からスキップしてください。 前置き OpenTelemetry Collector Receiverを作るための事前知識 OpenTelemetry Colle…

PipeCDでデプロイメントが完了したらMackerelのグラフアノテーションに記録する

これは Mackerel Advent Calendar 2024 1日目の記事です。 前置き こんにちは。サーバー監視・オブザーバビリティプラットフォームであるMackerelの開発者で、「オブザーバビリティの実現」チームでテックリード兼プロダクトオーナーをしております id:arthu…

Mackerel オブザーバビリティユニット(仮称)のテックリードになります

本日よりMackerel開発チームは内部的に2つのユニットに分割されることになったのですが、一方であるオブザーバビリティユニット(仮称)のテックリードに私 id:arthur-1 が就任しました。オブザーバビリティプラットフォームとしてのMackerelの機能や、その…

AWSのARNに日本語文字や絵文字が入ることがあるのを知っていましたか?

AWSにおいてリソースの識別子として使われるAmazonリソースネーム(ARN)というものがあります。私は、ARNには英数字と一部記号しか使えないものとばかり思っていました。 それでは以下の画像をご覧ください: なんと、ARNに日本語どころか絵文字まで入って…

GitHub ActionsのGoのバージョンをtoolchainディレクティブの指定ぴったりで固定したい場合

blog.arthur1.dev 以前公開したGoのバージョン指定・更新に関するブログで、GitHub Actionsのsetup-goについてこんなことを書きました。 stableを指定しておけば、大体の場合(最新に保った)toolchainディレクティブ以上のバイナリを最初から用意してくれる…

AWS AppConfig 機能フラグ向けのOpenFeature Go Providerを作りました

2024-09-01 v0.2.0で破壊的な変更をリリースしたので本エントリのコードも合わせて修正しました OpenFeatureとは OpenFeatureをご存知ですか?OpenFeatureは特定のベンダーに依存しないフィーチャーフラグの標準APIを定めるプロジェクトです。CNCF仲間のOpen…

Go製アプリケーション/ライブラリにおけるメンテナンス性を重視したGoのバージョン管理戦略

2024-08-28 GOTOOLCHAIN=auto時にはtoolchainディレクティブに指定したものより新しいGoがインストールされていても戻るわけではないという話を追記しました。 Go言語では半年に1回メジャーリリース(マイナーバージョンの更新)がやってきます。ちょうどこ…

SRE NEXT 2024で当日スタッフをしました&イベントの信頼性を支えるテクニック

去る2024年8月3日(土)・4日(日)に開催されたSRE NEXT 2024にて、当日スタッフをしておりました。SRE NEXTの当日スタッフとして関わるのは昨年に続き2度目となります。今回はTrack Aのお部屋で司会・タイムキーパー・誘導などしていましたので、ご来場い…

Azure SDKのHTTP Pipeline Policyの活用事例:APIコール数手動計装とクライアントサイドキャッシュ

様々な言語で提供されているAzure SDKのコアモジュールにはHTTP Pipeline Policyという仕組みが実装されています。 Java版のドキュメントが一番わかりやすかったので、こちらに掲載されている画像を引用して、HTTP Pipeline Policyが何たるかを説明します。 …

銅鑼パーソン的YAPC::Hiroshima 2024日記

ブログを書くまでがYAPC!ということで、今更すぎますがYAPC::Hiroshima 2024の振り返り記事を書いていきます。ログなのでメッセージ性はそんなにありません。 yapcjapan.org Stats 株式会社はてなのエンジニア(当時新卒2年目) YAPC参加歴は2回目 前回の参…

Go言語でHTTPレスポンスを透過的にキャッシュする

Webアプリケーションの裏側にさらにHTTPサーバが立っていて、レスポンスを返すために裏側のサーバにリクエストを送ってその結果を必要とするような構成があります。裏側のサーバに設定さえたAPIレートリミットへの対応やサーバへの過負荷を避けるため、キャ…

待ち受けポートをカスタムしたsshdをアプデしたらsshで繋げなくなってしまった問題のポストモーテム

事象 piyolog.hatenadiary.jp CVE-2024-6387の対応のため、個人開発サービスを運用していてインターネットに露出しているサーバのopenssh-serverをアップデートしていた。 Google CloudのCompute Engineで立てているあるサーバのopenssh-serverをapt upgrade…

OpenTelemetryのテレメトリとMackerelのホストをResource Attributesで紐づけるためのOTelcol Processorを作りました

OpenTelemetryを使い始めるにあたって、既存の監視ツールからいきなり切り替えることは難しく、基本的には一時的に並行稼働させて様子を見ることになると思います。 これまでmackerel-agentをインストールし、Mackerelにホストとして登録してシステムメトリ…

OpenTelemetry Metricsを手軽に投稿できるCLIツールotlcのv0.2.0をリリースしました

blog.arthur1.dev でご紹介した、OpenTelemetry Metricsを手軽に投稿できるCLIツール「otlc」のv0.2.0をリリースしたので再度ご紹介します。 github.com 使い方 インストール (macOS, Linux)×(x86_64, arm64)向けのバイナリをGitHubのReleaseで配布していま…

IPsec VPN実装であるLibreswanの状態を監視できるMackerelプラグイン

IPsec VPN実装であるLibreswanの状態をメトリックとして見られるようにするMackerelプラグインを作りました。 github.com strongSwanのものは先人が作っていましたが、Libreswanのものがなかったので自作した形です。 nonylene.hatenablog.jp 何が見られるか…

OTel Collectorでrunnによるシナリオテストの結果を投稿できるrunnreceiverを作りました

blog.arthur1.dev の続編です。今回はrunnによるシナリオテストの結果を投稿するツールをOpenTelemetry CollectorのReceiver (Scraper)として作ってみました。 リポジトリ 以下のリポジトリで id:arthur-1 によるOpenTelemetry Collectorの自作Component群を…

Go言語のloggerをDefault1つで済ませる方法:slog Handlerがcontextの中身を見てよしなにするパターン

先日、kamakura.go #6にて、「slog登場に伴うloggerの取り回し手法の見直し」という題で登壇しました。Go Conference 2024にこの内容でproposalを出していて落選してしまったのですが、kamakura.go #6のテーマ「昔のGo、今のGo」とピッタリだったので応募し…

OpenTelemetry MetricsのUnitに何を記述すべきか

OpenTelemetryにおいて、OTel CollectorのReceiverを開発するときやアプリケーションに計装をする際、MetricsのUnit(単位)にどんな文字列を指定すべきかよく分からなかったので調べてみました。 semconv OpenTelemetryにはSemantic Conventions(semconv)…

カンファレンス登壇者・スタッフにこそ知ってほしいマイクの使い方

オフラインの技術カンファレンス・イベントも徐々に復活し賑わいを見せつつある今日この頃、いかがお過ごしでしょうか。 多くの聴衆に等しく声を届けるための道具「マイク」はカンファレンスに欠かせないものとなっています。 普段はアプリケーションエンジ…