知っておきたい8つのサーバーリソース(ネットワーク)監視ツール

サーバーで何か問題が発生した場合、解決する為にこれらの監視ツールを使うと良いでしょう。

フリーおよびオープンソースのサーバーおよびネットワークの監視ツールはたくさんあります。

1.Munin

munin-graph
munin-graph

動作DEMO

これはCPU使用率、メモリ、ディスク容量のようなコアのシステムリソース、MySQL、Apacheのようなサーバーアプリケーションを監視することができます。

インストール方法や使い方については、
CentOS 5.4 に munin(サーバー監視ツール) をインストール MRTG/cacti
の記事を参考にしてください。

2.Cacti

cacti
cacti

これはMunin によく似ています。しかし、グラフのサイズを変更し任意の範囲で閲覧出来る事が違う点です。
Munin は1日、1週間、1ヶ月など固定の期間ですが、Cacti は直近の2時間、直近の4日間など自由な期間で表示する事が出来ます。

3.Nagios

nagios
nagios

このツールの提供元は、nagios が”ITインフラ監視の業界標準”であることを述べています。
確かにその通りかも知れません。多くのサイトで利用実績があるようです。

動作DEMO

4.Zabbix

zabbix
zabbix

機能的にはNagios と似ています。

5.observium

observium
observium

こちらもNagios にも劣らず機能豊富です。
動作DEMO

6.ganglia

ganglia
ganglia

動作DEMO

7.monit

monit
monit

8.zenoss

zenoss
zenoss

これは、Zenoss Enterpriseと呼ばれる商用サーバ監視ツールのオープンソース版です。Nagiosのプラグインフォーマットをサポートしているので、様々なNagiosのプラグインはZenossでも利用することができます。

さくらのVPS Apache+MySQL+PHPのインストール(LAMP環境構築)

さくらのVPS Apache+MySQL+PHPのインストール(LAMP環境構築)

さくらのVPS

こちらの記事の続きという位置付なので事前に読んでおくと幸せになれるかも:)

さくらのVPSに(CentOS6より良い)Scientific Linux6をインストール
さくらのVPS ログレポート(logwatch)と不正アクセス拒否(denyhosts)のインストール

まずは、最新版のMySQL やPHP を入れるために

yum リポジトリの追加

・epel
# さくらのVPS ログレポート(logwatch)と不正アクセス拒否(denyhosts)のインストール
# の記事等を実施していて
# 既に入っているのであれば必要ありません。

$ sudo rpm --import http://download.fedora.redhat.com/pub/epel/RPM-GPG-KEY-EPEL-6
$ sudo rpm -Uvh http://download.fedora.redhat.com/pub/epel/6/x86_64/epel-release-6-5.noarch.rpm

・remi

$ sudo rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
$ sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

・rpmforge

$ sudo rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt
$ sudo rpm -Uvh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm

Apache のインストール

$ sudo yum install httpd httpd-devel

Apache の不要なモジュール読み込み停止など

下記サイトを参考に実施

参考サイト:)
ウェブ開発者のための、1時間でできるLAMP環境構築術(CentOS編)
http://tanaka.sakura.ad.jp/netservice/vps/

結果:

