Lass uns in Ordnung gehen
Registrieren Sie sich wie folgt, wenn Sie im ersten Monat ein kostenloses Ticket für 20.000 Yen erhalten können. Microsoft Azure Free Trial: Try Azure | Azure Free Trial
Die Telefonnummer, die erste 0 wird herausgezogen ... oder so ähnlich, sie ist normalerweise registriert. Referenz: [[Abonnement] Persönliche Authentifizierung für neue Windows Azure-Verträge - Microsoft Azure-Supportteam-Website - Site Home - MSDN-Blogs](http://blogs.msdn.com/b/dsazurejp/archive/2013/09/12/ new-subscription-personal-indentification.aspx)
Ich habe centos6.5 (was ist OpenLogic?) Mit 1 Kern-CPU und 1,75 GB Speicher gemacht. Der Verwaltungsbildschirm ist eine Ressource, also ein Shareot.
Ich habe fluentd (wegen fluent-cat) mit td-agent, ruby2.0.0 oder gem installiert.
Referenz: Ruby mit rbenv (CentOS) --Qiita installieren
Ich habe mich nicht mit der nervigen virtuellen Domain oder irgendetwas in der Umgebung angelegt. Bitte zögern Sie nicht, es zu benutzen.
Ich habe an 3 Stellen mit Postfix gespielt
/etc/postfix/main.cf
#Fügen Sie Folgendes hinzu
allow_mail_to_commands = alias,forward,include
/etc/aliases
#Fügen Sie Folgendes hinzu
hoge: :include:/home/hoge/.forward
/home/hoge/.forward
"|/usr/bin/python /home/hoge/mail_parser/script1.py"
Normalerweise handelt es sich um sendmail, daher muss möglicherweise auf postfix umgeschaltet werden, aber dieser war ärgerlich. Der Grund für die Aufnahme ist, den Ausführungsbenutzer von script1.py zu ändern, nicht wahr? Ich war wütend auf einen Berechtigungsfehler, also ...
Nachdem Sie die Einstellungen geändert haben, vorsichtig
$ newaliases
$ /etc/init.d/postfix reload
Und spiegeln Sie die Einstellungen wider.
Referenz: [K-One Enterprise Engineer-Memo (`・ ω ・ ´) Business !!: Postfix-Einstellung Teil 5 Starten Sie das durch E-Mail-Empfang ausgelöste Programm](http://k-1-ne-jp.blogspot.jp/ 2013/01 / postfix_11.html) Mail mit einzeiligem Mail-Befehl überspringen - Mountain Walk-Programmierer
Skript 1 sieht wie folgt aus und führt dem Parser Rohdaten von der Standardeingabe zu.
/home/hoge/mail_parser/script1.py
#! /usr/local/bin/python
# -*- coding:utf-8 -*-
from fluent import sender
from fluent import event
import sys
import email
### get stdin
input_lines = sys.stdin.read()
### get mail text
mail_text = email.message_from_string(input_lines)
### send message to fluentd
sender.setup('out.test', host='localhost', port=24224)
event.Event('follow', {
'from': mail_text["from"],
'to': mail_text["to"],
'date': mail_text["date"],
'subject': mail_text["subject"],
'body': mail_text.get_payload()
})
Empfangen Sie mit tcp mit in_forward und führen Sie Skript 2 mit out_exec aus.
/etc/td-agent/td-agent.conf
### built-in TCP input
<source>
type forward
port 24224
</source>
### file output
<match local.**>
type file
path /var/log/td-agent/access
</match>
### debug stdout
<match debug.**>
type stdout
</match>
### out_exec
<match out.**>
type exec
command /usr/bin/python /var/td-agent/bin/hipchat_poster/script2.py
time_key got_at
time_format %Y-%m-%d %H:%M:%S
format json
flush_interval 5s
buffer_path /var/td-agent/tmp/buffer
buffer_chunk_limit 256m
buffer_queue_limit 10
retry_limit 3
retry_wait 1s
</match>
Wenn Sie out.test in local.test oder debug.test in script1.py oben ändern,
echo "postfix test mail" | mail -s "test mail" hoge@localhost
Sie können eine Testmail senden und überprüfen, ob der Inhalt der Mail in die Datei geschrieben wurde.
Übrigens, wenn Sie Daten an out_exec übergeben, wird der Pfad der Pufferdatei, die die Daten enthält, an das Argument des Ausführungsbefehls übergeben. Seien Sie also dort vorsichtig. Zum Glück konnte ich es lösen, indem ich es den Leuten um mich herum erzählte, aber ich habe Angst vor einem Missverständnis der Spezifikationen ... Ich habe mich gefragt, ob es mit Standardeingaben kommen würde ...
Wenn Sie den fließenden Puffer nicht richtig steuern, bleibt er hängen. Seien Sie also vorsichtig. Ich muss noch viel darüber verstehen.
Referenz: exec Output Plugin | Fluentd Mehrstufiger fließender + mongodb hamari Ort - Stanakas Blog
Dann liest Script 2 den json des Argumentdateipfads und sendet eine Nachricht wie folgt an hipchat.
Es ist notwendig, ein Hipchat-Konto zu erstellen und Token im Voraus auszugeben, Hypcaht mit Pip zu platzieren und ein Verzeichnis zu öffnen.
/var/td-agent/bin/hipchat_poster/script2.py
from hypchat import HypChat
import sys
import json
def main():
### api call rundown
API_KEY = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
ROOM_NUMBER = 000000
DEFAULT_COLOR = "purple"
### get fluentd log
f = open(sys.argv[1], 'r')
data = json.load(f)
input_lines = "[" + data["date"] + "] " + data["subject"] + ":" + data["body"]
### post message to hipchat
hc = HypChat(API_KEY)
room = hc.get_room(ROOM_NUMBER)
message = input_lines
room.notification(message, color=DEFAULT_COLOR)
return 0
if __name__ == "__main__":
main()
Referenz: Überprüfen Sie die Funktion der Fluentd-Plug-Ins in_exec und out_exec | OpenGroove
Nachdem
echo "postfix test mail" | mail -s "test mail" hoge@localhost
Als ich es gepostet habe, konnte ich es wie folgt im Hipchat posten. Ich bin glücklich.
Übrigens habe ich vorerst Monit oder etwas in die Überwachung eingefügt und versucht, die Alert-Mail zu fliegen, aber da es sich um ein Studium handelt, werde ich verschiedene explizite Alert-Mails erstellen, und wenn ich einen fließenden Parser dafür schreibe, bin ich mit dieser Kreation sehr zufrieden. Ich habe es getan, also beim nächsten Mal.
das ist alles.
Recommended Posts