精品软件与实用教程
collectd 系统统计数据收集守护进程
collectd 是一个守护进程,它定期收集系统和应用程序性能指标,并提供以多种方式存储值的机制,例如在 RRD文件中。
collectd 从各种来源收集指标,例如操作系统、应用程序、日志文件和外部设备,并存储此信息或使其在网络上可用。这些统计数据可用于监控系统、发现性能瓶颈(即性能分析)和预测未来的系统负载(即容量规划)。或者,如果您只是想要您的私人服务器的漂亮图表并且受够了一些本土解决方案,那么您也来对地方了!
什么是 collectd
collectd 是一个守护(daemon)进程,用来定期收集系统和应用程序的性能指标,同时提供了以不同的方式来存储这些指标值的机制。
collectd 从各种来源收集指标,例如 操作系统,应用程序,日志文件和外部设备,并存储此信息或通过网络使其可用。 这些统计数据可用于监控系统、查找性能瓶颈(即性能分析)并预测未来的系统负载(即容量规划)等。
- 它完全是由C语言编写,故性能很高,可移植性好,它允许运行在系统没有脚本语言支持或者cron daemon的系统上,比如嵌入式系统。同时,它包含优化以及处理成百上千种数据集的新特性。
- collectd包含有超过100多种插件。同时,collectd提供强大的网络特性,并且它能以多种方式进行扩充。
collectd 官方网站:https://collectd.org/
collectd wiki 地址:https://collectd.org/wiki/index.php/Main_Page
如何安装 collectd
wget https://storage.googleapis.com/collectd-tarballs/collectd-5.12.0.tar.bz2 tar xf collectd-5.12.0.tar.bz2 cd collectd-5.12.0 ./configure make all install
也可以在后面加入一些其他可选的选项如:
--prefix=/usr --sysconfdir=/etc -localstatedir=/var --libdir=/usr/lib --mandir=/usr/share/man --enable-all-plugins make all install
或者直接执行命令进行安装:
dnf install collectd
- 配置文件目录:/etc/collectd/collectd.conf
- 启动文件目录:/etc/init.d/collectd
- 日志文件目录:/var/log/syslog
- 数据存储目录:/var/lib/collectd/rrd/
如何配置 collectd
vim /opt/collectd/etc/collectd.conf
需要监控系统什么项就开启相应的插件,一般有cpu,memory,processes,load,interface,disk,swap等。
一般只需修改 network 插件这一项:
网络插件可以将数据发送到 collectd 的远程实例中(例如:数据库,csv文件或缓存等介质中),或者接收从远程服务端发来的数据。
LoadPlugin network #去掉#就表示载入该插件# # client setup: Server "10.24.106.1" "25826" #该地址和端口是接收数据的服务器的地址和端口,例如:安装数据库(influxdb等)的服务器的地址和端口 # #若需传输加密数据,就配置这一小块部分 # SecurityLevel Encrypt # Username "user" # Password "secret" # Interface "eth0" # ResolveInterval 14400 # # TimeToLive 128 # # # server setup: # Listen "ff18::efc0:4a42" "25826" #如配置这一部分,表示接收从其他collectd实例中发来的数据 ## SecurityLevel Sign # AuthFile "/etc/collectd/passwd" # Interface "eth0" # # MaxPacketSize 1452 # # # proxy setup (client and server as above): # Forward true # # # statistics about the network plugin itself # ReportStats false # # # "garbage collection" # CacheFlush 1800
如何启动collectd
执行命令 sudo /etc/init.d/collectd start
或者 systemctl start collectd
并设置开机启动 systemctl enable collectd
collectd 如何查看数据
若开启了 rrdtool 插件就可在 /var/lib/collectd/rrd/ 目录下看到相应的统计数据。
通过下面命令可以查看具体数据:
rrdtool fetch *.rrd AVERAGE
*.rrd表示任何以.rrd结尾的文件,rrdtool命令更详细的用法可以自行百度。
可以看到第一列为timestamp(时间戳),可以通过命令date -d @timestamp把timestamp(以秒为单位)转换为和date命令显示的相同的的时间格式,命令date +%s用时间戳的形式表示时间。
collectd 相关插件介绍
Plugin: CPU
- jiffies: 是一个单位,jiffies是内核中的一个全局变量,用来记录自系统启动一来产生的节拍数,在linux中,一个节拍大致可理解为操作系统进程调度的最小时间单位,不同linux内核可能值有不同,通常在1ms到10ms之间
- user: 从系统启动开始累计到当前时刻,处于用户态的运行时间,不包含 nice值为负的进程。
- nice: 从系统启动开始累计到当前时刻,nice值为负的进程所占用的CPU时间。
- idle: 从系统启动开始累计到当前时刻,除I/O等待时间以外的其它等待时间。
- wait-io: 从系统启动开始累计到当前时刻,I/O操作等待时间。
- system: 从系统启动开始累计到当前时刻,处于内核态的运行时间。
- softIRQ: 从系统启动开始累计到当前时刻,软中断时间。
- IRQ:从系统启动开始累计到当前时刻,硬中断时间。
- steal:运行在虚拟环境中其他操作系统所花费的时间。
Plugin: interface
Interface插件收集关于流量(每秒八位字节),每秒的数据包和接口错误(一秒钟内)的信息。
- rxpck/s:每秒钟接收的数据包
- txpck/s:每秒钟发送的数据包
- rxbyt/s:每秒钟接收的字节数
- txbyt/s:每秒钟发送的字节数
Plugin: processes
Plugin: memory
收集系统的物理内存利用率
Plugin: swap
收集swap空间的使用情况
在Linux中,系统相关数据可以通过命令 cd /proc/
在该目录下查看。