이벤트 기반(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
Read More

SaltStack 속도

SaltStack에서 속도는 부산물이 아니라 디자인 목표입니다. SaltStack은 원격 실행 엔진을 위한 기반을 제공하기 위해 매우 빠르고 가벼운 통신…
Read More

Agentless Salt – 연결

Salt SSH가 연결 세부 정보를 저장하고 에이전트 없는 시스템에 연결하는 방법을 알아보겠습니다. 로스터 파일 기본적으로 Salt는 YAML 파일을…