Centos7.9版本安装collectd并开启写入rrd文件功能

简介: Centos7.9版本安装collectd并开启写入rrd文件功能

image.png

@[toc]

一、背景介绍

Collectd官网:https://collectd.org/

image.png

Collectd是一款开源的系统统计守护进程,用于收集、处理和存储各种系统性能指标。它可以在多个操作系统上运行,并且支持许多不同类型的插件来收集各种数据。

Collectd的主要功能包括:

数据收集:Collectd可以定期地从系统和应用程序中收集各种性能指标,如CPU使用率、内存使用情况、磁盘IO、网络流量等。

插件系统:Collectd提供了一个可插拔的架构,可以通过各种插件来收集不同类型的数据。这些插件可以用于监控硬件、操作系统和各种应用程序。

数据处理和存储:Collectd可以对收集到的数据进行处理和转换,如数据聚合、过滤和格式化。它还可以将数据存储到各种后端,如RRD文件、数据库或远程服务器。

监控和告警:Collectd可以通过与其他监控工具(如Grafana、Prometheus等)的集成来实现实时监控和告警功能。它可以根据预定义的规则触发警报,以便及时采取措施解决问题。

可视化:Collectd可以与各种可视化工具集成,以创建漂亮的图表和仪表板,帮助用户更直观地了解系统性能和趋势。

总的来说,Collectd是一个强大的系统监控工具,可以提供实时、准确的系统性能指标,并帮助管理员及时发现和解决潜在问题。它在大型分布式环境和云计算环境中广泛应用,并被认为是一种可靠的解决方案。

二、为什么用这个

需求:我们项目向监控操作系统的CPU、内存、网络、磁盘等到信息。
我之前用过Sigar,一个jar包,引入就可以直接用,之所以不用它原因是,它于2010年停止维护了,所以显得有点老,就没使用它,于是做了Collectd调研,想用它,但是前提是先安装环境。
image.png

三、安装Collectd

3.1 尝试docker安装

  1. 先搜索collectd镜像,结果如图。
docker search collectd
AI 代码解读

image.png

  1. 从dockerHub上看collectd/ci镜像应该是咱们需要的,下载它。
docker pull collectd/ci
AI 代码解读
  1. 查看镜像是否已经下载好,执行命令,结果如图。
docker images
AI 代码解读

image.png

  1. 执行命令运行它
docker run  --name my-collectd -v /var/collectd/collectd.conf:/etc/collectd/collectd.conf -v /var/collectd/rrd:/var/lib/collectd/rrd -d collectd/ci:fedora38_x86_64
AI 代码解读

image.png

5.结果是:显示启动就停止了,我尝试了好几次发现都不行,不知道为啥,所以只能放弃该方式安装部署了。

image.png

3.2尝试执行linux命令一步一步安装

我是参照的这个博主的博客进行尝试安装的 → :CentOS7下collectd简单安装使用

安装collectd

  1. 安装collectd和epel:
yum -y install epel*
yum -y install collectd
AI 代码解读
  1. 开启服务并设置开机启动
systemctl start collectd
systemctl enable collectd
AI 代码解读
  1. 设置配置文件,默认的配置文件/etc/collectd.conf,收集的数据通过不同的收集插件定义,默认collectd收集的数据有。
LoadPlugin cpu
LoadPlugin interface
LoadPlugin load
LoadPlugin memory
AI 代码解读

无注释表示启用了该插件。

表示该插件开发完毕,可以使用(需要下载相应的插件包,然后取消注释)

表示该插件还未完成,无法使用。

默认收集间隔是 10s一次
每个插件都有单独的配置,不设置就使用插件的默认配置。

  1. 设置将日志写入单独的日志文件,编辑配置文件。
    vim /etc/collectd.conf
    
    AI 代码解读
#LoadPlugin syslog
LoadPlugin logfile

<Plugin logfile>
        LogLevel info
        File "/var/log/collectd.log"
        Timestamp true
        PrintSeverity false
</Plugin>
AI 代码解读
  1. 重启collectd
systemctl restart collectd
AI 代码解读
  1. 查看日志
