사용자 정의 간격
개요
아이템을 체크하는 시간에 대해 사용자 정의 규칙을 만들 수 있습니다. 이를 위한 두 가지 방법은 기본 업데이트 간격을 재정의할 수 있는 Flexible intervals와, 아이템 체크를 특정 시간 또는 시간 시퀀스에 실행할 수 있는 Scheduling입니다.
Flexible intervals
Flexible intervals를 사용하면 특정 시간대에 대해 기본 업데이트 간격을 재정의할 수 있습니다. Flexible interval은 Interval과 Period로 정의되며, 각각의 의미는 다음과 같습니다.
- Interval - 지정된 시간대의 업데이트 간격입니다. Time suffixes를 지원하며, 예를 들어 30s, 1m, 2h, 1d와 같이 사용합니다.
- Period - flexible interval이 활성화되는 시간대입니다(Period 형식에 대한 자세한 설명은 time periods 참고).
여러 flexible interval이 겹치는 경우, 겹치는 기간에는 가장 작은 Interval 값이 사용됩니다. 겹치는 flexible interval 중 가장 작은 값이 '0'이면 폴링이 이루어지지 않습니다. flexible interval 이외의 시간에는 기본 업데이트 간격이 사용됩니다.
flexible interval이 period의 길이와 같으면 아이템은 정확히 한 번 체크됩니다. flexible interval이 period보다 크면 아이템이 한 번 체크될 수도 있고 전혀 체크되지 않을 수도 있습니다(따라서 이러한 구성은 권장하지 않습니다). flexible interval이 period보다 작으면 아이템은 최소 한 번 체크됩니다.
flexible interval이 '0'으로 설정되면 해당 flexible interval 기간 동안에는 아이템이 폴링되지 않으며, 기간이 끝나면 기본 Update interval에 따라 폴링이 재개됩니다. 예시:
| Interval | Period | 설명 |
|---|---|---|
| 10 | 1-5,09:00-18:00 | 업무 시간 동안 아이템이 10초마다 체크됩니다. |
| 0 | 1-7,00:00-7:00 | 야간에는 아이템이 체크되지 않습니다. |
| 0 | 7-7,00:00-24:00 | 일요일에는 아이템이 체크되지 않습니다. |
| 60 | 1-7,12:00-12:01 | 아이템이 매일 12:00에 체크됩니다. 이는 예약된 체크를 위한 우회 방법으로 사용된 것이며, 이러한 체크에는 scheduling interval을 사용하는 것을 권장합니다. |
Scheduling intervals
Scheduling interval은 특정 시간에 아이템을 체크하기 위해 사용됩니다. flexible interval이 기본 아이템 업데이트 간격을 재정의하도록 설계된 반면, scheduling interval은 별도로 병렬 실행되는 독립적인 체크 스케줄을 지정하는 데 사용됩니다.
scheduling interval은 다음과 같이 정의됩니다: md<filter>wd<filter>h<filter>m<filter>s<filter>
- md - 월별 일(month days)
- wd - 요일(week days)
- h - 시(hours)
- m - 분(minutes)
- s - 초(seconds)
<filter>는 해당 접두사(일, 시, 분, 초)에 대한 값을 지정하는 데 사용되며 다음과 같이 정의됩니다: [<from>[-<to>]][/<step>][,<filter>]
<from>과<to>는 일치하는 값의 범위(포함)를 정의합니다.<to>가 생략되면 필터는<from> - <from>범위와 일치합니다.<from>도 생략되면 필터는 가능한 모든 값과 일치합니다.<step>은 범위 내에서 숫자 값을 건너뛰는 간격을 정의합니다. 기본적으로<step>은 값 1을 가지며, 이는 정의된 범위의 모든 값이 일치함을 의미합니다.
filter 정의는 선택 사항이지만, 최소 하나의 filter는 사용되어야 합니다. filter에는 범위 또는 <step> 값 중 하나가 반드시 정의되어 있어야 합니다.
빈 filter는 하위 레벨 filter가 정의되어 있지 않으면 '0'과 일치하고, 그렇지 않으면 가능한 모든 값과 일치합니다. 예를 들어 hour filter가 생략된 경우, 분과 초 filter도 함께 생략되어 있다면 '0'시만 일치하며, 그렇지 않으면 빈 hour filter는 모든 시간 값과 일치합니다.
각 filter 접두사에 유효한 <from> 및 <to> 값은 다음과 같습니다.
| Prefix | 설명 | <from> | <to> |
|---|---|---|---|
| md | 월별 일 | 1-31 | 1-31 |
| wd | 요일 | 1-7 | 1-7 |
| h | 시 | 0-23 | 0-23 |
| m | 분 | 0-59 | 0-59 |
| s | 초 | 0-59 | 0-59 |
<from> 값은 <to> 값보다 작거나 같아야 합니다.
<step> 값은 1보다 크거나 같고 <to> - <from>보다 작거나 같아야 합니다.
한 자리 숫자의 월별 일, 시, 분, 초 값은 앞에 0을 붙일 수 있습니다.
예를 들어 md01-31과 h/02는 유효한 interval이지만, md01-031과 wd01-07은 유효하지 않습니다.
Zabbix frontend에서는 여러 scheduling interval을 각각 별도의 행에 입력합니다.
Zabbix API에서는 이들이 세미콜론 ;으로 구분되어 하나의 문자열로 연결됩니다.
어떤 시간이 여러 interval에 의해 일치하는 경우, 해당 시간에는 한 번만 실행됩니다.
예를 들어 wd1h9;h9는 월요일 9시에 한 번만 실행됩니다.
예시:
| Interval | 실행 시점 |
|---|---|
| m0-59 | 매분 |
| h9-17/2 | 9:00부터 시작해 2시간마다 (9:00, 11:00 ...) |
| m0,30 or m/30 | 매시 hh:00과 hh:30 |
| m0,5,10,15,20,25,30,35,40,45,50,55 or m/5 | 5분마다 |
| wd1-5h9 | 월요일부터 금요일까지 매일 9:00 |
| wd1-5h9-18 | 월요일부터 금요일까지 매일 9:00,10:00,...,18:00 |
| h9,10,11 or h9-11 | 매일 9:00, 10:00, 11:00 |
| md1h9m30 | 매월 1일 9:30 |
| md1wd1h9m30 | 매월 1일이 월요일인 경우 9:30 |
| h9m/30 | 매일 9:00, 9:30 |
| h9m0-59/30 | 매일 9:00, 9:30 |
| h9,10m/30 | 매일 9:00, 9:30, 10:00, 10:30 |
| h9-10m30 | 매일 9:30, 10:30 |
| h9m10-40/30 | 매일 9:10, 9:40 |
| h9,10m10-40/30 | 매일 9:10, 9:40, 10:10, 10:40 |
| h9-10m10-40/30 | 매일 9:10, 9:40, 10:10, 10:40 |
| h9m10-40 | 매일 9:10, 9:11, 9:12, ... 9:40 |
| h9m10-40/1 | 매일 9:10, 9:11, 9:12, ... 9:40 |
| h9-12,15 | 매일 9:00, 10:00, 11:00, 12:00, 15:00 |
| h9-12,15m0 | 매일 9:00, 10:00, 11:00, 12:00, 15:00 |
| h9-12,15m0s30 | 매일 9:00:30, 10:00:30, 11:00:30, 12:00:30, 15:00:30 |
| h9-12s30 | 매일 9:00:30, 9:01:30, 9:02:30 ... 12:58:30, 12:59:30 |
| h9m/30;h10 (API-specific syntax) | 매일 9:00, 9:30, 10:00 |
| h9m/30 h10 (add this as another row in frontend) |
매일 9:00, 9:30, 10:00 |
프록시 및 에이전트를 위한 시간대 정렬
Zabbix proxy와 agent는 scheduling interval을 처리할 때 각자의 로컬 시간대를 사용한다는 점에 유의하세요.
이러한 이유로, Zabbix proxy 또는 agent active item에 의해 모니터링되는 아이템에 scheduling interval을 적용할 때는 해당 proxy나 agent의 시간대를 Zabbix server와 동일하게 설정하는 것을 권장합니다. 그렇지 않으면 queue에서 아이템 지연이 잘못 보고될 수 있습니다.
Zabbix proxy 또는 agent의 시간대는 systemd unit 파일에서 환경 변수 TZ를 사용하여 설정할 수 있습니다.
[Service]
...
Environment="TZ=Europe/Amsterdam"