net.tcp.serviceでのデータ取得
お世話になります。
シンプルチェックのnet.tcp.serviceについて、初歩的で申し訳ありませんが質問させてください。
net.tcp.serviceを用いて監視を行おうとしております。
監視対象はvCenter Server Applianceです。
しかし、データが取得が上手くいっているポートとそうでないポートがあります。
「ss -tln」実行結果: LISTEN *:(ポート番号) *:*
Zabbixでのアイテムキー: net.tcp.service[tcp,,(ポート番号)]
取得データ: 1
「ss -tln」実行結果: LISTEN 127.0.0.1:(ポート番号) *:*
Zabbixでのアイテムキー: net.tcp.service[tcp,127.0.0.1,(ポート番号)]
取得データ: 0
サービスは起動している筈なので取得データは1になると思うのですが、後者が0と取得されます。
アイテムキーの第2引数にIP(今回の場合は127.0.0.1)を入れればデータが取得できるかと思ったのですが、上手く行きませんでした。
対処法があればご教示いただきたく思います。
何卒よろしくお願いいたします。
Zabbixバージョン: 4.0.14
vCenter Server Applianceバージョン: 6.7u1
TNK - 投稿数: 4755
どのような構成で使用されているのかがよくわかりません。
「ss -tln」を実行したのは、どのサーバー上ですか?
そして、net.tcp.service[]のアイテムを設定されているようです
が、どのホストにどのようなアイテムを登録されているのかより詳
細にお教えください。
Chanco - 投稿数: 2
情報不足申し訳ありません。
補足させていただきます。
*監視対象サーバ(vCenterサーバ)にて、下記コマンドを実施
root@(監視対象サーバホスト名) [ ~ ]# ss -tlns
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 200 127.0.0.1:22100 *:*
LISTEN 0 128 *:8084 *:*
LISTEN 0 200 *:7444 *:*
・・・
①コマンド実施後、Local Addressが「*:(ポート番号)」になっているポートに対して、Zabbixにて下記のようにアイテム登録。
ホスト:(監視対象サーバホスト名)
アイテム名:(ポート番号)_check
タイプ:シンプルチェック
キー:net.tcp.service[tcp,,(ポート番号)]
→取得できた数値:1
②コマンド実施後、Local Addressが「127.0.0.1:(ポート番号)」になっているポートに対して、Zabbixにて下記のようにアイテム登録。
ホスト:(監視対象サーバホスト名)
アイテム名:(ポート番号)_check
タイプ:シンプルチェック
キー:net.tcp.service[tcp,127.0.0.1,(ポート番号)]
→取得できた数値:0
相談したかったのは、①のパターンだと無事に1が取得できるが、②のパターンだとサービス起動しているはずが0を取得していしまう、という件です。
ただこの後自分でも調べて、127.0.0.1はループバックアドレスなので、②のアイテム登録だとZabbixサーバ自身のポートを調べに行ってしまい、監視対象サーバのデータは取れるはずないと納得いたしました。
Local Addressが「127.0.0.1:(ポート番号)」となっているポートを監視するためにはどうすればいいでしょうか。
また、追加の質問となってしまい恐縮ですが、本日確認したところ①のパターンでも現在1ではなく0が取得されています・・・。
最初の質問時点では1だったのに、途中で0になってしまった原因を調査したいのですが、知恵をお借りできないでしょうか。
上記コマンド(ss -tlns)は監視対象サーバにて再度実行しておりますが、同じ結果が返ってきております。
(State: Listen, Local Address: *:(ポート番号))
kaeru - 投稿数: 264
>Chanco様
ZabbixサーバとvCenterサーバは別ということでしょうか?
であれば、127.0.0.1でしか待ち受けしていないポートにZabbixサーバから接続は出来ません。
また、①についても詳細状況が不明ですが、
Zabbixサーバからtelnet (対象サーバ) (ポート番号)で接続は可能でしょうか?
まずこれが繋がらなければZabbixからのシンプルチェックによるポート監視は出来ないかと思います。
(接続できない原因としては経路上のファイヤーウォールや、アプリ側の設定ファイルによる制御等が考えられます。)
別の手法としては、vCenterサーバにZabbixAgentがインストールできるのであれば、
net.tcp.portを使用する手もあるかと思います。
https://www.zabbix.com/documentation/2.2/jp/manual/config/items/itemtype...
また、net.tcp.servicとnet.tcp.portについては過去フォーラムより以下のような違いがあるようです。
http://www.zabbix.jp/node/2524
Zabbixサーバからのポート接続も許可出来ないし、vCenterサーバにZabbixAgentも入れられない…という場合、
vCenterサーバにてcronで定期的にポートの接続チェックを行い、
結果をZabbixSenderでZabbixサーバに送るシェルを組むといった手も使えるかと思います。