Назад | Перейти на главную страницу

Не удается создать отчеты кластера в OpsCenter.

Я не могу создать кластерный отчет в OpsCenter. Сервер и клиенты работают на CentOS 5.9, 64bit. Версии программного обеспечения:

Вот сообщение об ошибке в веб-браузере:

There was an error generating the cluster report: u'/dev/mapper/Staging3SSTables_vol1'

Это файловая система на третьем узле cassandra в этом кластере. Это подчеркивание должно быть дефисом:

$ ls -la /dev/mapper/Staging3SSTables_vol1
ls: /dev/mapper/Staging3SSTables_vol1: No such file or directory

$ ls -la /dev/mapper/Staging3SSTables-vol1
brw-rw---- 1 root disk 253, 0 Oct  7 13:56 /dev/mapper/Staging3SSTables-vol1

$ df -h /dev/mapper/Staging3SSTables-vol1
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/Staging3SSTables-vol1
                      551G  199M  522G   1% /var/lib/cassandra/data

Я не получаю эту ошибку для других узлов в кластере.

Что может быть причиной этого?

Вот полный вывод ошибки из opscenterd.log:

2013-10-10 08:48:37-0700 [] ERROR: There was an error while generating a cluster report. Traceback (most recent call last):
          File "/usr/lib/python2.6/site-packages/opscenterd/StatsReporter.py", line 132, in generateReport
          File "/usr/share/opscenter/lib/py-redhat/2.6/shared/amd64/twisted/internet/defer.py", line 1018, in _inlineCallbacks
            result = result.throwExceptionIntoGenerator(g)
          File "/usr/share/opscenter/lib/py-redhat/2.6/shared/amd64/twisted/python/failure.py", line 349, in throwExceptionIntoGenerator
            return g.throw(self.type, self.value, self.tb)
          File "/usr/lib/python2.6/site-packages/opscenterd/StatsReporter.py", line 148, in createClusterReport
          File "/usr/share/opscenter/lib/py-redhat/2.6/shared/amd64/twisted/internet/defer.py", line 1018, in _inlineCallbacks
            result = result.throwExceptionIntoGenerator(g)
          File "/usr/share/opscenter/lib/py-redhat/2.6/shared/amd64/twisted/python/failure.py", line 349, in throwExceptionIntoGenerator
            return g.throw(self.type, self.value, self.tb)
          File "/usr/lib/python2.6/site-packages/opscenterd/StatsReporter.py", line 109, in format_node
          File "/usr/share/opscenter/lib/py-redhat/2.6/shared/amd64/twisted/internet/defer.py", line 542, in _runCallbacks
            current.result = callback(current.result, *args, **kw)
          File "/usr/lib/python2.6/site-packages/opscenterd/Cluster.py", line 484, in sumDiskSpace
        KeyError: u'/dev/mapper/Staging3SSTables_vol1'

2013-10-10 08:48:37-0700 [] ERROR: Error generating the cluster report: Traceback (most recent call last):
          File "/usr/lib/python2.6/site-packages/opscenterd/WebServer.py", line 2243, in ClusterReportController
        KeyError: u'/dev/mapper/Staging3SSTables_vol1'

Здесь opscenterd перебирает разделы, содержащие любые настроенные каталоги данных из cassandra.yaml, и сравнивает их с выводом df --print-type --no-sync --block-size=1G --local. OpsCenter, похоже, считает, что /dev/mapper/Staging3SSTables_vol1 один из тех разделов, что явно неверно.

Мы делаем некоторые экранирование специальных символов в именах разделов, но - находится в списке разрешенных символов без экранирования. Поэтому, если это тире на самом деле не является тире или в коде OpsCenter просто есть ошибка, это не должно вызывать никаких проблем.

Я не получаю эту ошибку для других узлов в кластере.

При возникновении этой ошибки кластерный отчет прекращает обработку. Таким образом, если узел-нарушитель будет обработан первым, у других узлов не будет шансов на успех или сбой.