监视节点集群

时间:2016-07-17 20:11:57

标签: python hadoop statistics cluster-computing monitor

我有>集群中的10个节点。我使用Cloudera(YARN,HBase,Hue,Hadoop FS,Spark,Flink)在集群上安装了Hadoop堆栈。是否有一种简单的方法来收集所有节点的全局统计信息(在CPU使用率,内存使用和网络使用方面)并使用Python读取它?使用Python的目的是我可以完全自由地指定绘图并确保报表中的统一绘图样式。我可以使用哪种软件来完成此任务?它不需要分发,只需一个简单的库即可。

1 个答案:

答案 0 :(得分:1)

我建议考虑使用 ansible 来实现此目的。 这是一个简单的playbook,用于收集inventory file中指定的主机上的一些数据,并将其附加到本地文件中:

- hosts: all
  remote_user: your_user
  tasks:
  - name: collect load average
    shell: cat /proc/loadavg
    register: cluster_node_la

  - name: write to local disk
    lineinfile: dest=/tmp/cluster_stat create=yes line="{{ ansible_fqdn }}:{{ cluster_node_la.stdout_lines }}"
    delegate_to: 127.0.0.1

您可以按如下方式运行它:     ansible-playbook -i ansible-inventory stats-playbook.yml --forks=1

  • ansible_inventory 是包含主机列表的文件
  • stats-playbook.yml 是上面打印的文件

当然,根据您将如何存储收集的数据,它可能会以不同的方式实施,但我认为一般的想法是明确的。无论如何,有很多方法可以在 ansible 中解决它。

此外,ansible有python API,你可以直接从python做大部分事情!即,这是我们收集群集配置的方式:

import pprint

import ansible.runner
import ansible.inventory

inventory_file = 'ansible_inventory'  # see ansible inventory files
inventory = ansible.inventory.Inventory(inventory_file)

runner = ansible.runner.Runner(
   module_name='setup',
   module_args='',
   pattern='all',
   inventory=inventory
)

cluster_facts = runner.run()
pprint.pprint(cluster_facts)