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サーバのインストール(CentOS7で確認したもの / 監視する側のサーバ)
Amazon Linux 2 に Zabbix 4.0 をインストールしてみた - Qiita
https://qiita.com/ktooi/items/1d79db32e1b6082cb93b
2019年6月3日時点で、Vagrant+CentOS7では上の手順そのままでダッシュボードが表示された。
まずはインストール。
# rpm -import http://repo.zabbix.com/RPM-GPG-KEY-ZABBIX
# rpm -i https://repo.zabbix.com/zabbix/3.5/rhel/7/x86_64/zabbix-release-3.5-1.el7.noarch.rpm
# yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-agent zabbix-web-japanese
データベースを作成。
# mysql -uroot -p
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'password';
mysql> quit;
上記データベースに、テーブル定義などを流し込み。
# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
Zabbixの基本設定。
# cp /etc/zabbix/zabbix_server.conf{,.org}
# vi /etc/zabbix/zabbix_server.conf
ZabbixのWebUI設定。
# DBPassword=
DBPassword=password
# cp /etc/httpd/conf.d/zabbix.conf{,.org}
# vi /etc/httpd/conf.d/zabbix.conf
# php_value date.timezone Europe/Riga
php_value date.timezone Asia/Tokyo
# systemctl restart zabbix-server zabbix-agent httpd
# systemctl enable zabbix-server zabbix-agent httpd
# vi /etc/zabbix/web/zabbix.conf.php
動作確認。
http://192.168.33.10/zabbix/
Admin / zabbix
画面右上の人形アイコンをクリックすると、設定画面に遷移する。
「Language」を「Japanese (ja_JP)」にすると日本語表示になる。
上部メニューの「グラフ」をクリックして、「グループ」「ホスト」「グラフ」を選択すると、Zabbix server の状況がグラフで表示される。
もしくは上部メニューの「スクリーン」をクリックしても、Zabbix server の状況がグラフ(一部)で表示される。
動作確認の参考に。
■Zabbixサーバのインストール(CentOS6で確認したもの / 監視する側のサーバ)
EPELリポジトリ導入(EPEL)
http://centossrv.com/epel.shtml
統合監視ツール「Zabbix」によるサーバー監視
http://knowledge.sakura.ad.jp/tech/585/
<?php
// Zabbix GUI configuration file.
global $DB;
$DB['TYPE'] = 'MYSQL';
$DB['SERVER'] = 'localhost';
$DB['PORT'] = '0';
$DB['DATABASE'] = 'zabbix';
$DB['USER'] = 'zabbix';
$DB['PASSWORD'] = 'password';
// Schema name. Used for IBM DB2 and PostgreSQL.
$DB['SCHEMA'] = '';
$ZBX_SERVER = 'localhost';
$ZBX_SERVER_PORT = '10051';
$ZBX_SERVER_NAME = 'MyZabbix!';
$IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG;
# chown apache:apache /etc/zabbix/web/zabbix.conf.php
# chmod 644 /etc/zabbix/web/zabbix.conf.php
# 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の設定ファイルを編集。
http://example.com/zabbix/ のようにアクセスすると、Zabbixの管理画面にアクセスできるので
http://knowledge.sakura.ad.jp/tech/585/2/ を参考に初期設定を行う。
■Zabbixエージェントのインストール(CentOS7で確認したもの / 監視する側のサーバ)
# 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を再起動。
# hostname … サーバのホスト名を確認する方法。
refirio.net
# rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm
# yum clean all
# yum -y install zabbix-agent … Zabbixエージェントのインストール。
# vi /etc/zabbix/zabbix_agentd.conf … Zabbixエージェントの設定ファイルを編集。
セキュリティグループを編集するなどし、10050ポートを開放。
その後エージェントを起動する。
# Server=
Server=203.0.113.0 … 監視元(Zabbixサーバをインストールしたサーバ)のIPアドレス。
# Hostname=
Hostname=refirio.net … 監視対象(Zabbixエージェントをインストールしたサーバ)のホスト名。
# service zabbix-agent start … Zabbixエージェント起動。
# chkconfig zabbix-agent on … Zabbixの自動起動を設定。
引き続き、監視用Zabbixの管理画面でホストを登録する。
登録しても反映されない場合、エージェントをインストールしたサーバでエラーログを確認する。
以下はZabbixのバージョン違いで正しく通信できなかったときのエラー例。
# vi /var/log/zabbix/zabbix_agentd.log
■Zabbixエージェントのインストール(CentOS6で確認したもの / 監視される側のサーバ)
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]が、
ここで入力したホスト名と同じ値でなければなりません。
4140:20200514:124129.576 Message from 203.0.113.0 is missing header. Message ignored.
4142:20200514:124129.822 Message from 203.0.113.0 is missing header. Message ignored.
4142:20200514:124144.058 Message from 203.0.113.0 is missing header. Message ignored.
4142:20200514:124159.098 Message from 203.0.113.0 is missing header. Message ignored.
4142:20200514:124214.140 Message from 203.0.113.0 is missing header. Message ignored.
# hostname … サーバのホスト名を確認する方法。
refirio.net
# yum --enablerepo=epel install zabbix-agent … Zabbixエージェントのインストール。
# vi /etc/zabbix/zabbix_agentd.conf … 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/
こちらは試していないので試す。
# 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の自動起動を設定。
# 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の設定ファイルを編集。
Zabbix2の場合。
//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
… グラフ用のフォントを変更。
# 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の設定ファイルを編集。
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
//define('ZBX_GRAPH_FONT_NAME', 'graphfont'); // font file name
define('ZBX_GRAPH_FONT_NAME', 'ipagp'); // font file name … グラフ用のフォントを変更。
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の設定ファイルを編集。
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
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 … ファイヤーウォールを再起動。
phpMyAdmin
※データベース管理ツール。
phpMyAdmin | phpMyAdminのインストール
https://www.javadrive.jp/phpmyadmin/install/
phpMyAdminで『information_schema』などを非表示にする方法 - [phpMyAdmin/MySQL MariaDB] ぺんたん info
https://pentan.info/sql/mysql/phpmyadmin_hide_db.html
Adminer
※phpMyAdminよりも軽量なデータベース管理ツール。
1つのPHPファイルを設置するだけで動作する。
Adminer - Database management in a single PHP file
https://www.adminer.org/
Adminerを設置する - Qiita
https://qiita.com/nissuk/items/2b1aee7f81f351c7ab05
rdiff-backup
※Pythonで書かれた逆差分形式のバックアップツール。インストールや設定が比較的容易。
外部のサーバへバックアップすることもできる。バックアップ時の通信にはSSHが使われる。
※duplicityという、rdiff-backupの派生ツールも良いらしい。
また、duplicityをより手軽に扱うためのduplyというツールもあるらしい。
■インストール
※この例では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時に実行する場合。)
リモートのバックアップサーバにSSHでログイン後、以下のようにして直接取得する方法もある。
0 5 * * * root /root/rdiff-backup.sh
# 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/*