CentOS 5.4 に munin(サーバー監視ツール) をインストール MRTG/cacti

Posted by admin | CentOS, Linux, PHP, Perl, apache, yum, サーバー管理, ソフトウェア | 火曜日 23 2月 2010 8:33 PM

▼munin 本家サイト
http://munin.projects.linpro.no/


munin って何?

munin(ムーニン)は、オープンソースで公開されているサーバー監視、グラフ化ツールです。
MTRG/cacti などと同様のツールです。


主な特徴

  • 比較的導入が簡単
  • プラグインによる取得データの拡張が出来る
  • グラフ化部(マスター)とデータ取得部(ノード)が違うプログラムになっている


マスター(munin)とノード(munin-node)の役割

マスター: データ収集 + グラフ化
ノード: マスターへのデータ提供


▼munin のインストール
基本的に munin を yum でインストールします。
しかし、CentOS-Base.repo では munin のパッケージが見つからないので
dag.repo を使用して munin のインストールをします。


▼そこで、yum レポジトリの追加(dag.repo)
参考:http://mt.mizba.net/archives/001205.php


$ sudo vi /etc/yum.repos.d/dag.repo

[dag]
name=Dag RPM Repository for redhat
baseurl=http://ftp.riken.jp/Linux/dag/redhat/el$releasever/en/$basearch/dag
enabled=0 # enabled は0にして必要な時だけ有効にします
gpgcheck=1


続いて PGP key をインポートします。

$ sudo rpm –import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt


これで dag.repo の設定は完了です。


▼次に munin を使用するに当たって必要になるアプリケーションのインストール
今回は「情報を集積するサーバ(マスター)」と「監視対象になるサーバ(ノード)」を
同一のサーバにするため munin と munin-node の両方をインストールします。

自分の場合は以下のようになりました。
※各自の環境によって違うと思います。


$ sudo yum --enablerepo=dag install munin munin-node

================================================================================
 Package                           Arch        Version              Repository  
================================================================================
Installing:
 munin                             noarch      1.2.5-2.el5.rf       dag         
 munin-node                        noarch      1.2.5-2.el5.rf       dag         
Installing for dependencies:
 perl-Compress-Zlib                i386        1.42-1.fc6           base        
 perl-Crypt-DES                    i386        2.05-3.2.el5.rf      rpmforge    
 perl-DateManip                    noarch      5.44-1.2.1           base        
 perl-Digest-HMAC                  noarch      1.01-15              base        
 perl-HTML-Parser                  i386        3.64-1.el5.rf        rpmforge    
 perl-HTML-Tagset                  noarch      3.20-1.el5.rf        rpmforge    
 perl-HTML-Template                noarch      2.9-1.el5.rf         rpmforge    
 perl-Net-SNMP                     noarch      5.2.0-1.2.el5.rf     rpmforge    
 perl-Net-Server                   noarch      0.97-1.el5.rf        rpmforge    
 perl-Socket6                      i386        0.23-1.el5.rf        rpmforge    
 perl-URI                          noarch      1.35-3               base        
 perl-libwww-perl                  noarch      5.805-1.1.1          base        

Transaction Summary
================================================================================
Install     14 Package(s)
Update       0 Package(s)
Remove       0 Package(s)



▼続いて munin の設定です。
といっても特に必要ないと思います。

作られたファイルは以下の設定ファイルを見ると分かります。
※各自の環境によって違うと思いますが。
設定ファイルは /etc/munin/munin.conf です。

自分の環境では、以下のようになっていました。

  ・htmldir /var/www/munin
  
  ・/etc/httpd/conf.d/munin.conf
    ScriptAlias /munin/cgi/ /var/www/munin/cgi/
    Alias /munin/ /var/www/munin/


▼設定ファイルの確認が終わったら munin の起動と apache の再起動をします。
・munin の起動及び自動起動設定

    $ sudo /etc/init.d/munin-node start
    Starting Munin Node:       [  OK  ]

    $ sudo /sbin/chkconfig --list munin-node
    munin-node      0:off   1:off   2:off   3:off   4:off   5:off   6:off
    
    off になっていたら、以下コマンドを実行
    $ sudo /sbin/chkconfig munin-node on
    $ sudo /sbin/chkconfig --list munin-node
    munin-node      0:off   1:off   2:on    3:on    4:on    5:on    6:off


上記のようになったら自動起動 OK!

・apache を再起動します。
munin を起動してからは5分おきにグラフが更新されるようになります。

$ sudo /etc/init.d/httpd restart


apache の再起動が完了したら http://localhost/munin/ にアクセスし
munin の状況を見てみましょう。

munin-graph

このように、MRTG/cacti とよく似た感じのグラフィカルなグラフで
負荷状況やサーバー状態などを確認出来ます。

MRTG/cacti よりもインストール設定などが簡単なので是非とも
導入してみては如何でしょうか。





2008年9月のアクセス数の多かった人気記事ベスト5

Posted by admin | 月別人気記事 | 金曜日 3 10月 2008 6:52 PM

