ArcGIS Server hizmetleri durdurulduğunda / kapatıldığında e-posta almanın bir yolu var mı?


10

Bazen, ama ne yazık ki, AGS hizmetlerim hiçbir sebepten ötürü durur. Kullanıcılar beni arayıp haritalarında neden veri olmadığını sorana kadar bunu genellikle fark etmiyorum.

Hizmetler durduğunda AGS'den yanıt alabilmemin bir yolu var mı (Python'u düşünüyordum)? Diğer AGS kullanıcıları bu sorunla nasıl başa çıkıyor?


Bu, ArcPIS for ArcGIS Server (sürüm 10.1) kullanılarak mümkündür. Bu konuda benim tarafımda çalışıyorum.Daha fazla yardım için lütfen resources.arcgis.com/en/help/main/10.1/index.html#//… adresini ziyaret edin ve işlerin ne zaman mükemmel olacağını bana bildirin: )
Sunil

+ 1 Tüm servisler veya özel servisler için buna ihtiyacınız var mı? + Daha fazla bilgi için ArcGIS Admin API'sını indirin
Sunil

Gerçekten tüm servisler için buna ihtiyacım var ... ama bazıları diğerlerinden daha önemli çünkü bazı hizmetler müşterilere veri sağlıyor, diğerleri ise dahili kullanım için.
Robert Buckley

Bu durumda, herhangi bir hizmetin Geri Dönüşüm veya sağlık kontrolü ayarının amacı ne olacaktır?
Derin

Yanıtlar:


3

Aynı sorunu çözdüm ve bu çözümü buldum. Python'da aşağıdaki kodu yazdım (URL'deki "localhost", AGS sunucunuzun adını değiştirir):

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

Merhaba- Durdurulmuş hizmet için son günlüğü eklemek mümkün olacak mı?
Derin

4

Bunun için ArcGIS Server Admin REST API'sine bir göz atacağım .

Üzerinde çalışan bir python betiği yazabilir ve düzenli aralıklarla çalışacak şekilde zamanlayabilirsiniz. Komut dosyası bir kümedeki tüm hizmetleri alır , ardından ilgili hizmetin mevcut olup olmadığını ve durumunun durumunu kontrol eder .

Aksi takdirde bir bildirim e-postası gönderin.

İsterseniz komut dosyası hizmeti yeniden başlatabilir.

Emin değilim, ancak ArcPy yönetici paketi yöneticisi bu API ile çalışmak için bir yol sağlayabilir.


Teşekkürler Kirk .... Bir bakayım. Bu mantıksal bir yol gibi görünüyor.
Robert Buckley

1

Şu anda e-posta bildirimleri yapan bu ServiceMonitor toplu komut dosyasını kullanıyoruz . Bunu her gün çalışacak şekilde Windows tarafından zamanlanmış bir görev olarak ayarladık.

Tek dezavantajı, çok sayıda hizmetimiz olduğu için çalıştırılması oldukça uzun sürmesi, bu yüzden istediğimiz sıklıkta çalıştıramamamız. Belki Yönetici REST API veya ArcPy daha hızlı olabilir.


Bu sadece 10.0 üzerinde çalışıyor gibi görünüyor? Sadece 10.1 / 10.2 kullanıp kullanamayacağınızı merak ediyorsunuz.
Alex Tereshenkov

1
Ben kısa bir süre 10.2 üzerinde koştu ve iyi gibi görünüyordu, ama biz çok kapsamlı test etmedi bu yüzden 10.2 sunucumuz ile diğer sorunları koştu. Ben hiç 10.1 ile test etmedim, ama temelde sadece her hizmet için WSDL ulaşılabilir olup olmadığını kontrol çünkü herhangi bir sürüm üzerinde çalışması gerekir.
mrohlf

Görüyorum, bilgi için teşekkürler. Esri'nin Servis Monitörünü denemek için bir şansınız varsa (sadece birkaç ay önce piyasaya sürüldü), ihtiyaçlarınızı gerçekten iyi karşılayacağını düşünüyorum ( arcgis.com/home/item.html?id=848f48b0f88e4de7a036377197453efe ). İşte diğer bazı yararlı kaynaklar - gis.stackexchange.com/questions/73863/…
Alex Tereshenkov

Vay canına, bu gerçekten kullanışlı görünüyor - teşekkürler! Dinamik hizmet keşfi ve izleme, ihtiyaç duyduğumuz şey için mükemmel geliyor.
mrohlf

1

Boş zamanlarında ArcGIS sunucusu REST URL'sine bir web isteği üreten ve hizmetin yanıtını değerlendiren bir Python betiği üzerinde çalıştım. Yanıt olumsuz ise, belirli bir e-posta adresine bir e-posta uyarısı gönderilir.

ArcGIS Server'ın bireysel hizmetlerini izlemek için basit ama kullanışlı olduğunu düşünüyorum. Umarım birisi için faydalıdır.

Blogumuzdaki tüm bilgiler: http://oneteamgis.wordpress.com/2014/03/24/uno-script-python-che-monitora-i-servizi-di-arcgis-server/

Damiano


Blog yazısı maalesef artık çevrimiçi değil.
Erica
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.