当前位置: 首页 > 工具软件 > Mtail > 使用案例 >

mtail 部署介绍

燕实
2023-12-01

介绍

mtail 预定为在每台机器上运行,并作为该机器上运行的多个应用程序的监视器。它以1:1的映射方式运行一个或多个程序到这些客户端应用程序。

配置概览

mtail is configured with commandline flags.

The --help flag will print a list of flags for configuring mtail.

(Flags may be prefixed with either - or --)

Basic flags necessary to start mtail:

–logs 是一个逗号分隔的文件名列表,可以从中提取,但也可以多次使用,每个文件名都可以是glob模式。将命名管道作为文件名传递到此标志时,可以从中读取命名管道。

–progs 是一个目录路径包含mtail程序。程序必须要以 .mtail 为后缀

mtail 默认占用监听端口为3903,也可以通过–port 修改

详情

启动mtail

mtail --progs /etc/mtail --logs /var/log/syslog --logs /var/log/ntp/peerstats

mtail将开始从当前文件结尾读取指定的日志,如果日志文件有更新时会继续读取。它将尝试正确处理通过重命名或符号链接更改而旋转的日志文件。

引入多个logs监控

多次使用–logs传递与要跟踪的日志匹配的glob模式。这包括命名管道。

轮询文件系统频率

mtail 轮询文件系统时间设置通过参数 --poll_log_interval,不设置则默认为250ms。为新创建或删除的日志路径名提供的–log模式。

例如:

mtail --progs /etc/mtail --logs /var/log/syslog --poll_interval 250ms --poll_log_interval 250ms

设置垃圾收集间隔

mtail在运行期间累积度量和日志文件.默认情况下,每小时都会发生一次垃圾收集过程,查找过期的指标和过时的日志文件.

过时的日志文件是24小时内未读取的任何正在监视的日志。

可以在命令行上使用–expired_metrics_gc_interval和–stale_log_gc_intervalflag更改垃圾收集运行之间的间隔,它们接受与Go时间兼容的持续时间字符串。

运行时错误日志速率

如果您的程序故意无法解析某些日志行,那么您可能会生成大量运行时错误,这些错误通常在标准INFO级别记录,这可能会填满您的磁盘。

您可以在命令行上使用–novm_logs_runtime_errors或–vm_logs_runtime_errors=false禁用此功能,然后只能在HTTP状态控制台中看到最近的运行时错误。

通过Docker运行

如果使用卷公开应用程序容器的日志,则mtail可以作为sidecar进程运行。

docker run -d --name myapp -v /var/log/myapp myapp

创建运行,指定了卷,默认端口 3903

docker run -dP \
   --name myapp-mtail \
   --volumes-from myapp \
   -v examples:/etc/mtail \
   mtail --logs /var/log/myapp --progs /etc/mtail

优化不指定卷添加映射端口等

sudo docker run -d \
   -m 512m        \
   --cpus=1.0     \
   -p 3903:3903   \
   --name myapp-mtail \
   -v /var/log/zcm/nms-metrics.log:/var/log/zcm/nms-metrics.log \
   -v /etc/mtail:/etc/mtail \
   -v /etc/localtime:/etc/localtime:ro \
   -v /etc/timezone:/etc/timezone:ro \
   dylanmei/mtail:latest --logs /var/log/zcm/nms-metrics.log --progs /etc/mtail --override_timezone=Local 

程序编写

编写的程序以.mtail 为后缀,放到指定的目录下,默认为/etc/mtail 目录

mtail 不会自动加载程序一旦被拉起后。如果需要动态热加载需要发送一个SIGHUP 信号在类UNIX系统。

例如,如果配置是由一个配置管理工具(如Puppet)提供的,那么当Puppet复制了一个新的配置文件时,该程序将发送一个SIGHUP

exec { 'reload_mtail_programmes':
  command => "killall -HUP mtail",
  refreshonly = True,
}

file { mtail_programme:
  source => mtail_programme,
  notify => Exec['reload_mtail_programmes'],
}

然而,如果您使用scp或其他类似方法在没有接收器的情况下复制程序文件。然后,要么使用ssh $host 至目标主机执行“killall-HUP mtail”,要么在mtail旁边的侧进程中使用inotifywait之类的工具来监视更改并发送重载信号。

inotifywait -m /etc/mtail/progs | while read event; do killall -HUP mtail; done

获取指标

基于集合进行拉取

将收集工具指向localhost:3903/json以获取json格式度量。
Prometheus可以指向Prometheus-text-based格式的/metrics端点。

基于推送的集合

使用collectd_socketpath或graphic_host_port标志启用推送到collectd或graphite实例。

在同一台机器上配置collectd以使用unixsock插件,并将collectd_socketpath设置为该unix套接字。

mtail --progs /etc/mtail --logs /var/log/syslog,/var/log/rsyncd.log --collectd_socketpath=/var/run/collectd-unixsock

将graphic_host_port设置为carbon 服务器的host:port。

mtail --progs /etc/mtail --logs /var/log/syslog,/var/log/rsyncd.log --graphite_host_port=localhost:9999

Likewise, set statsd_hostport to the host:port of the statsd server.
同样,将statsd_hostport设置为statsd服务器的host:port。

此外,标志metric_push_interval_seconds可用于配置推送频率。默认值为60,即每分钟推一次。

设置默认的时区

–override_timezone标志设置mtail用于时间戳转换的时区。默认情况下,mtail假定时间戳为UTC。
要使用计算机的本地时区,可以使用–override_timezone=local。

参考

 类似资料: