¿Hay alguna forma de recibir un correo electrónico cuando los servicios de ArcGIS Server están detenidos / desactivados?

10

Ocasionalmente, pero con demasiada frecuencia desafortunadamente, mis servicios de AGS simplemente se detienen sin ningún motivo. Por lo general, no me doy cuenta de esto hasta que los usuarios me llaman y me preguntan por qué sus mapas no tienen datos.

¿Hay alguna forma (estaba pensando en Python) de que pueda obtener una respuesta de AGS cuando se detengan los servicios? ¿Cómo tratan otros usuarios de AGS este problema?

Robert Buckley
fuente
Esto es posible con ArcPy for ArcGIS Server (versión 10.1). Estoy trabajando en este tema de mi lado. Para obtener más ayuda, consulte resources.arcgis.com/en/help/main/10.1/index.html #//... y le avisaré cuando las cosas estarán perfectas de mi lado: )
Sunil
+ 1 ¿Necesita esto para todos los servicios o servicios específicos? + Descargue ArcGIS Admin API para más detalles
Sunil
Realmente lo necesito para todos los servicios ... pero algunos son más importantes que otros porque algunos servicios entregan datos a los clientes, y otros son para uso interno.
Robert Buckley
En tal situación, ¿cuál será el propósito del reciclaje o la configuración del control de salud de cualquier servicio?
Deep

Respuestas:

3

He resuelto el mismo problema y tengo esta solución. Escribí en Python este código a continuación ("localhost" en el cambio de URL al nombre de su servidor 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
fuente
Hi- ¿Será posible agregar el registro final para el servicio detenido?
Deep
4

Echaría un vistazo a la API REST de administración de ArcGIS Server para esto.

Parece que podrías escribir un script de Python que se ejecute y programarlo para que se ejecute periódicamente. El script obtendría todos los servicios en un clúster , luego para ver si el servicio de interés está presente y, en caso afirmativo, verificar su estado .

De lo contrario, envíe una notificación por correo electrónico.

El script también podría (re) iniciar el servicio, si lo desea.

No estoy seguro, pero el administrador del paquete de administración de ArcPy podría proporcionar una forma de trabajar con esta API.

Kirk Kuykendall
fuente
Gracias Kirk ... voy a echar un vistazo a eso. Esa parece ser una forma lógica de hacerlo.
Robert Buckley
1

Actualmente utilizamos este script por lotes de ServiceMonitor , que envía notificaciones por correo electrónico. Lo configuramos como una tarea programada de Windows para que se ejecute todas las mañanas.

El único inconveniente es que lleva bastante tiempo ejecutarlo, ya que tenemos una gran cantidad de servicios, por lo que no podemos ejecutarlo tan a menudo como quisiéramos. Tal vez la API REST de administrador o ArcPy sería más rápida.

mrohlf
fuente
Parece que esto funciona solo en 10.0? Solo curiosidad si usa 10.1 / 10.2 y lo hizo funcionar para usted.
Alex Tereshenkov
1
Lo ejecuté brevemente en 10.2 y parecía funcionar bien, pero encontramos otros problemas con nuestro servidor 10.2, por lo que no lo he probado exhaustivamente. No lo he probado con 10.1 en absoluto, pero debería funcionar en cualquier versión, ya que básicamente solo está comprobando que se pueda alcanzar el WSDL para cada servicio.
mrohlf
Ya veo, gracias por la información. Si alguna vez tiene la oportunidad de probar Esri's Service Monitor (lanzado hace solo unos meses), creo que se adaptará realmente a sus necesidades ( arcgis.com/home/item.html?id=848f48b0f88e4de7a036377197453efe ). Aquí hay otros recursos útiles: gis.stackexchange.com/questions/73863/…
Alex Tereshenkov
Wow, eso parece realmente útil, ¡gracias! El descubrimiento y monitoreo de servicio dinámico suena perfecto para lo que necesitamos.
mrohlf
1

En el tiempo libre, trabajé en un script de Python que genera una solicitud web a la URL REST del servidor ArcGIS y evalúa la respuesta del servicio. Si la respuesta es negativa, se enviará una alerta por correo electrónico a una dirección de correo electrónico específica.

Creo que es simple pero útil para monitorear servicios individuales de ArcGIS Server. Espero que sea útil para alguien.

Toda la información en nuestro blog: http://oneteamgis.wordpress.com/2014/03/24/uno-script-python-che-monitora-i-servizi-di-arcgis-server/

Damiano

Damiano
fuente
La publicación del blog ya no está en línea, desafortunadamente.
Erica