■目次
logwatchZabbixNagiosMuninCactiWebminrdiff-backup
■logwatch
※ログの監視を行う [さくらのVPS]サーバー監視がとても捗るlogwatchを入れてみた http://www.happyquality.com/2012/02/02/1924.htm ログ監視ツール logwatch のインストールと設定 〜 CentOS6 http://easyramble.com/install-setup-logwatch.html logwatch によるログの収集 http://landisk.kororo.jp/diary/29_logwatch.php # yum install logwatch … インストール # /usr/sbin/logwatch --print … 動作確認 # vi /etc/logwatch/conf/logwatch.conf … 設定ファイルを編集
# Local configuration options go here (defaults are in /usr/share/logwatch/default.conf/logwatch.conf) #解析結果を送信するメールアドレス … メールアドレスを追加(設定しなかった場合、rootのアドレスに送られる) MailTo=refirio@example.com
■Zabbix
※サーバの監視を行う ■Zabbixサーバのインストール(監視する側のサーバ) EPELリポジトリ導入(EPEL) http://centossrv.com/epel.shtml 統合監視ツール「Zabbix」によるサーバー監視 http://knowledge.sakura.ad.jp/tech/585/ # rpm -ivh http://ftp.riken.jp/Linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm … EPELリポジトリをインストール # sed -i 's/enabled=1/enabled=0/g' /etc/yum.repos.d/epel.repo … EPELリポジトリをデフォルト無効化(RPMforgeリポジトリと競合するため) # yum --enablerepo=epel -y update epel-release … epel-releaseをアップデート # yum --enablerepo=epel install zabbix-server zabbix-server-mysql … Zabbixのインストール mysql> CREATE USER zabbix; … MySQLにZabbix用のユーザとデータベースを作成 mysql> CREATE DATABASE zabbix; mysql> GRANT ALL PRIVILEGES ON zabbix.* TO zabbix@localhost IDENTIFIED BY '1234'; mysql> FLUSH PRIVILEGES; # mysql -u zabbix -p zabbix < /usr/share/doc/zabbix-server-mysql-1.8.22/create/schema/mysql.sql … Zabbix用の初期データを登録(それぞれ時間がかかかるので待つ) # mysql -u zabbix -p zabbix < /usr/share/doc/zabbix-server-mysql-1.8.22/create/data/data.sql # mysql -u zabbix -p zabbix < /usr/share/doc/zabbix-server-mysql-1.8.22/create/data/images_mysql.sql # vi /etc/zabbix/zabbix_server.conf … Zabbixの設定ファイルを編集
# DBName= DBName=zabbix … 使用するデータベース名 # DBUser= DBUser=zabbix … データベースのユーザー名 # DBPassword= DBPassword=1234 … データベースのパスワード
# service zabbix-server start … Zabbixを起動 # chkconfig zabbix-server on … Zabbix自動起動を設定 # yum --enablerepo=epel install zabbix-web-mysql … Webフロントエンドのインストール # vi /etc/php.ini … Zabbix用にPHPの設定を編集
post_max_size = 32M max_execution_time = 600 max_input_time = 600 memory_limit = 256M upload_max_filesize = 16M
# service httpd restart … httpdを再起動 http://example.com/zabbix/ のようにアクセスすると、Zabbixの管理画面にアクセスできるので http://knowledge.sakura.ad.jp/tech/585/2/ を参考に初期設定を行う ■Zabbixエージェントのインストール(監視される側のサーバ) linuxにおけるホスト名の確認と変更 http://d.hatena.ne.jp/atree/20090420/1240308590 統合監視ツール「Zabbix」によるサーバー監視 http://knowledge.sakura.ad.jp/tech/585/2/ ホストの設定 https://www.zabbix.com/documentation/2.2/jp/manual/config/hosts/host 設定しようとしているホスト上でZabbixエージェントが動作している場合、 エージェントの 設定ファイルのパラメータ[Hostname]が、 ここで入力したホスト名と同じ値でなければなりません。 # hostname … サーバのホスト名を確認する方法 refirio.net # yum --enablerepo=epel install zabbix-agent … Zabbixエージェントのインストール # vi /etc/zabbix/zabbix_agentd.conf … Zabbixエージェントの設定ファイルを編集
# Server= Server=203.0.113.0 … 監視元(Zabbixサーバをインストールしたサーバ)のIPアドレス # Hostname= Hostname=refirio.net … 監視対象(Zabbixエージェントをインストールしたサーバ)のホスト名 # ListenIP=0.0.0.0 ListenIP=203.0.113.0 … 監視対象(Zabbixエージェントをインストールしたサーバ)のIPアドレスだが、設定しなくても動く
# vi /etc/sysconfig/iptables … ファイヤーウォールを設定(10050ポートを開ける / iptablesを使用している場合の設定)
#Zabbixを許可 -A MY-FIREWALL -m state --state NEW -m tcp -p tcp --dport 10050 -j ACCEPT
# service iptables restart … ファイヤーウォールを再起動 # service zabbix-agent start … Zabbixエージェント起動 # chkconfig zabbix-agent on … Zabbixの自動起動を設定 インストールが完了したら、Zabbixの管理画面で監視対象ホストを登録する ■監視設定 ※「設定 → ホスト → ホストの作成」から、監視したい対象を登録できる ※似たような監視を行う場合、「設定 → ホスト」から設定をエクスポートし、 設定を編集して「設定 → ホスト → ホストのインポート」からインポートするといい ホストの設定 名前:refirio.net グループ:Linux servers, Zabbix servers IPアドレス:203.0.113.0 リンクしているテンプレート:Template_Linux 統合監視ツール「Zabbix」によるサーバー監視 http://knowledge.sakura.ad.jp/tech/585/3/ ■監視設定例 ※「設定 → ホスト → グラフ」から、監視したい内容を登録できる ※「設定 → スクリーン」から、一括で監視したいグラフを登録できる Load Average ノーマル Processor load 濃い赤 Processor load5 赤 Processor load15 薄い赤 CPU Utilization 積算グラフ CPU system time 赤 CPU iowait time 黒 CPU user time 黄 CPU idle time 緑 Memory 積算グラフ Cached memory 赤 Buffers memory 黄 Free memory 緑 Disk Space 積算グラフ Used disk space on / 赤 Free disk space on / 緑 Traffic ノーマル Outgoing traffic on interface eth0 青 Incoming traffic on interface eth0 赤 ■グラフを作成せずに既存のグラフで監視 概要 → セルをクリック → そこからグラフを確認できる ■グラフのフォント文字化け対策 ※文字化けが直った代わりに、グラフに時間が表示されなくなったので未解決 https://blog.isao.co.jp/zabbix_graph/ こちらは試していないので試す # yum search ipafont … フォントを検索 # yum install ipa-pgothic-fonts … ゴシック可変幅フォントをインストール # ls /usr/share/fonts/ipa-pgothic/ … インストールされたフォントを確認 ipagp.ttf # vi /usr/share/zabbix/include/defines.inc.php … Zabbixの設定ファイルを編集
//define('ZBX_FONTPATH', '/usr/share/fonts/dejavu'); // where to search for font (GD > 2.0.18) define('ZBX_FONTPATH', '/usr/share/fonts/ipa-pgothic'); // where to search for font (GD > 2.0.18) //define('ZBX_GRAPH_FONT_NAME', 'DejaVuSans'); // font file name define('ZBX_GRAPH_FONT_NAME', 'ipagp'); // font file name
… グラフ用のフォントを変更 (Zabbix2の場合) # cd /usr/share/zabbix/fonts/ … Zabbix用のフォントディレクトリへ移動 # ln -s /usr/share/fonts/ipa-pgothic/ipagp.ttf ipagp.ttf … インストールしたフォントへシンボリックリンクを張る # vi /usr/share/zabbix/include/defines.inc.php … Zabbixの設定ファイルを編集
//define('ZBX_GRAPH_FONT_NAME', 'graphfont'); // font file name define('ZBX_GRAPH_FONT_NAME', 'ipagp'); // font file name … グラフ用のフォントを変更
Zabbixグラフの日本語文字化けを直す方法(2.0.5) http://www.checksite.jp/zabbix-japanese-graph/ ■Zabbix API APIを使う場合、Zabbix1.8の場合は 「Zabbix管理画面 → 管理 → ユーザ」 から「APIアクセス」を有効にする Zabbix3ではこの項目は無くなっているが、特に何も設定しなくてもAPIアクセスができるみたい この設定とは別に、ZabbixにはIP制限をかけて運用することが多いと思われる 「何故かAPIにアクセスできない」という場合、そういったアクセス制限も確認する PHP 5分でわかる! Zabbix API の使い方(ホスト一覧の取得) | あぱーブログ https://blog.apar.jp/zabbix/3055/ Host [Zabbix Documentation 1.8] https://www.zabbix.com/documentation/1.8/api/host
■Nagios
※サーバの監視を行う ※未検証 統合監視システム構築(Nagios) - CentOSで自宅サーバー構築 https://centossrv.com/nagios.shtml Nagiosの基礎 - ペパボテックブログ https://tech.pepabo.com/2013/11/30/nagios-learning/ Nagiosのインストール(Nginx + CentOS) | abeerforyou.com http://abeerforyou.com/?p=603
■Munin
※サーバの監視を行う ※未検証 【CentOS7】Munin + nginxでサーバ監視 | server-memo.net http://www.server-memo.net/server-setting/munin/munin_nginx.html 「Muninでかんたんサーバー監視」〜初心者でもよくわかる!VPSによるWebサーバー運用講座(3) | さくらのナレッジ https://knowledge.sakura.ad.jp/3669/
■Cacti
※サーバの監視を行う ※未検証 モニタリングツール「Cacti」でのリソース監視 | さくらのナレッジ https://knowledge.sakura.ad.jp/618/ これだけ見れば大丈夫!ーMySQLパフォーマンス監視のツボ(クエリ編) | 株式会社インフィニットループ技術ブログ http://www.infiniteloop.co.jp/blog/2012/03/mysql-tuning-cacti-query/
■Webmin
※サーバの設定をブラウザから行えるようにする ■インストール ※最新版のURLは http://www.webmin.com/download.html で確認できる # yum -y install perl-Net-SSLeay … 依存ライブラリをインストール # wget http://prdownloads.sourceforge.net/webadmin/webmin-1.770-1.noarch.rpm … Webminのダウンロード # rpm -U webmin-1.770-1.noarch.rpm … Webminのインストール # yum -y install perl-DBI … MySQLをWebminから管理したい場合にインストール # vi /etc/webmin/miniserv.conf … Webminの設定ファイルを編集
allow=127.0.0.1 203.0.113.0 203.0.113.1 … 最終行にローカルアドレスと自身のIPアドレス(複数可)を追加
# /etc/init.d/webmin restart … Webminを再起動 # vi /etc/sysconfig/iptables … ファイヤーウォールを設定(10000ポートを開ける / iptablesを使用している場合の設定)
#Webminを許可 -A MY-FIREWALL -m state --state NEW -m tcp -p tcp --dport 10000 -j ACCEPT
# service iptables restart … ファイヤーウォールを再起動 http://example.com:10000/ のようにアクセスすると、Webminの管理画面にアクセスできる ユーザー名は「root」、パスワードはサーバのrootパスワードでログインする 日本語化させる場合、 「Webmin > Webmin Configuration > Language」で 「Display in language」を「Japanese (JA_JP.UTF-8)」に設定する SSLで接続する場合、 「Webmin > Webmin設定 > SSL暗号化」で 「可能であればSSLを使用可能にしますか?」を「はい」に設定する https://example.com:10000/ ポート番号を変更する場合、 「Webmin > Webmin設定 > ポートとアドレス」で 「待機するIPとポート → 全てのアドレス → 具体的なポート」と「ブロードキャストを待ち受けるUDPポート」に 任意のポート番号を設定する ポート番号はプライベートポート番号(49152〜65535)の割り当てが推奨される IPアドレスで制限する場合 「Webmin > Webmin設定 > IP アドレスのアクセス制御」でIPアドレスを指定できる Webminの導入 http://hs-www.hyogo-dai.ac.jp/~kawano/?Install%20Log%2FCentOS5%2Fwebmin 初めて使うwebminでやっておくべき事(その3) http://www.flipflipflip.com/vps_wp/20140306vps27.html
■rdiff-backup
※Pythonで書かれた逆差分形式のバックアップツール。インストールや設定が比較的容易 外部のサーバへバックアップすることもできる。バックアップ時の通信にはSSHが使われる ※duplicityというツールも良いらしい ■インストール ※この例ではrootアカウントでバックアップを行うものとする バックアップは外部のバックアップ用サーバ( backup.refirio.net )に行うものとする バックアップ用サーバでは、SSHでの管理用ユーザ「admin」とrdiff-backupでのバックアップ用ユーザ「backup」があるものとする 一旦 /root/rdiff-backup/ 内にバックアップを作成し、それをrdiff-backupでバックアップするものとする ※公開フォルダの一つ上の階層にログなどのバックアップを作成し、一つ上の階層を丸ごとバックアップするのも有効? ※バックアップ時のSSHでは使用できるコマンドを制限するのも有効 # yum install rdiff-backup … rdiff-backupをインストール rdiff-backup でリモートバックアップする(基本的な使い方が書かれている) http://www.usupi.org/sysad/154.html rdiff-backup をもう少し使いこなす(鍵認証とパスワードの省略について書かれている) http://www.usupi.org/sysad/155.html rdiff-backupのリモートバックアップで、SSHのコマンドを制限したい http://www2.filewo.net/wordpress/2012/05/30/rdiff-backup%E3%81%AE%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%8... ■ローカルバックアップ動作確認 # mkdir /root/mydata … テスト用ディレクトリを作成 # echo test1 > /root/mydata/test1.txt … テスト用ファイルを作成 # rdiff-backup /root/mydata /root/mydata-backup … rdiff-backupでバックアップを実行 # ls /root/mydata-backup … バックアップの内容を確認 # echo test2 > /root/mydata/test2.txt … 追加でファイルを作成 # mkdir /root/mydata/test … 追加でディレクトリを作成 # rdiff-backup /root/mydata /root/mydata-backup … rdiff-backupでバックアップを実行 # ls /root/mydata-backup … バックアップの内容を確認 # rdiff-backup -l /root/mydata-backup … バックアップの履歴を確認する場合 increments.2018-01-28T05:45:03+09:00.dir Sun Jan 28 05:45:03 2018 increments.2018-01-29T05:45:04+09:00.dir Mon Jan 29 05:45:04 2018 increments.2018-01-30T05:45:03+09:00.dir Tue Jan 30 05:45:03 2018 〜中略〜 increments.2018-03-28T17:20:54+09:00.dir Wed Mar 28 17:20:54 2018 increments.2018-03-28T17:20:58+09:00.dir Wed Mar 28 17:20:58 2018 increments.2018-03-28T17:21:59+09:00.dir Wed Mar 28 17:21:59 2018 # rdiff-backup -r now /root/mydata-backup /root/mydata-restore … 最新のバックアップから復元する場合 # rdiff-backup -r 1D /root/mydata-backup /root/mydata-restore … 1日前のバックアップから復元する場合 # rdiff-backup -r 1D /root/mydata-backup/data.sql /root/mydata-restore/data.sql … 特定のデータのみ復元する場合 # rdiff-backup -r 2018-03-28T17:21:59+09:00 /root/mydata-backup /root/mydata-restore … 特定の日時から復元する場合 ■リモートバックアップ準備 ※PostgreSQLのデータをバックアップする場合、rootからパスワード入力なしでpg_dumpを実行できるようにする ※PostgreSQLにrootを作成し、パスワード入力を省略するためのファイルも作成しておく必要がある # su - postgres … postgresユーザになる -bash-4.1$ createuser webmaster … DBユーザー「root」を新規登録 # vi /root/.pgpass … PostgreSQLパスワードファイルを作成
#ホスト名:ポート番号:データベース名:ユーザー名:パスワード localhost:5432:dbname:username:XXXXX
# chmod 600 /root/.pgpass … rootからのみ読み込めるようにする # pg_dump dbname > /root/pg_dbname.sql … pg_dumpをテスト実行 ■リモートバックアップ通信準備 ☆バックアップ用サーバで作業 # mkdir /home/backup/refirio.net … あらかじめバックアップ用ディレクトリを作成 # chown backup. /home/backup/refirio.net … 権限を設定 # vi /etc/sysconfig/iptables … ファイヤーウォールを設定(バックアップ元サーバからのアクセスを許可する / iptablesを使用している場合の設定) ☆バックアップ元サーバで作業 # ssh backup@backup.refirio.net … 一旦バックアップ先へのSSH接続を確認 # ssh-keygen -t rsa … バックアップ元からバックアップ先にSSH接続するための鍵を作成 Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): … 空Enter(デフォルトの場所に作成) Enter passphrase (empty for no passphrase): … 空Enter(パスワード無しの鍵を作成) Enter same passphrase again: … 空Enter Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: 1d:98:e7:f1:6d:04:1c:30:fd:69:c7:b7:3b:6d:e6:40 root@refirio.net The key's randomart image is: +--[ RSA 2048]----+ | o+o. | | o .o. | | o + ..o | | + + o+ +| | S o ..E.o| | o . | | . o| | ++| | +o| +-----------------+ # ll /root/.ssh/ … 鍵(id_rsa と id_rsa.pub)の作成を確認 合計 12 -rw------- 1 root root 1675 4月 8 18:09 2015 id_rsa -rw-r--r-- 1 root root 396 4月 8 18:09 2015 id_rsa.pub -rw-r--r-- 1 root root 826 4月 8 10:55 2015 known_hosts # vi /root/.ssh/id_rsa … 秘密鍵の内容を確認
-----BEGIN RSA PRIVATE KEY----- MIIEoQIBAAKCAQEAyhAl43U62F5m7i3qv/qiXyANsiE8kZeyXyMcDZnpeguwhRxx 〜略〜 FcSQ5vshGerkb6Aogd0lTsT16WVHW2UPRv0Jef7FTWDaP/BV9w== -----END RSA PRIVATE KEY-----
# vi /root/.ssh/id_rsa.pub … 公開鍵の内容を確認(アカウントとドメインが記入されているのを確認)
ssh-rsa AAAA〜略〜gzw== root@refirio.net
☆バックアップ用サーバで作業 # vi /home/backup/.ssh/authorized_keys … 作成した公開鍵の内容を入力(すでに鍵ファイルがあれば、ファイルの最後に追記)
ssh-rsa AAAA〜略〜gzw== root@refirio.net
☆バックアップ元サーバで作業 # ssh -i /root/.ssh/id_rsa backup@backup.refirio.net … 秘密鍵を使って、パスワードなしで、バックアップ先へのSSH接続を確認 ■リモートバックアップ構築 ※シェルスクリプトの内容は、必要に応じて調整する ※シェルスクリプトとして実行する前に、あらかじめ一つ一つのコマンドを叩いてテストする ※一度もバックアップを行っていないと、バックアップの復元はエラーになる # mkdir /root/rdiff-backup … バックアップ用一時ディレクトリを作成 # vi /root/rdiff-backup.sh … バックアップ用スクリプトを作成
#!/bin/sh #システムファイルをバックアップ tar cfz /root/rdiff-backup/log_backup.tar.gz -C /var log tar cfz /root/rdiff-backup/etc_backup.tar.gz -C / etc #MySQLをバックアップ mysqldump -u username -pXXXXX dbname --default-character-set=binary > /root/rdiff-backup/mysql_dbname.sql #PostgreSQLをバックアップ pg_dump dbname > /root/rdiff-backup/pg_dbname.sql #rdiff-backupにある1ヶ月以上前のバックアップを削除 rdiff-backup --remote-schema 'ssh -i /root/.ssh/id_rsa -C %s rdiff-backup --server' --force --remove-older-than 1M backup@backup.refirio.net::refirio.net #rdiff-backupにバックアップを作成 rdiff-backup --remote-schema 'ssh -i /root/.ssh/id_rsa -C %s rdiff-backup --server' /root/rdiff-backup backup@backup.refirio.net::refirio.net #一時的なバックアップファイルを削除 rm -f /root/rdiff-backup/*
■リモートバックアップから復元テスト&シェルスクリプト実行テスト&自動実行 # rdiff-backup -r now --remote-schema 'ssh -i /root/.ssh/id_rsa -C %s rdiff-backup --server' backup@backup.refirio.net::refirio.net /root/rdiff-backup-restore … 最新のバックアップから /root/rdiff-backup-restore に復元テスト # chmod 700 /root/rdiff-backup.sh … バックアップ用スクリプトに権限を与える # /root/rdiff-backup.sh … バックアップ実行テスト # vi /etc/crontab … バックアップ用スクリプトをcronに登録(毎朝5時に実行する場合)
0 5 * * * root /root/rdiff-backup.sh
リモートのバックアップサーバにSSHでログイン後、以下のようにして直接取得する方法もある # rdiff-backup -r now /root/mydata-backup /root/mydata-restore … 最新のバックアップから復元する場合 ■バックアップ用シェルスクリプト例 # vi /root/rdiff-backup.sh
#!/bin/sh #システムファイルをバックアップ tar cfz /var/www/vhosts/main/backup/log_backup.tar.gz -C /var log tar cfz /var/www/vhosts/main/backup/etc_backup.tar.gz -C / etc #MySQLをバックアップ mysqldump -u refirio_db -pPNBgxJWM5N members --default-character-set=binary > /var/www/vhosts/main/backup/mysql_members.sql #PostgreSQLをバックアップ pg_dump members_pos > /var/www/vhosts/main/backup/pg_members_pos.sql #rdiff-backupにある古いバックアップを削除 rdiff-backup --remote-schema 'ssh -i /root/.ssh/id_rsa -C %s rdiff-backup --server' --force --remove-older-than 30D backup@backup.example.com::refirio.net #rdiff-backupにバックアップを作成 rdiff-backup --remote-schema 'ssh -i /root/.ssh/id_rsa -C %s rdiff-backup --server' /var/www/vhosts/main backup@backup.example.com::refirio.net #一時的なバックアップファイルを削除 rm -f /var/www/vhosts/main/backup/*