通过 Email 发送包含特定标签的日志信息

像大多数系统管理员一样,如果没有收到足够的邮件,你会寻找一种方法生成邮件。 另外一种 Puppet 报告形式被称为 tagmail。这会根据你设定的 e-mail 地址将日志信息发送到你指定的邮箱。

操作步骤

  1. 在 puppet.conf 文件中为 reports 添加以逗号分割的 tagmail 选项:

    [master]
    reports = store,tagmail
    
  2. 在 /etc/puppet/tagmail.conf 文件中,添加一些 标签(tags)并指定相应的 e-mail 地址。例如:下面的配置行将所有的日志消息发送到 [email protected]

    all: [email protected]
    
  3. 一旦 Puppet 运行,你就会收到一份类似如下内容的 e-mail:

    From: [email protected]
    Subject: Puppet Report for cookbook.bitfieldconsulting.com
    To: [email protected]
    
    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: [email protected]

你可以在 tagmail.conf 文件中定义多个规则, Puppet 会为所有匹配的规则发送邮件。 在下面的例子中,错误消息发送到一个邮件地址, 而与 web 服务器相关的消息发送到另一个邮件地址:

err: [email protected]
webserver: [email protected]

更多用法

tagmail 报告是一个非常强大的特性, 你可能需要在实践中才能获得相关的体会。 下面列出了一些有用的技巧。

什么是标签?

使用标签 一节中将会对标签做更详细的解释,但为了能使用标签的报告特性, 现在只要知道 tag 可以为节点(node)或类(class)命名就足够了。例如: webserver 标签匹配所有执行 webserver 类的客户端。

你也可以像下面这样使用 tag 函数直接添加一个标签:

class exim {
    tag("email")
    service { "exim4":
        ensure => running,
        enable => true,
    }
}
指定多个标签或排除指定的标签

你可以在 tagmail.conf 文件中以逗号间隔方式指定一个标签列表, 也可以在某个标签之前使用叹号(!)排除这个标签。

all, !webserver: [email protected]
发送报告到多个 e-mail 地址

你可以将消息同时发送到多个地址,用如下的方式使用逗号分割多个 e-mail 地址:

err: [email protected], [email protected]

参见本书