postgresqlの監視について
毎度フォーラムにはお世話になっています。
現在ソースからインストールしたZabbix-1.8.1でサービスサーバの
postgresqlの監視を行っています。
監視項目はプロセス数・ログ・使用中のメモリ量の3つですが、そのうちの
ログとメモリ量について質問させて頂きたい点があります。
1:データベースに貯めるログの量
普通のログ監視と同じ容量でpostgresqlのログの監視を行っています。
監視自体は普通に出来ていて、ログも取り込めているのですが、概要から
対象ホストのログ監視のアイテムを選んでヒストリ→値→プレーンテキストで
取り込まれたログを全件表示してみようと思ったら、本来取り込まれている筈の
ログが表示されませんでした。
アイテムでヒストリの保存期間はデフォルトの90日のままなので、3か月分は
保存されると思ったのですが、他にも保存に関する設定等は有りますでしょうか?
なお、postgresqlのログは1日に8万行近く出力されています。
2.postgresqlが使用しているメモリについて
postgresqlのメモリ使用量を proc.mem[postmaster] で
取得しています。
Total Memoryが2GBのDBサーバで上記のアイテムでメモリ使用量を
取得したところ、3.7GBという値がかえってきました。
他にも幾つかのサーバで同様にTotal Memoryを遥かに超える値を
取得しているところがあります。
1.6から1.8にバージョンアップする時に、ディスク容量監視で
乗数の変更トラップがありましたが、これもその類でしょうか?
以上よろしくお願い致します。
TNK - 投稿数: 4720
の部分だけ書かせて頂きます。
実メモリだけではなく、仮想メモリも利用している状態なのではないでしょうか。
Linuxの場合ですが、プロセスのメモリ使用量は、該当するプロセスのprocファイルシステムのstatus内にある仮想メモリサイズ(VmSize)の値を参照しているようです。
つまり、仮想メモリも合わせてどれだけのメモリを利用しているかを取得しているのだと思います。
# procファイルシステムに関しては、man procで確認してください。
該当部分と思われるLinux用のソース(.../src/libs/zbxsysinfo/linux/proc.c)を比較しても、1.6.8と1.8.1ではタブや改行程度の違いしかありませんので、これはトラップではないと思います。
Linuxであればps auxを利用するかprocファイルで該当するプロセスの状態情報を参照するなどして、再度、プロセスが利用しているメモリサイズを確認されてみてはいかがでしょうか?
kodai - 投稿数: 1341
アイテム -> ヒストリ -> 最新500の値
を選択しても何も出てこないでしょうか?
8万行となると結構な量ですね。
Zabbixのデータベースのパフォーマンスが足りていないと
ログの取り込みが追いつかないこともありますので、
そのあたりも確認してみてください。
TNKさんの回答にもある通り、Zabbixのメモリ使用量は仮想メモリを見ています。
具体的には、ps auxなどと実行して出力される結果のうち、
<code>USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
apache 3205 0.1 2.2 275372 23948 ? S Apr09 0:44 /usr/sbin/httpd
apache 11887 0.1 2.4 277420 26112 ? S Apr09 0:48 /usr/sbin/httpd
apache 12044 0.1 1.9 272288 20356 ? S Apr09 0:38 /usr/sbin/httpd
root 16172 0.0 0.9 259936 10204 ? Ss Feb21 0:07 /usr/sbin/httpd
apache 21937 0.0 2.9 281516 30412 ? S Apr07 1:07 /usr/sbin/httpd
apache 23805 0.0 2.8 281516 30376 ? S Apr08 0:58 /usr/sbin/httpd</code>
VSZ = 仮想メモり量
RSS = 物理メモリ量
になります。Zabbixのproc.mem[]で出力される結果はVSZの方です。
ちなみに、Linuxの場合プロセスが起動したときに余裕をもって大きめの仮想メモリを割り当てるように動作しますので、
VSZの値は実際に使用しているメモリ量よりかなり大きくなることが多々あります。
MINTIA - 投稿数: 40
>TNK様,kodai様
2.postgresqlが使用しているメモリについて
なるほど、仮想メモリを取得していたのですね。
値が実メモリと大きく違ったので、不安に思いましたが
特にトラップ等ではないみたいなので安心しました。
ご解答有難うございます!
1:データベースに貯めるログの量
最新500の値を選択した場合、きちんと最新の500個の値が出ています。
ただ取り込んだ全てのログを表示したいと思った時に、500行以上有るので
プレーンテキストを選択したのですが、本来取り込まれている筈のログが
全て表示されませんでした。
ヒストリの保存期間をログのサイズや行数ではなく、期間(90日)で
指定しているので、仮に取り込む行数が多くても保存期間の分は
保存されていなければおかしいかなと。
管理画面上では特にそういう項目は無かったと思いますが、どこかで
保存する最大容量などを指定されてたりしますでしょうか?