$ diff httpd.conf.origin httpd.conf
44c44
< ServerTokens OS
---
> ServerTokens Prod
70c70
< Timeout 60
---
> Timeout 45
105c105
< MaxSpareServers   20
---
> MaxSpareServers   10
107,108c107,108
< MaxClients       256
< MaxRequestsPerChild  4000
---
> MaxClients        30
> MaxRequestsPerChild  800
119,120c119,120
< StartServers         4
< MaxClients         300
---
> StartServers         2
> MaxClients         150
151c151
< LoadModule auth_digest_module modules/mod_auth_digest.so
---
> #LoadModule auth_digest_module modules/mod_auth_digest.so
153,156c153,156
< LoadModule authn_alias_module modules/mod_authn_alias.so
< LoadModule authn_anon_module modules/mod_authn_anon.so
< LoadModule authn_dbm_module modules/mod_authn_dbm.so
< LoadModule authn_default_module modules/mod_authn_default.so
---
> #LoadModule authn_alias_module modules/mod_authn_alias.so
> #LoadModule authn_anon_module modules/mod_authn_anon.so
> #LoadModule authn_dbm_module modules/mod_authn_dbm.so
> #LoadModule authn_default_module modules/mod_authn_default.so
159,164c159,164
< LoadModule authz_owner_module modules/mod_authz_owner.so
< LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
< LoadModule authz_dbm_module modules/mod_authz_dbm.so
< LoadModule authz_default_module modules/mod_authz_default.so
< LoadModule ldap_module modules/mod_ldap.so
< LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
---
> #LoadModule authz_owner_module modules/mod_authz_owner.so
> #LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
> #LoadModule authz_dbm_module modules/mod_authz_dbm.so
> #LoadModule authz_default_module modules/mod_authz_default.so
> #LoadModule ldap_module modules/mod_ldap.so
> #LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
167c167
< LoadModule logio_module modules/mod_logio.so
---
> #LoadModule logio_module modules/mod_logio.so
169,172c169,172
< LoadModule ext_filter_module modules/mod_ext_filter.so
< LoadModule mime_magic_module modules/mod_mime_magic.so
< LoadModule expires_module modules/mod_expires.so
< LoadModule deflate_module modules/mod_deflate.so
---
> #LoadModule ext_filter_module modules/mod_ext_filter.so
> #LoadModule mime_magic_module modules/mod_mime_magic.so
> #LoadModule expires_module modules/mod_expires.so
> #LoadModule deflate_module modules/mod_deflate.so
174c174
< LoadModule usertrack_module modules/mod_usertrack.so
---
> #LoadModule usertrack_module modules/mod_usertrack.so
181c181
< LoadModule dav_fs_module modules/mod_dav_fs.so
---
> #LoadModule dav_fs_module modules/mod_dav_fs.so
185,186c185,186
< LoadModule actions_module modules/mod_actions.so
< LoadModule speling_module modules/mod_speling.so
---
> #LoadModule actions_module modules/mod_actions.so
> #LoadModule speling_module modules/mod_speling.so
189c189
< LoadModule substitute_module modules/mod_substitute.so
---
> #LoadModule substitute_module modules/mod_substitute.so
193c193
< LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
---
> #LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
195,197c195,197
< LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
< LoadModule proxy_connect_module modules/mod_proxy_connect.so
< LoadModule cache_module modules/mod_cache.so
---
> #LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
> #LoadModule proxy_connect_module modules/mod_proxy_connect.so
> #LoadModule cache_module modules/mod_cache.so
199c199
< LoadModule disk_cache_module modules/mod_disk_cache.so
---
> #LoadModule disk_cache_module modules/mod_disk_cache.so
331c331
<     Options Indexes FollowSymLinks
---
>     Options -Indexes FollowSymLinks
493a494,498
> # ログ記録対象外の設定
> #
> SetEnvIfNoCase Request_URI "\.(gif|jpg|jpeg|css|png|js)$" nolog_object
>
> #
526c531
< CustomLog logs/access_log combined
---
> CustomLog logs/access_log combined env=!nolog_object
536c541
< ServerSignature On
---
> ServerSignature Off
759c764
< AddDefaultCharset UTF-8
---
> #AddDefaultCharset UTF-8

・自動起動ON

$ sudo /sbin/chkconfig httpd on

・httpd起動

$ sudo /etc/init.d/httpd start

MySQL のインストール

$ sudo yum --enablerepo=remi install mysql-{devel,server}

——————-

Cannot find a valid baseurl for repo: remi

※とエラーが出たので、「/etc/yum.repos.d/remi.repo」を修正します。

$ diff remi.repo.origin remi.repo
4c4
< mirrorlist=http://rpms.famillecollet.com/enterprise/$releasever/remi/mirror
---
> mirrorlist=http://rpms.famillecollet.com/enterprise/6/remi/mirror

単純に$releasever(多分6.1に展開される)を6 に変えただけです
他に良い方法があるかと思うのですが。。
——————-

MySQLの設定(安全な設定やmy.cnfなど)

・自動起動ON

$ sudo /sbin/chkconfig mysqld on

・MySQL起動

$ sudo /etc/init.d/mysqld start

・安全な利用をする為に以下コマンドを実行
※root のパスワード無しや、デフォルトのtestデータベースを削除する事ができます

$ /usr/bin/mysql_secure_installation

    最初はroot ユーザーで接続します(Enterをそのまま押せば良いです)
    Enter current password for root (enter for none):

    次に、root のパスワードを設定するか?と聞かれるのでYES
    Set root password? [Y/n] y
    New password: ★お好きなパスワードを入力
    Re-enter new password: ★もう一度入力
    Password updated successfully!
    Reloading privilege tables..
     ... Success!

    デフォルトの匿名ユーザーを削除する?YES
    Remove anonymous users? [Y/n] y

    リモートからのroot ログインを拒否する?YES
    Disallow root login remotely? [Y/n] y

    testデータベースを削除する?YES
    Remove test database and access to it? [Y/n] y

    上記の設定を反映させる?YES
    Reload privilege tables now? [Y/n] y

    All done!  If you've completed all of the above steps, your MySQL
    installation should now be secure.

    Thanks for using MySQL!

