क्या साल्ट (सॉल्टस्टैक) ग्रेफाइट, गंगालिया या ज़ेनॉस के लिए डेटा इकट्ठा और रिले कर सकता है?


11

मैं एक नई परियोजना शुरू कर रहा हूं और तैनाती स्वचालन के लिए Ansible या Salt का उपयोग करने पर विचार कर रहा हूं और, शायद, अधिक परिष्कृत ऑर्केस्ट्रेशन (सर्वर प्रबंधन और फेडरेशन)।

नमक के साथ मैं अगर वहाँ यह और के बीच किसी भी एकीकरण है सोच रहा हूँ ग्रेफाइट या Zenoss या गैन्ग्लिया ... नमक का उपयोग कर 0mq कनेक्शन निगरानी करने के लिए नमक "minions" / डेटाबेस / कलेक्टरों ग्राफ़ बनाने से डेटा रिले।

क्या किसी और ने इस पर ध्यान दिया है?


क्या आप बता सकते हैं कि आप और अधिक विस्तार से क्या करना चाहते हैं? आपको किस प्रकार की पूछताछ की आवश्यकता है?
जामिब

3
सैल्मन नामक एक नई परियोजना है जिसका उद्देश्य नमक को अपने डेटा संग्रह तंत्र और संदेश परिवहन के रूप में एक पूर्ण विकसित निगरानी प्रणाली होना है। यह अपने डेटाबेस के रूप में व्हिस्पर का उपयोग करता है, इसलिए यदि आप वास्तव में चाहते हैं तो आप इसे ग्रेफाइट में एकीकृत कर सकते हैं।
jgoldschrafe

जवाबों:


9

मैं 6 से अधिक महीने के लिए नमक-ढेर का उपयोग करता था अब 40+ नोड्स का प्रबंधन करने के लिए।

मेरे वर्तमान सेटअप में मैं उपयोग करता हूं:

  • Icinga निगरानी सर्वर के रूप में
  • नोड्स पर जाँच निष्पादित करने के लिए NRPE
  • ग्रेफाइट कलेक्टेड नोड्स से डेटा एकत्र करता है
  • collectd ग्रेफाइट को इकट्ठा करने और मीट्रिक धकेलने के लिए
  • ग्रेश मेट्रिक्स की कल्पना करने के लिए एक अच्छे डैशबोर्ड के लिए gdash
  • नमक-ढेर और अंत में नमक-ढेर प्रत्येक नोड पर NRPE / Collectd के लिए कॉन्फ़िगर करने के लिए

als यह CentOS 6.x के अंतर्गत चलता है

मेरा अब तक का अनुभव यह है कि नमक-ढेर सब कुछ नामांकन करने के लिए अच्छा है। लेकिन लंबी अवधि के लिए डेमॉन को नोड्स पर चलाना, स्थिर नहीं है।

मुझे अक्सर नमक या मिनियंस पर ब्लोटिंग के मास्टर या मेमोरी तक नहीं पहुंचने की समस्या है। इसे और आसान वर्कअराउंड के साथ तय किया जा सकता है जिसे आप हर 24 घंटे / ऑनस्किएक को नमक-मिनियन को फिर से शुरू करते हैं।

लेकिन नमक-मिनियन में यह समस्या 0mq फ्रेमवर्क पर डेटा एकत्र करने के लिए उपयोग करने योग्य नहीं है।

मेरा वर्तमान सेटअप सुरक्षित चलता है। मैं नमक-स्टैक के साथ परिवर्तनों को बहुत तेज़ी से दर्ज कर सकता हूं और नोड्स पर एकत्रित चाल करता है।


मैं इसे उभारना नहीं चाहता था , लेकिन ईमानदारी और शालीनता ने मुझे ऐसा करने के लिए मजबूर किया। वे निश्चित रूप से मैट्रिक्स के लिए एक सामान्यीकृत परिवहन प्रदान करने की भयानक संभावना से अवगत हैं। मैं पहले से ही नमक-खदान के माध्यम से इसका कुछ कर रहा हूं।
डैन गर्थवैइट

क्यों [py] आँकड़ों पर इकट्ठा किया?
डैन गर्थवेट

4

