‘Ubuntu’ タグのついている投稿
Munin で PostgreSQL を監視する
- 2010/04/06
- murabe
- Munin
- PostgreSQL
- Ubuntu
PostgreSQL 大好きっ子なので PostgreSQL を監視するプラグインを追加するんだぜー。
PostgreSQL 監視用のプラグインはパッケージを導入した際にいくつか入ってます。
1 2 3 4 5 6 | $ ls -l /usr/share/munin/plugins/postgres* -rwxr-xr-x 1 root root 5377 2009-10-18 19:53 /usr/share/munin/plugins/postgres_block_read_ -rwxr-xr-x 1 root root 7777 2009-10-18 19:53 /usr/share/munin/plugins/postgres_commits_ -rwxr-xr-x 1 root root 2159 2009-10-18 19:53 /usr/share/munin/plugins/postgres_locks -rwxr-xr-x 1 root root 6118 2009-10-18 19:53 /usr/share/munin/plugins/postgres_queries_ -rwxr-xr-x 1 root root 7243 2009-10-18 19:53 /usr/share/munin/plugins/postgres_space_ |
もちろん /usr/share/munin/plugins/ には、PostgreSQL 用だけじゃなくていろんなプラグインが入ってます。いっぱい、いっぱい。
PostgreSQL のコネクション数の監視をするプラグインは残念ながらここにはないので
http://munin-monitoring.org/wiki/plugin-pg__connections
から取ってきました。
こいつも /usr/share/munin/plugins/ に置いて、実行できるようにしておきましょう。
1 | $ sudo chmod +x /usr/share/munin/plugins/pg__connections |
プラグインの設定方法はプラグインのファイルを開いて読むと書いてありますので、そのようにしていきます。
Munin のプラグインは /etc/munin/plugins/ ディレクトリにあるかどうかで管理されています。まずは、取ってきた pg__connections のシンボリックリンクを作成。
1 | $ sudo ln -s /usr/share/munin/plugins/pg__connections /etc/munin/plugins/pg_5432_connections |
プラグインのファイルの Usage には pg_
用意されているプラグインからも監視したい対象のプラグインをセットアップ。
1 2 | $ sudo ln -s /usr/share/munin/plugins/postgres_block_read_ /etc/munin/plugins/postgres_block_read_5432 $ sudo ln -s /usr/share/munin/plugins/postgres_space_ /etc/munin/plugins/postgres_space_5432 |
この2つにしました。
シンボリックリンクの最後にデータベース名を付けるように書いてありましたがこれらについてもポート番号の5432にしてみました。これらのプラグインでは付けた文字列がグラフのタイトルで使用されるのでちゃんと考えて付けましょう。
ちなみに postgres_block_read_5432 だとグラフのタイトルが「:: Postgres data reads from 5432」となります。postgres_space_5432 の方は「:: Postgres database 5432」となって、データベースの容量に関するグラフのタイトルとしてはイマイチな感じになっちゃいました。
PostgreSQLのプラグインについては設定ファイルに記述がないので設定を追記する必要があります。
1 | $ sudo vi /etc/munin/plugin-conf.d/munin-node |
私の実験環境での設定ですが、次のように追記しました。
1 2 3 4 5 6 7 8 9 10 11 12 13 | [postgres_*] env.PGHOST 127.0.0.1 env.PGPORT 5432 env.PGDATABASE postgres env.PGUSER postgres env.PGPASSWORD trust [pg_5432_connections] env.dbhost 127.0.0.1 env.dbport 5432 env.dbname postgres env.dbuser postgres env.dbpass trust |
[postgres_*] は postgres_ が頭に付いているプラグインの設定、すなわち、用意されているプラグインの設定です。
[pg_5432_connections] はパラメータ名なども異なりますし別途書く必要があります。
実験環境の PostgreSQL の 接続設定は 127.0.0.1 からは trust にしています。よって、データベースの接続にパスワードは不要なのですが、何か書いていないとエラーなったので仮に trust としています。
PostgreSQL 側でやらなければならない設定として「postgresql.conf の stats_start_collector = true として統計情報収集器を有効にせよ」的なことも書いてありますが、PostgreSQL 8.3 以降、この設定は削除され、UDP ソケットの作成に成功したら必ず統計情報収集器が起動するようになったようです(http://www.sraoss.co.jp/technology/postgresql/8.3/ 参照)。
あとは Munin-Node を再起動すればOK、と言いたいところですが、実はこれでは動かない場合があります。 libdbd-pg-perl が入っていない場合です。プラグインが PostgreSQL にアクセスするのに使っているのです。
Ubuntu に Munin をインストールする時には入りませんでしたので、libdbd-pg-perl が入っていない場合には別途インストールする必要があります。
1 | $ sudo aptitude install libdbd-pg-perl |
こんどこそ、準備OK。Munin-Node を再起動します。
1 2 3 4 5 | $ sudo /etc/init.d/munin-node restart * Stopping Munin-Node ...done. * Starting Munin-Node ...done. |
再起動完了。
1 | $ tail -n 20 /var/log/munin/munin-node.log |
ってな感じで、 Munin-Node のログを見てエラーが出てないか確認すると良いでしょう。データがないせいで正常動作をしていてもエラーが出ていたりする場合もあります。内容で判断するしかないですね。
しばらく待つと、こんな感じに PostgreSQL のリソースのグラフが追加されたページが生成されます。
.png)
Popularity: 38% [?]
Munin のプラグインを無効にして監視対象を減らす
Munin はデフォルトの監視対象が多くて素敵です。
ですが、entropy ってのはいらんかなぁと思ったので消しちゃいます。
Munin では /etc/munin/plugins/ にあるプラグインが読み込まれます(Ubuntu にパッケージでインストールした場合)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | $ sudo ls -l /etc/munin/plugins/ total 0 lrwxrwxrwx 1 root root 28 2010-03-30 03:35 cpu -> /usr/share/munin/plugins/cpu lrwxrwxrwx 1 root root 27 2010-03-30 03:35 df -> /usr/share/munin/plugins/df lrwxrwxrwx 1 root root 33 2010-03-30 03:35 df_inode -> /usr/share/munin/plugins/df_inode lrwxrwxrwx 1 root root 27 2010-03-30 03:35 entropy -> /usr/share/munin/plugins/entropy lrwxrwxrwx 1 root root 30 2010-03-30 03:35 forks -> /usr/share/munin/plugins/forks lrwxrwxrwx 1 root root 32 2010-03-30 03:35 if_err_eth0 -> /usr/share/munin/plugins/if_err_ lrwxrwxrwx 1 root root 28 2010-03-30 03:35 if_eth0 -> /usr/share/munin/plugins/if_ lrwxrwxrwx 1 root root 35 2010-03-30 03:35 interrupts -> /usr/share/munin/plugins/interrupts lrwxrwxrwx 1 root root 31 2010-03-30 03:35 iostat -> /usr/share/munin/plugins/iostat lrwxrwxrwx 1 root root 33 2010-03-30 03:35 irqstats -> /usr/share/munin/plugins/irqstats lrwxrwxrwx 1 root root 29 2010-03-30 03:35 load -> /usr/share/munin/plugins/load lrwxrwxrwx 1 root root 31 2010-03-30 03:35 memory -> /usr/share/munin/plugins/memory lrwxrwxrwx 1 root root 35 2010-03-30 03:35 open_files -> /usr/share/munin/plugins/open_files lrwxrwxrwx 1 root root 36 2010-03-30 03:35 open_inodes -> /usr/share/munin/plugins/open_inodes lrwxrwxrwx 1 root root 34 2010-03-30 03:35 processes -> /usr/share/munin/plugins/processes lrwxrwxrwx 1 root root 29 2010-03-30 03:35 swap -> /usr/share/munin/plugins/swap lrwxrwxrwx 1 root root 31 2010-03-30 03:35 vmstat -> /usr/share/munin/plugins/vmstat |
このように実際はシンボリックリンクを作成・削除することでプラグインの有効・無効がコントロールされています。
ので、いらないのは消しちゃおうね。
1 | $ sudo rm /etc/munin/plugins/entropy |
そして、Munin-Node を再起動。
1 | $ sudo /etc/init.d/munin-node restart |
これでプラグインは無効になります。
もしかすると Munin-Node の再起動は必要ないかもしれません。
でも気持ち悪いしやっとこうぜって感じ。
Popularity: 15% [?]
Munin を Ubuntu にインストールする
MRTG よりラクちんにサーバーリソースをモニタリングしたいなぁ、ということでセットアップが簡単と評判の Munin を試してみることにしました。
ターゲットのサーバーは Debian なのですが、個人的趣味で実験環境は Ubuntu です。どちらもパッケージ管理は APT ですし、いいよね?
Debian/Ubuntu は Munin のパッケージを入れるだけで動いちゃうらしいです。
どれどれ、パッケージあるかな〜。
1 2 3 4 5 | $ sudo aptitude search munin pi munin - network-wide graphing framework (grapher/gatherer) p munin-libvirt-plugins - Munin plugins using libvirt pi munin-node - network-wide graphing framework (node) p munin-plugins-extra - network-wide graphing framework (user contributed plugins for node) |
ありました。munin がグラフ化をおこなうソフトで munin-node がリソースの情報を収集するソフトです。
localhostのリソース監視をさせたいので2つまとめてインストール。
1 2 3 4 5 6 7 8 9 10 11 12 | $ sudo aptitude install munin munin-node Reading package lists... Done Building dependency tree Reading state information... Done Reading extended state information Initializing package states... Done The following NEW packages will be installed: gawk{a} libdate-manip-perl{a} libhtml-template-perl{a} libio-multiplex-perl{a} libnet-cidr-perl{a} libnet-server-perl{a} libnet-snmp-perl{a} librrd4{a} librrds-perl{a} munin munin-node rrdtool{a} 0 packages upgraded, 12 newly installed, 0 to remove and 0 not upgraded. Need to get 3,227kB of archives. After unpacking 8,442kB will be used. Do you want to continue? [Y/n/?] |
gawk やら perl のライブラリやらに依存してる模様。ほいほい、全部入れちゃって〜「Y」。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | Writing extended state information... Done Get:1 http://us.archive.ubuntu.com karmic/main gawk 1:3.1.6.dfsg-0ubuntu2 [525kB] Get:2 http://us.archive.ubuntu.com karmic/main libdate-manip-perl 5.54-1 [173kB] Get:3 http://us.archive.ubuntu.com karmic/main libhtml-template-perl 2.9-1 [65.8kB] Get:4 http://us.archive.ubuntu.com karmic/main libio-multiplex-perl 1.10-1 [22.9kB] Get:5 http://us.archive.ubuntu.com karmic/main libnet-cidr-perl 0.13-1 [14.6kB] Get:6 http://us.archive.ubuntu.com karmic/main libnet-server-perl 0.97-1ubuntu1 [141kB] Get:7 http://us.archive.ubuntu.com karmic/main libnet-snmp-perl 5.2.0-1 [112kB] Get:8 http://us.archive.ubuntu.com karmic-updates/main librrd4 1.3.1-4ubuntu2.1 [241kB] Get:9 http://us.archive.ubuntu.com karmic-updates/main librrds-perl 1.3.1-4ubuntu2.1 [79.0kB] Get:10 http://us.archive.ubuntu.com karmic-updates/main rrdtool 1.3.1-4ubuntu2.1 [596kB] Get:11 http://us.archive.ubuntu.com karmic/main munin 1.2.6-13ubuntu3 [613kB] Get:12 http://us.archive.ubuntu.com karmic/main munin-node 1.2.6-13ubuntu3 [644kB] Fetched 3,227kB in 5s (604kB/s) Selecting previously deselected package gawk. (Reading database ... 29378 files and directories currently installed.) Unpacking gawk (from .../gawk_1%3a3.1.6.dfsg-0ubuntu2_i386.deb) ... Selecting previously deselected package libdate-manip-perl. Unpacking libdate-manip-perl (from .../libdate-manip-perl_5.54-1_all.deb) ... Selecting previously deselected package libhtml-template-perl. Unpacking libhtml-template-perl (from .../libhtml-template-perl_2.9-1_all.deb) ... Selecting previously deselected package libio-multiplex-perl. Unpacking libio-multiplex-perl (from .../libio-multiplex-perl_1.10-1_all.deb) ... Selecting previously deselected package libnet-cidr-perl. Unpacking libnet-cidr-perl (from .../libnet-cidr-perl_0.13-1_all.deb) ... Selecting previously deselected package libnet-server-perl. Unpacking libnet-server-perl (from .../libnet-server-perl_0.97-1ubuntu1_all.deb) ... Selecting previously deselected package libnet-snmp-perl. Unpacking libnet-snmp-perl (from .../libnet-snmp-perl_5.2.0-1_all.deb) ... Selecting previously deselected package librrd4. Unpacking librrd4 (from .../librrd4_1.3.1-4ubuntu2.1_i386.deb) ... Selecting previously deselected package librrds-perl. Unpacking librrds-perl (from .../librrds-perl_1.3.1-4ubuntu2.1_i386.deb) ... Selecting previously deselected package rrdtool. Unpacking rrdtool (from .../rrdtool_1.3.1-4ubuntu2.1_i386.deb) ... Selecting previously deselected package munin. Unpacking munin (from .../munin_1.2.6-13ubuntu3_all.deb) ... Selecting previously deselected package munin-node. Unpacking munin-node (from .../munin-node_1.2.6-13ubuntu3_all.deb) ... Processing triggers for install-info ... Processing triggers for man-db ... Setting up gawk (1:3.1.6.dfsg-0ubuntu2) ... Setting up libdate-manip-perl (5.54-1) ... Setting up libhtml-template-perl (2.9-1) ... Setting up libio-multiplex-perl (1.10-1) ... Setting up libnet-cidr-perl (0.13-1) ... Setting up libnet-server-perl (0.97-1ubuntu1) ... Setting up libnet-snmp-perl (5.2.0-1) ... Setting up librrd4 (1.3.1-4ubuntu2.1) ... Setting up librrds-perl (1.3.1-4ubuntu2.1) ... Setting up rrdtool (1.3.1-4ubuntu2.1) ... Setting up munin (1.2.6-13ubuntu3) ... Adding system user `munin' (UID 103) ... Adding new group `munin' (GID 110) ... Adding new user `munin' (UID 103) with group `munin' ... Not creating home directory `/var/lib/munin'. Setting up munin-node (1.2.6-13ubuntu3) ... Initializing plugins..done. Restarting munin-node.. * Stopping Munin-Node ...done. * Starting Munin-Node ...done. * Starting Munin-Node ...done. Processing triggers for libc-bin ... ldconfig deferred processing now taking place Reading package lists... Done Building dependency tree Reading state information... Done Reading extended state information Initializing package states... Done Writing extended state information... Done |
おけ。インストールすると動きだします。
しばらく待って、グラフの作成先を確認してみると
1 2 | $ ls /var/www/munin/ definitions.html index.html localdomain logo.png style.css |
できとる、できとる。ほんと楽チンだ。
Popularity: 33% [?]
VMware で Ubuntu イメージをコピーしたら NIC が見えなくなる件
テスト環境を作ろうと Ubuntu 9.10 Server の仮想アプライアンスを取ってきてブートしたら eth0 が up しないという事態が発生。少々ハマりました。
結論は「VMware とかで Debian イメージをコピったら NIC が見えなくなる件」に書いてある通り、新しいMACアドレスで eth1 ができていました。ubuntu の場合は /etc/udev/rules.d/70-persistent-net.rules にMACアドレスと eth* との対応が書いてあります。
1 2 3 4 5 6 7 8 9 10 11 12 | $ sudo cat /etc/udev/rules.d/70-persistent-net.rules # This file was automatically generated by the /lib/udev/write_net_rules # program, run by the persistent-net-generator.rules rules file. # # You can modify it, as long as you keep each rule on a single # line, and change only the value of the NAME= key. # PCI device 0x1022:0x2000 (pcnet32) SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:1f:93:3e", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0" # PCI device 0x1022:0x2000 (pcnet32) SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:1e:58:e2", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1" |
これを編集すればいいわけですが、ちょっと手を抜いて、設定ファイルをリネーム後再起動して解決しました。
1 2 | $ sudo mv /etc/udev/rules.d/70-persistent-net.rules /etc/udev/rules.d/70-persistent-net.rules.old $ sudo shutdown -r now |
自動で 70-persistent-net.rules を作り直してくれますので 新しいMACアドレスで eth0 の設定が作られます。確認してみましょう。
1 2 3 4 5 6 7 | $ sudo ls -l /etc/udev/rules.d/ total 20 -rw-r--r-- 1 root root 595 2009-11-03 22:20 70-persistent-cd.rules -rw-r--r-- 1 root root 443 2010-03-29 23:49 70-persistent-net.rules -rw-r--r-- 1 root root 631 2010-03-29 18:39 70-persistent-net.rules.old -rw-r--r-- 1 root root 813 2009-11-03 22:40 99-vmware-scsi-udev.rules -rw-r--r-- 1 root root 1157 2009-10-15 23:01 README |
できてますね。
1 2 3 4 5 6 7 8 9 | $ sudo cat /etc/udev/rules.d/70-persistent-net.rules # This file was automatically generated by the /lib/udev/write_net_rules # program, run by the persistent-net-generator.rules rules file. # # You can modify it, as long as you keep each rule on a single # line, and change only the value of the NAME= key. # PCI device 0x1022:0x2000 (pcnet32) SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:1e:58:e2", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0" |
大して手間は変わらない気もしますが、ミスはしにくいかも?
Popularity: 46% [?]
