Есть ли способ получить электронное письмо, когда сервисы ArcGIS Server остановлены / выключены?


10

Иногда, но слишком часто, к сожалению, мои сервисы AGS просто останавливаются без причины. Обычно я не замечаю этого, пока пользователи не позвонят мне и не спросят, почему на их картах нет данных.

Есть ли способ (я думал Python), что я могу получить ответ от AGS, когда службы останавливаются? Как другие пользователи AGS справляются с этой проблемой?


Это возможно при использовании ArcPy for 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" 

Привет. Можно ли будет добавить окончательный журнал для остановленной службы?
Deep

4

Я бы взглянул на API REST ArcGIS Server Admin для этого.

Похоже, вы могли бы написать скрипт на Python, который будет запускаться и планировать его периодическую работу. Сценарий получит все службы в кластере , а затем выяснит, присутствует ли интересующая служба, и, если это так, проверит ее состояние .

В противном случае отправьте уведомление по электронной почте.

Сценарий также может (пере) запустить службу, если хотите.

Я не уверен, но администратор пакета администрирования ArcPy может предоставить способ работы с этим API.


Спасибо Кирк .... Я посмотрю на это. Это кажется логичным способом сделать это.
Роберт Бакли

1

В настоящее время мы используем этот пакетный скрипт ServiceMonitor , который отправляет уведомления по электронной почте. Мы настроили это как запланированное задание Windows, чтобы оно выполнялось каждое утро.

Единственным недостатком является то, что запуск занимает много времени, поскольку у нас есть большое количество служб, поэтому мы не можем запускать его так часто, как хотелось бы. Может быть, Admin REST API или 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.