地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

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

2023年を振り返る

概要 2023年の振り返りをやっていきます。 概要 あったこと SRE Nextのコアスタッフに入った いろいろ登壇した シニアエンジニアになった OpenTelemetryを始めた Mackerelアンバサダーになった メール技術に入門した 詳解システムパフォーマンス 第2版を読み…

【AWS】NLBでみると良さそうなメトリクス

docs.aws.amazon.com Active Flow Count: NLBによって処理されているアクティブなTCPフローの数です。 New Flow Count: 指定された期間内にNLBによって確立された新しいTCPフローの数です。 Processed Bytes: NLBを通じて送受信されたバイト数です。 TCP Cli…

【Terraform】Terraform 1.6 で追加されたtestについて書いてみる

この記事は「terraform Advent Calendar 2023」の23日目の記事です! terraform testとは terraform 1.6で入ったtest機能はTerraform module を実際にplanやapplyをして動作を確信するための機能です。1.5まではexperimental features(実験的な機能)として提…

SlackBotでPagerDutyを操作する

この記事は「PagerDuty Advent Calendar 2023」の24日目の記事です!前日は @manji0さんの PagerDutyのAPIの使い方でした。PagerDutyのAPIの使い方が紹介されており今回自分が書く記事にも近い部分があって学びがあってよかったです! PagerDuty APIの使い方…

【TiKV】入門してみる

この記事は「TiDB Advent Calendar 2023」の21日目の記事です。 github.com TiKVとは TiKVは、分散型トランザクションキーバリューストレージシステムです。このシステムは、Rustで開発されており、GoogleのSpannerに触発されたRaftという分散コンセンサスア…

シャドーオペレーションは何故行われるのかを考えてみる

この記事は「Platform Engineering Advent Calendar 2023」の18日目の記事です!今回はPlatform Engineering Meetup #1の中で取り上げられていたシャドーオペレーションについて取り上げてみます! アーカイブもあるようなのでもしみてない方がいたら先に見…

【OpenTelemetry】CLIでトレースが送れるotel-cliが便利そうだったので触ってみる

この記事は「OpenTelemetry Advent Calendar 2023」の11日目の記事です!空いていた&ネタがあったので入れてみました! 本文 github.com OpenTelemetry のコマンドラインツールで、シェルスクリプトから OpenTelemetry トレースを送信することができるツール…

【入門】etcd

event.cloudnativedays.jp の発表を見てetcdの仕組みやRaftについて学んだのですがetcd単体で調べたのはエラーが出てた時とかそのレベルでまとも入門したことがなかったので学んでみました。 etcdとは github.com etcdは、分散システム用の軽量で高可用性の…

SRE LoungeとSRE NEXTの忘年会に行ってきた

sre-lounge.connpass.com への参加とSRE NEXTの忘年会に行ってきました。SRE Loungeは初参加だったのですがどのセッションも学びがあってよかったです。最近CUEに入門したのですが#CUEでキュッとできるという発表を聞いてキュッとやってみたいなと思いました…

【ポエム】穴の空いたバケツに水を万杯に入れるには

穴の空いたバケツがあったとしてそこに水を入れるとどうなるだろうか。答えは簡単で水はただ流れ落ちて溜まることことはない。そんなわかり切ったことをと思うかもしれないが実生活でも意図せず起きてしまいがちな問題である。わかりやすい例で言うと貯金な…

【MySQL】InnoDBはどのようにデータの破損を検出しているのか

この記事は「MySQL Advent Calendar 2023」の14日目の記事です! 一言で書くと InnoDBはdiskに書くときページ単位でCRC計算してるそれを使って検出してる 本文 MySQLに限った話ではないですがデータ自体が破損するケースは往々にしてあります。よくある(?)例…

【CUE】入門してみる

cuelang.org CNDTの懇親会の二次会とセッションでも触れられていたCUE言語ですが名前しか知らないが1日に2回も聞くってことはどこかで役に立つかも?ということでメモを置いておきます。 CUE言語とは? CUE is an open source language, with a rich set of …

Mackerel関連の好きなプラグイン/ツールTOP5

この記事はMackerel Advent Calendar 2023の11日目の記事になります!今年からお話をいただきMackerelアンバサダープログラムに参加させていただいています。せっかくなので個人的に好きなMackerelプラグインTOP5を書いていきます!! 5位 mashiike/shimesab…

カーネルトレースツールの雑メモ

perf、ftrace、SystemTap、kprobe、uprobe、DTraceあたりについてのメモ perf: Linuxカーネルに組み込まれているパフォーマンス解析ツールです。CPUサイクル、命令カウント、キャッシュミスなど、様々なハードウェアレベルのイベントを測定することができま…

【MySQL】レプリケーションはバックアップになり得ない理由

この記事は「🎅GMOペパボエンジニア Advent Calendar 2023」の9日目です!Otelについて書こうと思っていたら完全に忘れていたのでこちらです! 本文 MySQLにはレプリケーションによって同期されたデータベースサーバを構築する機能があって高可用性や負荷分散…

【BCC】killsnoopでシグナルの送信元と結果を監視する

