吕程 发布于 08月04, 2018

了解树状数组

简介

树状数组(Binary Indexed Tree)字面意思就是二叉索引树,他不需要开辟额外的空间来建树,只是在原序列进行操作,多用于 统计区间和 和 更新单点的值,操作的时间复杂度均为log(N)。

阅读全文 »

张超 发布于 08月01, 2018

EMQTT简介

项目刚好要用到MQTT协议进行物联网相关的平台开发,就看了MQTT协议相关内容以及Erlang语言实现的一个开源版本。MQTT在我看来就是一个简单的发布订阅协议, 提供了一种服务质量的概念。EMQ则是对MQTT协议进行了实现,作为一个Broker,从Pub端到Broker是一个完整的MQTT交互,Broker到Sub端是一个完整的MQTT交互, 而Broker内部则是进行了消息的传递。本篇博客简单介绍一些基础的概念,后续有机会将对其中的点进行更加细致的展开

阅读全文 »

武伟 发布于 07月22, 2018

FPM制作RPM包

FPM打包工具

根据业务的需求制作统一规则的RPM包,已经成为中大型互联网企业运维自动化的必要技能。目前比较流行的打包工具主要分为了两种。其一是rpmbuild工具,该工具出现的时间较早,使用的范围也比较广,是目前主流的RPM打包工具。其次是FPM工具,由于出现时间较晚,官方文档比较少,目前使用的人群不是特别多,但是由于其简化了打包的流程,相信未来会逐渐引起运维人员的注意。

阅读全文 »

周蕾 发布于 07月20, 2018

浅析kube-proxy中IPVS模式

浅析kube-proxy的IPVS模式

在k8s中,提供相同服务的一组pod可以抽象成一个service,通过service提供的统一入口对外提供服务,每个service都有一个虚拟IP地址(VIP)和端口号供客户端访问。Kube-proxy存在于各个node节点上,主要用于Service功能的实现,具体来说,就是实现集群内的客户端pod访问service,或者是集群外的主机通过NodePort等方式访问service。在当前版本的k8s中,kube-proxy默认使用的是iptables模式,通过各个node节点上的iptables规则来实现service的负载均衡,但是随着service数量的增大,iptables模式由于线性查找匹配、全量更新等特点,其性能会显著下降。从k8s的1.8版本开始,kube-proxy引入了IPVS模式,IPVS模式与iptables同样基于Netfilter,但是采用的hash表,因此当service数量达到一定规模时,hash查表的速度优势就会显现出来,从而提高service的服务性能。

阅读全文 »

刘毅 发布于 07月19, 2018

LVS流量异常检测

背景

公司中存在大量的vip流量数据,vip流量异常将会导致一些严重的问题,运维人员也可以通过对vip流量数据异常的检测判断当前LVS是否正常,以及时解决问题。

流量数据实际是一组时间序列,因此流量异常检测就是时间序列异常点的检测问题。本文通过计算环比,同比,振幅等值以及运用iForest算法实现了时间序列异常点的检测问题。

阅读全文 »

王希刚 发布于 07月09, 2018

浅谈Cgroups

说起容器监控,首先会想到通过Cadvisor, Docker stats等多种方式获取容器的监控数据,并同时会想到容器通过Cgroups实现对容器中的资源进行限制。但是这些数据来自哪里,并且如何计算的?答案是Cgroups。最近在写docker容器监控组件,在深入Cadvisor和Docker stats源码发现数据都来源于Cgroups。了解之余,并对Cgroups做下笔记。

阅读全文 »

刘毅 发布于 07月02, 2018

退还机器推荐方法整理与总结

退还机器推荐方法整理与总结

背景

对于某些业务所使用的机器可能会出现老化,迁移等问题需要退还,随着业务数量的增多,机器数量的增多,退换机器的数量也随之增大。然而并不可能将业务中的所有机器全部退还,有效的机器退还不仅能够节约成本,也能提高业务的稳定性与效率。因此需要设计一个算法用于判断机器是否需要退还。

这个问题很容易把它想想成一个机器的分类问题,即设计一个分类器用于判断机器是否需要退还。实际上,该问题不仅仅可以用分类的方法进行解决,也可以设计一个推荐系统,为用户(即业务)推荐最应该退还的机器。

阅读全文 »

籍鑫璞 发布于 06月12, 2018

时间序列聚类方法的研究

背景

为了保证系统、服务的可靠性和稳定性,监控系统日渐成为每个公司、企业的一个必不可少的系统。随着服务、机器等数量越来越多,如何分析海量时间序列KPI成为我们在智能运维领域首先需要解决的问题。

在众多的时间序列中,有一些序列存在相关性,如果我们能将时序数据进行快速准确地聚类,只对不同类别的数据进行分析,这样就能大大降低后续数据分析与挖掘工作的开销。

阅读全文 »

高广鹏 发布于 06月11, 2018

Golang short write

背景

自定义数据结构,替换golang标准库"os/exec"中cmd原始的标准输出、标准错误输出,达到获取并限制其大小,便于日志上报。在输出达到上限后遇到“short write”报错,本文记录排查思路及过程。

阅读全文 »