diamond收集插件的自定义
diamond是与graphite配合使用的一个数据收集的软件,关于这个配置的资料很多,使用起来也比较简单,详细的安装和配置会在后面的关于整套监控系统的文章里面写到,本篇是专门讲解怎么自定义这个数据收集的插件
diamond的结构比较简单:
- Collector 数据采集的模块
- handlers 数据发送的模块
这里主要讲解的是Collector部分的插件的编写,diamond自身带了非常丰富的插件,可以很方便的使用自带的插件进行监控,包括ceph和cephstats这两个可以用来监控ceph的插件,弄清楚怎么去写插件会方便很多,并且能扩展原来插件所没有的数据,calamari里面的数据的收集就是通过的diamond的
本例将讲解怎么写一个监控ceph的健康状态的插件
1、diamond软件的安装
通过github上下载代码然后安装在服务器上即可
2、收集数据的py的编写
收集数据的collect的路径:
/usr/share/diamond/collectors/
2.1 创建一个目录
mkdir /usr/share/diamond/collectors/cephhealth/
2.2 创建采集的py文件
vim /usr/share/diamond/collectors/cephhealth/cephhealth.py
添加下面的内容:
# coding=utf-8
"""
本插件用于采集ceph的健康状态
"""
import diamond.collector
import json
import os
class cephhealthCollector(diamond.collector.Collector):
def get_default_config_help(self):
config_help = super(cephhealthCollector, self).get_default_config_help()
config_help.update({
})
return config_help
def get_default_config(self):
"""
Returns the default collector settings
"""
config = super(cephhealth, self).get_default_config()
config.update({
'path': 'ceph'
})
return config
def collect(self):
"""
Overrides the Collector.collect method
"""
# Set Metric Name
metric_name = "my.cephhealth.metric"
data = os.popen('ceph health -f json').read()
ddata = json.loads(data)
status = ddata['overall_status']
if status == 'HEALTH_ERR':
statuscode = 10
else:
statuscode = 0
# Set Metric Value
metric_value = statuscode
# Publish Metric
self.publish(metric_name, metric_value)
以上插件注意:
cephhealthCollector 为这个插件的名称,也是diamond.conf里面设置的时候设置的值
'path': 'ceph' 这个是在最后输出结果中会显示这个名称
其他部分就是注意输出一个名称 metric_name,和最后的 metric_value 即可
中间的部分可以自己去用python去获取数值即可
3、修改diamond配置文件
vim /etc/diamond/diamond.conf
在[collectors]下面插件配置的区域添加
[[cephhealthCollector]]
enabled = true
4、重启diamond进程
/etc/init.d/diamond restart
5、检查输出的数值
可以把其他插件全部关闭,然后查看文件
/var/log/diamond/archive.log的内容
上面的插件的输出为:
servers.grafana.ceph.my.cephhealth.metric 10 1456057146
这个结果的格式为:
- path_prefix = servers (diamond.conf中配置)
- hostname = grafana (diamond.conf中配置)
- get_default_config(self): path = ceph (插件py中配置)
- metric_name = "my.cephhealth.metric" (插件py中配置)
到这来插件就完成了,写起来还是比较简单方便的,上面的地方因为ceph里面的输出的是字符串,而grafana里面的显示状态的地方使用的是数字的,所以在这里可以通过字符串转数字,然后在web界面上使用数字字符的匹配来显示这个状态
diamond的性能是很牛的,1000 台服务器每分钟总共300万个监控数值的压力也能扛下来,对于我们普通级别的使用时绰绰有余的,关于这个规模的有人写了文章,优化的时候可以参考(1000台监控)
diamond收集插件的自定义的更多相关文章
- amazeui的表单开关插件的自定义事件必须添加.bootstrapSwitch 命名空间,给了我们什么启示
amazeui的表单开关插件的自定义事件必须添加.bootstrapSwitch 命名空间,给了我们什么启示 一.总结 一句话总结:详细看使用文档(说明文档说的真的是非常详细呢,不过循序渐进,不同阶段 ...
- spring boot集成mybatis-plus插件进行自定义sql方法开发时报nested exception is org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):
spring boot集成mybatis-plus插件进行自定义sql方法开发时报nested exception is org.apache.ibatis.binding.BindingExcept ...
- 浅析MyBatis(三):聊一聊MyBatis的实用插件与自定义插件
在前面的文章中,笔者详细介绍了 MyBatis 框架的底层框架与运行流程,并且在理解运行流程的基础上手写了一个自己的 MyBatis 框架.看完前两篇文章后,相信读者对 MyBatis 的偏底层原理和 ...
- 【Maven实战技巧】「插件使用专题」Maven-Archetype插件创建自定义maven项目骨架
技术推荐 自定义Archetype Maven骨架/以当前项目为模板创建maven骨架,可以参考http://maven.apache.org/archetype/maven-archetype-pl ...
- jquery.autocomplete.js 插件的自定义搜索规则
这二天开始用jquery.autocomplete这个自动完成插件.功能基本比较强大,但自己在实际需求中发现还是有一处不足!问题是这样:当我定义了一个本地数据JS文件时,格式为JSON式的数组.如下: ...
- Atom的追踪函数插件和自定义语法
atom网盘链接:http://pan.baidu.com/s/1nvt7vJz 密码:om26 追踪函数插件 直接使用最新autom版本傻瓜式安装 名字:goto-definition 地址:htt ...
- Maven-07: 插件的自定义绑定
除了内置绑定以外,用户还能够自己选择将某个插件目标绑定到生命周期的某个阶段上,这种自定义绑定方式能让Maven项目在构建过程中执行更多更富特色的任务. 一个常见的例子是创建项目的源码jar包.内置的插 ...
- Flask系列09--Flask中WTForms插件,及自定义验证器
一.概述 django中的forms组件非常的方便,在flask中有WTForms的组件实现的也是类似的功能, 安装这个插件 二.简单使用 文档地址https://wtforms.readthedoc ...
- 设置tabBar、使用第三方插件和自定义组件使用简单实例
创建小程序项目进入时填写,因需要用上第三方插件,所以要填上开发者的APPID,前往微信公众平台去注册一个账号获取APPID,在设置=>开发设置可以查看相关appid信息 简单思路 底部导航添加三 ...
随机推荐
- 2020年9月程序员工资统计,平均14459元!你给程序员拖后腿了吗?https://jq.qq.com/?_wv=1027&k=JMPndqoM
2020年9月全国招收程序员362409人.2020年9月全国程序员平均工资14459元,工资中位数12500元,其中95%的人的工资介于5250元到35000元. 工资与上个月持平,但是岗位有所增加 ...
- 第一期chrome浏览器的小技巧------《提高搜索效率》
!!! 这次的技巧是:利用chrome提供的设置 提高你的搜索效率 !!! 我们经常遇到问题,搜索的时候很不方便 比如你在百度上搜索一个东西的时候正好没有搜到,那么你想找到这个东西的话,很明显要到其他 ...
- goland 2020 去除形参提醒
IDEA依次打开File→settings → Editor →Inlay Hints →java ,根据个人喜好 在 Show parameter name hints 选项中灵活配置即可.新版对该 ...
- spring boot:使用validator做接口的参数、表单、类中多字段的参数验证(spring boot 2.3.1)
一,为什么要做参数验证? 永远不要相信我们在后端接收到的数据, 1,防止别人通过接口乱刷服务:有些不怀好意的人或机构会乱刷我们的服务,例如:短信接口, 相信大家可能很多人在工作中遇到过这种情况 2,防 ...
- Promises/A+规范
为什么需要异步编程方式 一个函数执行之后,在它后面顺序编写的代码中,如果能够直接使用它的返回结果或者它修改之后的引用参数,那么我们通常认为该函数是同步的. 如果一个函数的执行结果或者其修改的引用参数, ...
- CUDA和cuDNN的安装
CUDA软件 Windows 打开NVIDIA CUDA网站,选择需要下载的版本,依次选择Windows平台,x86_64架构,10系统,exe(local)本地安装包,再选择Download即可下载 ...
- 渗透测试之GoogleHack
GoogleHack 1,介绍: 使用google等搜索引擎对某些特定的网络主机漏洞(一般是服务器上的脚本漏洞)进行搜索,都能达到快速找到1漏洞的目的,然而,google相对百度讲,没有广告,搜索引擎 ...
- javaweb学习笔记整理补课
javaweb学习笔记整理补课 * JavaWeb: * 使用Java语言开发基于互联网的项目 * 软件架构: 1. C/S: Client/Server 客户端/服务器端 * 在用户本地有一个客户端 ...
- C#一行代码实现(01)最小化到通知区域
主要功能 实现Winform程序最小化后,隐藏任务栏显示,在通知区域显示.左键点击通知区域图标,可以弹出菜单,包含开机启动和退出程序,可以根据需求进行定制. 一行代码 private void For ...
- 装java开发环境 报client/jvm.dll找不到
jdk安装成功,明明有jvm.dll就是找不到,导致eclipse打不开.此时eclipse为64位,jdk为32位:查了好多方法,不起作用.最后将jdk换位64位问题解决. 所以,一般64位的系统建 ...