Linuxでもzabbix (Server編)

Linux, zabbix No Comments

最近はLinuxでの仕事が増えてきて、自宅のサーバは全然かまってあげてません。最低限のメンテナンス位かなぁ。FreeBSD6.4-RELEASEも公開されているから色々と試したいし、シェルスプリクトもいくつか公開したいし、ページデザインも見直してPC系のコラムが書けるようにしたいし(インストールの紹介は新しくページを作ってHTMLで見やすくしたいなぁ、シェルスプリクトなページも作りたいし。)、でも時間がない上に古いノートを(液晶に2本の筋がはいってる)がんばって使っている今の現状ではいかんともしがたいのです。

とまぁ、愚痴はここまで、さくさくとインストールを行っていきましょう(笑)。 基本的にはFreeBSDのportsを用いたインストールと大きく変わりません。またいくつかのディストリビューションではrpmなどのバイナリが提供されています。ただ仕事で利用したRed Hat Enterprise Linux 5では残念ながらrpm提供されていなかったためソースコードからインストールを行います。事前に

・mysql5.0
・php
・apache
・net-snmp-devel(SNMPを利用する場合)

のインストールを行っておいてください。rpmコマンドを利用するよりもyumを利用したほうが依存関係をしらべて必要なパッケージも同時インストールされるので簡単です。

例:)yum -y install net-snmp-devel

では、さくさくとインストールを進めていきましょう。Agent編と同様に作業用のディレクトリは 【/usr/local/src】 とします。インストール時にrootになるのが正しいとは思いますが、今回も最初からrooユーザで作業します。またインストールを行うバージョンは1.4.6です。(なるべく最新のバージョンを利用しましょう) apacheのDocumentrootは「/var/www/html」とします。zabbixフォルダを作成して「http://IPアドレス/zabbix」でデータが閲覧できるように設定します。

■zabbix_serverのインストール
# cd /usr/local/src/
# wget http://nchc.dl.sourceforge.net/sourceforge/zabbix/zabbix-1.4.6.tar.gz
# tar xvzf zabbix-1.4.6.tar.gz
# cd zabbix-1.4.6
# ./configure –enable-server –with-mysql –with-net-snmp
# make
# make install

次にzabbixユーザとグループをシステムに追加しましょう。

# groupadd zabbix
# useradd -g zabbix -s /sbin/nologin zabbix

ここからmysqlにデータベースを追加して、php.iniなどを調整します。

■mysqlにデータベースを作成
# mysql -u root -p PASSWORD
# create database zabbix

■テーブルを作成
# cd /usr/local/src/zabbix-1.4.6/create/schema/
# cat mysql.sql | mysql -u root zabbix
# cd ../data/
# cat data.sql | mysql -u root zabbix
# cat images_mysql.sql | mysql -u root zabbix

■php.iniの設定
/etc/php.ini
max_execution_time = 300
date.timezone=”Asia/Tokyo”

■zabbixの設定前準備
# mkdir /etc/zabbix
# cp /usr/local/src/zabbix-1.4.6/misc/conf/zabbix_server.conf /etc/zabbix/
# mkdir /var/run/zabbix
# mkdir /var/log/zabbix
# chown zabbix:zabbix /var/run/zabbix
# chown zabbix:zabbix /var/log/zabbix
# mkdir /var/www/html/zabbix
# cp -a /usr/local/src/zabbix-1.4.6/frontends/php/* /var/www/html/zabbix/
# chown -R root:root /var/www/html/zabbix

■zabbixサーバの設定
# vi /etc/zabbix/zabbix_server.conf
~~~変更内容~~~
PidFile=/var/run/zabbix/zabbix_server.pid
LogFile=/var/log/zabbix/zabbix_server.log
DBName=zabbix        <- 適宜変更のこと
DBUser=zabbix        <- 適宜変更のこと
DBPassword=zabbix    <- 適宜変更のこと
~~~~~~~~~~

 

最後に起動ファイルを準備します。fedora用のファイルがありますのでAgent編と同様に流用します。

