Zabbix でホストとテンプレートの関係を表示するクエリ
このクエリは、Zabbix テーブルからデータを取得して、どのホストが特定のテンプレートを使用しているかを示すのに役立ちます。課題は、ホストとテンプレートの両方が同じテーブルに格納され、ホストの場合は 11813、テンプレートの場合は 11815 などの ID が混在しているという事実にあります。
これに対処するために、接続を確立する hosts_templates テーブルを導入します。 host_template ID、hostid、templateid の 3 つの列を通じて、ホストとテンプレートの間の情報を確認します。
hosts テーブルには、ホスト ID や名前などの重要なフィールドが含まれています。 hosts テーブルには templateid 列がありますが、使用されません。
hosts_templates テーブルでは、どのホストがどのテンプレートを使用するかを決定できます。ただし、ID を対応する名前に変換する必要がある場合に問題が発生します。
以前の試行
次の最初のクエリは部分的な解決策を提供することを目的としていましたが、重複が発生しました。問題:
select name, name from hosts_templates inner join hosts on hosts_templates.hostid = hosts.hostid; select name, name from hosts_templates inner join hosts on hosts_templates.templateid = hosts.hostid;
解決策
解決策には、それぞれ異なるテーブル エイリアスを持つ 2 つの結合が必要です:
SELECT h1.name as host_name, h2.name AS template_name FROM hosts_template AS t JOIN hosts AS h1 ON t.hostid = h1.hostid JOIN hosts AS h2 ON t.hosttemplateid = h2.hostid
このクエリでは、 hosts_template テーブルには t というエイリアスが付けられ、hosts テーブルには h1 と h2 というエイリアスが付けられ、区別されます。ホスト名とテンプレート名。
以上がZabbix にクエリを実行してホストとテンプレートの関係を表示するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。