Abfrage zum Anzeigen von Host-Vorlagen-Beziehungen in Zabbix
Diese Abfrage hilft beim Abrufen von Daten aus Zabbix-Tabellen, um anzuzeigen, welche Hosts bestimmte Vorlagen verwenden. Die Herausforderung liegt darin, dass sowohl Hosts als auch Vorlagen in derselben Tabelle gespeichert sind, gemischt mit IDs wie 11813 für Hosts und 11815 für Vorlagen.
Um dieses Problem zu beheben, führen wir die Tabelle hosts_templates ein, die die Verbindung herstellt zwischen Hosts und Vorlagen über die drei Spalten: host_template ID, hostid und templateid.
Die Hosts-Tabelle Enthält wichtige Felder wie Host-ID und Name. Obwohl die Hosts-Tabelle über eine TemplateID-Spalte verfügt, wird diese nicht verwendet.
In der Hosts_templates-Tabelle können wir bestimmen, welche Hosts welche Vorlagen verwenden. Die Herausforderung entsteht jedoch, wenn wir IDs in entsprechende Namen übersetzen müssen.
Vorherige Versuche
Die folgenden ersten Abfragen zielten darauf ab, Teillösungen bereitzustellen, stießen jedoch auf Duplizierungsprobleme:
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;
Lösung
Die Lösung erfordert zwei Joins, jeweils mit unterschiedlichen Tabellenaliasen:
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
In dieser Abfrage wird die Tabelle „hosts_template“ mit dem Alias „t“ versehen, während die Tabelle „hosts“ mit dem Alias „h1“ und „h2“ versehen wird, um zwischen Hostnamen und Vorlagennamen zu unterscheiden.
Das obige ist der detaillierte Inhalt vonWie kann ich Zabbix abfragen, um Host-Vorlage-Beziehungen anzuzeigen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!