StatsD 和 CollectD 有什么关系?
我正在通过 collectd 从服务器收集数据并将其存储在石墨中。我想使用 grafana 仪表板。我正在尝试为内存插件创建可视化。在石墨中,我看到的数据以 Mb 为单位,但在 Grafana 图中,我在 Y 轴上看到了奇怪的“Mib”或“Bil”。如何更改 grafana 测量单位?
我想在collectd中使用Python 3解释器,但是没有(记录的)选项来设置解释器的路径或版本,并且它默认为也安装在我的系统上的Python 2解释器(位于/usr/bin/python2.7)。
我的 Python 3 解释器位于/usr/bin/python3并/usr/bin/python与其符号链接;运行“env python”和“python”都给我Python 3解释器。
Collectd 的 Python 插件的文档(不清楚,在 IMO 看来尚未完成)提到了 Python 3 :
编码名称 - 传递给collectd 的Unicode 对象的默认编码。如果省略此选项,它将在 Python 2 上默认为 ascii,在 Python 3 上默认为 utf-8。这是在 Python 中硬编码的,将忽略其他所有内容,包括您的语言环境。
但这并没有告诉我们如何实际使用 Python 3,而且 Google 似乎也不知道。
在过去的几个小时里,我一直在用这个头撞墙,所以我在这里问你们。
我有一个 collectd 实例,它被设置为获取 statsd 指标并使用network插件将它们路由到主 collectd 实例,然后通过write_graphite插件将它们发送到 influxdb 。
向statsd插件发送指标有效(我已经检查tcpdump并使用csv插件作为调试工具)。
当network插件将收集到的指标发送到“主要”collectd 实例时,这成为一个问题。该network插件似乎每 100 秒或重新启动时只发送一次数据(我猜它在停止时刷新缓冲区)。
以下是客户端机器的配置:
/etc/collectd/collectd.conf
Hostname "collectd.client"
FQDNLookup false
BaseDir "/var/lib/collectd"
PluginDir "/usr/lib/collectd"
TypesDB "/usr/share/collectd/types.db"
AutoLoadPlugin false
Interval 10
LoadPlugin logfile
<Plugin logfile>
LogLevel "info"
File "/var/log/collectd.log"
Timestamp true
PrintSeverity true
</Plugin>
<Include "/etc/collectd/conf.d">
Filter "*.conf"
</Include>
Run Code Online (Sandbox Code Playgroud)
/etc/collectd/conf.d/network.conf
LoadPlugin network
<Plugin "network">
<Server "main-instance-ip" "25826">
SecurityLevel "Encrypt"
Username "collectd"
Password "xxxxxxxx"
</Server>
</Plugin>
Run Code Online (Sandbox Code Playgroud)
/etc/collectd/conf.d/collectd.statsd.conf …
我正在使用石墨版本 0.9.10 来读取ifHCInOctetsand ifHCOutOctets,我正在使用和插件进行轮询;我使用的是5.1.0 版。collectd snmpgraphite_writecollectd
数据毫无问题地到达石墨;但是,我想以每秒位数表示。为了测试我的统计数据是否正确,我开始了 CD iso 下载并观察了下载速率……它在 1.0Mbps 和 2.0Mbps 之间变化。
常识告诉您,您需要将八位字节计数器乘以 8 才能得到位;但是,似乎我需要除以 8 才能正确显示石墨。
当我乘以 0.125 比例因子时scale(scaleToSeconds(nonNegativeDerivative(<SERIES>), 60),0.125),公式正确转换为每秒位数,我看到 1Mpbs 和 2Mbps 之间的数字......

当我乘以 8.0 比例因子时scale(scaleToSeconds(nonNegativeDerivative(<SERIES>), 60),8),结果显然是错误的……图表峰值为 120Mbps。我知道这是错误的,因为这是一个具有 5M 上限的住宅电缆调制解调器。

问题:如果我将八位字节发送到石墨,为什么会scale(<foo>, 8)产生不正确的结果?
/opt/collectd/etc/collectd.conf
LoadPlugin syslog
LoadPlugin cpu
LoadPlugin interface
LoadPlugin load
LoadPlugin memory
LoadPlugin network
LoadPlugin snmp
LoadPlugin write_graphite
<Plugin snmp>
<Data "std_traffic">
Type "if_octets"
Table true
Instance "IF-MIB::ifName"
Values "IF-MIB::ifHCInOctets" "IF-MIB::ifHCOutOctets"
</Data> …Run Code Online (Sandbox Code Playgroud) 我正在用 bash 编写一个 collectd nagios 自定义检查脚本。我遇到的问题是 nagios 将主机名显示为 host.name.domain 但 collectd 将 WSP 文件保存为 host_name_domain。我的问题是如何使变量将从 nagios (host.name.domain) 获取的主机名转换为 collectd 格式 (host_name_domain)。
这是必须发生转换的部分。所以 WSP_PATH 会在变量 $NHOST 中给出主机名的 collectd 格式
WSP_PATH=/var/lib/carbon/whisper/ctd/$NHOST/uptime/uptime.wsp
Run Code Online (Sandbox Code Playgroud) 我正在尝试将 Kapacitor 与我们的 influxdb 和 collectd 设置集成。但是,它似乎不起作用,我不明白为什么。
Collectd 和 Influxdb 运行正常,我认为 Kapacitor 能够连接到 influxdb。在 kapacitor 日志中,我看到了这个:
[influxdb] 2016/04/22 09:46:42 I! started UDP listener for collectd_db default
Run Code Online (Sandbox Code Playgroud)
这是 collectd 记录指标的 influxdb 数据库的名称。
我创建了以下刻度文件,并将其上传到 kapacitor 并启用它:
stream
.from().measurement('cpu_value')
.where(lambda: "type" == "percent")
.where(lambda: "type_instance" == "idle")
.alert()
.crit(lambda: "value" < 100)
// Whenever we get an alert write it to a file.
.log('/tmp/alerts.log')
Run Code Online (Sandbox Code Playgroud)
这只是一个测试脚本,希望能产生一些输出。
脚本已启用:
Name Type Enabled Executing Databases and Retention Policies
cpu_tick stream true true ["collectd_db"."default"]
Run Code Online (Sandbox Code Playgroud)
但是,我没有看到任何录音:
[centos@ip-xx-xx-xx-xx tmp]$ kapacitor …Run Code Online (Sandbox Code Playgroud)