gnocchi学习小结

news2024/12/26 22:20:46

背景

总结gnocchi 4.4版本gnocchi-metricd工作流程

入口

gnocchi.cli.metricd

metricd

stop after processing metric默认为0,调servicemanager run

MetricdServiceManager

__init__

服务逻辑封装到MetricdServiceManager初始化中

主要由MetricProcessor, MetricReporting, MetricJanitor,都在metricd.py中定义。register_hooks用来reload MetricProcessor,默认48个worker

cotyledon.ServiceManager.add

先加到self._services,最后manager调_adjust_workers方法所有services集中处理

_adjust_workers调_start_worker和_stop_worker调整worker数,_utils.spawn_process调multiprocessing模块起进程

MetricProcessBase

三个metric类都继承自相同的base基类,base实现了run方法,run是无限循环,类似周期任务,周期执行业务类的_run_job方法

每一个worker好像都会delay一秒

只有metricProcessor是多worker,其他reporting和janitor都是单worker

MetricProcessor

主要业务是周期处理写进来的measures,处理后重新写入basepath下,具体怎么处理需确认

_run_job

229 判断初始化时间是否超过interval_delay(120),默认不超过,

_get_sacks_to_process

该函数类似一个装饰器,给定函数内存使用上限和timetolive,装饰类的同名函数_get_sacks_to_process

coordinator只有部分driver支持run_watchers,mysql driver不支持,所以_get_sacks_to_process报错,捕获异常,然后什么也不做,直接到finally返回

返回_tasks或fallback_tasks。mysql driver抛异常,_tasks是空,会返回fallback_tasks,看下赋值

incoming是gnocchi.incoming下的file driver

iter_sacks函数返回一个sack对象生成器,生成器长度从/var/lib/gnocchi/gnocchi-config默认配置文件读取,默认为128

获取完sack后,遍历每个sack底下的metric并处理

chef.process_new_measures_for_sack

看起来感觉是处理sack下的measures

MetricReporting

周期汇报,返回一个report,默认没啥用,可以根据情况给业务用

MetricJanitor

周期删除状态为delete的metric和对应的measures

api

总结一些重要或常用api流程

gnocchiclient

7.X版本用v1

数据连接和查询的话,应该是初始化怎么连到db,还没看

v1/batch/resources/metrics/measures

该接口会修改incoming file类型存储端和mysql里的数据。mysql只有当metri不存在才会创建,如果存在则不处理,incoming file存储端存储上报的measures

对应gnocchiclient方法为metric.batch_resources_metrics_measures,方法对应的gnocchi处理逻辑在ResourcesMetricsMeasuresBatchController,方法是post,有一个create_metrics参数,默认False

虽然默认false,但和ceilometer对接的ceilometer端传参都是True

先查已有metric列表,新增measure前先判断measures里有没有名字不在已有metric列表的,如果有,创建新metric

最后批量创measuers,incoming应该是gnocchi.incoming下的file

add_measures_batch,应该是执行_store_new_measures方法

看着会先创临时文件,将measures写到临时文件,再按一定规则改临时文件名

sack有个最大数量,每个metricid会取余运算匹配一个sack,将sack和metricid组装成临时文件的替代路径,最后将临时文件重命名为这个路径

sack文件夹命名,total是总的,number是取余的结果,uuid模块创的uuid可转化为int,然后取余

最终路径应该是sack路径 + metricid + 随机uuid + 当前时间,父路径是/var/lib/gnocchi

加上True后会在原先生成路径后加一个随机uuid和当前时间

此处存疑,写入measure用的incoming模块,查询用的storage模块,其中对路径的拼接不一致(确认了,非问题,有多个存储端,不同的信息存储在不同的存储端)

其他业务相关

关于存储端

gnocchi有storage,incoming,indexer存储端,默认对接的分别是file,file,mysql。incoming主要操作measure,indexer操作metric,storage操作metric和measure的聚合相关操作

关于存储粒度

gnocchi有metric,measure,resource,和ceilometer粒度有类似对应关系,可以参考理解

gnocchi中的resource/metric/measure等的关系_gnocchi resource-CSDN博客

其他好用方法

获取主机名直接socket.gethostname()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1697111.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux自动重启系统脚本测试工具

前言 脚本允许用户指定重启的次数和重启间隔时间,并自动生成相应的定时任务。通过使用这个脚本,系统管理员可以轻松地设置重启测试。每次重启操作都会被记录下来,以便用户随时了解测试情况。 一、脚本 #!/bin/bashif [ "$1" &qu…

[数组查找]1.图解线性查找及其代码实现

线性查找 线性查找是一种在数组中查找数据的算法。与二分查找不同,即便数据没有按顺序存储,也可以应用线性查找。线性查找的操作很简单,只要在数组中从头开始依次往下查找即可。虽然存储的数据类型没有限制,但为了便于理解&#x…

【机器智能】:AI机器学习在医疗服务的广泛应用与实践案例

目录 引言一,什么是机器学习二,AI在医学影像诊断中的应用三,AI在个性化治疗方案设计中的应用四,医疗图像识别技术五,医疗语言识别技术六,结语 引言 随着人工智能(AI)和机器学习技术…

[书生·浦语大模型实战营]——第三节:茴香豆:搭建你的 RAG 智能助理

0.RAG 概述 定义:RAG(Retrieval Augmented Generation)技术,通过检索与用户输入相关的信息片段,并结合外部知识库来生成更准确、更丰富的回答。解决 LLMs 在处理知识密集型任务时可能遇到的挑战, 如幻觉、知识过时和缺…

