Abrufen des Verlaufs vom Zabbix-Server in Java

Ich habe den Code geschrieben, um den Verlauf von Elementen auf dem Zabbix-Server in Java aufzunehmen und anzuzeigen. Dieses Mal habe ich beschlossen, die Geschichte der Ortszeit zu extrahieren, die am einfachsten zu verstehen ist.

Was vorzubereiten?

https://github.com/hengyunabc/zabbix-api Elemente zum Debuggen

Dinge zu beginnen

Stellen Sie eine Verbindung zur API her, um die Version anzuzeigen.

Main.java


		DefaultZabbixApi ZabbixAPI = new DefaultZabbixApi("http://[Host-IP]/zabbix/api_jsonrpc.php");
		ZabbixAPI.init();//Initialisieren
		System.out.println(ZabbixAPI.apiVersion());//Versionsanzeige

Dann melden Sie sich an.

Main.java


	    boolean login = ZabbixAPI.login("name", "password");
		System.err.println("login:" + login);

Wenn die Anmeldung erfolgreich ist, wird login: true angezeigt. Von hier aus können Sie die Funktionen der Zabbix-API nutzen.

Quellcode

Rufen Sie vor dem Abrufen des Verlaufs die Element-ID mit item.get ab.

Main.java


        //Anfrage
		JSONObject filter = new JSONObject();
		filter.put("key_", new String[]{"system.localtime"});//Artikelschlüssel
		filter.put("name", new String[]{"myitem"});//Artikelname
		Request getRequest = RequestBuilder.newBuilder().method("item.get").paramEntry("filter", filter).build();
       //Antwort
		JSONObject getResponse = ZabbixAPI.call(getRequest);
		String itemid = getResponse.getJSONArray("result").getJSONObject(0).getString("itemid");
		String name = getResponse.getJSONArray("result").getJSONObject(0).getString("name");

Der Name des Elements ist auch in der Antwort enthalten, um zu bestätigen, dass die richtigen Daten erhalten wurden.

Als nächstes erhalten Sie die Geschichte.

Main.java


		Date date = new Date();
		Timestamp now = new Timestamp(date.getTime()/1000L);//time_In bis durch Unix-Zeitstempel angeben
       //iteids:Itemid-Spezifikationsverlauf:Geben Sie das Sortierfeld für den Datentyp an:Geben Sie den Sortierer für Sortierkriterien an:Aufsteigende oder absteigende Zeit_till:Daten bis zur angegebenen Zeit anzeigen
		getRequest = RequestBuilder.newBuilder().method("history.get")
				.paramEntry("itemids", itemid).paramEntry("history", 3)
				.paramEntry("sortfield", "clock").paramEntry("sortorder", "DESC")
				.paramEntry("time_till", now).build();
		getResponse = ZabbixAPI.call(getRequest);
		for(int i = 0;i < getResponse.getJSONArray("result").size();i++) {
			String history = getResponse.getJSONArray("result").getJSONObject(i).getString("value");//Sie können es mit Int-Typ nehmen
			System.out.println(new Timestamp(Integer.parseInt(history) * 1000L));//Konvertieren Sie den Unix-Zeitstempel in den Java-Zeitstempel
		}

Ganzer Code

Main.java


public class Main {
	public void start() {
		DefaultZabbixApi ZabbixAPI = new DefaultZabbixApi("http://[Host-IP]/zabbix/api_jsonrpc.php");
		ZabbixAPI.init();
		System.out.println(ZabbixAPI.apiVersion());
		
		boolean login = ZabbixAPI.login("name", "password");
		System.err.println("login:" + login);

		JSONObject filter = new JSONObject();
		filter.put("key_", new String[]{"system.localtime"});
		filter.put("name", new String[]{"myitem"});
		Request getRequest = RequestBuilder.newBuilder().method("item.get").paramEntry("filter", filter).build();
		JSONObject getResponse = ZabbixAPI.call(getRequest);
		String itemid = getResponse.getJSONArray("result").getJSONObject(0).getString("itemid");
		String name = getResponse.getJSONArray("result").getJSONObject(0).getString("name");
		
		Date date = new Date();
		Timestamp now = new Timestamp(date.getTime()/1000L);//time_In bis durch Unix-Zeitstempel angeben
		getRequest = RequestBuilder.newBuilder().method("history.get")
				.paramEntry("itemids", itemid).paramEntry("history", 3)
				.paramEntry("sortfield", "clock").paramEntry("sortorder", "DESC")
				.paramEntry("time_till", now).build();
		getResponse = ZabbixAPI.call(getRequest);
		for(int i = 0;i < getResponse.getJSONArray("result").size();i++) {
			String history = getResponse.getJSONArray("result").getJSONObject(i).getString("value");
			long time = getResponse.getJSONArray("result").getJSONObject(i).getLong("clock");
			System.out.println(new Timestamp(Integer.parseInt(history) * 1000L));//Konvertieren Sie den Unix-Zeitstempel in den Java-Zeitstempel
		}
	}
	public static void main(String[] args) {
		Main m = new Main();
		m.start();
	}
}

