지금까지 솔트 관련 이벤트를 위해 이벤트 버스를 모니터링하는 방법과 몇 가지 추가 이벤트를 활성화하는 방법에 대해 알아봤습니다. 이 시점에서는 “Salt 이벤트를 실시간으로 모니터링하고 대응할 수 있는 동적 통신 인프라를 이미 설정했으므로 시스템 로그인, 디스크 사용량, 데이터베이스 서비스 등의 다른 사항도 모니터링할 수 있다면 더 좋을 것입니다.”라고 생각할 수 있습니다. (그렇지 않을 수도 있습니다.)
그 말들이든 아니든, 넌 운이 좋은 거야, 그게 바로 비콘이 하는 일이니까!
비콘을 사용하면 솔트와 관련이 없는 항목에 대해 이벤트를 모니터링하고 발생시킬 수 있습니다. 비콘 시스템은 미니언이 다양한 시스템 프로세스에 접속하고 이러한 프로세스를 지속적으로 모니터링할 수 있도록 합니다. 시스템 프로세스에서 모니터링되는 활동이 발생하면 소금 이벤트 버스를 통해 이벤트가 전송됩니다.
솔트 비콘은 현재 다음과 같은 많은 시스템 활동을 위해 솔트 이벤트를 모니터링하고 전송할 수 있습니다.
- 파일 시스템 변경사항
- 시스템 부하
- 근무 상태
- 셸 활동(예: 사용자 로그인)
- 네트워크 및 디스크 사용량
비콘 활성화
솔트 비콘은 모니터링 중인 시스템 프로세스를 변경할 필요가 없으며 모든 항목이 솔트를 사용하여 구성됩니다.
일반적으로 비콘은 미니언 구성 파일에 최상위 beacons 섹션을 배치하여 활성화합니다.
beacons: inotify: home/user/importantfile: mask: - modify
비콘 모니터링 간격
비콘은 기본적으로 1초 간격으로 모니터링됩니다. 다른 간격을 설정하려면 비콘에 간격 인수를 제공하십시오. 다음 비콘은 5초 및 10초 간격으로 실행됩니다.
beacons: inotify: /etc/httpd/conf.d: {} /opt: {} interval: 5 load: - 1m: - 0.0 - 2.0 - 5m: - 0.0 - 1.5 - 15m: - 0.1 - 1.0 - interval: 10
비콘이 구성된 후에는 다른 솔트 프로세스와 마찬가지로 이벤트를 트리거합니다.
이벤트 루프 방지
비콘 원자로가 비콘을 다시 트리거하는 변경을 할 수 있는 경우 disable_during_state_run 인수를 추가하여 True로 설정합니다.
beacons: inotify: home/user/importantfile: mask: - modify disable_during_state_run: True
대부분의 루프 조건과 마찬가지로, 이 루프 조건을 추가해야 할 때 어려운 방법을 알게 될 것입니다.
비콘 추가
우리는 파일에 변경 사항을 지켜보는 비콘을 추가할 것입니다. 이를 위해 inotify beacon과 python-pyinotify 패키지를 사용할 것입니다. 이 패키지는 저희 솔트 미니언 제품이 아니기 때문에 먼저 솔트를 사용해서 설치하겠습니다.
PYINOTIFY 설치 및 이벤트 러너 시작
salt-vagrant-demo 디렉터리에 대한 명령 프롬프트를 열고 마스터에 ssh:
vagrant ssh master
minion1에 python-pyinotify 패키지를 설치합니다.
sudo salt 'minion1' pkg.install python-pyinotify
다음과 유사한 출력이 표시됩니다.
vagrant@saltmaster:~$ sudo salt 'minion1' pkg.install python-pyinotify minion1: ---------- python-pyinotify: ---------- new: 0.9.4-1build1 old: python2.7-pyinotify: ---------- new: 1 old:
곧 이벤트를 생성할 예정이므로 Salt Master에 로그인한 상태로 이벤트 러너를 시작하십시오.
salt-run state.event pretty=True
터미널에서 실행 상태로 두고 계속 진행하십시오.
비콘 설정
salt-vagrant-demo 디렉토리에 대한 다른 명령 프롬프트를 열고 minion1에 ssh를 추가합니다.
vagrant ssh minion1
minion1에서 /etc/salt/minion 파일을 편집하고 하단에 다음 내용을 추가합니다.
beacons: inotify: /home/vagrant/importantfile: mask: - modify
파일을 저장한 다음 솔트 미니언 서비스를 다시 시작합니다.
sudo service salt-minion restart
이제 비콘이 저장되고 활성화됩니다. 다음으로, 변경 사항을 모니터링할 파일을 만들 수 있습니다. /home/vagrant/ 디렉토리에 importantfile을 작성합니다.
touch importantfile echo "some content" > importantfile
솔트 마스터로 돌아가서 다음과 유사한 이벤트를 선택했어야 합니다.
salt/beacon/minion1/inotify//home/vagrant/importantfile { "_stamp": "2016-02-03T22:32:09.592113", "data": { "change": "IN_MODIFY", "id": "minion1", "path": "/home/vagrant/importantfile" }, "tag": "salt/beacon/minion1/inotify//home/vagrant/importantfile" }
파일을 수정하기 전에 이벤트 러너를 시작해야 합니다. 그렇지 않으면 이벤트가 표시되지 않습니다(이벤트가 계속 트리거되므로 이벤트가 표시되지 않습니다).
이제 신호등도 작동되고 다른 솔트 이벤트도 생성되고 있으니 솔트 리액터를 사용하여 이 이벤트를 수행할 때입니다.
출처 : https://docs.saltproject.io/en/getstarted/event/beacons.html