Go语言中文网 为您找到相关结果 106

[深圳][大疆创新][15K-40K]招聘高级/中级Golang研发工程师

## 高级Golang研发工程师 ### 岗位职责: 1. 参与公司微服务架构的整体设计和开发,进行相关技术调研、选型和实践; 2. 负责编制、修改项目相关的技术文档和规范; 3. 负责新人指导和code review,技术难题研究,提升团队技术水平; 4. 参与公司开源项目的设计与开发,提高公司在业界的影响力。 ### 任职要求: 1. 熟练掌握Golang,4年以上工作经验,2年以上Golang开发经验,有完整项目经验,同时熟练掌握Java/Ruby/Python/C#等任意一门语言者优先; 2. 熟练掌握Golang相关技术,熟悉Golang协程,熟悉channel和锁,对高并发、高可用架构系统有正确、深刻的理解,有分布式服务设计或开发经验者优先; 3. 熟悉M...阅读全文

使用 plot 绘制图表

作为一个程序员,很多时候虽然我喜欢盯着 console 输出的一堆数字看一些系统变化指标,但俗话说,一图胜千言,如果能自动的将很多数据生成图表展示,会更加清晰明了,而且能直接从变化的曲线上面得知更多的信息。这也就是我特别喜欢 Prometheus + Grafana 的原因。 但很多项目,尤其是临时的一些测试项目,我不可能为了看一个数据图表就搭建一套 Prometheus + Grafana 系统,那样效率太低,更多时候,我还是希望能有一个更简单的工具将一些数据展示出来。 幸运的是,我们可以通过 plot 非常方便的做到。plot 是一个用 Go 语言实现的绘图库,我们可以通过它绘制非常丰富的图表,并且可以输出成多种格式。另外,plot 还提供了非常方便的 interface,我们可以通过它...阅读全文

博文 2017-06-21 02:14:10 siddontang

调试一个邪恶的 Go 运行时 bug

## 序言 我是 `Prometheus` 和 `Grafana` 的忠实粉丝。作为一个前 `Google` 公司 SRE, 我一直以来都知道良好的监控的重要性, `Prometheus` 和 `Grafana` 的组合是我多年的最爱。我用他们来监控我的个人服务器(黑盒和白盒都有), `Euskal Encounter` 内外部事件以及我服务的专业客户。`Prometheusa` 让编写定制的数据导出器变得非常简单, 而且你能够找到很多现成的满足你要求的导出器。比如说,我们使用 `sql_exporter` 来为 `Encounter` 会议的与会者数据做了一个监控面板。 ![Event dashboard for Euskal Encounter (fake staging data)](...阅读全文

博文 2018-02-01 20:54:58 polaris

Prometheus 系统监控方案 一

最近一直在折腾时序类型的数据库,经过一段时间项目应用,觉得十分不错。而Prometheus又是刚刚推出不久的开源方案,中文资料较少,所以打算写一系列应用的实践过程分享一下。 Prometheus 是什么? Prometheus是一套开源的监控&报警&时间序列数据库的组合,起始是由SoundCloud公司开发的。随着发展,越来越多公司和组织接受采用Prometheus,社会也十分活跃,他们便将它独立成开源项目,并且有公司来运作。google SRE的书内也曾提到跟他们BorgMon监控系统相似的实现是Prometheus。现在最常见的Kubernetes容器管理系统中,通常会搭配Prometheus进行监控。 Prometheus 的优点 非常少的外部依赖,安装使用超简单 已经有非常多的系统集...阅读全文

产品级 Go 语言微服务框架Go Chassis

Go Chassis 是华为云 CSE 开源的一个用 Go 语言编写的微服务快速开发框架。借助 CSE Go Chassis 进行微服务开发可最大化地降低开发门槛,提升产品上线速度,同时可以获得微服务运行时高可靠性保证、运行时动态治理等一系列开箱即用的能力。 作为业界首款商用级别的Go语言微服务框架,Go Chassis 已具备支持企业级应用的核心特性: **可定制的通信协议**:除了现有支持的 HTTP/ Highway RPC 协议外,用户可自行扩展协议。支持 Go Chassis 开发的应用与使用 Java Chassis 开发的应用互相通信,企业在进行微服务架构选择有更大的自由。 **使微服务更加健壮**:完善的服务治理(负载均衡、限流、熔断、降级等等),保障 Go 微...阅读全文

