golang
文章平均质量分 91
ning1875
这个作者很懒,什么都没留下…
展开
-
prometheus 本地存储解析及其使用的那些“黑科技“
本文代码基于prometheus 2.19.2分析基本概念什么是tsdbTime Series DBMS are designed to efficiently collect, store and query various time series with high transaction volumesprometheus 基本概念sample 数据点type sample struct { t int64 v float64}sample代表一个数据点size:16byt原创 2021-01-08 17:27:10 · 313 阅读 · 0 评论 -
开源项目: self_upgrade: C/S架构中 agent如何自升级(以falcon-agent为例)
项目地址代码地址 https://github.com/ning1875/falcon-plus/tree/master/modules/agent前言在我们日常运维/运维开发工作中各种系统主要分为两大流派本文主要讨论下有agent侧一些注意事项客户端服务端的C/S架构优点c/s架构相比于基于ssh的并发和吞吐量要高的多利用agent可做的事情很多以及更精准的控制缺点功能更新需要升级agentagent如果保活是个头疼的问题[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下原创 2021-01-08 17:22:32 · 659 阅读 · 0 评论 -
从PVC使用率看k8s 监控控制平面指标稳定性规范KEP
前言kubernetes家大业大,监控纷繁复杂,感兴趣的小伙伴可以看看我之前写的文章从容器监控kube-stats-metrics看k8s众多组件k8s中pv使用率监控说明虽然k8s最擅长的是无状态的pod,不建议有状态的存储型pod上但是总有些使用场景需要,比如statefulset使用的pv那么pv的使用率监控就非常有必要了我们可以使用 kubelet_volume_stats_used_bytes/kubelet_volume_stats_capacity_bytes表征pod pv原创 2021-01-08 17:21:28 · 1162 阅读 · 0 评论 -
m3db-node oom追踪和内存分配器代码查看
m3dbnode oomoom时排查内存火焰图: 80G内存bytes_pool_get_on_empty qps 很高db read qps增长 80%node cpu kernel 暴涨看图结论m3dbnode 内存oom过程很短,很剧烈:总时间不超过7分钟内存从27G增长到250G节点sys态cpu暴涨:因为大量的mem_alloca sys_call内存增长曲线和db_read_qps曲线和bytes_pool_get_on_empty曲线高度吻合原创 2021-01-08 17:19:43 · 159 阅读 · 0 评论 -
服务树系列(一):什么是服务树及其核心功能
前言服务树这个名词几乎所有运维和运维开发同学都不陌生,但是服务树的原理和为啥用服务树估计大家并不了解,本文先来讨论下这些基本概念,下文讨论如何实现,下图为其核心组件stree-index现已开源开源项目地址:项目地址: https://github.com/ning1875/stree-index介绍文章 服务树系列(二):开源项目:stree-index 物化路径+倒排索引实现的开源服务树核心组件服务树与资源管理其实无论是引入CMDB或服务树的一个重要目的是完成对应用运行所依赖的原创 2021-01-08 17:17:24 · 1056 阅读 · 0 评论 -
开源项目: pre_query: 给prometheus 重(heavy_query)查询提速
项目地址pre_query https://github.com/ning1875/pre_query术语解释什么是heavy_query顾名思义 就是查询表现出来返回时间较长,对应调用服务端资源较多的查询一般我们定义在1小时内的range_query 响应时间超过3秒则认为较重了instance_query当前点查询,用作报警查询或展示当前分布情况,对应调用的是prometheus 的/api/v1/query接口range_query查询一段时间的曲线,,对应调用的是promethe原创 2021-01-08 17:11:54 · 213 阅读 · 0 评论 -
开源项目 : prome-route: 使用反向代理实现prometheus分片
开源项目地址:项目地址: https://github.com/ning1875/prome-routePS: 这是一个仅用时半天就写完的项目架构图prometheus HAprometheus本地tsdb性能出色,但是碍于其没有集群版本导致HA较差实现手段注意这些手段都是要数据的统一存储可以通过remote_write 到一个提供HA的tsdb存储中通过联邦收集到一个prometheus里问题来了,搞不定集中式的tsdb集群,或者集群挂了咋办本项目介绍原理介绍肯定有一组p原创 2021-01-08 16:50:42 · 292 阅读 · 2 评论 -
服务树系列(二):开源服务树:stree-index 物化路径+倒排索引实现的开源服务树核心组件
开源项目地址:项目地址: https://github.com/ning1875/stree-index什么是服务树及其核心功能服务树效果图可以看我之前写的文章 服务树系列(一):什么是服务树及其核心功能核心功能有三个树级结构灵活的资源查询权限相关今天仅讨论前两种的实现树级结构实现调研后发现有下列几种实现方式左右值编码区间嵌套闭包表物化路径而stree-index采用的是物化路径物化路径原理在创建节点时,将节点的完整路径进行记录,方案借助了unix文件目录的原创 2021-01-08 14:58:19 · 278 阅读 · 0 评论 -
开源项目: prome_shard :consulwatch+动态分片实现Prometheus采集端高可用
开源项目地址: 项目地址: https://github.com/ning1875/prome_shard项目说明prometheus采集端单点问题采集类型采集机器级别的指标采集k8s基础监控指标采集部署在lb后面的vm业务指标采集部署在pod里的业务指标采集各种中间件的指标 如kafka zk clickhouse等面对如此复杂的采集类型,一般会使用一批采集Prometheus各司其职sd发现问题面对不同的采集来源,有对应的服务发现类型,如k8s_sd,我们修改Promethe原创 2021-01-08 14:56:41 · 265 阅读 · 0 评论 -
promethues系列之:追踪k8s容器指标的打tag的流程
# k8s中容器资源的监控## 在promethues中如何配置采集容器指标* 采用promethues的kubernetes_sd_configs中 node级别的role```yaml- job_name: kubernetes-nodes-cadvisor honor_timestamps: false scrape_interval: 30s scrape_timeout: 10s metrics_path: /metrics scheme: https kube...原创 2020-07-17 10:02:33 · 214 阅读 · 0 评论 -
用动态分片解决pushgateway的HA问题
dynamic-sharding项目地址: https://github.com/ning1875/dynamic-shardingdynamic-sharding 基于cosul的service健康坚检测实现一致性哈希环动态分片:一个典型应用场景就是mock pushgateway的 HA(pgw100%的HA实现起来较为困难)主要解决pgw 单点问题case,实现原理如下:dynamic-sharding服务启动会根据配置文件注册pgw服务到consul中由consul定时对pgw s原创 2020-06-10 18:00:13 · 450 阅读 · 0 评论 -
分布式c/s ping & http 探测
## ps 基于open-falcon做监控现在有点落伍了,目前我这里有更好的方案,感兴趣的+qq 907974064或者github issue留言## 地址 [https://github.com/ning1875/xprober](https://github.com/ning1875/xprober)## 预览图### http 探测结果### 互ping 结果# 项目说明`xprober` is a distributed c/s architecture..原创 2020-05-26 19:33:21 · 615 阅读 · 0 评论 -
我对开源版本openfalcon的变更
地址 https://github.com/ning1875/falcon-plus###新增proxy模块支持api查询多机房###我重写了聚合器,重写聚合器目的 poly_metric VS aggregator解决endpoint多的聚合断点问题解决聚合器单点问题,使得横向扩展得以实现解耦聚合器各个单元,可以方便的增加新的聚合入口和聚合策略###.falcon agent自...原创 2020-04-22 17:00:15 · 248 阅读 · 0 评论 -
粗读web框架之go gin和python django
为什么引入web框架 web应用的本质浏览器发送一个HTTP请求; 服务器收到请求,生成一个HTML文档; 服务器把HTML文档作为HTTP响应的Body发送给浏览器; 浏览器收到HTTP响应,从HTTP Body取出HTML文档并显示; 涉及的问题 解析http请求 找到对应的处理函数 生成并发送http响应web框架工作流程中间件中间...原创 2019-06-10 10:54:53 · 2363 阅读 · 0 评论 -
解读两个一致性哈希算法
最重要的一点忘了写了:一致性哈希算法为啥能在节点变更的时候只有少量key迁移是因为sortkeys列表其实就是一个哈希环,客户端的哈希值和存量的节点哈希值在有序的sortkeys列表中的相对位置没有变,变的是下线节点前面的哈希到再前面一个之间的值所以变更率为:1-n/mopen-falcon中transfer会为judge和graph生成两个一致性哈希环func initNodeRi...原创 2018-08-03 17:06:33 · 1125 阅读 · 0 评论 -
open-falcon-alarm 代码分析
总结:alarm消费由judge产生的redis报警事件,根据优先级高低是否做合并,发往不同的报警通道高优先级报警比如p0: judge产生报警事件-->写入redis event:p0队列 -->alarm消费-->获取发送对象并处理调用回调函数(如果有)-->根据策略不同生成不同通道的报警(im,sms,mail,phone)等-->写入redis各个通道的发送队...原创 2018-07-12 16:41:31 · 1028 阅读 · 0 评论 -
open-falcon-aggregator代码解析
总结:aggregator聚合器就是从falcon_portal.cluster表中取出用户在页面上配置的表达式,然后解析后,通过api拿到对应机器组的所有机器,通过api查询graph数据算出一个值重新打回transfer作为一个新的点。定时从db中拿出所有的聚合器配置放到一个map中第一次启动时遍历聚合器map生成workers map 这两个map的key都是id+updatetime同时下...原创 2018-07-12 14:03:04 · 670 阅读 · 0 评论