抖音运营_抖音推荐算法的机制

目录 一 抖音流量推荐算法机制 二 4大关键指标 三 完播率 1 黄金3秒 2 内容严谨 3 期待感 4 用户痛点 5 通俗易懂 四 转发量 1 分享需求 2 分享快乐 3 共情表达 4 正义传播 五 评论量 1 话题性 2 争议性 3 参与感 4 评论回评 六 点赞量 1 情感共鸣 2 用户喜…

Asp .Net Core 系列:集成 CAP + RabbitMQ + MySQL(含幂等性)

简介 官网:https://cap.dotnetcore.xyz/ CAP 是什么? 是一个 EventBus,同时也是一个在微服务或者 SOA 系统中解决分布式事务问题的一个框架。它有助于创建可扩展,可靠并且易于更改的微服务系统。 什么是 EventBus?…

Pytorch深度学习实践笔记6(b站刘二大人)

🎬个人简介:一个全栈工程师的升级之路! 📋个人专栏:pytorch深度学习 🎀CSDN主页 发狂的小花 🌄人生秘诀:学习的本质就是极致重复! 《PyTorch深度学习实践》完结合集_哔哩哔哩_bilibi…

项目管理-人力资源管理

目录 一、概述 二、人力资源计划编制 2.1 概述 2.2 层次结构图 2.3 分配任务矩阵 三、组建项目团队 3.1 概述 3.2 内部谈判 3.3 事先分派 3.4 外部招聘 3.5 虚拟团队 3.6 总结 四、项目团队建设 4.1 概述 4.2 团队发展过程 4.2.1 概述 4.2.2 形成期 4.2.3 震…

【每日力扣】84. 柱状图中最大的矩形 与 295. 数据流的中位数

🔥 个人主页: 黑洞晓威 😀你不必等到非常厉害,才敢开始,你需要开始,才会变的非常厉害 84. 柱状图中最大的矩形 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为…

我用LLaMA-Factory微调大模型来实现商品评论情感分析,准确率高达91.70%

大家好,我是程序锅。 最近在modelscope上闲逛的时候,在数据集板块发现有一个商品评论情感预测数据集。这个数据集源自一个比赛,它的目的是为了预测电商平台顾客的评论是好评还是差评。 数据示例如下所示(其中0代表差评&#xff…

电子电器架构 - AUTOSAR软件架构介绍

电子电器架构 - AUTOSAR软件架构介绍 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己…

山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(二十)- JUC(6)

目录 wait , notify wait vs sleep 正确使用方法 同步保护性暂停 join的源码 Future 异步生产者/消费者模型 定义 Park & Unpark 原理 wait , notify 小故事小南需要烟才能工作,但它又要占这锁让别人无法进来。那么这个时候开一个waitSet相当于就是休…

解决vue3项目vite打包忽略.vue扩展名

项目打包时报could not relolve “...”,因为vite已不再默认忽略.vue扩展名。 解决方法如下: 在vite.config.js中配置vite使其忽略 .vue 扩展名(不建议忽略) 注意:即使忽略了.vue文件,在实际写的时候也要加…

【Linux】为 VMware 的 Linux 系统(CentOS 7)设置静态IP地址

文章目录 准备工作查看 子网掩码 和 网关IP确认准备设置的虚拟机端口没有被占用 调整设置编辑配置文件配置文件说明 完成配置,准备测试使用命令终端连接服务器 我是一名立志把细节说清楚的博主,欢迎【关注】🎉 ~ 原创不易, 如果有…

OS复习笔记ch6-1

死锁的原理 定义 一组进程中,其中每个进程因等待事件而阻塞,且所等待的事件只能被这组进程中的另一阻塞进程激发称之为死锁。 举例如下 四个车辆希望紧迫的希望能很快通过,每辆车需要两个象限的资源,然而四个车都只得到一个象…

使用 Django Rest Framework 构建强大的 Web API

文章目录 安装 Django Rest Framework创建序列化器创建视图和 URL 路由配置认证和权限测试 API Django Rest Framework(DRF)是一个强大的工具,用于在 Django Web 框架中构建灵活且功能丰富的 Web API。它提供了许多功能,包括序列化…

揭秘Kafka从入门到精通,架构最全详解

Kafka架构最全详解 Kafka,作为关键消息中间件,广泛应用于大型架构与顶尖企业。本篇深入解析Kafka架构,掌握其核心技术要点。 Kafka Apache Kafka 是一个分布式发布-订阅消息系统,由LinkedIn开创的分布式发布-订阅消息系统&#x…

长安链使用Golang编写智能合约教程(一)

编写前的注意事项: 1、运行一条带有Doker_GoVM的链 2、建议直接用官方的在线IDE去写合约,因为写完可以直接测,缺点只是调试不方便。 3、自己拉环境在本地写合约,编译时注意编译环境,官方有提醒你去Linux下去编译。 …

010-Linux磁盘介绍

文章目录 1、名词 2、类型 3、尺寸 4、接口/协议/总线 5、命名 6、分区方式 MBR分区 GPT分区 1、名词 磁盘是计算机主要的存储介质,可以存储大量的二进制数据,并且断电后也能保持数据不丢失。早期计算机使用的磁盘是软磁盘(Floppy D…

牛客网刷题 | BC99 正方形图案

目前主要分为三个专栏,后续还会添加: 专栏如下: C语言刷题解析 C语言系列文章 我的成长经历 感谢阅读! 初来乍到,如有错误请指出,感谢! 描述 KiKi学习了循环&am…