>  기사  >  시스템 튜토리얼  >  Slack에서 발생하는 SQL 쿼리 모니터링

Slack에서 발생하는 SQL 쿼리 모니터링

WBOY
WBOY앞으로
2024-01-17 19:45:13511검색

Slack에서 발생하는 SQL 쿼리 모니터링

느린 쿼리, 예상치 못한 오류 및 기타 중요한 로그에 대한 알림을 받을 수 있는 간단한 Go 팁입니다.

내 Slack 봇이 장기 실행 SQL 쿼리에 대한 메시지를 표시했습니다. 최대한 빨리 고쳐야겠습니다.

측정할 수 없는 것은 관리할 수 없습니다. 모든 백엔드 애플리케이션은 데이터베이스 성능을 모니터링해야 합니다. 데이터 양이 증가함에 따라 특정 쿼리의 속도가 느려지는 경우 너무 느려지기 전에 쿼리를 최적화해야 합니다.

Slack이 업무의 중심이 되면서 시스템을 모니터링하는 방식도 바뀌고 있습니다. 이미 꽤 좋은 모니터링 도구가 있지만 Slack 봇이 시스템의 어떤 것이 추세를 벗어나는지 알려주도록 하는 것도 좋은 생각입니다. 예를 들어 SQL 쿼리를 완료하는 데 시간이 너무 오래 걸리거나 특정 Go 패키지에서 치명적인 오류가 발생합니다.

이 블로그 게시물에서는 이 목표를 달성하기 위해 이미 이러한 기능을 지원하는 간단한 로깅 시스템과 기존 데이터베이스 라이브러리를 설정하는 방법을 알려 드리겠습니다.

로거 사용

logger는 Go 라이브러리 및 애플리케이션에서 사용하도록 설계된 작은 라이브러리입니다. 이 예에서는 세 가지 중요한 기능을 사용합니다.

성능 측정을 위한 간단한 타이머를 제공합니다.
복잡한 출력 필터를 지원하므로 지정된 패키지에서 로그를 선택할 수 있습니다. 예를 들어, 데이터베이스 패킷에서만 출력하고 500ms보다 긴 타이머 로그만 출력하도록 로거에 지시할 수 있습니다.
Slack 후크가 있어 로그를 필터링하고 Slack에 공급할 수 있습니다.
이 예에서 타이머를 사용하는 방법을 살펴보겠습니다. 나중에 필터도 사용할 것입니다.

으아악

이 프로그램을 실행할 때 출력이 없습니다:

로거는 기본적으로 무음이므로 도서관 내부에서 사용할 수 있습니다. 간단히 환경 변수를 사용하여 로그를 봅니다. 예:

으아악

위의 예에서는 데이터베이스@timer 필터를 사용하여 데이터베이스 패키지의 타이머 로그 출력을 확인했습니다. 다음과 같은 다른 필터를 사용해 볼 수도 있습니다.

LOG=*: 모든 로그
LOG=users@error,database: 사용자의 모든 오류 로그, 데이터베이스의 모든 로그
LOG=*@timer,database@info: 모든 패키지의 타이머 로그 및 오류 로그, 데이터베이스의 모든 로그
LOG=*,users@mute: 사용자를 제외한 모든 로그

Slack에 로그 보내기

콘솔 로그는 개발 환경을 위한 로그이지만, 친숙한 인터페이스를 제공하기 위해서는 제품이 필요합니다. slack-hook 덕분에 위의 예에서 Slack을 사용하여 쉽게 통합할 수 있습니다.

으아악

위의 예에서 수행한 작업을 설명해 보겠습니다.

5번째 줄: 인바운드 웹훅 URL을 설정합니다. URL은 여기로 연결됩니다.
6행: 흐름 로그의 항목 채널을 선택합니다.
7행: 보낸 사람의 사용자 이름이 표시됩니다.
라인 #11: 스트림 필터를 사용하여 200ms보다 오래된 타이머 로그만 출력합니다.
이 예가 여러분에게 일반적인 아이디어를 제공할 수 있기를 바랍니다. 더 궁금한 점이 있으면 로거 설명서를 확인하세요.

실제 예: CRUD

crud는 Go 데이터베이스용 ORM 스타일 라이브러리입니다. 숨겨진 기능 중 하나는 내부 로깅 시스템이 로거를 사용한다는 것입니다. 이를 통해 실행 중인 SQL 쿼리를 쉽게 모니터링할 수 있습니다.

쿼리

다음은 특정 이메일에 대한 사용자 이름을 반환하는 간단한 쿼리입니다.

으아악

알겠습니다. 너무 짧아서 뭔가 빠진 것 같습니다. 전체 맥락을 추가해 보겠습니다.

으아악

환경 변수 DATABASE_URL을 통해 MySQL 데이터베이스에 연결된 crud 인스턴스가 있습니다. 이 프로그램을 실행하면 다음과 같은 출력 줄이 표시됩니다.

으아악

앞서 언급했듯이 로깅은 기본적으로 자동입니다. crud의 내부 로그를 살펴보겠습니다:

으아악

이것은 우리 개발 환경에서 쿼리가 어떻게 실행되는지를 이해하기에 간단하고 충분합니다.

CRUD 및 Slack 통합

Logger는 애플리케이션 수준 "내부 로깅 시스템"의 구성 관리를 위해 설계되었습니다. 이는 애플리케이션 수준에서 로거를 구성하여 crud 로그가 Slack으로 흐르도록 할 수 있음을 의미합니다.

으아악

위 코드에서:

로거 및 logger-slack-hook 라이브러리를 가져왔습니다.
Slack으로 흐르도록 로거 로그를 구성합니다. 이 구성에는 타사 종속성을 포함하여 코드 베이스의 로거 사용이 모두 포함됩니다.
우리는 MySQL 패키지에서 250ms보다 긴 타이머 로그만 출력하기 위해 스트림 필터를 사용했습니다.
이 사용법은 느린 쿼리 보고 이상으로 확장될 수 있습니다. 저는 개인적으로 특정 패키지의 중요한 오류를 추적하고 새로운 사용자 로그인이나 결제 생성 로그와 같은 통계를 위해 이를 사용합니다.

이 게시물에 언급된 팩

크러드

로거

로거-슬랙-훅

질문이나 제안사항이 있으면 알려주세요

위 내용은 Slack에서 발생하는 SQL 쿼리 모니터링의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 linuxprobe.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제