‘Ubuntu’ タグのついている投稿
Munin を Ubuntu にインストールする
MRTG よりラクちんにサーバーリソースをモニタリングしたいなぁ、ということでセットアップが簡単と評判の Munin を試してみることにしました。
ターゲットのサーバーは Debian なのですが、個人的趣味で実験環境は Ubuntu です。どちらもパッケージ管理は APT ですし、いいよね?
Debian/Ubuntu は Munin のパッケージを入れるだけで動いちゃうらしいです。
どれどれ、パッケージあるかな〜。
$ 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つまとめてインストール。
$ 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」。
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
おけ。インストールすると動きだします。
しばらく待って、グラフの作成先を確認してみると
$ ls /var/www/munin/
definitions.html index.html localdomain logo.png style.css
できとる、できとる。ほんと楽チンだ。
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* との対応が書いてあります。
$ 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"
これを編集すればいいわけですが、ちょっと手を抜いて、設定ファイルをリネーム後再起動して解決しました。
$ 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 の設定が作られます。確認してみましょう。
$ 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
できてますね。
$ 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"
大して手間は変わらない気もしますが、ミスはしにくいかも?
Munin で PostgreSQL を監視する
- 2010/02/06
- murave
- Munin
- PostgreSQL
- Ubuntu
PostgreSQL 大好きっ子なので PostgreSQL を監視するプラグインを追加するんだぜー。
PostgreSQL 監視用のプラグインはパッケージを導入した際にいくつか入ってます。
$ 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/ に置いて、実行できるようにしておきましょう。
$ sudo chmod +x /usr/share/munin/plugins/pg__connections
プラグインの設定方法はプラグインのファイルを開いて読むと書いてありますので、そのようにしていきます。
Munin のプラグインは /etc/munin/plugins/ ディレクトリにあるかどうかで管理されています。まずは、取ってきた pg__connections のシンボリックリンクを作成。
$ sudo ln -s /usr/share/munin/plugins/pg__connections /etc/munin/plugins/pg_5432_connections
プラグインのファイルの Usage には pg_
用意されているプラグインからも監視したい対象のプラグインをセットアップ。
$ 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のプラグインについては設定ファイルに記述がないので設定を追記する必要があります。
$ sudo vi /etc/munin/plugin-conf.d/munin-node
私の実験環境での設定ですが、次のように追記しました。
[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 が入っていない場合には別途インストールする必要があります。
$ sudo aptitude install libdbd-pg-perl
こんどこそ、準備OK。Munin-Node を再起動します。
$ sudo /etc/init.d/munin-node restart
* Stopping Munin-Node
...done.
* Starting Munin-Node
...done.
再起動完了。
$ tail -n 20 /var/log/munin/munin-node.log
ってな感じで、 Munin-Node のログを見てエラーが出てないか確認すると良いでしょう。データがないせいで正常動作をしていてもエラーが出ていたりする場合もあります。内容で判断するしかないですね。
しばらく待つと、こんな感じに PostgreSQL のリソースのグラフが追加されたページが生成されます。
Munin のプラグインを無効にして監視対象を減らす
Munin はデフォルトの監視対象が多くて素敵です。
ですが、entropy ってのはいらんかなぁと思ったので消しちゃいます。
Munin では /etc/munin/plugins/ にあるプラグインが読み込まれます(Ubuntu にパッケージでインストールした場合)。
$ 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
このように実際はシンボリックリンクを作成・削除することでプラグインの有効・無効がコントロールされています。
ので、いらないのは消しちゃおうね。
$ sudo rm /etc/munin/plugins/entropy
そして、Munin-Node を再起動。
$ sudo /etc/init.d/munin-node restart
これでプラグインは無効になります。
もしかすると Munin-Node の再起動は必要ないかもしれません。
でも気持ち悪いしやっとこうぜって感じ。