userparameterの取得
始めまして、お世話になります。
現在proxyを通して監視を行っています。
通常のアイテム・キーによる監視は正常に取得できているのですが、UserParameterに設定した値が取得できません。
監視の為に行った設定は、エージェント側の zabbix_agentd.conf に
UserParameter=postfix.queue,/usr/bin/sudo /usr/bin/find /var/spool/postfix/active -type f|wc -l
を設定し、再起動をかけ
サーバー側から /usr/bin/zabbix_get -s ホスト名 -k postfix.queue で取得テストしようと思っているのですが
zabbix_get [18699]: Get value error: cannot resolve [ホスト名] と表示されてしまい、取得出来ません。
proxyを通している場合、proxy側にも何か設定が必要なのでしょうか?
ログを見ても何も出ていないので、原因が分からず、アドバイスを頂きたく書き込みさせて頂いた次第です。
TNK - 投稿数: 4769
zabbix_getコマンドは、どこで実行されましたか?
zabbix_getコマンドは、ZabbixサーバやZabbixプロキシとは全く連
携せずに、Zabbixエージェントに直接リクエストを投げて値を取得
します。
ですので、Proxyを利用されているのであれば、Zabbixエージェン
トの設定で、Zabbixプロキシからのリクエストを受け付けられるよ
うに設定されていると思いますので、Zabbixプロキシを稼働させて
いるサーバ上にてzabbix_getコマンドを実行する必要があります。
Zabbixプロキシを稼働させているサーバ上で、
zabbix_get -s ホスト名 -k postfix.queue
を実行してください。
DNSやhostsファイルで名前解決ができないのであれば、ホスト名で
はなく、IPアドレスを指定して実行してみてください。
arapon - 投稿数: 10
早速のご回答ありがとうございます!
エラーで返ってきていた原因は、仰るとおりhostsに登録されておらず、名前解決出来ていなかったからでした。
(監視サーバーのホストに登録していたので繋がるのかと勘違いしていました)
一応監視サーバー側でIP指定してやってみましたが、繋がりませんでした。
応答が無く、暫く経つと Timeout while executing operation でエラーがでていました。
その後にプロキシが立っているサーバーでコマンド実行しました。
(プロキシサーバーは、監視対象のサーバーと同じ所に存在していました)
zabbix_get -s 192.168.xx.xx -k postfix.queue
上記コマンドを実行したのですが、空白?と言うべきなのかわかりませんが、何も返ってきませんでした。
しかし、 zabbix_get -s localhost -k postfix.queue でコマンドを実行すると 0 が返ってきました。
0は正しい値です。
これは外部からのコマンドが実行出来ておらず、内部(localhost)では上手く実行できた という事なのでしょうか?
TNK - 投稿数: 4769
192.168.xx.xxで値が正常に返却されず、localhostで返却されるの
であれば、zabbix_agentd.conf内のServerの値が127.0.0.1になっ
ていませんか?
このServerの値に指定したIPアドレスからの要求がきた時のみエー
ジェントが値を返却するようになっています。
恐らく192.168.xx.xxは指定されていないので、空が返却されたの
だと思われます。
Proxyを利用される場合は、ServerにProxyのIPアドレスを指定して
ください。
arapon - 投稿数: 10
お返事ありがとうございます。 そして遅くなって申し訳ありません。
>Proxyを利用される場合は、ServerにProxyのIPアドレスを指定して
ください。
との事ですので、同じサーバー内にproxyと監視対象のagentがある場合は、127.0.0.1でいいのですよね?
それとも 監視サーバー(サーバーxxx)→proxy(サーバーyyy)→agent(サーバーyyy) と言った形でuserparameterを取得したい場合は
このままでは取得出来ませんかね?
arapon - 投稿数: 10
無事取得出来ました!
ありがとうございます。
そこでなのですが、userparameterでもう1つ質問がございます。
値を取得する際の値渡しと指定フィールドの値取得を同時に行いたいのですが、ZBX_NOTSUPPORTED のエラーになってしまいます。
上記行いたい内容の例としてコマンドを挙げますと
df |grep /dev/cccc/xxxx |awk '{printf($5"n")}'
①あるデバイスの使用率だけ取得したい。
②デバイスはパラメーターで受け取って、キーによって変更出来るようにしたい。
これをzabbixのagent側で
df.geter[*],df |grep $1 |awk '{printf($5"n")}'
と記述し、web管理画面のアイテムのキー登録では
①df.geter[/dev/cccc/xxxx] ②df.geter[/dev/cccc/yyyy]
とセットしました。
こうすることにより、コマンド例のように実行され、且つデバイスはキーのパラメーターに合わせて自由に変更できるかと思ったのですが
ZBX_NOTSUPPORTED で取得出来ませんでした。
df.geter[*],df |grep $1 まででしたら取得出来ます。(使用率以外のフィールドも全部取得されてしまうので駄目ですが)
多分$5が、パラメーターがセットされた場合、dfコマンドのフィールド5番目ではなく、パラメーターの5番目を探しに行ってしまい
エラーになっていると思われるのですが
パラメーターのセットと、特定フィールドの取得は共存出来ないものなのでしょうか?
質問の連続になってしまい申しわけありませんが、何卒ご教授下さい。
TNK - 投稿数: 4769
UserParameter=df.geter[*],df |grep $1 |awk '{print $$5}'
と指定してみてください。
printfではなくprintを利用し、$5を$$5とします。
改行はしなくても大丈夫です。
KAZ - 投稿数: 1085
araponさん
awkの記述をシェルスクリプト化してしまう手は使えませんか?
例えば、n.shと言う以下のファイルを作ります。
---------------------------------
#!/bin/sh
df |grep $1 |awk '{printf($5"n")}'
---------------------------------
userparameterには下記の様に書きます。
df.geter[*],n.sh $1
arapon - 投稿数: 10
なるほど、スクリプト化すれば良いのですね!
ありがとうございました。
その辺りも考えながら設定してみます、皆様いくつもの質問にご回答ありがとうございました。
また何かあった際にはよろしくお願い致します。