Cassandra

無法在 OpsCenter 中生成集群報告。

  • October 17, 2013

我無法在 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 程式碼中只是存在錯誤,否則應該不會導致任何問題。

對於集群中的其他節點,我沒有收到此錯誤。

一旦發生此錯誤,集群報告將停止處理。因此,如果違規節點是第一個被處理的節點,那麼其他節點將沒有機會成功或失敗。

引用自:https://serverfault.com/questions/545176