[PYTHON] Obtenir des informations avec l'API Zabbix

Défi pour contrôler l'API zabbix en Python Cette fois, je vais essayer d'obtenir des informations

Il y a pyzabbix etc. qui sont pratiques pour Python, mais En supposant qu'il existe une résistance à l'installation dans l'environnement serveur de l'entreprise J'ai essayé d'utiliser json et urllib2 Aussi, si vous le pouvez, je pense que vous l'utiliserez après l'avoir déposé dans un module, Je ne ferai pas grand chose cette fois

Puisque je suis un débutant de Python, j'ai fait référence au contenu du prédécesseur lors de sa création. [J'ai été autorisé à faire référence] http://www.zumwalt.info/blog/2012/11/pyhtonでzabbix-apiを触ってみる/

On suppose d'essayer cette fois

Script Python

L'opération a été confirmée avec les séries zabbix 2.0 et zabbix 2.4.

À propos des paramètres

Veuillez réécrire la partie url du client à l'adresse d'écoute N'oubliez pas non plus de définir http ou https

Contenu de cette époque

python


#!/usr/bin/python
# coding: utf-8

import os
import sys
import getpass
import json
import urllib2

if len(sys.argv) != 2 :
  print ' ERROR : Please check Search hostname.'
  print '  Usage: ' + os.path.basename(__file__) + ' [search hostname]'
  sys.exit()

client = 'https://127.0.0.1/zabbix/api_jsonrpc.php'
postheader = {'Content-Type': 'application/json-rpc'}

userid = raw_input('Please Enter Zabbix Web Account : ')
passwd = getpass.getpass('PASSWORD :')
while userid == '':
  print 'type the account.'
  userid = raw_input('Please Enter Zabbix Web Account : ')
while passwd == '':
  print 'type the password'
  passwd = getpass.getpass('PASSWORD :')

# auth
authquery = json.dumps({'jsonrpc':'2.0', 'method':'user.login', 'params':{'user':userid, 'password':passwd}, 'auth':None, 'id': 1})
authreq = urllib2.Request(client, authquery, postheader)

try :
  getauthresult = urllib2.urlopen(authreq).read()
  authresult = json.loads(getauthresult)

except Exception as e :
  print ' %s %s' % ('ERROR :',e)
  print '         Please check zabbix URL Setting or Others.'
  sys.exit()

if 'error' in authresult :
  print ' %s %s' % ('API Error :',authresult['error']['data'])
  sys.exit()

# query
##Méthodes et paramètres
# host.get :Méthode d'acquisition des informations sur l'hôte
# output : Object properties to be returned.Si vous regardez le document maintenant, la valeur par défaut est étendue
# filter : 'status:0' =Hôte activé par le moniteur, 'host:[hogehoge]'Filtrer par le nom d'hôte spécifié
# inventory :Extension de la spécification de sortie de l'élément d'information d'inventaire=Afficher tout
#Si vous souhaitez uniquement obtenir l'inventaire d'un hôte spécifique, l'hôte du filtre,Seul l'inventaire sélectionné semble bon
postquery = json.dumps({'jsonrpc':'2.0', 'method':'host.get', 'params':{'output':'extend', 'filter':{'status':'0', 'host':sys.argv[1]}, 'selectInventory':'extend'}, 'auth':authresult['result'], 'id':1})
postreq = urllib2.Request(client, postquery, postheader)
getpostresult = urllib2.urlopen(postreq).read()
postresult = json.loads(getpostresult)

# result is empty
if not postresult['result'] :
  print 'no such host.'
  sys.exit()

# result data export
info=[]
for data in postresult['result'] :
  if not data['inventory'] :
    print 'no such inventory .'
    sys.exit()
  info = data['inventory']['notes']

print '--------------------------------------------------'
print '%s%s%s%s%s' % ('# INFO ->  ', sys.argv[1], ' : ', '\n', info)

Test d'exécution

