守破離でいこう! -Let's go with SyuHaRi!-

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を自身でバージョンアップするしかないようです。
以下のようにして解決です。

centosinstall
$ 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用のコードになっているのが原因のようです。
以下のようにして解決です。

Blank web install - ZABBIX Forums

includes/copt.inc.php を修正し、'static function' を 'function' にすべて置き換えます。

$ vi includes/copt.inc.php
:%s/static function/function/g

これで、無事にアップデートすることができました。

ラベル: ,

naoki 22:02 | 0 comments |
HaloScan: |

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でサーバ冗長化は、手軽にできてかなりおススメです!
自動でフェイルオーバー/フェイルバックする様子には、本気で感動しました。
この機会に(?)、是非挑戦してみてください。

参考書籍:

ラベル:

naoki 18:32 | 0 comments |
HaloScan: |

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補完失敗でピーピーうるさい件をどうにかする方法がありました。

LinuxコンソールのBEEP音を消す! (技術メモ)
vi /etc/inputrc #set bell-style none

これで静かに作業することができます。思わぬ収穫でした。

ラベル:

naoki 20:00 | 0 comments |
HaloScan: |

2007/07/24

PXEでCentOSをネットワークインストールする

新しく用意したマシンにCentOSをインストールしようとしたのだけれど、なんとこのマシンにはCDDもFDDもついてなかった!
というわけで、PXEネットーワークブートを使用してCentOSをインストールすることにしました。

PXEネットワークブート用サーバを構築

まずは、PXEネットワークブート用のサーバを構築します。
「@IT:PXEネットワークブート用サーバを構築するには」
「PXEを使ったネットワークブート」
を参考にしました。
開発用のサーバとして使用しているCentOS4.4マシンをPXEサーバにすることにします。

TFTPサーバを構築
tftp-serverをインストール
# rpm -qa | grep tftp
# yum install tftp-server
Installed: tftp-server.i386 0:0.39-2
Complete!
/etc/xinetd.d/tftpを編集し、サービスを有効にする
# 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  ]
PXE用ブートイメージを取得
# 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
ファイアウォールの設定
これまで構築したサーバで使用するポートを開放
サーバポートプロトコル
DHCP67UDP
TFTP69UDP
PXE4011UDP
###
# 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イメージをマウント
# mkdir /mnt/iso
# mount -t iso9660 -o loop /home/r-stone/iso/CentOS-4.5-i386-binDVD.iso /mnt/iso
Apatchで公開
# 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でのネットワークインストールも良いかなと思います。

ラベル:

naoki 13:10 | 0 comments |
HaloScan: |

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)

ラベル:

naoki 21:40 | 0 comments |
HaloScan: |

2007/02/16

ZABBIXでユーザーのMail設定はどこにある?

以前に、GIGAZINのフリーのサーバ、ネットワークなどの総合監視ソフト「ZABBIX」日本語版という記事をみて、「これはすごい」と思って早速社内サーバの監視に使用しています。
グラフ作成、各ノードの情報収集、異常検知、障害/復旧通知、詳細なアラート通知機能がZABBIX一本でできてしまうので非常に魅力的です。

障害等の通知はメールで通知したいのですが、なかなかその設定場所が発見できませんでした。
で、やっと設定場所を発見したのでメモしておきます。

設定[Configuration] > ユーザー[Users] で、設定するユーザ行/アクション列の「メディア」をクリック!
たったこれだけなのですが、この「メディア」という文字が通常のテキストと同じ黒文字だったため、クリックするという行為まで及ばなかったのです・・・「これはひどい」。

ユーザビリティって大切ですねぇ(笑)

参考:
ZABBIX Forums - Where to set an email address

ラベル:

naoki 16:31 | 0 comments |
HaloScan: |