通过 Email 发送包含特定标签的日志信息
像大多数系统管理员一样,如果没有收到足够的邮件,你会寻找一种方法生成邮件。 另外一种 Puppet 报告形式被称为 tagmail
。这会根据你设定的 e-mail 地址将日志信息发送到你指定的邮箱。
操作步骤
在
puppet.conf
文件中为 reports 添加以逗号分割的tagmail
选项:[master] reports = store,tagmail
在
/etc/puppet/tagmail.conf
文件中,添加一些 标签(tags)并指定相应的 e-mail 地址。例如:下面的配置行将所有的日志消息发送到 john@bitfieldconsulting.com :all: john@example.com
一旦 Puppet 运行,你就会收到一份类似如下内容的 e-mail:
From: report@cookbook.bitfieldconsulting.com Subject: Puppet Report for cookbook.bitfieldconsulting.com To: john@example.com Mon Jan 17 08:42:30 -0700 2011 //cookbook.bitfieldconsulting.com/ Puppet (info): Caching catalog for cookbook.bitfieldconsulting.com Mon Jan 17 08:42:30 -0700 2011 //cookbook.bitfieldconsulting.com/ Puppet (info): Applying configuration version '1295278949'
工作原理
Puppet 在 tagmail.conf
配置文件中查找每一行配置, 匹配标签(tag)并将消息发送到指定的邮箱。名为 all
的特殊标签会匹配所有的消息。 名为 err
的标签会匹配所有的错误消息:
err: john@example.com
你可以在 tagmail.conf
文件中定义多个规则, Puppet 会为所有匹配的规则发送邮件。 在下面的例子中,错误消息发送到一个邮件地址, 而与 web 服务器相关的消息发送到另一个邮件地址:
err: puppetmaster@example.com webserver: webteam@example.com
更多用法
tagmail
报告是一个非常强大的特性, 你可能需要在实践中才能获得相关的体会。 下面列出了一些有用的技巧。
什么是标签?
在 使用标签 一节中将会对标签做更详细的解释,但为了能使用标签的报告特性, 现在只要知道 tag 可以为节点(node)或类(class)命名就足够了。例如: webserver
标签匹配所有执行 webserver 类的客户端。
你也可以像下面这样使用 tag
函数直接添加一个标签:
class exim { tag("email") service { "exim4": ensure => running, enable => true, } }
指定多个标签或排除指定的标签
你可以在 tagmail.conf
文件中以逗号间隔方式指定一个标签列表, 也可以在某个标签之前使用叹号(!)排除这个标签。
all, !webserver: puppetmaster@example.com
发送报告到多个 e-mail 地址
你可以将消息同时发送到多个地址,用如下的方式使用逗号分割多个 e-mail 地址:
err: puppetmaster@example.com, sysadmin@example.com