Python-Skript, das das Azure-Status-RSS crawlt und an Hipchat sendet

Überblick

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.

Versuchte es zu schaffen

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.

azure.png

Zusammenfassung

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

Python-Skript, das das Azure-Status-RSS crawlt und an Hipchat sendet
Ein Memorandum zum Ausführen eines Python-Skripts in einer Bat-Datei
Was ist in dieser Variablen (wenn das Python-Skript ausgeführt wird)?
Fileinput, ein Modul, das das Schreiben von Perl-ähnlichen Filterprogrammen in Python erleichtert
Ein Skript, das bis zu 5 Sekunden zählt und in Blenders Python stoppt
Versuchen Sie es mit GUI, PyQt in Python
Ein Python-Skript, das ein GTK-Bild (Clipboard) in einer Datei speichert.
Erstellen wir ein Skript, das sich bei Ideone.com in Python registriert.
Eine Standardmethode zum Entwickeln und Verteilen von Paketen in Python
Erstellen Sie den Code, der in Python "A und vorgeben B" ausgibt
Objektorientiert in C-Sprache: "○ ✕ game" wurde überarbeitet und nach Python portiert
So schreiben Sie eine Meta-Klasse, die sowohl Python2 als auch Python3 unterstützt
Eine Reihe von Skriptdateien, die Wordcloud mit Python3 ausführen
Versuchen Sie einfach, einen Webhook mit ngrok und Python zu erhalten
Ein Python-Skript, das Oracle-Datenbankdaten in CSV konvertiert
[C / C ++] Übergeben Sie den in C / C ++ berechneten Wert an eine Python-Funktion, um den Prozess auszuführen, und verwenden Sie diesen Wert in C / C ++.
Eine Geschichte, die es einfach macht, den Wohnbereich mit Elasticsearch und Python abzuschätzen
Rufen Sie die Excel-Liste rekursiv in einem bestimmten Ordner mit Python ab und schreiben Sie sie in Excel.
Python-Skript, das den Status des Servers über den Browser überprüfen kann
Eine einfache Möglichkeit, die in Python benötigte Zeit anzuzeigen und sie intelligenter zu verbessern
Verarbeitung zur Verwendung von notMNIST-Daten in Python (und versucht, sie zu klassifizieren)
So installieren Sie OpenCV in Cloud9 und führen es in Python aus
Schreiben Sie ein Skript in Shell und Python, um Sie in Slack zu benachrichtigen, wenn der Vorgang abgeschlossen ist
Übergeben von Argumenten an Python-Skripte in SPSS Modeler Batch
Reguläre Ausdrücke, die in Python leicht und solide zu erlernen sind
Lesen Sie die Big-Endian-Binärdatei in Python und konvertieren Sie sie in ndarray
Ich habe eine Funktion zum Laden des Git-Erweiterungsskripts in Python geschrieben
Ich habe ein Skript geschrieben, um Webseiten-Links in Python zu extrahieren
Ich möchte eine Pipfile erstellen und im Docker wiedergeben
[Python] Die Rolle des Sterns vor der Variablen. Teilen Sie den Eingabewert und weisen Sie ihn einer Variablen zu
Ein Skript, das 0, 1 an die erste Python-Primzahl zurückgibt
Eine Kurzanleitung zu PyFlink, die Apache Flink und Python kombiniert
Ein Python-Skript, das auf dem Mac erstellte ._DS_Store- und ._ * -Dateien löscht
[Python / Jupyter] Übersetzen Sie den Kommentar des in die Zwischenablage kopierten Programms und fügen Sie ihn in eine neue Zelle ein.
Ich habe ein POST-Skript erstellt, um ein Problem in Github zu erstellen und es im Projekt zu registrieren
Ein Skript, das Tweets mit Python abruft, sie in einer externen Datei speichert und morphologische Analysen durchführt.
So geben Sie eine Zeichenfolge in Python ein und geben sie unverändert oder in die entgegengesetzte Richtung aus.
Ich habe eine Webanwendung in Python erstellt, die Markdown in HTML konvertiert
Ich habe in Python einen Discord-Bot erstellt, der übersetzt, wenn er reagiert
So setzen Sie in Python ein Leerzeichen mit halber Breite vor Buchstaben und Zahlen.
Stellen Sie von Python aus eine Verbindung zu postgreSQL her und verwenden Sie gespeicherte Prozeduren in einer Schleife.
So machen Sie den Containernamen in Docker als Subdomain zugänglich
Ich habe versucht, einen Formatierer zu entwickeln, der Python-Protokolle in JSON ausgibt
Ein Python-Programm, das die Größe eines Videos ändert und es in ein Bild verwandelt
Ich habe ein Skript in Python erstellt, um MDD-Dateien in das Scrapbox-Format zu konvertieren
So stoppen Sie das Programm bis zu einem bestimmten Datum und einer bestimmten Uhrzeit in Python
Pin aktuelles Verzeichnis an Skriptverzeichnis in Python
Beispielskript zum Überfüllen von Signalen in Python
Führen Sie den Python-Interpreter im Skript aus
Wie bekomme ich Stacktrace in Python?
Verwendung ist und == in Python
So führen Sie Maya Python-Skripte aus
So generieren Sie QR-Code und Barcode in Python und lesen ihn normal oder in Echtzeit mit OpenCV
Ein Python-Programm, das prüft, ob Inhalte aktualisiert wurden, und git festschreibt und an GitLab sendet, wenn diese aktualisiert wurden.
Beachten Sie, dass cibuildwheel das Python-Rad (einschließlich des C ++ - Moduls) in großen Mengen mit CI erstellt und auf PyPI hochlädt
Ich habe ein System erstellt, das automatisch entscheidet, ob es morgen mit Python ausgeführt wird, und es zu Google Kalender hinzufügt.
[Python] Ich habe ein Skript erstellt, das Dateien auf dem lokalen PC automatisch ausschneidet und auf eine externe SSD einfügt.
Erweitertes Lernen 35 Python Lokale Entwicklung, fügen Sie einen Link zu myModule hinzu und importieren Sie ihn.