มีวิธีใดบ้างที่จะได้รับอีเมลเมื่อบริการ ArcGIS Server หยุดทำงาน / ลง?


10

เป็นครั้งคราว แต่น่าเสียดายที่บ่อยครั้งบริการ AGS ของฉันก็หยุดโดยไม่มีเหตุผล ฉันมักจะไม่สังเกตเห็นสิ่งนี้จนกว่าผู้ใช้จะโทรหาฉันและถามว่าทำไมแผนที่ของพวกเขาจึงไม่มีข้อมูล

มีวิธีใดบ้าง (ฉันกำลังคิด Python) ที่ฉันสามารถรับการตอบสนองจาก AGS เมื่อบริการหยุดทำงาน ผู้ใช้ AGS รายอื่นจัดการกับปัญหานี้อย่างไร


สิ่งนี้เป็นไปได้โดยใช้ ArcPy สำหรับเซิร์ฟเวอร์ ArcGIS (เวอร์ชั่น 10.1) ฉันกำลังแก้ไขปัญหานี้อยู่ที่ด้านข้างของฉันสำหรับความช่วยเหลือเพิ่มเติมโปรดตรวจสอบทรัพยากรที่ได้รับ )
Sunil

+ 1 คุณต้องการสิ่งนี้สำหรับบริการทั้งหมดหรือบริการเฉพาะหรือไม่? + ดาวน์โหลด ArcGIS Admin API สำหรับรายละเอียดเพิ่มเติม
Sunil

ฉันต้องการมันสำหรับบริการทั้งหมดจริงๆ ... แต่บางอย่างมีความสำคัญมากกว่าบริการอื่น ๆ เพราะบริการบางอย่างส่งข้อมูลไปยังลูกค้าและอื่น ๆ นั้นมีไว้สำหรับใช้ภายใน
Robert Buckley

ในสถานการณ์เช่นนี้อะไรคือวัตถุประสงค์ของการรีไซเคิลหรือการตั้งค่าการตรวจสุขภาพของบริการใด ๆ
Deep

คำตอบ:


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

ฉันจะดูที่ArcGIS Server Admin REST APIสำหรับสิ่งนี้

ดูเหมือนว่าคุณสามารถเขียนสคริปต์ไพ ธ อนที่ทำงานและกำหนดให้รันเป็นระยะ สคริปต์จะได้รับบริการทั้งหมดในคลัสเตอร์จากนั้นดูว่ามีบริการที่น่าสนใจอยู่หรือไม่และตรวจสอบสถานะของบริการนั้นหรือไม่

มิฉะนั้นส่งอีเมลแจ้งเตือน

สคริปต์ยังสามารถเริ่มบริการได้อีกครั้งหากคุณต้องการ

ฉันไม่แน่ใจ แต่ผู้ดูแลระบบแพ็คเกจ ArcPyอาจให้วิธีการทำงานกับ API นี้


ขอบคุณ Kirk .... ฉันจะดูที่ นั่นดูเหมือนจะเป็นวิธีที่สมเหตุสมผลในการทำเรื่องนี้
Robert Buckley

1

ขณะนี้เราใช้สคริปต์แบตช์ServiceMonitorนี้ซึ่งแจ้งเตือนทางอีเมล เราตั้งค่าให้เป็นงานตามกำหนดเวลาของ Windows ดังนั้นจึงทำงานทุกเช้า

ข้อเสียเพียงอย่างเดียวคือมันต้องใช้เวลาสักครู่ในการทำงานเนื่องจากเรามีบริการจำนวนมากดังนั้นเราจึงไม่สามารถเรียกใช้งานได้บ่อยเท่าที่เราต้องการ บางที Admin REST API หรือ ArcPy น่าจะเร็วกว่านี้


ดูเหมือนว่าจะใช้งานได้เฉพาะบน 10.0 เท่านั้น แค่อยากรู้ถ้าคุณใช้ 10.1 / 10.2 และทำให้มันเหมาะกับคุณ
Alex Tereshenkov

1
ฉันใช้เวลาสั้น ๆ ใน 10.2 และดูเหมือนว่าจะทำงานได้ดี แต่เราพบปัญหาอื่น ๆ กับเซิร์ฟเวอร์ 10.2 ของเราดังนั้นฉันจึงไม่ได้ทดสอบอย่างกว้างขวาง ฉันยังไม่ได้ทดสอบกับ 10.1 เลย แต่มันควรจะใช้ได้กับทุกรุ่นเพราะมันเป็นเพียงการตรวจสอบเพื่อดูว่า WSDL สำหรับแต่ละบริการสามารถเข้าถึงได้
mrohlf

ฉันเห็นขอบคุณสำหรับข้อมูล หากคุณเคยได้รับโอกาสลองใช้ Service Monitor ของ Esri (เปิดตัวเมื่อไม่กี่เดือนที่ผ่านมา) ฉันคิดว่ามันเหมาะกับความต้องการของคุณเป็นอย่างดี ( arcgis.com/home/item.html?id=848f48b0f88e4de7a036377197453efe ) นี่คือทรัพยากรที่มีประโยชน์อื่น ๆ - gis.stackexchange.com/questions/73863/…
Alex Tereshenkov

ว้าวนั่นมันดูมีประโยชน์จริงๆ - ขอบคุณ! การค้นพบบริการแบบไดนามิกและการตรวจสอบเสียงสมบูรณ์แบบสำหรับสิ่งที่เราต้องการ
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/

Damiano


โพสต์บล็อกไม่ได้ออนไลน์อีกต่อไปโชคไม่ดี
Erica
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.