AI 에이전트 원인 분석
"어제 오후에 응답시간이 왜 튀었나"라는 질문에 답하려면 지표에서 이상 구간을 찾고, JENNIFER의 판정을 확인하고, 애플리케이션과 트랜잭션으로 범위를 좁혀, 마지막에 프로파일에서 느린 SQL이나 외부 호출을 찾아야 합니다. 쿼리 명령어로 할 수 있지만 단계마다 앞 결과를 보고 다음 쿼리를 써야 해서 손이 많이 갑니다.
AI 에이전트 앱의 JENNIFER 성능 이상 원인 분석 템플릿은 이 과정을 에이전트에게 맡깁니다. 질문을 하나 하면 에이전트가 콘솔 쿼리 명령어를 차례로 실행해 원인을 좁히고, 근본 원인을 근거와 함께 보고합니다.
사전 준비
- 콘솔 설정 - 제니퍼 APM 앱 1.1.2610.0 이상과
JENNIFER 콘솔접속 프로파일이 있어야 합니다. 설치 매뉴얼의 콘솔 설정을 끝내고, 쿼리 화면에서jennifer-instances가 결과를 내는지 먼저 확인하세요 - AI 에이전트 앱 - 에이전틱 SOC 또는 AI 어시스턴트 앱이 설치되어 있고, LLM 접속 프로파일이 등록되어 있어야 합니다. 두 앱 모두 이 템플릿을 포함합니다
Note
템플릿 카탈로그에 JENNIFER 성능 이상 원인 분석이 없으면 AI 에이전트 앱을 최신 버전으로 업데이트하세요.
템플릿 설치
- AI 에이전트 메뉴 > 에이전트 탭에서 템플릿을 클릭합니다
- JENNIFER 성능 이상 원인 분석 카드를 찾습니다. 카드의 필요한 앱에 제니퍼 APM 1.1.2610.0 이상이 표시되며, 설치되어 있지 않거나 버전이 낮으면 경고가 나옵니다
- 설치를 누르면 템플릿이 내 에이전트로 복사됩니다. 세션 언어(한국어, 영어, 일본어)에 맞는 지시문으로 설치됩니다
설치한 에이전트는 자유롭게 고칠 수 있습니다. 템플릿이 나중에 갱신되어도 설치한 에이전트는 바뀌지 않습니다.
Tip
JENNIFER 콘솔 프로파일이 여럿이면 설치한 에이전트의 쿼리 명령어 탭에서 jennifer- 명령어마다 쓸 프로파일을 지정해 두면, 질문할 때마다 콘솔을 밝히지 않아도 됩니다.
에이전트가 하는 일
입력
| 입력 | 필수 | 내용 |
|---|---|---|
| 분석 요청 | 필수 | 무엇이 언제 이상했는지 자연어로 씁니다 |
| 도메인 ID | 선택 | 분석할 도메인. 주지 않으면 에이전트가 도메인 목록을 보고 정합니다 |
| 분석 시작 | 선택 | 분석 구간의 시작, yyyyMMddHHmmss |
| 분석 끝 | 선택 | 분석 구간의 끝, yyyyMMddHHmmss |
채팅에서는 입력값을 따로 채울 필요 없이 질문 안에 함께 쓰면 됩니다.
절차
에이전트는 쿼리 명령어의 원인 분석 흐름을 따릅니다. 앞 단계의 결과가 다음 단계의 기간, 인스턴스, 애플리케이션을 정합니다.
| 단계 | 명령어 | 에이전트가 하는 일 |
|---|---|---|
| 1. 대상 | jennifer-instances | 도메인과 인스턴스를 확인합니다. 재시작으로 ID가 바뀐 인스턴스도 가려냅니다 |
| 2. 감지 | jennifer-metrics | 분석 구간과 그 앞의 기준 구간(보통 하루)을 비교해, 어느 지표가 언제 어느 인스턴스에서 기준을 벗어났는지 z-score로 찾습니다 |
| 3. 판정 | jennifer-problems | 같은 구간에 JENNIFER가 판정한 문제와 감지 결과가 맞는지 봅니다 |
| 4. 범위 | jennifer-app-summary, jennifer-errors | 이상 구간과 기준 구간의 애플리케이션을 비교해 원인 애플리케이션을 좁히고, 에러가 늘었으면 유형별 건수를 봅니다 |
| 5. 증거 | jennifer-xview | 이상 구간의 느리거나 실패한 트랜잭션을 나열하고 시간이 SQL, 외부 호출, CPU 중 어디에 쓰였는지 봅니다 |
| 6. 원인 | jennifer-profile | 대표 트랜잭션 1~3건의 프로파일을 열어 가장 오래 걸린 SQL, 외부 호출, 메서드를 찾습니다 |
| 7. 결론 | - | 원인 가설을 근거, 확신 수준, 추가로 확인할 점과 함께 정리합니다 |
예상과 다른 결과가 나오면 가설을 바꾸고 앞 단계로 돌아갑니다. 이상이 없으면 없다고 보고합니다.
지키는 규칙
- 조회만 합니다. 콘솔 설정, 이벤트, 패턴 등 어떤 것도 바꾸지 않습니다. 템플릿이 허용하는 도구도 콘솔 조회 명령어 7개와
join뿐입니다 - 수치, 시각, txid는 실제 명령 결과에서만 인용하고, 결과로 확인하지 않은 추론은 가설로 표시합니다
jennifer-xview는 문제 전후 몇 분으로 짧게 조회하고, 바쁜 구간은 응답시간이나 에러 조건으로 줄입니다. 결과가 잘렸으면 그렇게 밝히고 기간을 좁혀 다시 봅니다- 명령어별 최대 기간(
jennifer-xview,jennifer-problems,jennifer-app-summary는 1일,jennifer-metrics,jennifer-errors는 31일)을 넘기지 않습니다 - 프로파일이 여럿이면 하나를 골라 씁니다
- 병목을 특정하지 못했으면 어디까지 좁혔는지와 막힌 이유를 씁니다
출력
| 출력 | 내용 |
|---|---|
| 이상 현상 | 어떤 지표가 언제, 어느 인스턴스에서 얼마나 벗어났는지 |
| 근본 원인 | 원인 애플리케이션과 구체적인 병목(SQL 문, 외부 호출 대상, 메서드) |
| 근거 | 지표 수치, 시각, 애플리케이션, 근거 트랜잭션의 txid |
| 확신 수준 | high, medium, low |
| 추가 확인 사항 | 결론을 굳히려면 더 봐야 할 것(선택) |
| 요약 | 위 내용을 짧게 정리한 것 |
에이전트는 한 번 실행에 최대 40턴, 900초(15분) 안에 끝나도록 설정되어 있습니다.
실행
- 채팅 메뉴에서 새 채팅을 클릭합니다
- 상단에서 설치한 JENNIFER 성능 이상 원인 분석 에이전트를 고릅니다
- 질문을 보냅니다
에이전트 목록의 테스트 실행으로 입력값을 하나씩 넣어 실행해 볼 수도 있습니다.
질문 예시
- 어제 14시부터 15시 사이에 응답시간이 튄 원인을 찾아 줘
- 도메인 1000에서 최근 1시간 동안 에러가 늘어난 이유가 뭐야?
- 오늘 오전 10시 전후로 /api/orders가 느렸는데 원인을 분석해 줘
- 최근 30분 동안 평소와 다르게 움직인 인스턴스가 있는지 확인해 줘
- jennifer-prod 프로파일의 도메인 1000에서 20261027030000부터 20261027040000까지 무슨 일이 있었는지 분석해 줘
시각과 도메인을 구체적으로 줄수록 에이전트가 기준 구간과 분석 구간을 정확히 잡습니다.
결과 읽기
실행이 끝나면 답변에 위의 출력 항목이 정리되어 나옵니다. 에이전트가 시계열을 차트로 그려 답변에 넣기도 합니다.
- 근거부터 읽습니다. 수치와 txid가 실제 명령 결과에서 나온 것이므로, 근거가 결론을 받쳐 주는지가 결론의 신뢰도를 정합니다
- 확신 수준이 low나 medium이면 추가 확인 사항을 보고 사람이 이어서 확인합니다
- 실행 카드를 클릭하면 턴마다 어떤 쿼리를 실행하고 무엇을 받았는지 볼 수 있습니다. 쿼리를 복사해 쿼리 화면에서 다시 돌리거나 기간을 바꿔 볼 수 있습니다
- 근거의 txid는 콘솔 화면에서도 확인할 수 있습니다. 분석 > X-View에서 그 시각을 조회해 트랜잭션을 열면 에이전트가 읽은 프로파일을 화면으로 볼 수 있습니다
주의점
- 읽기 전용입니다. 에이전트는 원인을 보고할 뿐 조치하지 않습니다. 설정 변경이나 재시작은 사람이 판단해 실행합니다
- 기간 제한 - 한 번에 읽을 수 있는 기간이 명령어마다 정해져 있어, 몇 주에 걸친 추세보다는 특정 장애 구간의 원인 분석에 맞습니다. 긴 추세는 통계 화면을 쓰세요
- 프로파일이 여럿이면 지정하세요.
domain_id는 콘솔마다 다르므로, 질문에 프로파일 이름을 쓰거나 에이전트의 쿼리 명령어 탭에서 프로파일을 고정합니다 - 실행 권한 - 에이전트는 소유자의 권한으로 실행되므로, 에이전트 소유자가 쓸 수 있는
JENNIFER 콘솔프로파일만 사용합니다 - 결론은 가설입니다. 에이전트는 JENNIFER가 수집한 데이터 안에서만 판단합니다. 프로파일되지 않은 코드, 데이터베이스 서버 내부, 네트워크 장비처럼 JENNIFER가 보지 못하는 곳의 원인은 범위까지만 좁혀질 수 있습니다
- 실행 시간이 제한을 넘거나 턴이 모자라면 실행이 실패합니다. 이때는 분석 구간이나 도메인을 좁혀 다시 질문합니다