github.com 突如死んでるプロセスがあってシグナルを受けてるのところまではわかったがどこから受けてるのかがわからず困っていたらkillsnoopというツールがbccにあったので使ってみた。これはkill(2)によって送信されるシグナルを追跡する機能を提供してい…

【Perl】ファイルの末尾の改行が2つ以上なら1つにしなければ追加するワンライナー

perl -pi -e 'BEGIN{undef $/;} s/\n*\z/\n/' filename.txt BEGIN{undef $/;} ファイル全体を一つの文字列として扱う。特殊変数$/(入力レコードセパレータ)を未定義にする s/\n*\z/\n/ ファイルの末尾にある0個以上の改行(\n*)を単一の改行(\n)に置換

【Linux】firewalldがnftablesを使えるようになったのはいつか

この記事はLinux Advent Calendar 2023の3日目の記事です。 firewalld.org 2018年7月12日にリリースされた0.6.0から利用が可能になっているのがリリースノートからわかった。ちなみにFirewallBackendを切り替えることでiptablesとnftablesの切り替えはできる…

【WASM】WebAssemblyに再入門してみた

この記事はGMOペパボエンジニア Advent Calendar 2023とWebAssembly Advent Calendar 2023の2日目の記事です! 目次 目次 背景 WASM WASMとは WebAssembly テキスト形式 特徴 WASMの歴史 どれくらいの性能なのか 安全性 触ってみる WASIとは 現在はPreview版…

【入門】Journal

この記事は Linux Advent Calendar 2023 の1日目の記事です! journalとは journalとはsystemd環境におけるログ管理システムjournaldによって出力されたログファイルを指します。journalとういう言葉自体は訳すと「雑誌,学術誌,会報,新聞」らしいです。sy…

【Go】otelでspanにattributeを付ける

SetAttributesを使うことで実現できる。例えば以下はtraceの情報にAddという関数の引数をattributeにつけることで情報が追加される。 package calc import ( "context" "go.opentelemetry.io/otel" "go.opentelemetry.io/otel/attribute" ) var tracer = ote…

【CLI】jqでlessして色をつけたい

lessに-Rをつけて -R or --RAW-CONTROL-CHARS Like -r, but only ANSI "color" escape sequences and OSC 8 hyperlink sequences are output in "raw" form. Unlike -r, the screen appearance is maintained correctly, provided that there are no escape …

サービス稼働中にMySQLのプライマリDBがメジャーアップデートされたらどうなるのか

考えただけでも恐ろしいが考えてみる。どれくらいのダウンがありそうだろうか。ざっと考えると1~4までは大体決まった作業になりそう。ただ問題は5でこれを焦りながらやるのはメンタルやられそうだなぁと思った。いやーそうならないようにしよう。 1. シャッ…

【Go】GOOS=wasip1でビルドしたwasmでTCPサーバを起動する

github.com wasip1ではネットワーク関連の機能が一部しかサポートされてないので使えないと思っていたがstealthrocket/netを使うことでできる模様。 こんな感じのDockerfileを用意しておく。このライブラリではWasmEdgeをサポートしているらしいのでそちらを…

fzfで画像のプレビューが可能になった

github.com 結構欲しかったやつでめっちゃとても便利。撮った写真をDropboxとかNASに移すときにFinderだと常にリスト表示してるのでCLIで操作できたらなと思っていたので嬉しい。0.44.0を入れれば使える。

Redisの25倍のスループットを出したDragonflyのロマン

目次 目次 書いた背景 Dragonflyとは スループット25倍の話 計測方法次第ではRedisと性能差はそこまでないってこと? どうやって性能を出しているのか ロックマネージャーとは VLLの実装をGoで書いてもらった まとめ/感想 参考資料 書いた背景 ChatGPTで論文…

Cache-Control: max-age=Xがない時のブラウザキャッシュ

レスポンスにCache-Control: max-ageがない場合って何も考えずにクライアントにキャッシュされないと思っていたがどうやらそうではないらしい。この挙動自体はRFCでも定義されている。HTTP は可能な限りキャッシュするように設計されているので、Cache-Contr…

【ポエム】アウトプットへのネガティブコメントはどう受け取るのが良いのか

前職時代の後輩と久々に飲みにいってブログ書くと炎上とかまさかりが怖くて〜みたいな話をしていて色々考えがまとまってなかったので書いてみる。「この考えは間違っている」や「こんなのも知らないのか」とか「こんなのやってる暇あるなら仕事しろ」とか今…

【MySQL】slaveでもbinlogを更新するにはlog-slave-updatesが必要

dev.mysql.com リードレプリカでbinlogが更新されないなぁと思っていたらlog-slave-updatesがオフになっていて更新されていなかった。これはレプリケーションソースサーバーから受信した更新を、レプリカ独自のバイナリログに記録するかどうかを決めるための…

php-fpmのセッションの保存先

[Session] session.save_handler = memcache こんな感じで定義することでファイル以外のハンドラを設定することができる。 www.php.net 上記のサンプルだと以下のライブラリを使うように設定してある PECL :: Package :: memcache ちなみにmemcacheとmemcach…