작업 워크로드 검사하기
작업 워크로드 검사하기 (Inspect job workloads)
Nomad 웹 UI를 통해 실행 중인 작업을 모니터링하고 디버깅하는 방법을 알아봐요. 작업 나열, 할당 검사, 로그 검토, 배포 모니터링 등을 다뤄요.
출처: 문서
본문
웹 UI는 Nomad에서 실행 중인 작업을 모니터링하고 디버깅할 때 강력한 동반자가 될 수 있어요. 웹 UI는 모든 작업을 나열하고, 작업을 할당에, 할당을 클라이언트 노드에, 클라이언트 노드를 드라이버 상태에 연결하는 등 많은 것을 해줘요.
작업 나열
웹 UI에서 도착하는 첫 페이지는 Jobs List 페이지예요. 여기에서 리전의 네임스페이스에 대한 모든 작업을 찾을 수 있어요. 작업 테이블은 검색, 정렬, 필터링이 가능해요. 테이블의 각 작업 행은 작업 이름, 상태, 유형, 우선순위 같은 기본 정보와 모든 할당 상태의 시각적 표현 같은 더 풍부한 정보를 보여줘요.
이 뷰는 작업이 제출되고, 제거되고, 상태가 변경될 때 실시간으로 갱신되기도 해요.
작업 뷰 필터링
Nomad 클러스터에 작업이 많다면, 특정 기준에 맞는 작업만 남도록 전체 목록을 필터링하는 것이 유용할 수 있어요. 웹 UI에는 필터링할 수 있는 네 가지 기준이 있어요.
- Type: 작업 유형으로, Batch, Parameterized, Periodic, Service, System을 포함해요.
- Status: 작업 상태로, Pending, Running, Dead를 포함해요.
- Datacenter: 작업이 실행 중인 데이터 센터로, 네임스페이스의 작업을 기반으로 동적으로 생성된 목록을 포함해요.
- Prefix: 작업의 가능한 공통 명명 접두사로, 작업 이름을
-,.,_의 첫 발생 지점까지 기반으로 동적으로 생성된 목록을 포함해요. 여러 작업과 일치하는 접두사만 포함돼요.
할당 검사
Nomad에서 할당은 스케줄링 가능한 작업 단위예요. 여기에서 런타임 메트릭이 표면화되기 시작해요. 할당은 하나 이상의 태스크로 구성되며, 태스크의 사용률 메트릭은 집계되어 할당 수준에서 관찰할 수 있어요.
리소스 사용률 모니터링
Nomad에는 태스크와 할당의 특정 시점 리소스 사용률 메트릭을 읽기 위한 API가 있어요. 웹 UI는 이 메트릭을 사용해 현재 세션에 대한 시계열 그래프를 만들어요.
할당을 볼 때 리소스 사용률은 자동으로 기록되기 시작해요.
태스크 이벤트 검토
Nomad가 태스크를 배치, 준비, 시작할 때, 태스크가 시작에 실패하는 경우 문제를 디버깅하는 데 도움이 되도록 일련의 태스크 이벤트가 내보내져요.
태스크 이벤트는 Task Detail 페이지에 나열되며 Nomad가 태스크 관리를 처리하면서 실시간으로 갱신돼요.
재스케줄된 할당 보기
할당은 작업 정의의 제약 조건을 충족하는 모든 클라이언트 노드에 배치돼요. 그러나 Nomad가 할당을 재스케줄링하게 하는 이벤트도 있어요(예: 노드 장애).
할당은 할당이 실패 상태로 끝나는 경우 작업 정의에서 재스케줄되도록 구성할 수 있어요. 이것은 태스크가 로컬 재시도 횟수를 소진한 후에 발생해요.
이 자동 프로세스의 최종 결과는 실패한 할당과 그 실패한 할당의 재스케줄된 후속 할당이에요. Nomad가 이 모든 것을 자동으로 처리하므로, 웹 UI는 아이콘과 재스케줄 체인의 이전·다음 할당 연결을 통해 할당 상태를 설명해요.
비정상 드라이버
장기 실행 프로세스의 특성상, 할당이 스케줄링된 클라이언트 노드의 상태는 할당 수명 동안 변경될 수 있어요. Nomad는 드라이버 상태를 포함한 관련 조건을 모니터링하려고 시도해요.
웹 UI는 할당이 의존하는 드라이버가 할당이 실행 중인 클라이언트 노드에서 비정상일 때 이를 표시해요.
선점된 할당
Nomad가 할당을 자동으로 재스케줄링하는 것처럼, Nomad는 필요할 때 할당을 자동으로 선점하기도 해요. Nomad에서 할당을 모니터링할 때 어떤 할당이 선점되었고 어떤 작업이 선점을 유발했는지 아는 것이 유용해요.
웹 UI는 어떤 할당이 할당을 선점했는지 그리고 반대로 할당이 어떤 할당을 선점했는지 보여줌으로써 이 전체 이야기를 전달해요. 이를 통해 작업에서 선점된 할당으로, 선점을 유발한 할당으로, 선점한 할당의 작업으로 내려갈 수 있어요.
태스크 로그 검토
태스크는 일반적으로 stdout과 stderr로 로그 정보를 내보내요. Nomad는 이 로그를 캡처해 API를 통해 노출해요. 웹 UI는 이 API를 사용해 브라우저에서 head, tail, 스트리밍 로그를 제공해요.
웹 UI는 먼저 태스크가 실행 중인 클라이언트 노드에 직접 연결을 시도해요. 일반적으로 클라이언트 노드는 공개 인터넷에서 접근할 수 없어요. 그런 경우 웹 UI는 기능 손실 없이 서버 노드에서 클라이언트 노드로 프록시하는 방식으로 폴백해요.
모든 브라우저가 스트리밍 HTTP 요청을 지원하는 것은 아니에요. 스트리밍이 지원되지 않는 경우에도 로그는 간격 폴링을 사용해 계속 따라가요.
할당 또는 태스크 재시작/중지
Nomad는 개별 할당과 태스크를 재시작하고 중지하는 것을 허용해요. 태스크가 재시작되면 Nomad는 태스크의 로컬 재시작을 수행해요. 할당이 중지되면 Nomad는 할당을 완료로 표시하고 다른 클라이언트 노드로 재스케줄링을 수행해요.
이 두 기능 모두 웹 UI에서도 사용할 수 있어요.
주기적 인스턴스 강제 실행
주기적(periodic) 작업은 cron 작업처럼 구성돼요. 때로는 다음 예정된 실행 시간 전에 작업을 시작하고 싶을 수 있어요. Nomad는 이를 주기적 강제 실행(periodic force)이라고 부르며, 주기적 작업의 Job Overview 페이지에서 웹 UI로 수행할 수 있어요.
작업의 새 버전 제출
Job Definition 페이지에서 작업을 편집할 수 있어요. 코드 창 오른쪽 위의 Edit 버튼을 클릭하면 작업 정의 JSON이 편집 가능해져요. 그런 다음 편집 내용을 계획(plan)하고 스케줄링할 수 있어요.
네임스페이스의 각 작업은 고유한 이름을 가져야 하므로, Run Job 화면에서 작업의 새 버전을 제출할 수 있어요. 항상 계획 출력을 검토해요.
배포 모니터링
시스템 또는 서비스 작업이 update 스탠자를 포함하면 작업 제출 시 배포가 생성돼요. 작업 배포는 웹 UI에서 실시간으로 모니터링할 수 있어요.
웹 UI는 새 할당이 배치될 때 이를 보여주고, 기대 총계를 향해 집계하며, 할당이 정상 또는 비정상이 됨에 따라 집계해요.
선택적으로 작업은 카나리 배포를 사용해 전체 롤아웃 전에 추가 건강 검사나 수동 테스트를 허용할 수 있어요. 작업이 카나리를 사용하고 카나리를 자동으로 승격하도록 구성되지 않은 경우, 웹 UI의 Job Overview 페이지에서 카나리 승격 작업을 수행할 수 있어요.
작업 중지
작업은 Job Overview 페이지에서 중지할 수 있어요. 작업을 중지하면 모든 할당이 정상적으로 중지되어 완료로 표시되고 클러스터의 리소스가 해제돼요.
탐색 계속하기
Nomad UI를 통해 작업으로 수행할 수 있는 작업을 살펴봤으니, 다음으로는 Nomad UI를 사용해 클러스터 상태를 검사하는 방법을 배우게 돼요.