サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
大そうじへの備え
blog.arthur1.dev
これは OpenTelemetry Advent Calendar 2024 15日目の記事です。 前置きが少しばかり長いので、目的の情報をすぐにでも知りたい方は以下の目次からスキップしてください。 前置き OpenTelemetry Collector Receiverを作るための事前知識 OpenTelemetry Collector Receiverの実装の大まかなステップ Config {signalType}Receiver Factory 便利グッズのmdatagen(Metadata Generator) 具体的な実装例 Step 0: 開発準備 Step 1: Disto Moduleを作る Step 2: Sample Receiver moduleを作る Step 3: metadata.yamlを書く Step 4: mdatagenでコード・ドキュメント生成 Ste
AWSにおいてリソースの識別子として使われるAmazonリソースネーム(ARN)というものがあります。私は、ARNには英数字と一部記号しか使えないものとばかり思っていました。 それでは以下の画像をご覧ください: なんと、ARNに日本語どころか絵文字まで入っているではありませんか! これはAWS Step Functionsのステートマシンです。ステートマシン名に利用できる文字種はドキュメントに以下の通り記載されており、日本語文字などの非ASCII文字を使えるのはバグではなく、意図して許可されているようです: Names of state machines, executions, and activity tasks must not exceed 80 characters in length. These names must be unique for your account an
2024-08-28 GOTOOLCHAIN=auto時にはtoolchainディレクティブに指定したものより新しいGoがインストールされていても戻るわけではないという話を追記しました。 Go言語では半年に1回メジャーリリース(マイナーバージョンの更新)がやってきます。ちょうどこの8月にGo 1.23がリリースされたばかりです。Go言語のメジャーリリースは最新2つ分までサポートされるポリシーであることがhttps://go.dev/doc/devel/releaseに書かれています。現在であればGo 1.23やGo 1.22はサポートされており、Go 1.21はサポートが切れているということです。 また、サポートされているバージョンでは、不定期でマイナーリリース(パッチバージョンの更新)がやってきます。バグ修正や脆弱性対応がメインですね。 Goがリリースされると、Goでアプリケーションを作
OpenTelemetryを使い始めるにあたって、既存の監視ツールからいきなり切り替えることは難しく、基本的には一時的に並行稼働させて様子を見ることになると思います。 これまでmackerel-agentをインストールし、Mackerelにホストとして登録してシステムメトリックを監視していたマシンに、新たにOpenTelemetry Collector+Host Metrics Receiverを導入するケースを考えてみましょう*1。 Resource Detection Processorなどを併用することで、メトリックにホスト名などをResource Attributesとして付与することができます。しかし、比較のためにMackerel上のホストと対応させて眺めるには今一歩情報が足りません。 そこで、ホストにインストールされたmackerel-agentの設定ファイルを読み、Macke
blog.arthur1.dev でご紹介した、OpenTelemetry Metricsを手軽に投稿できるCLIツール「otlc」のv0.2.0をリリースしたので再度ご紹介します。 github.com 使い方 インストール (macOS, Linux)×(x86_64, arm64)向けのバイナリをGitHubのReleaseで配布しています。 Homebrewをお使いの方は以下のコマンド1つでインストールが可能です。 $ brew install Arthur1/tap/otlc $ otlc --version otlc is a Command-line Tool to Export Telemetry by OTLP (OpenTelemetry Protocol). Version: unknown Go version: go1.22.4 Arch: arm64 go in
blog.arthur1.dev の続編です。今回はrunnによるシナリオテストの結果を投稿するツールをOpenTelemetry CollectorのReceiver (Scraper)として作ってみました。 リポジトリ 以下のリポジトリで id:arthur-1 によるOpenTelemetry Collectorの自作Component群を公開しています。 github.com 使い方 ビルド ocb (builder)によってOpenTelemetry Collectorをカスタムビルドする必要があります。カスタムビルドの方法は公式のドキュメントBuilding a custom collector | OpenTelemetryを参照してください。 runnreceivcerをビルドに含める場合には、ocbのconfig YAMLのreceivers部分に、以下のように行を追加し
先日、kamakura.go #6にて、「slog登場に伴うloggerの取り回し手法の見直し」という題で登壇しました。Go Conference 2024にこの内容でproposalを出していて落選してしまったのですが、kamakura.go #6のテーマ「昔のGo、今のGo」とピッタリだったので応募して発表の機会を頂いたという経緯です。 speakerdeck.com この発表は以下のエントリのrefinement版となる内容です。今度は机上論ではなく実践経験をもとに話を組み立てています。 blog.arthur1.dev loggerの引き回しと、なぜそれが必要だったのか slogの特徴 Logger/Handler Loggerのインタフェースとして、contextを引数に持つ関数が用意される デフォルトLogger contextの中身を見て自動でフィールドを追加するHandle
OpenTelemetryにおいて、OTel CollectorのReceiverを開発するときやアプリケーションに計装をする際、MetricsのUnit(単位)にどんな文字列を指定すべきかよく分からなかったので調べてみました。 semconv OpenTelemetryにはSemantic Conventions(semconv)と呼ばれる規約があります。あるデータに対して異なる実装間で共通の名前がついていると便利なので標準を取り決めましょうといった趣旨のものです。Metricsにおいてはメトリック名や属性、単位といったデータについて規約が定められています。 opentelemetry.io semconvには一般的な規約と具体的な規約があります。具体というと、例えばHTTPに関する規約、AWSなどのクラウドサービスに関する規約、といった形です。「HTTPサーバのリクエストの継続時間を計
オフラインの技術カンファレンス・イベントも徐々に復活し賑わいを見せつつある今日この頃、いかがお過ごしでしょうか。 多くの聴衆に等しく声を届けるための道具「マイク」はカンファレンスに欠かせないものとなっています。 普段はアプリケーションエンジニアとして働きつつ、休日にPAエンジニアやステージマネージャーをやっている身から、来場者が発表やコンテンツに集中できるようなマイクの扱い方を簡単にご紹介します。 叩かない 声の出る方向とマイクの位置・向きを合わせる グリル部分を掴まない ある程度の声量で喋る 叩かない マイクを叩くと低い「ブォンブォン」という不愉快な音が発生するのはもちろん、スピーカーなどの機材が壊れる原因につながります。もちろん意図的に叩いている人はいないと思うのですが、以下のようなケースでつい叩いてしまう人を見かけます: 拍手をする、拍手を煽る際にマイクを持ちながら手を叩く マイクが
Goのloggerを引き回す際に皆さんはどのような手法を取っていますか? グローバル変数にloggerのインスタンスを入れておく contextにloggerのインスタンスを入れておく トレースIDなどを入れたloggerを適宜作ってcontextに格納する 構造体のフィールドにloggerのインスタンスを入れておく(DI) などなど、ソフトウェアの規模や特性を鑑みて各自使い分けているかと思います。 ところで、私は 2. 3. の手法があまり好きではありませんでした。単純に面倒だし美しくありません。contextに入れる、取り出すだけでも数行のコードを毎度書く必要があってダルいな〜と思っていました。けれども、ログにトレースIDなどを入れたいだろうなあと思い、Webサーバの実装においては 2. を渋々選択していました。 さて、Go 1.21ではslogパッケージが登場しました。slogは単に
arm64では/proc/cpuinfoからCPUのモデル名を取得できない Linuxにはシステムの様子を知ることができる仮想ファイルがいくつかあります。そのうちの一つが/proc/cpuinfoで、その名の通りCPUの情報が以下のように閲覧できます。 $ cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 63 model name : Intel(R) Xeon(R) CPU E5-2650 v3 @ 2.30GHz stepping : 2 microcode : 0x1 cpu MHz : 2294.686 cache size : 4096 KB physical id : 0 siblings : 1 core id : 0 cpu cores : 1 apicid :
arthur-1 Mackerel Advent Calendar 2023 マラソン2日目の記事です。 シナリオ監視したい! Mackerelユーザーの皆様から、外形監視機能でシナリオ監視を行いたいと要望をいただくことがあります。ここで言うシナリオ監視とは、ユーザーが実際にサービスを利用するときと同様に、いくつかのURLへのアクセスや要素のクリックなどの一連の操作が成功するかどうかを定期的にチェックすることを指します。 例えば、 ログインページを表示する フォームにログイン情報を入力する ボタンを押すとログインされ、ホーム画面が表示される といったシーケンスを外部から実行する、といった具合です。よりユーザと同じ目線でサービスが利用可能であるかどうかを知ることができます。 今回は、この機能をMackerelに導入するとどう嬉しいのかを体感するために、プロトタイプを作ってみました。 mack
Mackerel は Terraform Provider を提供していて、監視ルールや通知チャンネル、ダッシュボードなどの設定が Terraform で記述・管理できるようになっています。 今回は Terraform Provider 提供者の目線から、サービスを IaC で管理できるように対応する難しさを紹介します。 公開 API で宣言的な管理を実現できるか? Mackerel の Terraform Provider は、内部的に公開 API を呼ぶことで設定の管理を実現しています。よって、公開 API を新たに増やしたり改修したりする場合には、IaC による宣言的な構成・設定管理を API を使って行えるかどうかを気にする必要があります。 具体例: ホワイトリストと、ホワイトリストに自動で追加するフラグの両方を IaC で管理する 例として、やや抽象的な表現にはなってしまいますが
新卒入社から1年ちょっと経ったころ、開発チーム内での席替え*1があり、Mackerel の OpenTelemetry 対応という大きな開発プロジェクトからは離れることとなった。それまで自分が携わってきた OpenTelemetry 対応については Mackerel 公式ブログに記事を書いたのでぜひ読んでほしい。 mackerel.io このプロジェクトを離れた代わりに、Mackerel チーム内で新たに発足した、大小様々な顧客要望に優先度をつけて仮説検証型アジャイル開発のサイクルを回し、インパクトの大きなものを高い頻度でユーザーに提供し続けることを目指したユニットに所属し、エンジニアをすることになった。このユニットでの取り組みによって、最近だと以下のような機能の提供が実現された: ホスト一括操作強化 ホスト一覧でのホスト名による絞り込み機能 外形監視レスポンスタイムグラフの単位をデフォル
要件 Go 言語で作られた、GitHub の private repository の go module に依存しているアプリケーションについて考えましょう。例えばオープンソースではない社内ライブラリに依存している、という状態です。 手元の開発マシン上では GOPRIVATE 環境変数を利用して、go mod download できている状態です。このアプリケーションはコンテナ上で動かすことを想定しており、Dockerfile 内で RUN go build することでバイナリを生成し container image に格納しようとしています。 しかし、public な module だけに依存しているときと同じように Dockerfile を書いても docker build に失敗してしまいます。go mod download 時に private repository から fet
なけなしの社交性を YAPC::Kyoto 2023 で全て使い果たしてしまって元気がない id:arthur-1 です。 前日祭で登壇した話はすでに書いたのですが、(こっちも読んでね) blog.arthur1.dev 先のエントリでは触れなかった、参加者目線での YAPC::Kyoto 2023 に関する話を雑多に色々します。 幸運なことに インターネット上で出会った人と物理で出会う はてなスタッフ多すぎ問題 Soudai さんへのお手紙 onishi さんのキーノートで泣きそうだった その他 (GKPT) まとめ 幸運なことに 前提として、僕は新卒1年目だし、仕事で Perl を書く機会もほぼほぼなかったです。既存のコネクションもはてなスタッフ以外にはほぼないという状態。リアルイベントもこれまで全然なかったですよね。 最初は心細かくて仕方なかったのですが、何だかんだたくさんの方とお話
YAPC::Kyoto 2023 前日祭の一コンテンツである、ネコトーストラボ杯争奪東西対抗 LT マッチに登壇してきました。 blog.yapcjapan.org 東西対抗とあるように所属企業の所在地で東西チームに分けられており、順番に自分は西チームのトリを飾らせていただきました。 成果目標と結果 開催前に Hatena Developer Blog に意気込みを載せてもらっていました。 developer.hatenastaff.com 新卒カードをかざせるギリギリ最後の機会に、このようなイベントに参加でき大変嬉しいです。LTマッチという勝敗が決まるものに参加するわけですから、絶対に勝つぞという気持ちで挑みます!!! 絶対に勝つぞということで、自分が定めた目標はもちろんこれです: 西チームが勝つ 西チーム内の MVP になる で、結果はどうだったのかというと、チームとしては勝ちましたが
3行 Windows の OS 名をレジストリから取得すると、Win 11 が Win 10 として表示されてしまう 例えば、WMI を使って取得する方法が正攻法っぽい Go から WMI を触るサンプルコードもあるよ Win 10 が Win 11 として Mackerel に登録されている 自分は OSS の動作確認のために Windows を使いたくなったときに、手元の Macbook から別のホストにリモートデスクトップで繋いで使っている*1。また、繋ぐ前に WOL マジックパケットを送ってスタンバイ状態から復帰させるようにしている。 ここで、手元にマシンがない状態だと WOL によりちゃんと起動したかどうかがわからない。そこで、mackerel-agent をインストールしていて、Mackerel 上でメトリックが取れているかどうかでマシンの生存確認をするようにしている。 そんな
2022年は技術的なエントリをそれなりの数書いてきた。特に12月は計10本のエントリを出し、まだ世に出せていないネタもたくさんあるという状況である。 ところが、当人の感覚としては暖簾に腕押しだなあと思っている。ということでちゃんと振り返ってみることにする。 stats 2022年で一番ブクマが多かった記事はblog.arthur1.devである。 他の記事はこの半数にも満たない、というか、片手で数えられるブクマ数でさえありがたい、という状況である。 書くという行為によって自分自身の理解が確かなものになることに意義は感じているものの、せっかく書いているのだから多くの人に読んでほしいし、それが読者のためになればなお良いと思っている。 もっとシビアに言ってしまうと、書いても読んでもらえない状況がずっと続くならいつか自分は筆を取るのをやめてしまうだろうという懸念がある。モチベーション維持のために今
Mackerel Advent Calendar 2022 の運営をしておりました、 id:arthur-1 です。この度は、Advent Calendar にご参加いただき、もしくは閲覧していただき、ありがとうございました。 qiita.com 25日分の記事が集まり、最後まで完走することができました。自分が設定したエントリ数の監視もちゃんと動いていました。 blog.arthur1.dev 総括というには素朴なのですが、書いていただいたエントリを読み、個人の感想としてコメントさせていただきます。 ※社内・外関係なく統一して敬称をつけさせていただいております 全部読む Day 1 blog.arthur1.dev 自分のエントリです。単位追加は細かい改修を除けば新卒初仕事だったのですが、自分が想像していた以上に社内外で反響があってよかったです。 Day 2 blog.stenyan.jp
この記事は Mackerel Advent Calendar 2022 16日目の記事です。 こんにちは、id:arthur-1 です。2022年にはてなに新卒入社して、Mackerel 開発チームのアプリケーションエンジニアをやっています。また、今年の Mackerel Advent Calendar の運営を担当しております。よろしくお願いします。 先日、Mackerel チームで「Mackerel アゲアゲ合宿」を開催しました。これは旧来「開発合宿」と称して行ってきたもので、「Mackerel の未来に繋がることを誰かと一緒にやること」をコンセプトとして、5つのチームに分かれて3日間集中して開発やワークに取り組みました。 こちらの運営も担当させていただいたのですが、詳しい運営話は別の機会にさせていただくかもしれません。運営として、「合宿の成果を Advent Calendar にアウ
この記事は Mackerel Advent Calendar 2022 1日目の記事です。 こんにちは、id:arthur-1 です。2022年にはてなに新卒入社して、Mackerel 開発チームのアプリケーションエンジニアをやっています。また、今年の Mackerel Advent Calendar の運営を担当しております。よろしくお願いします。 今日は、そんな私が Mackerel チームに join して一番最初に実装し提供できた機能に関する話をします。 グラフ定義で選択できる単位を追加しました mackerel.io 今年7月頭のリリースノートで紹介されていますが、グラフ定義で使える単位に、以下の3つを追加しました: seconds [s] milliseconds [ms] bits/sec [bps] 単位を追加するのはパッと見簡単そうなのですが、実際には既存実装の仕組みの修
この記事ははてなエンジニア Advent Calendar 2022 1日目の記事です。 こんにちは、id:arthur-1 です。2022年に新卒入社して、Mackerel 開発チームのアプリケーションエンジニアをやっています。 arthur-1 という id に掛けて、トップバッターをいただきました。よろしくお願いします。 今日は Advent Calendar を Mackerel で監視している話をします。 Advent Calendar で何を監視したいのか id:arthur-1 は、Mackerel Advent Calendar 2022 の運営をしています。こちらは、Mackerel ユーザーが TIPS やノウハウ、利用事例などを載せていく自由参加のカレンダーになっています。 Advent Calendar 企画の主催になると、どれだけの方が参加しているか、枠がパンパン
二日酔いだなと思ったら、その瞬間に酒を飲むことで一日酔いにリセットされる
コロナ禍の過ごし方として、毎晩、大学の頃のサークルの同級生と Discord に集まって通話をしています。思い思いに好きなゲームをしたり、仲間を募って同じゲームを遊んだりする時間です。バーチャル部室と言ったところでしょうか。 このとき、Discord の画面共有機能を使って各自のゲーム画面を配信しています。今回は、自分がゲームを配信している環境を紹介します。 要件 Nintendo Switch の ゲーム画面を、Discord の画面共有にてゲーム音声付きで配信できる 自分がプレイするためのゲーム画面と音声は、余計な遅延や品質低下なく視聴できる PC の音とゲームの音を同じヘッドホンで視聴できる 結論 ハードウェアの構成としては以下のようになりました。 また、使用機材は以下の通りです: オーディオインターフェイス: YAMAHA AG03MK2 *1 キャプチャーボード: Avermed
最近 GitHub Actions を弄くり倒すことにハマっていて、 GitHub の Checks API を利用して annotation を出すおもてなしをすることだけが生きがいだと思って生活していました。 そんな中、JavaScript (TypeScript) のコードのテストでよく使われている Jest で、どの assertion が落ちているかを annotation で分かりやすく表示したいと思っていました。自作で頑張ろうかな~と思って調べていると、 Jest 28.0.0 (2022年4月末ごろリリース)から Github Actions で annotation を出す reporter 機能が組み込まれていたという事実を知りました。 jestjs.io この便利機能が思ったより世の中で使われていない感じがしたので紹介します。 サンプル こちらをどうぞ: github
こんにちは、ネットワーク初心者のid:arthur-1です。今回は家のネットワーク環境整備の話をします。 学生時代には学園祭実行委員会の1ロールとしてITインフラ管理をやっていました。「ネット繋がらない!」「プリンター調子悪い!」という声に24時間体制で対応できるよう、学園祭期間中おもてなしせずに死んだ顔で部室にいたのも今は昔。それも、別に専門的な知識があってやっていたというわけではなく、マスタリングTCP/IPの入門編は一通り読んだなあという程度のものです。 マスタリングTCP/IP 入門編(第6版) 作者:井上直也,村山公保,竹下隆史,荒井透,苅田幸雄オーム社Amazon 今回のお話をまとめると、概ね以下の内容になります。 ASUSのルータもIPoEに対応したと思っていたけど完全ではなかった 仕方ないので調子に乗ってYAMAHAのRTX830を買った せっかくなのでVPN構築した 環境
株式会社はてなに入社しました 株式会社はてなに入社しました - hitode909の日記 といういつものやつではなくて、これは本当の入社エントリ(にしては遅すぎないか?)です。 株式会社はてなにWebアプリケーションエンジニアとして入社して4か月が経とうとしています。 はじめての査定結果が通知され会計年度が終わろうとしているこのタイミングで振り返っていきます。 自己紹介 id:arthur-1 です。お理工だけじゃダメなんだ大学の学部に7年間通った後に、はてなに新卒入社しました。 3留なのでどこにも雇ってもらえないと思っていたけどなんとかなりました。 学生時代は学園祭実行委員会で参加団体向けの Web 申請システムやお客さん向けの優良企画投票システムを作ったり、ボードゲームに関する Web サービスを個人開発・運用したりしていました。 db.buratsuki.page neo.burat
本エントリは、バックエンドにAWS Lambdaを用いたSlack Botを開発するときのTipsを雑多に垂れ流していくものです。普段の記事と異なり、エントリとしての主張のまとまりに関してはほとんど考慮していません。 Slackで使えるインタフェースを把握しよう Slack Appの設定はコード化しておこう レスポンスは3秒以内にSlackに届けよう Slackの再送による多重実行を回避しよう AppからSlackにメッセージを投稿する場合、エラーハンドリングの方針を考えよう リンク集 Slackで使えるインタフェースを把握しよう Slack Appを作るとき、我々はSlackの仕様に縛られることになります。Slack側が用意してくれているインタフェースを使ってユーザはAppとやりとりすることになります。 ただ、Slack Appでは思ったよりもリッチなアプリケーションを作れます。作りたい
このページを最初にブックマークしてみませんか?
『Diary of a Perpetual Student』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く