Zabbix4.4でpg_monzを使用してPostgreSQL11を監視する(構築メモ)
はじめに
Zabbix4.4+pg_monzを使用して、PostgreSQL11を監視する環境を構築します。
使用する環境は以下のとおりです。
- CentOS 7.5(firewalld, SELinuxは無効化済み)
- PostgreSQL 11.7(同じサーバにインストール済み)
- Zabbix4.4 + pg_monz2.2
最後に書いていますが、現状一部項目が監視できていません(後で調査するつもり)
Zabbix4.4のインストール
まずはZabbix4.4.1をインストールしていきます。
# wget http://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm
# rpm -ivh zabbix-release-4.4-1.el7.noarch.rpm
# yum install -y zabbix-agent zabbix-server-pgsql zabbix-get
# yum install -y zabbix-web-japanese zabbix-web-pgsql
# yum install -y zabbix-sender
PHP側のタイムゾーンを変える
vi /etc/httpd/conf.d/zabbix.conf
php_value date.timezone "Asia/Tokyo"
PostgreSQL11にZabbix用のデータベースを作成します。
# su - postgres
$ createuser --pwprompt zabbix
$ createdb -O zabbix -E UTF8 zabbix
pg_hba.confを修正して、zabbixユーザで接続できるように設定する。
$ vi /data/pg_hba.conf
local zabbix zabbix md5
host zabbix zabbix 127.0.0.1/32 md5
※localはいらなかったかも(TODO:暇があったら確認する)
host postgres postgres 127.0.0.1/32 md5
$ pg_ctl restart
以下のコマンドを実行し、zabbixデータベースにテーブル・データを作成します。
# zcat /usr/share/doc/zabbix-server-pgsql-4.4.1/create.sql.gz | psql -U zabbix zabbix -W
設定が終わったところで、各種サービスの自動起動設定と起動を行います。
systemctl start zabbix-server
systemctl start zabbix-agent
systemctl start httpd
systemctl enable zabbix-server
systemctl enable zabbix-agent
systemctl enable httpd
Zabbixへのログインまで
ブラウザで以下のアドレスにアクセスします。
「Welcome」ページはそのまま「Next step」を押して次の画面へ移ります。
前提条件が全てOKになっていることを確認して画面へ移ります。
Zabbixのデータの保存先を指定します。
Zabbixサーバの情報ですが、特に何も変更せずに次へ進みます。
インストールのサマリが表示されます。そのまま次へ進みます。
問題なければインストール完了しますので、「Finish」を押すとログイン画面へ移動します。
ログイン画面では、「Admin/zabbix」でログインします。
画面からは色々と設定する項目はありますが、まずは言語を日本語に変更しておきます。
Zabbixの設定
Zabbixのデータの保存先(PostgreSQL)を設定します。
# vi /etc/zabbix/zabbix_server.conf
DBHost=127.0.0.1
DBPassword=zabbix
DBPort=5432
pg_monzのtemplateインストール
以下の公式サイトからpg_monzのモジュール(zipファイル)をダウンロードします。
zipファイル中の以下のディレクトリに各種templateファイルが保存されています。
- pg_monz-2.2\pg_monz\template
今回はPostgreSQL 1台構成なので以下のtemplateファイルをZabbixのTemplate画面からインポートします。
- Template_App_PostgreSQL.xml ※SR、pgpool-IIは今回未使用
なぜかインポートで色々エラーが出たので、templateファイルを修正(screens削除等)を実施してインポートしました(原因不明)。
pg_monzのインストール
先ほどダウンロードしたzipファイルをサーバへ格納し、インストールのため以下のコマンドを実行します。
# unzip pg_monz-2.2.zip
# cd pg_monz-2.2/pg_monz/
# cp usr-local-etc/* /usr/local/etc
# cp usr-local-bin/* /usr/local/bin
pg_monzの設定ファイルをコピーします。この設定ファイルは変更する必要ありません。
# cp /tmp/pg_monz-2.2/pg_monz/zabbix_agentd.d/userparameter_pgsql.conf /etc/zabbix/zabbix_agentd.d/
PostgreSQLの設定変更
PostgreSQLのログはデフォルトで"600"に設定されており、Zabbixユーザからログが見れないので以下のようにpostgresql.confの設定を変更します。変更後はPostgreSQLを再起動します。
$ vi /data/postgresql.conf
log_file_mode = 0644
# chmod 750 /data
# chmod 750 /data/log
# vi /etc/group
postgres:x:26:zabbix
# chmod 644 /data/log/postgresql-*.log
$ pg_ctl restart
Zabbix-agentがPostgreSQLへ接続できるように設定
PostgreSQLへ接続するときにパスワードが必要な場合、pgsql_funcs.confに以下の一行を追加します。
# vi /usr/local/etc/pgsql_funcs.conf
export PGPASSFILE=/usr/local/etc/pgpass
次にパスワードを格納するファイル(/usr/local/etc/pgpass)を作成します。
# vi /usr/local/etc/pgpass
127.0.0.1:5432:*:postgres:パスワード
Zabbixエージェントの起動ユーザのみに権限を付与します。
# chown zabbix:zabbix /usr/local/etc/pgpass
# chmod 600 /usr/local/etc/pgpass
zabbix-agentのログにbcコマンドが見つからないとエラーが出たので、bcをインストールしました。
# yum install -y bc
zabbix-agentを再起動する。
# systemctl restart zabbix-agent.service
Zabbixの画面からTemplateのマクロ設定を変更
Zabbixの画面からマクロの{$PGLOGDIR}の値を以下のように実際のログディレクトリ(私の環境では/data/log)に変更する。
PostgreSQLサーバにtemplateを適用
PostgreSQLサーバにtemplateを適用して監視対象になるように設定します。
以下のようにサーバに「Template App PostgreSQL」がリンクするようにしています。
これで以下のように監視できるようになります。
設定ファイル
Zabbix、pg_monzの設定ファイの一覧は以下のとおりです。
Zabbix server
/etc/zabbix/zabbix_server.confZabbix agent
/etc/zabbix/zabbix_agentd.confpg_monz
/usr/local/etc/pgsql_funcs.conf
/etc/zabbix/zabbix_agentd.d/userparameter_pgsql.conf
/usr/local/etc/pgpass
ログファイル
- /var/log/zabbix/zabbix_agentd.log
- /var/log/zabbix/zabbix_server.log
最後に(終わっていない)
上述のように設定したのですが、一部のエラーが解消されませんでした。
zabbix_server.logに出力されていたエラーは以下のようになります。一部の情報が表示されないのですが、まずは一旦完了し後日調べてみるつもりです。
21919:20191103:191903.740 error reason for "Zabbix server:pgsql.get.pg.transactions[{$PGSCRIPTDIR},{$PGSCRIPT_CONFDIR},{HOST.HOST},{$ZABBIX_AGENTD_CONF}]" changed: Value "Response from "127.0.0.1:10051": "processed: 8; failed: 0; total: 8; seconds spent: 0.000099"
sent: 8; skipped: 0; total: 8" of type "string" is not suitable for value type "Numeric (unsigned)"
21916:20191103:191905.748 error reason for "Zabbix server:pgsql.get.pg.slow_query[{$PGSCRIPTDIR},{$PGSCRIPT_CONFDIR},{HOST.HOST},{$ZABBIX_AGENTD_CONF},{$PGSLOWQUERY_TIME_THRESHOLD}]" changed: Value "Response from "127.0.0.1:10051": "processed: 3; failed: 0; total: 3; seconds spent: 0.000052"
sent: 3; skipped: 0; total: 3" of type "string" is not suitable for value type "Numeric (unsigned)"
参考
Author And Source
この問題について(Zabbix4.4でpg_monzを使用してPostgreSQL11を監視する(構築メモ)), 我々は、より多くの情報をここで見つけました https://qiita.com/mkyz08/items/0188092a3d60f634207e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .