自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(736)
  • 收藏
  • 关注

原创 【博客内容归类】

以下为博客内容栏目归纳:方便各位选择你感兴趣的内容看哈,有错误的地方可以直接评论指出,谢谢支持!【C语言专栏】【C++专栏】【面经与实习内容专栏】【linux命令与工具专栏】【linux函数介绍专栏】【计算机网络与网络编程专栏】【数据结构与算法专栏】【linux与操作系统闲记专栏】...

2020-01-31 13:24:28 2656

原创 【博客721】时序数据库基石:LSM Tree的辅助优化

LSM Tree其实本质是一种思想,而具体是否需要WAL,内存表用什么有序数据结构来组织,磁盘上的SSTable用什么结构来存放,是否需要布隆过滤器来加快不存在数据的判断等都需要根据业务场景来做特定优化。

2024-06-16 11:02:52 574

原创 【博客720】时序数据库基石:LSM Tree的增删查改

LSM树将任何的对数据操作都转化为对内存中的Memtable的一次插入。Memtable可以使用任意内存数据结构,如HashTable,B+Tree,SkipList等。对于有事务控制需要的存储系统,需要在将数据写入Memtable之前,先将数据写入持久化存储的WAL(Write Ahead Log)日志。由于WAL日志是顺序Append到持久化存储的,因此无论对磁盘还是SSD都是非常友好的。

2024-06-16 10:49:39 1545

原创 【博客719】时序数据库基石:LSM Tree的Compact策略

为什么Compact操作是十分关键的操作,否则SSTable数量会不断膨胀。在Compact策略之前,先介绍三个比较重要的概念,事实上不同的策略就是围绕这三个概念之间做出权衡和取舍。

2024-06-16 10:29:36 812

原创 【博客718】时序数据库基石:LSM Tree(log-structured merge-tree)

LSM树是一个横跨内存和磁盘的,包含多颗"子树"的一个森林。LSM树分为Level 0,Level 1,Level 2 … Level n 多颗子树,其中只有Level 0在内存中,其余Level 1-n在磁盘中。内存中的Level 0子树一般采用排序树(红黑树/AVL树)、跳表或者TreeMap等这类有序的数据结构,方便后续顺序写磁盘。磁盘中的Level 1-n子树,本质是数据排好序后顺序写到磁盘上的文件,只是叫做树而已。

2024-06-15 10:56:37 1246

原创 【博客717】victoriametrics集群可用性和集群组件运维

HTTP 负载均衡器必须停止将请求路由到不可用的vminsert节点vmselect(vmauth停止将请求路由到不可用的节点)。vminsert集群中必须至少保留一个节点来处理数据提取工作负载。其余活动vminsert节点必须具有足够的计算能力(CPU、RAM、网络带宽)来处理当前的数据提取工作负载。如果其余活动vminsert节点没有足够的资源来处理数据提取工作负载,则数据提取期间可能会出现任意延迟。有关更多详细信息,请参阅容量规划和集群大小调整文档。

2024-06-12 20:06:25 1126

原创 【博客716】victoriametrics集群容量规划

您的应用程序在过去 1 小时内导出的时间序列被视为活动时间序列。例如,平均而言,一个节点导出器每个实例会公开 1000 个时间序列。因此,如果您从 50 个节点导出器收集指标,则活动时间序列的近似数量为 1000 * 50 = 50000 个序列。如果您已经使用 Prometheus,则可以通过运行以下查询来获取活动时间序列的数量:对于 VictoriaMetrics,查询如下:流失率越高,说明 VictoriaMetrics 高效工作所需的计算资源越多,建议尽量降低客户流失率。

2024-06-12 19:54:18 616

原创 【博客715】如何从victorimametrics集群中下线vmstorage节点

我们需要从VictoriaMetrics 集群中优雅地移除一个 vmstorage 节点。每个 vmstorage 节点都包含自己的数据部分,从集群中移除 vmstorage 节点会导致图表出现空白(因为复制超出了范围)。

2024-06-12 19:38:53 260

原创 【博客714】golang使用mmap来优化gc

需要处理的对象非常多时,比如:时序数据库victoriametrics源码中,利用了mmap申请内存并自己维护,从而避免过多gc影响性能,因为频繁申请和释放堆对象会降低性能。

2024-05-21 12:50:18 445

原创 【博客713】victoriametrics查询时的slow和fastpath以及cache的顺带完善

【victoriametrics查询时的slow和fastpath以及cache的顺带完善。

2024-05-20 19:46:53 208

原创 【博客712】victoriametrics搜索indexDB时的顺序

1、先搜索cache,2、然后搜索当前DB3、最后是搜搜extDB(也就是上一个数据保留周期的db)

2024-05-20 19:37:17 191

原创 【博客711】victoriametrics中increase对缺少数据情况下的兼容

例如,{request_operation_path=“/delay/{arg}”, source_msname=“”}从3小时前开始采集,为了计算该时间序列的增量,我们需要 2 个数据点:[interval] 上的最后一个数据点和 [interval] 上的第一个数据点。但是interval为4小时,在示例中使用的间隔超出了该系列的生命周期。换句话说,在 now()-4h 该时间序列不存在,它为空。

2024-05-20 19:28:37 346

原创 【博客710】victoriametrics数据写入的pull和push模式以及优缺点

如果遇到了采集目标是个汇聚器,他的metrics会上报大量的metrics,比如:10w+,这时候就会导致pull持续超时,一直采集不到数据,这时候可以使用vmagent的stream mode用法:

2024-04-14 11:45:48 351

原创 【博客709】如果victoriametrics的scrape_timeout大于scrape_interval时会怎么样

我们在配置采集的时候,有时候会不小心配置了scrape_timeout大于scrape_interval,那么这时会出现什么情况呢?vmagent在采集的时候,如果上一次采集还没有完成,其实会结束掉再发起下一次采集的,不会出现说上一次没完成,又发起新的一次,因为这样只会采集越堆积越多,在到了下一次还没有完成或者超过了scrape_timeout,那么就会标识采集失败。

2024-03-31 11:57:53 240

原创 【博客708】victoriametrics如何处理counter跳变

监控中我们经常会使用一些counter类型的metrics来计算速率,比如:rate(https_request_total)

2024-03-31 11:44:45 392

原创 【博客707】模版化拆解并获取victoriametrics的metricsql各个元素

模版化拆解并获取victoriametrics的metricsql各个元素。

2023-10-14 22:03:26 446

原创 【博客706】容器内ping如何以非root执行

容器里的程序执行ping时,出现无权限。

2023-09-02 15:22:24 712

原创 【博客705】chatgpt:编写日志rotate框架

我们的网关服务等为了持久化日志以供排查问题,往往将日志输出到文件,此时如果文件太大,可能导致磁盘被写满,此时就需要对日志文件进行rotate,以保存最新的日志。

2023-09-02 11:34:08 395

原创 【博客704】chatgpt:编写dryrun框架

对于网络路由管理组件这一类重要操作组件,在变更的时候往往需要用dryrun模式看下会执行哪些操作,确定没问题再进行线上发布。

2023-09-02 11:31:11 268

原创 【博客703】chatgpt:编写日志输出框架,支持设置等级和输出方式

使用chatgpt,让他编写日志输出框架,支持设置等级和输出方式。

2023-09-02 11:27:23 246

原创 【博客702】shell flock实现单例模式执行任务

我们需要定时执行一个任务,并且保证每次执行时都需要上一次已经执行完了,即保证同一时间只有一个在运行。

2023-09-02 11:22:07 809

原创 【博客701】shell实现保留网络现场:ping失败时执行mtr

当我们网络出现抖动,到某个目的地ping不通时,我们想知道路径上哪里出现问题时可以在那时候执行mtr并保留下现场以供排查。

2023-09-02 11:18:26 472

