Có cách nào để nhận email khi dịch vụ ArcGIS Server bị dừng / ngừng hoạt động không?


10

Thỉnh thoảng, nhưng thật không may, các dịch vụ AGS của tôi chỉ dừng lại mà không có lý do. Tôi thường không nhận thấy điều này cho đến khi người dùng gọi cho tôi và hỏi tại sao bản đồ của họ không có dữ liệu.

Có cách nào (tôi đã nghĩ Python) rằng tôi có thể nhận được phản hồi từ AGS khi dịch vụ dừng lại không? Làm thế nào để người dùng AGS khác đối phó với vấn đề này?


Điều này có thể sử dụng ArcPy cho ArcGIS Server (phiên bản 10.1). Tôi đang giải quyết vấn đề này về phía mình. Để được trợ giúp thêm, vui lòng kiểm tra tài nguyên.arcgis.com/en/help/main/10.1/index.html#// và cho bạn biết khi nào mọi thứ sẽ hoàn hảo về phía tôi: )
Sunil

+ 1 Bạn có cần điều này cho tất cả các dịch vụ hoặc dịch vụ cụ thể không? + Tải xuống API quản trị ArcGIS để biết thêm chi tiết
Sunil

Tôi thực sự cần nó cho tất cả các dịch vụ ... nhưng một số dịch vụ quan trọng hơn các dịch vụ khác vì một số dịch vụ cung cấp dữ liệu cho khách hàng và một số dịch vụ khác được sử dụng nội bộ.
Robert Buckley

Trong tình huống như vậy, mục đích của Tái chế hoặc cài đặt kiểm tra sức khỏe của bất kỳ dịch vụ nào sẽ là gì?
Sâu

Câu trả lời:


3

Tôi đã giải quyết vấn đề tương tự và tôi có giải pháp này. Tôi đã viết bằng Python mã này bên dưới ("localhost" trong URL thay đổi thành tên của máy chủ AGS của bạn):

# -*- 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" 

Hi- Có thể thêm nhật ký cuối cùng cho dịch vụ đã dừng không?
Sâu

4

Tôi sẽ xem xét API REST của ArcGIS Server Admin cho việc này.

Có vẻ như bạn có thể viết một kịch bản python chạy và lên lịch để chạy định kỳ. Kịch bản sẽ nhận được tất cả các dịch vụ trong một cụm , sau đó để xem liệu dịch vụ quan tâm có hiện diện hay không và nếu có thì hãy kiểm tra trạng thái của nó .

Nếu không, gửi email thông báo.

Kịch bản cũng có thể (tái) bắt đầu dịch vụ, nếu bạn muốn.

Tôi không chắc chắn, nhưng quản trị viên gói quản trị ArcPy có thể cung cấp cách để làm việc với API này.


Cảm ơn Kirk .... Tôi đã có một cái nhìn về điều đó. Đó có vẻ là một cách hợp lý để đi về nó.
Robert Buckley

1

Chúng tôi hiện đang sử dụng tập lệnh bó ServiceMonitor này , thông báo qua email. Chúng tôi thiết lập nó như một tác vụ theo lịch trình của Windows để nó chạy mỗi sáng.

Nhược điểm duy nhất là phải mất khá nhiều thời gian để chạy vì chúng tôi có số lượng dịch vụ lớn, vì vậy chúng tôi không thể chạy nó thường xuyên như chúng tôi muốn. Có thể API REST REST hoặc ArcPy sẽ nhanh hơn.


Có vẻ như điều này chỉ hoạt động trên 10.0? Chỉ tò mò nếu bạn sử dụng 10.1 / 10.2 và làm cho nó hoạt động cho bạn.
Alex Tereshenkov

1
Tôi đã chạy nó một cách nhanh chóng vào ngày 10.2 và nó có vẻ hoạt động tốt, nhưng chúng tôi gặp vấn đề khác với máy chủ 10.2 của mình vì vậy tôi đã không thử nghiệm nó rất nhiều. Tôi chưa thử nghiệm nó với 10.1, nhưng nó sẽ hoạt động trên mọi phiên bản vì về cơ bản nó chỉ kiểm tra xem WSDL cho mỗi dịch vụ có thể truy cập được không.
mrohlf

Tôi thấy, cảm ơn bạn đã thông tin. Nếu bạn từng có cơ hội dùng thử Trình giám sát dịch vụ của Esri (mới phát hành vài tháng trước), tôi nghĩ rằng nó sẽ rất phù hợp với nhu cầu của bạn ( arcgis.com/home/item.html?id=848f48b0f88e4de7a036377197453efe ). Dưới đây là một số tài nguyên hữu ích khác - gis.stackexchange.com/questions/73863/ triệt
Alex Tereshenkov

Wow, có vẻ thực sự hữu ích - cảm ơn! Khám phá dịch vụ năng động và giám sát âm thanh hoàn hảo cho những gì chúng ta cần.
mrohlf

1

Trong thời gian rảnh, tôi đã làm việc với tập lệnh Python tạo yêu cầu web đến url REST của máy chủ ArcGIS và đánh giá phản hồi của dịch vụ. Nếu câu trả lời là tiêu cực sẽ được gửi một cảnh báo email đến một địa chỉ email cụ thể.

Tôi nghĩ nó đơn giản nhưng hữu ích để giám sát các dịch vụ riêng lẻ của ArcGIS Server. Tôi hy vọng điều đó hữu ích cho ai đó.

Tất cả thông tin trong blog của chúng tôi: http://oneteamgis.wordpress.com/2014/03/24/uno-script-python-che-monitora-i-servizi-di-arcgis-server/

Damiano


Bài viết trên blog không còn trực tuyến nữa, thật không may.
Erica
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.