タグ

ブックマーク / dayflower.hatenablog.com (46)

  • Cacti に SNMP デバイスを追加したときのメモ - daily dayflower

    スマートスイッチ(NETGEAR GS724Tv3)を Cacti でモニタリングしたときの記録 SNMP 経由で監視するデバイス (ハブ) を追加する 「Create」メニューの「New Graphs」を選択する 右上にある「Create New Host」リンクをクリックする 適当に設定する 「Hostname」 はきちんと設定する 「Host Template」は「Generic SNMP-enabled Host」を選択する必要がある? 「Downed Device Detection」はデフォルト (Ping, UDP Ping) のままでいいと思う 「SNMP Version」は (v3 で認証とかやってないのなら)「Version 2」あたりを設定すると楽 適宜「SNMP Community」を設定する; たいていデフォルトの「public」のままだろうけど ホストが作成され

    Cacti に SNMP デバイスを追加したときのメモ - daily dayflower
    dann
    dann 2010/10/30
  • DBIx::Simple と SQL::Abstract::Limit - daily dayflower

    なんちゃってマッパ DBIx::Simple DBIC などの O/R マッパを使うほどじゃないけど DB 操作で楽したい,という場合には tomi さんも御推薦の DBIx::Simple があります。tomi さんもお書きのように結構致命的なバグ(その1,その2)が放置されているのが悲しいところですが。 DBIx::Simple を生の状態で使ってもそれほど有難味がないですが,周辺モジュールがインストールされていると透過的に使ってくれるので格段に便利になります。たとえば SQL::Abstract でクエリを簡単に書くことができますし,クエリ結果をテーブルにしたい場合 DBIx::XHTML_Table を使うと楽です。 さらに,DBIx::Simple::OO という拡張モジュールを別途インストールするとクエリ結果を Object::Accessor ベースなオブジェクトにしてくれま

    DBIx::Simple と SQL::Abstract::Limit - daily dayflower
    dann
    dann 2010/10/20
  • Google Apps 用 tinydns の設定 - daily dayflower

    2008-05-23 追記: example.jp に CNAME を設定していたため MX 参照が失敗していました。ごめんなさい。 個人で持っているドメインを Google Apps で使えるように tinydns を設定しました。ほんとは djb products あんまり好きじゃないんですが,知り合いのネームサーバを間借りしたのでやむなく。Google さまネームサーバのホスティングもやってくれないかなぁ。 自分用メモなので内容については一切無保証です。設定をのちのち変えるのが面倒&alias domain mail を使いたかったのでワイルドカード DNS を使用しています。ドメインのすべてを Google におまかせしてもいい&最悪メールのやりとりができなくなってもいいという方以外おすすめできません。 example.jp というドメインで Google Apps を使う ネーム

    Google Apps 用 tinydns の設定 - daily dayflower
  • USB-RH で温湿度を収集しグラフ化(collectd & rrdtool) - daily dayflower

    USB-RH で遊ぶ - daily dayflower で USB-RH という USB 接続温湿度計を Linux から使えるようにしましたが,このままだとコマンドラインから温湿度を調べることしかできません。 やっぱり見たいのはグラフによる傾向! てことで,普通なら RRDTool と組み合わせてグラフ化するのですが,ちょっと一手間加えて collectd で温湿度データを収集してみました。 collectd とは collectd とは,マシンの様々なステータス(ネットワークインタフェースの転送量など)を収集するデーモンです。 似たようなソフトウェアに Nagios, ZABBIX, Munin, Ganglia, Cacti などいろいろありますが,collectd の特徴は, データの収集のみ(通知も対応)に重きをおいており,データのプレゼンテーション機能ははっきりいってない C

    USB-RH で温湿度を収集しグラフ化(collectd & rrdtool) - daily dayflower
  • collectd のフロントエンドとして Cacti を使う - daily dayflower

    リソースデータ収集は collectd がとてもいい だが collectd にはプレゼンテーション層が欠けている いくつかフロントエンドもでていますが気に入ったものはありませんでした。 Cacti のデータ閲覧 UI は(この手のフリーのもののなかでは)かなり良い でも Cacti のデータソース管理 UI をいじるのは相当面倒 端的に言うと「Cacti の UI で collectd のデータを閲覧できたらなぁ」 collectdのデータをKDEデスクトップ上に表示したい場合は、kcollectdの利用を検討するとよい。誕生して間もないプロジェクトだが、すでに有用性が認められている。また、生成されたRRDtoolファイルはCactiでも利用できる。ただし、非常に長々とした設定をグラフ別に行う必要がある。 Webインタフェースでマシンを監視する4つの方法 (2/5) - ITmedia

    collectd のフロントエンドとして Cacti を使う - daily dayflower
  • 帰ってきた VMware ESXi ディスクベンチマーク - daily dayflower

    以前 VMware ESXi で各種ディスクのベンチマークをとってみた - daily dayflower にてVMware ESXi で各種(ネットワーク)ディスクのベンチマークをとりましたが、残念ながら 100Mbps イーサネット環境での実験でした。 今回、GbE 環境が整ったので改めて各種ネットワークストレージのベンチマークをおこないました。 おことわり おもに(前回と同じく)下記の命題を検証するために測定をおこないました。 NFS データストアでも iSCSI データストア・LUN マッピングと比べて遜色ない(といいな) ネットワークストレージ環境でもローカルストレージ環境に比べて遜色ない(といいな) なお前回と比べてネットワークスピード以外に結構環境が違うので*1単純に結果を比較することはできません。 NAS 買ったよ! じつはとっくにギガビットスイッチと Celeron 44

    帰ってきた VMware ESXi ディスクベンチマーク - daily dayflower
  • APR を利用したプログラムの autotools 化 - daily dayflower

    APR を利用したプログラムを書いていて,それを配布したい。 MODULE.JP - Apache Portable Runtimeをあなたのプロジェクトに取り込む という素晴らしいテキストがあるんだけど,これはソースディストリビューションに APR library を同梱する前提でかかれています。さいわいにして,最近の Linux ディストリビューションでは Apache をインストールすると APR library が共有ライブラリとしてインストールされますし,開発者向け APR library パッケージも用意されています。なので,システムにインストールされている APR library を利用する前提でやってみようと思いました。 と思ったら, APR とか CFL とか - odz buffer というリソースがありました。かなり参考にしつつ,一挙手一投足で書いてみます。 なお,こ

    APR を利用したプログラムの autotools 化 - daily dayflower
  • CentOS 5 で認識されないハードウェアを使うとき ELRepo がべんり - daily dayflower

    CentOS 5 (RHEL5) のサードウェアレポジトリとしては EPEL や RPMForge が有名だと思いますが,ハードウェアドライバ(カーネルモジュール)に特化した ELRepo というのもあります。 歴史は浅いんですが,RPMForge のドライバモジュールが DKMS ベースなのに対して ELRepo のドライバは KMP ベースなので*1,OS のメジャーバージョンアップをおこなわない限り素直にアップデートに追随できます。 提供されているドライバの一覧は ELRepo : Packages を参照してください。 実例 1: D945GCLF2 遣いは kmod-r8168 でハッピー Intel Atom 330 を搭載した Mini-ITX マザーである D945GCLF2 にはギガビットネットワークインタフェースとして Realtek RTL8168B という NIC

    CentOS 5 で認識されないハードウェアを使うとき ELRepo がべんり - daily dayflower
    dann
    dann 2009/08/24
  • rsync で pdumpfs みたいなことをする - daily dayflower

    いままで履歴つきのバックアップは pdumpfs*1 でとっていたのですが,rsync のオプション(--link-dest)を使うと同等のことをできるらしいと知りました。 バックアップにrsync --link-destを使うと良い場合もあるよ | rutoの日記 | スラド rsyncで差分バックアップを行うための「--link-dest」オプション - ITmedia エンタープライズ サンプル バックアップ元のファイル群をサンプルとして作成します。 $ mkdir -p work/src/foo $ echo "baz" > work/src/foo/barこれで, - work/ - work/src/ - work/src/foo/ - work/src/foo/barのような構造ができました。これのバックアップをとっていきます。 まずは普通に rsync 履歴つき(差分)バッ

    rsync で pdumpfs みたいなことをする - daily dayflower
  • Exporter を使ったモジュールの継承 - daily dayflower

    おまえは何を言っているんだみたいな話だったらすみません。 たとえば,foo() という関数を export している ModA というモジュールがあるとします。 package ModA; use strict; use warnings; use base qw( Exporter ); our @EXPORT = qw( foo ); sub foo { warn sprintf '%s::foo called', __PACKAGE__; } 1; こいつをたとえば #!/usr/bin/perl use strict; use warnings; use ModA; foo(); のように使うと, ModA::foo called at ModA.pm line 12.のように出ます。 ここまでは当たり前。 use ModB したら ModA::foo() を呼び出せるようにしたい

    Exporter を使ったモジュールの継承 - daily dayflower
    dann
    dann 2009/03/30
  • APR-util の DBD API を使ってみる - daily dayflower

    APR(の一部の APR-util)には,各種データベースを統一インタフェースで使うことのできる DBD API があります。のでちょっと使ってみました。 ちなみに普通に C でアプリケーションを書いている人にはあまりおすすめできないと思います。統一インタフェースというほど方言を吸収しているとはいえないので。もっとも portability layer としてすでに APR を使用していて,ちょっくら DB も(軽く)使用しようかというケースなら向いているかもしれません。どちらかというと,DB を使用する Apache のモジュールを開発している場合に,個別のデータベースクライアントライブラリにバインドするよりはこちらを使ったほうが,柔軟性(データベースの選択)が増すという用途です。さらに mod_dbd なんてのもあわせて使うとおもしろいかも。 どのデータベースエンジンがサポートされてい

    APR-util の DBD API を使ってみる - daily dayflower
    dann
    dann 2009/03/23
  • コールトレースを追うデバッグ用モジュール - daily dayflower

    Perl スクリプトをトレースするには Perl デバッガを使ってもいいですが,全体的な実行フローを追いたい場合 Devel::Trace が使えます。 たとえば #!/usr/bin/perl use strict; use warnings; my $i = 0; sub foo { bar(); baz(); } sub bar { baz(); } sub baz { $i ++; } foo(); みたいなスクリプトがあるときに,Devel::Trace でトレースするには下記のようにスクリプトを実行します。 $ perl -d:Trace test.pl実行結果は, >> test.pl:6: my $i = 0; >> test.pl:21: foo(); >> test.pl:9: bar(); >> test.pl:14: baz(); >> test.pl:18: $i

    コールトレースを追うデバッグ用モジュール - daily dayflower
  • UUID::Object と UUID::Generator::PurePerl を書いた - daily dayflower

    UUIDPerl について - daily dayflower でうだうだ書いてたのですが,Pure Perl 実装の UUID generator が欲しくなったので書いてみました(各種 UUID モジュールのインタフェースを共通化するモジュールはまだ書いていません)。 CodeRepos に置いてあります。 UUID::Object http://svn.coderepos.org/share/lang/perl/UUID-Object/trunk/ UUID::Generator::PurePerl http://svn.coderepos.org/share/lang/perl/UUID-Generator-PurePerl/trunk/ この記事で反応?をみて,異論がなければ今月中には CPAN にあげようかなと思っています。 SYNOPSIS としては以下のような感じ。

    UUID::Object と UUID::Generator::PurePerl を書いた - daily dayflower
    dann
    dann 2009/03/17
  • use utf8 環境下で => オペレータの左辺が UTF8 flag on になってしまう - daily dayflower

    use strict; use warnings; sub Dump { @_ = map { sprintf "'%s'(%s)", $_, utf8::is_utf8($_) ? 'utf8' : 'bytes' } @_; print {*STDERR} join(q{, }, @_), "\n"; } no utf8; Dump( foo => 'bar' ); #=> 'foo'(bytes), 'bar'(bytes) no utf8; だもんで,両者とも bytes なのは,まぁあたりまえ。 ところが,これを use utf8; で動かすと…… use utf8; Dump( foo => 'bar' ); #=> 'foo'(utf8), 'bar'(bytes) foo の UTF8 flag が on になってる! use utf8 にしてたので,任意の文字列リテラルが

    use utf8 環境下で => オペレータの左辺が UTF8 flag on になってしまう - daily dayflower
  • prove (Test::Harness) コマンドの --state オプション - daily dayflower

    テストが膨大になっていくと,あるテストでは時間がかかったりして「そのテストはもう成功することがわかっとるっちゅうねん;失敗するテストだけ再テストしたいっちゅうねん」ってことになったりします。そんなときに使えるのが prove コマンドの --state オプションです。 --state オプションに failed という引数をわたすと,「テストの対象は前回 fail したテストスクリプトのみ対象」という意味になります。ステートを保存する save と併用して指定してみます。 % prove --state failed,save No saved state, selection will be empty Files=0, Tests=0, 0 wallclock secs ( 0.00 usr + 0.00 sys = 0.00 CPU) Result: NOTESTS「No save

    prove (Test::Harness) コマンドの --state オプション - daily dayflower
    dann
    dann 2009/01/20
  • ESXi 環境私的考察 - daily dayflower

    VMware ESXi で各種ディスクのベンチマークをとってみた - daily dayflower の動機とか思索とかメモメモ。 iSCSI や NFS によってディスクを外在化させれば,DRBD や LVM を活用して堅牢な VM image store とすることができる local disk だとサポートされているハードウェア RAID でなくては保護ができないし,どれかがこけると全 VM が止まってしまう VM の手動マイグレーションを行うには,事実上 VM を構築するディスクを外在化させる必要がある iSCSI data store では local disk と大差ない,つまり(似非)オンラインマイグレーションできない*1 iSCSI raw LUN mapping にすれば一応マイグレーション可能 ただしどこかに Configuration File や Working L

    ESXi 環境私的考察 - daily dayflower
  • VMware ESXi で各種ディスクのベンチマークをとってみた - daily dayflower

    ESXi でネットワーク Disk 上に VM を構築するにはいくつかの手段があるのですが,それらの速度を測定してみました。 おことわり おもに下記の命題を検証するために測定を行いました。 NFS data store でも iSCSI data store / raw disk と比べて遜色ない(といいな) 性能比較としては統制のとれていない劣悪な環境で行いました。 ネットワーク環境は 100Mbps(!) しかも isolated な環境ではない……つまり他のパソコンやルータ等がつながったハブにもつながっている(!) ストレージサーバは単一のディスクを LVM で分割して利用している なので外周内周による速度の違いはありうる といっても 1TB HDD に 32GB の LV をいくつか切っただけなのでそこまでの差はないと思う VMware ESXi はCPU 周波数やメモリ割り当てを

    VMware ESXi で各種ディスクのベンチマークをとってみた - daily dayflower
  • mod_perl 2.0 でのハンドラの戻り値 - daily dayflower

    mod_perl で ModPerl::Registry や ModPerl::PerlRun を使わずに,自力でハンドラを書く場合, sub handler : method { my ($class, $r) = @_; ... return Apache2::Const::OK; }みたく書き始めるわけです*1。ここで,エラーが発生した場合や,リダイレクト(302 等)を行う場合,最後の戻り値に,Apache2::Const::SERVER_ERROR や Apache2::Const::REDIRECT を返したくなります(生の 500 や 302 でも等価です)。しかし,戻り値でそれらの値を返してしまうと Apache は自力でエラーページ等を用意するので,出力の最後にそれがくっついてしまいます。また OK 以外を返した場合,$r->headers_out() に設定したヘッダは

    mod_perl 2.0 でのハンドラの戻り値 - daily dayflower
    dann
    dann 2009/01/06
  • perluniadvice - daily dayflower

    perluniadvice の前半部分を訳してみました。かなり意訳。 アドバイスと銘うってますが,中級者〜上級者向きです*1。 抄訳 perluniadvice Perl 付属のドキュメント perlunitut はもう読んだ?もしまだなら,そこから読み始めること :) perlunitut - perldoc.perl.org perlunifaq - perldoc.perl.org 以下にわたし(http://juerd.nl/)からのアドバイスの要約を挙げる。perlunitut には記述しなかった内容も含んでいる。 もしあなたが古い Perl を使っているのなら,最新版にアップグレードしよう もしあなたが古い CPAN モジュールを使っているのなら,最新版にアップグレードしよう 「外界」からやってくるデータはすべて decode() しよう 「外界」へ出力するデータはすべて en

    perluniadvice - daily dayflower
  • 複数ファイルを使った中規模 XS の開発 - daily dayflower

    複数ファイルをビルド対象とした XS の開発について,あまり手間をかけないシンプルで効果的な方法を書いていきます。自分の経験をもとに書きますのでベストプラクティスではありませんが。 余談(SV*() マクロの sideeffect にやられた話) state_stack という配列に state を整数値でスタックとして格納していて,スタックから過去の state を取り出そうとしたんです。 んで(わりと素直に) state = SvIV(av_pop(state_stack)); と書いたら,2つずつスタックから pop されてしまいました*1。 XS hacker なら当たり前な話ですけど,SV*() というのは一見関数然としてますがマクロなんです。 #define SvIV(sv) (SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv)) こんな形で,いずれのケースに

    複数ファイルを使った中規模 XS の開発 - daily dayflower
    dann
    dann 2008/12/22