原创 【博客700】如何使用 Nginx Ingress 快速实现金丝雀与蓝绿部署

越来越多的应用采用微服务架构,应用数量相比传统模式更多,管理更加复杂,发布更加频繁,如果直接将新版本上线发布给全部用户。一旦遇到线上事故(或BUG),对用户的影响极大,解决问题周期较长,甚至有时不得不回滚到前一版本,严重影响了用户体验。为了保证整体系统的稳定,风险降到最低,我们可以采用灰度发布与蓝绿发布等不同的发布方式。

2023-08-19 15:55:37 361

原创 【博客699】docker daemon预置iptables剖析

DOCKER-USER链中的过滤规则,将先于Docker默认创建的规则被加载,从而能够覆盖Docker在DOCKER链和DOCKER-ISOLATION链中的默认过滤规则。如果只允许一个指定的IP访问容器实例,可以插入路由规则到DOCKER-USER链中,从而能够在DOCKER链之前被加载。Docker启动时,会加载DOCKER链和DOCKER-ISOLATION(现在是DOCKER-ISOLATION-STAGE-1)链中的过滤规则,并使之生效,绝对禁止修改这里的过滤规则。

2023-08-12 18:06:29 776

原创 【博客698】为什么当linux作为router使用时,安装docker后流量转发失败

当一台linux机器作为其它服务器的router,负责转发流量的时候,让你在linux上安装docker之后,就会出现流量都被drop掉了。

2023-08-12 17:43:39 1071

原创 【博客697】为什么iptables input drop能拦截流量进入本机非docker进程但拦截不了进入docker

因为docker daemon下发了一些预置的iptables规则,来把流量引入到docker容器,而且这部分规则将流量以宿主机和容器为视角进行切分,尽量使网络在两者上能隔离(只是一定程度上)

2023-08-12 17:29:00 458 1

原创 【博客696】iptables中的-m addrtype --dst-type含义

m addrtype --dst-type LOCAL其作用就是:把目标地址类型属于主机系统的本地网络地址的数据包,在数据包进入NAT表PREROUTING链时,都让它们直接jump到一个名为DOCKER的链。addrtype就是这样的一个扩展模块,提供的是Address type match的功能。引用的方式就是 -m 模块名。该模块支持按源地址或目标地址类型去做匹配,支持的地址类型有很多种,比如LOCAL表示是本地网络地址,BROADCAST表示匹配广播地址,以及其它各种特殊用途的地址类型。

2023-08-12 15:16:03 689

原创 【博客695】k8s subPathExpr作用

对于一个deployment或者job拉起的服务,所有pod都是一样的配置,如果都挂载了宿主机的同一个目录,那么就会互相干扰,我们希望挂载相同目录,且在这个目录下,每个pod建立一个自己的目录,去写入自己的东西。

2023-08-12 14:58:13 927

原创 【博客694】k8s kubelet 状态更新机制

kube-controller-manager 和 kubelet 是异步工作的,这意味着延迟可能包括任何的网络延迟、apiserver 的延迟、etcd 延迟,一个节点上的负载引起的延迟等等。当 Kubernetes 中 Node 节点出现状态异常的情况下,节点上的 Pod 会被重新调度到其他节点上去,但是有的时候我们会发现节点 Down 掉以后,Pod 并不会立即触发重新调度,这实际上就是和 Kubelet 的状态更新机制密切相关的,Kubernetes 提供了一些参数配置来触发重新调度的时间。

2023-08-12 14:20:51 1093

原创 【博客693】alertmanager如何自定义告警template

alertmanager如何自定义告警template。

2023-08-12 13:26:12 742

原创 【博客692】grafana如何解决step动态变化时可能出现range duration小于step

grafana本身是没有提供step参数的,因为仪表盘根据查询数据区间以及仪表盘线条宽度等,对于不同查询,相同的step并不能很好的发挥作用,所以step是动态计算的所以在Grafana中并没有直接提供step参数,而是这两个参数:min step和resolution老版本是resolution参数,8.5以后都版本去掉了,改为了一组可以限制数据点的数量从而实现分辨率:参考:https://github.com/grafana/grafana/issues/48081。

