这次安装插件主要是根据https://github.com/ganglia/gmond_python_modules/tree/master/storm_topology的步骤,但也发现了一些小问题。
新建文件 vim /etc/ganglia/conf.d/modpython.conf modules { module { name = "python_module" # 模块名 path = "/usr/local/lib64/ganglia/modpython.so" # 可能库不在这个目录,依照自己情况填写路径 params = "/usr/lib/ganglia/python_modules" # 所有python脚本存放的路径 } } include ('/etc/ganglia/conf.d/*.pyconf') # 注意避免相互包含的问题
vim /etc/ganglia/conf.d/storm_topology.pyconf modules { module { name = "storm_topology" # 记住这个名字,后的脚本文件必须和这个名字保持一致 language = "python" param topologies { value = "MyFirsttopology,MySecondtopology" # 所有要监视的topology, } # 多个topology用逗号分开 param MyFirsttopology_spouts { # 注意这里的命名方式,拓扑名_spouts value = "first_spouts" # 程序中spout的名字 } param MyFirsttopology_bolts { value = "first_bolt1,first_bolt2" # 注意这里的命名方式,拓扑名_bolts } # 程序中blot的名字,多个用逗号分开 param MySecondtopology_spouts { # 为其他拓扑定义spout和blot, value = "second_spouts" } param MySecondtopology_bolts { value = "second_bolt1,first_bolt2" } param storm_thrift_gen { value = "/usr/lib/ganglia/python_modules" # 该插件依赖storm的thrift接口, # 这个路径指定接口文件在哪个位置。否则该插件无法import进来(插件会自动去找${storm_thrift_gen}/stormpy/storm目录) } param loglevel { value = "INFO" } } } collection_group { collect_every = 20 time_threshold = 90 metric { name_match = ".*" } }
thrift编译生成的python接口不能直接运行,会报错:NameError: name 'DebugOptions' is not defined。
错误原因
解决办法:
stormtopology.py主要和nimbus通信,通过nimbus获取所有信息,所以文件中可以配置nimbus的ip,端口。默认是127.0.0.1:6627