Munin でインストールしたプラグインの情報が取得できない

  あるサーバに Munin で nginx を監視するために nginx のプラグインをインストールしましたが、
  なぜだか、情報が取得できない現象に出くわしました。
  具体的には、Munin のレポートページに表示されません。

  1. nginx_status をダウンロードして、/usr/share/munin/plugins/nginx_status へコピー。
  2. /etc/munin/plugins にシンボリックリンクを張る。

  これだけでいいかと思ったのですが、ダメでした。
  
  原因を探るために perl /etc/munin/plugins/nginx_status を実行してみても、特に問題なく結果が出力されます。
  色々調べていると、munin-run なるコマンドの存在が…!
  

$ /usr/sbin/munin-run nginx_status
ERROR: Could not execute plugin (plugin doesn't exist?).

  あれ?実行されません。パーミッションを見てみると、 0644 (rw-r--r--) で実行権限がありません。
  これが原因かと思い、sudo chmod 0755 /usr/share/munin/plugins/nginx_status したあとに、再度 nginx_status を。
  

$ /usr/sbin/munin-run nginx_status
total.value 2
reading.value 0
writing.value 1
waiting.value 1

  なるほど。これでいけるのか。その後、munin-node を再起動 (sudo /etc/init.d/munin-node restart) して無事、レポートに表示されるようになりました。
  
  要は、
  
  1. プラグインをインストールしたら、実行権限をつけること。
  2. プラグインの動作確認は、munin-run で。

  ってことでした。
  
- refs.: Debugging Munin plugins
  http://munin-monitoring.org/wiki/Debugging_Munin_plugins

svn diff で改行コードを無視する

  svn diff で改行コードを無視する場合は、-x --ignore-eol-style を指定する。

$ svn diff -x --ignore-eol-style

mod_rpaf の RPAFproxy_ips に 192.0.2. とか書きたい

  リバースプロキシ環境下で、リモートホストのIPアドレスを取得するために、
  mod_rpaf を使っていますが、RPAFproxy_ips は 192.0.2.0 のように、IPアドレス
  を指定する必要があり、192.0.2. のようにはかけません。

  つまり、RPAFproxy_ip に 192.0.2. のように指定したい話。

  設定では無理そうなので、mod_rpaf-2.0.c を書き換えました。

--- mod_rpaf-2.0.c.orig 2008-01-01 12:05:40.000000000 +0900
+++ mod_rpaf-2.0.c      2011-08-04 12:02:13.000000000 +0900
@@ -139,7 +139,7 @@
     int i;
     char **list = (char**)proxy_ips->elts;
     for (i = 0; i < proxy_ips->nelts; i++) {
-        if (strcmp(remote_ip, list[i]) == 0)
+        if (strncmp(remote_ip, list[i], strlen(list[i])) == 0)
             return 1;
     }
     return 0;


  これで、下記のように書けます。

RPAFenable On
RPAFsethostname Off
RPAFproxy_ips 192.0.2.


- refs: mod_rpaf for Apache
  http://stderr.net/apache/rpaf/

Windows 7 でファイル名に ~ (チルダ)を含むファイルを検索する

  チルダを検索

  検索窓に

名前:~="~"

  を入力。同様に、「$」を含むものを検索する場合は、

名前:~="$"

  で検索。

Zend_Oauth_Consumer でプロキシサーバを経由する方法

$config = array(
    'siteUrl'        => 'http://example.com/oauth',
    'consumerKey'    => 'xxxxx',
    'consumerSecret' => 'xxxxx',
    'callbackUrl'    => 'http://example.com/callback',
    'authorizeUrl'   => 'https://example.com/oauth/authorize',
);

$client = new Zend_Http_Client(null, array(
    'adapter'    => 'Zend_Http_Client_Adapter_Proxy',
    'proxy_host' => 'proxyサーバのホスト名',
    'proxy_port' => proxyサーバのポート番号,
));

$consumer = new Zend_Oauth_Consumer($config);
$consumer->setHttpClient($client);

Zend_Service_Twitter でプロキシサーバを経由する方法

$client = new Zend_Http_Client(null, array(
    'adapter'    => 'Zend_Http_Client_Adapter_Proxy',
    'proxy_host' => 'proxyサーバのホスト名',
    'proxy_port' => proxyサーバのポート番号,
));

$twitter = new Zend_Service_Twitter(array(
    'accessToken' => $access_token, // Zend_Oauth_Token_Access
));
$twitter->setLocalHttpClient($client);