■自動起動スプリクトの修正
# cp /usr/local/src/zabbix-1.4.6/misc/init.d/fedora/core/zabbix_server /etc/init.d/
# vi /etc/init.d/zabbix_agentd

~~修正内容(抜粋)~~~~~~~~~~~~~~~~~
FULLPATH=$BASEDIR/sbin/$BINARY_NAME
BASEDIR=/usr/local
PIDFILE=/var/run/zabbix/$BINARY_NAME.pid
~~~~~~~~~~~~~~~~~~~~~~~~~~

以上で設定は完了しました。chkconfigなどで起動時に自動起動されるように設定して起動確認を行いましょう。

Linuxでもzabbix (Agent編)

Linux, zabbix No Comments

 しばらく忙しくて更新が出来ていませんでしたが、やっと時間が取れたので忘れないうちにLinuxでzabbixのインストール方法を紹介したいと思います。

 自分が思うに基本的にLinuxでのソフトウェアインストールはrpm等のFreeBSDでいうPackagesを利用してWindowsアップデートのような自動アップデートツールを利用してアップデートを行い、rpmで用意されていないツールを利用する場合にソースコードからインストールして運用する、が正しい運用方法のような気がしています。ですので各ディストリビューションでrpm等が提供されている場合はそちらを利用してください。

今回はRed Hat Enterprise Linux 5にてソースコードよりインストールを行います。作業用のディレクトリは 【/usr/local/src】 です。インストール時にrootになるのが正しいとは思いますが、今回は最初からrooユーザで作業します。下記の通り、一気にコンパイル&&インストールを行いましょう。この記事を書いている時の最新バージョンである1.4.6を利用します。適時バージョンは確認を行ってください。(※しかし最近のdorakenの仕事はRed Hatを利用することが多くなってきました)

# cd /usr/local/src/
# wget http://nchc.dl.sourceforge.net/sourceforge/zabbix/zabbix-1.4.6.tar.gz
# tar xvzf zabbix-1.4.6.tar.gz
# cd zabbix-1.4.6
# ./configure –enable-agent
# make
# make install

以上でエージェントは 【/usr/local/sbin】 にインストールされました。ここからは設定ファイルおよび起動ファイルを修正していきます。基本的にFreeBSDで設定したとおりですが「zabbix」ユーザとグループを作成すること、起動ファイルを一部修正することが必要です。

最初にzabbixユーザとグループをシステムに追加しましょう。

groupadd zabbix
useradd -g zabbix -s /sbin/nologin zabbix

次に 【zabbix_agentd.conf】 を環境に合わせて修正していきます。zabbix_agentd.confのサンプルファイルをコピーして適宜修正していくこととします。

mkdir /etc/zabbix
cp /usr/local/src/zabbix-1.4.6/misc/conf/zabbix_agentd.conf /etc/zabbix/
vi /etc/zabbix/zabbix_agentd.conf

 ~~修正内容(抜粋)~~~~~~~~~~~~~~~~~
# ServerのIPを編集します。
Server=xx.xx.xx.xx
(※注意事項:この時zabbixサーバーのzabbix_server.confに記述したIPと同じIPを記述しないとうまくデータ取得ができません。。)

# エージェントを動作させるサーバのHostnameを記載します。
Hostname=xxxxxx

#ListenIPのコメントを外して自分のIPを記述します。
ListenIP=xx.xx.xx.xx
(※注意事項:この時後々zabbix上で設定するIPと異なっているとうまくデータ取得ができません。)

# pidファイルの場所を/var/runに配置します。
PidFile=/var/run/zabbix/zabbix_agentd.pid

# ログファイルの場所を/var/logに配置します。
LogFile=/var/log/zabbix/zabbix_agentd.log
~~~~~~~~~~~~~~~~~~~~~~~~~~

最後に起動ファイルを準備します。fedora用のファイルがありますので、これを流用することとします。

