Diary of a Perpetual Student

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

テクノロジー

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)…

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

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

登壇ふりかえり:Hatena Engineer Seminar 個人開発回 & Scalaわいわい勉強会 #2

2024年に入って2件登壇しましたので、こちらのエントリで振り返っていきます。 Hatena Engineer Seminar #28 「技術習得を支え続けた私の個人開発ヒストリー」 Scalaわいわい勉強会 #2「見せ算をScalaで実装してみた」 Hatena Engineer Seminar #28 「技術習…

arm64の場合/proc/cpuinfoでCPUのモデル名が取得できない件とその対策

arm64では/proc/cpuinfoからCPUのモデル名を取得できない Linuxにはシステムの様子を知ることができる仮想ファイルがいくつかあります。そのうちの一つが/proc/cpuinfoで、その名の通りCPUの情報が以下のように閲覧できます。 $ cat /proc/cpuinfo processor…

Mackerelのメトリックプラグインをチェックプラグイン化するプラグイン

Mackerelのメトリックプラグインやチェックプラグインは、特定のフォーマットで標準出力に書き出すという要件さえ満たしていればどのように作ってもOKです。Go言語以外でも作れるし、なんならmackerel-agent.confにシェルスクリプトを書いても動きます。標準…

mackerel-agentが作るシステムメトリックグラフをOpenTelemetryで可能な限り再現する

mackerel-agentをコマンド1つでインストールすると、ホストが登録されMackerel上で以下のようにホストのシステムメトリックのグラフを閲覧することができます。最速便利。 さて、メトリックを収集する仕組みはOpenTelemetryという標準規格に統一されようとす…

PalworldのDedicated ServerをConoHa VPSで建てた

Palworldというゲームが2023/1/19に発売された。 www.pocketpair.jp このゲームはMinecraftのようにDedicated Serverを個人で建てて誰かと一緒のワールドで遊ぶことができるようだ。友人にサーバを建ててくれと依頼されたので構築することにした。 構築の流…

slog時代のGoではloggerをcontextで引きまわさなくて良い気がする

Goのloggerを引き回す際に皆さんはどのような手法を取っていますか? グローバル変数にloggerのインスタンスを入れておく contextにloggerのインスタンスを入れておく トレースIDなどを入れたloggerを適宜作ってcontextに格納する 構造体のフィールドにlogge…

Ubuntu・Debianで再起動が必要な際に知らせてくれるMackerelのチェックプラグイン

家でいくつかRaspberry Piを飼っておりそれぞれにUbuntuをインストールしているのですが、ログインした際に以下のように「System restart required」と言われることがあります。 Welcome to Ubuntu 22.04.3 LTS (GNU/Linux 5.15.0-1044-raspi aarch64) (中略…

Go言語のクロスコンパイルを活かすDocker BuildxのBUILDPLATFORM・TARGETARCH

Go言語で作ったアプリケーションをコンテナイメージにするとき、以下のようにマルチステージビルドを利用したDockerfileを書くことが多いでしょう。 FROM golang:1.21-bookworm as builder WORKDIR /opt/app COPY go.mod go.sum ./ RUN go mod download COPY…

Advent Calendarを25日分続ける技術、あるいは物を発明し素早く作る技術

このエントリははてなエンジニアAdvent Calendar 2023の2024年1月8日の記事です。 昨日はid:handatさんのGitHubでパブリックリポジトリへの誤投稿を防ぐ拡張機能「GitHub Public Repo Alert」の紹介 - handatのdatファイルでした。 私id:arthur-1はサーバー…

Mackerelのカスタムダッシュボードにグラフアノテーションを表示する機能は如何にして生まれたか

arthur-1 Mackerel Advent Calendar 2023 マラソン25日目の記事です。いよいよラストのエントリとなりましたが、特別なことは書かずにこれまでと同じ調子で書きます。 カスタムダッシュボードにグラフアノテーションを表示できるようになりました! blog.art…

Mackerel Slackアプリを雑に作ってみる: unfurl編

arthur-1 Mackerel Advent Calendar 2023 マラソン24日目・およびSlack Japan Champions Network (JCN) アドベントカレンダー 2023 24日目の記事です。 MackerelとSlackのインテグレーション Mackerelの通知チャンネルとして、Slackを選択することができます…

仮説検証サイクルでユーザーの声を高速に叶える「キカク組」の取り組み

arthur-1 Mackerel Advent Calendar 2023 マラソン23日目の記事です。 「キカク組」の取り組みをMackerel Drink Upでお話ししました 2023年9月26日に行われたMackerel Drink Up #11で、私 id:arthur-1 が本エントリタイトルと同じ「仮説検証サイクルでユーザ…