tail -f /var/log/collectd.log
AI 代码解读
[root@client2 ~]# tail -f /var/log/collectd.log 
Jan  4 14:24:24 client2 collectd[10794]: Available write targets: [none]
Jan  4 14:24:24 client2 collectd[10794]: Available write targets: [none]
Jan  4 14:24:24 client2 collectd[10794]: Available write targets: [none]
Jan  4 14:24:24 client2 collectd[10794]: Available write targets: [none]
Jan  4 14:24:24 client2 collectd[10794]: Available write targets: [none]
Jan  4 14:24:24 client2 collectd[10794]: Available write targets: [none]
Jan  4 14:24:24 client2 collectd[10794]: Available write targets: [none]
Jan  4 14:24:24 client2 collectd[10794]: Available write targets: [none]
Jan  4 14:24:24 client2 collectd[10794]: Available write targets: [none]
Jan  4 14:24:24 client2 collectd[10794]: Available write targets: [none]
Jan  4 14:24:34 client2 collectd[10794]: Filter subsystem: Built-in target `write': Dispatching value to all write plugins failed with status 2 (ENOENT). Most likely this means you didn't load any write plugins.
Jan  4 14:24:34 client2 collectd[10794]: Available write targets: [none]
Jan  4 14:24:34 client2 collectd[10794]: Available write targets: [none]
Jan  4 14:24:34 client2 collectd[10794]: Available write targets: [none]
Jan  4 14:24:34 client2 collectd[10794]: Available write targets: [none]
Jan  4 14:24:34 client2 collectd[10794]: Available write targets: [none]
Jan  4 14:24:34 client2 collectd[10794]: Available write targets: [none]
Jan  4 14:24:34 client2 collectd[10794]: Available write targets: [none]
AI 代码解读

注意:collectd必须要设置一个write pulgin 写插件,可以将收集的数据写入日志、rdd文件、server端、influxdb数据库。总之必须设置一个,不然collectd无用。

设置将数据写入日志文件

  1. 一般是不会写入日志文件当作write pulgin的。只是用来测试数据收集是否成功。编辑配置文件。
vim /etc/collectd.conf
AI 代码解读
LoadPlugin write_log
AI 代码解读
  1. 重启collectd
systemctl restart collectd
AI 代码解读
  1. 查看日志
[root@server ~]# tail -f /var/log/collectd.log 

[2021-01-04 14:39:37] write_log values:
server.memory.memory-free 248778752 1609742377

[2021-01-04 14:39:37] write_log values:
server.memory.memory-slab_unrecl 41025536 1609742377

[2021-01-04 14:39:37] write_log values:
server.memory.memory-slab_recl 39510016 1609742377

[2021-01-04 14:39:47] write_log values:
server.cpu-0.cpu-user 2452 1609742387

[2021-01-04 14:39:47] write_log values:
server.cpu-0.cpu-system 2868 1609742387

[2021-01-04 14:39:47] write_log values:
server.cpu-0.cpu-wait 2547 1609742387

[2021-01-04 14:39:47] write_log values:
server.cpu-0.cpu-nice 153 1609742387

[2021-01-04 14:39:47] write_log values:
server.cpu-0.cpu-interrupt 0 1609742387

[2021-01-04 14:39:47] write_log values:
server.cpu-0.cpu-softirq 77 1609742387

[2021-01-04 14:39:47] write_log values:
server.cpu-0.cpu-steal 0 1609742387

[2021-01-04 14:39:47] write_log values:
server.cpu-0.cpu-idle 241882 1609742387

[2021-01-04 14:39:47] write_log values:
server.interface-lo.if_packets.rx 0 1609742387
server.interface-lo.if_packets.tx 0 1609742387
AI 代码解读

可以看到数据成功写入日志文件了。

注意:到这里之前基本很多人都能按照博客执行成功,而后面开始安装rrd插件开始就会出现各种问题了。

设置将数据写入rrd文件。

collectd将数据以rrd文件形式保存,需要相应的rrdtool包。除了基本的几个,其余的collectd插件基本都需要单独安装插件包才能使用。

先介绍下rrd是干啥用的,如图,所以有必要开启

image.png

  1. 我试过执行命令:yum -y install collectd-rrdtool,这一步我就不成功,报错如图
[root@repository var]# yum -y install collectd-rrdtool.x86_64
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * epel: mirrors.tuna.tsinghua.edu.cn
正在解决依赖关系
--> 正在检查事务
---> 软件包 collectd-rrdtool.x86_64.0.5.8.1-1.el7 将被 安装
--> 正在处理依赖关系 librrd_th.so.4()(64bit),它被软件包 collectd-rrdtool-5.8.1-1.el7.x86_64 需要
--> 解决依赖关系完成
错误:软件包:collectd-rrdtool-5.8.1-1.el7.x86_64 (epel)
          需要:librrd_th.so.4()(64bit)
 您可以尝试添加 --skip-broken 选项来解决该问题
** 发现 21 个已存在的 RPM 数据库问题, 'yum check' 输出如下:
7:device-mapper-1.02.170-6.el7.x86_64 是 7:device-mapper-1.02.158-2.el7.x86_64 的副本
7:device-mapper-event-1.02.170-6.el7.x86_64 是 7:device-mapper-event-1.02.158-2.el7.x86_64 的副本
7:device-mapper-event-libs-1.02.170-6.el7.x86_64 是 7:device-mapper-event-libs-1.02.158-2.el7.x86_64 的副本
7:device-mapper-libs-1.02.170-6.el7.x86_64 是 7:device-mapper-libs-1.02.158-2.el7.x86_64 的副本
device-mapper-persistent-data-0.8.5-3.el7.x86_64 是 device-mapper-persistent-data-0.8.5-1.el7.x86_64 的副本
ipvsadm-1.27-8.el7.x86_64 是 ipvsadm-1.27-7.el7.x86_64 的副本
kubeadm-1.15.3-0.x86_64 有缺少的需求 kubectl >= ('0', '1.13.0', None)
libseccomp-2.4.3-alt1.x86_64 是 libseccomp-2.3.1-4.el7.x86_64 的副本
libselinux-2.5-15.el7.x86_64 是 libselinux-2.5-14.1.el7.x86_64 的副本
libselinux-python-2.5-15.el7.x86_64 是 libselinux-python-2.5-14.1.el7.x86_64 的副本
libselinux-utils-2.5-15.el7.x86_64 是 libselinux-utils-2.5-14.1.el7.x86_64 的副本
7:lvm2-2.02.187-6.el7.x86_64 是 7:lvm2-2.02.185-2.el7.x86_64 的副本
7:lvm2-libs-2.02.187-6.el7.x86_64 是 7:lvm2-libs-2.02.185-2.el7.x86_64 的副本
ntp-4.2.6p5-29.el7.centos.2.x86_64 是 ntp-4.2.6p5-29.el7.centos.x86_64 的副本
ntpdate-4.2.6p5-29.el7.centos.2.x86_64 是 ntpdate-4.2.6p5-29.el7.centos.x86_64 的副本
policycoreutils-2.5-34.el7.x86_64 是 policycoreutils-2.5-33.el7.x86_64 的副本
policycoreutils-python-2.5-34.el7.x86_64 是 policycoreutils-python-2.5-33.el7.x86_64 的副本
selinux-policy-3.13.1-268.el7.noarch 是 selinux-policy-3.13.1-252.el7.1.noarch 的副本
selinux-policy-targeted-3.13.1-268.el7.noarch 是 selinux-policy-targeted-3.13.1-252.el7.1.noarch 的副本
sysstat-10.1.5-19.el7.x86_64 是 sysstat-10.1.5-18.el7.x86_64 的副本
yum-utils-1.1.31-54.el7_8.noarch 是 yum-utils-1.1.31-52.el7.noarch 的副本
AI 代码解读

报错显示:错误:软件包:collectd-rrdtool-5.8.1-1.el7.x86_64 (epel)需要:librrd_th.so.4()(64bit),然后查询这个“librrd_th.so.4()(64bit)”是啥,如下图:
image.png

  1. 于是我尝试执行:sudo yum install rrdtool 和 sudo yum install rrdtool-devel,报错如图
[root@repository var]# yum install rrdtool-devel
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * epel: mirrors.tuna.tsinghua.edu.cn
没有可用软件包 rrdtool-devel。
错误:无须任何处理
AI 代码解读

错误显示:没有rrdtool包或者rrdtool-devel包,说明自己软库中压根没有叫这个名字的包

  1. 因此不能采用yum方式安装rrdtool,只能考虑其他方式,比如自己手动下载包安装方式,如下
wget http://mirror.centos.org/centos/7/os/x86_64/Packages/rrdtool-1.4.8-9.el7.x86_64.rpm
AI 代码解读
  1. 安装rrdtool包
sudo yum install rrdtool-1.4.8-9.el7.x86_64.rpm
AI 代码解读
  1. 再执行安装collectd-rrdtool
yum -y install collectd-rrdtool
AI 代码解读
  1. 验证安装是否成功,如图就代表安装成功了
rrdtool --version
AI 代码解读

image.png

  1. 修改配置文件,插件rrdtool设置使用默认的即可
vim /etc/collectd.conf
AI 代码解读
LoadPlugin rrdtool

#<Plugin rrdtool>
#       DataDir "/var/lib/collectd/rrd"
#       CreateFilesAsync false
#       CacheTimeout 120
#       CacheFlush   900
#       WritesPerSecond 50
#</Plugin>
AI 代码解读
  1. 重启服务
systemctl restart collectd
AI 代码解读
  1. rrd数据保存位置/var/lib/collectd/rrd,查看是否有写入rrd文件,发现确实写入了,只不过文件是二进制的编译乱码而已。

image.png

到这里就说明Collectd服务已经开启了,且能写入rrd文件了,这个rrd文件就是供其他软件查询使用的,比如grafana、influxdb、Prometheus等等使用。

补充:本来想尝试安装collectd-web插件,也就是可视化的collectd的,结果碰到各种安装问题,比如缺少依赖模块等等,导致最终安装不成功,所以就没写。官网的这个图其实就是可视化插件展示的效果。
image.png

image.png

重要信息

image.png
image.png
image.png

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
打赏
0
12
13
1
230
分享
相关文章
【PUSDN】centos查看日志文件内容,包含某个关键字的前后5行日志内容,centos查看日志的几种方法
【PUSDN】centos查看日志文件内容,包含某个关键字的前后5行日志内容,centos查看日志的几种方法
216 0
百度搜索:蓝易云【Centos 7 通过 targz 文件安装 Elastic Search 服务教程!】
请注意,本教程提供了基本的安装步骤,并且可以根据实际需求进行定制和配置。如果需要更深入的了解和配置,请参考Elasticsearch官方文档或其他权威资源。
341 0
Centos下nfs+rpcbind实现服务器之间的文件共享
Centos下nfs+rpcbind实现服务器之间的文件共享
336 0
解决 centos下执行sh文件报错“/bin/bash^M: 坏的解释器:没有那个文件或目录” 问题
解决 centos下执行sh文件报错“/bin/bash^M: 坏的解释器:没有那个文件或目录” 问题
1259 0
系统崩溃不用慌!VMware这个逆天功能竟能让CentOS一键回档?后悔药真实存在!
备份的重要性在于它能在系统出现异常或错误时,帮助我们快速恢复到正常状态,避免重新安装系统和配置环境。VMware 提供了两种备份方式:快照和克隆。 **快照**是保存虚拟机某一时刻的完整状态(包括内存、CPU、磁盘数据),便于快速回滚,适合临时保存状态。操作简单,可在系统运行时创建。 **克隆**则是复制整个虚拟机系统,侧重长期备份,需在系统关闭时进行。分为完整克隆和链接克隆,前者独立于源系统,占用更多空间,但更安全可靠。
55 17
系统崩溃不用慌!VMware这个逆天功能竟能让CentOS一键回档?后悔药真实存在!
VMware隐藏黑科技!CentOS安装这个神器效率翻倍 文件互传竟比U盘还快?
### 安装VMtools的作用及步骤 安装VMtools可以实现Windows与CentOS之间的字符串和命令粘贴、文件夹共享等操作。在CentOS中,通过VMware菜单栏选择“VMware Tools”,将下载的压缩包拷贝到`/opt`目录并解压。接着进入终端,使用`./vmware-install.pl`命令完成安装。安装后重启系统,即可实现Windows与CentOS之间的字符和文件共享。具体步骤包括解压文件、启动命令行终端、安装VMtools以及配置文件共享。
73 16
VMware隐藏黑科技!CentOS安装这个神器效率翻倍 文件互传竟比U盘还快?
2022年超详细如何使用Xftp连接CentOS 7来进行文件的传输【详细过程、图解】
这篇文章提供了使用Xftp工具连接到CentOS 7虚拟机进行文件传输的详细步骤和图解。步骤包括打开Xftp软件、创建新连接、查看并填写虚拟机的IP地址、输入虚拟机的连接账号密码,以及连接成功后进行文件传输。文章最后以"现场手撸、学无止境"作为结束语,鼓励读者不断学习和实践。
Centos定期自动清理临时文件
简单Shell脚本清理临时文件 使用`cron`设置定时任务,如每天8点运行: 记得调整路径和脚本名以匹配你的环境。
188 5
|
11月前
|
Centos7.4升级7.9失败,救援:/boot目录下文件丢失error: file ‘/initramfs-3.10.0-957.el7.x86_64.img‘ not found
以上步骤应该可以帮助你解决问题。如果问题仍然存在,可能需要更深入的排查。
269 1
CentOS如何使用Docker部署Plik服务并实现公网访问本地设备上传下载文件
CentOS如何使用Docker部署Plik服务并实现公网访问本地设备上传下载文件
132 4

物联网

+关注