मुझे लगता है कि उस कार्य के लिए Salt या Ansible नहीं बनाया गया है और मुझे लगता है कि उनका उपयोग उस उद्देश्य के लिए नहीं किया जा सकता है।

मैं कई महीनों के लिए साल्ट का उपयोग कर रहा हूं और मैंने उन कार्यों के विकल्पों पर ध्यान नहीं दिया है जो आप चाहते हैं (न तो कॉन्फ़िगरेशन में और न ही दस्तावेज़ीकरण में)। लेकिन मुझे लगता है कि आप अपनी आवश्यकताओं को "जोड़" सकते हैं क्योंकि नमक अजगर में लिखा है - अगर यह एक विकल्प है।

सबसे आसान तरीका है कि नमक को कलेक्ट करने के लिए ऑर्डर किया जाए जो सिस्टम के बारे में डेटा एकत्र कर सकता है (और इसमें ग्रेफाइट के लिए कनेक्टर हैं)

संपादित करें: मुझे एक परियोजना मिली, जो नमक - सामन का उपयोग करते हुए निगरानी की निगरानी करती है ।


सामूहिक भी मेरा पहला विचार था।
जे एडम्स

नमक-मॉनीटर का रखरखाव नहीं किया जाता है github.com/thatch45/salt-monitor
Itai Frenkel

3

आप सेंसु पर एक नज़र डालना चाहते हैं , यह बहुत से सामुदायिक प्लगइन्स के साथ निगरानी योग्य समाधान है, जिसमें अन्य लोगों के साथ ग्रेफाइट भी शामिल है।

हालाँकि सेंशु संदेश भेजने के लिए एक और मैसेजिंग कतार का उपयोग करता है, RabbitMQ । हो सकता है कि कुछ कोडिंग कार्य की आवश्यकता है, लेकिन आप दो संदेश पंक्ति में से एक को बदलने का प्रयास कर सकते हैं, क्योंकि दोनों को संदेशों का आदान-प्रदान करने के लिए एएमक्यू प्रोटोकॉल का उपयोग करना चाहिए।


2

मैं आपको दो चीजों पर ध्यान देने की सलाह देता हूं: साल्ट माइन - http://docs.saltstack.com/topics/mine/ साल्ट इवेंट - http://docs.saltstack.com/topics/event/index.html

यदि आप ग्रेफाइट, या आपके द्वारा सूचीबद्ध किसी भी अन्य में स्टोर करने के लिए अपने स्वयं के रिटर्नर कॉन्फ़िगरेशन सेटअप के साथ इन्हें जोड़ते हैं। आप अनुमान लगा सकते हैं कि नमक का उपयोग 'डाउनिंग' को संभालने के लिए किया गया था और नीचे 'ईवेंटिंग' के लिए। मैं इस तरह की प्रणाली की प्रभावशीलता पर टिप्पणी नहीं कर सकता, लेकिन सिद्धांत रूप में संभावना प्रतीत होती है।


नमक की अभी तक अवास्तविक विशेषता यह है कि यह एक सुरक्षित स्टार टोपोलॉजी इवेंट बस है। मैं check_mk_agent को चलाने और संग्रहीत करने के लिए नमक की खान का उपयोग करता हूं, और nagios सर्वर पर एक check_mk इसे खदान से खींचता है।
दान गर्थवेट

2

मैंने नमक-खदान और check_mk के माध्यम से उप-दूसरे-प्रति-मेजबान नगियोस निगरानी के लिए अपनी यात्रा की रूपरेखा दी: http://garthwaite.org/saltmine_check_mk_agent.html

इस लेख के माध्यम से सप्ताह के माध्यम से चलता है और यह सब काम करने के लिए tinkering बंद। मैं समाधान का सारांश दूंगा:

सभी minions के लिए एक custom 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"

मॉनिटरिंग सर्वर को किसी भी json फाइल में सभी मिनियन के 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 | <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 में सभी nagios लक्ष्यों के लिए डेटा स्रोत बदलें:

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

बहुत खराब मेरा_इंटरवाल एक वैश्विक कॉन्फिग है, जो मेरा_फंक्शन के अनुसार नहीं है, मेरे पास कुछ भारी खान कार्य हैं जो एक मिनट के लिए भी ठीक नहीं हो सकते हैं।
गुड़गुली
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.