We use Sendgrid for email delivery on our cloud. Using custom commands in munin can be tricky. After struggling for some time I wrote a small python script to send emails from munin using sendgrid.
Add this line to munin.conf
contacts mycontact
contact.mycontact.command /usr/bin/sendemail alerts@example.com "[Munin] Alert for ${var:host}" "warnings: ${var:wfields} / criticals: ${var:cfields}"
contact.mycontact.text text
Save this file as sendemail in /usr/bin and give it execute permission using chmod +x /usr/bin/sendemail. You should configure the email and sendgrid login details before using this script.
#!/usr/bin/python
import smtplib, sys
from email.mime.text import MIMEText
from email.Header import Header
DEFAULT_SENDER = 'noreply@example.com'
SENDGRID_USER = 'user'
SENDGRID_PASSWORD = 'pass'
if len(sys.argv) < 3:
print 'Usage: ./sendemail "foo@example.com" "This is the subject" "This is the email text"'
sys.exit(1)
smtp = smtplib.SMTP('smtp.sendgrid.net', 2525, 'www.example.com')
smtp.starttls()
smtp.login(SENDGRID_USER, SENDGRID_PASSWORD)
emailIds = sys.argv[1].split(',')
subject = sys.argv[2]
body = sys.argv[3]
message = MIMEText(body)
message['Subject'] = Header(subject)
message['From'] = DEFAULT_SENDER
message['To'] = ','.join(emailIds)
smtp.sendmail(DEFAULT_SENDER, emailIds, message.as_string())
You should start receiving alerts from munin.
Leave a Reply