2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Zabbix4.4でpg_monzを使用してPostgreSQL11を監視する(構築メモ)

Posted at

はじめに

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」を押して次の画面へ移ります。

image.png

前提条件が全てOKになっていることを確認して画面へ移ります。

image.png

Zabbixのデータの保存先を指定します。

image.png

Zabbixサーバの情報ですが、特に何も変更せずに次へ進みます。

image.png

インストールのサマリが表示されます。そのまま次へ進みます。

image.png

問題なければインストール完了しますので、「Finish」を押すとログイン画面へ移動します。

image.png

ログイン画面では、「Admin/zabbix」でログインします。

image.png

画面からは色々と設定する項目はありますが、まずは言語を日本語に変更しておきます。

image.png

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は今回未使用

image.png

image.png

なぜかインポートで色々エラーが出たので、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)に変更する。

image.png

PostgreSQLサーバにtemplateを適用

PostgreSQLサーバにtemplateを適用して監視対象になるように設定します。
以下のようにサーバに「Template App PostgreSQL」がリンクするようにしています。

image.png

これで以下のように監視できるようになります。

image.png

設定ファイル

Zabbix、pg_monzの設定ファイの一覧は以下のとおりです。

  • Zabbix server
    /etc/zabbix/zabbix_server.conf

  • Zabbix agent
    /etc/zabbix/zabbix_agentd.conf

  • pg_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)"

参考

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?