Salt (Saltstack) có thể thu thập và chuyển tiếp dữ liệu cho Graphite, Ganglia hoặc Zenoss không?


11

Tôi đang bắt đầu một dự án mới và xem xét sử dụng Ansible hoặc Salt để tự động hóa triển khai và, có lẽ, phối hợp tinh vi hơn (quản lý máy chủ và liên đoàn).

Với Salt, tôi tự hỏi liệu có sự tích hợp nào giữa nó và Graphite hoặc Zenoss hoặc Ganglia ... bằng cách sử dụng các kết nối Salt 0mq để chuyển dữ liệu từ "tay sai" của Salt sang cơ sở dữ liệu / bộ sưu tập theo dõi / đồ thị.

Có ai khác nhìn vào điều này?


Bạn có thể giải thích những gì bạn đang muốn làm chi tiết hơn không? Bạn cần loại thẩm vấn nào?
jamieb

3
Có một dự án mới có tên Salmon nhằm mục đích trở thành một hệ thống giám sát toàn diện sử dụng Salt làm cơ chế thu thập dữ liệu và truyền tải thông điệp. Nó sử dụng Whisper làm cơ sở dữ liệu của nó, vì vậy bạn có thể hình dung tích hợp nó vào Graphite nếu bạn thực sự muốn.
jgoldschrafe

Câu trả lời:


9

tôi đã sử dụng ngăn xếp muối trong hơn 6 tháng nay để quản lý hơn 40 nút.

trong thiết lập hiện tại của tôi, tôi sử dụng:

  • Icinga là máy chủ giám sát
  • NRPE để thực hiện kiểm tra trên các Nút
  • than chì thu thập dữ liệu từ các nút colld
  • thu thập để thu thập và đẩy số liệu vào than chì
  • gdash cho một Bảng điều khiển đẹp để trực quan hóa các số liệu grahite
  • ngăn xếp muối và cuối cùng là ngăn xếp muối để đưa ra các cấu hình cho NRPE / Sưu tập trên mỗi nút

als này chạy theo CentOS 6.x

kinh nghiệm của tôi cho đến nay là ngăn xếp muối là tốt để ghi danh mọi thứ. Nhưng khi chạy Daemon lâu dài trên các nút, nó không ổn định.

tôi thường gặp vấn đề với việc không đạt được chủ hoặc bộ nhớ đầy trên tay sai. Điều này có thể được khắc phục với và cách giải quyết dễ dàng mà bạn khởi động lại cứ sau 24 giờ / lần truy cập các minion muối.

nhưng vấn đề này trong minion muối khiến cho việc thu thập dữ liệu qua Khung 0mq không thể sử dụng được.

thiết lập hiện tại của tôi chạy an toàn. Tôi có thể đăng ký thay đổi khá nhanh chóng với stack-salt và colld trên các nút thực hiện thủ thuật.


Tôi không muốn nâng cao điều này, nhưng sự trung thực và kiên quyết buộc tôi phải làm điều đó. Họ chắc chắn nhận thức được khả năng tuyệt vời của việc cung cấp một phương tiện giao thông tổng quát cho các số liệu. Tôi đã thực hiện một số điều này thông qua mỏ muối.
Dan Garthwaite

Tại sao colld trên [py] statsd?
Dan Garthwaite

4

Tôi nghĩ rằng Salt hoặc Ansible không được tạo ra cho nhiệm vụ đó và tôi nghĩ rằng chúng không thể được sử dụng cho mục đích đó.

Tôi đang sử dụng Salt trong vài tháng và tôi không nhận thấy các tùy chọn chức năng bạn muốn (trong cấu hình cũng như tài liệu). Nhưng tôi nghĩ bạn có thể "thêm" các yêu cầu của mình vì Salt được viết bằng python - nếu đó là một tùy chọn.

Cách dễ nhất là đặt mua muối để cài đặt colld có thể thu thập dữ liệu về hệ thống (và có các đầu nối với than chì)

EDIT: Tôi đã tìm thấy một dự án thực hiện giám sát bằng cách sử dụng muối - cá hồi - hãy xem.


colld cũng là suy nghĩ đầu tiên của tôi.
J Adams

màn hình muối không được duy trì github.com/thatch45/salt-monitor
Itai Frenkel

3

Bạn có thể muốn xem qua Sensu , đây là một giải pháp giám sát có thể cắm được với rất nhiều plugin cộng đồng, bao gồm cả than chì trong số các plugin khác.

Tuy nhiên Sensu sử dụng một hàng đợi nhắn tin khác để gửi tin nhắn, RabbitMQ . Có thể một số công việc mã hóa là cần thiết, nhưng bạn có thể thử thay thế một trong hai hàng đợi nhắn tin, vì cả hai nên sử dụng giao thức AMQ để trao đổi tin nhắn.


2

Tôi khuyên bạn nên xem xét hai điều: Mỏ muối - http://docs.saltstack.com/topics/mine/ Sự kiện muối - http://docs.saltstack.com/topics/event/index.html

Nếu bạn kết hợp những thứ này với thiết lập cấu hình bộ hoàn trả của riêng bạn để lưu trữ kết quả bằng than chì hoặc bất kỳ thứ nào khác mà bạn đã liệt kê. Bạn có thể hình dung sử dụng Muối để xử lý 'thăm dò' và từ dưới lên 'sự kiện'. Tôi sẽ không thể nhận xét về hiệu quả của một hệ thống như vậy, nhưng về nguyên tắc dường như có khả năng.


Tính năng chưa được thực hiện của muối là nó là một xe buýt sự kiện cấu trúc liên kết sao an toàn. Tôi sử dụng mỏ muối để chạy và lưu trữ check_mk_agent và một check_mk trên máy chủ nagios kéo nó từ mỏ.
Dan Garthwaite

2

Tôi đã phác thảo hành trình của mình để theo dõi nagios phụ thứ hai trên mỗi máy chủ lưu trữ thông qua mỏ muối và check_mk tại đây: http://garthwaite.org/saltmine_check_mk_agent.html

Bài báo đi qua nhiều tuần và tắt mày mò để làm cho tất cả hoạt động. Tôi sẽ tóm tắt giải pháp:

Tạo mô-đun check_mk tùy chỉnh cho tất cả các tay sai:

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

Đặt khoảng thời gian khai thác của minion thành một phút:

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

Định cấu hình máy chủ giám sát để kéo tất cả đầu ra check_mk_agent của minion vào một tệp json duy nhất, sau đó định cấu hình check_mk để truy vấn tệp đó thay vì bất kỳ truy vấn mạng nào. Tất cả được thực hiện với đoạn script sau trên minion giám sát:

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

Cập nhật mỗi phút:

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

Cuối cùng: Thay đổi nguồn dữ liệu cho tất cả các mục tiêu nagios trong /etc/check_mk/main.mk:

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

quá tệ mine_interval là một cấu hình toàn cầu không phải trên mỗi mine_feft, tôi có một số chức năng khai thác nặng có thể không hoạt động tốt nếu được đặt thành một phút.
jagguli
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.