Obtenir l'historique du serveur Zabbix en Java

J'ai écrit le code pour prendre et afficher l'historique des éléments sur le serveur Zabbix en Java. Cette fois, j'ai décidé de sortir l'histoire de l'heure locale, qui est la plus simple à comprendre.

Que préparer

https://github.com/hengyunabc/zabbix-api Éléments pour le débogage

Choses pour commencer

Connectez-vous à l'API pour afficher la version.

Main.java


		DefaultZabbixApi ZabbixAPI = new DefaultZabbixApi("http://[IP hôte]/zabbix/api_jsonrpc.php");
		ZabbixAPI.init();//Initialisation
		System.out.println(ZabbixAPI.apiVersion());//Affichage de la version

Puis connectez-vous.

Main.java


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

Si la connexion réussit, login: true s'affiche. De là, vous pouvez utiliser les fonctionnalités de l'API Zabbix.

Code source

Avant de récupérer l'historique, récupérez l'ID d'élément avec item.get.

Main.java


        //demande
		JSONObject filter = new JSONObject();
		filter.put("key_", new String[]{"system.localtime"});//Clé d'article
		filter.put("name", new String[]{"myitem"});//Nom de l'article
		Request getRequest = RequestBuilder.newBuilder().method("item.get").paramEntry("filter", filter).build();
       //réponse
		JSONObject getResponse = ZabbixAPI.call(getRequest);
		String itemid = getResponse.getJSONArray("result").getJSONObject(0).getString("itemid");
		String name = getResponse.getJSONArray("result").getJSONObject(0).getString("name");

Le nom de l'élément est également inclus dans la réponse pour confirmer que les données correctes ont été obtenues.

Ensuite, récupérez l'historique.

Main.java


		Date date = new Date();
		Timestamp now = new Timestamp(date.getTime()/1000L);//time_En caisse, spécifiez par horodatage Unix
       //iteids:historique des spécifications d'item:Spécifier le champ de tri du type de données:Spécifier le trieur de critères de tri:Temps croissant ou décroissant_till:Afficher les données jusqu'à l'heure spécifiée
		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");//Vous pouvez le prendre avec le type Int
			System.out.println(new Timestamp(Integer.parseInt(history) * 1000L));//Convertir l'horodatage Unix en horodatage Java
		}

Code entier

Main.java


public class Main {
	public void start() {
		DefaultZabbixApi ZabbixAPI = new DefaultZabbixApi("http://[IP hôte]/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_En caisse, spécifiez par horodatage Unix
		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));//Convertir l'horodatage Unix en horodatage Java
		}
	}
	public static void main(String[] args) {
		Main m = new Main();
		m.start();
	}
}

Tout d'abord, je l'ai écrit en langage Go pour comprendre comment utiliser l'API et son fonctionnement, puis je l'ai écrit en Java, mais comme le protocole JSON a été décidé, le code lui-même n'a pas dû être aussi long. J'écrirai ceci à partir du point de lancer JSON avec httpclient.

https://www.zabbix.com/documentation/2.2/manual/api Une liste de fonctions API est répertoriée ici, donc si vous souhaitez utiliser d'autres fonctions, veuillez vous y référer.

Recommended Posts

Obtenir l'historique du serveur Zabbix en Java
API Zabbix en Java
Comment obtenir une classe depuis Element en Java
Obtenez unixtime (secondes) de ZonedDateTime dans Scala / Java
[Java] Obtenir KFunction à partir de la méthode / du constructeur en Java [Kotlin]
Obtenir des informations EXIF en Java
L'histoire de Java dans ce monde
[Java] Obtenir KClass en Java [Kotlin]
[Développement Android] Obtenez des images du serveur avec Java et définissez-les dans ImageView! !!
JSON en Java et Jackson Partie 1 Renvoyer JSON à partir du serveur
Obtenez les prévisions météorologiques de Watson Weather Company Data avec Java simple
Obtenir des attributs et des valeurs à partir d'un fichier XML en Java
Obtenir une collection non vide à partir d'un flux facultatif avec java
Obtenir le pays à partir de l'adresse IP (Java)
Obtenir des valeurs de carte nulles en Java
Restez coincé dans un Java Primer
[Java] Obtenir des données de la base de données à l’aide du service singleton dans Spring (Boot)
Obtenez "2-4, 7, 9" de [4, 7, 9, 2, 3]
Étudiez le Deep Learning à partir de zéro en Java.
Obtenez le résultat de POST en Java
Appel de méthodes Java à partir de JavaScript exécutées en Java
OCR en Java (reconnaissance de caractères à partir d'images)
Obtenir des informations sur l'appelant à partir de la trace de la pile (Java)
Kick ShellScript sur le serveur depuis Java
Inverser la clé de la valeur dans la carte Java
Comment obtenir la date avec Java
Obtenez les prévisions météo de Open Weather Map with Rails
Appel de méthode Java depuis RPG (appel de méthode dans sa propre classe)
Migrer de Java vers Kotlin côté serveur + Spring-boot
Changements dans Java 11
Janken à Java
Extraction de texte en Java à partir de PDF avec pdfbox-2.0.8
Capture et sauvegarde de l'installation de sélénium en Java
Bibliothèque "OSHI" pour acquérir des informations système avec Java
[Java] Obtenir plusieurs valeurs à partir d'une valeur de retour
[Java] Récupère des valeurs de manière aléatoire dans un tableau
[Deep Learning from scratch] dans Java 3. Réseau neuronal
Jusqu'à ce que vous démarriez le serveur Zabbix avec docker-compose et que vous obteniez des informations d'autres hôtes
Taux circonférentiel à Java
Développement de serveur Minecraft BE de PHP à Java
Générer OffsetDateTime à partir de Clock et LocalDateTime en Java
FizzBuzz en Java
S'entendre avec les conteneurs Java dans Cloud Run
Obtenez l'URL de la destination de la redirection HTTP en Java
Essayez d'appeler des méthodes synchronisées à partir de plusieurs threads en Java
Tout supprimer du SDK Java dans Azure CosmosDB
Source utilisée pour obtenir l'URL de la source de redirection en Java
Obtention des objets Locale pour tous les paramètres régionaux disponibles en Java
[Java] Récupère le fichier dans le fichier jar quel que soit l'environnement
Utilisation de la base de données (SQL Server 2014) à partir d'un programme Java 04/01/2018
Ce que j'ai appris lors de la création d'un serveur en Java
Soustraire les constantes Enum des chaînes et des valeurs en Java
Appeler un programme écrit en Swift depuis Processing (Java)
Lire JSON en Java
Faites un blackjack avec Java
Programmation par contraintes en Java