Kubernetes监控手册03-宿主监控实操
生产环境大都是在 Linux 下的,所以这篇文章我们先来分享如何使用 Categraf 采集 Linux OS 相关的指标。读完本篇内容,你应该可以完成机器层面的监控了。
原理概述
Categraf 作为一款 agent 需要部署到所有目标机器上,因为采集 CPU、内存、IO、进程等指标,是需要读取 OS 里的一些信息的,远程读取不了。采集到数据之后,做格式转换,传输给监控服务端,这里我们使用 Nightingale 作为监控服务端软件。
Categraf 推送监控数据到服务端,走的是 Prometheus 的 RemoteWrite 协议,是基于 protobuf 的 HTTP 协议,所以,不止是 Nightingale,所有支持 RemoteWrite 的后端,都可以和 Categraf 对接。
软件下载
Categraf 的 GitHub 地址是:https://github.com/flashcatcloud/categraf,从 releases 下可以找到已经提前编译好的二进制,我的环境是 CentOS7,所以,选择 linux-amd64 的 tarball。
软件配置
Categraf 下载之后解压缩,最需要注意的配置是监控数据的推送地址,即下面的部分:
[[writers]]
url = "http://127.0.0.1:19000/prometheus/v1/write"
默认给的这个地址,是 n9e-server 的 RemoteWrite 数据接收地址,如果你也是用的 Nightingale,把 127.0.0.1:9090 改成你的 n9e-server 的地址即可,url 路径不用变。
如果你想让 Categraf 把数据推给 Prometheus,也 OK,此时不但要修改 IP:端口 为你的环境的 Prometheus 的地址,还要修改 url 路径,因为 Prometheus 的 RemoteWrite 数据接收地址是 /api/v1/write。最后,还要注意,Prometheus 进程启动的时候,需要增加一个启动参数:--enable-feature=remote-write-receiver,重启 Prometheus 即可接收 RemoteWrite 数据。
另外就是插件的配置,Categraf 是插件架构,内置很多采集插件,采集CPU的数据使用cpu插件,采集内存的数据使用mem插件,Categraf 的 conf 目录下,可以看到很多 input. 相关的目录,就是一个个插件的配置目录。如果有些插件不需要,删除对应的 input. 目录即可。
启动 Categraf
启动之前先做个测试,通过 ./categraf --test 看看有没有报错,正常情况的话会在命令行输出采集到的监控数据。下面是我的环境下的运行结果,供参考:
[root@tt-fc-dev01.nj categraf]# ./categraf --test --inputs mem:system
2022/11/05 09:14:31 main.go:110: I! runner.binarydir: /home/work/go/src/categraf
2022/11/05 09:14:31 main.go:111: I! runner.hostname: tt-fc-dev01.nj
2022/11/05 09:14:31 main.go:112: I! runner.fd_limits: (soft=655360, hard=655360)
2022/11/05 09:14:31 main.go:113: I! runner.vm_limits: (soft=unlimited, hard=unlimited)
2022/11/05 09:14:31 config.go:33: I! tracing disabled
2022/11/05 09:14:31 provider.go:63: I! use input provider: [local]
2022/11/05 09:14:31 agent.go:85: I! agent starting
2022/11/05 09:14:31 metrics_agent.go:93: I! input: local.mem started
2022/11/05 09:14:31 metrics_agent.go:93: I! input: local.system started
2022/11/05 09:14:31 prometheus_scrape.go:14: I! prometheus scraping disabled!
2022/11/05 09:14:31 agent.go:96: I! agent started
09:14:31 system_load_norm_5 agent_hostname=tt-fc-dev01.nj 0.3
09:14:31 system_load_norm_15 agent_hostname=tt-fc-dev01.nj 0.2675
09:14:31 system_uptime agent_hostname=tt-fc-dev01.nj 7307063
09:14:31 system_load1 agent_hostname=tt-fc-dev01.nj 1.66
09:14:31 system_load5 agent_hostname=tt-fc-dev01.nj 1.2
09:14:31 system_load15 agent_hostname=tt-fc-dev01.nj 1.07
09:14:31 system_n_cpus agent_hostname=tt-fc-dev01.nj 4
09:14:31 system_load_norm_1 agent_hostname=tt-fc-dev01.nj 0.415
09:14:31 mem_swap_free agent_hostname=tt-fc-dev01.nj 0
09:14:31 mem_used agent_hostname=tt-fc-dev01.nj 5248593920
09:14:31 mem_high_total agent_hostname=tt-fc-dev01.nj 0
09:14:31 mem_huge_pages_total agent_hostname=tt-fc-dev01.nj 0
09:14:31 mem_low_free agent_hostname=tt-fc-dev01.nj 0
...
Linux 下启动 Categraf 显然推荐使用 systemd 来启动,service 样例文件已经给大家准备好了,在 conf/categraf.service。不懂如何使用 systemd 的朋友,可以学习这个课程。
导入配置
Categraf 除了要做 All-in-one 的采集器,还希望沉淀最佳实践出来,比如 MySQL的监控采集插件 的代码目录里,大家可以看到有 alerts.json 表示告警规则,导入夜莺即可使用,还有 dashboard-x.json 表示监控大盘,也是导入夜莺即可使用。dashboard-x.json 可能有多个,是因为可能有不同的查看维度,你可以都导入看看,相中哪个就用哪个。
机器相关的指标,分成了很多个插件,比如 cpu、mem、disk、net 等等,但是这些数据一般会放到一张大盘里查看,所以机器相关的告警规则和监控大盘的json放到了system目录。导入夜莺之后的查看效果如下:

