Diary of a Perpetual Student

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

2024-01-01から1年間の記事一覧

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

株式会社はてなに入社しました

株式会社はてなに入社しました 株式会社はてなに入社しました - hitode909の日記

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

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

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

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

あんまり元気じゃないです

今更ですが2月中旬に新型コロナに罹って丸々1週間ほど寝込んでいました。高熱(39度以上が3日間)、咽頭痛、味覚・嗅覚障害あたりが主な症状でした。高熱で何も頭が働かないのが一番しんどかったです。テイクアウトで近所の美味しいラーメンを頼んだら、スー…

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

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

給与がアゲアゲした

給与査定と手ぶれ補正に勝利した 前回 blog.arthur1.dev

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はサーバー…

はてなブログおみくじ2014

はてなブログおみくじ2014

Recap 2023

もう2024年だよ。 技術 新しく触ったのはこの辺: Prometheus, PromQL OpenTelemetry GraphQL Server Kubernetes あとはGo言語とかなりお友達になったりAWS SAA認定取ったり。 仕事 グレードが2つ上がった。さよなら新卒ラベル。 エンジニアリングだけではな…