새 프로젝트를 시작하고 배포 자동화 및보다 정교한 오케스트레이션 (서버 관리 및 페더레이션)에 Ansible 또는 Salt 사용을 고려 하고 있습니다.
Salt를 사용하면 Salt 0mq 연결을 사용하여 Salt " minions "에서 모니터링 / 그래프 링 데이터베이스 / 수집기로 데이터를 릴레이하기 위해 Graphite 또는 Zenoss 또는 Ganglia 간에 통합이 있는지 궁금합니다 .
다른 사람이 이것을 보았습니까?
새 프로젝트를 시작하고 배포 자동화 및보다 정교한 오케스트레이션 (서버 관리 및 페더레이션)에 Ansible 또는 Salt 사용을 고려 하고 있습니다.
Salt를 사용하면 Salt 0mq 연결을 사용하여 Salt " minions "에서 모니터링 / 그래프 링 데이터베이스 / 수집기로 데이터를 릴레이하기 위해 Graphite 또는 Zenoss 또는 Ganglia 간에 통합이 있는지 궁금합니다 .
다른 사람이 이것을 보았습니까?
답변:
나는 6 개월 이상 동안 소금 스택을 사용하여 40 개 이상의 노드를 관리했습니다.
내 현재 설정에서 다음을 사용합니다.
als는 CentOS 6.x에서 실행됩니다.
지금까지 나의 경험은 소금 스택이 모든 것을 등록하기에 좋다는 것입니다. 그러나 노드에서 장기간 데몬을 실행하면 안정적이지 않습니다.
나는 소금 미니언에 대한 마스터 또는 메모리 팽창에 도달하지 못하는 데 종종 문제가 있습니다. 이것은 소금 미니언을 일주일에 24 시간마다 다시 시작하는 해결 방법으로 쉽게 해결할 수 있습니다.
그러나 salt-minion의이 문제로 인해 0mq Framework를 통해 데이터를 수집 할 수 없습니다.
현재 설정이 안전합니다. 솔트 스택으로 변경 사항을 매우 빠르게 등록 할 수 있으며 노드에서 수집하면 트릭을 수행합니다.
Salt 또는 Ansible은 해당 작업을 위해 생성되지 않았으며 해당 목적으로 사용할 수 없다고 생각합니다.
몇 달 동안 Salt를 사용하고 있으며 원하는 구성 옵션 (구성 또는 문서)에 대해서는 알지 못했습니다. 그러나 Salt가 파이썬으로 작성되었으므로 요구 사항을 "추가"할 수 있다고 생각합니다.
가장 쉬운 방법은 시스템에 대한 데이터를 수집 할 수있는 수집 된 설치용 소금을 주문 하는 것입니다 (그리고 흑연에 커넥터가 있음)
편집 : 소금- 연어를 사용하여 모니터링을 구현하는 프로젝트를 찾았습니다 .
소금 광산-http: //docs.saltstack.com/topics/mine/ 소금 사건 -http: //docs.saltstack.com/topics/event/index.html
이러한 결과를 자체 리턴 장치 구성 설정과 결합하여 결과를 흑연 또는 기타 나열된 결과로 저장하는 경우. 소금을 사용하여 하향식 '탐색'과 상향식 '이벤트'를 처리 할 수 있습니다. 그러한 시스템의 효과에 대해서는 언급 할 수 없지만 원칙적으로 가능성이있는 것 같습니다.
나는 소금 광산과 check_mk를 통해 호스트 당 초 당 nagios 모니터링으로의 여정을 설명했다 : 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')
미니언의 광산 간격을 1 분으로 설정하십시오.
salt '*' file.append /etc/salt/minion.d/mine.conf "mine_interval: 1"
모든 미니언의 check_mk_agent 출력을 단일 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에서 모든 nagios 대상의 데이터 소스를 변경하십시오.
datasource_programs = [
( '/etc/check_mk/mine_agent.py <HOST>', ['mine'], ALL_HOSTS ),
]