`
superisaac
  • 浏览: 64630 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

编写ganglia python插件

阅读更多
ganglia支持python插件,熟悉了架构后编写起来还是比较简单的. 具体安装过程就不说了,各种系统配置不一样,推荐的安装方法也各有不同,这里只记下基本定制插件的写法.

ganglia的体系结构=gmetad + gmond, gmetad作为整个系统的调度和展示的控制中心,gmond则分布在每台受监控机器上定期运行各种监控度量(metric) 并将结果送到gmetad.

插件需要写成python module的方式,放置在/usr/lib64/ganglia/python_modules 下面, 简单实例模板如
import random
def  get_foo_count(name):
    '''可定制业务方法,返回一个整数值'''
    return random.randrange(5, 100) + 10

def metric_init(params):
    '''metric'''
    global descriptors
    
    d1 = {
        'name': 'foo_count',
        'call_back': get_foo_count,                  # 名字同业务方法一致
        'time_max': 90,                                   # 最大调度间隔时间
        'value_type': 'uint',
        'units': 'C',
        'slope': 'both',
        'format': '%u',
        'description': 'Number of Foo',
        'groups': 'foo_group'
        }
    descriptors = [d1]
    return descriptors

def metric_cleanup():
    "清除metric"

if __name__ == '__main__':
    metric_init({})
    for d in descriptors:
        v = d['call_back'](d['name'])
        print 'value for %s is %u' % (d['name'], v)



metric_init 是初始化方法,返回本plugin要写的metric描述的列表, 在这只返回一个metric.

写完可以在命令行直接测试,如果输出 value for foo_count is 82 这样的结果就表示基本没有问题了。

接下来的工作是让gmond知道这里有ganglia插件,在/etc/ganglia/conf.d 目录下写个foo.pyconf 就可以

modules {
  module {
    name = "foo"
    language = "python"
  }
}

collection_group {
  collect_every = 60
  time_threshold = 60
  metric {
    name = "foo_count"
    title = "Foo Count"
    value_threshold = 1.0
  }
}


详细资料可以看 http://sourceforge.net/apps/trac/ganglia/wiki/ganglia_gmond_python_modules
分享到:
评论

相关推荐

    gmond_python_modules-master.zip

    总之,`gmond_python_modules-master.zip`提供了扩展Ganglia监控能力的Python插件集合,通过这些插件,我们可以更深入、全面地了解和管理我们的系统,提高故障排查和性能优化的效率。对于运维人员来说,熟练掌握这些...

    ganglia系统监控扩展

    Python模块是Gmond扩展的一种方式,允许用Python编写监控脚本来获取特定的系统或应用信息。 在提供的压缩包"**gmond_python_modules-master**"中,可能包含了一系列用于扩展Gmond监控能力的Python脚本。这些脚本...

    大数据技术Hadoop笔试题.doc.docx

    18. Hadoop虽然基于Java,但MapReduce支持多种编程语言编写,如Python和Java。 19. HDFS不支持数据的随机读写,只能按块读写。 20. NameNode管理metadata,但metadata通常存储在内存中,而不是磁盘。 21. ...

    大数据面试题(1).docx

    18. **MapReduce编程语言**:虽然Hadoop是用Java开发的,但MapReduce支持多种语言编写,包括Java、Python、Ruby等。 19. **Hadoop数据读写**:Hadoop HDFS不支持数据的随机读写,主要是顺序读写。 20. **NameNode...

    大数据面试题(1).doc

    18. **MapReduce编程语言**:虽然Hadoop是用Java开发的,但MapReduce支持多种语言编写,如Java、Python、Ruby等。 19. **Hadoop随机读写**:Hadoop的HDFS设计为顺序读写优化,不支持高效的随机读写。 20. **...

    大数据面试题.pdf

    虽然 MapReduce 最初是用 Java 实现的,但现在支持其他编程语言,如 Python 和 Scala。 19. Hadoop 支持数据的随机读写。错误。HDFS 更适合顺序读写,不推荐用于频繁的随机访问。 20. NameNode 负责管理 metadata,...

    大数据面试题 (2).docx

    18. **MapReduce 语言支持**:虽然Hadoop是用Java开发的,但MapReduce支持多种编程语言编写,包括Java、Python、C++等。 19. **Hadoop 随机读写**:HDFS不支持文件系统的随机读写操作,它更适合批量处理和顺序读写...

    大数据面试题 (2).pdf

    - 答案:可以,虽然Nagios不直接提供Hadoop支持,但可以通过插件实现监控。 16. 如果NameNode意外终止,SecondaryNameNode是否会接管? - 答案:不是,SecondaryNameNode不是热备份,不能直接接管。 - 解析:...

    大数据技术Hadoop笔试题.doc.pdf

    18. **MapReduce编程语言**:虽然Hadoop主要是用Java开发的,但MapReduce支持多种编程语言编写,如Java、Python、Ruby等(答案错误)。 19. **Hadoop数据访问**:Hadoop不支持数据的随机读写,主要是顺序访问(答案...

    Hadoop面试100题.pdf

    - **知识点说明**:虽然Hadoop核心是由Java编写的,但MapReduce作业可以用多种编程语言编写,包括Python、Ruby等,通过相应的API实现。 7. **Hadoop支持数据的随机读写** - **知识点说明**:HDFS主要设计用于流式...

Global site tag (gtag.js) - Google Analytics