Debian 9.3 Zabbix用Nginx&MariaDBの導入 (Linux自作PC 19)
当サイトではアフィリエイト広告を利用しています
Debian Stretch 9.3でZabbixを用いた温度監視の設定を行います。
今回は統合監視サーバーであるZabbixに必要なNgnixとMariaDBのインストールを実行します。
前回でマシンの温度監視に必要なパッケージの確認を行いました。
Zabbixを導入する理由
先の記事でsensors, nbidia-smi, hddtemp
でリソースの温度確認が行えることが分かりました。そのため、単に温度監視をするだけならシェルスクリプトで文字比較を行うものを記述し、cronで定期的に実行すればよさそうです。
ただ、それらの監視は簡易的なものとなり、ディープラーニングやマイニングの長時間運用における負荷の遷移などを統合的に監視するにはログが追いにくいという問題が発生するかと思われます。
また、logwatchなどでは毎日ログの確認は行えますが、急な温度上昇に対しては即応性が書けるという問題もあります。
そこで、リソース監視サービスであるZabbixを導入し、温度や負荷を継続的に監視することにします。なお、Zabbixはサーバーとエージェントに分かれており、複数のエージェントを1つのサーバーでネットワーク越しに監視できるのですが、本環境ではサーバーとエージェントを同一のマシンにインストールしたローカル監視を行うものとします。
Zabbixに必要なパッケージ
Zabbixはブラウザ上で設定やログの確認などが行えます。そのためhttpサーバーが必要となります。また、ログの保存に何らかのDBが必要となります。
本環境ではhttpサーバーに軽量さに定評のあるnginxを使用し、DBにはMariaDBを使用することにします。
Ngnix
まずはnginxの導入を行います。
インストール
公式の手順に従ってインストールを行います。
今回はnginxのStable版を追加することにし、keyringの追加を行います。
$ wget http://nginx.org/keys/nginx_signing.key
$ sudo apt-key add nginx_signing.key
そして/etc/apt/sources.list
にリポジトリの参照先として以下を追加します。
# for nginx stable
deb http://nginx.org/packages/debian/ stretch nginx
deb-src http://nginx.org/packages/debian/ stretch nginx
追加後、nginxをインストールします。
$ sudo apt update
$ sudo apt install nginx
設定
/etc/nginx/nginx.conf
が基本設定、/etc/nginx/conf.d/xxx.conf
が追加設定となります。
まずは設定のバックアップを取っておきます。
$ sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.
org
ひとまず次のように/etc/nginx/nginx.conf
を設定しました。
デフォルトの設定にローカルネットワークからのアクセスに限定しただけになります。
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
allow 127.0.0.1;
allow 192.168.0.0/24;
deny all;
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
設定チェックは次のコマンドで確認できます。
$ sudo nginx -t -c /etc/nginx/nginx.conf
httpサーバーの稼働
ufwにより、httpポートをローカルアクセスのみ許可として開放し、nginxのサービスを起動します。
$ sudo ufw allow from 192.168.0.0/24 to any port 80
$ sudo ufw reload
$ sudo ufw status
$ sudo systemctl start nginx
ここで、次のようなエラーが発生しました。
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] still could not bind()
80portに割り当てられないとのことです。
systemctl status
で状態を確認するとnginxはfailedになって起動していないようですが、どうやらnginxプロセスが起動している模様です。
$ sudo lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 3736 root 6u IPv4 28839 0t0 TCP *:http (LISTEN)
nginx 3737 nginx 6u IPv4 28839 0t0 TCP *:http (LISTEN)
そこで、このプロセスを終了させます。
$ sudo kill 3736
これで正常に起動できるようになりました。
MariaDB
続いてMariaDBの導入を行います。
インストール
$ sudo apt install mariadb-server
$ sudo mysqld --version
mysqld Ver 10.1.26-MariaDB-0+deb9u1 for debian-linux-gnu on x86_64 (Debian 9.1)
設定
/etc/mysql/mariadb.conf.d/50-server.cnf
を編集し、設定を行います。
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
↓
character-set-server = utf8
# collation-server = utf8mb4_general_ci
設定が完了したら$ sudo systemctl restart mariadb
でサービスに設定を反映させます。
初期設定
DBの初期設定を順に行い、rootパスワードなどを設定します。
$ sudo mysql_secure_installation
ウィザードが表示されるため、流れに沿って設定していきます。 rootパスワードの設定、匿名ユーザーは削除、rootのリモートログインの無効化、テストデータベースは削除し、特権情報もリロードしました。
確認
データベースの確認もしておきます。
$ sudo mysql -u root -p
MariaDB [(none)]> select user,host,password from mysql.user;
MariaDB [(none)]> show databases;
MariaDB [(none)]> exit
参考
公式の手順以外には次の記事を参考にしました。
次回
次回は続いて、nginxにphpを連携させます。