Existe-t-il un moyen d'obtenir un e-mail lorsque les services ArcGIS Server sont arrêtés / arrêtés?

10

Parfois, mais trop souvent malheureusement, mes services AGS s'arrêtent sans raison. Je ne le remarque généralement pas jusqu'à ce que les utilisateurs m'appellent et me demandent pourquoi leurs cartes n'ont pas de données.

Existe-t-il un moyen (je pensais à Python) d'obtenir une réponse d'AGS lorsque les services s'arrêtent? Comment les autres utilisateurs AGS gèrent-ils ce problème?

Robert Buckley
la source
Cela est possible à l'aide d'ArcPy pour ArcGIS Server (version 10.1). Je travaille sur ce problème de mon côté. Pour plus d'aide, veuillez consulter resources.arcgis.com/en/help/main/10.1/index.html#//… et vous faire savoir quand les choses seront parfaites de mon côté: )
Sunil
+ 1 Avez-vous besoin de cela pour tous les services ou services spécifiques? + Téléchargez l'API d'administration ArcGIS pour plus de détails
Sunil
J'en ai vraiment besoin pour tous les services ... mais certains sont plus importants que d'autres parce que certains services fournissent des données aux clients, et d'autres sont à usage interne.
Robert Buckley
Dans une telle situation, quel sera l'objectif du recyclage ou de la configuration du contrôle de santé de tout service?
Deep

Réponses:

3

J'ai résolu le même problème et j'ai cette solution. J'ai écrit en Python ce code ci-dessous ("localhost" dans le changement d'URL en nom de votre serveur AGS):

# -*- coding: cp1250 -*-
import smtplib, urllib


from email import Encoders
from email.MIMEBase import MIMEBase
from email.MIMEMultipart import MIMEMultipart
from email.Utils import formatdate
from email.MIMEText import MIMEText
from email.MIMEMessage import MIMEMessage

COMMASPACE = ', '
SERVER = "IP adresss of post server"
FROM = "email adress from"
TO = ['1.email adress to','2.email adress to']

SUBJECT = "Some services on ArcGIS Server are down"

ServicesDown = []
CountOfServicesDown=0
TEXT="No problem"


# 1. Service - mapservice1
print "Test of service - mapservice1"
opener = urllib.FancyURLopener({})

f = opener.open("http://"localhost"/arcgis/rest/services/mapservice1/MapServer?wsdl")
code = urllib.urlopen("http://"localhost"/arcgis/rest/services/mapservice1/MapServer?wsdl"?wsdl").getcode()

if code is not 200:
    print "code: ", code
    print "mapservice1 is down"
    ServicesDown.append("mapservice1")
    CountOfServicesDown=CountOfServicesDown+1
else:
    print "service is OK"


# 2. Service - mapservice2
print "Test of service - mapservice2"
opener = urllib.FancyURLopener({})

f = opener.open("http://"localhost"/arcgis/rest/services/mapservice2/MapServer?wsdl")
code = urllib.urlopen("http://"localhost"/arcgis/rest/services/mapservice2/MapServer?wsdl"?wsdl").getcode()

if code is not 200:
    print "code: ", code
    print "mapservice1 is down"
    ServicesDown.append("mapservice2")
    CountOfServicesDown=CountOfServicesDown+1
else:
    print "service is OK"


print "\r\n"+"ServicesDown: ",ServicesDown
print "CountOfServicesDown= ",CountOfServicesDown

if CountOfServicesDown > 0:
    TEXT = "There are down this services: "+str(ServicesDown[:CountOfServicesDown])
    print "TEXT: ", TEXT


    # Prepare actual message

    message = """\
From: %s
To: %s
Subject: %s

%s
""" % (FROM, ", ".join(TO), SUBJECT, TEXT)


    server = smtplib.SMTP(SERVER)
    server.sendmail(FROM, TO, message)
    server.quit()
    print "\r\n"+"Email was send"

else:
    print "\r\n"+"There is no problem on AGS services" 
Petr Trefil
la source
Hi- Sera-t-il possible d'ajouter le journal final du service arrêté?
Deep
4

Je voudrais jeter un œil à l' API REST Admin d'ArcGIS Server pour cela.

Il semble que vous puissiez écrire un script python qui s'exécute et le planifier pour s'exécuter périodiquement. Le script obtiendrait tous les services dans un cluster , puis pour voir si le service d'intérêt est présent, et si oui, vérifiez son statut .

Sinon, envoyez une notification par e-mail.

Le script peut également (re) démarrer le service, si vous le souhaitez.

Je ne suis pas sûr, mais l' administrateur du package d' administration ArcPy pourrait fournir un moyen de travailler avec cette API.

Kirk Kuykendall
la source
Merci Kirk .... Je vais voir ça. Cela semble être une façon logique de procéder.
Robert Buckley
1

Nous utilisons actuellement ce script batch ServiceMonitor , qui fait des notifications par e-mail. Nous l'avons configurée en tant que tâche planifiée Windows afin qu'elle s'exécute chaque matin.

Le seul inconvénient est qu'il faut un certain temps pour fonctionner car nous avons un grand nombre de services, nous ne pouvons donc pas l'exécuter aussi souvent que nous le souhaiterions. Peut-être que l'API Admin REST ou ArcPy serait plus rapide.

mrohlf
la source
Il semble que cela ne fonctionne que sur 10,0? Juste curieux si vous utilisez 10.1 / 10.2 et que cela fonctionne pour vous.
Alex Tereshenkov
1
Je l'ai exécuté brièvement sur 10.2 et cela semblait bien fonctionner, mais nous avons rencontré d'autres problèmes avec notre serveur 10.2, donc je ne l'ai pas testé très longuement. Je ne l'ai pas testé avec 10.1 du tout, mais cela devrait fonctionner sur n'importe quelle version car il s'agit simplement de vérifier que le WSDL pour chaque service est accessible.
mrohlf
Je vois, merci pour l'info. Si jamais vous avez la possibilité d'essayer le moniteur de service d'Esri (publié il y a quelques mois seulement), je pense que cela répondrait très bien à vos besoins ( arcgis.com/home/item.html?id=848f48b0f88e4de7a036377197453efe ). Voici quelques autres ressources utiles - gis.stackexchange.com/questions/73863/…
Alex Tereshenkov
Wow, cela semble vraiment utile - merci! La découverte et la surveillance dynamiques des services semblent parfaites pour ce dont nous avons besoin.
mrohlf
1

Dans les temps libres, j'ai travaillé sur un script Python qui génère une requête Web vers l'URL REST du serveur ArcGIS et évalue la réponse du service. Si la réponse est négative, une alerte e-mail sera envoyée à une adresse e-mail spécifique.

Je pense que c'est simple mais utile pour surveiller les services individuels d'ArcGIS Server. J'espère que c'est utile pour quelqu'un.

Toutes les informations sur notre blog: http://oneteamgis.wordpress.com/2014/03/24/uno-script-python-che-monitora-i-servizi-di-arcgis-server/

Damiano

Damiano
la source
Malheureusement, le billet de blog n'est plus en ligne.
Erica