Czy istnieje sposób na otrzymanie wiadomości e-mail, gdy usługi ArcGIS Server są zatrzymane / wyłączone?


10

Czasami, ale zbyt często niestety, moje usługi AGS po prostu przestają działać bez powodu. Zwykle tego nie zauważam, dopóki użytkownicy nie zadzwonią do mnie i nie zapytają, dlaczego ich mapy nie zawierają danych.

Czy jest jakiś sposób (myślałem Python), że mogę uzyskać odpowiedź od AGS, gdy usługi się zatrzymają? Jak inni użytkownicy AGS radzą sobie z tym problemem?


Jest to możliwe przy użyciu ArcPy dla ArcGIS Server (wersja 10.1). Pracuję nad tym problemem po mojej stronie. Aby uzyskać więcej pomocy, sprawdź resources.arcgis.com/en/help/main/10.1/index.html#//… i daję znać, kiedy wszystko będzie idealnie po mojej stronie: )
Sunil,

+ 1 Czy potrzebujesz tego do wszystkich usług lub określonych usług? + Pobierz ArcGIS Admin API, aby uzyskać więcej informacji
Sunil

Potrzebuję go do wszystkich usług naprawdę ... ale niektóre są ważniejsze niż inne, ponieważ niektóre usługi dostarczają dane klientom, a inne są do użytku wewnętrznego.
Robert Buckley

W takiej sytuacji, jaki będzie cel recyklingu lub ustawienia kontroli stanu jakiejkolwiek usługi?
Głęboki

Odpowiedzi:


3

Rozwiązałem ten sam problem i mam takie rozwiązanie. W Pythonie napisałem ten kod poniżej („localhost” w zmianie adresu URL na nazwę twojego serwera 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" 

Cześć - Czy będzie możliwe dodanie końcowego dziennika dla zatrzymanej usługi?
Głęboki

4

W tym celu przyjrzałbym się interfejsowi API REST administratora ArcGIS Server .

Wygląda na to, że możesz napisać skrypt Pythona, który będzie uruchamiany i zaplanować jego okresowe uruchamianie. Skrypt uzyska wszystkie usługi w klastrze , a następnie sprawdzi, czy usługa będąca przedmiotem zainteresowania jest dostępna, a jeśli tak, sprawdź jej status .

W przeciwnym razie wyślij powiadomienie e-mailem.

Skrypt może również (ponownie) uruchomić usługę, jeśli chcesz.

Nie jestem pewien, ale administrator pakietu administracyjnego ArcPy może zapewnić sposób pracy z tym interfejsem API.


Dzięki, Kirk .... Spojrzę na to. To wydaje się logicznym sposobem na rozwiązanie tego.
Robert Buckley

1

Obecnie używamy tego skryptu wsadowego ServiceMonitor , który wysyła powiadomienia e-mail. Ustawiliśmy to jako zaplanowane zadanie systemu Windows, aby uruchamiało się każdego ranka.

Jedynym minusem jest to, że uruchomienie zajmuje dużo czasu, ponieważ mamy dużą liczbę usług, więc nie możemy uruchamiać go tak często, jak byśmy chcieli. Może Admin REST API lub ArcPy byłoby szybsze.


Wygląda na to, że działa to tylko w wersji 10.0? Ciekawe, czy używasz 10.1 / 10.2 i sprawiłeś, że działa dla Ciebie.
Alex Tereshenkov,

1
Uruchomiłem go krótko na 10.2 i wydawało się, że działa dobrze, ale napotkaliśmy inne problemy z naszym serwerem 10.2, więc nie testowałem go zbyt szeroko. Nie testowałem go wcale z wersją 10.1, ale powinien działać na każdej wersji, ponieważ po prostu sprawdza, czy WSDL dla każdej usługi jest osiągalny.
mrohlf

Rozumiem, dziękuję za informację. Jeśli kiedykolwiek będziesz miał okazję wypróbować Esri's Service Monitor (wydany zaledwie kilka miesięcy temu), myślę, że będzie dobrze pasował do twoich potrzeb ( arcgis.com/home/item.html?id=848f48b0f88e4de7a036377197453efe ). Oto kilka innych przydatnych zasobów - gis.stackexchange.com/questions/73863/…
Alex

Wow, to wygląda naprawdę przydatne - dzięki! Dynamiczne wykrywanie i monitorowanie usług brzmi idealnie dla potrzeb.
mrohlf

1

W wolnym czasie pracowałem nad skryptem Python, który generuje żądanie sieciowe do adresu URL REST serwera ArcGIS i ocenia odpowiedź usługi. Jeśli odpowiedź jest przecząca, zostanie wysłany e-mail z ostrzeżeniem na określony adres e-mail.

Myślę, że jest to proste, ale przydatne do monitorowania poszczególnych usług ArcGIS Server. Mam nadzieję, że to komuś pomoże.

Wszystkie informacje na naszym blogu: http://oneteamgis.wordpress.com/2014/03/24/uno-script-python-che-monitora-i-servizi-di-arcgis-server/

Damiano


Niestety post na blogu nie jest już dostępny online.
Erica
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.