我无法在 OpsCenter 中生成集群报告。服务器和客户端运行在 CentOS 5.9,64 位上。软件版本:
- opscenter-3.2.2-1
- opscenter-代理-3.2.2-1
以下是网络浏览器中报告的错误:
生成集群报告时出错:u'/dev/mapper/Staging3SSTables_vol1'
这是此集群中第三个 Cassandra 节点上的文件系统。该下划线应为连字符:
$ ls -la /dev/mapper/Staging3SSTables_vol1 ls:/dev/mapper/Staging3SSTables_vol1:没有这样的文件或目录 $ ls -la /dev/mapper/Staging3SSTables-vol1 brw-rw---- 1 根磁盘 253,0 10月 7日 13:56 /dev/mapper/Staging3SSTables-vol1 $ df -h /dev/mapper/Staging3SSTables-vol1 文件系统大小已使用可用使用率%安装于 /dev/mapper/Staging3SSTables-vol1 551G 199M 522G 1%/var/lib/cassandra/数据
对于集群中的其他节点,我没有收到此错误。
这可能是什么原因造成的?
以下是错误的完整输出opscenterd.log:
2013-10-10 08:48:37-0700 [] 错误:生成集群报告时出错。回溯(最近一次调用): 文件“/usr/lib/python2.6/site-packages/opscenterd/StatsReporter.py”,第 132 行,位于 generateReport 中 文件“/usr/share/opscenter/lib/py-redhat/2.6/shared/amd64/twisted/internet/defer.py”,第 1018 行,位于 _inlineCallbacks 结果 = 结果.抛出异常到生成器 (g) 文件“/usr/share/opscenter/lib/py-redhat/2.6/shared/amd64/twisted/python/failure.py”,第 349 行,位于 throwExceptionIntoGenerator 中 返回 g.throw(self.type, self.value, self.tb) 文件“/usr/lib/python2.6/site-packages/opscenterd/StatsReporter.py”,第 148 行,位于 createClusterReport 中 文件“/usr/share/opscenter/lib/py-redhat/2.6/shared/amd64/twisted/internet/defer.py”,第 1018 行,位于 _inlineCallbacks 结果 = 结果.抛出异常到生成器 (g) 文件“/usr/share/opscenter/lib/py-redhat/2.6/shared/amd64/twisted/python/failure.py”,第 349 行,位于 throwExceptionIntoGenerator 中 返回 g.throw(self.type, self.value, self.tb) 文件“/usr/lib/python2.6/site-packages/opscenterd/StatsReporter.py”,第 109 行,格式为 format_node 文件“/usr/share/opscenter/lib/py-redhat/2.6/shared/amd64/twisted/internet/defer.py”,第 542 行,位于 _runCallbacks 当前.result = 回调(当前.result,*args,**kw) 文件“/usr/lib/python2.6/site-packages/opscenterd/Cluster.py”,第 484 行,位于 sumDiskSpace 密钥错误:u'/dev/mapper/Staging3SSTables_vol1' 2013-10-10 08:48:37-0700 [] 错误:生成集群报告时出错:回溯(最近一次调用最后一次): ClusterReportController 中的文件“/usr/lib/python2.6/site-packages/opscenterd/WebServer.py”,第 2243 行 密钥错误:u'/dev/mapper/Staging3SSTables_vol1'
答案1
这里发生的事情是 opscenterd 循环遍历包含来自 cassandra.yaml 的任何已配置数据目录的分区,并将它们与 的输出进行比较df --print-type --no-sync --block-size=1G --local
。OpsCenter 似乎认为这/dev/mapper/Staging3SSTables_vol1
是其中一个分区,这显然是错误的。
我们对分区名称中的特殊字符进行了一些转义,但这些-
字符在允许的非转义字符列表中。因此,除非该破折号不是真正的破折号,或者 OpsCenter 代码中存在错误,否则这不应该导致任何问题。
对于集群中的其他节点,我没有收到此错误。
一旦发生此错误,集群报告将停止处理。因此,如果第一个处理有问题的节点,其他节点就没有成功或失败的机会。