Gibt es eine Möglichkeit, eine E-Mail zu erhalten, wenn ArcGIS Server-Dienste gestoppt / heruntergefahren werden?

10

Gelegentlich, aber leider allzu oft, werden meine AGS-Dienste ohne Grund eingestellt. Normalerweise merke ich das erst, wenn die Benutzer mich anrufen und fragen, warum ihre Karten keine Daten enthalten.

Gibt es eine Möglichkeit (ich dachte an Python), dass ich eine Antwort von AGS erhalten kann, wenn Dienste beendet werden? Wie gehen andere AGS-Benutzer mit diesem Problem um?

Robert Buckley
quelle
Dies ist mit ArcPy für ArcGIS Server (Version 10.1) möglich. Ich arbeite auf meiner Seite an diesem Problem. Weitere Hilfe finden Sie unter resources.arcgis.com/de/help/main/10.1/index.html#//…. Lassen Sie Sie wissen, wann die Dinge auf meiner Seite perfekt sind: )
Sunil
+ 1 Benötigen Sie dies für alle Dienste oder bestimmte Dienste? + Laden Sie die ArcGIS Admin API herunter, um weitere Informationen zu erhalten
Sunil
Ich brauche es wirklich für alle Dienste ... aber einige sind wichtiger als andere, da einige Dienste Daten an Kunden liefern und andere für den internen Gebrauch bestimmt sind.
Robert Buckley
Was ist in einer solchen Situation der Zweck der Einstellung von Recycling- oder Gesundheitschecks für einen Dienst?
Tief

Antworten:

3

Ich habe das gleiche Problem gelöst und ich habe diese Lösung. Ich habe diesen Code in Python unten geschrieben ("localhost" in der URL ändert sich in den Namen Ihres AGS-Servers):

# -*- 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
quelle
Hi: Ist es möglich, das endgültige Protokoll für den gestoppten Dienst hinzuzufügen?
Tief
4

Ich würde mir dazu die ArcGIS Server Admin REST-API ansehen .

Es sieht so aus, als könnten Sie ein Python-Skript schreiben, das ausgeführt wird, und es so planen, dass es regelmäßig ausgeführt wird. Das Skript würde alle Dienste in einem Cluster abrufen , um dann festzustellen, ob der interessierende Dienst vorhanden ist, und wenn ja, seinen Status zu überprüfen .

Andernfalls senden Sie eine Benachrichtigung per E-Mail.

Das Skript kann den Dienst auch (neu) starten, wenn Sie dies wünschen.

Ich bin nicht sicher, aber das ArcPy-Administratorpaket admin bietet möglicherweise eine Möglichkeit, mit dieser API zu arbeiten.

Kirk Kuykendall
quelle
Danke Kirk ... das werde ich mir ansehen. Das scheint ein logischer Weg zu sein.
Robert Buckley
1

Derzeit verwenden wir dieses ServiceMonitor- Batch-Skript, das E-Mail-Benachrichtigungen ausführt. Wir haben es als geplante Windows-Aufgabe eingerichtet, damit es jeden Morgen ausgeführt wird.

Der einzige Nachteil ist, dass die Ausführung eine Weile dauert, da wir über eine große Anzahl von Diensten verfügen, sodass wir sie nicht so oft ausführen können, wie wir möchten. Möglicherweise ist die Admin-REST-API oder ArcPy schneller.

mrohlf
quelle
Es scheint, als ob dies nur auf 10.0 funktioniert? Nur neugierig, ob Sie 10.1 / 10.2 verwenden und es für Sie arbeiten lassen.
Alex Tereshenkov
1
Ich habe es kurz auf 10.2 ausgeführt und es schien in Ordnung zu funktionieren, aber wir haben andere Probleme mit unserem 10.2-Server festgestellt, sodass ich es nicht sehr ausführlich getestet habe. Ich habe es überhaupt nicht mit 10.1 getestet, aber es sollte auf jeder Version funktionieren, da im Grunde nur überprüft wird, ob die WSDL für jeden Dienst erreichbar ist.
Mrohlf
Ich verstehe, danke für die Info. Wenn Sie jemals die Möglichkeit haben, den Service Monitor von Esri (der erst vor einigen Monaten veröffentlicht wurde) auszuprobieren, würde er meiner Meinung nach sehr gut zu Ihren Anforderungen passen ( arcgis.com/home/item.html?id=848f48b0f88e4de7a036377197453efe ). Hier sind einige andere nützliche Ressourcen - gis.stackexchange.com/questions/73863/…
Alex Tereshenkov
Wow, das sieht wirklich nützlich aus - danke! Die dynamische Serviceerkennung und -überwachung klingt perfekt für das, was wir brauchen.
Mrohlf
1

In meiner Freizeit habe ich an einem Python-Skript gearbeitet, das eine Webanforderung an die REST-URL des ArcGIS-Servers generiert und die Antwort des Dienstes auswertet. Wenn die Antwort negativ ist, wird eine E-Mail-Benachrichtigung an eine bestimmte E-Mail-Adresse gesendet.

Ich denke, es ist einfach, aber nützlich, um einzelne Dienste von ArcGIS Server zu überwachen. Ich hoffe das ist hilfreich für jemanden.

Alle Informationen in unserem Blog: http://oneteamgis.wordpress.com/2014/03/24/uno-script-python-che-monitora-i-servizi-di-arcgis-server/

Damiano

Damiano
quelle
Der Blogbeitrag ist leider nicht mehr online.
Erica