先月(2008年9月)のアクセス数が多く人気のあった記事のトップ5です。


  1. IE7でfavicon.ico(ファビコン)が表示されない時の解決方法
  2. 「Eee PC」に対抗!Dellのミニノート「Inspiron Mini 9」
  3. [Linux]ソフトウェアのインストール時にやってしまいがちな失敗10選
  4. Linuxの標準教科書が無料でダウンロード出来ます。
  5. [PHP]オープンソースのウェブメールまとめ


Linuxの標準教科書が無料でダウンロード出来たのには、とても感謝です!
こういった情報が無料で見れるのは、とても素晴らしい事ですよね^^






Linuxの標準教科書が無料でダウンロード出来ます。

Posted by admin | CentOS, Linux, ソフトウェア | 金曜日 19 9月 2008 1:19 PM

lpi_logo

lpi_logo




Linuxの標準教科書(PDF形式)が、簡単なアンケートに答えるだけで無料ダウンロードが可能です。


ダウンロード先:
Linux標準教科書のダウンロード – LPI-Japan – エルピーアイジャパン


今週の土日にでも、復習も兼ねて勉強してみます!







[Linux]ソフトウェアのインストール時にやってしまいがちな失敗10選

Posted by admin | CentOS, Linux, yum, サーバー管理, ソフトウェア | 水曜日 17 9月 2008 1:41 PM

Linuxにソフトウェアをインストールする時にやってしまいがちな失敗を10個紹介しています。

参考サイト:
ZDNet Japan


以下、参考サイトからの引用。



  1. .rpmや.debを採用しているシステムにもかかわらず、ソースコードからイントールを行う
  2. パッケージ管理システムのGUIフロントエンドアプリケーションを使用しない
  3. 利用可能なパッケージ一覧のアップデートを忘れる
  4. yumやapt-getへのリポジトリ追加を行わない
  5. ブラウザからのインストールを利用しない
  6. コマンドラインの存在を忘れてしまう
  7. 手当たり次第にtarファイルを展開する
  8. Makefileを削除してしまう
  9. アーキテクチャの異なるファイルをインストールしてしまう
  10. カーネルのアップデートに伴う問題への対処が悪い




