生产环境大都是在 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. 【pytorch学习】之线性代数

    3 线性代数 3.1 标量 如果你曾经在餐厅支付餐费,那么应该已经知道一些基本的线性代数,比如在数字间相加或相乘.例如,北京的温度为52◦F(华氏度,除摄氏度外的另一种温度计量单位).严格来说,仅包含 ...

  2. 龙蜥社区成立系统运维SIG,重磅开源sysAK系统运维工具集

    简介:系统运维SIG致力于打造一个集主机管理.配置部署.监控报警.异常诊断.安全审计等一系列功能的自动化运维平台. ​ OpenAnolis 龙蜥社区(以下简称"龙蜥社区")正式成 ...

  3. CPU静默数据错误:存储系统数据不丢不错的设计思考

    简介: 对于数据存储系统来说,保障数据不丢不错是底线,也是数据存储系统最难的部分.据统计,丢失数据中心10天的企业,93%会在1年内破产.那么如果想要做到数据不丢不错,我们可以采取怎样的措施呢? 作者 ...

  4. Javascript 机器学习的四个层次

    ​简介: Atwood定律说,凡是可以用Javascript实现的应用,最终都会用Javascript实现掉.作为最热门的机器学习领域,服务端是Python的主场,但是到了手机端呢?Android和i ...

  5. [FAQ] Win10 WSL Ubuntu 根目录实际位置

    1. 运行(win+R),直接输入 \\wsl$ 进入Ubuntu的目录. 2. 或者文件夹里同样输入  \\wsl$ 进行查找. Refer:Win10 WSL 路径 Link:https://ww ...

  6. Java equals(),== 和 hashcode()

    首先来看看equals() 和 "==" 的关系 1.在Java中==是用来比较两个对象的内存地址是否相同的,如果是基本类型的话将会比较其值. 2.equals()我们如果使用的是 ...

  7. GitLab 升级迁移待办清单

    GitLab 大版本升级测试用例 项目 从模板项目 URL 导入,来创建新的项目 议题 通过 Quick Actions.关联新建.直接新建 模板 关联项 标签 工时 评论 看板 里程碑 分支 通过 ...

  8. ES_CCS/R(一):建立集群之间的安全互信

    为了能够实现 CCR(跨集群复制 Cross-cluster replication) 及 CCS(跨集群搜索 Cross-cluster search ),我们必须让集群之间能够互信,这样才可以建立 ...

  9. 【RMAN】一些参数温故知新

    RMAN全局参数: CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 21 DAYS 这样相当于保留备份的窗口为21天,说明,从今天起的前21天的数据都 ...

  10. ansible系列(32)--ansible实战之部署WEB集群架构(2)

    1. 基础环境role编写 创建基础环境role的相关目录: [root@xuzhichao cluster-roles]# mkdir base-module/{tasks,handlers,fil ...