Чи можуть Salt (Saltstack) збирати та передавати дані для Graphite, Ganglia або Zenoss?

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

З Salt мені цікаво, чи існує інтеграція між ним і Graphite або Zenoss або Ганглії . ..з використанням з'єднань Salt 0mq , щоб передати дані від "прислужників" Salt до бази даних моніторингу/графіки/колекціонерів.

Хто-небудь ще подивився на це?

11
Існує новий проект під назвою Лосось , який має на меті бути повноцінним система моніторингу з використанням Salt як механізму збору даних та транспортування повідомлень. Він використовує Whisper як свою базу даних, так що ви могли б інтегрувати його в Graphite, якщо ви дійсно хочете.
додано Автор madcapnmckay, джерело
Чи можете ви пояснити, що ви хочете зробити більш детально, будь ласка? Який тип запиту вам потрібний?
додано Автор Rob K, джерело

5 Відповіді

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

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

  • Icinga as Monitoring Server
  • NRPE for executing the checks on the Nodes
  • graphite collects the data from the collectd nodes
  • collectd for collecting and pushing metrics to graphite
  • gdash for a nice Dashboard to visualize the grahite metrics
  • salt-stack and finally salt-stack to roll out the configs for NRPE/Collectd on each node

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

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

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

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

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

9
додано
Я не хотів, щоб я привітав це, але чесність і пристойність змусили мене це зробити. Вони, безумовно, усвідомлюють надзвичайну можливість надання узагальненого транспорту для метрик. Я вже це роблю через соляну шахту.
додано Автор greatvovan, джерело
Навіщо збирати над [py] statsd?
додано Автор greatvovan, джерело

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

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

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

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

4
додано
salt-monitor не підтримується github.com/thatch45/salt-monitor
додано Автор emrekyv, джерело
collectd також була моєю першою думкою.
додано Автор Gihan, джерело

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

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

3
додано

I outlined my journey to sub-second-per-host nagios monitoring via the salt-mine and check_mk here: 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 в один міньйон, а потім налаштуйте 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 | "
    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

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

datasource_programs = [
  ( '/etc/check_mk/mine_agent.py ', ['mine'], ALL_HOSTS ),
]
2
додано
занадто погано mine_interval є глобальний конфігурації не на mine_function, у мене є деякі важкі мінні функції, які не можуть зробити добре, якщо встановлено в хвилину.
додано Автор CᴴᵁᴮᴮʸNᴵᴺᴶᴬ, джерело

I recommend you look into two things: Salt Mine - http://docs.saltstack.com/topics/mine/ Salt Events - http://docs.saltstack.com/topics/event/index.html

Якщо ви поєднаєте їх із власною конфігураційною програмою для збереження результатів у графіті, або в будь-якому з перелічених нижче. Ви могли б використовувати Salt для обробки зверху вниз 'зондування' і знизу вгору 'eventing'. Я не зможу прокоментувати ефективність такої системи, але в принципі є така можливість.

2
додано
Ще нереалізованою особливістю солі є те, що вона є безпечною зоряною топологічною шиною. Я використовую сіль шахти для запуску та зберігання check_mk_agent, і check_mk на сервер nagios тягне його з шахти.
додано Автор greatvovan, джерело