监视节点集群

w51jfk4q  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(314)

我在一个集群中有>10个节点。我已经使用cloudera(yarn、hbase、hue、hadoop fs、spark、flink)在集群上安装了一个hadoop堆栈。有没有一种简单的方法来收集所有节点的全局统计数据(在cpu使用率、内存使用率和网络使用率方面)并用python读取?使用python的目的是,我可以完全自由地指定绘图,并确保在报告中使用统一的绘图样式。我可以用哪个软件来完成这个任务?它不需要分发,只要一个简单的库就足够了。

bejyjqdl

bejyjqdl1#

为此,我建议考虑使用ansible。下面是一个简单的剧本,它在清单文件中指定的主机上收集一些数据,并将其附加到本地文件:

- 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\u inventory是包含主机列表的文件
stats-playbook.yml是上面打印的文件
当然,根据您将如何存储收集的数据,可能会有不同的实现方式,但我认为总体思路是清楚的。不管怎样,在ansible中有很多方法可以解决这个问题。
此外,ansible有pythonapi,您可以直接从python做大多数事情!i、 e,这是我们收集群集配置的方法:

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)

相关问题