最新要闻
- 撑起国产芯片!华为继续摸索半导体核心技术:新专利带来更高效封装 天天微头条
- 伐木累暗示速激12
- 怎样查询个人养老保险缴纳的情况信息 怎样查询个人养老保险缴纳的情况|信息
- 当前资讯!男童酒店客房误食用过的安全套 家长与酒店吵翻:网友直呼太巧合
- 90后宝爸拽脚倒提1岁女儿摸金鱼 妈妈称没危险:网友吐槽为啥要摸 世界微资讯
- 今日热议:广西:5月13日至15日开展高考志愿填报演练
- 百度手机曝光:后置双摄+4G网络 世界快资讯
- 骁龙888再就业!荣耀新平板入网:13英寸超大LCD屏_全球速看
- 德普拿下超级香水合约
- 速递!AI出来后第一个失业的是孙燕姿:为什么说她的音色不受法律保护
- 天天最资讯丨中国地形地貌最全的省份:你可能想不到
- 专家称睡满8小时是误区:张朝阳曾称四小时足够 睡多浪费
- 项目一个不留!OPPO放弃ZEKU自研芯片业务:多大代价都是最小代价 世界快资讯
- 法网公布奖金分配:总额提升12.3%,低排位选手获利,冠军230万欧-世界今日报
- 全球今热点:地位远超iPhone!苹果Reality Pro头显12月大规模量产:售价超2万
- 环球快播:小白也能辨别!买独显轻薄本必须要看的四大规格
广告
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
天天速讯:夜莺初探四·mtail插件采集日志指标
(资料图片)
夜莺初探四·mtail插件采集日志指标
前言
上一篇介绍了Categraf的配置,这篇我们尝试通过使用google开源的mtail工具来作为Categraf的插件,从应用日志中提取指标数据。
mtail项目介绍和配置文件说明
通过mtail -h可以很方便看到参数详细,也推荐乔克-从日志中提取指标的瑞士军刀或者Dream运维梦工厂-categraf-mtail日志收集插件详解来了解更多,我就不再班门弄斧了。当然也可以通过官方来了解详情新手村介绍 和高手入门
Categraf采集插件
categraf-mtail插件地址
https://github.com/flashcatcloud/categraf/tree/main/inputs/mtail
源码解读
package mtail...//常量值const inputName = `mtail`const description = ` extract internal monitoring data from application logs`//配置// MTail holds the configuration for the plugin.type MTail struct { config.PluginConfig Instances []*Instance `toml:"instances"`}//配置文件中instances对象需要参数结构体type Instance struct {config.InstanceConfig/**type InternalConfig struct {// append labelsLabels map[string]string `toml:"labels"`// metrics drop and pass filterMetricsDrop []string `toml:"metrics_drop"`MetricsPass []string `toml:"metrics_pass"`MetricsDropFilter filter.FilterMetricsPassFilter filter.Filter// metric name prefixMetricsNamePrefix string `toml:"metrics_name_prefix"`// mapping valueProcessorEnum []*ProcessorEnum `toml:"processor_enum"`// whether instance initial successinited bool `toml:"-"`}type InstanceConfig struct {InternalConfigIntervalTimes int64 `toml:"interval_times"`}**/NamePrefix string `toml:"name_prefix"`Progs string `toml:"progs"` //规则文件(xxx.mtail)的目录Logs []string `toml:"logs"` //要监控的日志文件IgnoreFileRegPattern string `toml:"ignore_filename_regex_pattern"`OverrideTimeZone string `toml:"override_timezone"`//指定时区EmitProgLabel string `toml:"emit_prog_label"`//是否导出label标签 string类型的bool值 emitProgLabel bool `toml:"-"`EmitMetricTimestamp string `toml:"emit_metric_timestamp"`//metrics是否带时间戳 string类型的bool值emitMetricTimestamp bool `toml:"-"`PollInterval time.Duration `toml:"poll_interval"`PollLogInterval time.Duration `toml:"poll_log_interval"`MetricPushInterval time.Duration `toml:"metric_push_interval"`MaxRegexpLen int `toml:"max_regexp_length"`MaxRecursionDepth int `toml:"max_recursion_depth"`SyslogUseCurrentYear string `toml:"syslog_use_current_year"` // truesysLogUseCurrentYear bool `toml:"-"`LogRuntimeErrors string `toml:"vm_logs_runtime_errors"` // truelogRuntimeErrors bool `toml:"-"`//ctx context.Context `toml:"-"`cancel context.CancelFunc `toml:"-"`m *mtail.Server}//配置文件中instances对象的Init函数,调用mtailfunc (ins *Instance) Init() error {//初始化检查,设置默认值if len(ins.Progs) == 0 || len(ins.Logs) == 0 {return types.ErrInstancesEmpty}// set default valueins.sysLogUseCurrentYear = ins.SyslogUseCurrentYear == "true"ins.logRuntimeErrors = ins.LogRuntimeErrors == "true"ins.emitProgLabel = ins.EmitProgLabel == "true"ins.emitMetricTimestamp = ins.EmitMetricTimestamp == "true"if ins.PollLogInterval == 0 {ins.PollLogInterval = 250 * time.Millisecond}if ins.PollInterval == 0 {ins.PollInterval = 250 * time.Millisecond}if ins.MetricPushInterval == 0 {ins.MetricPushInterval = 1 * time.Minute}if ins.MaxRegexpLen == 0 {ins.MaxRegexpLen = 1024}if ins.MaxRecursionDepth == 0 {ins.MaxRecursionDepth = 100}buildInfo := mtail.BuildInfo{Version: config.Version,}//时区设置loc, err := time.LoadLocation(ins.OverrideTimeZone)if err != nil {fmt.Fprintf(os.Stderr, "Couldn"t parse timezone %q: %s", ins.OverrideTimeZone, err)return err}//mtail参数设置opts := []mtail.Option{mtail.ProgramPath(ins.Progs),mtail.LogPathPatterns(ins.Logs...),mtail.IgnoreRegexPattern(ins.IgnoreFileRegPattern),mtail.SetBuildInfo(buildInfo),mtail.OverrideLocation(loc),mtail.MetricPushInterval(ins.MetricPushInterval), // keep it here ?mtail.MaxRegexpLength(ins.MaxRegexpLen),mtail.MaxRecursionDepth(ins.MaxRecursionDepth),mtail.LogRuntimeErrors,}if ins.cancel != nil {ins.cancel()} else {ins.ctx, ins.cancel = context.WithCancel(context.Background()) //父级ctx}//mtail配置,每隔1h启动 清理过期日志staleLogGcWaker := waker.NewTimed(ins.ctx, time.Hour)opts = append(opts, mtail.StaleLogGcWaker(staleLogGcWaker))if ins.PollInterval > 0 {logStreamPollWaker := waker.NewTimed(ins.ctx, ins.PollInterval)logPatternPollWaker := waker.NewTimed(ins.ctx, ins.PollLogInterval)opts = append(opts, mtail.LogPatternPollWaker(logPatternPollWaker), mtail.LogstreamPollWaker(logStreamPollWaker))}if ins.sysLogUseCurrentYear {opts = append(opts, mtail.SyslogUseCurrentYear)}if !ins.emitProgLabel {opts = append(opts, mtail.OmitProgLabel)}if ins.emitMetricTimestamp {opts = append(opts, mtail.EmitMetricTimestamp)}//指标结果存储对象store := metrics.NewStore()//间隔1h清理历史指标store.StartGcLoop(ins.ctx, time.Hour)m, err := mtail.New(ins.ctx, store, opts...)if err != nil {log.Println(err)ins.cancel()return err}ins.m = mreturn nil}//销毁取消所有任务func (ins *Instance) Drop() {ins.cancel()}//对象初始化方法func init() {inputs.Add(inputName, func() inputs.Input {return &MTail{}})}//对象复制返回新建对象func (s *MTail) Clone() inputs.Input {return &MTail{}}func (s *MTail) Name() string {return inputName}//MTail获取配置文件中所有instancesfunc (s *MTail) GetInstances() []inputs.Instance {ret := make([]inputs.Instance, len(s.Instances))for i := 0; i < len(s.Instances); i++ {ret[i] = s.Instances[i]}return ret}// Description returns a one-sentence description on the input.func (s *MTail) Description() string {return description}//抓取数据方法?// Gather retrieves all the configured fields and tables.// Any error encountered does not halt the process. The errors are accumulated// and returned at the end.// func (s *Instance) Gather(acc telegraf.Accumulator) error {func (ins *Instance) Gather(slist *types.SampleList) {//获取到prometheus注册器reg := ins.m.GetRegistry()mfs, done, err := prometheus.ToTransactionalGatherer(reg).Gather()if err != nil {log.Println(err)return}defer done()//遍历所有指标向量?for _, mf := range mfs {metricName := mf.GetName()//遍历所有指标for _, m := range mf.Metric {//加入配置的Lablestags := util.MakeLabels(m, ins.GetLabels())//处理不同指标类型if mf.GetType() == dto.MetricType_SUMMARY {util.HandleSummary(inputName, m, tags, metricName, ins.GetLogMetricTime, slist)} else if mf.GetType() == dto.MetricType_HISTOGRAM {util.HandleHistogram(inputName, m, tags, metricName, ins.GetLogMetricTime, slist)} else {util.HandleGaugeCounter(inputName, m, tags, metricName, ins.GetLogMetricTime, slist)}}}}//返回时间戳func (p *Instance) GetLogMetricTime(ts int64) time.Time {var tm time.Timeif ts <= 0 || !p.emitMetricTimestamp {return tm}sec := ts / 1000ms := ts % 1000 * 1e6tm = time.Unix(sec, ms)return tm}
整体理解下来,Categraf有效的通过统一的文件完成了多个目录,多个规则的日志采集,简化许多操作。
最后感谢看完,由于作者水平有限,使用很多工具并不熟悉,如有错误和遗漏欢迎指出,感谢谅解。以上内容来源于官方推出的夜莺黄埔营的免费培训活动,加入 QQ 群查看直播视频,还可以在官方答疑站点获得更多支持 https://answer.flashcat.cloud/
关键词:
-
《首次公开募股(IPO)企业品牌建设指南》标准立项暨“IPO企业品牌辅导专项行动”正式启动_动态
5月12日,《首次公开募股(IPO)企业品牌建设指南》标准立项暨“IPO企业品牌辅导专项行动”在第三届中国...
来源: 天天速讯:夜莺初探四·mtail插件采集日志指标
《首次公开募股(IPO)企业品牌建设指南》标准立项暨“IPO企业品牌辅导专项行动”正式启动_动态
撑起国产芯片!华为继续摸索半导体核心技术:新专利带来更高效封装 天天微头条
伐木累暗示速激12
怎样查询个人养老保险缴纳的情况信息 怎样查询个人养老保险缴纳的情况|信息
当前资讯!男童酒店客房误食用过的安全套 家长与酒店吵翻:网友直呼太巧合
90后宝爸拽脚倒提1岁女儿摸金鱼 妈妈称没危险:网友吐槽为啥要摸 世界微资讯
今日热议:广西:5月13日至15日开展高考志愿填报演练
世界快播:分布式系统常见问题
百度手机曝光:后置双摄+4G网络 世界快资讯
骁龙888再就业!荣耀新平板入网:13英寸超大LCD屏_全球速看
德普拿下超级香水合约
速递!AI出来后第一个失业的是孙燕姿:为什么说她的音色不受法律保护
天天最资讯丨中国地形地貌最全的省份:你可能想不到
专家称睡满8小时是误区:张朝阳曾称四小时足够 睡多浪费
项目一个不留!OPPO放弃ZEKU自研芯片业务:多大代价都是最小代价 世界快资讯
法网公布奖金分配:总额提升12.3%,低排位选手获利,冠军230万欧-世界今日报
全球今热点:地位远超iPhone!苹果Reality Pro头显12月大规模量产:售价超2万
环球快播:小白也能辨别!买独显轻薄本必须要看的四大规格
马斯克:当Linda Yaccarino准备好时,我们会在Twitter Spaces进行实时音频对话,欢迎提问任何事情。-每日报道
有赞一面:亿级用户DAU日活统计,有几种方案?-每日速递
每日快播:gazebo+rviz 仿真
OPPO放弃自研芯片!马里亚纳X/Y官网页面悄然404_环球微速讯
天天快报!国外玩家质疑《塞尔达传说:王国之泪》涉嫌抄袭:照搬游戏机制
二次圆满成功!中国可重复火箭发动机传喜讯 今头条
在美国加州 我亲眼见到了Google对AI的孤注一掷_每日热闻
性能秒RTX 4060?AMD新显卡性能实测 光追是短板 今日报
庄河市气象局发布雷电黄色预警【III级/较重】【2023-05-13】
成都惠蓉保报销有等待期吗? 当前播报
4K【龙与地下城:侠盗荣耀】
苹果MacBook新专利公布 掌托与触控板位置实现触控交互
深圳一公司通知母亲节放假3天 每位员工将收到一套礼盒
全国多地气温开始火速上升 北方将迎来今年首轮高温天气过程
电影《灌篮高手》宣布密钥延期 将延长上映至6月19日
DC电影公布《闪电侠》国内首波口碑 将于6月16日全国上映
bilibili云剪辑将于今年5月31日下线 其访问入口关闭
电视剧《庆余年2》宣布正式开机 其海报细节涉嫌抄袭国外艺术家
林志颖首次现身珠海赛车场 身体状态颇为不错
京都动画工作室纵火杀人案9月5日公审 为平成时代最致命案件
迪士尼真人巨制《小美人鱼》即将上映 现已宣布内地版配唱阵容
当前关注:第三章.数据库系统(重点)
使用Pandoc构建Acm模板-焦点简讯
Epic下周神秘游戏喜加4:不是老头环、大表哥2|世界要闻
6死20余伤!广州宝马X3撞人案动机公开:发泄个人情绪 焦点信息
苏丹首都喀土穆等地的武装冲突12日仍在持续|每日速递
剑指 Offer 03. 数组中重复的数字-头条
REITs审核关注事项优化 突出以“管资产”为核心
【新华解读】科创50ETF期权上市启动 丰富市场风险管理工具
先到先停!上海一男子交停车费,回来没有车位停,觉得保安在狡辩
卫士重生_世界新动态
《塞尔达传说:王国之泪》被玩家仅用94分钟通关|当前消息
树状数组--动态维护区间操作-新动态
记一次C++后台开发面试拷打过程
目录
快报:中国第二个陨石坑证实!10万年来最大规模的撞击
【世界报资讯】覆盖全球!我国自主研发的全球风暴潮、海啸监测预警系统正式上线运行
开心麻花进军人工智能领域 成立数字科技有限公司_天天热推荐
96核Zen4史无前例 AMD下代锐龙线程撕裂者被偷跑:再等4个月
离职前月薪不足一万 工作21小时!孟羽童去年统计为格力带货近400万_今日热闻
泛“舟”银河 再赴“天宫”——天舟六号货运飞船发射升空侧记_全球热闻
使用键盘控制gazebo小车模型运动-环球快报
环球讯息:桐柏农商银行:行长进万企 助力乡村振兴
全球观焦点:女硕士求职客服岗位被婉拒!HR教改简历
世界微速讯:危险!无人驾驶第一股 面临强制退市
喜大普奔!曝半幅式方向盘车辆不被允许上工信部公告 全球热消息
能跑100km!一文看懂小牛G400电动车:35L座桶堪比20寸行李箱
专家:我国网络建设可满足4K/8K视频分发 标清机顶盒拖了后腿 天天即时
博菲电气(001255.SZ):拟发行可转债募资不超3.9亿元 投于年产70000吨新能源复合材料制品建设项目|精选
redis持久化之AOF|速看料
勘设股份: 勘设股份关于向特定对象发行股票申请文件的审核问询函回复(修订稿)及募集说明书等申请文件更新的提示性公告 每日动态
叹息!殿堂级经典日漫《圣斗士星矢》 惨遭美国拍成超级大烂片_世界热资讯
“基尼太美” 兰博基尼旗舰超跑Revuelto上市:售价629.4994万元
环球今头条!配2.1英寸显示屏!鑫谷昆仑II 360 ARGB水冷散热器图赏
淄博一小区为外卖员配单车 网友盛赞:人性又安全_天天热推荐
世界第一座私人空间站来了!马斯克SpaceX背后输出
海南发布地质灾害气象风险预警 观天下
环球简讯:Python-单引号、双引号和三引号的作用和区别
全球观点:一致性哈希(哈希环)解决数据分布问题
云原生第三周--kubernetes组件详解|每日播报
记录--9个封装Vue组件的小技巧 每日讯息
CH32内部参考电压的使用-即时焦点
全球头条:【金融街发布】外汇局:一季度货物贸易顺差处于历史同期较高水平
每日精选:专访|田耳:文学或有江湖,写作难以停歇
饭一定要吃七分饱才健康?新研究推翻传统观念 全球热闻
全球简讯:欧洲人最爱!蔚来ET5旅行版实车亮相:真心优雅
当前要闻:环保人士赢了?大众董事长演讲被蛋糕袭击 官方回应:新能源车保护环境吗?
环球视讯!只做了2年 日本家电巨头巴慕达退出手机市场:价格比iPhone还贵
北方今年首轮高温来袭:14日起多地冲击35℃高温
世界观速讯丨促进消费潜能释放 4月份汽车市场产销量同比快速增长
手写Promise教程_then方法|今日热门
Json序列化对象后,使用Lombok后属性xAxis大写变成小写xaxis解决方法-天天时讯
微软本周不会为 Win11 Canary 或 Dev 频道发布新版本|精选
重庆未来三年将实施水利项目超1800个 环球短讯
跑分最高的安卓旗舰!已有1000多人下单iQOO Neo8系列|天天快看
NVIDIA一代神卡RTX 3060 Ti要停产了:清完库存即止
惊了!女网红用AI同时交往1000多个“男友” 年入4亿?-世界实时
电脑也能秒开3A大作!Win11或将引入Xbox Quick Resume功能-全球消息
世界速看:女大学生坐高铁拒绝补票刁难乘务长 后排乘客理论遭辱骂
团结就是力量合唱动作编排视频_团结就是力量合唱动作 焦点快报
如何注册appuploader账号