我的版本是0.8.7d,这个问题已经好久没有找到办法解决,最近将cacti从0.8.7d升级为0.8.7e,但还是报插入重复键错误
最后仔细找了下原因,终于解决了:
如图:
由于之前安装的是cacti 0.8.7d for windows版本,不知道是版本本身的bug还是配置的问题,一直出现已添加的host主机不能删除的情况,后来索性就手工到mysql内删除,但由于对cacti配置库各表关系不清楚,导致在某些表留下了垃圾数据,Duplicate entry应该和这些垃圾数据有关。
这些垃圾数据,在cacti数据库的host表已经不存在,但其Data Sources数据依然存在,查找办法:
1.以"Message:'Duplicate entry '216-cpu-2011-02-16 18:00:03' for key 1'"为例:
在console-->System Utilities-->Poller Cache-->Search里搜cpu_216.
2.根据上面的Search结果,可以看到Data Source name为192.168.0.216,然后在Data Sources里Search这个ip.
选中和192.168.0.216相关的结果,然后选中右下角的delete,将其删除(删除之前,可以去Devices里查一下是否存在该host,一般是不存在)。
这样就可以把这些多余的垃圾data sources删除了。
其实还有一个办法,就是去mysql的cacti数据库,SELECT * FROM poller_item p;
在结果里查找有行为none的数据,然后在rrd_pach列里,可以找到这些垃圾data sources,然后通过cacti WEB界面将其删除。