raspbian(debian系)+zabbix5.0alphaで監視サーバーを構築
ラズパイが余ったのとサーバー監視を楽にしたいので2回目の初投稿です。
少し前にアルファ版が発表されたzabbbix5.0で監視サーバーを組んでいきます。
ハードウェア raspberryPi 1 B+ SDカードはトランセンド製32GB class10
OS raspbian buster lite(デスクトップ画面がない方)
環境 nginx(最新版) + mariaDB(最新版) + zabbix5.0alpha1
1B+と骨董品気味ですが案外動きます、欲張らない限り
sudo派なのでsudoが付いてます。必要に応じてrootに読み替えてください。
selinuxはraspbianに搭載されていないです、今回はリソースが少ないので実装も見合わせました。
debian系とタイトルに書いたのは、zabbixのdebian系での構築例が少なく情報が陳腐化してること。最新版の構築事例があれば自分も含め助けになると思い記述しました。あと閲覧数稼ぎ
zabbixの宣伝
- GNUライセンスの監視ツール
- webベースでラクラク操作、もちろん問題発生時のメールやSMSでの通知機能も完備
- かなり幅広く構築できる、それはもう設定多すぎて困るほどに
とにかく監視を楽にできるツールです。これで毎日ログを眺める作業とはおさらば!
最新版ではslackへの通知機能が実装されるなど新機能の開発にも積極的です。
ローカル編
- sshの有効化
- 鍵認証のみ変更
raspbian向けに書いてありますが、ユーザー名とパスワードを読み替えればdebian系でも使えると思います。
昨今のssl化の流れに乗って鍵ログインのみにします。
ユーザー名pi パスワードraspberryでログイン(たまに忘れる)
ホスト...サーバー、zabbixを導入する方
クライアント...SSHで遠隔操作する方
[ホスト]ユーザーを追加する
sudo adduser [ユーザー名]
パスワードを2回入力、あとはエンター連打
新しいユーザーにsudo権限を与える
sudo gpasswd -a [ユーザー名] sudo
[ホスト]新しいユーザーでログイン & デフォルトユーザーの削除
セキュリティ上piはリスクが高いので消します、デフォルトユーザーは特に狙われやすい
sudo userdel pi
[ホスト]sshを有効にする
sudo mkdir /boot/ssh
[ホスト]sshを有効化するため再起動
sudo reboot now
[ホスト].sshディレクトリの作成
cd ~/
mkdir .ssh
[クライアント]クライアントからssh__公開鍵__を送信する
秘密鍵を送信しないように(1敗)
scp ssh鍵.pub [ユーザー名]@IPアドレス
[ホスト側]認証キーに追加
cat [先程送信した公開鍵] >> authorized_keys
[クライアント] ログインできるか確認
ssh -i [ssh鍵] [ユーザー名]@IPアドレス
ログインメッセージが出れば成功
パスワード認証の無効化
総当たりになんて屈しない!
ヒント: 英字キーボード コロン -> shift+セミコロン 操作が変なのでviで:set nocompatibleと入力すると楽になる。
sudo vi /etc/ssh/sshd_config
#Password Authentication yes
を
Password Authentication no
に変更する
sshの再起動
sudo systemctl restart sshd
[ホスト側の操作] パスワードログインが禁止されていることを確認する
ssh [ユーザー名]@IPアドレス
Permission denied (publickey).と門前払い拒否されれば成功です
サーバー設定編
- ミラーを変更する
- nginx,PHP,MariaDBのインストールと最低限の設定
以後設定はssh経由で行います、理由は
- 日本語キーボード用に設定や画面変更などハードウェア由来の設定が面倒
- コピペができる
.vimrcを編集する
そのままだとキー操作が変な反応をするので
sudo vi ~/.vimrc
を開き
set nocompatible
set number
今度はsudo vi /root.vimrcに追記する
を追記
ミラーを日本版に
raspbianは本家からだと遅すぎるため、日本のミラーサイトを利用させていただきます。
sudo vi /etc/apt/source.list
deb http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
から
#deb http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
に
最終行に追記(jaistさんいつもお世話になってます)
deb http://ftp.jaist.ac.jp/raspbian buster main contrib non-free rpi
これでかなり速度が改善されます
いつものアップデート
sudo apt update
sudo apt upgrade
RaspberrypPi 1B+だったのでまぁまぁ時間がかかりました
nginxを設定
apache2より軽量と噂があるのでnginxにします。
raspbianのaptだとあまりにも古いので最新版を本家から落とします。
本家の鍵を登録
wget http://nginx.org/keys/nginx_signing.key
sudo apt-key add nginx_signing.key
リポジトリを追加
sudo vi /etc/apt/sources.list
deb http://nginx.org/packages/debian/ buster nginx
deb-src http://nginx.org/packages/debian/ buster nginx
サービスを起動
sudo systemctl start nginx
http://対象のIPアドレス にアクセスしてnginxの質素なウェルカムページを拝む
PHPの設定
webインターフェースに必要なので入れる。
急いで7.4や8.0にすることもないので7.3をインストール
sudo apt install php7.3-fpm php7.3-mysql
nginxでPHPを動作させるための設定
sudo vi /etc/nginx/sites-available/default
index(44行目くらい)にindex.phpを追記
56(locationから始まる行)57(include)60(fastcgi_pass)63行目(}だけ記述されてる行)のコメントアウトを削除する
PHPの方の設定
sudo /etc/php/7.3/fpm/php.ini
;cgi.fix_pathinfo=1をcgi_pathinfo=0にする
テストページの作成
sudo vi /var/www/html/test.php
<?php phpinfo();?>
を書き込んで保存
nginxを再起動
sudo systemctl restart nginx
IPアドレス/test.phpにアクセスしてphpの情報一覧が出たらPHPの動作確認完了
Mariadb
今回は同じOSにインストールしましたが、外部のDBに設定することもできるようです。その場合はmysqlの設定時に外部DBの情報を記述すればいけるようです。
sudo apt install mariadb-server
セキュリティの向上とrootパスワードを簡単に設定します
sudo mysql_secure_installation
Enter current password for root [enterで無視]
Set root password? [Y/n] Y
New password: [mysqlのパスワード]
Re-enter new password: [mysqlのパスワード]
後はエンター連打、thankyouとかなんとか出てきて待機状態になったらOK
Zabbix5.0の設定
- zabbixのインストール(wget)
- web管理画面が出るまでの設定
- 実際にホストを監視してデータを取る
動作に必要な最低限の設定しかしてません。
zabbixのインストール
zabbixのレポジトリを追加
sudo wget https://repo.zabbix.com/zabbix/4.5/raspbian/pool/main/z/zabbix-release/zabbix-release_4.5-1%2Bbuster_all.deb
zabbixのレポジトリを追加
sudo dpkg -i zabbix-release_5.0-2+buster_all.deb
インストール
sudo apt install zabbix-server-mysql zabbix-agent zabbix-frontend-php
mysqlデータを生成する
mysql -u root
create database zabbix CHARACTER SET UTF8;
grant all on zabbix.* to zabbix@localhost identified by 'Jack11Fire';
webサーバーとシンボリックリンクで繋げる
cd /var/www/html
ln -s /usr/share/zabbix zabbix
sudo systemctl restart nginx
ブラウザで IPアドレス/zabbix にアクセスできる
エラーが出ないようにphp.iniを編集する
設定を進めるとweb画面上で修正が必要なエラーが色々出てくるのでphp.iniを編集します。
sudo vi /etc/php/7.3/fpm/php.ini
post_max_size = 8M -> post_max_size = 16M
max_execution_time = 30 -> max_execution_time = 300
max_input_time = 60 -> max_input_time = 300
;date.timezone = -> date.timezone = Asia/Tokyo
編集が終わったら一通り再起動する
sudo systemctl restart php7.3-fpm
Zabbixにログインする
初期は
user Admin
パスワード zabbix
でログインできます
zabbixクライアントの設定(監視対象での操作)
クライアント の構成
ハードウェア raspberryPi 1B+
OS raspbian buster
SSH経由で操作
zabbixエージェントのインストール
本家からwgetで取得してきます、RHELやDebianで違うパッケージが配布されてるので注意してください。
たまにホームディレクトリがない場合があるのでディレクトリは/tmpを使う
cd /tmp
sudo wget [さっきコピーしたURL]
今回使ったコマンド
sudo wget https://repo.zabbix.com/zabbix/4.5/raspbian/pool/main/z/zabbix-release/zabbix-release_4.5-1%2Bbuster.tar.gz
sudo dpkg -i zabbix-release_4.5-1+buster_all.deb
zabbixの監視ツールであるzabbix-agentをインストールする
sudo apt install zabbix-agent
zabbix-agentの設定を変更
Server=127.0.0.1 -> Server=[zabbixサーバーのIPアドレス]
ServerActive=127.0.0.1 -> Server=[zabbixサーバーのIPアドレス]
Portのコメントアウトを解除
zabbix-agentの再起動
systemctl restart zabbix-agent
実際に監視できるようにする(Web上での操作)
zabbixサーバーから監視できるようにする
タブ上部のConfiguration -> Hosts -> 右上のCreate Host から追加
Host nameは名前
GroupはLinux serversを選択
Portは10050
グループに追加
タブ上部のConfiguration -> Host groups -> 右上の Create groupを押す
グループ名をお好きな名前で指定(以後[ホストグループと記述])
テンプレートを複製
zabbixは監視する内容をテンプレートで管理します、今回はデフォルトのテンプレートをコピーしたものをいじります。
デフォルトで80個ほどテンプレートが入ってるらしいので、検索する
Configuration -> Template -> 上の方の検索窓に[Templates OS] -> applyで適用
多分検索が適用されるはず。
Template OS Linux by Zabbix agentをクリック
テンプレート名やテンプレートの説明が書いてある画面になれば成功。
下部にFull cloneというボタンをクリック、名前を適当に変更して(今回は雑に戦闘に2を付けた)Addを押して追加
ホストの追加
変更するのは以下の点
Host name -> エージェントに設定した名前
Groups -> [ホストグループ]
Agent interfaces -> IPアドレスを監視対象のIPアドレス
タブTemplatesを選択 -> Link new templatesという項目に検索窓があるのでOS Linux と入力して先程追加したグループをクリックする。
あとはUpdateを押してOK。
最初ホストをテンプレートに含めればいいと思ってなかなかデータが収集されませんでした(5敗)
トラブルシューティング
zabbixのweb画面でであれが出ない!これが出ない
admin(最高権限)がないと一部の機能が拒否されますので、adminで入り直してください。
create.sql.gzがない
zabbix4.0で入れたらそうなりました(3敗)詳しくは知りませんがバージョンによってはあったりなかったりするそうです。
zabbixのweb管理画面でどこにあるか分からない
F3キー、zabbixは文字でかなりの範囲を自動生成しているので検索が効きます。
初期設定のデータベース設定の時にPostgreSQLしか出てこない
php-mysqlがないと出てこないそうです(1敗)
sudo apt install php7.3-mysql
zabbix上でデータが反映されない
ビールでも飲んでリラックスしなぁ。
ログをマメに取るようにすれば問題ないようですが、ディスクを圧迫するのが難点です。
キーボードが言うことを聞かない
ローカルで操作するときだけ稀によく英語用キーボードになっている、日本語キーボードと一部キー入力が違う文字があります。設定すれば対策は可能なのですが、SSH経由で入力した方が楽なので設定は省きました。
"~" shift+]
":" shift+;
参考
参考にさせていただきました