Ich möchte den Integritätsstatus von Azure selbst unter Azure-Status überprüfen, um Dienste in Azure zu überwachen. Push-Benachrichtigungen sagen es mir jedoch nicht, daher habe ich eine Anfrage zum Crawlen von RSS und Benachrichtigen von Hipchat gestellt.
Ich habe gehört, dass Feed-Parser gut zum Lesen von RSS mit Python geeignet ist, daher werde ich ihn verwenden. Hipchat trifft nur Rest-API mit Token im Raum. Aus verschiedenen Gründen erfolgt der Zugriff über einen Proxy, sodass Sie ihn ein wenig einrichten können.
azure_status_notificator.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import requests
import json
import urllib2
import feedparser
proxies = {
"http": "hoge:8080",
"https": "hoge:8080",
}
def hipchat_post_to_room(room_id, auth_token, msg):
global proxies
data = {
"color": "red",
"message_format": "text",
"message": msg,
}
headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}
request_url = "https://api.hipchat.com/v2/room/" + room_id + "/notification?auth_token=" + auth_token
return requests.post(request_url, proxies=proxies, data=json.dumps(data), headers=headers)
def get_azure_status():
global proxies
proxy = urllib2.ProxyHandler(proxies)
data = feedparser.parse("http://azure.microsoft.com/ja-jp/status/feed/", handlers = [proxy])
res = ""
for e in data["entries"]:
if e:
res += e.summary_detail.value
return res
if __name__ == "__main__":
status = get_azure_status()
room_id = "XXXXXX"
auth_token="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
if status:
msg = "@all %s" % status
hipchat_post_to_room(room_id, auth_token, msg)
Wenn nichts vorhanden ist, geben Sie eine if-Erklärung ab, damit diese nicht benachrichtigt wird.
Hipchat kann übrigens auch im HTML-Format gepostet werden, aber beachten Sie, dass @all und Erwähnungen in diesem Fall nicht funktionieren.
Als ich Hipchat benachrichtigte, dachte ich, es wäre praktisch, es zu öffnen, sobald es einen Link in Azure-Status gibt, aber wenn ich das tun würde, wäre das Format anders. Also muss ich es zweimal posten.
Danach cronen Sie das erstellte Skript jede Stunde.
00 * * * * python /home/hoge/azure_status_notificator.py
erledigt.
Da RSS normalerweise nur von Feeds oder Lesern angezeigt wird, war es eine gute Gelegenheit zu wissen, welche Art von Daten und Strukturen der Feed tatsächlich fließt. Es ist schwer zu überprüfen, ob der Feed nicht tatsächlich fließt, da er einem RSS-Schema ähnelt.
Habe ich bei der Verwendung der Cloud versehentlich nur meine eigene und diese Instanz gelöscht? Oder es ist ein Fehler von Azure selbst, es ist notwendig, ihn zu isolieren und zu berücksichtigen.
Übrigens ist Azure-Supportplan angemessen, daher wird von "Geld bezahlen" gesprochen. Bei voller Unterstützung ist der Preis angemessen.
Ich fragte mich, ob ich es auf die von mir genutzten Dienste oder AZ beschränken sollte.
Recommended Posts