タグ

ブックマーク / hirose31.hatenablog.jp (26)

  • VirtualBoxのスナップショットを簡単に管理できるツールを書きました。GO言語で。 - (ひ)メモ

    VagrantではSahara pluginを使うことで、VMの状態を以前の状態に巻き戻すことができます(sandobx mode)。 VMの中でいろいろいじっている際に変更前の状態に戻せるのはとても便利なのですが、Saharaでは戻せるチェックポイントをひとつしか作れません。 自分の場合、深遠なChefのレシピを書いている過程で、戻せるポイントを何個か置きたくなることがよくあります。 さて、VagrantのバックエンドとしてVirtualBoxを使っている人は多いかと思います。 バックエンドがVritualBoxの場合、SaharaのsandboxはVirtualBoxのsnapshotを使って実現されています。 VirtualBoxのsnapshotはひとつだけでなくいくつでも作ることができます。 CUIでVirtualBoxの操作(snapshotを作ったり)をするには、vboxma

    VirtualBoxのスナップショットを簡単に管理できるツールを書きました。GO言語で。 - (ひ)メモ
  • bashでもpercolをイイ感じに使う方法 - (ひ)メモ

    [twitter:@stillpedant](mooz)さん作のpercolはシェルとは独立しているのですが、ググるとzshと共に使っている人が多いようです。これはzshの強力な行編集機能を提供するzleに因るところが大きいためだと思います。 bashでもpercolを使っている人もいるのですが、 percolが便利だけど、入れるにはpython2系のほうが良さそう - About Digital Big Sky :: Windows のコマンドプロンプトを10倍便利にするコマンド「peco」 「絞り込んだパスへのcdを実行する」ことはできても、「絞り込んだパスを現在のコマンドライン行に挿入する」ことは実現できていない、つまりコマンド実行はできるけど行編集はできていないようでした。 そこで今回ちょっと調べてみたところ、bashでも(zleには及ばないにしても)変数READLINE_LINE

    bashでもpercolをイイ感じに使う方法 - (ひ)メモ
  • Apacheのmod_statusの各状態はどういう意味か? - (ひ)メモ

    Apacheのmod_statusを使えば各プロセスの状態を知ることができます。CloudForecastやCacti等でそれを元に視覚化している人も多いと思います。 mod_statusで確認できる状態には以下の11種類があるのですが、 状態名 値 mod_stautsでの記号 説明 SERVER_DEAD 0 . Open slot with no current process SERVER_STARTING 1 S Server Starting up SERVER_READY 2 _ Waiting for connection (or accept() lock) SERVER_BUSY_READ 3 R Reading a client request SERVER_BUSY_WRITE 4 W Processing a client request SERVER_BUSY_

    Apacheのmod_statusの各状態はどういう意味か? - (ひ)メモ
  • Redisのクエリーアナライザー "redis-traffic-stats" を書きました - (ひ)メモ

    redis-traffic-stats という Redis のクエリーアナライザーを作りました。 https://github.com/hirose31/redis-traffic-stats redis-traffic-statsはtcpdump -wで書き出したpcapデータを解析して、以下のような統計を表示します。 総ネットワークトラフィック量と平均byte/sec 総リクエスト数と平均とピークのreq/sec コマンド毎のリクエスト数、総リクエスト数に占める割合、req/secを、リクエスト数が多い順に上位10コマンドを表示 コマンド毎の総転送バイト数、byte/secを、総転送バイト数が多い順に上位10コマンドを表示 コマンド別に、キー毎の総転送バイト数、byte/sec、リクエスト数、リクエスト数の割合、req/secを、総転送バイト数が多い順に上位10キーを表示 時間のかかっ

    Redisのクエリーアナライザー "redis-traffic-stats" を書きました - (ひ)メモ
  • プロセスが起動した日時を知りたい - (ひ)メモ

    プロセスの起動日時は ps の START カラムでわかりますが、24時間経過すると表示上時刻がわかりません。 $ ps auxwwwwww | grep -e PID -e redis-server USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND hirose31 775 0.1 0.0 36328 2008 ? Sl Sep26 17:47 /home/hirose31/repos/redis/redis/src/redis-server /usr/oreno/etc/redis/oreno.confでは、日時(日付+時刻)を知るにはどうしたらよいでしょうか? ps -o lstart $ ps axwwwwwwwww -o user,pid,lstart,cmd | grep -e PID -e redis-server

    プロセスが起動した日時を知りたい - (ひ)メモ
  • 撮った写真と動画の管理とかバックアップとか - (ひ)メモ

    写真 デジカメメイン機、サブ機共にEye-Fiを使っていて、撮ったら再生モードで放っておけばEye-Fiが写真データをアップロードしてくれます。 Eye-Fiからアップロードされたデータは、拙作のDoumeki (百目鬼)が受けます。 Doumekiは自宅サーバーで動いていて、 ローカルのディスク Picasa に保存します。アップロードの開始/完了の通知はEye-Fiからのメール通知で、進捗の通知はDoumekiがXMPPで通知するようにしています。 どちらも保存する際には、EXIFから撮影日を調べてその年月日を名前とするフォルダを作ってそこに保存します。写真はフォルダ分けの整理が面倒極まりないのですが、自分の場合はこの撮影日フォルダ自動仕分けがすこぶる便利だと思っています。 2個所に保存するのはバックアップの意味もありますが、それに加えて、 写真を見るのはiPhoneiPadでBes

    撮った写真と動画の管理とかバックアップとか - (ひ)メモ
  • RedisのLuaで時間のかかる処理をするとどうなるか? - (ひ)メモ

    Redis は基的にシングルスレッド、イベントドリブンモデルなので、時間のかかるLua スクリプトを実行したらどうなるかというのは想像に難くないのですが確認してみました。 Redis は 2.6.14 です。 redis-cli eval 'while true do print("hello") end' 0な感じのを実行します。 実行中に、別クライアントから GET, INFO, PING すると全てブロックされて結果が返ってきません。 redis.conf で lua-time-limit 5000 と設定している場合は、5秒後に redis-server のログに [18068] 22 Jul 13:51:23.798 # Lua slow script detected: still in execution after 5000 milliseconds. You can t

    RedisのLuaで時間のかかる処理をするとどうなるか? - (ひ)メモ
  • Re: UNIX Command Idioms - (ひ)メモ

    Re: [twitter:@riywo]'s UNIX Command Idioms ps auxwwwwwww number of "w" depends on my mood in that day :D ps auxwwwwwwwww -L netstat -tna / -una / -tnl / -tnap tar xvf tar zxvf / jxvf / Jxvf are boring trailing slash in rsync rsync -av file [file] HOST:dir/ rsync -av dir/ HOST:dir/ tcpdump -i any -nlx strace -s 100 -fFTttt diff -u /path/to/file <(ssh host cat /path/to/file) see also: http://d.haten

    Re: UNIX Command Idioms - (ひ)メモ
  • combinedに代わるオレ流ログフォーマット - (ひ)メモ

    こんにちは、combinedログ撲滅委員会のひろせです。 ApacheのcombinedやNginxのデフォルトのlog_formatは、機械処理(日付でのソートやパース)がしづらい上に、人の目にもあまり見やすいフォーマットとはいえないと思っています。 なので自宅のサーバーでは、 日付は ISO8601 にする sortコマンドとかで簡単にそぉーっとソートできるようになる 日付、レスポンスコード、所要時間とか固定長的なフィールドは左に寄せる URLとかUAとか可変長で長いのは右に寄せる リクエスト(%r)も右に寄せた方ががいいような気がしてきた。。。 数値だけだとわかりづらいのでなんとなくわかるようにフィールド名も添える フィールド名を長くするとわかりやすくなる反面、ログサイズが大きくなるので注意 という観点で次のようなログフォーマットにしています、 # Apache LogFormat

    combinedに代わるオレ流ログフォーマット - (ひ)メモ
  • MySQL 5.1→5.6のmy.cnfの差分とか - (ひ)メモ

    MySQL 5.1で使ってたmy.cnfを試しに5.6で動くようにしたときの差分す。網羅的には調べてないんで他にも廃止になったパラメータはあるかもです。あくまで参考までに。 # log-binにパラメータ指定しないと怒られます -log-bin +log-bin = mysqld-bin # old-passwordsはオン、オフだけじゃなくて引数(0, 1, 2)が必須になって、引数の値によって挙動がかわります。 -old-passwords +old-passwords = 1 # これ指定しないと、リモートからのpre-4.1な認証方法で接続できないです +skip-secure-auth # これ指定しないと、pre-4.1な認証方法で接続できないです★下に追記あり +default-authentication-plugin = mysql_old_password # パラメー

    MySQL 5.1→5.6のmy.cnfの差分とか - (ひ)メモ
  • dstatの万能感がハンパない - (ひ)メモ

    サーバーのリソースを見るにはグラフ化は重要ですが、推移ではなくリアルタイムな状況、例えば秒単位のスパイキーな負荷を見るには、サーバー上でvmstatやiostatなどの*statファミリーを叩く必要があります。 さて、vmstatはメモリの状況やブロック数単位のI/O状況は見られますが、バイト単位のI/O状況やネットワークの送信、受信バイト数を見ることはできません。 # vmstat 1 procs -----------memory---------- ---swap--- -----io----- --system-- -----cpu------ r b swpd free buff cache si so bi bo in cs us sy id wa st 3 1 0 4724956 355452 726532 0 0 54 484 3 3 1 0 99 0 0 2 0 0 47

    dstatの万能感がハンパない - (ひ)メモ
  • Apache 2.4.1 で気になった新機能などのメモ - (ひ)メモ

    Overview of new features in Apache HTTP Server 2.4 - Apache HTTP Server Expressions http://httpd.apache.org/docs/2.4/en/expr.html やSetEnvIfExpr, RewriteCond, Headerで使える評価式 の追加 http://httpd.apache.org/docs/2.4/en/mod/core.html#if ヘッダや環境変数を参照して細かい制御ができるようになったことに加え、else的なブロックを書くのに苦労したことがあるんで朗報です ErrorLogFormat http://httpd.apache.org/docs/2.4/en/mod/core.html#errorlogformat ErrorLogも書式設定できるように。 %L (L

    Apache 2.4.1 で気になった新機能などのメモ - (ひ)メモ
  • MacBook Airがスリープから醒めない件 - (ひ)メモ

    MacBook Air (11" Mid 2011, メモリ 4GB)がフタを閉じてスリープ状態に入り1時間ぐらいするとフタを開けても起き上がらず、しかたないので電源ボタン長押で強制再起動の刑で困ってたんですが、結果からいうと、 sudo pmset -a hibernatemode 0で解消しましたというお話。 起き上がらない事象は再現率100%。Console.appでログを見てみると、フタを閉じて70分後に毎回同じログ(Wake reason: EC.SleepTimerとか)が記録されていたので、これでググったところ、 http://forums.macrumors.com/showthread.php?t=1110667 で機種は違えど同じような症状を発見。 どうも、フタを閉じてしばらくは浅いスリープ(メモリ上に待避)なんだけど、時間が経つと深い眠り(ディスク上に待避、deep

    MacBook Airがスリープから醒めない件 - (ひ)メモ
  • Teeny Nagios - Nagiosのスマートフォンビューを作ったよー - (ひ)メモ

    自分の場合、iPhoneでNagiosを見たい場合というのは、 アラートが飛んできたので状況を確認したい →ざっと状況をつかみたいので、一覧性の高いビューがいい 即時対応は必要なさそうなので、とりあえずアラートを止めたい →ホスト単位、またはサービス単位で「Schedule downtime」したい ぐらいなので、それに特化したスマートフォンビューを作りました。 プロジェクトホーム http://hirose31.github.com/teeny-nagios/ レポジトリ https://github.com/hirose31/teeny-nagios Mobile Safariで通常のNagiosのページを見てもいいんですが、操作性、一覧性がイマイチだなーと思ったのが作った動機です。 ホーム。ざっくり状況を確認するのに。 ホストの一覧。黄色はwarningが、赤色はcriticalが出

    Teeny Nagios - Nagiosのスマートフォンビューを作ったよー - (ひ)メモ
  • WEB+DB PRESS連載の『スケーラブルWebシステム工房』の記事を公開しましたっ! - (ひ)メモ

    だいぶ前の記事(2007/04〜2008/2の連載記事)ですが、WEB+DB PRESSで連載していた拙著の『スケーラブルWebシステム工房』の記事を公開しました。ふと、思い出したので。 連載目次 第1回 いろんなものをロードバランス ― MySQL、SMTPサーバ… 第2回 DRBDとkeepalivedで、障害性の高いストレージサーバの構築 第3回 監視にまつわるエトセトラ 第4回 LinuxとVLANで作る、シンプル&スケーラブルネットワークの極意 第5回 止まらないネットワークの極意 ― bonding × リンクアグリゲーション × スパニングツリー 第6回 見逃さない通知の極意 これらの文書は、ソフトウエアの名称、バージョン、設定項目、社名などの固有名詞などなどは当時のまま掲載しています。 ですので、インストール手順や設定内容は最新版のドキュメントを参照していただき、この文書か

    WEB+DB PRESS連載の『スケーラブルWebシステム工房』の記事を公開しましたっ! - (ひ)メモ
  • NagiosからのアラートをIRCにも通知してみた - (ひ)メモ

    Nagiosのアラート通知をメールだけじゃなくてIRCにも通知したいなぁと思ったのでやってみました。 IRC bot 今までだと Plagger 付属の plagger-ircbot を走らせて、適宜 POE の IKC で通知命令を送っていたんですが、ちょっと CPAN を探してみたら、 Bot::BasicBot::Pluggable というのがありました。 karmaもつけられていいなーと思ってこれを使おうと思ったんですが、POE を使っているものの IKC で連携する機能がありません。 そこでこのモジュールを継承して、Bot::IKCBot::Pluggable というのを作りました。 http://github.com/hirose31/p5-bot-ikcbot-pluggable/tree/master Bot::IKCBot::Pluggable BasicBotとの違いは

    NagiosからのアラートをIRCにも通知してみた - (ひ)メモ
  • memcachedに張られているコネクション数を監視するNagios pluginを作ってみた - (ひ)メモ

    夏休みが終わったので宿題しました。(小ネタはありません) http://github.com/hirose31/nagios-check_memcached_connections 要 libmemcached こんな感じで。 $ ./check_memcached_connections -H mc101 -w 3 -c 5 MEMCACHED WARNING: conn 5, 0.001 seconds あわせてよみたい mixi Engineers’ Blog » mixi大規模障害について その2

    memcachedに張られているコネクション数を監視するNagios pluginを作ってみた - (ひ)メモ
  • BLACKHOLEストレージエンジンを使ってInnoDBなテーブルの暖気運転をする - (ひ)メモ

    どうもこんにちは。小太り男子中年のサーバーエンジニアです。 先日行われたhbstudy#13の [twitter:@nippondanji]さんのセッション(スライド) で、「BLACKHOLEストレージエンジンを使えば、InnoDBなテーブルの暖気運転(テーブルデータを空読みして、buffer poolに乗っける)ができる」という話があったので、あなるほどーと思い試してみました。 CREATE TABLE _preload LIKE huge_table; ALTER TABLE _preload ENGINE = BLACKHOLE; INSERT INTO _preload SELECT * FROM huge_table; DROP TABLE _preload;なるほどなるほど。

    BLACKHOLEストレージエンジンを使ってInnoDBなテーブルの暖気運転をする - (ひ)メモ
  • フロント/バックのreverse proxy構成で、指定秒数以内に必ずレスポンスを返す方法 - (ひ)メモ

    目的 フロントがHTTPリクエストを受けて、バックエンドのアプリケーションサーバにreverse proxyするような構成において、指定秒数以内に何かしらのレスポンスを返したい。 200が返せない場合は、処理を打ち切って500を返したい。 背景 フロントでApacheやNginxをreverse proxyとして使っている場合、バックエンドが無応答になってしまうと、クライアントにレスポンスが返るのはデフォルトで数十〜数百秒後(ApacheのTimeoutのデフォルトは300秒、Nginxのproxy_read_timeoutのデフォルトは60秒)になってしまいます。 通常のWebサービスではこのオーダーのタイムアウトでもいいのかもしれませんが、数秒以内に(エラーでもいいので)レスポンスを返すことが求められる環境も存在します。(最近、特に多いのではないでしょうか:P) もちろんバックエンドが

    フロント/バックのreverse proxy構成で、指定秒数以内に必ずレスポンスを返す方法 - (ひ)メモ
  • MySQLのスロークエリログを別サーバに転送する - (ひ)メモ

    複数台あるMySQLのスロークエリログを、いちいちDBサーバにログインして読むのがめんどうくさい log_output = FILE,TABLE としてテーブルに入れてリモートからSELECTできるようにするのは? → テーブルに入れた場合、query timeとlock timeの型がTIME型になり精度が秒になってしまうのでダメ ファイルに出力したものをログサーバーにどうにかして飛ばす 10分おきとかにscpする →これでできるのはわかるけど、他にいい方法ないかなぁ syslogで飛ばすのはどうか (id:stanaka++) →srd!! スロークエリログに限らず、追記されるファイル全般に適用できると思います。 rsyslogの方がいけてるそうですが、自分が使ってるのは syslog-ng 2.0.9 なのでそ の設定例です。 DBサーバ # follow_freq(180) で 3

    MySQLのスロークエリログを別サーバに転送する - (ひ)メモ