棚からパルチャギ

日々の雑記、ニュース拾いとか

2007. 10. 22

E-shuushuuとふたばのAutoPagerize SITEINFO
そんなわけで、こっそりとE-shuushuu(Kawaii Image Board)のSITEINFO。
ニッチな用途なので、本家の避難所Wikiには書かないでいいかなー。と。
ついでに、ふたば
0.0.10で@action対応されたのに、誰も書かないで避難所にリンクだけ置いてあるのは、 XPathで妙な解釈される不可思議なHTMLを打開するのが面倒だったのだと悟りました…。 hrが連続するのだけは回避できなかったのでご愛嬌。
ちなみに、AutoPagerize 0.0.15以降はフレーム内のページが処理されなくなっているので、 萌え連とかふたばをフレーム有りで閲覧すると、AutoPagerizeが機能しなくなってます。
if (window != window.parent) { return }
スクリプト先頭の判定部分(↑)をコメントアウトして回避するしかないっぽい。 iframe内のページだけを判定して無効化するようなことってできないですかね…。

2007. 10. 19

Muninでアラートメールの送信 (メール送信編)
続き。
監視項目が閾値を超えた場合のメール送信先設定。

【メール送信の設定】
設定ファイル(/etc/munin/munin.conf)に記述する。設定項目は以下の4項目。
contact.(contact).command 実行されるコマンドを記述。
contact.(contact).text コマンドにパイプで渡される文字列を記述。
contact.(contact).max_messages 同時に送信される報告の最大数。
1だと各報告は個別のメールで送信される。 未設定の場合は、同時に検出された内容が(監視ノード毎に)1つのメールにまとめて送信される。 デフォルトは未設定。
contact.(contact).always_send 送信される障害レベルを設定。「warning」「critical」のいずれか、または空白区切りでどちらも記述する。 デフォルトは「critical warning」。

設定例。
contact.email.command mail -s "Munin ${var:group}::${var:host}" email@example.com contact.email.max_messages 1 contact.email.always_send warning critical
contact.(contact).textはメールで送信される文字列の変更。
/usr/share/munin/munin-limits で定義されている初期値(%default_textのdefault)を解読すれば編集できるけど、結構面倒なのでデフォルト推奨。 文字列内で使用可能な変数や制御構文はmunin-limitsの書式を参照。


システム管理者(admin)にはwarning以上、上司(manager)にはcritical以上が報告されるような設定例。
contact.admin.command mail -s "Munin ${var:group}::${var:host}" admin@example.com contact.manager.command mail -s "Munin ${var:group}::${var:host}" manager@example.com contact.admin.always_send warning critical contact.manager.always_send critical

全体/グループ/ノード/プラグイン単位で、それぞれ送信先や送信の可否を個別に設定可能。
何も指定しない場合、デフォルトで全ての送信先が有効になる。
contact.admin.command mail -s "Munin ${var:group}::${var:host}" admin@example.com contact.web_staff.command mail -s "Munin ${var:group}::${var:host}" web_staff@example.com contact.db_staff.command mail -s "Munin ${var:group}::${var:host}" db_staff@example.com

contacts admin adminに通知を送信する(全体設定)
[WebSvr;] contacts admin web_staff WebSvrグループの場合は、adminとweb_staffに通知
[DbSvr;] contacts admin db_staff DbSvrグループの場合は、adminとdb_staffに通知
[WebSvr;foo.example.com] (WebSvrグループ → adminとweb_staffに通知) address 10.1.1.101 use_node_name yes
[WebSvr;bar.example.com] address 10.1.1.102 use_node_name yes contacts no 通知しない
[DbSvr;baz.example.com] (DbSvrグループ → adminとdb_staffに通知) address 10.1.1.103 use_node_name yes load.contacts no LoadAverageの警告は通知しない
[qux.example.com] (指定のない場合は全体設定が反映 → adminに通知) address 10.1.1.104 use_node_name yes


ちなみに、commandにはメール以外のコマンドも記述できるので、ファイルにログ出力するような設定も可能。
contact.log.command > /var/log/munin/alert.log
Muninでアラートメールの送信 (監視項目の設定編)
鯖のリソース監視をMRTGからMuninにしてみた。
アラートの送信方法が、公式ドキュメントの情報だと分散しているので、個人的まとめ。
OSはCentOS4.4。Muninはyumでさっくりインストールです。初期設定等は割愛。
# yum --enablerepo=rpmforge install munin munin-node

【監視項目の閾値を設定】
各プラグインで監視できる値について、レベル(warning/critical)とその上限値・下限値がそれぞれ設定できる。 現在インストールされているプラグインは /etc/munin/plugins 以下を参照。
$ ls -1 /etc/munin/plugins
cpu
df
forks
hddtemp_smartctl
if_err_eth0
if_eth0
interrupts
iostat
load
memory
...
munin-run にプラグイン名を渡して実行すると、プラグインで取得できる値が列挙される。
$ /usr/sbin/munin-run cpu user.value 1962350 nice.value 2526264 system.value 912873 idle.value 5334455082 iowait.value 307709 irq.value 16025 softirq.value 0


閾値の設定は /etc/munin/munin.conf の監視ノードの定義に記述。 書式は以下の通り。
[plugin].[field].(warning|critical)    value
フィールド名はさっき表示した項目名の「.value」より前の部分。
warningにすると警告検知の閾値、criticalにすると重障害検知の閾値が設定される。
[foo.example.com] address 127.0.0.1 use_node_name yes load.load.warning 5 LoadAverageが5未満でwarning load.load.critical 10 LoadAverageが10を超えるとcritical cpu.user.warning 90 userのCPU使用率が90%を超えるとwarning df._dev_hda1.warning 80 /dev/hda1の使用量が80%を超えるとwarning hddtemp_smartctl.hda.warning 41 HDD(hda)の温度が41度を超えるとwarning
閾値の設定は「:」で区切って、上限値と下限値を設定する。省略した場合は、無制限となる。
「:」を使用せずに数値を記述した場合は、上限値のみが設定されたのと同じ。
hddtemp_smartctl.sda.warning 10:40 HDD温度が10~40度の範囲内でない場合はwarning apcupsd_ww.timeleft.critical 30: UPSの電源供給時間が30分を切ったらcritical memory.apps.warning :300000000 アプリケーションのメモリ使用量が300MBを超えたらwarning memory.apps.warning 300000000 ↑と同じ