cp /usr/local/src/zabbix-1.4.6/misc/init.d/fedora/core/zabbix_agentd /etc/init.d/
vi /etc/init.d/zabbix_agentd

~~修正内容(抜粋)~~~~~~~~~~~~~~~~~
FULLPATH=$BASEDIR/sbin/$BINARY_NAME
BASEDIR=/usr/local
PIDFILE=/var/run/zabbix/$BINARY_NAME.pid
~~~~~~~~~~~~~~~~~~~~~~~~~~

変更点は 【/usr/local/sbin】 配下にzabbixがインストールされているのでFULLPATHの指定を 「bin ->sbin」に修正、pidfileの保存ディレクトリを「/var/run/zabbix」に修正した。の2点です。修正が完了したらエージェント起動を行うために最終調整を行いましょう。

chmod 755 /etc/init.d/zabbix_agentds
mkdir /var/run/zabbix
mkdir /var/log/zabbix
chown zabbix:zabbix /var/run/zabbix/
chown zabbix:zabbix /var/log/zabbix/

上記、起動準備が整ったらエージェントを起動してみます。
/etc/init.d/zabbix_agentd start

以上で設定は完了しました。自動で起動を行う場合はchkconfigで自動起動設定を行って下さい。今回の場合は下記のようになります。

chkconfig –add zabbix_agentd
chkconfig zabbix_agentd on

FreeBSDでOMRON BX50Fを使用する

FreeBSD No Comments

 サーバ管理を行っていると電源管理はさけて通れませんよね。企業で使用する分には高額なUPSが使用できたり自家発電機がはいっているサーバルームへサーバを設置したりできますが一個人で、さらには趣味で使用しているサーバにそんなお金はかけません。なので一般に流通しているUPSより、

要件1 価格が安いこと
要件2 長寿命バッテリを搭載していること
要件3 FreeBSDで使用できること

という要件を満たす商品を購入&セットアップしてみました。入手しやすく出来る限りコンパクトサイズなUPSであれば言うこと無いなぁと思っていたところ期待通りのUPSを発見、それが今回紹介するOMRON BX50Fです。有限会社オングス様よりFreeBSD用のシャットダウンアプリケーションが無償で公開されています。ソフトウェアはここよりダウンロードできます。最初にHPでライセンスを確認してくださいね。

# fetch http://www.ongs.co.jp/products/omronupsd/omronupsd-0.3.1-F6R-amd64.tbz
# pkg_add omronupsd-0.3.1-F6R-amd64.tbz

上記2ステップでUPSの導入は完了です。導入完了したらソフトの設定を行って自動起動設定を有効にしましょう。

# cp /usr/local/etc/omronupsd/omronupsd.conf.sample /usr/local/etc/omronupsd/omronupsd.conf
# vi /usr/local/etc/omronupsd/omronupsd.conf

# vi /etc/rc.conf
omronupsd_enable=”YES”
omronupsd_devices=”BZ”
omronupsd_BZ_flags=”-D”
omronupsd_BZ_conf=”/usr/local/etc/omronupsd/omronupsd.conf”
omronupsd_BZ_pid=”/var/run/omronupsd.pid”

# /usr/local/etc/rc.d/omronupsd.sh start

上記で設定が完了します。設定も特に迷うところなく行えると思いますので一つだけ自分なりの設定方法を。こちらのシャットダウンソフトは下記の通りシャットダウンコマンドを使用できます。

# 通常のシャットダウンコマンドを指定します。
shutdown_cmd=/sbin/shutdown -p now
# 緊急時のシャットダウンコマンドを指定します。
em_shutdown_cmd=/sbin/halt -p

シャットダウン時に実行したいバッチ処理を記述したシェルスプリクトを、実行するように設定できます。最近はVMware ESXi にはまっているせいもあり、どのように転用できるかを考えているので良い運用方法なぞを思いついたら紹介したいと思います。

Linuxでテープバックアップ