--Préparez un compte avec chaque autorité de référence (l'administrateur est ok)

python

$ ./get.py test
Please Enter Zabbix Web Account : test
PASSWORD :
--------------------------------------------------
# INFO ->  test :
test test test
Même un test
aaaaaaaaaaa

La sortie n'est pas bonne, mais vous pouvez l'extraire comme ceci J'ai pensé qu'il serait pratique de prendre l'habitude de vérifier à chaque fois avant de se connecter au serveur, mais il est difficile d'établir des règles

Erreur lors de l'exécution de ce script

:Si l'URL n'est pas spécifiée correctement:


$ ./get.py test
Please Enter Zabbix Web Account : test
PASSWORD :
 ERROR : <urlopen error [Errno 111] Connection refused>
         Please check zabbix URL Setting or Others.


$ ./get.py test
Please Enter Zabbix Web Account : test
PASSWORD :
 ERROR : HTTP Error 404: Not Found
         Please check zabbix URL Setting or Others.

:Erreur de compte ou de mot de passe:


$ ./get.py test
Please Enter Zabbix Web Account :a
PASSWORD :
 API Error : Login name or password is incorrect.

:L'inventaire est désactivé, l'hôte n'existe pas (non autorisé et ne peut pas être référencé):


$ ./get.py test1
Please Enter Zabbix Web Account : test
PASSWORD :
no such host.

$ ./get.py test2
Please Enter Zabbix Web Account : test
PASSWORD :
no such inventory.

Bien sûr, vous pouvez obtenir diverses choses en modifiant la méthode et les paramètres. De plus, j'ai le sentiment d'avoir pu spécifier les articles à acquérir avec selectInventory pour ces informations d'inventaire. Pour une raison quelconque, je me souviens avoir échoué, alors je le fais étendre et traiter les données

Recommended Posts

Obtenir des informations avec l'API Zabbix
[Python] Obtenez des informations sur le package Python avec l'API PyPI
Obtenez des informations sur la monnaie virtuelle Coincheck avec l'API ♪
Obtenez des informations sur l'alambic avec Python
Obtenez un classement avec l'API Rakuten
[Python] Obtenez des informations sur les utilisateurs et des articles sur l'API de Qiita
Obtenez des informations sur les fichiers vidéo avec ffmpeg-python
Obtenez des informations météorologiques avec Python et le grattage
YOLP Obtenir un fichier XML d'informations cartographiques avec l'API Yahoo! Static Map
Collecter des informations sur Twitter avec Python (API Twitter)
Obtenez des informations sur la propriété en grattant avec python
Golang api obtenir
Hit l'API Zabbix (1.8, 2.0)
Obtenez des vacances avec l'API Google Agenda
J'ai essayé d'obtenir les informations sur le film de l'API TMDb avec Python
Obtenez les dernières informations AMI avec l'AWS CLI
Obtenons les informations Wiki en utilisant l'API MediaWiki
Obtenez des données sur le cours de l'action avec l'API Quandl [Python]
Obtenez des informations sur le processeur de Raspberry Pi avec Python
Obtenez l'objet et le corps de Gmail avec Python et l'API Gmail
Script Python pour obtenir des informations de note avec REAPER
[Linux] Obtenir des informations sur les ressources Linux
[google-oauth] Obtenir des informations sur l'utilisateur
Extruder avec l'API Fusion360
Démarrez avec MicroPython
Recevez des tweets avec Tweepy
Obtenez date avec python
Démarrez avec Mezzanine
[Rails] Comment obtenir des informations de localisation à l'aide de l'API de géolocalisation
Obtenir le calendrier de l'API Garoon SOAP avec Python + Zeep
Obtenez des commentaires et des abonnés avec l'API de données YouTube
Recevez des tweets avec des mots-clés arbitraires à l'aide de l'API Streaming de Twitter
Obtenez le code du pays avec python
Téléchargement d'image avec l'API Flickr
Obtenez la table dynamiquement avec sqlalchemy
Utiliser l'API Trello avec python
Lancez-vous avec Django! ~ Tutoriel ⑤ ~
Créer une API avec Django
Obtenez la chronologie Twitter avec Python
Commencez avec influxDB + Grafana
Utiliser l'API Twitter avec Python
API avec Flask + uWSGI + Nginx
Lancez-vous avec Django! ~ Tutoriel ④ ~
Visualisez les informations de localisation avec Basemap
Rationalisez la collecte d'informations avec l'API Twitter et les robots Slack
Lancez-vous avec Django! ~ Tutoriel ⑥ ~
API Web avec Python + Falcon
Obtenir l'ID de thread avec python
Obtenir des informations GitHub à l'aide de PyGithub
Obtenez des champs de chat en direct YouTube en temps réel avec l'API
Obtenez des données de l'API d'analyse avec le client API Google pour python
Soutenez-vous avec l'API Twitter
API Zabbix ceci et cela
Commencez avec Python! ~ ② Grammaire ~
Obtenez des fonctionnalités d'image avec OpenCV
Appelez l'API avec python3.