raspbian(debian系)+zabbix5.0alphaで監視サーバーを構築

# 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で違うパッケージが配布されてるので注意してください。

http://repo.zabbix.com/zabbix/にアクセスしてバージョン->raspbian->pool->main->z->zabbix-releaseからバージョンに合うファイルのtarファイルの__URLをコピーして保存する__

たまにホームディレクトリがない場合があるのでディレクトリは/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+;









## 参考

参考にさせていただきました

https://qiita.com/kazokmr/items/754169cfa996b24fcbf5

https://raspi.ryo.sc/raspberry-pi-%E3%83%AA%E3%83%9D%E3%82%B8%E3%83%88%E3%83%AA%E3%82%92%E5%9B%BD%E5%86%85%E3%81%AE%E3%83%9F%E3%83%A9%E3%83%BC%E3%82%B5%E3%82%A4%E3%83%88%E3%81%AB%E5%A4%89%E6%9B%B4%E3%81%99%E3%82%8B/

https://qiita.com/Brutus/items/27525deedb0eea1b35b8

https://qiita.com/knife0125/items/3d685f1368a654d5187d


```

```