Esiste un modo per ricevere un'e-mail quando i servizi del server ArcGIS sono interrotti / inattivi?


10

Occasionalmente, ma troppo spesso, purtroppo, i miei servizi AGS si fermano senza motivo. Di solito non lo noto fino a quando gli utenti non mi chiamano e mi chiedono perché le loro mappe non hanno dati.

C'è un modo (stavo pensando a Python) che posso ottenere una risposta da AGS quando i servizi si fermano? In che modo gli altri utenti di AGS affrontano questo problema?


Ciò è possibile utilizzando ArcPy per ArcGIS Server (versione 10.1). Sto lavorando a questo problema dalla mia parte. Per ulteriori informazioni, consultare resources.arcgis.com/en/help/main/10.1/index.html#//… e farti sapere quando le cose saranno perfette dalla mia parte: )
Sunil,

+ 1 Ti serve questo per tutti i servizi o servizi specifici? + Scarica ArcGIS Admin API per maggiori dettagli
Sunil

Ne ho davvero bisogno per tutti i servizi ... ma alcuni sono più importanti di altri perché alcuni servizi forniscono dati ai clienti e altri sono per uso interno.
Robert Buckley,

In tale situazione, quale sarà lo scopo del riciclaggio o dell'impostazione del controllo sanitario di qualsiasi servizio?
Deep

Risposte:


3

Ho risolto lo stesso problema e ho questa soluzione. Ho scritto in Python questo codice di seguito ("localhost" nella modifica dell'URL al nome del tuo server 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" 

Hi- Sarà possibile aggiungere il registro finale per il servizio interrotto?
Deep

4

Darei un'occhiata all'API REST di ArcGIS Server Admin per questo.

Sembra che tu possa scrivere uno script Python che viene eseguito e programmarlo per l'esecuzione periodica. Lo script otterrebbe tutti i servizi in un cluster , quindi per vedere se il servizio di interesse è presente e in tal caso verificarne lo stato .

Altrimenti, invia una notifica via email.

Lo script potrebbe anche (ri) avviare il servizio, se lo si desidera.

Non sono sicuro, ma l' amministratore del pacchetto di amministrazione ArcPy potrebbe fornire un modo per lavorare con questa API.


Grazie Kirk .... Lo darò un'occhiata. Sembra un modo logico di procedere.
Robert Buckley,

1

Attualmente utilizziamo questo script batch di ServiceMonitor , che invia notifiche via e-mail. Lo configuriamo come un'attività pianificata di Windows in modo che venga eseguito ogni mattina.

L'unico aspetto negativo è che ci vuole un po 'di tempo per funzionare poiché abbiamo un gran numero di servizi, quindi non possiamo eseguirlo tutte le volte che vorremmo. Forse l'API REST di amministrazione o ArcPy sarebbe più veloce.


Sembra che funzioni solo su 10.0? Sono solo curioso di usare 10.1 / 10.2 e farlo funzionare per te.
Alex Tereshenkov,

1
L'ho eseguito brevemente su 10.2 e sembrava funzionare correttamente, ma abbiamo riscontrato altri problemi con il nostro server 10.2, quindi non l'ho testato molto ampiamente. Non l'ho provato affatto con 10.1, ma dovrebbe funzionare su qualsiasi versione poiché sostanzialmente sta solo verificando che il WSDL per ogni servizio sia raggiungibile.
mrohlf,

Vedo, grazie per le informazioni. Se mai avessi la possibilità di provare Esri's Service Monitor (rilasciato solo qualche mese fa), penso che si adatterebbe molto bene alle tue esigenze ( arcgis.com/home/item.html?id=848f48b0f88e4de7a036377197453efe ). Ecco alcune altre risorse utili - gis.stackexchange.com/questions/73863/…
Alex Tereshenkov,

Wow, sembra davvero utile - grazie! Il rilevamento dinamico del servizio e il monitoraggio sembrano perfetti per ciò di cui abbiamo bisogno.
mrohlf,

1

Nel tempo libero ho lavorato su uno script Python che genera una richiesta Web all'URL REST del server ArcGIS e valuta la risposta del servizio. Se la risposta è negativa verrà inviato un avviso e-mail a un indirizzo e-mail specifico.

Penso che sia semplice ma utile per monitorare i singoli servizi di ArcGIS Server. Spero che sia utile per qualcuno.

Tutte le informazioni nel nostro blog: http://oneteamgis.wordpress.com/2014/03/24/uno-script-python-che-monitora-i-servizi-di-arcgis-server/

Damiano


Il post sul blog non è più online, sfortunatamente.
Erica,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.