另外说一下,Categraf 虽然希望沉淀出最佳实践,但是采集插件实在是太多了,而且还在逐步引入更多采集插件,有些插件我们自己也没有测试环境,需要依靠社区的力量,大家一起维护这些监控大盘和告警规则,如果有的插件缺失,欢迎你来提交PR补充,为社区建设添砖加瓦,利人利己。
总结
Kubernetes 宿主的监控,和之前传统的物理机虚拟机时代的机器监控没有本质区别。下一节开始,我们将为大家介绍如何监控工作负载节点,包括 Pod 容器、Kubelet、Kube-Proxy 等组件。
扩展阅读
关于作者
本文作者秦晓辉,快猫星云合伙人,文章内容是快猫技术团队共同沉淀的结晶,作者做了编辑整理,我们会持续输出监控、稳定性保障相关的技术文章,文章可转载,转载请注明出处,尊重技术人员的成果。
Kubernetes监控手册03-宿主监控实操的更多相关文章
- Linux+Nginx+Supervisor部署ASP.NET Core实操手册
一.课程介绍 在上一节课程<ASP.NET Core托管和部署Linux实操演练手册>中我们学过net core的部署方式多样性和灵活性.我们通过远程工具输入dotnet 程序集名称.dl ...
- ASP.NET Core托管和部署Linux实操演练手册
一.课程介绍 ASP.NET Core 是一种全新的跨平台开源 .NET 框架,能够在 IIS.Nginx.Apache.Docker 上进行托管或在自己的进程中进行自托管. 作为一个.NET Web ...
- Kubernetes Ingress 日志分析与监控的最佳实践
摘要: Ingress主要提供HTTP层(7层)路由功能,是目前K8s中HTTP/HTTPS服务的主流暴露方式.为简化广大用户对于Ingress日志分析与监控的门槛,阿里云容器服务和日志服务将Ingr ...
- Istio的流量管理(实操三)
Istio的流量管理(实操三) 涵盖官方文档Traffic Management章节中的egress部分.其中有一小部分问题(已在下文标注)待官方解决. 目录 Istio的流量管理(实操三) 访问外部 ...
- 72 个网络应用安全实操要点,全方位保护 Web 应用的安全
原文地址:Web Application Security Checklist 原文作者:Teo Selenius(已授权) 译者 & 校正:HelloGitHub-小熊熊 & 卤蛋 ...
- 6.3 Pandora 实操 - 数据立方
简介 数据立方是适用于大规模实时数据(每天百亿条,10TB+ 级别数据)查询与分析的数据库系统,提供交互式的访问数据的能力,支持数据过滤.分组.聚合,实现亚秒级以内对亿行级别的数据表进行多维探索分析. ...
- 指导手册03:Hadoop基础操作
指导手册03:Hadoop基础操作 Part 1:查看Hadoop集群的基本信息1.查询存储系统信息(1)在WEB浏览器的地址栏输入http://master:50070/ 请查看自己的Hadoop集 ...
- HDFS集群PB级数据迁移方案-DistCp生产环境实操篇
HDFS集群PB级数据迁移方案-DistCp生产环境实操篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 用了接近2个星期的时间,终于把公司的需要的大数据组建部署完毕了,当然,在部 ...
- Istio的流量管理(实操一)(istio 系列三)
Istio的流量管理(实操一)(istio 系列三) 使用官方的Bookinfo应用进行测试.涵盖官方文档Traffic Management章节中的请求路由,故障注入,流量迁移,TCP流量迁移,请求 ...
- Istio的流量管理(实操二)(istio 系列四)
Istio的流量管理(实操二)(istio 系列四) 涵盖官方文档Traffic Management章节中的inrgess部分. 目录 Istio的流量管理(实操二)(istio 系列四) Ingr ...
随机推荐
- 牛客网-SQL专项练习1
①检索所有比"王华"年龄大的学生姓名.年龄和性别.SQL语句: 解析: 第一步:先找到王华的年龄 SELECT AGE FROM S WHRE SN = "王华" ...
- 轻松处理高于平常10倍的视频需求,还能节省60%的IT成本,蓝墨做对了什么?
近年来,Serverless 一直在高速发展,并呈现出越来越大的影响力.主流的云服务商也在不断地丰富云产品体系,提供更好的开发工具,更高效的应用交付流水线,更好的可观测性,更细腻的产品间集成,但一切才 ...
- 阿里云力夺FewCLUE榜首!知识融入预训练+小样本学习的实战解析
简介: 7月8日,中文语言理解权威评测基准CLUE公开了中文小样本学习评测榜单最新结果,阿里云计算平台PAI团队携手达摩院智能对话与服务技术团队,在大模型和无参数限制模型双赛道总成绩第一名,决赛答辩总 ...
- WPF 全屏窗口将让 Chrome 97 视频停止播放
无论是使用 WPF 全屏窗口,还是高性能全屏透明窗口,都会在 Chrome 97 以及使用 chromium 对应版本内核的应用的视频停止播放.这是 chromium 的一个优化,因为 chromiu ...
- 2019-11-29-dotnet-代码调试方法
title author date CreateTime categories dotnet 代码调试方法 lindexi 2019-11-29 8:50:0 +0800 2019-6-5 9:4:4 ...
- portainer和cadvisor图形化界面管理与监控
一.cadvisor docker pull google/cadvisor docker run -it -p 8890:8080 -v /var/run:/var/run -v /db/docke ...
- ansible系列(29)--ansible的Jinja2语法及应用
目录 1. Ansible Jinja2 1.1 jinja2语法结构 1.2 jinja2中{{ }}中的运算符 1.3 jinja2中for循环和if判断示例 1.4 Jinja2管理Nginx负 ...
- radmin远程控制软件怎么样,有没有替代品
Radmin 是流行的.屡获殊荣的安全远程控制软件,它使您能够在远程计算机上实时工作,就像使用它自己的键盘和鼠标一样. 您可以从多个地方远程访问同一台计算机,是网络和管理类别中流行的远程桌面工具. R ...
- 4G EPS 的网络协议栈
目录 文章目录 目录 前文列表 LTE/EPC 协议栈 E-UTRAN 空中接口协议栈 用户平面协议 PHY 层 MAC 层 RLC 层 PDCP 层 控制平面协议 RRC 层 NAS 层 EPC 核 ...
- 在 JS 中调整 canvas 里的文字间距
实现说明: 在 JS 中 canvas 原生没有支持对文字间距的调整,我们可以通过将文字的每个字符单独渲染来实现.本案例从 CanvasRenderingContext2D 对象的原型链上扩展了一个用 ...