タグ

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

  • InfluxDB をちょっとさわってみた - (ひ)メモ

    InfluxDBとは http://influxdb.org メトリクスやイベントといった時系列データを格納するのに適したデータストアです。 ちなみに go で書かれています。 ちなみに 2013のOpen Source Rookiesに選ばれました。 InfluxDBの特徴 RRDやMySQLに時系列データを格納する場合と比較して、InfluxDBの特徴を紹介します。 バックエンドは LevelDB LevelDBとは、キーでソートされた状態で可能されたKVSです(Google製)。詳しくはこのへん参照のこと。 http://en.wikipedia.org/wiki/LevelDB https://code.google.com/p/leveldb/ https://speakerdeck.com/smly/influxdb-and-leveldb-inside-out 将来的にLev

    InfluxDB をちょっとさわってみた - (ひ)メモ
    yass
    yass 2014/04/05
    " メトリクスやイベントといった時系列データを格納するのに適したデータストアです。"
  • 同じサブネットへのNIC 2枚指し、またはソースルーティングのおはなし - (ひ)メモ

    「NIC 2枚刺し」というと「IP masqueradeを使ってLinuxルーターを作ろう!」的な話を思い出す老害です。こんにちは。 NICを2枚生やしたサーバーから同じサブネットに両方の足をのばす機会があったのですが、じゃっかん躓いたのでそのメモです。 具体的にいうと、eth0の方は問題ないのですが、eth1についているIPアドレスへの疎通ができない、というものでした。 以下、 eth0についているIPアドレスが10.0.0.10 eth1についているIPアドレスが10.0.0.11 対向の別サーバーが10.0.0.100 という体で読んでください。 さて、 別サーバーからpingしつつ、eth1でtcpdumpしてみると、echo requestは届いているのが観測できました。が、echo replyを返していません。 # tcpdump -i eth1 -nl icmp liste

    同じサブネットへのNIC 2枚指し、またはソースルーティングのおはなし - (ひ)メモ
    yass
    yass 2014/03/01
    " routeコマンドですと、宛先に応じてNICのデバイスの指定 / Linuxではこのテーブルを複数持つことができ、さまざまな条件でどのテーブルを参照させるかを指定 / 送信元IPアドレス / パケットが入ってきたデバイス名 / fwmark "
  • 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" を書きました - (ひ)メモ
    yass
    yass 2014/02/27
    " redis-traffic-statsはtcpdump -wで書き出したpcapデータを解析して、以下のような統計を表示します "
  • ELBのIPアドレスの変更を監視するやつを書きました - (ひ)メモ

    https://github.com/hirose31/monitor-elb-address cpanm -l local --installdeps . cp config-sample.pl config.pl vi config.pl ./monitor-elb-address -c ./config.plな感じで使えて、列挙した FQDN の IP アドレス(Aレコード)の変更を通知します。 IPアドレスの変更によって、 IPアドレスが増えた ELBがスケールアウトしたのかも? AZが増えたのかも? IPアドレスが変わった AWS的都合で内部的なELBのインスタンスが変わったのかも? ELBがスケールアップしたのかも? といったことが推察できます。あくまで何一つ確証のない推察ですけど! ちなみに、DNSを引くと複数Aレコードが返ってきてたのが、ひとつだけAレコードが返ってきて問い

    ELBのIPアドレスの変更を監視するやつを書きました - (ひ)メモ
    yass
    yass 2013/12/12
  • 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で時間のかかる処理をするとどうなるか? - (ひ)メモ
  • プロセス間の期限付き排他ロック - (ひ)メモ

    追記 2013-03-04 [twitter:@dankogai] さんにも言及されてました>< 404 Blog Not Found:perl - soloで任意のコマンドを期限付きで排他実行する 追記 2013-03-01 つづきを書きました。 続・プロセス間の期限付き排他ロック - (ひ)メモ 追記 2013-02-27 コメント欄でのやりとりの通り、穴がある(クリティカルセクションに複数プロセスが突入する可能性がある)のでちょっと出直してきます!! やりたいこと プロセス間の排他的実行を制御したい 一定時間経過したら実行できるようにしたい 例えば、フェイルオーバーを実行するスクリプトは、何度も実行できるとフェイルオーバー/バックを繰り返してフラップするので、一度フェイルオーバーしたら一定時間は実行できないようにしたい 実装 シンボリックリンクを使って排他制御する 期限切れは、シンボ

    プロセス間の期限付き排他ロック - (ひ)メモ
  • combinedに代わるオレ流ログフォーマット - (ひ)メモ

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

    combinedに代わるオレ流ログフォーマット - (ひ)メモ
  • フロント/バックのreverse proxy構成で、指定秒数以内に必ずレスポンスを返す方法 - (ひ)メモ

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

    フロント/バックのreverse proxy構成で、指定秒数以内に必ずレスポンスを返す方法 - (ひ)メモ
    yass
    yass 2012/12/02
    " proxy_read_timeoutはreadとreadの間のタイムアウトなので、バックエンドからbodyがちょろちょろ返ってくる(2秒おきにbodyのデータを返す)場合は、proxy_read_timeoutが効きません。"
  • Amazon VPCで浮動IPアドレス的なことができないかのメモ - (ひ)メモ

    フェイルオーバーを実現する手法のひとつにVIP(Virtual IP、浮動IPアドレス)というものがあります。 Amazon VPCにてVIPができないか、ちょっと考えてみたのでそのメモです。 環境としては、10.0.0.0/16のVPCの中に、 10.0.0.0/17のpublic subnet (AZはa) 10.0.128.0/17のpublic subnet (AZはb) というそれぞれ別のAvailability Zoneに属する2つのsubnetを作り、これらsubnetをまたいでVIP的なことができないか、という考察です。 思いついた方法としては以下の3つです。 ENIを移動する - NICを移動する secondary private addressを移動する - IP Aliasする Routerの力を借りる ほかにもいい方法があったら教えてください>< ENIを移動する

    Amazon VPCで浮動IPアドレス的なことができないかのメモ - (ひ)メモ
    yass
    yass 2012/08/24
  • 「ディスク」への書き込み性能を上げるには - (ひ)メモ

    ユーザランドのプロセスから見たwrite(2)は、ページキャッシュのおかげで(メモリが潤沢にある環境下では)ブロックされない(待たされない)というのは id:naoya さんの丁寧な解説のおかげでわかると思うのですが、一方、fsync(2)などの実際にディスクに書き込む処理、 あと id:hirose31 さんがコメントしてますが、アプリケーションが SYNC モードでファイルを開いてたり、明示的に fsync() してたりするとそこで wait が発生するのは言わずもがな、です。 Linux I/O のお話 write 編 - naoyaのはてなダイアリー The fsync() function does not return until the system has completed that action or until an error is detected. fsync

    「ディスク」への書き込み性能を上げるには - (ひ)メモ
    yass
    yass 2012/03/09
    " ユーザランドのプロセスから見たwrite(2)は、ページキャッシュのおかげでブロックされない / fsync(2)などの実際にディスクに書き込む処理は「ディスク」自身が『書き込みが終わったよ』というまでブロック "
  • 【模索】gitで設定ファイルとかをうまく管理できないものか - (ひ)メモ

    /usr/oreore/etcの下のファイルをgitで管理したい マシンは複数台ある bareなセントラルレポジトリはあるとして。 cloneしてaufsでほんとのディレクトリに被せる。それぞれのマシンで同じようにやる。 mkdir /git git-clone git://axis.local/system.git /git/system # /git/system/usr/oreore/etc/test/test.conf とかができる target_dir=/usr/oreore/etc mount -t aufs br:/git/system/${target_dir}=rw:${target_dir}=ro none ${target_dir}あるマシンでファイルを編集してpushる。 vi /usr/oreore/etc/test/test.conf ... cd /git/s

    【模索】gitで設定ファイルとかをうまく管理できないものか - (ひ)メモ
  • 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を作ってみた - (ひ)メモ
  • kumofsの死活監視はこんな感じでNagiosでやってます - (ひ)メモ

    分散Key-Valueストア「kumofs」を公開しました! - 古橋貞之の日記 \(^o^)/ kumofsは、弊社のフォトストレージサービス Ficia で現在大絶賛モリモリ稼働中なんですが、その死活監視は自家製の Nagios プラグインで行っています。 というわけで、kumofsをサービスで使いたい人の一助になればと思い、ぼくが実際に行っている kumofs の監視について紹介したいと思います。 サーバノードとマネージャノード サーバノードとマネージャノードの監視には、それぞれのノードに対してステータスを問い合わせるコマンドを発行して、その応答で死活を判断するスクリプトを書いて使っています。 kumofs公開記念ということでgithubにpushっておきました。 http://github.com/etolabo/nagios-check_kumofs 問い合わせの処理は、管理用コ

    kumofsの死活監視はこんな感じでNagiosでやってます - (ひ)メモ
  • レプリケーションしてるMySQLで、マスタやスレーブが障害停止した場合のリカバリプラン - (ひ)メモ

    MySQLで、レプリケーションベースのHAな構成について考えたメモです。 3台(というか2台+1台)がいいかなぁと思っていて、前半はその理由を、後半では{マスタ,スレーブ}が{再起不能になった,ちょっとダウンしてすぐ復帰した}場合のリカバリプランについて書きます。 今のところはこれがベストかなと思っているのですが、「こうしたほうがいいと思う!」「ここがおかしい!」などなどのご意見はコメント、TBなどでいただけるとうれしいです。 ゴール マスタが落ちてもぐーすか寝ていられるようにしたい リカバリの作業はできるだけ単純に、かつ、短時間で完了するようにしたい めんどくさいのはいや 基構成、方針 2台+1台 サービスで使うのは2台 (db1, db2) もう1台は管理用 (db3) スレーブを多数並べる構成にはしない 台数増えると管理コストが上がる マスタダウン時のフェイルオーバとそのフェイルバ

    レプリケーションしてるMySQLで、マスタやスレーブが障害停止した場合のリカバリプラン - (ひ)メモ
  • mysqlでいちいちshow databasesとか打つのがめんどい→readlineのマクロで解決 - (ひ)メモ

    MySQLでいちいちshow tables;とか打つのがだるい。\tみたいなalias設定できないのかなぁ http://twitter.com/weboo/status/1658300902 おぉ、readlineのマクロを使えばいいのかー http://twitter.com/weboo/status/1658314333 なるほ!ってことでちょっと設定してみました。 # ~/.inputrc $if mysql "\C-xd": "show databases;" "\C-xt": "show tables;" "\C-xu": "select user,host,password from mysql.user order by user,host;" "\C-xb": "select user,host,db from mysql.db order by user,host;"

    mysqlでいちいちshow databasesとか打つのがめんどい→readlineのマクロで解決 - (ひ)メモ
    yass
    yass 2009/06/01
  • mysqlコマンドで、テーブル名とかカラム名の補完(completion)をする方法 - (ひ)メモ

    追記: rehash(auto-rehashも含む)すると、SQL文の補完(seleでタブ打鍵とか)が効かなくなるよと、はす向かいの人に教えてもらいました。 個人的には、SQLは「mysql> help select」とかでオンラインヘルプがびょっと出るので、スキーマの補完ができるんならSQLの補完はとりあえずあきらめてもいいかなと思っています。 常々、テーブル名とか補完できるといいなーと思っていたので、ボロっときいてみたら教えてもらいました。あざーーーーっす! id:mikihoshi++ id:tokuhirom++ id:precuredaisuki++ おかげで効率が300%上がりました。(Benchmark::Stopwatchで計測) http://dev.mysql.com/doc/refman/5.1/en/mysql-command-options.html#option

    mysqlコマンドで、テーブル名とかカラム名の補完(completion)をする方法 - (ひ)メモ
  • 疎結合なディスクレスサーバ - (ひ)メモ

    「そもそもOSインストールするのも面倒だよね、ディスクあると障害確率も上がるし。」という話もあって、今後は iSCSI か NFS かでマスタファイルサーバーを作り、PXE ブートしてそれを root ごとマウントしてディスクレスにしようかなと計画しています。 http://d.hatena.ne.jp/naoya/20070328/1175067451 これだとマスタファイルサーバとディスクレスサーバの結合度が密なんじゃないすかね。その弊害として、マスタファイルサーバが停止するとディスクレスサーバが全滅しちゃうんじゃないかと思うんす。(マスタファイルサーバがステキにフェイルオーバできるなら話は別ですが) なので、 マスタファイルサーバはrootファイルシステムのイメージを保持して配信するだけ。 ディスクレスサーバはもらったrootファイルシステムをメモリ上に展開後、pivot_rootし

    疎結合なディスクレスサーバ - (ひ)メモ
    yass
    yass 2007/03/29
  • distributed caching system または超高速ストーレジサービス - (ひ)メモ

    memcached的な実装を探し中。ほかになんかないかなぁ。 memcached http://www.danga.com/memcached/ sharedance http://sharedance.pureftpd.org/project/sharedance Open Terracotta http://www.terracotta.org/confluence/display/orgsite/Home Spread Toolkit http://www.spread.org/ distcache http://distcache.sourceforge.net/ Applications that Use Spread にはおもろしろげなのがいっぱいありそう。 あ、ナナオのカラーユニバーサルデザイン対応ワイドモニターが欲しい!

    distributed caching system または超高速ストーレジサービス - (ひ)メモ
    yass
    yass 2007/03/16
  • MySQL 5 の場合はmytopよりinnotopのほうがいいかも - (ひ)メモ

    MySQLのモニタするのに便利なmytopなんですが、MySQL 5に対して使うと、クエリの割合表示が全部ゼロになってしまったります。 これは、MySQL 5.0.2でSHOW STATUS文が変更され、GLOBALかSESSIONというオプションを指定できるようになったことに起因します。このオプションを省略した際はSESSIONを指定したときと同じ動作となり、SHOW STATUS文で得られるのは自分自身の接続についての情報のみとなります。 mytopはオプションなしのSHOW STATUS文を使っているので、MySQL 5ではmytop自身の接続についての情報しか得られず、その影響として、クエリの割合表示が全部ゼロになってしまったりするわけです。 対応は簡単で、mytopのSHOW STATUSをSHOW GLOBAL STATUSに書き換えればいい(書き換えるとMySQL 4.1以前

    MySQL 5 の場合はmytopよりinnotopのほうがいいかも - (ひ)メモ
  • Linuxでiptablesを使ってDSRする - (ひ)メモ

    1. リアルサーバ側にもグローバルIPを振る必要がある(IPが少ないところは結構きついかも). リアルサーバでは、VIPをループバックインターフェースにIP aliasすればいいので、リアルサーバの数だけグローバルIPアドレスを消費するってことはないような。(誤読してるかも ただ、この方式だと、VIPの数だけいちいちリアルサーバにIP aliasして回らないといけないので、わりと大規模(VIPがたくさんある or リアルサーバがたくさんある)だとめんどくさいことこの上ない。 で、リアルサーバでこんなiptablesのルールを設定すれば、IP aliasしないでDSRできそうというのが主題。 VIP=10.1.1.0/24 iptables -t nat -A PREROUTING -d $VIP -j REDIRECT多分、これでいけると思うんですけどちと自信なし。検証 and 詳しい説明

    Linuxでiptablesを使ってDSRする - (ひ)メモ