2008/03/11
CentOS 4.6 で、ZABBIX 1.4.4
社内のサーバ監視に、ZABBIX(日本語サイト)を使用しているのですが、ZABBIX 1.4 では、「WEB monitoring」というWebサイトを簡単に監視できる機能が搭載されたようなので、この機能を使いたいがため、1.1.3 からアップデートしてみました。
New in ZABBIX 1.4 FEATURES(日本語サイト)
- Installation Wizard
Installation Wizard automatically checks pre-requisites, database connectivity and generates configuration file for WEB front end.
- Support of new database engines
Support of SQLite has been implemented. It allows use of ZABBIX in embedded environments.
- WEB interface improvements
Speed and usability of WEB interface has been improved very much.
- New notification methods
Native support of Jabber messaging has been introduced.
- Distributed monitoring
ZABBIX distributed monitoring is made for complex environments consisting of different locations. ZABBIX supports monitoring of unlimited number of nodes. Centralized configuration allows easy configuration of all nodes from a single location.
- Auto-discovery
ZABBIX distributed monitoring module allows easy deployment of ZABBIX systems. The discovery support IP ranges, service checks, agent and SNMP checks for efficient auto-discovery.
- Many-to-many template linkage
More flexible host-template linkage saves time and make configuration of hosts more flexible and straight forward.
- Database watchdog
ZABBIX server will automatically warn group of users if database is down and continues normal operations when database is back.
- WEB monitoring
WEB monitoring module allows flexible and easy monitoringof availability and performanceof WEB sites and WEB based applications. It supports passing of GET and POST variables.
- XML data import/export
New XML data import and export functionality is an excellent way of sharing templates, hosts configuration and items/triggers related information.
- Support of Windows Vista
ZABBIX Windows agent supports Windows Vista, both 32 and 64 bit versions.
- More flexible actions
Multiple operations (notifications, script execution) per action are supported. Choice of action calculation algorithm was introduced.
- Server-side external checks
Server-side external checks can be used to introduce custom checks executed on ZABBIX server side.
- New user permission schema
Old user permission schema is no longer support. It was replaced by new more efficient, yet simple, schema working on level of user groups and host groups.
- Support of hysteresis
ZABBIX support use of different trigger expressions for going to ON and OFF states.
- Support of slide show
Several screens can be grouped into a slide show for better presentation.
- ZABBIX server can spread load across several servers
Groups of server side processes (discoverer, poller, HTTP poller, trapper, etc) can be located on different physical servers for better performance and availability.
- Other improvements
See Release Notes for a complete list of improvements.
CentOS 4.6 の環境で、いくつか躓いたところがあったので、メモです。
CURLのバージョン
Web Monitoring機能を有効にするには、--with-libcurlオプションを付けてインストールします。
$ ./configure --enable-server --with-mysql --with-net-snmp --with-libcurl
すると、次のようなエラーが出て止まってしまいます。
checking for libcurl >= version 7.13.1... no configure: error: Not found Curl library
CentOS 4.x では、curlのバージョンは7.12なのでダメなようです。
いろいろ調べてみると、結局、curlを自身でバージョンアップするしかないようです。
以下のようにして解決です。
$ cd ~/src/ $ wget ftp://ftp.planetmirror.com/pub/curl/libcurl4-devel-7.16.2-1.i386.rpm $ wget ftp://ftp.planetmirror.com/pub/curl/libcurl4-7.16.2-1.i386.rpm $ sudo yum install openssl096b $ sudo yum remove curl-devel $ sudo rpm -i libcurl4*
PHP4
ZABBIXのフロントエンドはPHPなのですが、やっとインストールが成功して管理画面にアクセスすると以下のエラーが発生。
PHP Parse error: parse error, unexpected T_STATIC, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /u02/zabbix/web/include/copt.lib.php on line 112
調べてみると、PHP5用のコードになっているのが原因のようです。
以下のようにして解決です。
includes/copt.inc.php を修正し、'static function' を 'function' にすべて置き換えます。
$ vi includes/copt.inc.php :%s/static function/function/g
これで、無事にアップデートすることができました。
2007/10/05
CentOS4.5にて、DRBD/hearbeatでサーバ冗長化
先日(といっても、結構時間が経ってしまいましたが・・・)、Linuxサーバを冗長化する機会がありました。
その際に、ドキュメントを用意したのですが、一部異なるアプローチをとったところがあったので、そのあたりをメモしておこうと思います。
ドキュメントはこちら
HAクラスタ構築手順書
其の一 DRBDパーティション
まず、DRBDでネットワークミラーリングを構築するのですが、マニュアルでは第2SCSIディスクを想定していますが、今回は、ディスクが一つしかないので、既存のディスクにパーティションを作成する必要がありました。
空き領域に新たなパーティションを作成するのですが、/(root)パーティションで全部使っていて空きは無かったので、やむなく再インストール・・・
せっかくですので、この機会に自由にサイズ変更をできるというLVMでパーティションを作成し、DRBDをセットアップです。
DRDBパーティション(論理ボリューム)の作成
$ sudo lvcreate -L 10G -n drbd main
$ sudo vi /etc/drbd.conf
resource r0 {
protocol C;
incon-degr-cmd "echo '!DRBD! pri on incon-degr' | wall ; sleep 60 ; halt -f";
startup {
degr-wfc-timeout 120; # 2 minutes.
}
disk {
on-io-error panic;
}
syncer {
rate 100M;
group 1;
al-extents 257;
}
on host1 {
device /dev/drbd0;
disk /dev/main/drbd;
address 192.168.0.221:7788;
meta-disk internal;
}
on host2 {
device /dev/drbd0;
disk /dev/main/drbd;
address 192.168.0.231:7788;
meta-disk internal;
}
}
其の二 ミラーリングデータはシンボリックリンクで
既存のアプリケーションがあるため、設定ファイル等はなるべく変更したくありません。
そこで、設定ファイルはそのままに、データディレクトリをシンボリックリンクで参照するようにしました。
アプリケーション及びWebデータ
$ sudo -u user mkdir /data/application
$ sudo -u user ln -s /data/application /home/rms/application
$ sudo -u user tar cpzf /home/user/old_htdocs.tar.gz /home/user/htdocs
$ sudo -u user mv /home/user/htdocs /data/user_htdocs
$ sudo -u user ln -s /data/user_htdocs /home/user/htdocs
$ sudo ls -l /home/user
$ sudo ls -l /data
MySQLデータ
$ sudo -u mysql tar cpzf /home/mysql/old_data.tar.gz /home/mysql/data
$ sudo -u mysql mv /home/mysql/data /data/mysql_data
$ sudo -u mysql ln -s /data/mysql_data /home/mysql/data
$ sudo ls -l /home/mysql
$ sudo ls -l /data
その他、heartbeat等はマニュアルどおりでおおむねいけました。
マニュアルを作成してくれたK氏には感謝です!
DRBD/hearbeatでサーバ冗長化は、手軽にできてかなりおススメです!
自動でフェイルオーバー/フェイルバックする様子には、本気で感動しました。
この機会に(?)、是非挑戦してみてください。
参考書籍:
ラベル: server
2007/09/10
Linux kernel 2.6 で Beep が鳴らない
先日、CentOS4.5にて、heartbeat/DRBDによるサーバ冗長化の作業がありました。
その際、障害発生によりプライマリサーバからセカンダリサーバに切り替わるときは、音を鳴らして知らせることになりました。
そこで、良くあるBeep音(ピーピーと鳴く、アレです)を鳴らすことにしたのですが、VBのようにBeepというコマンドでもあって簡単に鳴らせるのだろうと思っていたのですが、なかなか鳴らずに躓いてしまったので、メモしておきます。
まず、Beepというコマンドはないのか?と調べたところ、けんども日記: Linux でビープ音を鳴らすにて、紹介されていました。
これをテストマシンのCentOS4.4にて試してみたのですが、別段エラーログもなく、音は鳴りませんでした。
beepコマンド
$ wget http://johnath.com/beep/beep-1.2.2-1.src.rpm
# rpmbuild --rebuild beep-1.2.2-1.src.rpm
# rpm -ihv /usr/src/redhat/RPMS/i386/beep-1.2.2-1.i386.rpm
$ sudo beep -f 2500 -l 240
では、単純にスピーカから音を出すにはどうしたらいいのか?
と、たどり着いたのが、 [BEL] コマンドの終了を音で知らせる
さっそく、
printf "\7"
としましたが、これでも音は鳴らず・・・
これはおかしいと思い、他のマシン(RHEL3)で試してみるとあっさり音が鳴りました。
両サーバの違いは何かと、サウンドの設定等色々調べてみると、結局、Linux kernel 2.6からは、デフォルトでPCスピーカーはOFFになっている。ということでした。
どうりで、kernel 2.4のRHEL3では鳴ったわけです。
# sudo modprobe pcspkr
# printf "\7"
リブート後も有効に
# vi /etc/rc.local
/sbin/modprobe pcspkr
これで、先にインストールしたBeepコマンドでも音がなり、カエルの歌をBeepで演奏することができるようになりましたw
余談ですが、「Linux Beep」で調べると、目的とは逆の「Beepを消す」といったものがガンガンヒットしました。
たまにコンソールから作業するときにTab補完失敗でピーピーうるさい件をどうにかする方法がありました。
vi /etc/inputrc #set bell-style none
これで静かに作業することができます。思わぬ収穫でした。
ラベル: server
2007/07/24
PXEでCentOSをネットワークインストールする
新しく用意したマシンにCentOSをインストールしようとしたのだけれど、なんとこのマシンにはCDDもFDDもついてなかった!
というわけで、PXEネットーワークブートを使用してCentOSをインストールすることにしました。
PXEネットワークブート用サーバを構築
まずは、PXEネットワークブート用のサーバを構築します。
「@IT:PXEネットワークブート用サーバを構築するには」
「PXEを使ったネットワークブート」
を参考にしました。
開発用のサーバとして使用しているCentOS4.4マシンをPXEサーバにすることにします。
- TFTPサーバを構築
- tftp-serverをインストール
/etc/xinetd.d/tftpを編集し、サービスを有効にする# rpm -qa | grep tftp # yum install tftp-server Installed: tftp-server.i386 0:0.39-2 Complete!
PXE用ブートイメージを取得# vi /etc/xniinetd.d/trftp service tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /tftpboot disable = no per_source = 11 cps = 100 2 flags = IPv4 } # service xinetd restart xinetd を停止中: [ OK ] xinetd を起動中: [ OK ]# mkdir /tftpboot/pxe_centos4.5 # cd /tftpboot/pxe_centos4.5 # wget ftp://ftp.riken.jp/Linux/centos/4.5/os/i386/images/pxeboot/vmlinuz # wget ftp://ftp.riken.jp/Linux/centos/4.5/os/i386/images/pxeboot/initrd.img # ls initrd.img vmlinuz - DHCPサーバを構築
- dhcpをインストール
設定ファイルを編集 ※ 不要な行は削除しています# rpm -qa | grep dhcp dhcpv6_client-0.10-14_EL4 # yum install dhcp Installed: dhcp.i386 7:3.0.1-59.EL4 Complete!# cp /usr/share/doc/dhcp-3.0.1/dhcpd.conf.sample /etc/dhcpd.conf # vi /etc/dhcpd.conf ddns-update-style interim; ignore client-updates; subnet 192.168.0.0 netmask 255.255.255.0 { option routers 192.168.0.1; option subnet-mask 255.255.255.0; option domain-name "r-stone.net"; option domain-name-servers 192.168.0.2; option time-offset -18000; # Eastern Standar d Time filename "/pxe_centos4.5/pxelinux. 0"; range dynamic-bootp 192.168.0.250 192.168.0.254; default-lease-time 21600; max-lease-time 43200; } # mkdir /var/lib/dhcpd # touch /var/lib/dhcpd/dhcpd.leases # service dhcpd start dhcpd を起動中: [ OK ] - PXEサーバを構築
- syslinux(pxelinux)のインストール (既にインストール済みでした)
ブートローダの準備# rpm -qa | grep syslinux syslinux-2.11-1
設定ファイルの作成# cp /usr/lib/syslinux/pxelinux.0 /tftpboot/pxe_ccentos4.5/# mkdir /trftpboot/pxe_centos4.5/pxelinux.cfg # vi /tftpboot/pxe_centos4.5/pxelinux.cfg/default default centos4 label centos4 kernel vmlinuz append load initrd=initrd.img devfs=nomount - ファイアウォールの設定
- これまで構築したサーバで使用するポートを開放
サーバ ポート プロトコル DHCP 67 UDP TFTP 69 UDP PXE 4011 UDP ### # DHCP ### iptables -A INPUT -p udp -s 192.168.0.0/24 --dport 67 -j ACCEPT ### # TFTP ### iptables -A INPUT -p udp -s 192.168.0.0/24 --dport 69 -j ACCEPT ### # PXE ### iptables -A INPUT -p udp -s 192.168.0.0/24 --dport 4011 -j ACCEPT - CentOSのイメージをマウント&HTTP公開
-
ISOイメージをマウント
Apatchで公開# mkdir /mnt/iso # mount -t iso9660 -o loop /home/r-stone/iso/CentOS-4.5-i386-binDVD.iso /mnt/iso# vi /usr/local/apache2/conf/httpd.conf Alias /centos4.5 "/mnt/iso" <Directory /mnt/iso> Options MultiViews Indexes FollowSymLinks Order deny,allow Deny from all Allow from 192.168.0.0/24 127.0.0.1 </Directory> # /usr/local/apache2/bin/apachectl restart
PXEネットワークブートでCentOSをインストール
いよいよCentOSをネットワークインストールします。
こちらは、
「@IT:PXEネットワークブートでLinuxをインストールするには」
を参考にしました。
- インストール方法の設定
-
PXEブートよりインストーラが起動してしまえば、あとは通常のインストールと同じです。
ただ、パッケージの転送はHTTPを使用するようにしましたので、インストール方法の画面では「HTTP」を選択し、HTTPの設定を行います。 - インストール後
-
PXEサーバ側:
念のため使用後はサービスを停止しておきます- HTTP公開の停止
- イメージのアンマウント
- TFTPサーバの停止
- DHCPサーバの停止
- BIOSのPXEを無効に
CDDがなかったのは焦りましたが、結局CDDなんてインストール時にしか使わないわけで、消費電力を抑えるためにもPXEでのネットワークインストールも良いかなと思います。
ラベル: server
2007/02/23
DNSサーバにて送信ドメイン認証SPF[Sender Policy Framework]レコードに対応
Ezwebへメールを送信した際に、以下のような返信メールを受け取った。(でもちゃんとメールは送信されていました・・・)
次のあて先へのメッセージはエラーのため送信できませんでした。
送信先メールアドレスが見つからないか、
送信先メールサーバの事由により送信できませんでした。
メールアドレスをご確認の上、再送信してください。
Each of the following recipients was rejected by a remote mail server.
--------------------------------------------------------------
Received-SPF: None (lsean.ezweb.ne.jp: 210.251.95.9 is neither permitted nor denied by domain of xxx.cc) client-ip=210.251.95.9;
調べてみるとなんだかSPFがどうのこうの・・・。
KDDI au: EZwebへメール送信する際の注意事項 > 送信ドメイン認証SPFレコードについて
というわけで、MTA/AntiSPAM/Sender ID を導入してみる - Pocketstudio.jp Linux Wikiを参考にDNSをSPF対応にしました。(Sender IDはまたの機会に・・・汗)
DNSの設定ファイルに以下のレコードを追加
IN TXT "v=spf1 ip4:210.251.95.8/29 ~all"
check-auth@verifier.port25.comでのチェックもPASSした模様です。
※このアドレスに空メールを送信すると、チェック結果を返してくれます。
==========================================================
Summary of Results
==========================================================
mail-from check: pass
PRA check: pass
DomainKeys check: neutral (message not signed)
ラベル: server
2007/02/16
ZABBIXでユーザーのMail設定はどこにある?
以前に、GIGAZINのフリーのサーバ、ネットワークなどの総合監視ソフト「ZABBIX」日本語版という記事をみて、「これはすごい」と思って早速社内サーバの監視に使用しています。
グラフ作成、各ノードの情報収集、異常検知、障害/復旧通知、詳細なアラート通知機能がZABBIX一本でできてしまうので非常に魅力的です。
障害等の通知はメールで通知したいのですが、なかなかその設定場所が発見できませんでした。 で、やっと設定場所を発見したのでメモしておきます。
設定[Configuration] > ユーザー[Users] で、設定するユーザ行/アクション列の「メディア」をクリック!
たったこれだけなのですが、この「メディア」という文字が通常のテキストと同じ黒文字だったため、クリックするという行為まで及ばなかったのです・・・「これはひどい」。
ユーザビリティって大切ですねぇ(笑)
参考:
ZABBIX Forums - Where to set an email address
ラベル: server
