Hateburo: kazeburo hatenablog

SRE / 運用系小姑 / Goを書くPerl Monger

GitHub Actionsからさくらクラウドのコンテナレジストリ(Lab)にイメージをpushする

こちらのリポジトリが完成形です。 github.com ここで紹介しているコンテナレジストリはLabプロダクトになります。「Labプロダクト」では、新機能の動作検証およびフィードバック収集を目的として、さくらのクラウドにおける開発中サービスを実験的に提供し…

2020年に買って良かったもの

ほぼ1年間家で仕事をすることになり、自宅の机まわりの環境をこれまで以上に整えてきた1年だったので「#買って良かった2020」というお題で書いてみる。 ヘッドホンとマグカップ 奥さんから誕生日にもらったソニーの WH-H910N。色はアッシュグリーンです。あ…

ISUCON10予選問題で EC2 c6g.2xlarge vs c5.2xlarge をやってみる

少し前にISUCON10予選問題のスコアアップに取り組んでいたので、その成果を使い、EC2 Graviton2 インスタンスとIntel CPUのインスタンスでスコアを比較してみます。 ISUCON10予選問題チャレンジをしていた時のスレはこちら ISUCON10予選のベンチマーク、Macb…

Re: 結局、Go言語をやめる理由はなかった件

すみません、ISUCONのアレに火がついてしまったので..。 Advent Calendarとはとくに関係がありません。 qiita.com qiita.com こちらの記事をみて、気になってしまったので interpolateParams の追加とMySQLチューニングをしてベンチマークを回してみました。…

コマンドを実行しその終了ステータスコードメトリクス化するMackerelカスタムプラグイン

Mackerel Advent Calendar 2020 15日目の参加記事です。 キャッシュの更新やなんらかの同期を行うコマンドなどをcronにて実行している場合、メンテナンスや一時的なネットワークの不調によりコマンドがエラーになっても問題ないが、一定時間以上エラーが続く…

cgoを利用した Go project を GitHub Actions でクロスコンパイル&リリースを行う

check-lastlogというmackerel監視pluginを作ってるのですが、 github.com こちらは /var/log/lastlog を読むために一部cgoを使っています。mackerelのpluginなので一つ前の記事で紹介した方法で kazeburo.hatenablog.com リリースしたいところなのですが、Go…

GitHub ActionsとGoReleaserでmkr plugin install対応mackerel pluginをリリースする

Mackerel Advent Calendar 2020 9日目の参加記事です。隙間で書きました。 最近 mackerel pluginをリリースするときは、ほぼ全てGitHub ActionsとGoReleaserを使ってビルドとリリースしています。 GoReleaserはこちら goreleaser.com GoReleaserはGoのprojec…

GoでMySQLの監視コマンドを作成するのが楽になるライブラリ

本エントリはMySQL Advent Calendar 2020 の9日目の記事になります。 これまでいくつものMySQLの監視コマンドをつくってきたのですが、毎回同じような処理を書いているので、それらをまとめるライブラリを作ってみました github.com 主な機能は go-flags形式…

mackerel plugin で瞬間的な負荷を捉える mackerel-plugin-maxcpu

とあるAPIに対するアクセスが、 回数 時間 1833 time:27/Oct/2020:21:32:25 1657 time:27/Oct/2020:21:32:26 1616 time:27/Oct/2020:21:32:27 2584 time:27/Oct/2020:21:32:28 14958 time:27/Oct/2020:21:32:29 6619 time:27/Oct/2020:21:32:30 1725 time:27…

mkr hosts にコントリビュートした話

mackerel.io こちらでリリースの紹介があったmkrコマンドに一つコントリビュートしておりました。 リリースされたのは、mkr v0.41.0 です。 一つ前のバージョンまで mkr hosts は検索結果が一台もないと、null が返っていました。 $ mkr hosts --service all…

ISUCON10 感想戦で 100,000 超えスコアを出した

感想戦優勝なんてものはない 感想戦優勝 #isucon— 紅葉坂乗り過ごして桜木町 (@kazeburo) 2020年10月12日 ISUCON10本選は悔しいところではありましたが、Fail(失格)で終わってしまいましたが、1週間もの長い間サーバとベンチマーカーが使えるようにして頂い…

ISUCON 10 本選に「チーム中目黒乗り過ごし」で参加して、結果はFailでした

結果はこちら isucon.net 予選に引き続き、hanabokuro氏、mtokioka氏と参加して、結果はFailで失格となりました。スコア的には8位といったところでしょうか。 白金動物園による問題はISUCONのベンチマーカーで、これまで「スケールアップ」「スケールアウト…

ISUCON10予選に「チーム中目黒乗り過ごし」で参加し本選出場決まりました

ISUCON10の予選に尊敬するエンジニアであるhanabokuro氏、mtokioka氏と参加して、9位で本戦出場できることになりました。うれしい! ISUCON8は予選落ち、去年は出題をやらせていただいたので、本選出場は3年ぶりになります 今年の問題も、よく練られた問題で…

Nginxのupstreamコンテキストでの名前解決に nginx-dynamic-upstream-resolve-servers を使う

Nginxでproxyする際に、名前解決を動的に行ってからupstreamへ接続をするというのは、S3だったりConsulで管理されたサーバ群に対するproxyを行いたい場合に使いたくなる機能のひとつ。 ただ、upstreamコンテキスト内の resolve オプションは有償の Nginx Plu…

2019年 作った・喋ってきたまとめ

振り返り的なやつです。 去年の振り返りはこちらです。 kazeburo.hatenablog.com ISUCON9 予選出題した bokko, catatsuy, sota1235 とともにISUCON9の予選出題をやらせていただいた。7月から9月にかけて圧倒的に手を動かした。 解説と講評のほか、ローカル環…

