インフラブログ | システム監視・サーバ監視・障害監視・ネットワーク監視・システム運用・MySQL・Web地図を提供

インフラブログ エントリ一覧

いがいと、続いています。

前回は、基本設定でしたが
今回は、実際に「ほにゃらら」が起こったらメールを送信する
みたいなことを、syslog-ngにやらせてみます。

前回の設定だと、destinationが fileってなっています。
source net { udp(ip(0.0.0.0) port(514)); };
filter f_hogesrv { host(”192.168.1.10$”); };
destination d_hogesrv { file(”/var/log/hogesrv.log”); };

ここのfileの部分を programに変更して、シェルスクリプトにすると
出力先をシェルスクリプトにすることができます。
(もちろんperlとかでもいいよ)
destination d_hoge_sh { program(”/usr/local/bin/hoge_script.sh”); };

さらに、「ほにゃらら」を httpdに何かが起こったときとして
filterをもう一個作ります。
filter f_httpd { match (”httpd”); };

新しく作った材料を組み合わせ、こんなカンジで設定完了です。
log { source(net); filter(f_hogesrv); filter(f_httpd); destination(d_hoge_sh); };

いや、もちろん /usr/local/bin/hoge_script.sh は
手作りでスクリプトを書かなくちゃいけません。
ちなみに、スクリプトがないと syslog-ng はエラーになります。

もう少し続く(次回はスクリプトの例)

さてさて、その2の続きを。

オプションはだいたい前回で。
今回から、やっとログの出力の設定ファイルです。

ログの出力に必要な材料!?は3つです。
source ログの入力元
filter ログのフィルター
destination ログの出力先

あとは、3つの材料を組み合わせて
log
って、そのまんまの書き方で構成を決めます。

とりあえず、例として

source net { udp(ip(0.0.0.0) port(514)); }
filter f_hogesrv { host(”192.168.1.10$”); };
destination d_hogesrv { file(”/var/log/hogesrv.log”); };

こんなかんじで、sourceにネットワークから飛んできたsyslogを指定して
filterに、サーバのipアドレスを指定して($を付けないと、100なんかも引っかかってしまうよ)
出力先に、/var/log/hogesrv.logを指定するという設定に
それぞれ、source net、filter f_hogesrv、destination d_hogesrvを名前を付けてます。

3つの材料を組み合わせて、こんなカンジで設定完了です。
log { source(net); filter(f_hogesrv); destination(d_hogesrv); };

基本はここまでです。続くかも

前回、インストール、起動までで終わってしまいました。
ので、今回は設定です。

/etc/syslog-ng.conf の中身を書き換えます。

オプションから。
options {
sync (0);

time_reopen (10);

log_fifo_size (1000);
long_hostnames (off);
use_dns (no);
use_fqdn (no);
create_dirs (no);
keep_hostname (yes);
};

sync、time_reopen、log_fifo_size とか、ログ受信が失敗するようだと
設定値を変えたほうがいいかもしれませんが、
とりあえず、そのままで。

longhostnameは、onにすると
ホスト名が2個出てきて、うっとうしくなります。
(longhostnameは、Windowsのログを受け取るときに、すごく役に立ちます 後述)

use_dnsを onにすると、hostsファイルを読み込んでからsyslog-ngが受け取るようになります。

他は・・・いいや。

あああ、大事なことがあった。
stats(0);
をオプションに書き込まないと、ものすごくうっとうしいログを吐き出します。

長くなったので、続く

syslogもログの転送とかできて、それなりにいいんですが
ログの結果から、アクションを起こすとか、そのへんの機能がないのがいまいちです。

SWATCHというperlスクリプトで、ファイルをチェックすればいいんですが
バリバリperlを書く人でもないので、気が乗りません。

というわけで、syslog-ngを使ってみます。

いつもどおり、
yum -y install syslog-ng
でインストールできると思ったんですが、CentOS(RedhatEnterprise)のレポジトリにはないみたいです。
(Fedoraにはあるのに・・Debianにはあるのに)

仕方がないので、rpm searchで探します。
あれ、syslog-ng-2.0.3-2.el4.i386.rpm と eventlog-0.2.5-1.el4.i386.rpm が普通にあった。

とりあえず、インストールします。
rpm -ivh syslog-ng-2.0.3-2.el4.i386.rpm eventlog-0.2.5-1.el4.i386.rpm

syslog-ng屋さんから、ソースコードをもらってビルドしてもいいんですが、ローテーション回りの設定が面倒なのでパッケージをオススメします。

んで
service syslog stop
service syslog-ng restart

続く

sshのポートフォワーディングですが、
自サーバのlocalhostしか叩けないとばかり思っていました。

そうじゃなくて、受け入れポートをフォワーディングすることも
やればできました。

まず、オプションの -g をつける。
でも、-gだけじゃだめで
/etc/sshd/sshd_configの
#GatewayPorts no
GatewayPorts yes に変更。

service sshd restart

そんなこんなで、
ssh -f -N -g -L 自分の受け入れポート:行きたいアドレス:行きたいポート root@踏み台サーバ

これで、外から、ポートフォワーディングしたサーバの受け入れポートを叩けば
行きたいところに行くことができます。

というか、こういうこと知らなかった自分にショック・・・・