ちなみに、閾値のデフォルト値はmunin-run configで確認できる。
$ /usr/sbin/munin-run load config ... load.warning 10 load.critical 120
各設定値はmunin-node起動時に設定ファイルに書き出されるので、こんなコマンドで一括確認できるかも。
$ cat /var/lib/munin/datafile | grep 'warning\|critical'

munin-limitsの挙動を見る限りでは、閾値を全ノード(ホスト)に一括して設定することはできないので、 デフォルト値から変更したい場合はホスト毎にいちいち記述する必要がある。 どうしてもという場合は、プラグイン自体を編集するしかないっぽい。
$ /usr/sbin/munin-run load config ... load.warning 10 load.critical 120
munin-run config で表示される値がechoで直接記述されているので、それを書きなおす。 munin-node起動時に、その出力値が解析されてデフォルト値としてセットされる。なんか珍しい仕様。。。
$ cat /etc/munin/plugins/load ... echo 'load.warning 10' ←この辺を直接編集する echo 'load.critical 120' ←この辺を直接編集する

2007. 10. 15

SubversionのRuby Binding覚書
Subversion1.4.5にしてRuby Binding対応しようとしたら、意外と時間とられたのでメモ。
  • rb_hash_foreach()が必要なので、Ruby1.8.2以降が必要
    configure: WARNING: The detected Ruby is too old for Subversion to use
    configure: WARNING: A Ruby which has rb_hash_foreach is required to use the
    configure: WARNING: Subversion Ruby bindings
    configure: WARNING: Upgrade to the official 1.8.2 release, or later

    $ make swig-rb
    /usr/local/src/subversion-1.4.5/libtool: line 1272: none: command not found
    • WARNING見落とすと、libtoolがおかしなことになっているのでmakeできない
    • RHEL/CentOS4用に出回っているRPMパッケージは1.8.1だったりするのでソースからインスコ
  • --with-ssl付けてconfigureするとmake check-swig-rbでコケる
    $ make check-swig-rb
    /usr/local/src/subversion-1.4.5/subversion/bindings/swig/ruby/.ext/svn/ext/core.so: /usr/local/src/subversion-1.4.5/subversion/libsvn_ra_dav/.libs/libsvn_ra_dav-1.so.0: undefined symbol: SSL_load_error_strings - /usr/local/src/subversion-1.4.5/subversion/bindings/swig/ruby/.ext/svn/ext/core.so (LoadError)
    • neonは事前にインストールしておく
    • neonのconfigureには--enable-shared
    • subversionのconfigureには--with-neon
    • neonは0.25.5推奨とか書いてあるけど、対応リストでは0.26.4まで大丈夫(0.27系はまだ)
  • make check-swig-rbでbdb関連のエラーが2つでるのは無視しても無問題
    Svn::Error::FS_UNKNOWN_FS_TYPE: subversion/libsvn_fs/fs-loader.c:130 Failed to load module for FS type 'bdb'
    • Berkeley DBがインストールされていないと表示されるけど、bdb使わない場合はスルーしても大丈夫
    • --without-berkeley-db付けても回避できないので諦める
  • make install-swig-rbの最後に表示される、ライブラリの追加を忘れない

2007. 10. 10

ニコニコ動画に拡張マイリストを追加するGreasemonkeyスクリプト ※ニコニコ動画(RC2)対応
RC2でHTMLが若干変更されたので、マイページでリストが表示されなくなって慌てて対応。ちょっと手抜きですけど。
デザインも新しいリスト表示に合わせてみました。登録数が増えてきたので、そろそろタグ分類つけないとですね…。

2007. 10. 04

ニコニコ動画に登録数無制限(?)のマイリストを追加するGreasemonkeyスクリプト
アイマス動画だけでもだいぶ圧迫していたのに、初音ミクのせいでマイリスト登録数が一気に増えてしまって、 プレミアム会員の上限(500件)に達してしまったニコニコ中毒者です。 GreasemonkeyのGM_setValueを利用して、登録数がほぼ無制限なマイリスト機能を作ってみました。 Firefox+Greasemonkeyでのみ動作確認。



※初音ミクは俺の嫁

登録件数が厳しくなってきたあたりでドワンゴの中の人に「マイリスト登録数足りないよー」と愚痴ったら、 「サブアカウント作ってね☆」と言われてしまったので、ついカッとなって作った。今はニコニコしている。


実はあかさかランチにっきさんの「ニコニコ動画でcookie内にマイリスト登録するGMスクリプト」の二番煎じだったりします。 cookieに保存すると間違えて削除しちゃったり、容量制限(4KB)でまた追加できなくなったら凹むなーとか思ったので、Greasemonkeyの勉強がてら書いてみました。 せっかくなのでインターフェースを本家に似せてみたりとかいろいろ。

本当はリストの情報をサーバに保存して別環境でも使えるようにしたかったんですが、 (個人利用ならともかく)アカウントの管理とかいろいろ厳しそうだったので断念しました。 マイリストを共有したり、ソーシャルマイリスト(?)みたいなことができたら面白いかなー、とか思ってたんですが誰か作ってくれないでしょうか…。

  [ 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 ]