Linux, mysql No Comments

 しばらく前に「サーバに内蔵されているシングルテープドライブを利用したいんだけど」と相談されました。普通に考えると商用ソフトであるCA ARCserve Backupの使用を進めたりするのですが諸般の事情によりmt を利用することにしました。

 お客様が利用されているのは Red Hat Enterprise Linux 、CDを確認するとの三枚目に「mt-st-0.9b-2.2.2.i386.rpm」を見つけましたのでこちらをインストールして利用することとにします。サクっとCDをマウントrpmインストールを行いましょう。

# rpm -ihv mt-st-0.9b-2.2.2.i386.rpm

でインストールを行うとmtコマンドが利用できるようになります。コマンドの使用方法は他のホームページを参照してもらうとしまして、bashスクリプトでマネージャーもどきバックアップリストアする3本のスクリプトを作成しました。

 バックアップするシェルスクリプトとは、バックアップする対象フォルダは「/var/www」と「/etc」、あとはmysqlのdb名を指定して(ここではtest_data)バックアップするときに必要なrootアカウントのパスワードを設定(ここではroot_passとしましょう)、「/root/backup/latest/」へバックアップデータをまとめてテープで圧縮、その後「日付+tar.gz」でまとめたら「/root/backup/latest/」フォルダを削除、7日分の「日付+tar.gz」ファイルより古いファイルは削除するという設計にしています。さらに金曜日はテープが自動的にイジェクトされるようにしてみました。

 リストアスクリプトは「/root/restoring」フォルダへデータをリストアするという設計です。

 マネージャスクリプトはドライブの状態確認したり、テープの内容を消去したり、リストアスクリプトやバックアップスクリプトを実行したりします。またバックアップはcrontabで毎日決まった時間に起動するようにします。bashスプリクトで配列変数を使用していますのでバックアップしたいmysqlデータベースを追加していくだけでバックアップ可能です。

 このスプリクトは少し改変するだけで色々と転用方法があると思います。このデータベースバックアップ方法には欠点もあるので、内容を理解して使用してくださいね。

ちょっとした小技

FreeBSD, Linux No Comments

小技 その1

サーバ管理をしていているとroot宛のメールを自分がメインで使用しているメールアドレスへ転送したくなってきますよね?なのでエイリアス設定を行って転送されるように設定しましょう。

エイリアス設定は標準MTA(sendmail)の場合、「/etc/mail」フォルダ内にある「aliases」ファイルで設定を行います。設定を行った後は.dbファイルを更新する必要がありますので、ディレクトリチェンジを行ってからファイル編集を行いましょう。

%cd /etc/mail/
%vi aliases

テキストファイルをエディタで開くと17行目付近に

# root’s email from here.
root: メールアドレス

という記述があると思います。「root: 」の行に転送したいメールアドレスを記述してファイルセーブ&エディタを終了してください。その後

%make

コマンドを発行して.dbファイルを更新、設定を有効にします。以上でメール転送設定が完了しました。

 

小技 その2

findってとっても便利なコマンドですよね。でも使い方がちょっと難しいと思いませんか?自分が良く迷うのは「-mtime」 や「-mmin 」の「+、-」の部分です。もう一つカレントディレクトリ以下を検索する方法と指定のディレクトリのみ検索したい場合の切り分けですね。パスにピリオド(.)を使用するとカレントディレクトリ以下を検索するという意味になります。なので下記のようなコマンドを発行すると

# 7日以上前のカレントディレクトリ以下にあるファイルを検索する
find . -mtime +7
# 7日前(7*24h - 8*24h)のカレントディレクトリ以下にあるファイルを検索する
find . -mtime  7
# 7日以内のカレントディレクトリ以下にあるファイルを検索する
find . -mtime -7

ちなみに「/tmp」フォルダ内にある7日以上前のファイルを一気に削除を行い対場合は「find /tmp -mtime +7 -exec rm -f {} \;」のような使い方になります。

その他、便利な小技があればちょっとずつ公開していきたいと思います。逆にこのようにコマンドを利用すれば便利だよって技があれば是非是非教えてくださいね。

« Previous Entries Next Entries »