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

GoでZabbixと通信する、もしくはオレオレZabbix Server/AgentをGoで実装する方法

全国一千万Zabbixユーザの皆様こんにちは。複数のZabbix Agentから取得した値を集約する zabbix-aggregate-agent や zabbix_get コマンドの Go 実装版 go-zabbix-get を書いて遊んでいるうちに、Go で Zabbix と通信するライブラリが育ってきてしまったので…

ISUCON4本選で3位に敗れました #isucon

ISUCON4 に「fujiwara組」として参戦しましたが、既報のとおり 3位に敗れてきました。順位こそ3位で賞金10万円は獲得できたものの、スコアが示すとおり内容的には完敗です。まずは主催のLINE社様、出題を担当していただいたCookpad社様、本番サーバ提供をし…

#isucon 4に参加して予選2日目暫定1位になりました

ISUCON1, 2と「fujiwara組」で連覇し、2013年には出題を担当しましたが、今年は一参戦者として挑戦することになりました。 今年は弊社からの本選枠もなく(共催ではないので)、予選落ちしたらそれまで チームは ISUCON 1,2のメンバーが自分以外全員退職(…) し…

in_tail+(in|out)_forwardができるログエージェントfluent-agent-hydraをGoで書いている

タイトルが長いですが、つまりそういうものをGoで書いています。fluent-agent-hydra - Github(hydraっていうのは首のいっぱいあるアレです。キングヒドラとか) 特徴 fluent-agent-lite 的なファイルを tail -F のように追尾する機能 1プロセスで複数ファイル…

MHAをAWSで使うための支援ツールMHA::AWSをアップデートしてCPANに上げた

以前に作って、プロダクションでもいくつかのサービスに導入している MHA::AWS ですが、failover 方法を ENI 付け替えの他に VPC Route Table の書き換えもサポートしました。ENI付け替えでは同一 Availability Zone 内での failover しかできませんが、VPC …

Goで並列実行のベンチマークを取るためのライブラリ parallel-benchmark を書いた

以前 Perl で、forkして並列実行するベンチマークを取るためのライブラリ、Parallel::Benchmark というのを書きました。 Parallel::Benchmark というモジュールを書きました - 酒日記 はてな支店 これを使うと、単に Perl コードのベンチマークだけではなく…

zabbix-agent で取得できる値を Mackerel の custom metrics として送り込む

Mackerel Meetup #1 Tokyo に行ってきました。鯖サンド美味しかったです。Mackerel では custom metrics を sensu plugin 形式で出力するコマンドから送り込める (ドキュメント)、ということなので、思いついて拙作の go-zabbix-get に sensu plugin format …

Consul service のヘルスチェックを zabbix での監視項目と共用する

Consul での service 定義にはヘルスチェックを設定できます。Service Definition - Consul以下のようにサービス定義に死活監視用のコマンドを登録しておくことで、一定時間ごとにコマンドを起動します。コマンドの終了ステータスが 0 : 正常、1 : warning、…

Consul の情報を Chef / Ohai から使う ohai-plugin-consul を作ったのとその周辺の話

先日とあるサービスに Consul を入れました。内部 DNS と、たとえば nginx からアプリケーションサーバに振り分ける定義をするために service を使用しています。そこで使うために、ohai-plugin-consul を書きました。Github にあります。fujiwara/ohai-plug…

Zabbix のスクリーンを percol で快適に選択して開く open_zabbix_screen を作った

数えてみたら Zabbix のスクリーンが180枚もできていて、こうなるとブラウザのプルダウンでの選択がめんどくさいわけです。一応、先頭一致でインクリメンタルサーチはできますが日本語が混じっているとできないし……と不満に思いつつ使っていたのですが、perc…

Starlet 0.24で子プロセスごとに乱数系列が初期化されるようになった

Perl 5で fork する場合に乱数系列が親と同じになってしまう現象については過去にもいろいろエントリがあります。 乱数と Perl5 にかんする蘊蓄の話 - blog.64p.org #22 カジュアルに乱数を使う方法とその注意点 | tech.kayac.com - KAYAC engineers' blog 0…

KyotoTycoonの更新ログをmemcachedにレプリケーションする ktlog2memcached を書いた

とある移行案件で必要になったのでえいやと書いた。github.com/fujiwara/ktlog2memcached以下の記事にあるように、KyotoTycoonは更新ログを外部から取得することができるので、これを用いてKTへの書き込み内容を別のストレージに反映するようなことができま…

HAProxy で MySQL のヘルスチェックをちょっと便利にする

MySQL で slave を複数台立てて参照分散するには、HAProxy を利用してロードバランスと切り離しを行うと手軽に使えて便利です。 option mysql-check という設定で、HAProxy 自身が mysqld に接続してヘルスチェックが可能です。 listen mysql-slave bind 127…

複数の zabbix-agent から取得した値を集約する zabbix-aggregate-agent を書いた

Immutableなインフラがなんやかんやと喧しい今日この頃ですが、インスタンスが頻繁に増えたり減ったりすると、監視サービスで継続的な値を追うのが難しくなるよね、という問題を最近感じています。サービス全体で複数のホストの合計値を取得しておくことで使…

Redisを使って排他制御するwrapperコマンド Redis-Setlock をPerlとGoで書いた

しばらく前に作って書きそびれていましたが、Yokohama.pm #10 でLTしたのでエントリもあげます。 Perl版 https://metacpan.org/release/Redis-Setlock Go版 http://fujiwara.github.io/go-redis-setlock/ LTのスライドはこちら ⇒ Redis-Setlockを書いたはな…

nginx で gzip_static と gunzip を使ってストレージを節約する

一月ほど前に 社内Gyazoの画像をAmazon S3に逃がしてスケーラブルに運用する - 酒日記 はてな支店 というエントリを書いて一段落と思いきや、そのサーバには社内向けの nopaste アプリも同居しており、気がつけばテキストファイルが10GB以上積もっていたので…