大家好,我是小斐呀。
关于网络监控领域前面文章主要是基于
SNMP Exporter + Prometheus + Grafana的架构中介绍
如何使用和部署,往期文章可查看如下几篇介绍:
Prometheus开箱即用的监控网络设备~
华三:网工们好给力,无线监控搞的比我好~
华为无线网络这样监控,老板的都竖起大拇指!
接下来我们基于前面的文章做一些扩展,替换前面的架构组件,使其更加友好和方便,并且性能和扩展性进一步提高;在此我们把采集器从
SNMP EXporter
替换为
Categraf
,把
Prometheus
替换为
VictoriaMetrics
时序数据库,
VictoriaMetrics
时序数据库提供了 ,数据可视化和告警继续使用
Grafana
完成,架构如下图所示:
为何替换
Categraf
采集器是快猫星云开源的一款All-in-One采集器;支持指标、日志采集;支持 Tracing 数据的收集;支持物理机、虚拟机、交换机、容器、K8s、多种中间件/数据库的数据采集,支持混合云架构、云原生架构、多云架构。
由于支持
remote_write
写入协议,支持将数据写入
Promethues
、
VictoriaMetrics
、
InfluxDB
等。
说了这么多,上面其实都是
Categraf
的特点,那么
Categraf
基于
SNMP
协议实现的插件和
SNMP Exporter
对比有那些异同呢?
SNMP Exporter
提供了采集配置文件生成器
generate
并可以通过配置文件生成器生成开箱即用的采集配置文件,文件以
yaml
格式文件呈现,当生成自定义的采集配置文件后就可以摆脱
mib
文件的局限,因为配置文件生成器已经通过读取
mib
文件把自定义的指标相关对象的格式数据写入到
yaml
格式采集配置文件中,故即可实现开箱即用。
Categraf
的
SNMP
插件在运行和采集的过程中是需要和采集配置文件、
mib
文件、以及
mib
解析处理工具结合才能得到指标数据。
那分析下来好像
SNMP Exporter
更加方便点,其实并不一定,主要有以下两点区别:
-
Categraf
的
SNMP
插件的配置文件编写更方便易懂
-
而
SNMP Exporter
的多表或不同索引表合并和标签插入做不到,只能在
Prometheus
中做合并查询和标签重置。
综合上面两点我强烈推荐使用
Categraf
因为写配置真的很舒服很丝滑,节省了很多调试时间。
那又为何替换
Prometheus
,因为
Categraf
可以通过
remote write
协议把采集的数据推送到
VictoriaMetrics
时序数据库,
VictoriaMetrics
提供了
Prometheus remote_write API
。
并且
VictoriaMetrics
在性能和扩展性上做了很多优化,在样本数一致的情况下
VictoriaMetrics
比
Prometheus
使用的磁盘空间少
7
倍。
故综上所述,把架构组件全部替换掉。
安装部署
在目标机器部署
Categraf
,只需要
categraf
二进制文件、以及
conf
目录,
conf
下有一个主配置文件:
config.toml
,定义机器名、全局采集频率、全局附加标签、远程写后端地址等;另外就是各种采集插件的配置目录,以
input.
为前缀,如果某个采集器
xxx
不想启用,把
input.xxx
改个其他前缀,比如
bak.input.xxx
,
Categraf
就会忽略这个采集器。
# 进入 /opt 目录下
cd /opt
sudo mkdir -pv categraf
# 下载
curl -L -o categraf-v0.3.57-linux-amd64.tar.gz https://github.com/flashcatcloud/categraf/releases/download/v0.3.57/categraf-v0.3.57-linux-amd64.tar.gz
sudo tar -xzvf categraf-v0.3.57-linux-amd64.tar.gz -C /opt/categraf --strip-components=1
进入目录
/opt/categraf/conf
把
categraf.service
的文件移动到对应系统的目录中,并重新加载启动。
# Ubuntu 22.04.3 LTS
sudo mv /opt/categraf/conf/categraf.service /etc/systemd/system/
[Unit]
Description="Categraf"
After=network.target
[Service]
Type=simple
ExecStart=/opt/categraf/categraf
WorkingDirectory=/opt/categraf
Restart=on-failure
SuccessExitStatus=0
LimitNOFILE=65536
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=categraf
[Install]
WantedBy=multi-user.target
# 配置生效
sudo systemctl daemon-reload
# 开机自启
sudo systemctl enable categraf.service
# 启动
sudo systemctl start categraf.service
# 状态
sudo systemctl status categraf.service
# 停止
sudo systemctl stop categraf.service
# 重启
sudo systemctl restart categraf.service
启动后,就代表
categraf
部署安装完成了,接下来就是修改配置,然后测试数据采集。
单实例
VictoriaMetrics
部署,集群版文章在此不涉及。
# docker部署
docker pull victoriametrics/victoria-metrics:latest
docker run -it --rm -v `pwd`/victoria-metrics-data:/victoria-metrics-data -p 8428:8428 victoriametrics/victoria-metrics:latest
# 二进制部署
# 进入 /opt 目录下
cd /opt
sudo mkdir -pv victoria-metrics
# 下载
curl -L -o victoria-metrics-linux-amd64-v1.99.0.tar.gz https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v1.99.0/victoria-metrics-linux-amd64-v1.99.0.tar.gz
sudo tar -xzvf victoria-metrics-linux-amd64-v1.99.0.tar.gz -C /opt/victoria-metrics
二进制部署完成后,可通过
systemd
管理服务:
# Ubuntu 22.04.3 LTS
sudo vim /etc/systemd/system/victoria-metrics.service
[Unit]
Description=victoria-metrics
[Service]
Type=simple
ExecStart=/opt/victoria-metrics/victoria-metrics-prod -retentionPeriod=30d -storageDataPath=data -selfScrapeInterval=10s
WorkingDirectory=/opt/victoria-metrics
Restart=always
[Install]
WantedBy=mutil-user.target
sudo systemctl daemon-reload
sudo systemctl enable victoria-metrics
sudo systemctl start victoria-metrics
VictoriaMetrics
启动参数说明:
# 设置保留期为30天
-retentionPeriod=30d
# 设置数据保存路径
-storageDataPath=/opt/victoria-metrics/data
# 监听地址
-httpListenAddr=0.0.0.0:8428
# 监控自身数据抓取间隔
-selfScrapeInterval=10s
VM UI界面:
http://服务器IP:8428/vmui
Categraf
的全局配置文件:
config.toml
需要配置
VictoriaMetrics
远程后端地址,配置如下:
# 编写 vim /opt/categraf/conf/config.toml
[[writers]]
url = "http://:8428/api/v1/write"
# 比如部署VictoriaMetrics服务器IP地址为:192.168.100.10
url = "http://192.168.100.10:8428/api/v1/write"
SNMP插件使用
配置Categraf的SNMP v2c版本配置,这里以华三交换机为案例,介绍如何采集和监控网络设备:
华三
mib
文件下载路径:
https://www.h3c.com/cn/d_202310/1943062_473262_0.htm
上传并解压华三
mib
文件到指定路径
# 新建mib文件存放目录
sudo mkdir -pv /opt/categraf/mibs
# 上传 Comware_MIB-20240312.zip 到目录/opt/categraf/mibs并解压
# 解压后的目录 分别重新命名为 public目录和private目录
private
是华三私有
mib
文件目录,
public
是华三提供的公有
mib
文件目录,私有
mib
文件依赖华三公有
mib
文件。
在目录
input.snmp
中新建采集配置文件,文件命名为:
snmp_h3c_switch.toml
配置文件简单示例:
interval = "10s"
[[instances]]
agents = [
"udp://192.168.100.1",
"udp://192.168.100.2",
...
]
...
# SNMP Agent的版本
version = 2
# SNMP团体名
community = "public"
# 解析处理mib文件的工具
path = ["/opt/categraf/mibs"]
translator = "gosmi"
# 系统启动时间
[[instances.field]]
oid = "1.3.6.1.2.1.1.3.0"
name = "uptime"
# 其他指标
...
当把完整的配置文件写好后,可以开始执行采集配置测试,在执行采集配置测试之前需要说明下配置文件中关于读取
mib
文件工具和
mib
文件路径的设置模式:
Categraf
中的
SNMP
插件使用
gosmi
或
netsnmp
用于解析和处理 SNMP MIB 文件。