그누보드5 운영지킴이 (Site Guardian)
사용 및 설치 설명서
플러그인 개요
운영지킴이는 그누보드5 / 영카트5 사이트에서 발생하는 PHP 오류·예외·DB 오류를 실시간으로 자동 감지해 데이터베이스에 기록하고, 운영자가 정의한 규칙에 따라 메일·SMS·카카오 알림톡으로 자동 발송하는 플러그인입니다. 그누보드 코어 파일을 수정하지 않고 extend/ 메커니즘만 사용하므로 그누보드 업데이트에 영향을 받지 않습니다.
· 운영지킴이는 SMS 알림을 그누보드 기본 SMS(아이코드)로 발송합니다. 별도 플러그인 없이 SMS 알림을 받을 수 있습니다.
· WizardOfCode의 '알리고 카카오알림톡 + SMS + 휴대폰 문자 인증 플러그인'이 설치되어 있으면, SMS는 아이코드 대신 알리고로 발송되며 카카오 알림톡 채널을 추가로 사용할 수 있습니다. (알림톡은 이 플러그인이 있어야만 동작)
· 이 기능은 해당 플러그인이 제공하는
AligoSMS · KakaoAlimtalk 클래스로 동작하며, 같은 알리고 API를 쓰더라도 다른 개발자의 플러그인은 클래스 구조가 달라 호환되지 않습니다.· 플러그인 없이 그누보드 기본 기능인 이메일·아이코드 SMS만으로도 모든 알림 기능을 정상 사용할 수 있습니다. (알림톡 채널만 제외)
그누보드의 기본 메일 발송(PHP
mail 함수)을 SMTP 인증 방식으로 안정화합니다. 운영지킴이의 알림 메일이 스팸 처리될 가능성을 줄여줍니다. 운영지킴이는 SMTP Manager 없이도 정상 동작하며, 필요한 경우에만 함께 사용하시면 됩니다.📦 다운로드: github.com/wizardofcode-labs/gnuboard5-smtp-manager/releases
주요 기능
| 분류 | 기능 | 설명 |
|---|---|---|
| 오류 캡처 | 4가지 PHP 오류 자동 감지 | 일반 에러(Notice/Warning/Deprecated) / 처리되지 않은 예외 / Fatal Error / DB 쿼리 오류 |
| 동일 오류 디바운싱 | 같은 해시로 반복 발생 시 row 하나에 카운트만 증가 (기본 30분 쿨다운) | |
| 개인정보 자동 마스킹 | 이메일·휴대폰·주민번호·카드·비밀번호·절대경로 자동 가림 | |
@ 연산자 억제 존중 |
사용자가 의도적으로 무시한 오류는 캡처하지 않음 | |
| 알림 발송 | 4가지 발송 모드 | 즉시 발송 / 일일 요약 / 주간 요약 / 시간대 제한 |
| 3가지 채널 | 이메일 (그누보드 mailer / SMTP Manager 자동 연동) · 알리고 SMS · 알리고 카카오 알림톡 | |
| 알림 규칙 엔진 | 등급·파일패턴·시간대 매칭 + 우선순위 정렬 + 중복 제거 정책 | |
| 규칙 매칭 추적 로그 ★ | "왜 알림이 왔지/안 왔지?" 9가지 결과 코드로 추적 가능 | |
| 비용 보호 | 비상 정지 스위치 | 의심 폭주 감지 시 즉시 모든 발송 차단 |
| 채널별 일일 한도 | 메일 500 / SMS 50 / 카톡 100건 (조정 가능, 0이면 차단) | |
| 야간 무음 | SMS / 카톡 기본 22~08시 차단 (메일은 정상) | |
| 동일 오류 쿨다운 | 같은 오류로 같은 수신자에게 30분 내 재발송 차단 | |
| 재진입 락 | 발송 함수 무한 루프 차단 | |
| 관리자 UI | 전용 메뉴 그룹 | 대시보드 / 오류 로그 / 알림 규칙 / 매칭 추적 / 수신자 / 발송 이력 / 테스트 / 환경설정 8개 메뉴 |
| 자동 데이터 정리 | 매칭 로그(7일) / 요약 큐(7~30일) / 해결된 오류 로그(30일) 자동 삭제 |
시스템 요구사항
| 항목 | 최소 | 권장 |
|---|---|---|
| 그누보드 버전 | 5.5.x | 5.6.x 이상 |
| PHP 버전 | 5.6 | 7.4 / 8.x |
| 데이터베이스 | MySQL 5.5 / MariaDB 10.x | MySQL 5.7+ / MariaDB 10.4+ |
| PHP 확장 | (mbstring 권장) | mbstring · iconv · curl |
| 메일 발송 | 그누보드 mailer (PHP mail) | SMTP Manager v1.0 (자동 연동) |
| SMS 발송 (선택) | 그누보드 기본(아이코드 SMS) | 알리고 SMS·알림톡 플러그인(알리고 발송) |
| 카카오 알림톡 (선택) | 알리고 알림톡 플러그인 필수 | 알리고 카톡 솔루션 + 비즈센터 사전 등록 템플릿 |
| 일일/주간 요약 cron (선택) | 방문자 트리거 (자동) | 호스팅 cron 또는 외부 웹 cron |
구성 파일
배포 패키지의 src/ 폴더 안에 아래 파일들이 포함되어 있습니다.
설치 전 확인사항
설치를 시작하기 전에 아래 항목을 모두 확인해 주세요.
- 그누보드5(5.5.x 이상)가 정상적으로 설치·운영 중인 상태입니다.
- 그누보드 관리자 계정(최고관리자)으로 로그인할 수 있습니다.
- FTP 접속 정보(호스트, 아이디, 비밀번호)를 알고 있습니다.
- PHP 버전이 5.6 이상입니다 (호스팅 패널에서 확인).
- 그누보드 관리자 → 환경설정 → "메일발송 사용"이 ON 상태입니다 (메일 채널 사용 시).
- 그누보드 관리자 → 환경설정 → "관리자 메일"에 메일 주소가 입력되어 있습니다 (cron 토큰 자동 생성 + 발신자 표시).
- SMS / 카톡을 쓸 경우, 알리고 솔루션이 별도 설치되어 있고 그누보드 환경설정에 인증 정보가 입력되어 있습니다.
mail() 폴백으로 발송됩니다.FTP 파일 업로드
FTP 클라이언트(FileZilla, Cyberduck 등)를 사용하여 파일을 서버에 업로드합니다. 파일을 올려야 할 위치는 그누보드가 설치된 루트 폴더를 기준으로 합니다.
index.php, common.php, config.php 등 그누보드 핵심 파일이 있는 폴더를 말합니다. 예: /home/user/public_html/① extend/ 폴더 업로드
extend/ 폴더는 그누보드의 자동 부트스트랩 메커니즘이 동작하는 폴더입니다. 운영지킴이의 진입점 파일 1개를 업로드합니다.
| 업로드할 파일 | 서버 업로드 위치 |
|---|---|
/extend/gb_guardian.extend.php |
그누보드루트/extend/gb_guardian.extend.php |
extend/ 폴더가 없는 경우 새로 생성한 후 파일을 업로드합니다. 그누보드 5.4 이상에서는 기본 포함되어 있습니다.② plugin/ 폴더 업로드
플러그인 핵심 파일들입니다. 서버의 plugin/ 폴더 안에 gb_guardian 폴더 전체를 업로드합니다.
| 업로드 대상 | 서버 업로드 위치 |
|---|---|
/plugin/gb_guardian/ 폴더 전체 |
그누보드루트/plugin/gb_guardian/ |
업로드 후 서버의 폴더 구조가 아래와 같은지 확인합니다.
③ adm/ 폴더 파일 업로드
관리자 페이지 파일 16개를 그누보드의 adm/ 폴더에 업로드합니다.
| 업로드 대상 | 서버 업로드 위치 |
|---|---|
/adm/guardian_*.php 16개 파일 |
그누보드루트/adm/ (각 파일 그대로 복사) |
adm/ 폴더에 새 파일을 추가하는 것이며, 기존 파일을 수정하거나 삭제하지 않습니다. 동일한 이름의 파일이 이미 존재하지는 않으나, 만일 충돌하면 원본 파일을 백업 후 진행하세요.설치 스크립트 실행
파일 업로드가 완료되면 브라우저에서 설치 스크립트를 실행합니다. 설치 과정에서 운영지킴이에 필요한 DB 구조가 자동 생성되며, 기존에 설치된 적이 있다면 불필요한 컬럼은 자동 제거(마이그레이션)됩니다.
yourdomain.com 부분을 실제 사이트 주소로 바꿔 주세요.
https://yourdomain.com/plugin/gb_guardian/install.php
[OK] 표시가 모든 컬럼·테이블에 보이고, 환경 점검 결과가 나타나면 정상 설치된 것입니다.CREATE TABLE IF NOT EXISTS + SHOW COLUMNS LIKE 사전 체크 패턴을 사용해 100회 재실행해도 안전합니다. 기존 설정값은 덮어쓰지 않고 유지됩니다.생성되는 DB 테이블
| 테이블명 (기본 prefix: g5_) | 용도 |
|---|---|
g5_guardian_log | 오류 로그 (등급/메시지/파일/라인/스택트레이스 + 발생 횟수 누적) |
g5_guardian_rule | 알림 규칙 (등급/패턴/모드/채널/수신자 등) |
g5_guardian_recipient | 수신자 (이름/이메일/휴대폰/활성 여부) |
g5_guardian_notify_log | 알림 발송 이력 (성공/실패/사유) |
g5_guardian_summary_queue | 일일/주간 요약 큐 (적재 → 시각 도달 시 발송 → 처리 완료 표시) |
g5_guardian_rule_match_log | ★ 규칙 매칭 추적 로그 (디버깅용, 7일 자동 삭제) |
추가되는 g5_config 컬럼
그누보드 환경설정 테이블에 cf_guardian_* 접두사로 환경 설정 컬럼 16개가 추가됩니다. 환경설정 화면에서 모두 GUI로 변경 가능합니다.
활성화 / 빠른 시작
설치 직후 운영지킴이는 비활성 상태(off) 입니다. 활성화 → 수신자 등록 → 첫 알림 규칙 등록까지 순서대로 진행하면 약 3분 안에 첫 알림을 받을 수 있습니다.
첫 알림 받기 (3분 가이드)
- 규칙명:
Fatal/Error 즉시 메일 - 등급: ☑ FATAL ☑ ERROR ☑ EXCEPTION 체크
- 모드: ⚡ 즉시 발송
- 채널: 📧 이메일
- 수신자: 위에서 등록한 수신자 체크
SMS / 카카오 알림톡 사용
알리고 SMS / 카톡 솔루션이 별도 설치되어 있어야 합니다. 솔루션 미설치 환경에서는 SMS/카톡 채널 발송이 자동으로 차단되며, 메일 채널은 정상 동작합니다.
cf_aligo_id, cf_aligo_key, cf_aligo_sender) 가 자동 사용됩니다.01012345678, 하이픈 자동 제거).plugin/gb_guardian/templates/kakao_default.txt 와 카카오 비즈센터 양쪽 모두 수정·재심사가 필요합니다.일일/주간 요약 메일 받기
- 방문자 트리거 (기본) — cron 사용 불가 환경. 사이트 방문자 트래픽으로 자동 트리거 (1% 확률 + 5분 가드).
- cron 직접 등록 — 호스팅 cron 가능 환경. 정확한 시각에 발송됨. 6절 참조.
cron 등록 (선택)
일일/주간 요약 메일을 정확한 시각에 받으려면 cron 등록을 권장합니다. cron 등록이 어려운 환경(저가 호스팅 등)에서는 환경설정에서 "방문자 트리거" 모드로 두면 사이트 방문자 트래픽에 묻혀 자동 실행됩니다.
방법 1 — SSH 접속 가능한 서버 (crontab)
SSH 접속 후 crontab -e 명령으로 다음 한 줄을 추가합니다.
*/10 * * * * /usr/bin/php /실제/경로/plugin/gb_guardian/batch/summary_cron.php
/usr/bin/php 는 호스팅마다 다를 수 있습니다. which php 로 확인하세요.방법 2 — 외부 웹 cron 서비스
cron-job.org, EasyCron 등 외부 cron 서비스에 다음 URL 을 5~10분 간격으로 호출하도록 등록합니다.
https://yourdomain.com/plugin/gb_guardian/batch/summary_cron.php?secret=발급된토큰
발급된토큰 부분은 환경설정 화면의 cron 가이드 박스에서 자동 표시되는 16자 토큰으로 교체하세요.
방법 3 — 호스팅 패널 (cPanel / Plesk / 가비아)
호스팅 관리 페이지에서 "cron / 예약 작업" 메뉴를 열고:
- 실행 주기: 10분마다 (
*/10 * * * *) - 명령어: 방법 1 또는 방법 2 의 URL/경로 사용
세부 등록 방식은 호스팅사마다 다르니 호스팅사 매뉴얼을 참고하세요.
알림 규칙 작성 가이드
알림 규칙은 매칭 조건 + 발송 설정 + 보호 설정 3개 영역으로 구성됩니다.
매칭 조건
| 항목 | 설명 |
|---|---|
| 오류 등급 | FATAL / ERROR / EXCEPTION / DB / WARNING / NOTICE / DEPRECATED 중 다중 선택. ALL 체크 시 모든 등급 매칭. 하나도 체크 안 하면 매칭 안 됨. |
| 파일 패턴 (선택) | SQL LIKE 스타일 패턴. % = 임의 문자(0개 이상), _ = 임의 한 글자.예: %bbs/write.php% (게시판 글쓰기 관련만), %shop/order% (영카트 주문 관련만). 비워두면 모든 파일 매칭. 정규식 메타문자는 자동 이스케이프되어 안전합니다. |
발송 설정 — 4가지 모드
| 모드 | schedule_time 형식 | 설명 |
|---|---|---|
| ⚡ 즉시 | (없음) | 오류 발생 즉시 발송. 가장 빠른 알림이 필요한 FATAL/ERROR 에 권장. |
| 📅 일일 요약 | HH:MM |
매일 지정 시각에 어제 오류 요약 메일. 채널은 항상 메일. 트래픽 많은 사이트의 WARNING/NOTICE 정리에 적합. |
| 📆 주간 요약 | D|HH:MM (D=1~7, ISO) |
매주 지정 요일/시각에 지난 7일 요약 메일. 1=월, 7=일. |
| ⏰ 시간대 제한 | HH-HH 또는 HH-HH,HH-HH |
지정 시간대에 발생한 오류만 즉시 발송. 예: 09-18 (업무 시간만), 22-08 (야간 비상연락만, 자정 걸침 가능). |
발송 설정 — 채널 / 수신자
- 채널 — 이메일 / SMS / 카카오 알림톡 중 1개 선택. 일일/주간 요약 모드는 자동으로 메일.
- 수신자 — 활성 수신자 중 다중 선택. 한 규칙에 여러 명 등록 가능.
보호 설정 / 우선순위
| 항목 | 설명 |
|---|---|
| 우선순위 (priority) | 1~100, 낮을수록 먼저 매칭. 같은 오류가 여러 규칙에 매칭될 때 처리 순서. |
| 동일 오류 쿨다운 | 같은 오류 해시 + 같은 수신자에게 이 시간 내 재발송 차단 (기본 30분). |
| 중복 제거 범위 | 규칙별 — 본 규칙 안에서만 dedup 전역 — 어떤 규칙이든 같은 오류·수신자에게 1회만 발송 (여러 규칙이 겹쳐도 알림 1통) |
권장 시작 규칙 세트
처음 사용하실 때 참고용 규칙 3개 예시:
| # | 규칙명 | 등급 | 모드 | 채널 |
|---|---|---|---|---|
| 1 | 치명적 오류 SMS | FATAL,ERROR | 즉시 | SMS |
| 2 | 예외/DB 오류 메일 | EXCEPTION,DB | 즉시 | 이메일 |
| 3 | 경고/노티스 일일 요약 | WARNING,NOTICE | 일일 요약 09:00 | 이메일 |
이 구성이면 비용 부담은 SMS 한 채널에만 집중되고(FATAL/ERROR 만), 보조 정보는 모두 메일로 정리됩니다.
비용 보호 시스템 ★
SMS / 카카오 알림톡은 건당 비용이 발생합니다. 운영지킴이는 비용 폭탄을 막기 위해 5중 보호 시스템을 기본 제공하며, 모든 발송이 8단계 검증을 통과해야 실제 발송됩니다.
발송 전 8단계 검증
- 운영지킴이 활성화 —
cf_guardian_use=1인지 - 비상 정지 스위치 — 비상 정지 OFF 상태인지
- 채널 사용 가능 — 어댑터 / 알리고 솔루션 / 클래스 존재 여부
- 수신자 활성 — 수신자 active=1 + 채널별 주소 보유
- 야간 무음 — SMS / 카톡만 적용. 메일은 통과
- 일일 한도 — 채널별 오늘 발송 건수 < 한도
- 동일 오류 쿨다운 — 30분 내 같은 해시·수신자로 성공 발송 안 함
- 재진입 락 — 같은 채널 동시 발송 차단
5중 보호 메커니즘 상세
| 보호 | 설정 위치 | 기본값 | 차단 케이스 |
|---|---|---|---|
| 🚨 비상 정지 | 환경설정의 빨간 박스 | OFF | ON 시 모든 채널 즉시 차단 |
| 📊 일일 한도 | 환경설정 (메일/SMS/카톡 별) | 500 / 50 / 100 | 오늘 N건 도달 시 차단. 0 으로 두면 완전 차단 |
| 🌙 야간 무음 | 환경설정 | 22~08시 (SMS/카톡) | 설정 시간대에 SMS/카톡 차단. 메일은 정상 |
| ⏱ 동일 오류 쿨다운 | 알림 규칙 등록 화면 | 30분 | 30분 내 같은 해시·수신자에게 성공 발송 안 함 |
| 🔒 재진입 락 | (자동, 사용자 설정 불가) | — | 같은 채널 동시 발송 차단 — 무한 루프 방지 |
비상 정지 사용법
의심 발송 폭주 / 알리고 비용 알림 SMS 수신 / 새 규칙 적용 직후 이상 동작 등 위급 상황에서:
메시지 템플릿 변수
메일 / SMS / 카카오 알림톡 본문에 {변수명} 형태로 변수를 삽입하면 발송 시 실제 값으로 자동 치환됩니다. 템플릿 파일은 plugin/gb_guardian/templates/ 폴더에 있으며 직접 수정 가능합니다.
즉시 / 시간대 알림 (메일·SMS·카톡 공통)
| 변수 | 치환되는 값 | 예시 |
|---|---|---|
{SITE_NAME} | 그누보드 사이트 이름 (cf_title) | 홍길동몰 |
{SITE_URL} | 사이트 URL | https://example.com |
{ERROR_LEVEL} | 오류 등급 | FATAL |
{ERROR_MESSAGE} | 오류 메시지 (마스킹 적용됨) | Undefined function... |
{ERROR_FILE} | 파일 경로 (마스킹 적용됨) | [ROOT]/bbs/write.php |
{ERROR_LINE} | 라인 번호 | 42 |
{ERROR_TIME} | 발생 시각 | 2026-04-15 14:32:18 |
{ERROR_URL} | 발생 URL | https://example.com/bbs/... |
{OCCURRENCE_COUNT} | 발생 횟수 (디바운싱 누적) | 87 |
{ADMIN_LOG_URL} | 관리자 오류 로그 직링크 | https://.../adm/guardian_log.php?stx=... |
일일 / 주간 요약 메일 전용 변수
| 변수 | 치환되는 값 |
|---|---|
{PERIOD} | "어제" 또는 "지난 일주일" |
{DATE_RANGE} | "2026-04-14 00:00 ~ 23:59" 형태 날짜 범위 |
{TOTAL} | 총 발생 건수 (occurrence_count 합) |
{UNIQUE_COUNT} | 고유 오류 종류 수 |
{FATAL_COUNT} | FATAL/ERROR/EXCEPTION 합산 |
{LEVEL_ROWS} | 등급별 분포 행 HTML (서버에서 자동 조립) |
{TOP_ERROR_ROWS} | 최다 오류 TOP 10 행 HTML |
{RULE_NAME} | 규칙명 |
{ADMIN_URL} | 관리자 페이지 URL |
템플릿 파일 위치
| 파일 | 용도 |
|---|---|
templates/mail_default.html | 즉시 / 시간대 알림 메일 (HTML) |
templates/sms_default.txt | SMS 본문 |
templates/kakao_default.txt | 카카오 알림톡 본문 (비즈센터 등록 본문과 일치 필수) |
templates/mail_summary_daily.html | 일일 요약 메일 |
templates/mail_summary_weekly.html | 주간 요약 메일 |
사이트 관리자 정보 표시 선택 기능
관리 화면의 제작자 정보 박스와 알림 메일 푸터에 사이트를 관리하는 개발자/제작사의 정보(이름, 소개 문구, 홈페이지 주소 등)를 표시할 수 있는 선택적 기능입니다. 여러 사이트를 납품·관리하는 개발자라면 사이트마다 본인 정보를 표시하는 용도로 활용할 수 있습니다.
기본 상태
배포 직후에는 이 정보가 모두 비어 있어 아무것도 표시되지 않습니다. 별도로 설정하지 않아도 플러그인 기능에는 영향이 없으며, 필요하지 않다면 그대로 두어도 됩니다.
설정 방법
plugin/gb_guardian/lib/guardian_brand.lib.php 파일을 열고, guardian_get_brand_info() 함수 안의 return array() 항목을 아래 설명에 따라 수정합니다.
| 항목 | 설명 | 기본값 |
|---|---|---|
name | 표시할 개발자/제작사 이름 | 'WizardOfCode' (변경 가능) |
tagline | 관리 화면에 표시할 한 줄 소개 문구 | 빈 값 (미표시) |
homepage | 홈페이지 주소. 값이 있으면 관리 화면에 링크 버튼이 표시됨 | 빈 값 (미표시) |
series_url | 관련 페이지 주소 (선택). 값이 있으면 알림 메일 푸터에 링크로 삽입됨 | 빈 값 (미표시) |
값을 하드코딩하는 대신 $get('키이름', '기본값') 형태를 유지하면, 나중에 환경설정 DB에서 값을 관리하는 방식으로 전환할 때 코드 수정 없이 적용할 수 있습니다.
// 수정 전 (기본 상태 — 모두 빈 값)
return array(
'name' => 'WizardOfCode',
'tagline' => $get('brand_tagline', ''),
'homepage' => $get('brand_homepage', ''),
'series_url' => $get('series_page_url', ''),
// ...기타 항목...
);
// 수정 후 (개발자 정보를 직접 입력한 예시)
return array(
'name' => 'My Company',
'tagline' => $get('brand_tagline', '그누보드 전문 개발팀'),
'homepage' => $get('brand_homepage', 'https://example.com'),
'series_url' => $get('series_page_url', 'https://example.com/works'),
// ...기타 항목...
);
guardian_config_set())으로 관리하면 업데이트 영향을 받지 않습니다.플러그인 제거 (Uninstall)
플러그인을 완전히 제거하려면 아래 두 단계를 순서대로 진행합니다.
STEP 1 — DB 테이블 / 컬럼 삭제
그누보드 관리자 → SQL 입력창 또는 phpMyAdmin 에서 아래 SQL을 실행합니다.
-- 6개 테이블 제거
DROP TABLE IF EXISTS g5_guardian_log;
DROP TABLE IF EXISTS g5_guardian_rule;
DROP TABLE IF EXISTS g5_guardian_recipient;
DROP TABLE IF EXISTS g5_guardian_notify_log;
DROP TABLE IF EXISTS g5_guardian_summary_queue;
DROP TABLE IF EXISTS g5_guardian_rule_match_log;
-- g5_config 컬럼 정리
ALTER TABLE g5_config DROP COLUMN cf_guardian_use;
ALTER TABLE g5_config DROP COLUMN cf_guardian_collect_levels;
ALTER TABLE g5_config DROP COLUMN cf_guardian_log_keep_days;
ALTER TABLE g5_config DROP COLUMN cf_guardian_default_cooldown_min;
ALTER TABLE g5_config DROP COLUMN cf_guardian_aligo_enabled;
ALTER TABLE g5_config DROP COLUMN cf_guardian_emergency_stop;
ALTER TABLE g5_config DROP COLUMN cf_guardian_email_daily_limit;
ALTER TABLE g5_config DROP COLUMN cf_guardian_sms_daily_limit;
ALTER TABLE g5_config DROP COLUMN cf_guardian_kakao_daily_limit;
ALTER TABLE g5_config DROP COLUMN cf_guardian_sms_silent_enabled;
ALTER TABLE g5_config DROP COLUMN cf_guardian_sms_silent_start;
ALTER TABLE g5_config DROP COLUMN cf_guardian_sms_silent_end;
ALTER TABLE g5_config DROP COLUMN cf_guardian_kakao_template_code;
ALTER TABLE g5_config DROP COLUMN cf_guardian_kakao_emphasize_title;
ALTER TABLE g5_config DROP COLUMN cf_guardian_rule_match_logging;
ALTER TABLE g5_config DROP COLUMN cf_guardian_rule_match_keep_days;
ALTER TABLE g5_config DROP COLUMN cf_guardian_summary_mode;
ALTER TABLE g5_config DROP COLUMN cf_guardian_summary_last_daily;
ALTER TABLE g5_config DROP COLUMN cf_guardian_summary_last_weekly;
테이블 접두사를 변경한 경우 위 SQL의 g5_ 부분을 사용 환경에 맞게 수정합니다.
STEP 2 — 파일 / 폴더 삭제
FTP로 접속하여 아래 파일 및 폴더를 삭제합니다.
| 삭제 대상 | 경로 |
|---|---|
| extend 진입점 | 그누보드루트/extend/gb_guardian.extend.php |
| 플러그인 폴더 전체 | 그누보드루트/plugin/gb_guardian/ |
| 관리자 페이지 16개 | 그누보드루트/adm/guardian_*.php |
STEP 3 — cron 등록 해제 (cron 모드 사용 시)
- SSH 등록 경우:
crontab -e→summary_cron.php관련 줄 삭제 - 외부 웹 cron 서비스: 등록된 작업 삭제
- 호스팅 패널 cron: 작업 삭제
자주 묻는 질문
Q. 무제한 사이트에 설치 가능한가요?
네. 운영지킴이는 사이트 식별·라이센스 키 검증 같은 락인 로직을 일절 포함하지 않습니다. 무제한 설치는 K3SOFT의 핵심 가치입니다. 본인이 운영하는 모든 그누보드 사이트와 고객 사이트에 자유롭게 설치하실 수 있습니다.
Q. 그누보드를 업데이트해도 플러그인이 유지되나요?
네. 운영지킴이는 그누보드 코어 파일을 단 한 줄도 수정하지 않습니다. extend/ 자동 부트스트랩 메커니즘만 사용하므로 그누보드 업데이트 후에도 그대로 동작합니다.
Q. 운영지킴이를 비활성으로 두면 사이트 성능에 영향이 있나요?
아니요. cf_guardian_use=0 일 때 진입점 파일이 즉시 return 합니다. 핸들러 등록도, 라이브러리 로드도 일어나지 않으므로 디스크 I/O 가 0건이고 성능 영향이 없습니다.
Q. SMS / 카카오 알림톡을 사용하지 않아도 되나요?
네. 메일만으로도 충분히 운영 가능합니다. 알림 규칙 등록 시 채널을 모두 "이메일" 로 두면 됩니다. SMS / 카톡은 추가 비용이 발생하므로 정말 즉시성이 필요한 FATAL 등급에만 한정해 사용하는 것을 권장합니다.
Q. 카카오 알림톡 본문을 수정하고 싶어요.
plugin/gb_guardian/templates/kakao_default.txt 파일을 직접 수정하면 운영지킴이가 발송할 본문이 변경됩니다. 그러나 알리고 카카오 비즈센터에 사전 등록한 본문도 같이 수정하고 재심사해야 발송이 됩니다. 양쪽 본문이 글자 단위로 일치해야 카카오가 발송 승인합니다.
Q. 매칭 추적 로그가 비어 보입니다.
다음 중 하나일 수 있습니다:
- 매칭 추적 로깅이 OFF 상태 — 환경설정에서 확인
- 활성 알림 규칙이 0건 — 알림 규칙 관리에서 확인
- 오류가 발생하지 않은 사이트 — 정상 (테스트 발송으로 검증 가능)
- 보관 기간(기본 7일) 이전 데이터는 자동 삭제됨
Q. cron 을 등록할 수 없는 호스팅이에요.
환경설정 → "요약 발송 트리거 모드" → "방문자 트리거" 로 두시면 됩니다. 사이트 방문자 트래픽이 발생할 때마다 1% 확률 + 5분 가드로 자동 트리거됩니다. 즉시 알림(instant 모드)은 본 설정과 무관하게 오류 발생 즉시 발송됩니다.
Q. 알림이 너무 많이 와요.
다음 단계로 조정하세요:
- 알림 규칙 → 수정 → 등급 을 좁힘 (예: WARNING 제외, FATAL/ERROR 만)
- 또는 파일 패턴 으로 특정 파일/모듈만 매칭
- 또는 모드 를 "일일 요약" 으로 변경 — 즉시성 대신 하루 1통으로 묶음
- 또는 쿨다운 을 30분 → 360분 등으로 늘려 같은 오류 재발송 빈도 줄임
- 긴급 시 비상 정지 로 즉시 모두 차단 후 원인 파악
Q. SMTP Manager 가 없으면 어떻게 되나요?
그누보드의 mailer() 함수가 PHP 의 mail() 함수로 자동 폴백합니다. SMTP 인증 없이 발송되므로 일부 메일 서버에서 스팸 처리될 수 있습니다. 안정적인 메일 발송을 위해 SMTP Manager 설치를 권장합니다.
문제 해결
관리자 메뉴에 "운영지킴이"가 보이지 않아요
extend/gb_guardian.extend.php가 그누보드 루트의extend/폴더에 올바르게 업로드되어 있는지 확인plugin/gb_guardian/install.php를 한 번 실행했는지 확인 (관리자 로그인 상태에서)- 브라우저 캐시 새로고침 (Ctrl+F5 / Cmd+Shift+R)
- 파일 권한(퍼미션)이 644 이상인지 확인
오류는 발생하는데 알림이 안 와요
- 운영지킴이 → 환경설정 → "운영지킴이 사용" ON 인지 확인
- 비상 정지가 활성화되어 있지 않은지 확인
- 알림 규칙이 1개 이상 활성 상태로 등록되어 있는지 확인
- 활성 수신자가 1명 이상이고 채널별 주소(이메일/휴대폰)가 입력되어 있는지 확인
- 오류 로그 페이지에서 오류가 실제 캡처되었는지 확인
- 규칙 매칭 추적 로그 에서 매칭 결과 확인 — "왜 알림이 안 갔는지" 9가지 결과 코드로 즉시 진단 가능
- 알림 발송 이력 페이지에서 발송 시도가 있었는지 / 실패 사유가 무엇인지 확인
SMS 발송이 실패해요
- 그누보드 환경설정에 SMS 인증 정보가 입력되어 있는지 확인
- SMS 잔액이 남아있는지 알리고 관리자 페이지에서 확인
- 발신번호가 사전 등록된 번호인지 확인 (사전 등록 안 된 번호는 발송 거부)
카카오 알림톡 발송이 실패해요
- 알리고 카카오 알림톡 솔루션이 설치되어 있는지 확인 (
plugin/aligo_kakao/aligo_alimtalk.lib.php존재) - 환경설정에 카카오 발신키 (
cf_aligo_kakao_sdkey) + 운영지킴이 템플릿 코드 (cf_guardian_kakao_template_code) 가 입력되어 있는지 확인 - 본문이 카카오 비즈센터에 사전 등록·승인된 템플릿과 글자 단위로 일치하는지 확인 (변수 자리 외 모든 텍스트 동일해야 함)
- 광고성 키워드 포함 시 카카오에서 거부될 수 있음 — 본문 검토
- 운영지킴이 → 알림 발송 이력에서 실패 사유 확인
일일 요약 메일이 안 와요
- 일일 요약 모드 규칙이 활성 상태인지 확인
- 해당 시각에 발송할 큐가 비어있지 않은지 확인 (어제 캡처된 오류가 있어야 발송됨)
- 환경설정 → "마지막 처리" 시각이 갱신되는지 확인
- cron 모드라면 cron 명령이 정상 등록·실행되는지 확인
- 방문자 트리거 모드라면 사이트 트래픽이 너무 적은지 확인 (1% 확률이라 트래픽 적으면 늦게 트리거)
"올바른 방법으로 이용해 주십시오" 메시지
그누보드 CSRF 토큰 검증 실패. 페이지를 새로고침 후 다시 시도하세요. 모달과 일괄 폼을 동시에 사용하면 토큰이 만료될 수 있습니다.
매칭 추적 로그에 데이터가 너무 많이 쌓여요
- 환경설정 → "자동 정리 보관 기간" 을 줄이세요 (예: 7일 → 3일)
- 또는 "매칭 추적 로깅" 을 OFF 로 두면 더 이상 쌓이지 않음 (디버깅 시에만 ON)
- cron 또는 방문자 트리거가 동작 중이면 보관 기간 지난 데이터는 자동 삭제됨
오류 로그 화면 + 규칙 매칭 추적 로그 + 알림 발송 이력 3곳의 스크린샷을 함께 첨부하시면 빠르게 진단해 드릴 수 있습니다.
🔜 다음 단계: AI 오류 진단 서비스
오류지킴이가 "오류가 발생했다"를 알려드린다면, 준비 중인 AI 오류 진단 서비스는 "이 오류가 무슨 뜻이고, 어떻게 해결하는지"까지 안내해 드립니다.
오류지킴이와 연동해 알림에서 바로 진단으로 이어지는 흐름을 목표로 개발 중입니다.