Чи може Сіль (Saltstack) збирати та ретранслювати дані для графіту, ганглії чи Zenoss?


11

Я починаю новий проект і розглядаю можливість використання Ansible або Salt для автоматизації розгортання і, можливо, більш досконалу оркестрацію (управління сервером та федерація).

З Сіллю мені цікаво , якщо є якась - або інтеграція між ним і графітом або Zenoss або гангліями ... з використанням сіллю 0mq з'єднань для передачі даних з «міньйон» Соляних до моніторингу / Graphing бази даних / колекторам.

Хтось ще дивився на це?


Чи можете ви пояснити, що ви хочете зробити більш детально? Який тип допиту вам потрібен?
jamieb

3
Існує новий проект під назвою Salmon, який має на меті бути повноцінною системою моніторингу, використовуючи Salt як механізм збору даних та передачу повідомлень. Він використовує Whisper як свою базу даних, тож ви могли б інтегрувати його в Graphite, якби справді цього хотіли.
jgoldschrafe

Відповіді:


9

Я використовував сольовий стек вже понад 6 місяців для управління 40+ вузлами.

у моєму поточному налаштуванні я використовую:

  • Icinga як сервер моніторингу
  • NRPE для здійснення перевірок на Вузлах
  • графіт збирає дані з зібраних вузлів
  • collectd для збору і штовхаючи метрики для графіту
  • gdash для приємної панелі керування для візуалізації графічних показників
  • соль і нарешті соль для розгортання конфігурацій для NRPE / Collectd на кожному вузлі

також це працює під CentOS 6.x

мій досвід поки що полягає в тому, що стеклу солі добре зареєструвати. Але як довгостроково управляє Демон на вузлах, його не стабільно.

У мене часто виникають проблеми з тим, щоб не потрапити до майстра або пам'яті здуття живота на соляних міньйонів. Це можна виправити за допомогою легкого вирішення, що ви перезапускаєте кожні 24 години / раз на тиждень соляних міньйонів.

але ця проблема в соляному мініоні робить її непридатною для збору даних через 0mq Framework.

моє поточне налаштування працює в безпеці. Я можу зареєструвати зміни досить швидко за допомогою солі та збирати їх на вузлах.


Я не хотів це закликати, але чесність і порядність змусили мене це зробити. Вони, звичайно, знають про дивовижну можливість надання узагальненого транспорту для метрик. Я вже щось роблю через шахту.
Dan Garthwaite

Чому збирати над [py] statsd?
Dan Garthwaite

4

Я думаю, що сіль та відповідь не створені для цього завдання, і я думаю, що вони не можуть бути використані для цієї мети.

Я використовую Salt протягом декількох місяців, і я не помітив варіантів потрібних вам функцій (у налаштуваннях та документації). Але я думаю, ви можете "додати" свої вимоги, оскільки Сіль написана в python - якщо це варіант.

Найпростіший спосіб - замовити сіль для встановлення colled, який може збирати дані про систему (і має роз'єми для графіту)

EDIT: Я знайшов проект, який реалізує моніторинг із використанням солі - лосося - погляньте.


collectiond була також моєю першою думкою.
Дж. Адамс

сольовий монітор не підтримується github.com/thatch45/salt-monitor
Itai

3

Ви можете поглянути на Sensu , це підключення для моніторингу з великою кількістю плагінів спільноти, включаючи графіт серед інших.

Однак Sensu використовує іншу чергу для обміну повідомленнями, щоб доставити повідомлення, RabbitMQ . Можливо, потрібна якась робота з кодування, але ви можете спробувати замінити одну з двох черг обміну повідомленнями, оскільки обидва повинні використовувати протокол AMQ для обміну повідомленнями.


2

Я рекомендую розібратися в двох речах: Соляна шахта - http://docs.saltstack.com/topics/mine/ Соляні події - http://docs.saltstack.com/topics/event/index.html

Якщо ви поєднаєте їх із власною установкою конфігурації для повернення, щоб зберігати результати в графіті або будь-якому з інших, які ви перерахували. Можливо, ви можете використовувати Сіль для обробки "зондування" зверху вниз і "події" знизу вгору. Я б не міг коментувати ефективність такої системи, але в принципі, мабуть, існує така можливість.


Досі нереалізована особливість солі полягає в тому, що це захищена шина подій з топології зірок. Я використовую соляну шахту для запуску та зберігання check_mk_agent, а check_mk на сервері nagios витягує її з шахти.
Dan Garthwaite

2

Я окреслив свою подорож до моніторингу нагіосів другого за кожним господарем через шахту і check_mk тут: http://garthwaite.org/saltmine_check_mk_agent.html

У статті йде кілька тижнів умикання та вимикання, щоб все працювало. Я підсумую рішення:

Створіть спеціальний модуль check_mk для всіх міньйонів:

#!/usr/bin/env python
''' Support for running check_mk_agent over salt '''
import os
import salt.utils
from salt.exceptions import SaltException

def __virtual__():
    ''' Only load the module if check_mk_agent is installed '''
    if os.path.exists('/usr/bin/check_mk_agent'):
        return 'check_mk'
    return False

def agent():
    ''' Return the output of check_mk_agent '''
    return __salt__['cmd.run']('/usr/bin/check_mk_agent')

Встановити інтервал міни шахти на одну хвилину:

salt '*' file.append /etc/salt/minion.d/mine.conf "mine_interval: 1"

Налаштуйте сервер моніторингу, щоб перетягнути весь вихід check_mk_agent minion в один json-файл, а потім налаштуйте check_mk для запиту цього файлу замість будь-яких мережевих запитів. Все виконано за допомогою наступного сценарію на моніторі:

#!/usr/bin/env python
import sys
import json
import fcntl

DATAFILE="/dev/shm/cmk.json"
NAG_UID = 105
NAG_GID = 107

def do_update():
    import os
    import salt.client

    caller = salt.client.Caller()
    data = caller.function('mine.get', '*', 'check_mk.agent')

    lockfile = open(DATAFILE+".lock", "w")
    fcntl.flock(lockfile, fcntl.LOCK_EX)

    datafile = open(DATAFILE, "w")
    datafile.write(json.dumps(data))

    for f in (DATAFILE, DATAFILE+".lock"):
        os.chmod(f, 0644)
        os.chown(f, NAG_UID, NAG_GID)

def get_agent(minion):
    lockfile = open(DATAFILE+".lock", "w")
    fcntl.flock(lockfile, fcntl.LOCK_SH)

    data = json.load(file(DATAFILE))
    return data[minion]

if __name__ == '__main__':
    if len(sys.argv) != 2:
        print "Usage: mine_agent.py --update | <minion id>"
    elif sys.argv[1] in ['--update', '-u']:
        do_update()
    else:
        minion = sys.argv[1]
        print get_agent(minion)

Оновлювати щохвилини:

$ cat /etc/cron.d/retrieve_mined_minion_data
*/1 * * * * root /etc/check_mk/mine_agent.py --update

Нарешті: змініть джерело даних для всіх цілей нагіосів у /etc/check_mk/main.mk:

datasource_programs = [
  ( '/etc/check_mk/mine_agent.py <HOST>', ['mine'], ALL_HOSTS ),
]

занадто поганий mine_interval - це глобальний конфігурація не за mine_function, у мене є важкі функції шахти, які можуть не спрацювати, якщо встановлено хвилину.
jagguli
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.