饿了么 Influxdb 实践之路

前言 Influxdb是一个基于golang编写,没有额外依赖的开源时序数据库,用于记录metrics、events,进行数据分析。这篇文章谈论的influxdb版本在1.2.0以上。这篇文章只谈论influxdb在监控中的数据存储应用,不会谈论influxdb提供的整套监控方案。本文主要谈论五个方面:时序数据库选型、influxdb基本概念、存储引擎、实践、数据聚合。 选型 Influxdb vs Prometheus influxdb集成已有的概念,比如查询语法类似sql,引擎从LSM优化而来,学习成本相对低。 influxdb支持的类型有float,integers,strings,booleans,prometheus目前只支持float。 influxdb的时间精度是纳秒,prom...阅读全文

博文 2017-06-24 09:49:24 刘平

Prometheus 系统监控方案 二 安装与配置

下载Prometheus 下载最新安装包,本文说的都是在Linux x64下面内容,其它平台没尝试过,请选择合适的下载。 Prometheus 主程序,主要是负责存储、抓取、聚合、查询方面。 Alertmanager 程序,主要是负责实现报警功能。 Pushgateway 程序,主要是实现接收由Client push过来的指标数据,在指定的时间间隔,由主程序来抓取。 *_exporter 这类是不同系统已经实现了的集成。 下载解压,一般默认的配置就可以运行。 tar xvfz prometheus-*.tar.gz cd prometheus-* go写的东西,直接打包成二进制包了,其本上没有别的依赖。 下面我们主要来了解一下他的配置文件,这是一个非常重要的步聚。 配置Prometheus监...阅读全文

Prometheus实战--存储篇

前言 Prometheus之于kubernetes(监控领域),如kubernetes之于容器编排。随着heapster不再开发和维护以及influxdb 集群方案不再开源,heapster+influxdb的监控方案,只适合一些规模比较小的k8s集群。而prometheus整个社区非常活跃,除了官方社区提供了一系列高质量的exporter,例如node_exporter等。Telegraf(集中采集metrics) + prometheus的方案,也是一种减少部署和管理各种exporter工作量的很好的方案。今天主要讲讲我司在使用prometheus过程中,存储方面的一些实战经验。 Prometheus 储存瓶颈 通过prometheus的架构图可以看出,prometheus提供了本地存储...阅读全文

博文 2018-07-20 18:34:44 iyacontrol

k8s与监控--prometheus的远端存储

prometheus的远端存储 前言 prometheus在容器云的领域实力毋庸置疑,越来越多的云原生组件直接提供prometheus的metrics接口,无需额外的exporter。所以采用prometheus作为整个集群的监控方案是合适的。但是metrics的存储这块,prometheus提供了本地存储,即tsdb时序数据库。本地存储的优势就是运维简单,启动prometheus只需一个命令,下面两个启动参数指定了数据路径和保存时间。 storage.tsdb.path: tsdb数据库路径,默认 data/ storage.tsdb.retention: 数据保留时间,默认15天 缺点就是无法大量的metrics持久化。当然prometheus2.0以后压缩数据能力得到了很大的提升。为了...阅读全文

博文 2018-07-09 17:34:52 iyacontrol

非官方中文文档Promethues监控系统

## Prometheus 非官方中文手册 --- ### 目录 - 介绍 [总览](introduction/overview.md) [安装](introduction/install.md) [启动](introduction/get_started.md) [对比](introduction/comparison.md) [常见问题](introduction/questions.md) [路线图](introduction/roadmap.md) [学习媒介](introduction/media.md) [词汇](introduction/glossary.md) - ...阅读全文

2019年最火热的Golang项目

整理目的 记录用的人较多或者出镜率比较高的Golang项目。 如果我漏了你觉得重要的项目,麻烦帮我指出,我尽快补上,谢谢! 下面列表中的每一个项目都配上了Star增长趋势的图片,可以看出该项目的热度。 特别是与区块链相关的两个项目fabric和go-ethereum,能够明显看出区块链行业的起伏。 整理过程中收获: 1、了解到docker项目已经改名为moby,当前仓库为:https://github.com/moby/moby。 2、了解到时间序列数据库,库中每一个数据都有时间属性。 项目列表 Gin 仓库地址:https://github.com/gin-gonic/gin Gin是用Go语言实现的一款web框架。 它的特点和Martini类似,但是API的性能更好,大概快40倍。如果你...阅读全文

