Sentinela는 사전 구성된 규칙에 따라 조치를 취할 수 있는 고도로 구성 가능한 운영 체제 감시 장치입니다.
초기 동기는 일련의 로그 파일을 모니터링하고 활동이 없으면 운영 체제를 종료하는 데몬을 만드는 것이었습니다. 이는 지정된 유휴 시간 후에 ec2 인스턴스가 종료되었는지 확인하는 데 매우 유용했습니다.
Sentinela의 모듈식 특성을 고려하면 이를 확장하여 네트워크 트래픽, 프로세스, 디스크 사용량 등을 모니터링하고 이메일 보내기, SNMP 경고 보내기 등과 같은 작업을 실행할 수도 있습니다.
Sentinela는 config/sentinela.cfg
파일을 사용하여 구성되었으며, 이를 통해 실행될 규칙을 활성화할 수 있습니다.
규칙은 Python 코드로 정의되며 rules/
디렉터리에 있습니다. 대부분의 경우 규칙은 두 가지 다른 유형의 모듈을 사용합니다. * modules/monitors/
: 1분마다 한 번씩 리소스를 읽고 상태를 저장합니다. 필요한 경우 True
반환하여 작업을 트리거합니다. * modules/actions/
: 액션은 명령을 실행하고 이메일이나 상상할 수 있는 다른 Python 정의 코드를 보냅니다.
sentinela를 시작하려면 다음을 실행해야 합니다: text sudo python sentinela.py
/var/log/sentinela.log
파일을 읽어 모든 sentinela 작업을 모니터링할 수 있습니다. 일반 sentinela 로그 파일은 다음과 같습니다.
[2013-03-29 11:41:20,440][INFO] 성공적으로 시작되었습니다 [2013-03-29 11:41:20,441][DEBUG] 가져온 규칙.apache_shutdown [2013-03-29 12:51:50,480][DEBUG] 센티넬라가 살아있습니다 ... [2013-03-29 12:58:34,009][DEBUG] "shutdown now -h" 명령을 실행하려고 합니다.
자신만의 규칙을 만드는 것은 쉽습니다. /var/log/apache2/access.log
로그 파일이 10분 동안 비활성화될 때 sentinela의 로그 파일에 모니터 이름을 인쇄하는 규칙을 만들고 싶다고 가정해 보겠습니다. 코드는 다음과 같습니다:
1: module.monitors.new_log_entries에서 NewLogEntries 가져오기 2: module.actions.debug_print에서 DebugPrint 가져오기 3: 4: apache_log = NewLogEntries('/var/log/apache2/access.log', 10) 5: debug_print = DebugPrint() 6: 7: 8: def call_every_분(): 9: apache_log.call_every_ Minute()인 경우: 10: debug_print.do(apache_log)
공통 규칙에는 모니터와 작업(이 경우 NewLogEntries
및 DebugPrint
(라인 1 및 2))이 있습니다.
상태를 유지하려면 둘 다 모듈 수준(라인 4 및 5)에서 인스턴스화되어야 합니다. call_every_minute
Minute 내부에 모니터 또는 작업 인스턴스를 생성하면 매번 새 인스턴스가 생성되고 상태가 유지되지 않습니다.
모니터와 작업에는 매개변수가 있을 수 있습니다. 이 4행에서는 NewLogEntries
모니터가 두 개의 매개변수를 사용하는 방법을 확인합니다.
True
반환할 때까지 대기하는 비활성 시간은 몇 분입니까? 규칙이 유효하려면 call_every_minute
함수(8행)를 정의해야 합니다. 이름에서 알 수 있듯이 이 함수는 sentinela에 의해 매분 호출됩니다. 이 컨텍스트에서 실행할 작업을 정의할 수 있지만 모니터의 call_every_minute
메서드를 호출하기로 결정하고 반환 값에 따라 apache_log
인스턴스를 매개변수로 사용하여 작업을 호출합니다.
apache_log.call_every_minute()
매개변수로 전달된 파일에 10분 이내에 새 항목이 없는 경우에만 True
반환합니다.
debug_print.do
매개변수로 전달된 모니터의 이름을 인쇄합니다.
자신만의 규칙을 만든 후에는 다음 단계에 따라 규칙을 실행해야 합니다.
.py
파일을 sentinela 설치의 rules/
디렉터리에 복사하세요.config/sentinela.cfg
업데이트하세요(확장자 제외).예제 규칙은 이 저장소의 sentinela/rules 디렉터리에서 찾을 수 있습니다.
새 규칙을 배포하기 전에 테스트하려면 다음 단계를 따르세요.
Sentinela의 문제 추적기에 문제와 기능 요청을 보고해 주시면 기꺼이 해결해 드리겠습니다.