Allons dans l'ordre
Inscrivez-vous à partir de ce qui suit lorsque vous pouvez obtenir un billet gratuit pour 20000 yens gratuitement le premier mois. Microsoft Azure Free Trial: Try Azure | Azure Free Trial
Le numéro de téléphone, le premier 0 est retiré ... ou quelque chose comme ça, il est généralement enregistré. référence: [[Abonnement] Authentification personnelle pour les nouveaux contrats Windows Azure - Site de l'équipe de support Microsoft Azure - Accueil du site - Blogs MSDN](http://blogs.msdn.com/b/dsazurejp/archive/2013/09/12/ new-subscription-personal-indentification.aspx)
J'ai créé centos6.5 (qu'est-ce qu'OpenLogic?) Avec 1 processeur central et 1,75 Go de mémoire. L'écran de gestion est une ressource, donc c'est un partage.
J'ai installé fluentd (à cause de fluent-cat) avec td-agent, ruby2.0.0 ou gem.
référence: Installez ruby en utilisant rbenv (CentOS) --Qiita
Je n'ai pas joué avec le domaine virtuel ennuyeux ou quoi que ce soit autour de lui. N'hésitez pas à l'utiliser.
J'ai joué avec postfix à 3 endroits
/etc/postfix/main.cf
#Ajoutez ce qui suit
allow_mail_to_commands = alias,forward,include
/etc/aliases
#Ajoutez ce qui suit
hoge: :include:/home/hoge/.forward
/home/hoge/.forward
"|/usr/bin/python /home/hoge/mail_parser/script1.py"
Normalement c'est sendmail, donc il peut être nécessaire de passer à postfix, mais celui-ci était ennuyeux. La raison de l'inclusion est de changer l'utilisateur d'exécution de script1.py, n'est-ce pas? Je me suis fâché avec une erreur d'autorisation, alors ...
Après avoir modifié les paramètres, doucement
$ newaliases
$ /etc/init.d/postfix reload
Et refléter les paramètres.
référence: [K-One Enterprise Engineer Memo (`・ ω ・ ´) Business !!: postfix Setting Part 5 Démarrez le programme déclenché par la réception du courrier](http://k-1-ne-jp.blogspot.jp/ 2013/01 / postfix_11.html) Ignorer le courrier avec la commande de messagerie sur une ligne - Programmeur de marche en montagne
Le script 1 est comme le suivant, fournissant du courrier brut à l'analyseur à partir d'une entrée standard.
/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()
})
Recevoir avec tcp avec in_forward et exécuter le script 2 avec out_exec.
/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>
Si vous remplacez out.test par local.test ou debug.test dans script1.py ci-dessus,
echo "postfix test mail" | mail -s "test mail" hoge@localhost
Vous pouvez envoyer un mail de test et vérifier que le contenu du mail est écrit dans le fichier.
Au fait, lors du passage de données à out_exec, le chemin du fichier tampon contenant les données est passé comme argument de la commande d'exécution, alors soyez prudent. Heureusement, j'ai pu le résoudre en le disant aux gens autour de moi, mais j'ai peur de mal comprendre les spécifications ... Je me demandais si cela viendrait avec une entrée standard ...
De plus, si vous ne contrôlez pas correctement le tampon fluentd, il restera bloqué, alors faites attention à cela. J'ai encore beaucoup à comprendre à ce sujet.
référence: exec Output Plugin | Fluentd Multi-stage fluentd + mongodb hamari place - blog destanaka
Ensuite, Script 2 lit le json du chemin du fichier d'argument et publie un message sur hipchat comme suit.
À l'avance, vous devez créer un compte hipchat, émettre des jetons, mettre hypcaht avec pip et ouvrir un répertoire.
/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()
référence: Vérifiez le fonctionnement des plug-ins Fluentd in_exec et out_exec | OpenGroove
Après ça
echo "postfix test mail" | mail -s "test mail" hoge@localhost
Quand je l'ai posté, j'ai pu le poster sur hipchat avec le sentiment suivant. Je suis heureux.
Au fait, pour le moment, j'ai mis monit ou quelque chose dans la surveillance et j'ai essayé de faire voler le mail d'alerte, mais comme c'est pour étudier, je vais faire divers mails d'alerte explicites et écrire un analyseur fluide pour cela et je suis très satisfait de cette création. Je l'ai fait, donc la prochaine fois.
c'est tout.
Recommended Posts