zabbix.menta.me(zabbixサーバー)を構築し、dev.menta.me(wordpress)を立ち上げて監視する。
以下のVagrantfileを新しく作成し、vagrant upを行う。
# -*- mode: ruby -*-
# vi: set ft=ruby
Vagrant.configure(2) do |config|
config.vm.box = "centos/7"
config.vm.hostname = "zabbix.menta.me"
config.vm.network "private_network", ip: "192.168.56.16"
end
-
$ vagrant sshでログイン後、$ yum update -yを行う。 -
EPELリポジトリを
$ yum -y install epel-releaseで追加。 -
remiリポジトリを
$ rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpmで追加。 -
$ vim /etc/yum.repos.d/nginx.repoをコマンド入力し、以下のように編集。
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=1
enabled=1
gpgkey=http://nginx.org/keys/nginx_signing.key
[nginx-source]
name=nginx source
baseurl=http://nginx.org/packages/mainline/centos/7/SRPMS/
gpgcheck=1
enabled=0
gpgkey=http://nginx.org/keys/nginx_signing.key
-
$ yum -y install nginxをコマンド入力し、nginxをインストール。 -
自動アップデート設定を行うため、
$ yum install yum-cronでyum-cronをインストール。 -
$ vim /etc/yum/yum-cron.confでファイルを開き、apply_updates = yesと編集し自動アップデートできるように設定。 -
$ systemctl start nginxで、nginxを起動。 -
$ systemctl enable nginx.serviceを入力し、サーバ再起動時にnginxが自動起動するように設定するようにする。
-
MariaDB関連ライブラリの確認と削除。
yum remove mariadb-libsとrm -rf /var/lib/mysql/のコマンド入力。 -
$ rpm -ivh https://dev.mysql.com/get/mysql80-community-release-el7-2.noarch.rpmで、リポジトリをインストール。 -
sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022で、新しいGPGキーをインストール。 -
mysql-community-serverをインストール。
$ yum install mysql-community-serverをコマンド入力。 -
$ systemctl start mysqld.serviceで、mysqld.serviceを起動。 -
$ systemctl enable mysqld.serviceで、mysqld.serviceを永続化。
-
Zabbixのリポジトリを登録。
$ rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm -
$ sudo yum clean allで、キャッシュをクリーンする。 -
Zabbixサーバーとエージェントをインストールする。
$ yum install zabbix-server-mysql zabbix-agent -
Zabbixの管理画面をインストールするため、Red Hat Software Collectionsを有効化。
$ yum install centos-release-scl -
/etc/yum.repos.d/zabbix.repoを編集してzabbix-frontendのリポジトリを有効化。[zabbix-frontend]をenabled=1に変更。$ sudo vi /etc/yum.repos.d/zabbix.repo .... [zabbix-frontend] name=Zabbix Official Repository frontend - $basearch baseurl=http://repo.zabbix.com/zabbix/5.0/rhel/7/$basearch/frontend enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591 .... -
zabbix-frontendのパッケージをインストールする。$ yum install zabbix-web-mysql-scl zabbix-nginx-conf-scl -
Zabbix用のデータベースとユーザーを作成する。
$ mysql -uroot -p # ユーザを追加 mysql> create database zabbix character set utf8 collate utf8_bin; mysql> create user zabbix@localhost identified by 'password'; mysql> grant all privileges on zabbix.* to zabbix@localhost; -
Zabbixサーバーホストで初期スキーマとデータをインポート。
$ zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix -
/etc/zabbix/zabbix_server.confを編集し、Zabbixサーバー用にデータベースを設定。
$ sudo vi /etc/zabbix/zabbix_server.conf
...
# データベースのユーザー作成時のパスワードをセット
DBPassword=your-password
zabbix.menta.me.confを編集し、ポートとホスト名を変更。
$ vi /etc/nginx/conf.d/zabbix.menta.me.conf
server {
listen 80;
server_name zabbix.menta.me;
...
zabbix.confを編集し、ユーザをnginxに変更し、data.timezoneをAsia/Tokyoに変更。
[zabbix]
user = nginx
group = nginx
listen = /var/opt/rh/rh-php72/run/php-fpm/zabbix.sock
listen.acl_users = nginx
listen.allowed_clients = 127.0.0.1
pm = static
pm.max_children = 10
pm.start_servers = 10
pm.min_spare_servers = 10
pm.max_spare_servers = 10
pm.max_requests = 100
php_value[session.save_handler] = files
php_value[session.save_path] = /var/opt/rh/rh-php72/lib/php/session/
php_value[max_execution_time] = 300
php_value[memory_limit] = 128M
php_value[post_max_size] = 16M
php_value[upload_max_filesize] = 2M
php_value[max_input_time] = 300
php_value[max_input_vars] = 10000
php_value[date.timezone] = Asia/Tokyo
- PHPの権限を変更
# 実行権限を与える
$ chmod 755 -R /usr/share/zabbix
# Nginxユーザを設定
$ chown -R root:nginx /usr/share/zabbix
# ライブラリもNginxユーザを設定
$ chown -R root:nginx /var/opt/rh/rh-php72/lib/php/*
- Zabbixを起動して自動起動も有効化。
$ sudo systemctl restart zabbix-server zabbix-agent nginx rh-php72-php-fpm
$ sudo systemctl enable zabbix-server zabbix-agent nginx rh-php72-php-fpm
- Zabbixにアクセスし、MySQLの情報を入力。
Database type: MySQL
Database host: localhost
Database port: 3306
Database name: zabbix
User: zabbix
Password: Password
- ホスト名とポートを設定し、セットアップを進める。
Host: zabbix.menta.me
Port: 10051
name: zabbix
- hostファイルを編集し、zabbix.menta.meでアクセスできるように修正。
vi sudo vi /private/etc/hosts
#以下を追記
192.168.56.16 zabbix.menta.me
-
dev.menta.meにZabbix エージェントのインストールする。
$ yum install zabbix-agent -
zabbix_agentd.confを編集し、設定ファイルを修正。
$ vi /etc/zabbix/zabbix_agentd.conf
# 以下内容を変更
# Server=127.0.0.1
Server=192.168.56.15
# ServerActive=
ServerActive=192.168.56.15
# Hostname=Zabbix server
Hostname=dev.menta.me
- zabbix-agentサービスの起動とサービス自動起動有効化。
$ systemctl start zabbix-agent
$ systemctl enable zabbix-agent
-
Zabbixの設定から
dev.menta.meのホストを追加。 以下の内容をホストに設定。ホスト名: dev.menta.me グループ名: dev.menta.me インターフェース: 192.168.56.15 ポート: 10050 -
テンプレートで
Template_dev.menta.meを追加。 テンプレートに監視アイテムとトリガーを追加する。 -
Template_dev.menta.meに以下の監視アイテムを追加。 以下、アイテムの名前/キーを抜粋して記述。CPUロードアベレージ(1m): system.cpu.load[,avg1] CPUロードアベレージ(5m): system.cpu.load[,avg5] CPUロードアベレージ(15m): system.cpu.load[,avg15] CPU使用率(system): system.cpu.util[,system] CPU使用率(user): system.cpu.util[,user] ICMP Ping : icmpping プロセス監視(mysql): proc.num[mysqld] プロセス監視(nginx): proc.num[nginx] メモリ使用量: vm.memory.size[used] メモリ空き容量: vm.memory.size[free] メモリ総容量: vm.memory.size[total] メモリ使用率: vm.memory.size[pused] -
Template_dev.menta.meに以下の監視トリガーを追加。 以下、トリガーの名前/条件式を抜粋して記述。CPUロードアベレージの閾値超え: {Template_dev.menta.me:system.cpu.load[,avg1].last()}>2 CPU使用率 (system) High: {Template_dev.menta.me:system.cpu.util[,system].last(#3)}>=90 CPU使用率 (user) High: {Template_dev.menta.me:system.cpu.util[,user].last(#3)}>=90 Ping応答なし: {Template_dev.menta.me:icmpping.count(#5,0,eq)}>=4 プロセス監視(mysqld) 停止: {Template_dev.menta.me:proc.num[mysqld].last()}=0 プロセス監視(nginx) 停止: {Template_dev.menta.me:proc.num[nginx].last()}=0 メモリ容量の閾値超え: {Template_dev.menta.me:vm.memory.size[pused].last()}>95 -
Template_dev.menta.meに以下のディスカバリルールを追加。 DiskDiscoveryとして、ディスク容量監視のディスカバリルールを設定。名前: DiskDiscovery タイプ: Zabbixエージェント キー: vfs.fs.discovery 監視間隔: 5mアイテムのプロトタイプを追加。 以下、名前とキーを抜粋して記述。
ディスクの使用率 {#FSNAME}: vfs.fs.size[{#FSNAME},pused] ディスクの使用量 {#FSNAME}: vfs.fs.size[{#FSNAME},used] ディスクの未使用率 {#FSNAME}: vfs.fs.size[{#FSNAME},pfree] ディスクの空き容量 {#FSNAME}: vfs.fs.size[{#FSNAME},free] ディスクの総容量 {#FSNAME}: vfs.fs.size[{#FSNAME},total]トリガーのプロトタイプを追加。 名前と条件式を以下のように設定。
{#FSNAME} のディスク使用率: {Template_dev.menta.me:vfs.fs.size[{#FSNAME},pused].last()}>=95
-
Slack APIにアクセスし、
Zabbix_Slack_Notificationアプリを作成。 -
パーミッションを
calls:writeに設定。 -
個人のSlackチャンネルと連携し、アプリを追加。
-
Zabbix Server側で、メディアタイプからSlackの通知を設定。 以下のメディアタイプの内容を設定
名前: Slack bot_token: Slack APIで発行されたトークン zabbix_url: http://192.168.56.16/zabbix/ -
メディアタイプのテスト。 以下内容を設定し、slack通知のテストを実施。
channel: [slackのチャンネル] event_id: 1 -
zabbix側でユーザーを作成。 ユーザーの内容
エイリアス: Slack_Notification グループ: Zabbix_administrator パスワード: パスワードタイプの内容
タイプ: Slack 送信先: Zabbix_notification権限の内容
ユーザーの種類: 特権管理者 -
アクションの設定 Zabbix側で名前と実行条件を設定。
名前: Action_Slack_Notification
実行条件: A メンテナンス期間外
B トリガーの深刻度 以上 警告
実行内容から、Slack_NotificationをSlackメディアのみに使用するように設定。
-
dev.menta.meのディスクの容量を増やしてslackにアラート通知。
dd if=/dev/zero of=/dummy bs=10000M count=1000を入力し、ディスク容量を閾値超えまで増加。
Zabbix側でGrafanaをインストール作業を実施。
-
$ yum install fontconfigで、システムのフォントを管理するfontconfigをインストール。 -
$ wget https://dl.grafana.com/enterprise/release/grafana-enterprise-9.0.6-1.x86_64.rpmで、Grafanaをインストール。 -
$ systemctl enable grafana-serverで、自動起動設定。 -
$ systemctl start grafana-serverで、grafana-serverを起動。 -
alexanderzobnin-zabbix-appをインストール。
$ grafana-cli plugins install alexanderzobnin-zabbix-app -
Grafana連携用にZabbix側にユーザー作成。 Zabbixのユーザーの作成から、以下の内容でユーザー作成。
エイリアス: garafana 名: grafana グループ: Guestsユーザーグループの設定からグループ
Guestsの権限を指定。ホストグループ: dev.menta.me 権限: 表示のみ -
Data SourcesからZabbixを設定。 以下の内容で設定し、Save & Testを実施。
Name: Zabbix Url: http://192.168.56.16/api_jsonrpc.php Username: grafana Password: パスワード Trends: Enable