7番目は、見事に当てはまってます(;゚д゚)アッ….
今度からは、気をつけよう(´・ω・`)


詳しくは、参考サイトをご参照ください。








無くなって初めて気づく定期的自動バックアップの大切さ

Posted by admin | MySQL, PostgreSQL, サーバー管理 | 金曜日 23 5月 2008 3:16 PM

という事で、約40分で理解する定期的自動バックアップ方法のメモです。

参考url:
http://www.hyperdyne.co.jp/~oohashi/work/redhat/etc/remotebackup.shtml

今回はpostgresqlを例にしてみます。

なにをやるかですが、

  1. 遠く離れたLinuxマシン上で、自動的にデータを定期的に圧縮・保管する
  2. 圧縮は、週1回はフルで行ない、差分(追加・修正されたファイルのみ。削除されたファイルは反映されない)だけを毎日とる
  3. 手元にあるLinuxマシンが自動的にFTPでログインし、圧縮・保管されているファイルを毎日ゲットする
です。


1.の定期的にバックアップする

まず遠く離れたところにあるLinuxマシンで、データを定期的に圧縮・保管するようにします。ここでは、システム全体のバックアップは行なわず、データ のバックアップだけを行なうようにとどめ、バックアップにあたっては、ユーザのディレクトリごとに行ない、週1回そのフルバックアップを行ない、そのうち変 更・追加されたファイルのバックアップを毎日行なうようにします。

バックアップはシェルスクリプトを使い、cronによって自動的に行ないます。まずシェルスクリプト「dailybackup.sh」を、次の内容で記述します。

#!/bin/sh
set `date +%y%m%d`
cd /var/www
find html/ -mtime 1 \! -type d -print > /var/backup/html$1.txt
if test -s /var/backup/html$1.txt
then
tar zcvf /var/backup/html$1.tar.gz -T /var/backup/html$1.txt
fi
cd /home
find webmaster/ -mtime 1 \! -type d -print > /var/backup/webmaster$1.txt
if test -s /var/backup/webmaster$1.txt
then
tar zcvf /var/backup/webmaster$1.tar.gz -T /var/backup/webmaster$1.txt
fi
su -l postgres -c '/usr/bin/pg_dump database_1 > database_1.dump'
mv /var/lib/pgsql/database_1.dump /var/backup/database_1$1.dump
set `date --date '1 days ago' '+%y%m%d'`
rm -f /var/backup/*$1.txt
rm -f /var/backup/*$1.tar.gz
rm -f /var/backup/*$1.dump

ここでは、バックアップしたデータを格納するディレクトリを「/var/backup」としています。「/var/backup」のオーナーは「root」ですが、バックアップファイルをあとでFTPでゲットできるよう「webmaster」を例えば「webmaster」というようなグループに所属させ、そのグループにも読み書き・削除できる権限を与えておく必要があります。「chmod 770」です。

# ls -la
合計 74
drwxr-xr-x   27 root     root         4096 May  8 12:17 .
drwxr-xr-x   17 root     root         1024 Feb 17 04:15 ..
drwxrwx---    2 root     webmaster    8192 Jun 19 15:41 backup

シェルスクリプトなので先頭に「#!/bin/sh」が必要です。2行目の「set `date +%y%m%d`」は、dateコマンドから「010621」(2001年6月21日)というパラメータを作るためのもので、「$1」がこのパラメータに置き換わります。

「cd /var/www」でバックアップしたいディレクトリのひとつ上に移動します。「find html/ -mtime 1 \! -type d -print > /var/backup/html$1.txt」は、findコマンドで1日(24時間)以内に修正・追加されたファイルをリストアップします。リス トアップされたファイルリストは「html010618.txt」のように日付「010608」が付いたファイル名で保存されます。

findコマンドでは、「find <検索を開始するディレクトリ> <検索の条件> <コマンド>」という書式になります。


if test -s /var/backup/html$1.txt
then
tar zcvf /var/backup/html$1.tar.gz -T /var/backup/html$1.txt
fi

「if」文で分岐処理しています。先に実行するfindコマンドでは、変更・追加がなくてもファイルが作られるため、testコマンドを使ってそのファイルが空かどうかをチェックします。空でない場合、そのファイルリストをもとにtarコマンドで、リストにあるファイルを圧縮します。


su -l postgres -c '/usr/bin/pg_dump database_1 > database_1.dump'
mv /var/lib/pgsql/database_1.dump /var/backup/database_1$1.dump

は、PostgreSQLのデータベースをバックアップしています。


set `date --date '1 days ago' '+%y%m%d'`
rm -f /var/backup/*$1.txt
rm -f /var/backup/*$1.tar.gz
rm -f /var/backup/*$1.dump

は、前日の不要なファイルを削除するステップです。「set `date –date ‘1 days ago’ ‘+%y%m%d’`」で1日前を「010617」のようなパラメータとし、rmコマンドで不要なファイルを削除しています(daysはdayという単数形でもいいようです)。


以上のような内容のシェルスクリプトを作ったら、オーナーrootで「chmod 700」として実行権を与えておきます。スクリプトに誤りがないか確認したら、実行して動作を確認します。
実行して動作に問題が無ければ最後に、「/etc/crontab」に登録します。

30 4 * * * root /var/backup/dailybackup.sh > /dev/null 2 >&1

毎日明け方4時30分にスクリプト「dailybackup.sh」が実行されます。

同様にして「weeklybackup.sh」という名前のシェルスクリプトを次の内容で作ります。

#!/bin/sh
set `date +%y%m%d`
cd /var/www
tar zcvf /var/backup/html$1.full.tar.gz ./html/*
cd /home
tar zcvf /var/backup/webmaster$1.full.tar.gz ./webmaster/*
set `date --date '1 weeks ago' '+%y%m%d'`
rm -f /var/backup/*$1.full.tar.gz

dailybackup.shとほとんど同じ内容ですが、「なんとか+日付.full.tar.gz」という日付付きの名前で圧縮ファイルを作るようになります。rmコマンド行は、1週間前の不要なファイルを削除するステップです。「set `date –date ‘1 weeks ago’ ‘+%y%m%d’`」で1週間を「010617」のようなパラメータとし、rmコマンドで不要なファイルを削除しています(weeksはweekという単数形でもいいようです)。

dailybackup.shと同じように「/etc/crontab」に登録します。

50 4 * * 0 root /var/backup/weeklybackup.sh > /dev/null 2 >&1




3.のリモートマシンからFTPでバックアップファイルをゲットする

次に近くにあるLinuxマシンから自動的にリモートサーバにFTPでファイルをゲットする仕組みを作ります。まず次のような内容のシェルスクリプト(たとえば、「remote.sh」というような名前で)を作ります。

#!/bin/sh
cd /usr/bin
ftp -n < /home/xxxxxxx/login.www

「/usr/bin」ディレクトリにあるftpコマンドを使っています。続いて「/home/xxxxxxx」ディレクトリに「login.www」というような名前のファイルを作り、次のようなftpコマンドを記述しておきます。

open www.hyperdyne.co.jp
user webmaster xxxxxxxxxxxx
idle 600
prompt
hash
lcd /home/xxxxxxxx/www/
cd /var/backup
bin
mget *.tar.gz
ascii
mget *.dump


openコマンドでサーバを指定し、そのあとでuserコマンドでユーザ名とパスワードを渡しています。「xxxxxxxxxxxx」となっているところにパスワードが入ります。FTPではテキストでパスワードが流れてしまいます。lcdはlocal側のcd(Change Directory)です。ローカル側とリモート側でディレクトリを移動してからmgetコマンドで複数のファイルをgetします。

getするときには、バイナリファイルに対しては「bin」を、テキストファイルには「ascii」をあらかじめ実行しておきます。「hash」は進行状況を表示するコマンドです。実際に運用するときは不要です。

作ったシェルスクリプトを実行させてみてうまく動作するようでしたら、cronに登録しておきます。
以上です。お疲れ様でした。





Page 1 of 212