본문으로 건너뛰기

5.2. APM 에서 SQL 을 눌러 바로 진단하기

트랜잭션 상세의 AI 쿼리 진단 버튼 — 프롬프트를 쓰지 않고 결과를 받는 길

느린 트랜잭션을 살펴보다 어느 SQL 이 지연을 일으키는지 알아냈을 때, 그 쿼리를 위젯에 옮겨 적을 필요가 없습니다. 버튼 하나로 넘깁니다.

이 장은 OPENMARU APM 에만 있는 길입니다. 다른 콘솔에는 없습니다.

어디에 있나​

APM 에서 SQL 진단으로 가는 길

워터폴에서 DB 를 호출한 구간에는 이름 옆에 SQL 버튼이 붙습니다. 누르면 그 스팬의 쿼리를 보여주는 다이얼로그가 열립니다.

다이얼로그가 보여주는 것​

SQL 쿼리 다이얼로그 — 매핑된 쿼리와 AI 쿼리 진단 버튼
칸내용
01 SQL 쿼리원본 쿼리 — 물음표(?) 자리표시자가 그대로
02 파라미터그 자리에 실제로 들어간 값
03 매핑된 쿼리값이 채워진 실행된 그대로의 쿼리
04 FETCH결과를 몇 번, 얼마 만에 가져왔나

제목 옆에 성공 / 실패 배지가 붙고, 실패했다면 오류 내용이 함께 나옵니다. 접속 정보와 걸린 시간도 표시됩니다.

각 칸에 복사 버튼이 있어 따로 복사할 수도 있습니다.

버튼을 누르면​

**AI 에 넘어가는 것은 매핑된 쿼리**입니다. 자리표시자가 아니라 실제 값이 들어간 쿼리라 실행 계획을 그대로 받아 올 수 있습니다.

화면이 프롬프트를 대신 만들어 줍니다. 대강 이런 내용입니다.

database 서버 connection_id=<DB 종류> 아래 쿼리를 analyze_slow_query 도구를 사용해 분석해줘 — Query : <매핑된 쿼리>

쿼리가 실패한 것이었다면 오류 메시지도 함께 넘어갑니다. 왜 실패했는지까지 봐 달라는 뜻입니다. 사용자가 따로 붙여 넣지 않아도 됩니다.

DB 종류(mysql·oracle·postgresql …)와 접속 대상은 다이얼로그가 보고 있던 접속 정보에서 자동으로 채웁니다.

눌렀을 때 화면 반응​

버튼이 순서대로 바뀝니다. 이 변화가 "접수됐다" 는 신호입니다.

버튼을 누르면 생기는 변화

동시에 화면 위에 "CogentAI 패널에서 결과를 확인하세요" 라는 알림이 잠깐 나옵니다.

SQL 다이얼로그는 닫히지 않습니다​

일부러 그렇게 만들었습니다. 요청을 보낸 뒤에도 쿼리를 계속 보면서 위젯의 답을 읽을 수 있습니다. 다 봤으면 닫기 나 X 로 직접 닫습니다.

위젯이 접혀 있었다면 알림을 보고 펼치십시오. 답은 이미 그 안에 도착해 있습니다.

결과로 무엇이 오나​

analyze_slow_query 가 하는 일이라 답변에는 대개 이런 것이 함께 옵니다.

  • 실행 계획 — 트리 모양 차트. 어느 단계가 비싼지 눈으로 짚을 수 있습니다
  • 느린 이유 — 인덱스를 쓰지 않았다, 전체 스캔이다 같은 해석
  • 고칠 방향 — 인덱스 후보, 쿼리 다시 쓰기

실행 계획 차트는 끌어서 옮기고 확대할 수 있습니다. 큰 계획은 화면을 벗어나므로 다루는 법을 실행 계획과 ERD 읽기에서 따로 다룹니다.

잘 안 될 때​

버튼이 아예 안 보인다​

두 가지 중 하나입니다.

  • APM 설정에서 CogentAI 연동이 꺼져 있다 — 관리자가 켜야 합니다
  • 내 계정에 권한이 없다 — 계정마다 사용 여부를 가릅니다

관리자에게 문의하십시오. 화면에서 켤 수 있는 것이 아닙니다.

"AI 위젯이 아직 준비되지 않았습니다"​

위젯이 다 준비되기 전에 눌렀을 때 나옵니다. 요청은 보내지 않습니다. 아무 반응 없이 끝나는 것보다 알려 주는 편이 낫기 때문입니다.

잠깐 기다렸다 다시 누르십시오. 계속 같으면 화면을 새로 고칩니다.

눌렀는데 답이 안 온다​

위젯을 펼쳐 보십시오. 접힌 상태라도 답은 그 안에 들어옵니다. 그래도 없으면 잘 안 될 때를 보십시오.

이 길이 편한 이유​

같은 일을 자유 질문으로 하려면 쿼리를 복사해 붙이고, DB 종류를 적고, 도구 이름을 적어야 합니다. 버튼은 그 셋을 대신합니다.

버튼손으로
쿼리매핑된 쿼리를 자동으로복사·붙여넣기
DB 종류접속 정보에서 자동직접 적기
오류 메시지있으면 자동 포함따로 붙이기

옮겨 적는 사이에 값이 틀어질 일이 없다는 것이 가장 큰 차이입니다.

다음으로​