2016-07-17 3 views
5

У меня есть> 10 узлов в кластере. Я установил стек Hadoop на кластере, используя Cloudera (YARN, HBase, Hue, Hadoop FS, Spark, Flink). Есть ли простой способ собрать глобальную статистику всех узлов (с точки зрения использования ЦП, использования памяти и использования сети) и прочитать ее с помощью Python? Цель использования Python заключается в том, что я могу полностью указать графики и обеспечить единый стиль построения в моем отчете. Какое программное обеспечение можно использовать для этого? Его не нужно распространять, достаточно просто библиотеки.Мониторинг кластера узлов

+0

Я использую librato.com, он имеет очень простой процесс интеграции читать метрики и показать их в красивой приборной панели, а также модуль питона для публикации или получения данных. – Maviles

ответ

4

Я сделал пакет сам: http://github.com/kevin91nl/isa

Учебник можно найти на https://www.data-blogger.com/2016/07/18/monitoring-your-cluster-in-just-a-few-minutes/

Если кто-нибудь знает лучшую альтернативу, пожалуйста, дайте мне знать.

+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 имеет API-интерфейс python, и вы можете делать большинство вещей прямо из 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) 
+0

Это выглядит великолепно! Спасибо :-) –

Смежные вопросы