先说一下写这篇文章的初衷:这个要配置起来的话其实很简单一条命令就搞定了。但是我在网上搜了一下发现跟这个相关文章一个都没有,全是在categraf官网上照着复制粘贴一下。完全跟我的需求完全不一样。最后花了我两天的时间才给搞好(必须吐槽一下)

1.部署Prometheus

大家可以直接去Prometheus的官网上下载二进制的软件包

普罗米修斯的官网

进去之后根据自己的情况进行选型,不同的选型对应的软件包不一样。(我这里用的是2。45版本的包)

下载完成后将软件包上传到机器。上传完成后进行解压。

tar -xf prometheus-2.45.0.linux-amd64.tar.gz #解压软件包cd prometheus-2.45.0.linux-amd64/ #进入到解压后的目录

这里我们只是将categraf作为Prometheus。Prometheus的监控配置和告警规则就不多说。此时我们的配置文件就不需要改动只需要将Prometheus的二进制脚本运行起来就可以了。

./prometheus --web.enable-remote-write-receiver #注意重点来了“--web.enable-remote-write-receiver” 这个参数是一定要添加的,如果不添加Prometheus就接受不到categraf推送过来的数据。大家可通过./prometheus --help 查看支持的一些参数配置

运行起来之后就可以通过本机地址加9090端口登陆Prometheus的WEB UI界面

这就是Prometheus的WEB UI界面,此时Prometheus的部署已经完成了

2.部署categraf

categraf的部署也是非常简单,通过二进制包安装

登陆categraf的官网下载对应的安装包

https://github.com/flashcatcloud/categraf/releases:下载地址

下载完成后上传到服务器,并解压。

tar -xf categraf-v0.3.22-linux-amd64.tar.gz #解压文件cd categraf-v0.3.22-linux-amd64/#进入到压缩目录[root@node1 categraf-v0.3.22-linux-amd64]# lscategrafconf此时目录下有两个文件categraf :二进制脚本categraf :配置目录

进入配置文件修改配置

vim conf/config.toml #进入配置文件#找到此行配置[[writers]]url = "http://127.0.0.1:17000/prometheus/v1/write"#改成如下配置[[writers]]url = "http://localhost:9090/api/v1/write"localhost:为部普罗米修斯的服务器的ip地址9090:普罗米修斯的端口(默认9090)/api/v1/write :对接的api接口(因为 Prometheus 的 RemoteWrite 数据接收地址是 /api/v1/write)

执行运行脚本

./categraf

现在Prometheus和categraf已经对接上了。

我们现在回到Prometheus的WEB UI界面,查询一个参数看看categraf是否将监控信息推给Prometheus

此时我cpu是打满的状态,因为我在主机上执行了dd if=/dev/zero of=/dev/null 所以是正常的。到这一步categraf对接Prometheus已经全部完成了。

全文的重点来了

我们此时在Prometheus WEB UI界面执行查询语句的时候就不能用PromQL查询了,要用categraf的语法来查询。

categraf的安装目录conf目录下有许多插件目录,此时我们可以通过./categraf –test –inputs cpu 命令来测试这个插件有哪些监控指标

举个栗子:

此时我conf下面有这么的监控指标[root@node1 conf]# lscategraf.service input.docker input.kubernetesinput.ntpinput.snmpconfig.tomlinput.elasticsearchinput.linux_sysctl_fs input.nvidia_smi input.sockstatconfig.toml.bakinput.exec input.logstashinput.oracle input.sqlserverinput.aliyun input.googlecloudinput.mem input.phpfpm input.switch_legacyinput.appdynamicsinput.greenpluminput.mongodb input.ping input.systeminput.arp_packet input.haproxyinput.mtail input.postgresql input.systemdinput.cadvisor input.http_responseinput.mysql input.processesinput.tomcatinput.clickhouse input.ipmi input.net input.procstat input.vsphereinput.cloudwatch input.ipvs input.net_responseinput.prometheus input.whoisinput.conntrackinput.jenkinsinput.netstat input.rabbitmq input.xskyapiinput.consul input.jolokia_agent_kafkainput.netstat_filterinput.redisinput.zookeeperinput.cpuinput.jolokia_agent_misc input.nfsclient input.redis_sentinel logs.tomlinput.disk input.kafkainput.nginx input.rocketmq_offsettraces.yamlinput.diskio input.kernel input.nginx_upstream_checkinput.self_metricsinput.dns_queryinput.kernel_vmstatinput.nsq input.smart如果说我想看内存的监测指标有哪些呢?此时我们执行“./categraf --test --inputs mem”#这些都是他返回的值,因为太多没有列全12:01:43 mem_used agent_hostname=node1 66746777612:01:43 mem_commit_limit agent_hostname=node1 306352537612:01:43 mem_high_free agent_hostname=node1 012:01:43 mem_vmalloc_chunk agent_hostname=node1 012:01:43 mem_total agent_hostname=node1 183209164812:01:43 mem_buffered agent_hostname=node1 409612:01:43 mem_shared agent_hostname=node1 2863104012:01:43 mem_write_back_tmp agent_hostname=node1 012:01:43 mem_active agent_hostname=node1 38100172812:01:43 mem_sreclaimable agent_hostname=node1 9174630412:01:43 mem_cached agent_hostname=node1 62642176012:01:43 mem_committed_as agent_hostname=node1 2669568000

此时我们就可以拿着这些指标去Prometheus WEB UI上去监控

如果后面对接Grafana平台,告警阈值也是根据categraf的指标来写的。

以上就是我部署的时候遇到的一些问题,希望对你们能够有所帮助。啊!拜拜。