2014-09-19 63 views
0

我正在尝试向Mongin添加一个MongoDB插件。我跟着这个安装插件:Mongo的数据未显示在munin上

sudo apt-get install git munin-node 
git clone git://github.com/erh/mongo-munin.git /home/ubuntu/mongo-munin 
sudo ln -sf /home/ubuntu/mongo-munin/mongo_btree /etc/munin/plugins/mongo_btree 
sudo ln -sf /home/ubuntu/mongo-munin/mongo_conn /etc/munin/plugins/mongo_conn 
sudo ln -sf /home/ubuntu/mongo-munin/mongo_lock /etc/munin/plugins/mongo_lock 
sudo ln -sf /home/ubuntu/mongo-munin/mongo_mem /etc/munin/plugins/mongo_mem 
sudo ln -sf /home/ubuntu/mongo-munin/mongo_ops /etc/munin/plugins/mongo_ops 
sudo service munin-node restart 

(从https://ivan-site.com/2013/06/monitoring-mongodb-in-munin-on-ubuntu-1304

但没有被送到穆宁的服务器(蒙戈只,从服务器的所有其他日期都OK的穆宁)。

后来我发现有乳宁插件时的错误:

# sudo -u munin python /usr/share/munin/plugins/mongo_ops 
Traceback (most recent call last): 
    File "/usr/share/munin/plugins/mongo_ops", line 56, in <module> 
    doData() 
    File "/usr/share/munin/plugins/mongo_ops", line 33, in doData 
    ss = getServerStatus() 
    File "/usr/share/munin/plugins/mongo_ops", line 28, in getServerStatus 
    raw = urllib2.urlopen(req).read() 
    File "/usr/lib/python2.7/urllib2.py", line 126, in urlopen 
    return _opener.open(url, data, timeout) 
    File "/usr/lib/python2.7/urllib2.py", line 400, in open 
    response = self._open(req, data) 
    File "/usr/lib/python2.7/urllib2.py", line 418, in _open 
    '_open', req) 
    File "/usr/lib/python2.7/urllib2.py", line 378, in _call_chain 
    result = func(*args) 
    File "/usr/lib/python2.7/urllib2.py", line 1207, in http_open 
    return self.do_open(httplib.HTTPConnection, req) 
    File "/usr/lib/python2.7/urllib2.py", line 1177, in do_open 
    raise URLError(err) 
urllib2.URLError: <urlopen error [Errno 111] Connection refused> 

我检查了这样一个问题:Munin Mongodb Plugin Not Showing. . .?但问题是不一样的,我跑pyhton 2,如看到输出以上:

File "/usr/lib/python2.7/urllib2.py", line 126, in urlopen 

因此,插件活性:

# munin-node-configure | grep "mongo" 
mongo_btree    | yes | 
mongo_conn     | yes | 
mongo_lock     | yes | 
mongo_mem     | yes | 
mongo_ops     | yes | 

这是来自Mongo的许可吗?也许我需要为Munin设置一个用户?你有什么想法如何解决这个问题?

+0

您是否已将插件复制到'/ usr/share/munin/plugins'并将它们从那里链接到'/ etc/munin/plugins'? – 2014-09-19 08:30:58

+0

是的,插件位于'/ usr/share/munin/plugins'和一个到'/ etc/munin/plugins'的连接:'mongo_btree - >/usr/share/munin/plugins/mongo_btree''mongo_conn - >/usr/share/munin/plugins/mongo_conn''mongo_lock - >/usr/share/munin/plugins/mongo_lock''mongo_mem - >/usr/share/munin/plugins/mongo_mem''mongo_ops - >/usr/share/munin /插件/ mongo_ops' – 2014-09-19 09:22:39

+0

我现在编辑我的问题,插件是活动的,但python错误仍然存​​在。 – 2014-09-19 09:24:57

回答

1

好的,所以首先 - 那些插件是很久以前写的,并且在几年之内没有更新过,所以它们可能在这个时候也可能不工作。其次,他们使用MongoDB的HTTP console来收集数据。从现在开始defaults to disabled可能对您的实例完全没有运行(并且通常不推荐用于生产系统 - 如果您确实运行了它,则应将其防火墙关闭)。

编辑:略偏检查后,插件需要比控制台多,他们要求要启用的REST interface,那肯定是默认关闭的,并再次一般不建议在生产。

最后,插件被硬编码以连接到端口28017(MongoDB +1000的默认端口),所以如果您已经定制了运行MongoDB的端口,则需要手动调整每个插件以连接到右侧港口。

检查所有这一切的最简单方法是将您的浏览器指向端口28017(http://hostame/28017)上的主机或任何适当的端口,看看您是否可以访问控制台。

更新

我分叉艾略特的插件,看看它是如何努力地移植到pymongo,消除对REST API的依赖,我想办法做到这一点很容易(无需身份验证支持还)。你可以在这里找到该版本,每次您链接工作过的页面相同的安装和测试命令我:

https://github.com/comerford/mongo-munin

事实证明,这些变化对自写插件的serverStatus() command意味着其中几人不再像当前版本的MongoDB一样工作,所以我不得不返回并修复它们在2.4及更高版本中(随同新的pymongo依赖项在README中列出)。

+0

谢谢Adam,你知道Mongo的另一个Munin插件吗?这个老的是在[Mongo Doc]中建议的(http://docs.mongodb.org/ecosystem/tools/munin):( – 2014-09-19 14:44:31

+1

我重构了(非常基本)插件在fork中使用pymongo而不是REST API并更新了答案,我会再详细点添加auth和其他一些指标,然后ping艾略特关于合并这两个问题 – 2014-09-19 16:22:10

+0

非常感谢!非常有用,我刚刚提出了一个pull request你的叉子添加一个基本的设置指南和一个插件来监视文档的数量。如果你认为这可能是一个很好的补充:) – 2014-09-19 21:16:41