生产环境大都是在 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-宿主监控实操的更多相关文章

  1. Linux+Nginx+Supervisor部署ASP.NET Core实操手册

    一.课程介绍 在上一节课程<ASP.NET Core托管和部署Linux实操演练手册>中我们学过net core的部署方式多样性和灵活性.我们通过远程工具输入dotnet 程序集名称.dl ...

  2. ASP.NET Core托管和部署Linux实操演练手册

    一.课程介绍 ASP.NET Core 是一种全新的跨平台开源 .NET 框架,能够在 IIS.Nginx.Apache.Docker 上进行托管或在自己的进程中进行自托管. 作为一个.NET Web ...

  3. Kubernetes Ingress 日志分析与监控的最佳实践

    摘要: Ingress主要提供HTTP层(7层)路由功能,是目前K8s中HTTP/HTTPS服务的主流暴露方式.为简化广大用户对于Ingress日志分析与监控的门槛,阿里云容器服务和日志服务将Ingr ...

  4. Istio的流量管理(实操三)

    Istio的流量管理(实操三) 涵盖官方文档Traffic Management章节中的egress部分.其中有一小部分问题(已在下文标注)待官方解决. 目录 Istio的流量管理(实操三) 访问外部 ...

  5. 72 个网络应用安全实操要点,全方位保护 Web 应用的安全

    原文地址:Web Application Security Checklist 原文作者:Teo Selenius(已授权) 译者 & 校正:HelloGitHub-小熊熊 & 卤蛋 ...

  6. 6.3 Pandora 实操 - 数据立方

    简介 数据立方是适用于大规模实时数据(每天百亿条,10TB+ 级别数据)查询与分析的数据库系统,提供交互式的访问数据的能力,支持数据过滤.分组.聚合,实现亚秒级以内对亿行级别的数据表进行多维探索分析. ...

  7. 指导手册03:Hadoop基础操作

    指导手册03:Hadoop基础操作 Part 1:查看Hadoop集群的基本信息1.查询存储系统信息(1)在WEB浏览器的地址栏输入http://master:50070/ 请查看自己的Hadoop集 ...

  8. HDFS集群PB级数据迁移方案-DistCp生产环境实操篇

    HDFS集群PB级数据迁移方案-DistCp生产环境实操篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 用了接近2个星期的时间,终于把公司的需要的大数据组建部署完毕了,当然,在部 ...

  9. Istio的流量管理(实操一)(istio 系列三)

    Istio的流量管理(实操一)(istio 系列三) 使用官方的Bookinfo应用进行测试.涵盖官方文档Traffic Management章节中的请求路由,故障注入,流量迁移,TCP流量迁移,请求 ...

  10. Istio的流量管理(实操二)(istio 系列四)

    Istio的流量管理(实操二)(istio 系列四) 涵盖官方文档Traffic Management章节中的inrgess部分. 目录 Istio的流量管理(实操二)(istio 系列四) Ingr ...

随机推荐

  1. 谢老师2024春 - Day1:组合数学

    Day1:组合数学 A - P5520 [yLOI2019] 青原樱 隔板法: 已选择的位置:\(m\) 棵樱花树. 未选择的位置:\(n-m\) 个空位置 板的数量(一棵樱花树就是一个板):\(m\ ...

  2. Ingress Nginx 接连披露高危安全漏洞,是否有更好的选择?

    简介: 在<K8s 网关选型初判:Nginx 还是 Envoy>一文中,我们已经给出了这个新的选项:MSE 云原生网关.本文继续展开分析,为何 MSE 云原生网关有更好的安全性保障. 作者 ...

  3. 基于 Wasm 和 ORAS 简化扩展服务网格功能

    简介: 本文将介绍如何使用 ORAS 客户端将具有允许的媒体类型的 Wasm 模块推送到 ACR 注册库(一个 OCI 兼容的注册库)中,然后通过 ASM 控制器将 Wasm Filter 部署到指定 ...

  4. 双11特刊|一站式在线数据管理平台DMS技术再升级,高效护航双11

    ​简介: 10万+企业共同选择的数据库服务平台 阿里云数据库已连续多年稳定支撑天猫双11,历经极端流量场景淬炼.除了保障稳定顺滑的基本盘,今年大促期间数据库通过全面云原生化,大幅提升用户体验,让技术帮 ...

  5. dotnet 修复 GitHub Action 构建过程提示 NETSDK1127 错误

    本文告诉大家,如何修复 GitHub Action 构建过程提示 error NETSDK1127: The targeting pack Microsoft.WindowsDesktop.App.W ...

  6. Fiddler 将插件放在独立子文件夹

    我的 Fiddler 安装了许多插件,有一些插件存在 DLL 名冲突问题,比如多个不同的插件都存在名为 PluginCore.dll 但实际实现逻辑完全不相同的程序集.这就导致了多个插件的安装之间,如 ...

  7. dotnet 警惕使用 StackTrace 加获取方法标记 Attribute 特性在 Release 下被内联

    大家都知道,在 dotnet 里的 Debug 下和 Release 下的一个最大的不同是在 Release 下开启了代码优化.启用代码优化,将会对生成的 IL 代码进行优化,同时优化后的 IL 也会 ...

  8. 3种方式自动化控制APP

    自动化控制APP不管是在工作还是生活方面,都可以帮助我们高效地完成任务,节省时间和精力.本文主要介绍自动化控制APP的3种常用方式. 1.Python + adb 这种方式需要对Android有一些基 ...

  9. kubeadm安装多master节点的k8s集群(1)

    一.环境准备 k8s集群角色 IP 主机名 安装的相关组件 控制节点 192.168.1.10 master apiserver.controller-manager.scheduler.kubele ...

  10. Kafka源码分析(四) - Server端-请求处理框架

    系列文章目录 https://zhuanlan.zhihu.com/p/367683572 一. 总体结构 先给一张概览图: 服务端请求处理过程涉及到两个模块:kafka.network和kafka. ...