MySQLのprocesslistをgrep して killする myps コマンド

なんらかの理由で MySQLにクソ重いクエリがたくさん流れてしまった場合、SHOW PROCESSLISTをみて、クエリをKILLするなんてことは、あったりなかったりします。 この時にクエリが数十個となると、手作業ではやりきれませんので、コマンドを駆使して対応するこ…

mackerel-plugin-pinging について

この記事はMackerelアドベントカレンダー9日目の記事です。 今年新たに作ったmackerel pluginの数がとても少なかったのでショックを受けているMackerelアンバサダーのkazeburoです。 この記事ではそのうちの一つを紹介します。 mackerel-agent-pinging githu…

秒間数千件以上のアクセスログでも高速に集計し、可視化できる mackerel-plugin-axslog の紹介

Mackerelアンバサダーになりました Mackerelアンバサダーになったので、グッズ頂いた。ありがとうございます pic.twitter.com/UzCmANa84O— Masahiro (@kazeburo) March 23, 2019 ということで、新しいmackerel-pluginの紹介です。 mackerel-plugin-axslog …

2018年 作った・喋ってきたまとめ

振り返り的なやつです。 作った no_excl_open github.com LD_PRELOADをつかって、ファイルを作成する際の O_EXCLを取り除いてみるもの。 詳しくは YAPC::Okinawa 2018 前夜祭で喋った speakerdeck.com relaxlogs github.com daemontoolsで動かしているデーモ…

TCP over WebSocket & IAP

Googleのhuproxyみたいなもので、任意のprotocolが通しやすく、Google Cloud Load BalancingのIdentity aware proxyに対応したものが欲しかったので、作ってみた。 github.com github.com GCPの中のMySQLに対して、service accountで認証して接続するイメー…

普通のサーバでDocker ContainerをHot DeployしたかったのでProxy書いた

2018年も後半だけど、普通のサーバ上でコンテナをHot Deployしたいと思ってproxy書いた github.com 任意のラベルがついたDocker containerのpublic portをdocker api経由で取得して、private portをlistenして、proxyを開始するものです。 ラベルがついたコ…

YAPC::Okinawa 2018 ONNASON に行ってきた

YAPC::Hokkaido、YAPC::Fukuoka に続き YAPC::Okinawa 2018 に行ってきました。 発表 発表は2つ。 前夜祭 開催前日に作った資料。logrotateとfluentdとPHPが絡んだわりと複雑な問題に対してLD_PRELOADというやや斜め上の方法をとった話です。 本編スペシャル…

2017年 喋ってきたまとめ

振り返り的なエントリです。 3月 さくらインターネット プレゼンツ メルカリ×はてなの夕べ さくらさん、はてなさんのイベントのセッションに参加しました。専用サーバをどのように使っているかという話をはてな id:wtatsuru さんとしました。 hatenanews.com…

ISUCON7 予選通過した!!

ISUCON7に id:sugyan と id:gfx と、チーム「スギャブロエックス」で出場して、2日目の2位、全体でも2位で予選通過できました。 icon画像さえ突破できれば、よく練られている問題で楽しめました。サーバもベンチマークも快適に動いて課題に集中出来ました。…

GCP HTTP(S) load balancing 配下のnginxでクライアントIPを取得する方法

GCP HTTP(S) load balancing の X-Forwarded-For ヘッダは少し変わっているのでメモ。 X-Forwarded-For とクライアントIP ELBや他のproxyを使って、その配下のサーバにリクエスト元のIPアドレスを伝える際には、X-Forwarded-For ヘッダが使われます。 X-Forw…

N秒間だけクエリ実行ログを取りたい

pt-query-digestだったり調査のために、N秒間だけmysqlの全クエリのログを取得したいということはよくありますよね そんな時はこんなコマンドを使うと簡単に指定の秒数slowlogを切り替えて保存、取得後に元に戻してくれます。 $ slowlog.pl --duration 10 --…

【29年ぶりの大雪】YAPC::Hokkaido 2016 SAPPORO へ行ってきた! 【試される大地】

JPAの新しいメンバーのもと、REBOOTされたYAPC::Asia、YAPC::Hokkaido 2016 SAPPOROに、ゲストスピーカーとして呼んでいただけたので、行ってきました。 発表資料はこちら。 メルカリの技術ブログで紹介したSRE、1年たってエンジニアの新しいロールとして少…

libeatmydataを使ってpostfixを劇速にする [用法用量要確認]

libeatmydataというLD_PRELOADを使って、起動したプロセスのfsyncを無効化するライブラリがあったので試してみています。 libeatmydata - disable fsync and SAVE! fsyncがないと何が嬉しいかというとクラウドのようなIOまわりの環境が弱いところで、安全性…

Ruby 2.4.0 preview3 での pico_http_parser のベンチマーク

Ruby 2.4.0-preview3 で Hash まわりの改善があったということで、pico_http_parser のベンチマークを取ってみた Ruby 2.4.0-preview3 リリース GitHub - kazeburo/pico_http_parser: Fast HTTP Parser using picohttpparser ベンチマークは。pico_http_pars…

最近の Plack のパフォーマンス改善まとめ 2015年11月版

OSS活動の成果発表のお時間です。 Plackの 1.0038と2015年11月27日時点のmasterにはPlack::Request、Plack::Responseのパフォーマンスをあげる変更が入ってます。その紹介とベンチマークです。 github.com Plack 1.0038 で HTTP::Headers::Fast 0.20 につけ…