博文 2019-06-07 23:04:16 大漠胡萝卜

腾讯云招聘云计算后台工程师(深圳、成都两地项目组直招)

1 ) 有丰富的多进程、多线程服务器开发经验(必需) 2 ) 熟悉 c/c++/go/java/python/ruby/scala 等至少二种编程语言(必需) 3 ) coding,debug 能力强(必须) 4 ) 有开源项目实践经验优先 5 ) 熟悉 docker/kubernetes/openstack 等框架优先 6 ) 熟悉 git,jenkins,travis,ELK,prometheus 等技术优先 7 ) 熟悉 aws/google cloud 等云计算厂商产品优先 8 ) 热爱学习,做事积极主动者优先 简历请发送到 qq:18413696...阅读全文

TiDB 集群的入门与实战

本文耗时较长,包括实战演练以及经验总结。我很早就接触了 TiDB ,但一直都是单机版,最近对大数据存储、性能、可扩展性有所要求,所以对 TiDB 需要更深的了解,首先就是搭建一个测试集群环境,只有真正用了才知道适不适合。本文是我对搭建 TiDB 集群的入门和实践过程的纪要,希望对大家有所帮助,在这里也要特别感谢 PingCAP 团队给以的鼎力帮助,?。本文分为以下几个方面来进行介绍:准备工作安装、配置调试监控总结参考资料准备工作服务器配置官方建议的 TiDB 集群最低配置为 6 台机器。2 个 TiDB 实例,第一台 TiDB 机器同时用作监控机;(与 PD 实例公用)3 个 PD 实例;(公用)3 个 TiKV 实例;(单独使用)所需服务器的配置要求:NameCPU内存磁盘数量总价tikv...阅读全文

博文 2017-09-18 01:23:26 杨文

开放分布式追踪(OpenTracing)入门与 Jaeger 实现

http://click.aliyun.com/m/1000005975/应用架构开始从单体系统逐步转变为微服务,其中的业务逻辑随之而来就会变成微服务之间的调用与请求。资源角度来看,传统服务器这个物理单位也逐渐淡化,变成了看不见摸不到的虚拟资源模式。从以上两个变化可以看到这种弹性、标准化的架构背后,原先运维与诊断的需求也变得越来越复杂。为了应对这种变化趋势,诞生一系列面向 DevOps 的诊断与分析系统,包括集中式日志系统(Logging),集中式度量系统(Metrics)和分布式追踪系统(Tracing)。Logging,Metrics 和 TracingLogging,Metrics 和 Tracing 有各自专注的部分。Logging - 用于记录离散的事件。例如,应用程序的调试信息或...阅读全文

博文 2018-07-12 15:34:54 rewq123

开源游戏玩家配对项目Open Match

Google Cloud 和 Unity 联合宣布了一项名为 Open Match 的开源玩家配对项目,该项目允许游戏开发者专注于玩家配对逻辑,而无需从头开始为每个游戏构建完整的配对系统。 Open Match 项目包括三个核心组件,一个用于游戏客户端的前端 API,一个用于游戏服务器的后端 API,以及一个运行自定义配对逻辑的游戏编排器。 Open Match 使用了 OpenCensus 和 Prometheus。 除了度量标准收集和默认配置设置之外,Open Match 还提供了高度可扩展性,可自定义的配对逻辑范例,允许基于延迟,等待时间和技能级别,进行简单的游戏玩家配对。 由于 Open Match 在 Kubernetes 上运行,因此可以部署在任何公共云、本地数据中心或工...阅读全文

统计收集和分布式追踪框架OpenCensus