てな感じになればOKです!

・my.cnf の設定

$ sudo mv /etc/my.cnf /etc/my.cnf.origin
$ sudo cp /usr/share/doc/mysql-server-5.5.17/my-medium.cnf /etc/my.cnf
$ sudo /etc/init.d/mysqld restart

PHP のインストール

$ sudo yum --enablerepo=remi install php php-{devel,gd,mbstring,mcrypt,mysql,pear}

・PHPコンパイラのapcをインストール

$ sudo yum --enablerepo=remi install php-pecl-apc

phpMyAdminのインストール

$ sudo yum --enablerepo=remi install phpMyAdmin
$ sudo cp -p /etc/phpMyAdmin/config.inc.php /etc/phpMyAdmin/config.inc.php.origin

※$cfg[‘blowfish_secret’] の値を適当な値に書き換えます

$ sudo vi /etc/httpd/conf.d/phpMyAdmin.conf

※allow from [IPアドレス]

・Apache 再起動

$ sudo /etc/init.d/httpd restart

参考サイト:)

ウェブ開発者のための、1時間でできるLAMP環境構築術(CentOS編)
http://tanaka.sakura.ad.jp/netservice/vps/

さくら VPS + CentOS のチューニングや高速化もっとこうすれば良かった作業まとめ
http://weble.org/2011/08/14/centos-config

さくらのVPS ログレポート(logwatch)と不正アクセス拒否(denyhosts)のインストール

さくらのVPS ログレポート(logwatch)と不正アクセス拒否(denyhosts)のインストール

denyhosts

こちらの記事も参考に読まれると幸せになれるかも:)

さくらのVPSに(CentOSより良い)Scientific Linux6をインストール

ログレポート(logwatch)のインストールと設定

まずは、運用ログの監視です。
一日一回、各種ログを読みやすく整形してメールで送ってくれる
logwatch を利用してみましょう。

$ sudo yum install logwatch

インストールできたら、ちゃんと動くか確認してみましょう。
print オプションをつけると、メールが送られずにコンソールに結果が表示されます。

$ sudo /usr/sbin/logwatch --print

設定ファイルは /etc/logwatch/conf/logwatch.conf です。
中を見てみると

# Local configuration options go here (defaults are in /usr/share/logwatch/default.conf/logwatch.conf)

とだけ書かれてますね。
デフォルト設定と違う設定にしたい場合は、このファイルに書いていってください。
デフォルトだと root 宛てにメールを送る設定になってるので以下のような行を追加して、
メールのあて先を変更してください。

MailTo = hoge@example.com

※hoge@example.com は自分のメールアドレスに適宜変更して下さい

・cron の自動実行
logwatch をインストールすると、/etc/cron.daily/0logwatch
が自動で作られていて、1日一回レポートメールを送信するように
なっているので特に作業は必要無いです

より詳しくは以下、参照
@IT:アクセスログの改ざんと検出方法 – Page2
http://www.atmarkit.co.jp/fsecurity/rensai/iprotect06/iprotect02.html
@IT:サーバのログ監視ツールを使いこなそう(3/3)
http://www.atmarkit.co.jp/flinux/rensai/root04/root04c.html

不正アクセス拒否(denyhosts)のインストール

これは、定期的に log を監視して、SSHの総当り攻撃をしてくるIPアドレスを自動的に
/etc/hosts.deny に登録してくれるものです。

・インストール方法
yum リポジトリとして epel が登録されてない場合は、まず epel を登録。
※既にepel が登録されている場合は、作業の必要は無しです。次のyum install に進んでください

$ sudo rpm --import http://download.fedora.redhat.com/pub/epel/RPM-GPG-KEY-EPEL-6
$ sudo rpm -Uvh http://download.fedora.redhat.com/pub/epel/6/x86_64/epel-release-6-5.noarch.rpm

yum で denyhosts をインストール

$ sudo yum install denyhosts

denyhosts を起動し、自動起動の設定を行う

$ sudo /etc/init.d/denyhosts start
$ sudo /sbin/chkconfig denyhosts on

例外的にアクセスを許可しておきたいIP アドレスが有る場合は
/var/lib/denyhosts/allowed-hosts に記述すればOKです。

不正アクセスを検知した場合 /etc/hosts.deny に追記されていくはずです。

参考サイト

VPS 借りたら、せめてこれくらいはやっとけというセキュリティ設定
http://dogmap.jp/2011/05/12/vps-security/