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

优质
小牛编辑
138浏览
2023-12-01

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

操作步骤

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

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

    all: john@example.com
  3. 一旦 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

参见本书