Чи є спосіб отримати електронний лист, коли послуги ArcGIS Server зупинені / закриті?


10

Іноді, але занадто часто, на жаль, мої послуги AGS просто зупиняються без причини. Зазвичай я цього не помічаю, поки користувачі не дзвонять мені і не запитують, чому їхні карти не мають даних.

Чи є спосіб (я думав, Python), що я можу отримати відповідь від AGS, коли служби припиняються? Як інші користувачі AGS вирішують цю проблему?


Це можливо за допомогою ArcPy для ArcGIS Server (версія 10.1). Я працюю над цим питанням на моєму боці .Для отримання додаткової допомоги , будь ласка , перевірте resources.arcgis.com/en/help/main/10.1/index.html # // ... і нехай ви знаєте , коли все буде відмінно на моєму боці: )
Суніль

+ 1 Вам це потрібно для всіх служб або конкретних послуг? + Завантажте ArcGIS Admin API для отримання більш детальної інформації
Sunil

Мені це потрібно для всіх сервісів справді ... але деякі важливіші за інші, оскільки одні сервіси доставляють дані клієнтам, а інші - для внутрішнього використання.
Роберт Баклі

У такій ситуації, яка буде мета рециклінгу або перевірки стану здоров’я будь-якої служби?
Глибокий

Відповіді:


3

Я вирішив ту саму проблему і маю це рішення. Я написав у Python цей код нижче ("localhost" у зміні URL-адреси на ім'я вашого сервера 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" 

Привіт. Чи вдасться додати остаточний журнал для зупиненої послуги?
Глибокий

4

Я б поглянув на REST API ArcGIS Server Admin .

Схоже, ви можете написати скрипт python, який працює і запланувати його для періодичного запуску. Сценарій отримає всі служби в кластері , щоб потім перевірити, чи є послуга, що цікавить, і якщо так, перевірити її стан .

В іншому випадку надішліть сповіщення електронною поштою.

Сценарій також може (пере) запустити послугу, якщо ви хочете.

Я не впевнений, але адміністратор пакета ArcPy адміністратор може запропонувати спосіб роботи з цим API.


Дякую Кірк .... Я буду дивитись на це. Це здається логічним шляхом для цього.
Роберт Баклі

1

Зараз ми використовуємо цей пакетний сценарій ServiceMonitor , який надсилає сповіщення електронною поштою. Ми поставили його як заплановане завдання для Windows, так що воно працює щоранку.

Єдиним недоліком є ​​те, що запуск займає досить багато часу, оскільки у нас є велика кількість сервісів, тому ми не можемо запускати його так часто, як хотілося б. Можливо, API адміністратора REST або ArcPy було б швидше.


Здається, як це працює лише на 10.0? Цікаво, якщо ви користуєтесь 10.1 / 10.2 і змусили вас працювати.
Олексій Терешенков

1
Я коротко запустив його на 10.2, і, здавалося, він працює нормально, але ми зіткнулися з іншими проблемами з нашим сервером 10.2, тому я не перевіряв його дуже широко. Я взагалі не перевіряв його з 10.1, але він повинен працювати на будь-якій версії, оскільки це, як правило, лише перевірка того, чи є доступність WSDL для кожної послуги.
mrohlf

Бачу, дякую за інформацію. Якщо ви коли-небудь зможете спробувати Монітор обслуговування Esri (випущений лише кілька місяців тому), я думаю, він би дуже відповідав вашим потребам ( arcgis.com/home/item.html?id=848f48b0f88e4de7a036377197453efe ). Ось ще кілька корисних ресурсів - gis.stackexchange.com/questions/73863/…
Олексій Терешенков

Нічого собі, це виглядає дуже корисно - дякую! Динамічне виявлення та моніторинг послуг ідеально підходить для того, що нам потрібно.
mrohlf

1

У вільний час я працював над сценарієм Python, який генерує веб-запит до URL-адреси REST-сервера ArcGIS і оцінює відповідь служби. Якщо відповідь негативна, надішлемо сповіщення електронною поштою на певну адресу електронної пошти.

Я думаю, що це просто, але корисно для моніторингу окремих служб ArcGIS Server. Я сподіваюся, що це комусь корисно.

Вся інформація у нашому блозі: http://oneteamgis.wordpress.com/2014/03/24/uno-script-python-che-monitora-i-servizi-di-arcgis-server/

Даміано


На жаль, повідомлення в блозі більше не в Інтернеті.
Еріка
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.