pg_monzでの認証設定について
はじめまして。
Zabbix 3.0でpostgresql 9.2の監視設定のため
pg_monz1.0.1を設定し監視を行っております。
postgresqlのpg_hba.confファイルで認証設定で
パスワード認証を必須の設定にすると
「psql: fe_sendauth: no password supplied」というエラーメッセージが出力され
値が取得できなくなります。
(パスワード認証が必要ないtrustだと正常に値が取得できることは確認済みです)
https://qiita.com/biatunky/items/ae47c0871edd420bd67a
上記のURLを参考にzabbixユーザーのホームディレクトリに
.pgpassを配置してみたのですが
エラーメッセージも変わらず、取得できない状況です。
ログインできるほかのユーザーのホームディレクトリにて
.pgpassを配置してpsqlコマンドを実行した場合、
パスワード認証をスキップできたため、.pgpassの内容は間違っていないと思われます。
怪しいと思っている点としては
・zabbix_agentd.confで
Allow rootの値を1としているためrootユーザーでpsqlコマンドを実行している?
(rootのホームディレクトリにも.pgpassを配置しましたが、値はとれず。。。)
・/etc/passwdファイルでzabbixユーザーのホームディレクトリを確認すると
/var/lib/zabbixとなっているのですが、ディレクトリ自体がない。
(そのため、/var/lib/zabbixを自身で作成し、.pgpassを配置しました。)
※ちなみに取得したい値は
postgresqlの接続数(Connections)の値のみです。
どなたか解決策をご教示いただけますと幸いです。
よろしくお願い致します。
jiro0904 - 投稿数: 6
OSのバージョンの記載を失念しておりました。
OSはRHFL 7.5です。
ほかに情報が必要であればご指示いただけますと幸いです。
何卒よろしくお願い致します。
jiro0904 - 投稿数: 6
OSのバージョンの記載を失念しておりました。
OSはRHFL 7.5です。
ほかに情報が必要であればご指示いただけますと幸いです。
何卒よろしくお願い致します。
jusco0103 - 投稿数: 28
MySQLでの話になりますが、UserParameterのSQLコマンドに、パスワードが入ったファイルのディレクトリを"HOME="にて指定しています。
<例>
UserParameter=mysql.conn.crt,echo "show processlist;" | HOME=/var/lib/zabbix mysql -N | wc -l
あまり参考にならないかもしれませんが、一助になればと思い取り急ぎご連絡します。
jiro0904 - 投稿数: 6
ありがとうございます。
取り急ぎUserParameterのSQLコマンドの前にHOME=を試してみたのですが取得できませんでした。
下記、実際のUserParameterです。
UserParameter=psql.db_connections[*],HOME="zabbixのホームディレクトリ" psql -h $1 -p $2 -U $3 -d $4 -t -c "select numbackends from pg_stat_database where datname = '$5'"
構文エラー等にはならなかったので
コマンド自体は実行されたようですが、相変わらずパスワード認証ではじかれます。。。
HOME=についてもう少し調べて確認してみます。
情報いただきありがとうございました。
heya - 投稿数: 319
http://pg-monz.github.io/pg_monz/
ここを見る限り、pg_monz はパスワード付きのユーザーにも対応しているみたいですよ。
https://qiita.com/biatunky/items/ae47c0871edd420bd67a
これは3年近く前の記事なので、それ以降に実装されたのかもしれません。
というわけで、 .pgpass をホームディレクトリに置くのではなく、pg_monz のインストール手順にある通り、pgsql_funcs.conf に export PGPASSFILE=pgpassのパス を書く、という手順でやってみてはどうでしょうか。
jiro0904 - 投稿数: 6
ありがとうございます。
pg_monz ver 2.0であれば
ご教示いただいたとおりパスワード認証に対応しているのですが
今回pg_monz ver 1.0.1で対応したく考えております。
理由と致しましてはver 2.0以降だと
監視対象のサーバーにpgpool-II、Zabbix Senderをインストールする必要があり
現環境ではインストールすることが厳しいためです。
とはいえ、pg_monz ver 1.0.1で値が取得できないのであれば
ver 2.0以降で対応するしかないため、ver 2.0での対応も検討させていただきます。
情報ありがとうございました。
heya - 投稿数: 319
.pgpass を使うしか無いわけですね。
>・zabbix_agentd.confで
> Allow rootの値を1としているためrootユーザーでpsqlコマンドを実行している?
>(rootのホームディレクトリにも.pgpassを配置しましたが、値はとれず。。。)
Allow root は、root で起動しようとしたときにそのまま root で動かすか、という設定なので、最初から root 以外で起動した場合はそのユーザーで動くことになります。実際にどのユーザーで動いているかは、 ps aux で確認してください。
で、root で動いていると仮定しての話ですが、/root/.pgpass に正しく書いてあって権限も正しければいけるはずです。
.pgpass の権限はどうなっていますか?所有者が root で rw------- となっていますか?
https://www.postgresql.jp/document/9.2/html/libpq-pgpass.html
>Unixシステムにおいて、.pgpassの権限はグループ、他者へのアクセスを
>すべて拒否しなければなりません。 これはchmod 0600 ~/.pgpassといった
>コマンドによって行います。 権限をこれよりも緩くすると、このファイルは無視されます。
jiro0904 - 投稿数: 6
ありがとうございます。
pg_monz ver 2.0であれば
ご教示いただいたとおりパスワード認証に対応しているのですが
今回pg_monz ver 1.0.1で対応したく考えております。
理由と致しましてはver 2.0以降だと
監視対象のサーバーにpgpool-II、Zabbix Senderをインストールする必要があり
現環境ではインストールすることが厳しいためです。
とはいえ、pg_monz ver 1.0.1で値が取得できないのであれば
ver 2.0以降で対応するしかないため、ver 2.0での対応も検討させていただきます。
情報ありがとうございました。