searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

手把手教你编写自定义Categraf插件

2023-05-29 07:05:11
283
0

Categraf 是一个监控采集 Agent,类似 Telegraf、Grafana-Agent、Datadog-Agent,希望对所有常见监控对象提供监控数据采集能力,采用 All-in-one 的设计,不但支持指标采集,也希望支持日志和调用链路的数据采集。相比于其他采集器,Categraf 的优势在于:支持 remote_write 写入协议,支持将数据写入 promethues、M3DB、VictoriaMetrics、InfluxDB;指标数据只采集数值,不采集字符串,标签维持稳态结构;采用 all-in-one 的设计,所有的采集工作用一个 agent搞定;未来也可以把日志和 trace 的采集纳入 agent;纯 Go 代码编写,静态编译依赖少,容易分发,易于安装。

教你编写自定义Categraf插件:

下面以自定义http_response插件为例;

http_response插件作用:解析http响应,该响应可以是获取的监控数据,再将响应写入指定的监控数据库,如promethues、VictoriaMetrics、InfluxDB等;

http_response插件编写思路:

  1. 拉取官方代码仓库项目,在插件目录input文件夹下建http_response文件夹,在http_response文件夹下建立http_response.go
  2. http_response.go以任意一个官方已有插件go文件为模板粘贴,此处以tomcat插件为例,先将涉及插件名称的地方改为http_response
  3. 在解释器目录parser文件夹下httpresponse文件夹,在httpresponse文件夹下建立parser.go
  4. parser.go中解析的http响应数据的方法,并调用SampleList类的PushSample或PushSamples方法推送监控数据
  5. 在http_response.go中将初始化方法func (ins *Instance) Init() 中调用解释器即可
  6. 在配置文件目录conf下建立inputs.http_response文件夹,在inputs.http_response文件夹下增加http_response.toml
  7. http_response.toml中增加需要的配置,如

    #collect interval
     interval = 60

    [[instances]]
    targets = [
    "http://localhost",
    "http://localhost:8080/metrics1",
    "http://localhost:8088/metrics2"
    ]

     

    #append some labels for series
     labels = { device_type="vm"}

  8. 在代理注册agent文件下的metrics_agent.go中导入自定义插件的路径,如_ "flashcat.cloud/categraf/inputs/http_response"

  9. 调试插件:可以将不启用插件的conf下的配置文件删除或重命名,或将agent下的注册插件注释即可
     

Categraf的官方代码托管在两个地方:

- github:https://github.com/flashcatcloud/categraf
- gitlink:https://www.gitlink.org.cn/flashcat/categraf

0条评论
0 / 1000
任****佳
1文章数
0粉丝数
任****佳
1 文章 | 0 粉丝
任****佳
1文章数
0粉丝数
任****佳
1 文章 | 0 粉丝
原创

手把手教你编写自定义Categraf插件

2023-05-29 07:05:11
283
0

Categraf 是一个监控采集 Agent,类似 Telegraf、Grafana-Agent、Datadog-Agent,希望对所有常见监控对象提供监控数据采集能力,采用 All-in-one 的设计,不但支持指标采集,也希望支持日志和调用链路的数据采集。相比于其他采集器,Categraf 的优势在于:支持 remote_write 写入协议,支持将数据写入 promethues、M3DB、VictoriaMetrics、InfluxDB;指标数据只采集数值,不采集字符串,标签维持稳态结构;采用 all-in-one 的设计,所有的采集工作用一个 agent搞定;未来也可以把日志和 trace 的采集纳入 agent;纯 Go 代码编写,静态编译依赖少,容易分发,易于安装。

教你编写自定义Categraf插件:

下面以自定义http_response插件为例;

http_response插件作用:解析http响应,该响应可以是获取的监控数据,再将响应写入指定的监控数据库,如promethues、VictoriaMetrics、InfluxDB等;

http_response插件编写思路:

  1. 拉取官方代码仓库项目,在插件目录input文件夹下建http_response文件夹,在http_response文件夹下建立http_response.go
  2. http_response.go以任意一个官方已有插件go文件为模板粘贴,此处以tomcat插件为例,先将涉及插件名称的地方改为http_response
  3. 在解释器目录parser文件夹下httpresponse文件夹,在httpresponse文件夹下建立parser.go
  4. parser.go中解析的http响应数据的方法,并调用SampleList类的PushSample或PushSamples方法推送监控数据
  5. 在http_response.go中将初始化方法func (ins *Instance) Init() 中调用解释器即可
  6. 在配置文件目录conf下建立inputs.http_response文件夹,在inputs.http_response文件夹下增加http_response.toml
  7. http_response.toml中增加需要的配置,如

    #collect interval
     interval = 60

    [[instances]]
    targets = [
    "http://localhost",
    "http://localhost:8080/metrics1",
    "http://localhost:8088/metrics2"
    ]

     

    #append some labels for series
     labels = { device_type="vm"}

  8. 在代理注册agent文件下的metrics_agent.go中导入自定义插件的路径,如_ "flashcat.cloud/categraf/inputs/http_response"

  9. 调试插件:可以将不启用插件的conf下的配置文件删除或重命名,或将agent下的注册插件注释即可
     

Categraf的官方代码托管在两个地方:

- github:https://github.com/flashcatcloud/categraf
- gitlink:https://www.gitlink.org.cn/flashcat/categraf

文章来自个人专栏
开发知识库
1 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0