Cassandra
無法在 OpsCenter 中生成集群報告。
我無法在 OpsCenter 中生成集群報告。伺服器和客戶端在 CentOS 5.9 64 位上執行。軟體版本:
- opscenter-3.2.2-1
- opscenter-agent-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 Oct 7 13:56 /dev/mapper/Staging3SSTables-vol1 $ df -h /dev/mapper/Staging3SSTables-vol1 已使用的文件系統大小可用使用百分比已安裝在 /dev/mapper/Staging3SSTables-vol1 551G 199M 522G 1% /var/lib/cassandra/data
對於集群中的其他節點,我沒有收到此錯誤。
這可能是什麼原因造成的?
以下是opscenterd.log錯誤的完整輸出:
2013-10-10 08:48:37-0700 [] 錯誤:生成集群報告時出錯。回溯(最近一次通話最後): 文件“/usr/lib/python2.6/site-packages/opscenterd/StatsReporter.py”,第 132 行,在 generateReport 中 _inlineCallbacks 中的文件“/usr/share/opscenter/lib/py-redhat/2.6/shared/amd64/twisted/internet/defer.py”,第 1018 行 結果 = result.throwExceptionIntoGenerator(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) createClusterReport 中的文件“/usr/lib/python2.6/site-packages/opscenterd/StatsReporter.py”,第 148 行 _inlineCallbacks 中的文件“/usr/share/opscenter/lib/py-redhat/2.6/shared/amd64/twisted/internet/defer.py”,第 1018 行 結果 = result.throwExceptionIntoGenerator(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 行,格式節點 _runCallbacks 中的文件“/usr/share/opscenter/lib/py-redhat/2.6/shared/amd64/twisted/internet/defer.py”,第 542 行 current.result = callback(current.result, *args, **kw) sumDiskSpace 中的文件“/usr/lib/python2.6/site-packages/opscenterd/Cluster.py”,第 484 行 KeyError: u'/dev/mapper/Staging3SSTables_vol1' 2013-10-10 08:48:37-0700 [] 錯誤:生成集群報告時出錯:回溯(最近一次呼叫): ClusterReportController 中的文件“/usr/lib/python2.6/site-packages/opscenterd/WebServer.py”,第 2243 行 KeyError: u'/dev/mapper/Staging3SSTables_vol1'
這裡發生的事情是 opscenterd 循環遍歷包含來自 cassandra.yaml 的任何已配置數據目錄的分區,並將這些分區與
df --print-type --no-sync --block-size=1G --local
. OpsCenter 似乎認為這/dev/mapper/Staging3SSTables_vol1
是其中一個分區,這顯然是錯誤的。我們對分區名稱中的特殊字元進行了一些轉義,但
-
在允許的非轉義字元列表中。因此,除非該破折號不是真正的破折號,或者 OpsCenter 程式碼中只是存在錯誤,否則應該不會導致任何問題。對於集群中的其他節點,我沒有收到此錯誤。
一旦發生此錯誤,集群報告將停止處理。因此,如果違規節點是第一個被處理的節點,那麼其他節點將沒有機會成功或失敗。