リモートコマンドでの文字数制限

お世話になります。

下記の質問を既存スレッドにあげてしまいました。
kodai様のご指摘により新規スレッドを作成させていただきます。

============================================================

私もtrapを受信してアクションを発生させようとしておりますが
文字数制限(ではないかと予測)ではまっております。

zabbix 1.4.5でsnmptrapdでtrapを受取りアクションとして
メール送信とリモートコマンドを実行しようとした時
zabbix_senderの-oオプションで指定したテキスト文字列が
141バイトを超えた場合、リモートコマンドが実行されない
という現象が発生しております。

リモートコマンドで指定している文字列全体での制限かもしれませんが・・・。

アイテムをchar指定とした場合、マニュアルによると255バイトまでという指定がありましたが、これとは別問題ではないかと考えております。

リモートコマンドの制限があるのでしょうか?
ご存じの方返信を宜しくお願いいたします。

============================================================

上記質問に対するkodai様からのご返信内容

============================================================
whinemosさん、こんにちは。

内容が異なる質問の場合は、別スレッドを立てるようにお願いします。回答が入れ子になってしい、どの質問に対する回答かが分かりにくくなってしまいますので。

まずはリモートコマンドの文字数制限から追いかけていくのが解決の近道だと思います。以下のことを試してみて頂けるでしょうか。

1. 他のアイテムで同じリモートコマンドを実行した場合はどうなるか
2. zabbix_server.conf、zabbix_agentd.confでDebugLevel=4を設定してログを見てみる

============================================================

コメント表示オプション

お好みのコメント表示方法を選び「設定の保存」をクリックすると変更が反映されます。
ユーザー whinemos の写真

kodai様

ご返信ありがとうございます。
ご教示いただいた通り
DebugLevel=4にて再現してみたところ下記の通りとなりました。

ログを確認したところ、正常にリモートコマンドが実行されている場合は、リモートコマンド実行時、最終的に

system.run[(リモートコマンド),nowait]

の様に出力されているのですが、リモートコマンド全体の文字列が
長く「system.run・・・」から数えて全体で255バイトを超える場合、255を超える部分が消えてしまっています。

やはり文字列長の問題のように考えられるのですが
いかがでしょうか?

ユーザー kodai の写真

こんにちは。別スレッドにして頂いてありがとうございます。

やはりリモートコマンドの文字数制限に引っかかっているようですね。

エージェント側に実行したいコマンドを書いたスクリプトを置いて、リモートコマンドではそのスクリプトを実行するだけの設定にすることはできないでしょうか?

ZABBIXサーバのソースを修正して使用可能な文字数を増やしてしまうことも可能ですが、再コンパイルが必要になります。

ユーザー whinemos の写真

お世話になります。

kodaiさんは書きました:

エージェント側に実行したいコマンドを書いたスクリプトを置いて、リモートコマンドではそのスクリプトを実行するだけの設定にすることはできないでしょうか?

はい。仰る通りなのですが、実は動的に変動する文字列を引き渡す要件があるため上記方法は難しいかと思います。
引数でたくさん渡すのはいけてないので自身も止めたいのですが・・・。

文字列全てを渡す必要なないため、現在暫定策として実装している
文字列の切り落としにて対応可能です。

ありがとうございました。