Zuerst habe ich es in der Sprache Go geschrieben, um zu verstehen, wie die API verwendet wird und wie es funktioniert, und dann in Java geschrieben, aber da das JSON-Protokoll festgelegt wurde, musste der Code selbst nicht so lang sein. Ich werde dies ab dem Punkt schreiben, an dem JSON mit httpclient ausgelöst wird.

https://www.zabbix.com/documentation/2.2/manual/api Eine Liste der API-Funktionen finden Sie hier. Wenn Sie also andere Funktionen verwenden möchten, lesen Sie bitte diese.

Recommended Posts

Abrufen des Verlaufs vom Zabbix-Server in Java
Zabbix API in Java
So erhalten Sie eine Klasse von Element in Java
Holen Sie sich Unixtime (Sekunden) von ZonedDateTime in Scala / Java
[Java] KFunction von Method / Constructor in Java abrufen [Kotlin]
Holen Sie sich EXIF-Informationen in Java
Java-Geschichte in dieser Welt
[Java] KClass in Java herunterladen [Kotlin]
[Android-Entwicklung] Holen Sie sich mit Java Bilder vom Server und legen Sie sie in ImageView fest! !!
JSON in Java und Jackson Teil 1 Gibt JSON vom Server zurück
Holen Sie sich Wettervorhersagen von Watson Weather Company Data mit einfachem Java
Ruft Attribute und Werte aus einer XML-Datei in Java ab
Holen Sie sich mit Java eine nicht leere Sammlung aus einem optionalen Stream
Land von IP-Adresse abrufen (Java)
Holen Sie sich null-sichere Map-Werte in Java
Bleiben Sie in einem Java Primer stecken
[Java] Abrufen von Daten aus der Datenbank mithilfe des Singleton-Dienstes in Spring (Boot)
Holen Sie sich "2-4, 7, 9" aus [4, 7, 9, 2, 3]
Lernen Sie Deep Learning von Grund auf in Java.
Holen Sie sich das Ergebnis von POST in Java
Rufen Sie Java-Methoden aus JavaScript auf, das in Java ausgeführt wird
OCR in Java (Zeichenerkennung aus Bildern)
Abrufen von Anruferinformationen aus dem Stack-Trace (Java)
Kick ShellScript auf dem Server von Java
Schlüssel vom Wert in Java Map umkehren
So erhalten Sie das Datum mit Java
Holen Sie sich Wettervorhersage von Open Weather Map with Rails
Java-Methodenaufruf von RPG (Methodenaufruf in eigener Klasse)
Migrieren Sie von Java zu Server Side Kotlin + Spring-Boot
Änderungen in Java 11
Janken in Java
Textextraktion in Java aus PDF mit pdfbox-2.0.8
Erfassen und speichern Sie die Selen-Installation in Java
Bibliothek "OSHI" zum Erfassen von Systeminformationen mit Java
[Java] Ruft mehrere Werte von einem Rückgabewert ab
[Java] Ruft Werte zufällig aus einem Array ab
[Deep Learning von Grund auf neu] in Java 3. Neuronales Netzwerk
Bis Sie Zabbix Server mit Docker-Compose starten und Informationen von anderen Hosts erhalten
Umfangsrate in Java
Minecraft BE Serverentwicklung von PHP nach Java
Generieren Sie OffsetDateTime aus Clock und LocalDateTime in Java
FizzBuzz in Java
Kommen Sie mit Java-Containern in Cloud Run zurecht
Rufen Sie die URL des HTTP-Umleitungsziels in Java ab
Versuchen Sie, synchronisierte Methoden aus mehreren Threads in Java aufzurufen
Löschen Sie alle aus dem Java SDK in Azure CosmosDB
Quelle zum Abrufen der Umleitungsquell-URL in Java
Abrufen von Gebietsschemaobjekten für alle in Java verfügbaren Gebietsschemas
[Java] Holen Sie sich die Datei unabhängig von der Umgebung in das JAR
Verwenden der Datenbank (SQL Server 2014) aus einem Java-Programm 2018/01/04
Was ich beim Erstellen eines Servers in Java gelernt habe
Subtrahieren Sie Enum-Konstanten von Zeichenfolgen und Werten in Java zurück
Rufen Sie ein in Swift geschriebenes Programm von Processing (Java) auf.
Lesen Sie JSON in Java
Machen Sie einen Blackjack mit Java
Einschränkungsprogrammierung in Java