我在一个集群中有 > 10 个节点。我已经使用 Cloudera(YARN、HBase、Hue、Hadoop FS、Spark、Flink)在集群上安装了 Hadoop 堆栈。有没有一种简单的方法来收集所有节点的全局统计信息(在 CPU 使用率、内存使用率和网络使用率方面)并用 Python 读出?使用 Python 的目的是让我可以完全自由地指定绘图并确保报告中的绘图样式统一。我可以使用哪个软件来完成此操作?它不必分发,只需一个简单的库就足够了。
最佳答案
为此,我建议考虑使用 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)
关于python - 监控节点集群,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38425519/