yumで便利なレポジトリの追加

デフォルトのyumレポジトリにないからといって、ソースでインストールしたりとか、パッケージ作ったりとかしてる人が多かった。

意外と知らない人が多くてびっくりしたので、yumでかなり多くのパッケージをインストールできるレポジトリの追加方法を書いておく。

使い方はレポジトリを登録後、下記コマンド。

# yum –enablerepo=rpmfoge install syslog-ng

レポジトリ登録方法は以下。

続きを読む

LogZillaインストールと設定

オープンソースとしてのログビューワーってあんまりいいものが内が、ようやくまともなsyslogビューワーが出てきたので早速いれてみた。

複数のサーバーからsyslogサーバーにsyslog-ngを用いて集中管理し、それらをビューワーで見るという使い方。

URLに変数などを仕込むことで、任意の期間の任意のホストのログだけを見るってこともできるので、障害時などのアラートとしてURLを送るなどの使い方もできる。

logzillaのインストールと設定系の日本語のドキュメントは全くないので、ここに書いておく。
syslog-ngがインストールされている前提での手順。

続きを読む

Zabbix API 同時にログインしたらapache+MySQLがループするバグ

説明するまでもない、次世代の統合監視を担うオープンソースの代表格であるZabbix。ちょっと調査をする必要があったので、色々APIを試したりしていたときに発見した現象。

同時にZabbixAPIを叩きに行ったさいに、apacheとMySQLが高負荷状態に。その状態でWEBブラウザから他のクライアントがログインを試みてもタイムアウトになる。なんだーなんだーと思って調査してみたら、ログイン時にログを残す時のログID取得処理でバグがあった。

調査の内容は以下。

例えば、APIのクライアントから同時にZabbixAPIを叩きにいくと(zabbix-host-status-test.plは自分自身の監視を有効化したり無効化したりするスクリプト)

./zabbix-host-status-test.pl -m on & ./zabbix-host-status-test.pl -m on &

すると、API側のapache+mysqlがループに入り高負荷になる。

続きを読む

Linuxでシンボリックリンクを含んだパスを正しいパス(realpath)に変換する

■ realpath_for_fs() [Download]
・シンボリックリンクを含んだ絶対パスを安全にrealpathに変換

しばしば、シンボリックリンクを含んだ絶対パスをシンボリックリンクを含まない絶対パス(realpath)としてみたい場合がある。

特に、apacheモジュールを実装する上で、apacheはシンボリックリンクをrealpathに解析した上で、Directiveを見てくれないため、realpathでDirectiveを書いていても、シンボリックリンク経由でアクセスがあった場合は、Direvtiveのパスは無視される。

パスのBaseネームがシンボリックリンクであれば、symlinksコマンド等で調べることができるが、絶対パスの途中にシンボリックリンクが含まれている場合はそう簡単には行かない。

続きを読む

apacheへのrequestで消費するリソース量をloggingするモジュール

■ mod_resource_checker  [Download](apcheリソースloggingモジュール)

サーバー内で複数のWEBサービスを提供したい場合に、chroot環境でのIPベースと、Virtualhostを用いたnameベースがある。

IPの枯渇や、ハードウェアにあまりお金をかけない、プロセス数の問題などで、最近ではnameベースを用いてサービスを提供することが多い。

ただし、nameベースでは様々な問題が起きる。

例えば、

  • VirtualHost毎にログを残す場合、VirtualHostの数が増えてくると、fdの数が足りなくなる
  • セキュリティ的にsuEXEC環境をとらないといけなくなる
  • DSO版phpにも対応できるようにmod_ruidを使わないといけない
  • mod_ruidを使うとCAPABILITYの問題で、request毎にプロセスを破棄しないといけなくてパフォーマンスが落ちる

など・・・

続きを読む