2023-08-12 13:02:58 1410

原创 【博客691】VictoriaMetrics如何支持Multi Retention

实现Multi Retention Setup within VictoriaMetrics Cluster,使得为不同的监控数据采用不同的保存时间。

2023-08-08 19:56:35 364

原创 【博客690】监控进程的major page faults和minor page faults

对于由用户空间的页面错误触发的页面请求,如果页面错误处理程序能够满足该请求而不引起磁盘 I/O,则将其视为次要页面错误。但是,如果页面错误处理程序必须引发磁盘 I/O 才能满足页面请求,则它将被视为主要页面错误当 CPU 需要访问不在内存中的页面时,就会引发页面错误。major page faults只能通过访问磁盘来解决。minor page faults可以通过共享内存中已有的页面来解决。

2023-08-06 15:57:43 709 1

原创 【博客689】监控进程的自愿与非自愿上下文切换

有时候遇到机器没有性能瓶颈,但是进程出现性能瓶颈,这时候往往需要进程级别的监控。

2023-08-06 14:56:16 385

原创 【博客688】如何实现keepalived vip监控与告警

如何实现keepalived vip监控与告警。

2023-08-05 15:58:49 918 2

原创 【博客687】k8s informer的list-watch机制剖析

client-go中的reflector模块首先会list apiserver获取某个资源的全量信息,然后根据list到的rv来watch资源的增量信息。希望使用client-go编写的控制器组件在与apiserver发生连接异常时,尽量的re-watch资源而不是re-list。

2023-08-05 14:58:01 2016

原创 【博客686】k8s informer list-watch机制中的re-list与resync

client-go中的reflector模块首先会list apiserver获取某个资源的全量信息,然后根据list到的resourceversion来watch资源的增量信息。且希望使用client-go编写的控制器组件在与apiserver发生连接异常时,尽量的re-watch资源而不是re-list。

2023-08-05 14:40:18 967

原创 【博客685】prometheus 出现NaN场景以及如何去除干扰(Not a Number)

场景:出现NaN的情况示例:除以分母0用作过时处理一部分的标记。然而,这是一个实现细节。在过时实现中使用的特定位模式恰好是 NaN,这对 PromQL 用户来说永远是不可见的,尽管远程存储实现如果自己做任何数学运算,可能必须关心这一点。NaN参数运算时:2-1、即先求和再除。一般来说,总是最后进行除法不要用:要用:2-2、如果 NaN 设法进入对值进行数学运算的函数或运算符的输入,则结果将为 NaN。在这种情况下,消除 NaN 的来源,而不是尝试解决下游的不良数据。example:sum (irate

2023-08-05 14:04:17 2672

原创 【博客684】Multi-regional高可用模式部署VictoriaMetrics

每个工作负载区域(地球、火星、金星)都有一个 vmagent,通过监控设置将数据发送到多个区域。监控设置(地面控制 1,2)包含 VictoriaMetrics 时间序列数据库 (TSDB) 集群或单个数据库。全局查询视图查询一个监控安装的所有指标高可用性您可能会失去一个地区,但您的体验将是相同的。不过流量会重复两次。

2023-07-29 14:25:32 392

原创 【博客683】k8s list请求优化以及合理使用list以维护集群稳定性

这里同时传了两个参数,但 resourceVersion=0 会导致 apiserver 忽略 limit=500, 所以客户端拿到的是全量 ciliumendpoints 数据这个请求是获取 node1 上的所有 pods(%3D 是 = 的转义)。根据 nodename 做过滤,给人的感觉可能是数据量不太大,但其实背后要比看上去复杂:这种行为是要避免的,除非对数据准确性有极高要求,特意要绕过 apiserver 缓存。

2023-07-22 18:39:59 743 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除