Salt (Saltstack), Grafit, Ganglia veya Zenoss için veri toplayabilir ve aktarabilir mi?


11

Yeni bir proje başlatıyorum ve dağıtım otomasyonu ve belki de daha sofistike düzenleme (sunucu yönetimi ve federasyon) için Ansible veya Salt kullanmayı düşünüyorum .

Salt ile Grafite veya Zenoss veya Ganglia arasında herhangi bir entegrasyon olup olmadığını merak ediyorum ... Salt 0 minq bağlantılarını kullanarak verileri Tuz "minyonlarından" izleme / grafik veri tabanına / toplayıcılara aktarmak için.

Başka kimse buna baktı mı?


Ne yapmak istediğinizi daha ayrıntılı olarak açıklayabilir misiniz? Ne tür bir sorgulamaya ihtiyacınız var?
jamieb

3
Veri toplama mekanizması ve mesaj aktarımı olarak Salt'ı kullanan tam gelişmiş bir izleme sistemi olmayı amaçlayan Salmon adında yeni bir proje var . Whisper'ı veritabanı olarak kullanır, böylece gerçekten isterseniz Grafite'ye akla getirebilirsiniz.
jgoldschrafe

Yanıtlar:


9

40+ düğümü yönetmek için 6 aydan fazla bir süredir tuz yığını kullandım.

Geçerli kurulumumda şunu kullanıyorum:

  • İzleme Sunucusu Olarak Icinga
  • Düğümlerdeki denetimleri yürütmek için NRPE
  • grafit toplanan düğümlerden veri toplar
  • metrikleri toplamak ve grafitlere göndermek için koleksiyon
  • gheyh grahite metriklerini görselleştirmek için güzel bir Pano için
  • her düğümde NRPE / Collectd için yapılandırmaları sunmak için tuz yığını ve son olarak tuz yığını

bu CentOS 6.x altında çalışır

benim şimdiye kadar benim deneyim tuz yığını her şeyi kaydetmek için iyi olmasıdır. Ancak Daemon'u düğümlerde uzun süreli koşarken, kararlı değil.

Tuz minyonlarında ustaya veya hafıza şişkinliğine ulaşmama sorunları yaşıyorum. Bu, tuzlu minyonların her 24 saatinde / haftada bir yeniden başlatılmasıyla düzeltilebilir ve kolay bir çözüm olabilir.

ancak tuz minyonundaki bu problem, 0mq Çerçeve üzerinden veri toplanmasını kullanışlı hale getirmez.

mevcut kurulumum güvenli çalışıyor. Tuz yığını ile değişiklikleri hızlı bir şekilde kaydedebilirim ve düğümlerde biriktirmek hile yapar.


Bunu onaylamak istemedim , ama dürüstlük ve dürüstlük beni bunu yapmaya zorladı. Metrikler için genel bir taşıma sağlama olasılığının kesinlikle farkındalar. Bunların bir kısmını tuz madeni ile zaten yapıyorum.
Dan Garthwaite

Neden [py] istatistikleri üzerinden toplanmalı?
Dan Garthwaite

4

Tuz veya Ansible'ın bu görev için yaratılmadığını düşünüyorum ve bence bu amaç için kullanılamazlar.

Salt aylarca kullanıyorum ve istediğiniz işlevlerin seçeneklerini (yapılandırmalarda veya belgelerde) fark etmedim. Ama tuz python yazılır gibi ihtiyaçlarınızı "ekleyebilirsiniz" düşünüyorum - bir seçenek ise.

En kolay yol, sistem hakkında veri toplayabilen (ve grafit için konektörleri olan) colld kurulumu için tuz sipariş etmektir.

EDIT: Tuz - somon kullanarak izleme gerçekleştiren bir proje buldum .


collectd de ilk düşüncemdi.
J Adams


3

Sensu'ya bir göz atmak isteyebilirsiniz , diğerlerinin yanı sıra grafit de dahil olmak üzere birçok topluluk eklentisi ile takılabilir bir izleme çözümüdür .

Ancak Sensu, mesajları iletmek için başka bir mesaj kuyruğu kullanır: RabbitMQ . Belki bazı kodlama çalışmaları gereklidir, ancak her ikisinin de mesaj alışverişi için AMQ protokolünü kullanması gerektiğinden, iki mesaj kuyruğundan birini değiştirmeyi deneyebilirsiniz.


2

İki şeye bakmanızı öneririm: Tuz Madeni - http://docs.saltstack.com/topics/mine/ Tuz Olayları - http://docs.saltstack.com/topics/event/index.html

Sonuçları grafitte veya listelediğiniz diğer herhangi birinde saklamak için bunları kendi returner yapılandırma ayarlarınızla birleştirirseniz. Yukarıdan aşağıya 'problama' ve aşağıdan yukarıya 'olay' işlemek için Tuz kullanabilirsiniz. Böyle bir sistemin etkinliği hakkında yorum yapamazdım, ancak prensipte olasılık var gibi görünüyor.


Tuzun henüz fark edilmemiş özelliği, güvenli bir yıldız topolojisi olay veri yolu olmasıdır. Check_mk_agent'i çalıştırmak ve depolamak için tuz madeni kullanıyorum ve nagios sunucusundaki bir check_mk onu madenden çekiyor.
Dan Garthwaite

2

Tuz madeni ve check_mk aracılığıyla ana bilgisayar başına saniye başına nagios izleme yolculuğumun özetini burada: http://garthwaite.org/saltmine_check_mk_agent.html

Makale, çalışmasını sağlamak için haftalarca açık ve kapalı dolaşıyor. Çözümü özetleyeceğim:

Tüm minyonlar için özel bir check_mk modülü oluşturun:

#!/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')

Minyonun maden aralığını bir dakikaya ayarlayın:

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

İzleme sunucusunu tüm minionun check_mk_agent çıktısını tek bir json dosyasına çekecek şekilde yapılandırın, ardından check_mk'yi herhangi bir ağ sorgusu yerine bu dosyayı sorgulayacak şekilde yapılandırın. Tümü, izleme minionunda aşağıdaki komut dosyasıyla gerçekleştirildi:

#!/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)

Her dakika güncelleme:

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

Son olarak: /etc/check_mk/main.mk içindeki tüm nagios hedefleri için veri kaynağını değiştirin:

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

çok kötü mine_interval mayın_fonksiyonu başına global bir yapılandırma, bir dakika olarak ayarlanırsa iyi olmayabilir bazı ağır mayın fonksiyonları var.
jagguli
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.