이벤트 기반(Event-Driven) 인프라 – 비콘(beacon)

지금까지 솔트 관련 이벤트를 위해 이벤트 버스를 모니터링하는 방법과 몇 가지 추가 이벤트를 활성화하는 방법에 대해 알아봤습니다. 이 시점에서는 “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
답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

You May Also Like