OpenCensus 是 Google 开源的一个用来收集和追踪应用程序指标中立厂商的第三方库,能够减少应用的部署与构建成本,尤其适合微服务架构。 OpenCensus 有各种不同的编程语言编写的版本,包括 Go、Java、PHP、C++、Python 等等。它旨在帮助开发者更容易收集和提交跟踪应用程序指标。这是一个中立的单一库发行,可自动收集和跟踪应用指标,可在本地显示,也可将其发送到分析工具。 OpenCensus 目前支持 [Prometheus](https://prometheus.io/)、[SignalFX](https://signalfx.com/)、[Stackdriver](https://cloud.google.com/stackdriver/) 和 [...阅读全文

prometheus监控初体验

一、部署环境 mac 二、下载prometheus的mac版 进入下载页,操作系统选择darwin https://prometheus.io/download/ download.png 三、解压,进入目录运行 ./prometheus --config.file=prometheus.yml 四、浏览监控页面,查看对自身监控的一些信息 图表页: http://localhost:9090/graph metrics页面: http://localhost:9090/metrics 1)查看控制台日志输出 切换到Console尝试输入表达式,并点击execute,查看结果 prometheus_target_interval_length_seconds image.png count(p...阅读全文

博文 2018-09-12 18:34:40 2远

360基于Prometheus的在线服务监控实践

女主宣言本文源自8月9日『DBAplus社群』的直播间分享,分享人是360HULK私有云平台addops团队赵鹏,本文为『DBAplus社群』公众号首发,已授权转载。PS:丰富的一线技术、多元化的表现形式,尽在“HULK一线技术杂谈”,点关注哦!主题简介:Prometheus基础介绍Prometheus打点及查询技巧Prometheus高可用和服务发现经验初衷最近参与的几个项目,无一例外对监控都有极强的要求,需要对项目中各组件进行详细监控,如服务端API的请求次数、响应时间、到达率、接口错误率、分布式存储中的集群IOPS、节点在线情况、偏移量等。比较常见的方式是写日志,将日志采集到远端进行分析和绘图,或写好本地监控脚本进行数据采集后,通过监控系统客户端push到监控系统中进行打点。基本上我们...阅读全文

博文 2017-08-31 03:22:49 赵鹏

使用 Prometheus 对 Go 应用程序进行监测

监测服务级别的指标能让团队成员更清晰的看到你的程序表现如何,你的程序如何被使用,并且可以帮助定位潜在的性能瓶颈。 [Prometheus](https://prometheus.io/) 是一个开源的监测解决方案,原生的服务发现支持让它成为动态环境下进行服务监测的一个完美选择。Prometheus 支持从 [AWS, Kubernetes, Consul 等](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#configuration-file) 拉取服务 ! 当使用 Prometheus 生成服务级别的指标时,有两个典型的方法:内嵌地运行在一个服务里并在 HTTP 服务器上暴露一个 `/me...阅读全文

博文 2019-01-27 13:12:39 krystollia

通过vsphere golang webservice sdk 获取vmware主机、虚拟机的监控数据【一】

目前正在使用prometheus对我们的openstack云环境进行监控,但过了半年测试环境的主机资源迟迟未到位,因此和基架沟通是否有传统环境的需求可以做,提到了cmdb和商业监控的替换。但基架又不想我们再到每台虚拟机上去安装agent,因此需要通过vSphere Web Service API抓取测试环境34台主机、1600台虚拟机的监控数据。 经过两个星期的研究,第一稿监控vmware vcenter的prometheus exporter开发完成,一次抓取1600多台主机、虚拟机的cpu mhz、mem mb、disk io、net io大概耗时在1分钟左右。 exporter使用go语言编写,使用vsphere的govmomi sdk。 sdk地址:https://github.co...阅读全文

博文 2017-09-15 04:03:21 一路向北的兔斯基

golang dep 依赖管理 使用

dep golang 包管理使用记录 dep 是 golang 项目依赖管理之一,是官方的实验项目,目前更新很频繁处于高速发展期,所以选 dep 作为 golang 的依赖管理器是比较靠谱的。(已知 glide 仅支持不再开发新功能) 目前 dep v0.5.0 release 已经发布,最新的 changelog 显示只支持 golang 1.9+ 以上的版本 golang 最原始的依赖管理是 go get ,执行命令后会拉取代码放入 src 下面,但是它是作为 GOPATH 下全局的依赖,并且 go get 还不能版本控制,以及隔离项目的包依赖在没有依赖管理工具的时候,golang 项目有一种目录结构比较流行如下: . └── src ├── demo │ └── main.go ├──...阅读全文

博文 2018-08-05 11:34:49 一颗老柠檬丶

Prometheus实战--Uber背书的存储解决方案M3

前言 前面我们一直在做prometheus的远程存储的工作,一直缺乏一种大厂背书的解决方案。具体可能有下面的几点: 大厂背书且开源 可承接大规模海量metrics 非weave cortex这种对prometheus原有方案改动特别大,即可以单独升级prometheus。 可喜可贺,Uber开源了他们针对prometheus存储解决方案M3,包括诸多组件。 M3 摘要 为了促进优步全球运营的发展,我们需要能够在任何特定时间快速存储和访问我们后端系统上的数十亿个指标。作为我们强大且可扩展的指标基础架构的一部分,我们构建了M3,这是一个已在优步使用多年的指标平台。 M3可以在较长的保留时间内可靠地存储大规模指标。为了向更广泛的社区中的其他人提供这些好处,我们决定开放M3平台作为Prometheu...阅读全文

博文 2018-08-09 15:34:58 iyacontrol

Prometheus vs Zabbix

公司要上监控,Prometheus 是最热门的监控解决方案,作为喜新厌旧的程序员,我当然是选择跟风了,但上级更倾向于 Zabbix,那没办法,只能好好对比一番,给出几个靠谱的理由了。 Monitoring system 但稍稍深入一点,我就体会到,我之前其实并没有真的理解口口相传的 Prometheus 的优点,这次对比虽然是始于无奈,但还是蛮有意义的,正好总结一下自己粗浅的体会。 1. 对比 先对两者的各自特点进行一下对比: Zabbix Prometheus 后端用 C 开发,界面用 PHP 开发,定制化难度很高。 后端用 golang 开发,前端是 Grafana,JSON 编辑即可解决。定制化难度较低。 集群规模上限为 10000 个节点。 支持更大的集群规模,速度也更快。 更适合监...阅读全文

博文 2018-11-04 15:34:39 blackpiglet

基于Go技术栈的微服务构建-微服务

编辑推荐: 本文来自于技术网站,本文的素材来源于我们在开发中的一些最佳实践案例,从开发、监控、日志这三个角度介绍了一些我们基于Go技术栈的微服务构建经验。 在大型系统的微服务化构建中,一个系统会被拆分成许多模块。这些模块负责不同的功能,组合成系统,最终可以提供丰富的功能。在这种构建形式中,开发者一般会聚焦于最大程度解耦模块的功能以减少模块间耦合带来的额外开发成本。同时,微服务面临着如何部署这些大量的服务系统、如何运维这些系统等新问题。 本文的素材来源于我们在开发中的一些最佳实践案例,从开发、监控、日志这三个角度介绍了一些我们基于Go技术栈的微服务构建经验。 开发 微服务的开发过程中,不同模块由不同的开发者负责,明确定义的接口有助于确定开发者的工作任务。最终的系统中,一个业务请求可能会涉及到多...阅读全文

博文 2017-12-15 03:03:55 火龙果软件

一次Golang 内存占用偏高的调查

最近发现生产上某Golang服务内存稳步飙升,通过监控完全看不到有内存降低时候。而奇怪的是,同样的版本放到其他环境上则没有这个问题。 在内部弄了个环境开启pprof,反复压测,一直无法重现问题。于是回过头去检查监控的数据是否有误差。经检查发现prometheus上抽取的数据达930M,而通过docker 以及其他系统方式查到的数据不到20M。经反复对比发现,prometheus上抽取的数据是包含缓存的数据,单独查询此服务的缓存,则数据为900M+,差额部分数据与docker查询出来接近,如此判断问题在于缓存。 最后,发现,日志文件没有配置log rotation,大小已经达到了12G。清空日志后惊喜的发现,内存瞬间暴降至20M...阅读全文

博文 2018-12-26 19:34:42 getsu

Prometheus + Clickhouse + Grafana 架构安装

1. 安装 PrometheusPrometheus 生态 由于原生 tsdb 性能的限制,经过性能测试选用 Clickhouse 作为第三方数据库,提升其大数据读写性能1)下载并解压 wget https://github.com/prometheus/prometheus/releases/download/v2.3.2/prometheus-2.3.2.linux-amd64.tar.gz tar -xvf prometheus-2.3.2.linux-amd64.tar.gz 2)进入并执行 cd prometheus-2.3.2.linux-amd64 ./ prometheus (调试时使用) nohup ./prometheus --config.file=prometheus...阅读全文

博文 2019-01-10 11:34:42 pigness

k8s与log--利用fluent bit收集k8s日志

前言 收集日志的组件多不胜数,有ELK久负盛名组合中的logstash, 也有EFK组合中的filebeat,更有cncf新贵fluentd,另外还有大数据领域使用比较多的flume。本次主要说另外一种,和fluentd一脉相承的fluent bit。 Fluent Bit是一个开源和多平台的Log Processor and Forwarder,它允许您从不同的来源收集数据/日志,统一并将它们发送到多个目的地。它与Docker和Kubernetes环境完全兼容。Fluent Bit用C语言编写,具有可插拔的架构,支持大约30个扩展。它快速轻便,通过TLS为网络运营提供所需的安全性。 之所以选择fluent bit,看重了它的高性能。下面是官方贴出的一张与fluentd对比图: Fluent...阅读全文

博文 2018-12-26 19:34:41 iyacontrol

K8s -- 通过自定义prometheus数据实现k8s hpa

:https://blog.csdn.net/yevvzi/article/details/79561150 核心指标管道 从 Kubernetes 1.8 开始,资源使用指标(如容器 CPU 和内存使用率)通过 Metrics API 在 Kubernetes 中获取。 这些指标可以直接被用户访问(例如通过使用 kubectl top 命令),或由集群中的控制器使用(例如,Horizontal Pod Autoscale 可以使用这些指标作出决策)。 Resource Metrics API 通过 Metrics API,您可以获取指定 node 或 pod 当前使用的资源量。这个 API 不存储指标值, 因此想要获取某个指定 node 10 分钟前的资源使用量是不可能的。 Metrics...阅读全文

博文 2018-11-27 23:34:40 沉沦2014

Prometheus+Grafana打造Mysql监控平台

prometheus/node_exporter/mysqld_exporter都是由go语言编写,需要先安装GoLang环境 下载node_exporter(监控服务器的CPU、内存、存储使用情况)和mysqld_exporter放到Mysql服务器(被监控端) 需要为mysqld_exporter在Mysql数据库新建一个用户,并赋予相应权限 CREATE USER 'exporter'@'localhost' IDENTIFIED BY 'XXXXXXXX' WITH MAX_USER_CONNECTIONS 3; GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'localhost'; 配置mysql_ex...阅读全文

博文 2018-10-17 15:34:41 单行线的旋律

Prometheus神器之监控K8s集群

Prometheus 简介 Prometheus是SoundCloud开源的一款开源软件。它的实现参考了Google内部的监控实现,与源自Google的Kubernetes结合起来非常合适。另外相比influxdb的方案,性能更加突出,而且还内置了报警功能。它针对大规模的集群环境设计了拉取式的数据采集方式,你只需要在你的应用里面实现一个metrics接口,然后把这个接口告诉Prometheus就可以完成数据采集了。 安装Prometheus 首先我们使用ConfigMap的形式来设置Prometheus的配置文件,如下 apiVersion: v1kind: ConfigMapmetadata: name: prometheus-configuration labels: app.kuber...阅读全文

博文 2019-05-10 19:35:07 程序员同行者

SRE: 调试 Go 中简单的内存泄漏

[内存泄漏](https://en.wikipedia.org/wiki/Memory_leak) 是一种即使当某块内存不再使用之后仍然没有被释放而产生的 bug。通常来说,它们是非常明显的,高度可见的,这使得它们成为学习程序调试的最佳选择。Go 是一门特别适合识别定位内存泄漏的语言,因为它有一套强大的工具链,这套工具链配备了非常强大的工具(*pprof*),它可以非常轻松地查明内存的使用情况。 我希望这篇文章能够演示如何直观地识别内存,并将其使用范围缩小至特定的进程内,将进程的泄漏与我们的工作关联起来,最后使用 *pprof* 工具找到内存泄漏的根源。设计这篇博客文章的初衷是为了简单地识别产生内存泄漏的根本原因。我们对 *pprof* 工具只做简单的功能介绍,不会对其做详细功能的描述。 [...阅读全文

博文 2019-01-17 22:29:54 barryz

容器监控实践—kube-state-metrics

概述 已经有了cadvisor、heapster、metric-server,几乎容器运行的所有指标都能拿到,但是下面这种情况却无能为力: 我调度了多少个replicas?现在可用的有几个? 多少个Pod是running/stopped/terminated状态? Pod重启了多少次? 我有多少job在运行中 而这些则是kube-state-metrics提供的内容,它基于client-go开发,轮询Kubernetes API,并将Kubernetes的结构化信息转换为metrics。 功能 kube-state-metrics提供的指标,按照阶段分为三种类别: 1.实验性质的:k8s api中alpha阶段的或者spec的字段。 2.稳定版本的:k8s中不向后兼容的主要版本的更新 3.被...阅读全文

博文 2019-01-13 23:34:39 二二向箔

容器监控之 cadvisor

现如今大大小小的公司在生产环境中已或多或少的使用到了容器,那对于容器的监控(CPU, 内存,网络请求)是如何处理的呢?接下来我们带大家来学习一下: docker stats 对 cadvisor 众所周知 dokcer stats 可以查看运行的 Docker 镜像的运行状态,例如: image 这种方式比较原始,因为你无法通过 http 的方式来获取数据,而且没有界面,数据可视化还需要做大量的工作。 由于 dokcer stats 有这些问题,所以 cadvisor 诞生了。 cadvisor 不仅可以搜集一台机器上所有运行的容器信息还提供基础查询界面和 http 接口,方便 Prometheus 进行数据抓取。 正是因为 cadvisor 与 Prometheus 的完美结合,所以它成为...阅读全文

博文 2019-05-27 17:34:50 51reboot

k8s与审计-- 将clickhouse增加为 heapster sink

前言 在k8s资源审计和计费这块,容器和虚机有很大区别。相对虚机来讲,容器不容易实现。资源指标收集可以采用heapster,也可以用prometheus。之前文章有介绍过,prometheus的存储的瓶颈和查询较大数据量,容易oom这两个问题。所以选择了heapster。此外,heapster不仅内部实现了很多aggregator和calculator,做了很多聚合层的工作。而采用prometheus,你需要在查询的时候做聚合。heapster支持诸多metrics输出,称为sink。目前支持的sink如下图: 而我比较倾向于clickhouse数据库,关于clickhouse,其实前面的文章介绍过很多了。所以本文主要讲如何为heapster增加clickhouse sink。 代码分析和实...阅读全文

博文 2018-08-01 20:34:47 iyacontrol

Golang <-time.After()在计时器过期前不会被垃圾回收

最近我在调查 Go 应用程序中内存泄漏的问题,这个问题主要因为我没有正确的阅读文档。这是一段导致消耗了多个 Gbs 内存的代码: ```go func ProcessChannelMessages(ctx context.Context, in <-chan string, idleCounter prometheus.Counter) { for { start := time.Now() select { case s, ok := <-in: if !ok { return } // handle `s` case <-time.After(5 * time.Minute): idleCounter.Inc() case <-ctx.Done(): return } } } ``` 以...阅读全文

蚂蚁金服轻量级监控分析系统 SOFALookout 服务端开源

SOFAStack ScalableOpenFinancialArchitecture Stack 是蚂蚁金服自主研发的金融级分布式架构,包含了构建金融级云原生架构所需的各个组件,是在金融场景里锤炼出来的最佳实践。 SOFALookout 是蚂蚁金服在 SOFAStack 体系内研发开源的一款解决系统的度量和监控问题的轻量级中间件服务。本文给大家介绍下 SOFALookout 服务器端主要提供的特性以及使用方式。 SOFALookout:https://github.com/sofastack/sofa-lookout 前言容器,K8S,微服务,Mesh 以及 Serverless 这些新技术方向正在根本的变革我们运行软件的方式。我们构建的系统更加分布式化,另外由于容器,系统的生命周期更加短...阅读全文

博文 2019-06-06 13:32:42 金融级分布式架构

Prometheus 编写自己的 exporter

保证Go语言安装环境(1.7以上) 1) 下载对应的prometheus包 go get github.com/prometheus/client_golang/prometheus/promhttp 2)程序主函数: package main import ( "log" "net/http" "github.com/prometheus/client_golang/prometheus/promhttp" ) func main() { http.Handle("/metrics", promhttp.Handler()) log.Fatal(http.ListenAndServe(":8080", nil)) } 指标类别 Prometheus中主要使用的四类指标类型,如下所示 Cou...阅读全文

博文 2019-02-26 15:34:49 pigness