Finer04's Blog
首页
乱写一通
脑洞破文
随便谈谈
当前播放.page
Cacti 部分故障的临时修复
Finer04
April 26, 2020
2644 字
文章目录
我们业务的 Cacti 已经运作了几年,添加的图形越来越多,意味着获取的数据越多服务器的压力就越大,如果某一个进程遇到了瓶颈,所有图形都出不了图,就要被领导吊死,所以我们运维人员常常都要多巡检,是否出现问题。 在这么大的业务量我是不敢去升级系统版本了,而且现在的 Cacti 新版听说已经跟旧版 Cacti 不是同一批人维护的,万一升级了导致数据全没了怎么办,那就只能维持现状。在这一年中,遇到的错误都可以修复,就简单说说我见过的故障以及当初的应急处理方法。 当然,重启可以解决 95% 的问题。我下面写的是我见过的故障,如果未来遇到没有见过的故障,到时候也会在文章里补充。 ## 遇到 SQL Error 导致出不了图 当时值班同事遇到出不了图的情况,查看系统告警有: ``` 03/31/2020 01:16:25 PM - CMDPHP: Poller[0] ERROR: SQL Cell Failed!, Error:'2006', SQL:"SELECT GET_LOCK('boost.single_ds.814', 1)" 03/31/2020 01:16:25 PM - CMDPHP: Poller[0] ERROR: SQL Cell Failed!, Error:'2006', SQL:"SELECT GET_LOCK('boost.single_ds.814', 1)" 03/31/2020 01:16:25 PM - CMDPHP: Poller[0] ERROR: SQL Cell Failed!, Error:'2006', SQL:"SELECT GET_LOCK('boost.single_ds.814', 1)" 03/31/2020 01:16:25 PM - CMDPHP: Poller[0] ERROR: SQL Cell Failed!, Error:'2006', SQL:"SELECT GET_LOCK('boost.single_ds.814', 1)" 03/31/2020 01:16:25 PM - CMDPHP: Poller[0] ERROR: SQL Cell Failed!, Error:'2006', SQL:"SELECT GET_LOCK('boost.single_ds.814', 1)" 03/31/2020 01:16:25 PM - CMDPHP: Poller[0] ERROR: SQL Cell Failed!, Error:'2006', SQL:"SELECT GET_LOCK('boost.single_ds.814', 1)" 03/31/2020 01:16:24 PM - CMDPHP: Poller[0] ERROR: SQL Cell Failed!, Error:'2006', SQL:"SELECT GET_LOCK('boost.single_ds.814', 1)" ``` 当时预判是数据库崩了,只能修复数据库。 ### 临时措施 1. 万能办法:重启试试 2. 通用方法:[控制台] - [系统工具] - [重建采集器缓存] (要等20分钟) 3. 老实人办法: - 查看日志: [控制台] - [系统工具] - [查看 CactiEZ 日志] - 如果看到很多红色的错误,而且都是 SQL Error 那这种的话。估计数据库崩了,怎么修复呢? - 去 Cacti 的 SSH后台,执行以下命令 ``` cd /var/www/html/cli/ php repair_database.php reboot # 如果故障未恢复就重启服务器 ``` ## 单个设备不出图 当时我们看有些交换机不出图,其他交换机图形正常,查看主机的当时延时已经超过了 1000ms,查看 Cacti 日志是这样的. ``` 04/26/2020 10:55:42 AM - SPINE: Poller[0] Host[1480] TH[1] DS[171614] WARNING: SNMP timeout detected [1000 ms], ignoring host 'X.X.X.X' 04/26/2020 10:55:42 AM - SPINE: Poller[0] Host[1480] TH[1] DS[171614] WARNING: SNMP timeout detected [1000 ms], ignoring host 'X.X.X.X' 04/26/2020 10:55:42 AM - SPINE: Poller[0] Host[1480] TH[1] DS[171603] WARNING: SNMP timeout detected [1000 ms], ignoring host X.X.X.X' 04/26/2020 10:55:42 AM - SPINE: Poller[0] Host[1480] TH[1] DS[171603] WARNING: SNMP timeout detected [1000 ms], ignoring host 'X.X.X.X' ``` 上面的告警是该 `x.x.x.x` 的设备,服务器获取设备的 SNMP 数据超时了 1 秒,会忽略掉该事件的数据。延时超过 1000ms 是什么问题呢? 1. 交换机 SNMP 服务处理能力瓶颈(可能是CPU) 2. 网络传输丢包问题 3. 设备问题或服务问题 ### 临时措施 如果无法从设备方面排障的话,但服务是正常的话,先缓解出不了图的问题,打开 [控制台] - [主机] - 找到这个主机详情,然后更改 [SNMP 选项] 的内容。 - SNMP 超时:10000 或 以上 - 获取请求的最大 OID:10 ~ 20 之间 (如果数值越大对服务器压力越高,得不偿失) 当然,这样做也有弊端,数据会更加不精准,毕竟每 1 分钟的取值因为延时原因,导致取值反差太大,系统再用平均值计算就有流量突升与突降的现象,但实际上是没问题的。
cacti
评论已关闭
▲ Top
评论已关闭