mtail是谷歌开源的一款日志采集工具,可以实时监控和分析日志文件,生成统计信息。它基于Google V8引擎,支持自定义正则表达式和程序,可以适用于各种日志格式和应用场景。
categraf将mtail作为一个插件集成了进来,并且兼容 mtail 的语法,简化了部署。原本 mtail 和日志文件之间是一对一的关系,即一般都是一个 mtail 进程处理一类日志,但是对于很高配的物理机,上面会部署很多不同的服务,每个服务进程都对应一个 mtail,此时机器上会出现特别多的 mtail 进程,较难维护。把 mtail 集成到 categraf 之后,复用 categraf 的多实例插件机制,可以做到一台机器上只有一个 categraf 进程即可读取解析多个服务的日志 示例图如下:
以下是使用categraf-mtail插件进行日志收集的步骤:
配置categraf-mtail
在categraf的conf目录下已经涵盖了多种插件的配置,配置需要监控的日志文件和日志格式,以及使用的插件和监控指标。
[root@k8s-node-01 conf]# ls
categraf.service input.docker input.kafka input.net input.phpfpm input.self_metrics input.zookeeper
config.toml input.elasticsearch input.kernel input.net_response input.ping input.snmp logs.toml
input.aliyun input.exec input.kernel_vmstat input.netstat input.postgresql input.sockstat prometheus.toml
input.arp_packet input.greenplum input.kubernetes input.netstat_filter input.processes input.sqlserver traces.yaml
input.cloudwatch input.haproxy input.linux_sysctl_fs input.nfsclient input.procstat input.switch_legacy
input.conntrack input.http_response input.logstash input.nginx input.prometheus input.system
input.cpu input.ipvs input.mem input.nginx_upstream_check input.rabbitmq input.systemd
input.disk input.jenkins input.mongodb input.ntp input.redis input.tomcat
input.diskio input.jolokia_agent_kafka input.mtail input.nvidia_smi input.redis_sentinel input.vsphere
input.dns_query input.jolokia_agent_misc input.mysql input.oracle input.rocketmq_offset input.xskyapi
编辑mtail.toml文件, 一般每个instance需要指定不同的progs参数(不同的progs文件或者目录),否则指标会相互干扰。
启动后,可以在快捷试图中找到mtail的监控指标,可以看到数据已经获取到了