비이로그 V9.0.0 사용자 매뉴얼

2. 구성하기

2.1 클라이언트/서버 구성도

비이로그는 클라이언트/서버 방식으로 동작합니다.
클라이언트 모드는 고객의 웹 서버 시스템에 구성하는 방식이고, 서버 모드는 비이로그 서버 시스템에 설치됩니다.
클라이언트 시스템은 웹 로그를 생성하는 시스템이고, 서버 시스템은 생성된 웹 로그 파일을 수신하여, 데이터 파일을 만들고 웹 서비스를 통해 데이터를 화면에 보여주는 시스템입니다.

다음은 비이로그(BeLOG) 클라이언트와 서버 시스템의 구성도 입니다.


2.2 서버 모드 구성하기

서버 모드로 구성하기 위해서 다음과 같은 설정이 필요합니다.

1. 아파치 웹 서버 연동하기 (# /opt/BELOG/web/setup/update-httpd.sh) (필수)
2. 소프트웨어 사용 라이선스 설치하기 (# /opt/BELOG/bin/BELOG-lic) (필수)
3. belogd 서비스 기동 (# systemctl start/enable belogd) (필수)
4. 비이로그 마스터 구성 파일 설정 (/opt/BELOG/conf/BELOG.conf) (필수)
5. 페이지 인식 URL 경로명 지정하기 (/opt/BELOG/conf/accept-page.conf) (옵션)
6. 웹 로그 파일 포맷 지정하기 (/opt/BELOG/conf/logformat.conf) (필수)
7. 웹 옵션 변경하기 (/opt/BELOG/conf/webopt.conf) (옵션)
8. 서브 페이지 목록 구성하기 (/opt/BELOG/conf/subpage.conf) (옵션)
9. 리퀘스트 목록 구성하기 (/opt/BELOG/conf/request.conf) (옵션)
10. 경로명 제목 구성하기 (/opt/BELOG/conf/pathname.conf) (옵션)
11. 오래된 웹 로그 파일 제거 하기 (# crontab -e) (옵션)

서버 모드에서 구성에 변경이 발생하는 디렉토리는 다음과 같습니다.

/opt/BELOG/conf 비이로그 서버 구성 파일이 있는 디렉토리
/opt/BELOG/lic 라이선스가 설치되는 디렉토리
/opt/BELOG/web 웹 서비스를 위한 패스워드 파일이 있는 디렉토리


2.2.1 아파치 웹 서버 연동하기 (# /opt/BELOG/web/setup/update-httpd.sh)

비이로그 서버는 수집한 웹 로그 데이터를 사용자애게 보여주기 위해 아파치 웹 서버 S/W를 사용합니다.
먼저, 아파치 웹 서버가 기동되어 있는지 다음과 같이 systemctl 명령어로 확인합니다.

# systemctl status httpd * httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled) Active: active (running) since Thu 2024-05-16 16:35:33 KST; 20min ago Docs: man:httpd(8) man:apachectl(8) Process: 18909 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS) Main PID: 18916 (httpd) Status: "Total requests: 0; Current requests/sec: 0; Current traffic: 0 B/sec" CGroup: /system.slice/httpd.service |-18916 /usr/sbin/httpd -DFOREGROUND |-18918 /usr/sbin/rotatelogs /data/weblog/ssl_access_log.%Y%m%d 86400 540 |-18919 /usr/sbin/httpd -DFOREGROUND |-18920 /usr/sbin/httpd -DFOREGROUND |-18922 /usr/sbin/httpd -DFOREGROUND |-18923 /usr/sbin/httpd -DFOREGROUND `-18924 /usr/sbin/httpd -DFOREGROUND May 16 16:35:33 tiger.com systemd[1]: Starting The Apache HTTP Server... May 16 16:35:33 tiger.com systemd[1]: Started The Apache HTTP Server. # systemctl is-enabled httpd enabled

위의 명령어에서 httpd 프로세스들이 기동되고 있음을 알 수 있습니다.
만일. 아파치 웹 서버 프로세스 httpd가 실행되고 있지 않으면, 다음과 같이 systemctl 명령어를 사용하여 httpd 서버 프로세스를 기동할 수 있습니다.

# systemctl enable httpd # systemctl start httpd # systemctl status httpd ... skip ...

아파치 웹 서버가 기동되어 있음을 확인한 후, 비이로그 서버와 아파치 웹 서버와 연동 작업을 실행할 수 있습니다.

/opt/BELOG/web/setup 디렉토리에 들어가서 update-httpd.sh 쉘 스크립트를 다음과 같이 실행합니다.

# cd /opt/BELOG/web/setup # ./update-httpd.sh + cp /opt/BELOG/web/BELOG.pw.sample /opt/BELOG/web/BELOG.pw + '[' -d /etc/httpd/conf.d ']' + cp /opt/BELOG/web/setup/httpd-belog.conf /etc/httpd/conf.d + chown apache /opt/BELOG/web/BELOG.pw + chmod 600 /opt/BELOG/web/BELOG.pw + set +x Do you want to restart httpd now? [Y/N]: Y + systemctl enable httpd + systemctl restart httpd + set +x ● httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled) Active: active (running) since 월 2024-12-23 11:48:15 KST; 239ms ago Docs: man:httpd(8) man:apachectl(8) Process: 12449 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS) Main PID: 12455 (httpd) Status: "Processing requests..." CGroup: /system.slice/httpd.service ├─12455 /usr/sbin/httpd -DFOREGROUND ├─12459 /usr/sbin/rotatelogs /data/weblog/new_access_log.%Y%m%d 86400 540 ├─12460 /usr/sbin/httpd -DFOREGROUND ├─12461 /usr/sbin/httpd -DFOREGROUND ├─12462 /usr/sbin/httpd -DFOREGROUND ├─12464 /usr/sbin/httpd -DFOREGROUND └─12465 /usr/sbin/httpd -DFOREGROUND Dec 23 11:48:15 tiger.com systemd[1]: Starting The Apache HTTP Server... Dec 23 11:48:15 tiger.com systemd[1]: Started The Apache HTTP Server. Connect this web server: http://logserver/belog/index.html

***** [주의]
update-httpd.sh 쉘 스크립트는 실행하면, 웝 연동에 필요한 구성 파일을 복사하고, 아파치 웹 서버를 재기동할지 여부를 묻습니다. 여기서 'Y'를 입력하면 현재의 웹 서버를 재기동합니다.
이 아파치 웹 서버가 비이로그 서버를 위한 전용 서버가 아니면, 아파치 웹 서버의 재기동이 다른 S/W에 영향을 주는지 고객이 확인하여야 합니다.

이 스크립트는 아파치 웹 서버와 비이로그(BeLOG) 프로그램을 연동하기 위한 구성 작업을 실행합니다. update-httpd.sh 쉘 스크립트는 다음과 과정을 수행합니다.

1) 비이로그 아파치 웹 구성 파일(/opt/BELOG/web/setup/httpd-belog.conf)을 아파치 웹 서버의 구성 파일 디렉토리 /etc/httpd/conf.d 디렉토리에 복사합니다.
2) 비이로그 웹 사용자 로그인 파일(/opt/BELOG/web/BELOG.pw)을 초기화 합니다.
초기화한 BELOG.pw 파일에는 'admin' 사용자가 들어 있습니다. 패스워드는 'admin0101'로 설정되어 있습니다.
3) 아파치 웹 서버를 재 기동합니다. ('Y'를 입력하면)

사용자 로그인 파일에는 관리자 아이디 ‘admin’과 패스워드 ‘admin0101’이 들어 있습니다.

관리자의 패스워드를 변경하려면, 다음과 같이 BELOG-passwd 명령어를 사용하여 변경할 수 있습니다.

# /opt/BELOG/bin/BELOG-passwd change-password admin Changing BELOG password for user 'admin': Enter password confirm: the password of user 'admin' is changed

비이로그 웹 화면의 관리자 메뉴에서 패스워드를 변경할 수 도 있습니다.

위와 같이 update-httpd.sh 명령어를 실행하면, 비이로그 웹 화면에 접속할 수 있습니다. 다음과 같이 초기 로그인 화면이 나옵니다.

여기에서 로그인 아이디에 'admin' 패스워드에 'admin0101'을 입력하고, 로그인 버튼을 클릭하면 다음과 같은 페이지가 나옵니다.

여기서는 아직 구성 파일이 설정되어 있지 않기 때문에 위와 같은 구성 파일 오류가 발생합니다.


2.2.2 소프트웨어 사용 라이선스 설치하기 (# /opt/BELOG/bin/BELOG-lic)

비이로그(BeLOG) 서버를 정상적으로 사용하기 위해서는 사용 라이선스 파일을 등록해야 합니다.
비이로그(BeLOG) 소프트웨어를 구입한 업체로부터 라이선스 파일을 받아서 그 내용을 "관리자 페이지-> 라이선스 설치하기" 웹 페이지를 통해 라이선스를 등록할 수 있습니다.


비이로그 서버에 로그인하여 /opt/BELOG/bin/BELOG-lic 명령어로 라이선스를 직접 설치할 수 있습니다.
서버에 올린 라이선스 파일명인 license-tiger.txt 이라고 하면 다음과 같이 설치할 수 있습니다.

# /opt/BELOG/bin/BELOG-lic license-tiger.txt

다음의 명령어로 설치된 라이선스 정보를 확인할 수 있습니다.

# /opt/BELOG/bin/BELOG-lic -l Lease license (2026/04/10, 360 day(s) left)


비이로그 라이선스는 다음의 웹 주소에서 발급 받을 수 있습니다.

http://belab.co.kr/belog-license.html 라이센스가 설치되어 있지 않아도 비이로그 프로그램은 정상 동작합니다. 그러나, 웹에서는 부분적인 데이터(하루전의 '일일 분석 보기')만 볼 수 있습니다.


2.2.3 belogd 서비스 기동 (# systemctl start/enable belogd)

belog 패키지가 설치되면, 서버 모드에 필요한 belogd 데몬 프로세스가 자동적으로 기동됩니다.
다음과 같이 systemctl 명령어로 서비스 상태를 확인할 수 있습니다.

# systemctl status belogd systemctl status belogd * belogd.service - BELOG - Log Receiver Daemon" Loaded: loaded (/etc/systemd/system/belogd.service; enabled; vendor preset: disabled) Active: active (running) since Thu 2024-05-16 11:45:31 KST; 5min ago Main PID: 4756 (belogd) CGroup: /system.slice/belogd.service `-4756 /opt/BELOG/bin/belogd May 16 11:45:31 tiger.com systemd[1]: Started BELOG - Log Receiver Daemon". May 16 11:45:31 tiger.com systemd[1]: Starting BELOG - Log Receiver Daemon"... # systemctl is-enabled belogd enabled

belogd 데몬 프로세스는 고객의 웹 서버가 전송하는 웹 로그 파일을 수신하는 프로세스입니다.

만일 belogd 데몬 프로세스가 실행되고 있지 않으면, 다음과 같이 명시적으로 실행할 수 있습니다.

# systemctl enable belogd # systemctl start belogd # systemctl status belogd ... skip ...


2.2.4 비이로그 마스터 구성 파일 설정 (/opt/BELOG/conf/BELOG.conf)

비이로그 마스터 구성 파일(/opt/BELOG/conf/BELOG.conf)은 비이로그에서 중심이 되는 구성 파일로서 분석 대상이 되는 웹 서버가 전송한 로그 파일을 저장할 장소와 로그 데이터를 분석하여 생성한 DB 데이터 파일을 저장할 장소를 지정합니다.
대부분의 명령어들이 이 구성 파일을 참조합니다.

비이로그 패키지를 설치하면 /opt/BELOG/conf/samples 디렉토리에 BELOG.conf.sample 파일이 있습니다. 이 파일을 /opt/BELOG/conf/BELOG.conf 이름으로 복사한 후에 그 내용을 수정하면 됩니다.
다음은 BELOG.conf.sample 파일의 내용입니다.
웹 서버가 발생하는 하나의 웹 로그를 하나의 도메인이라고 지칭합니다. (웹서버가 HTTP와 HTTPS의 로그를 각각 기록하면, 하나의 웝서버가 2개의 웝 로그를 만들 수 있습니다. 즉, 2개의 도메일이 만들어 질 수 있습니다.)

BELOG_WEBLOG=/BELOG/LOG BELOG_DB_HOME=/BELOG/DB #TCP_PORT=7811 [DEMO] BELOG_DOMAIN_NAME=https://demosite.co.kr #BELOG_LOG_CLIENT_IP=192.160.0.117 #BELOG_LOG_CLIENT_HOSTNAME=queen.com #[DEMO_NS] #BELOG_DOMAIN_NAME=http://demosite.co.kr #BELOG_LOG_CLIENT_IP=192.160.0.117 #BELOG_LOG_CLIENT_HOSTNAME=queen.com

구성 파일에서 # 으로 시작하는 라인은 주석으로 처리됩니다. 빈 줄은 그냥 무시합니다.
대괄호 [] 안에는 도메인 아이디를 지정하고, 도메인 아이디가 지정된 다음 라인부터는 그 도메인에 대한 정보로 인식합니다.
도메인 아이디가 나오기 전의 있는 라인은 모든 도메인에 공통으로 사용됩니다.
여기서 사용자의 환경에 맞게 "도메인 아이디"와 "도메인 명"을 수정하여 사용합니다.

이 내용을 수정한 후에 ‘/opt/BELOG/bin/BELOG-conf’ 명령어를 사용하여, 그 구성 파일에 맞게 필요한 디렉토리 구조를 만들 수 있습니다.

-M DEMO 옵션을 지정하여 BELOG-conf 명령어를 실행하면, 다음과 같이 DEMO 도메인에 필요한 디렉토리를 만들 수 있는 명령어들이 출력됩니다.

# /opt/BELOG/bin/BELOG-conf -M DEMO mkdir -p /BELOG/LOG/DEMO/weblog mkdir -p /BELOG/DB/DEMO/pday mkdir -p /BELOG/DB/DEMO/ydb

이 명령어의 결과를 sh 명령어와 파이프로 연결하여 다음과 같이 실행할 수 있습니다.

# /opt/BELOG/bin/BELOG-conf -M DEMO | sh -x + mkdir -p /BELOG/LOG/DEMO/weblog + mkdir -p /BELOG/DB/DEMO/pday + mkdir -p /BELOG/DB/DEMO/ydb

위의 명령어를 실행하면 다음과 같은 디렉토리가 만들어 집니다.

# tree /opt/BELOG /opt/BELOG |-- DB | `-- DEMO | |-- pday | `-- ydb `-- LOG `-- DEMO `-- weblog

만일 도메인이 여러 개가 구성되어 있고, 구성된 모든 도메인에 대한 디렉토리를 만들려면, 도메인 이름 대신에 -A 옵션을 지정하면 됩니다.

# /opt/BELOG/bin/BELOG-conf -M -A mkdir -p /BELOG/LOG/DEMO/weblog mkdir -p /BELOG/DB/DEMO/pday mkdir -p /BELOG/DB/DEMO/ydb mkdir -p /BELOG/LOG/DEMO_NS/weblog mkdir -p /BELOG/DB/DEMO_NS/pday mkdir -p /BELOG/DB/DEMO_NS/ydb

# /opt/BELOG/bin/BELOG-conf -M -A | sh -x

이렇게 DEMO 도메인에 대한 디렉토리들이 만들어지면, 기본 설정이 완료되었습니다.
다음과 같이 BELOG-check 명령어로 DEMO 도메인에 대한 설정이 정상적으로 되어 있는지 확인할 수 있습니다.

# /opt/BELOG/bin/BELOG-check -d DEMO -s localhost OK: checked. SERVER=localhost: VERSON=V9.0.0 CLIENT_IP=127.0.0.1 DOMAIN_ID=DEMO WEBLOG_DIR=/BELOG/LOG/DEMO/weblog DB_DIR=/BELOG/DB/DEMO/pday LOG_FS_USAGE=86.7% LOG_FS_AVAIL=3.31GB

정상적으로 설정되어 있지 않으면, BELOG-check 명령어에서 오류가 발생합니다.

다음은 BELOG.conf 구성 파일에 지정되는 파라미터 값을 설명입니다.

파라미터 설명
TCP_PORT 고객의 웹 로그 파일을 수신하는 belogd 프로세스가 사용하는 TCP 포트번호 (디폴트 7811)

이 포트 번호를 수정하면 belogd.service 를 다시 기동하여야 합니다.

# systemctl restart belogd

BELOG_WEBLOG 수신한 웹 로그 파일을 저장하는 베이스 디렉토리를 지정합니다. 일반적으로 /BELOG/LOG 디렉토리를 사용합니다.
BELOG_DB_HOME 비이로그 서버의 DB 데이터가 저장될 베이스 디렉토리를 지정합니다. 일반적으로 /BELOG/DB 디렉토리를 사용합니다.
BELOG_LOG_CLIENT_IP 고객의 웹 서버가 TCP 포트 7811 번으로 웹 로그를 전송하면, 비이로그 서버에서 belogd 라는 데몬 프로세스가 로그 데이터를 받아서 저장하는데, 데이터를 보내는 웹 서버를 특정 IP로 제한할 때, 그 웹 서버의 IP를 지정합니다.

BELOG_LOG_CLIENT_IP=192.1.1.100이라고 지정하면, IP가 192.160.0.110 번인 곳에서 보낸 웹 로그만 수신합니다.

여러 개의 IP를 지정하려면, 공백을 두고 여러 개를 지정할 수 있습니다.

BELOG_LOG_CLIENT_HOSTNAME 고객의 웹 서버를 특정 호스명으로 제한할 때 사용합니다.
BELOG_LOG_CLIENT_HOSTNAME=tiger.com 이라고 지정하면, 고객의 웹 서버의 호스명이 tiger.com 인 것이 보낸 데이터만 수신합니다.

호스트 명은 고객의 웹 서버 시스템에서 다음과 같이 hostname 명령어로 확인할 수 있습니다.

# hostname tiger.com

CLIENT_IP로 접속을 제한하기 여려울 경우, BELOG_LOG_CLIENT_HOSTNAME으로 제한합니다.

[DEMO] 대괄호로 둘러싸서 도메인 ID을 지정합니다.
(도메인 ID와 대괄호 사이에 공백이 있으면 안됨).

도메인 ID는 영문자(A-Z, a-Z)와 숫자(0-9), 도트(.), 대쉬(-), 언더라인(_), 콜론(:)으로 구성할수 있습니다.
도메인 ID가 지정되면, 그 이후의 설정 값은 그 도메인에 만 적용됩니다.

BELOG_DOMAIN_NAME 도메인 ID에 대한 이름을 지정합니다. 통상적으로 웹 주소를 사용합니다
(예시: http://www.helloworld.com).
또는 도메인을 구분할 수 있는 설명적인 이름을 사용합니다.


2.2.5 페이지 인식 URL 경로명 지정하기 (/opt/BELOG/conf/accept-page.conf)

비이로그 패키지를 설치하면 /opt/BELOG/conf/samples 디렉토리에 accept-page.conf.sample 이라는 파일이 있습니다.
그 내용은 다음과 같습니다.

#========= Page Configuration ============ # Internal Configuration: :: section-include-extension .html .htm .php .jsp .asp .do .cgi (/ROOT) (/) :: section-exclude-pattern # # pattern can have the following meta characters # # '*' for zero to many letters # '?' for one letter # # /File/* #===========================================

/opt/BELOG/bin/BELOG-buildDB 명령어는 수집한 웹 로그 파일을 분석하여 DB 데이터 파일을 만드는 명령어입니다.
이 명령어에서 리퀘스트에 있는 URL 경로명에서 확장자명으로 HTML page 주소인지 page가 아닌지를 구분하여 페이지뷰수를 계산합니다. 이때 디폴트로 사용하는 규칙이 위에 있는 샘플 구성 파일입니다.
기본 규칙과 다르게 페이지를 인식하려면 /opt/BELOG/conf/samples/accept-page.conf.sample 파일명을 /opt/BELOG/conf/accept-page.conf 파일명으로 복사하고 그 내용을 수정하면 됩니다.

이 구성 파일에서 ‘#’은 주석으로 사용되고, 빈 줄은 무시됩니다.

:: section-include-extension’은 키워드이고 이 이후에 나오는 확장자는 HTML 페이지로 인식합니다. 확장자명에는 dot를 포함하여야 합니다.
확장자 중에 (/)와 (/ROOT)가 있는데 이것은 확장자의 이름이 아니고 특별한 의미를 나타냅니다.

	(/ROOT)   리퀘스트 URL 경로명에서 / 만 지정한 것과 일치됩니다.
	(/)       리퀘스트 URL 경로명에서 확장자 없이 이름만 지정한 것과 일치됩니다.
:: section-exclude-pattern’은 키워드이고, 이 이후에 지정한 문자열을 가지고 있는 것은 페이지로 인식하지 않고 제외시킵니다.
문자열에는 ‘*’와 ‘?’ 두 개의 메타 문자를 사용할 수 있습니다.
* 문자는 0개 이상의 임의의 문자와 일치하고 ? 문자는 임의의 1개의 문자와 일치합니다.

아파치 로그 파일 포맷에 \"%{Content-Type}o\"이 들어 있으면, 확장자로 페이지를 구분하지 않고 Content-Type 정보를 보고 HTML 페이지를 구분합니다.

HTML page를 인식하는 디폴트 구성 파일의 내용을 BELOG-buildDB 명령어로 다음과 같이 알 수 있습니다.

# /opt/BELOG/bin/BELOG-buildDB -C \?

#========= Page Configuration ============ # Internal Configuration: :: section-include-extension .html .htm .php .jsp .asp .do .cgi (/ROOT) (/) :: section-exclude-pattern # # pattern can have the following meta characters # # '*' for zero to many letters # '?' for one letter # /File/* # #===========================================


2.2.6 웹 로그 파일 포맷 지정하기 (/opt/BELOG/conf/logformat.conf)

비이로그(BeLOG)는 고객의 웹 서버가 하루 단위로 끊어서 하루에 하나씩 파일을 만드는 것으로 가정합니다.

그 파일명에는 4자리 숫자의 연도, 2자리 숫자의 월, 2자라 숫자의 일이 파일명에 포함되어 있다는 것을 가정합니다.
이렇게 하루에 하나씩 아파치 로그 파일을 생성하려면 아파치 웹 서버의 구성 파일 (httpd.conf)에서 CustomLog에 /usr/sbin/rotatelogs 명령어를 사용하여 하여야 합니다.

다음의 내용은 rotatelogs 명령어를 사용한 아파치 웹 서버의 구성 파일 httpd.conf의 일부입니다.

<IfModule log_config_module> LogFormat "%h %l %u %t \"%r\" %>s %b %T \"%{Referer}i\" \"%{User-Agent}i\"" belog CustomLog "|/usr/sbin/rotatelogs /data/weblog/ssl_access_log.%Y%m%d 86400 540" belog </IfModule>

위의 아파치 웹 서버의 설정 파일에서 LogFormat 키워드는 아파치 웹 서버의 로그 파일에 저장할 정보의 형식을 지정하고, CustomLog 키워드는 로그 파일을 저장할 파일명을 지정합니다.
여기서 파일명의 맨 앞 글자에 파이프 기호 ‘|’를 지정하면, 파일명이 아니라 첫 글자 파이프를 제외한 부분을 명령어로 간주하여, 해당 명령어를 실행하고, 그 명령어의 표준 입력으로 웹 로그를 출력합니다.
LogFormat 내용에서 %h 대신 %a를 사용하여도 됩니다.

/usr/sbin/rotatelogs 명령어는 첫 번째 인수로 파일명을 지정하고, 두 번째 인수는 로그 파일을 스위칭할 시간(초 단위)를 지정하고, 3번째 인수는 타임 옵셋 시간(분 단위)입니다. 한국 시간은 GMT+9 입니다. 9시간 (540분) 늦습니다. 한국의 로컬 시간을 사용하려면, 타임 옵셋 시간을 540으로 지정하면 됩니다.

비이로그(BeLOG) 서버는 웹 로그 파일명이 위와 같은 형식으로 수집되어 있다고 가정하고 있습니다. 하루에 하나씩 만들어지고, 파일명에는 날짜를 표시하는 세 개의 키워드가 %Y %m %d가 있어야 합니다.

사용하고자 하는 웹 서버의 구성에서 LogFormat의 형식이 비이로그 서버의 로그 포맷 구성 파일(/opt/BELOG/conf/logformat.conf)에 LogFormat의 형식 값을 그대로 넣어야 합니다.
/opt/BELOG/conf/logformat.conf 파일에는 다음과 같은 내용이 들어 있어야 합니다.

"%h %l %u %t \"%r\" %>s %b %T \"%{Referer}i\" \"%{User-Agent}i\""

공백 하나도 틀림이 없이 정확히 일치하여야 합니다.
비이로그는 공백을 분리자로 구분하여 로그 파일을 분석합니다. 공백이 2개 이상 연속되면 안 됩니다. TAB 문자가 들어 었어도 안 됩니다.

기존의 LogFormat을 무시하고 새로 설정해도 되면, 다음과 같은 LogFormat을 추천합니다.

"%a %l %u %t \"%r\" %>s %b %T \"%{Content-Type}o\" \"%{Referer}i\" \"%{User-Agent}i\""

또는

"%h %l %u %t \"%r\" %>s %b %T \"%{Content-Type}o\" \"%{Referer}i\" \"%{User-Agent}i\""

또는

"%a %l %u %t \"%r\" %>s %b %T \"%{Referer}i\" \"%{User-Agent}i\""

또는

"%h %l %u %t \"%r\" %>s %b %T \"%{Referer}i\" \"%{User-Agent}i\""

\"%{Content-Type}o\" 이 형식이 들어 있으면, 비이로그(BeLOG) 서버가 HTML 페이지를 구분할 때, 정확히 구분할 수 있습니다. 이 형식이 들어 있지 않으면, 리퀘스트의 경로에 있는 확장자 이름으로 HTML 페이지를 구분합니다.

다음은 비이로그 서버가 인식하는 로그 포맷 형식입니다.

필드명 설명 비교
%h 또는 %a %h는 리모트 호스트 이름을 기록.
(DNS 조회로 이름을 알아올 수 없으면 IP를 기록)

%a는 리모트 IP를 기록

%h 보다 %a를 사용하는 것이 더 효율적임.

비이로그에서는 이 값을 방문자로 사용합니다.

필수
[%{X-Forwarded-For}i] 프록시 서버를 통해 전달된 클라이언트 원본 IP
(the originating IP address of a client connecting to a web server through a proxy server)

프록시 서버를 통해 전송된 IP가 아닌 경우에는 '-' 값이 지정됩니다.

프록시 서버를 통해 전달된 클라이언트 원본 IP를 방문자로 사용하려면, 다음과 같은 'using-IP-X-Forwarded-For' 키워드 라인이 /opt/BELOG/conf/logformat.conf 파일에 추가적으로 지정되어야 합니다.

using-IP-X-Forwarded-For
선택
%l 리모트 로그인명 필수
%u 리모트 인증 사용자 필수
%t 리퀘스트 수신 시간 필수
%r 리퀘스트 정보 필수
%>s 응답 상태 코드 필수
%b 전송한 응답 바이트 수 (헤더 제외) 필수
\"%{Content-Type}o\" 출력 Content 타입 선택
%T 처리하는데 걸린 시간 (초 단위) 선택
\"%{Referer}i\" 리퀘스트가 들어온 경로 선택
\"%{User-Agent}i\" 사용자 브라우저 정보 선택

/opt/BELOG/conf/logformat.conf 로그 포맷 파일이 다음과 같이 설정되어 있고

"%a %l %u %t \"%r\" %>s %b %T \"%{Content-Type}o\" \"%{Referer}i\" \"%{User-Agent}i\""

/opt/BELOG/bin/BELOG-field 명령어를 다음과 같이 실행하면, access.log 파일에서 첫번째 라인을 읽어서 로그 포맷의 형식에 맞게 다음과 같이 보여 줍니다.

# /opt/BELOG/bin/BELOG-field access.log Field 1 (%a) : 192.168.0.2 Field 2 (%l) : - Field 3 (%u) : - Field 4 (%t) : 10/May/2024:09:42:51 +0900 Field 5 (%r) : GET /brun/BEp HTTP/1.1 Field 6 (%>s) : 200 Field 7 (%b) : 33381 Field 8 (%T) : 0 Field 9 (%{Content-Type}o) : text/html Field 10 (%{Referer}i) : http://192.168.0.117/brun/BEp Field 11 (%{User-Agent}i) : Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36


2.2.7 웹 옵션 변경하기 (/opt/BELOG/conf/webopt.conf)

/opt/BELOG/conf/webopt.conf 구성 파일에서 비이로그 웹 화면에 관한 옵션을 지정할 수 있습니다. 형식은 다음과 같습니다.

option=value

사용되는 옵션을 다음과 같습니다.

옵션 설명
without_login without_login=1 을 지정하면, 로그인 과정 없이 아무나 사용할 수 있게 합니다.
without_login=0 을 지정하면, 로그인 과정 후에 사용할 수 있습니다.(디폴트)
domain_id_list 마스터 구성 파일(/opt/BELOG/conf/BELOG.conf)에 도메인이 여러 개 지정되어 있을 경우에, 웹 화면에 보여 주고 싶은 도메인 이름을 공백으로 분리하여 지정합니다.
이 값을 지정하지 않으면, 구성 파일에 지정된 모든 도메인 정보가 화면에 보입니다.
default_domain_id 마스터 구성 파일(/opt/BELOG/conf/BELOG.conf)에 도메인이 여러 개 지정되어 있을 경우, 기본적으로 선택되어 사용될 도메인 이름을 지정합니다.
enable_download_weblog_file 관리자 페이지에 들어가면, 웹로그 파일을 다운로드 수 있는 화면이 있는데, 실제로 웹로그 파일을 웹에서 삭제하려면 enable_download_weblog_file=1 을 웹옵션 구성파일에 지정하여야 합니다.
이 옵션이 지정되어 있지 않으면, 파일을 다운로드가 금지되었다는 경고문이 나옵니다.
enable_delete_weblog_file 관리자 페이지에 들어가면, 웹로그 파일을 삭제할 수 있는 화면이 있는데, 실제로 웹로그 파일을 웹에서 삭제하려면 enable_delete_weblog_file=1 을 웹옵션 구성파일에 지정하여야 합니다.
이 옵션이 지정되어 있지 않으면, 파일을 삭제가 금지되었다는 경고문이 나옵니다.
disable_modify 관리자 페이지에 들어가면, 여러 가지의 서브 메뉴가 있는데, disable_modify=1 을 지정하면, [admin 로그 아웃] 을 제외한 모든 행위를 금지합니다.
이 옵션을 지정하면, 행위가 실행될 때, 금지되었다는 경고문이 나옵니다.
stop 비이로그 데이터를 웹으로 공개하는 것을 일시적으로 중단하고 싶을 경우에 stop=1 을 지정하면, 웹 화면에는 다음과같은 내용만 보입니다.


2.2.8 서브 페이지 목록 구성하기 (/opt/BELOG/conf/subpage.conf)

비이로그(BeLOG) 서버는 1일 간격으로 전체 리퀘스트 통합하여 페이지뷰와 방문자수를 보여 줍니다.
개별 URL 경로명에 대한 페이지뷰와 방문자수를 보고 싶을 경우, /opt/BELOG/conf/subpage.conf 구성 파일을 만들어 다음과 같이 지정할 수 있습니다.

/ Intro page /main Main page /japan Japan page /china China page /english English page /corona.jsp Corona page

subpage.conf 파일의 첫 번째 칼럼은 URL의 경로명이고, 두 번째 칼럼부터 끝까지는 제목입니다.
칼럼은 공백으로 구분됩니다. (Space 또는 Tab). 이 파일에는 최대 1000개의 페이지명을 지정할 수 있습니다.
URL 경로명에는 쿼리 스트링을 제외한 부분을 지정하여야 합니다.
여기에 지정된 경로명은 경로 레벨(디렉토리 깊이)이 3이하 인 것은 그 하위의 페이지뷰수와 방문자수를 합산하여 보여 줍니다.
단, 최상위 디렉토리 경로를 표시하는 '/'는 '/'의 하위의 디렉토리의 내용을 합산하지 않고, '/'의 내용만 보여줍니다.
경로명 레벨이 4이상인 것은 정확히 그 경로와 일치하는 것에 대한 페이지뷰수와 방문자수를 보여 줍니다. 예를 들어:

/sales/eng/2023/02/01/report.html Level 6 이므로 자신 것만 포함
/sales/eng/2023 Level 3 이므로 그 이하의 것을 포함
/sales/eng Level 2 이므로 그 이하의 것을 포함
/sales Level 1 이므로 그 이하의 것을 포함
/ 자신의 것만 보여줌

이렇게 구성 파일을 만들면, 비이로그(BeLOG) 서버의 웹 페이지에 상단 "일일 분석 보기"의 왼쪽 아래에 있는
"목록 보기 - 서버 페이지" 메뉴 버튼을 클릭하면 다음과 같은 화면을 볼 수 있습니다.


2.2.9 리퀘스트 목록 구성하기 (/opt/BELOG/conf/request.conf)

비이로그(BeLOG) 서버는 1일 간격으로 전체 리퀘스트 통합하여 리퀘스트뷰와 방문자수를 보여 줍니다.
개별 URL 경로명에 대한 리퀘스트뷰와 방문자수를 보고 싶을 경우, /opt/BELOG/conf/request.conf 구성 파일을 만들어 다음과 같이 지정할 수 있습니다.

/tools/blog.jsp Main BLOG /common/js/jQuery.ui.timepicker.js JQuery /favicon.ico favicon /main Main service /design Design Page

request.conf 파일의 첫 번째 칼럼은 URL의 경로명이고, 두 번째 칼럼부터 끝까지는 제목입니다.
칼럼은 공백으로 구분됩니다. (Space 또는 Tab). 이 파일에는 최대 1000개의 리퀘스트명을 지정할 수 있습니다.
여기에 정의된 경로는 리퀘스트뷰가 많은 순으로 상위 10,000개의 리퀘스트 경로를 모아둔 DB에서 검색해서 보여 줍니다.
상위 10,000개에 해당하지 않는 것은 실제 웹 로그에 저장되어 있어도 검색이 되지 않습니다. 이렇게 구성 파일을 만들면, 비이로그(BeLOG) 서버의 웹 페이지에 상단 "일일 분석 보기"의 왼쪽 아래에 있는 "목록 보기 – 리퀘스트 10000" 메뉴 버튼을 클릭하면 다음과 같은 화면을 볼 수 있습니다.
URL 경로명에는 쿼리 스트링을 제외한 부분을 지정하여야 합니다.

"목록보기 - 리퀘스트 10000"에서는 "목록보기 - 서브 페이지뷰"와는 다르게 하위 디렉토리의 내용을 합산하여 계산하지 않습니다.
그래서 "목록보기 - 서브 페이지뷰"에 있는 /main과 "목록보기 - 리퀘스트 10000"에 있는 /main의 값이 다를 수 있습니다.


2.2.10 경로명 제목 구성하기 (/opt/BELOG/conf/pathname.conf)

/opt/BELOG/conf/pathname.conf 구성 파일은 "목록보기"나, "Top 10000 리퀘스트뷰"나 "Top 페이지뷰"에서 경로명에 대한 제목을 지정할 경우에 사용합니다.
pathname.conf 구성 파일을 만들어 다음과 같이 지정할 수 있습니다.

/main introduction of main page /main/1 first main page /japan Japan Home /japan/2176 Japan page 2176 /english English Home /english/2021 English Year 2021 /search Search Page /tools Tool Page /File Fiie Data /corona.jsp Corona Page /preview/skin/doc.html DOC-page /design/homepage Design HomePage /design/homepage/common Design Common

pathname.conf 파일의 첫 번째 칼럼은 URL 경로명이고, 두 번째 칼럼부터 끝까지는 제목입니다.
이 파일에는 최대 10,000개의 경로명을 지정할 수 있습니다. 10,000개를 넘어서는 것은 그냥 무시합니다.

이렇게 설정하면, 다음과 같이 경로명이 표시되는 부분에 일치되는 것이 있으면, 그 옆에 경로 이름이 표시됩니다.
URL 경로명에는 쿼리 스트링을 제외한 부분을 지정하여야 합니다.


2.2.11 오래된 웹 로그 파일 제거 하기 (# crontab -e)

비이로그(BeLOG) 서버에 저장된 웹 로그 데이터는 일반적으로 다음의 디렉토리 밑에 저장됩니다

/BELOG/LOG/<domain_id>/weblog

이 디렉토리에 밑에 연도 디렉토리를 만들고 그 디렉토리 밑에 로그 파일을 저장합니다.

/BELOG/LOG/<domain_id>/weblog/yyyy/yyyy-mm-dd-access.wlog

다음은 365일 지난 웹 로그 파일을 삭제하는 명령어입니다.

# /opt/BELOG/bin/BEopslog delete -d DEMO -r old=365+ DomainID: DEMO /BELOG/LOG/DEMO/weblog/2022/2022-01-06-access.wlog /BELOG/LOG/DEMO/weblog/2022/2022-01-07-access.wlog ... skip ... /BELOG/LOG/DEMO/weblog/2023/2023-05-17-access.wlog /BELOG/LOG/DEMO/weblog/2023/2023-05-18-access.wlog Do you want to delete the above 497 files ? [y/n]: y

위 명령어에서 -y 옵션을 추가하면, 지울지 말지 질문을 하지 않고 바로 지웁니다.

# /opt/BELOG/bin/BEopslog delete -y -d DEMO -r old=365+

crontab -e 명령어로 cron 테이블에 다음과 같이 등록하면, 매일 0시 20분에 한번씩 등록된 명령어를 실행합니다.
BEopslog 명령어는 현재 시간을 기준으로 365이 지난 파일을 삭제합니다.

20 0 * * * /opt/BELOG/bin/BEopslog delete -y -d DEMO -r old=365+ > /dev/null 2>&1

crnotab에 등록할 때에는 -y 옵션을 반드시 지정하여야 합니다.

이 명령어가 실행되면, DEMO 도메인 디렉토리에서 웹 로그 파일이 365일 보다 오래된 웹 로그 파일을 삭제합니다.
삭제할 파일은 현재 시스템의 날짜와 웹 로그 파일명이 있는 날짜를 비교하여 선택됩니다.

로그 파일을 압축해서 보관하고 싶으면, 다음과 같이 cron 테이블에 넣어 로그 파일을 압축할 수 있습니다.
crontab –e 명령어로 cron 테이블에 다음과 같이 등록하면, 매일 0시 30분에 한번씩 등록된 명령어를 실행합니다.
BEopslog 명령어는 현재 시간을 기준으로 10일이 지난 파일을 gzip 명령어로 압축합니다.

30 0 * * * /opt/BELOG/bin/BEopslog gzip -y -d DEMO -r old=10+ > /dev/null 2>&1

웹 로그 파일이 BELOG-buildDB 명령어에 의해 DB 데이터 파일로 변환된 후에는 직접 사용되지 않습니다. 고객의 필요에 따라 보관용으로 사용됩니다.
비이로그(BeLOG) 서버는 웹 로그 파일을 가공하여 /BELOG/DB/<domain_id>/pday 디렉토리에 밑에 연도 디렉토리를 만들고 그 디렉토리 밑에 가공한 데이터 파일을 저장합니다. 하루에 하나씩 만들어집니다.
그리고, /BELOG/DB/<domain_id>/ydb 디렉토리에 1년에 하나씩 파일을 만들고, 그 파일에 일일 웹 로그 데이터를 분석한 수치값만 저장합니다.

/BELOG/LOG/DEMO/weblog/2024/2024-02-01-access.wlog ----> BELOG-buildDB ----> /BELOG/DB/DEMO/pday/2024/2024-02-01-belog.udb ----> BELOG-buildDB ----> /BELOG/DB/DEMO/ydb/y.2024.ydb

이렇게 만들어진 yyyy-mm-dd-belog.udb 데이터 파일을 참조하여, 다음의 메뉴 탭에 대한 데이터를 보여 줍니다.

[일일 분석 보기], [2일 비교 보기], [목록 보기],[경로 추적]

y.year.ydb 파일은 그 위의 메뉴 탭에서 사용합니다.


디스크 공간이 부족하여 DB 데이터 파일도 삭제하고 싶을 경우, 다음과 같이 데이터 파일을 삭제할 수 있습니다. 다음의 명령어는 365일이 지난 DB 데이터 파일을 삭제합니다.

# /opt/BELOG/bin/BEopsdb delete -d DEMO -r old=365+ DomainID: DEMO /BELOG/DB/DEMO/pday/2022/2022-01-06-belog.udb /BELOG/DB/DEMO/pday/2022/2022-01-07-belog.udb ... skip ... /BELOG/DB/DEMO/pday/2023/2023-05-17-belog.udb /BELOG/DB/DEMO/pday/2023/2023-05-18-belog.udb Do you want to delete the above 497 files ? [y/n]:

이렇게 DB 데이터 파일을 삭제하면, [일일 분석 보기], [2일 비교 보기], [목록 보기],[경로 추적]에서 삭제한 데이터에 대한 자료를 조회할 수 없습니다.

[주간 비교 보기], [일별 세부 보기], [일별 보기], [주별 보기], [월별 보기], [연별 보기], [보고서]는 해당 도메인 밑에 있는 y.yead.ydb 파일을 참조합니다.

/BELOG/DB/<domain_id>/ydb

이 디렉토리에 있는 파일들은 삭제되지 않습니다.
이 디렉토리에는 1년에 하나씩 파일이 만들어지고, 그 파일의 크기도 1 MB를 넘지 않습니다.


2.3 클라이언트 모드 구성하기

클라이언트 모드로 구성하기 위해서 다음과 같은 설정이 필요합니다.

1. belogd 서비스 중단 (# systemctl stop/disable belogd) (필수)
2. 클라이언트 구성 파일 설정 (/opt/BELOG/etc/BELOG-cli.conf) (필수)
3. 웹 로그 전송 스크립트 cron 테이블에 등록하기 (# crontab -e) (필수)
4. sendlog-once 서비스 기동 (# systemctl start/enable sendlog-once) (필수)
5. 비이로그 서버 연결 테스트 (# /opt/BELOG/bin/BELOG-check) (옵션)
6. 테스트로 웹 로그 파일 전송하기 (# /opt/BELOG/cron/send_weblog_cron.sh) (옵션)

클라이언트 모드에서 구성에 변경이 발생하는 디렉토리는 다음과 같습니다.

/opt/BELOG/etc 비이로그 클라이언트 구성 파일이 있는 디렉토리


2.3.1 belogd 서비스 중단 (# systemctl stop/disable belogd)

비이로그 패키지를 설치하면, 디폴트로 비이로그 서버에 설치되는 것으로 가정되어, 서버 모드에 필요한 웹 로그 데이터를 수신하는 belogd 데몬 프로세스가 시스템 서비스에 의해 자동으로 기동되게 설정되어 있습니다.
클라이언트 웹 서버에 설치할 경우에 belogd 데몬 프로세스를 중단할 필요가 있습니다. 다음과 같이 중단할 수 있습니다.

# systemctl stop belogd # systemctl disable belogd Removed symlink /etc/systemd/system/multi-user.target.wants/belogd.service.


2.3.2 클라이언트 구성 파일 설정 (/opt/BELOG/etc/BELOG-cli.conf)

비이로그 패키지를 설치하면 /opt/BELOG/etc/samples 디렉토리에 BELOG-cli.conf.sample 파일이 있습니다. 이 파일은 /opt/BELOG/etc/BELOG-cli.conf 명으로 복사한 후에 그 내용을 수정하면 됩니다. 다음은 BELOG-cli.conf.sample 파일의 내용입니다.
하나의 웹 서버가 발생하는 웹 로그를 하나의 도메인이라고 지칭합니다.

LOGSERVER=192.168.0.117 BASEDIR=/data/weblog #TCP_PORT=7811 [DEMO] BELOG_LOG_FILE_NAME=ssl_access_log.%Y%m%d #[DEMO_NS] #BELOG_LOG_FILE_NAME=access_log.%Y%m%d

이 구성 파일은 /opt/BELOG/bin/BELOG-sendlog 명령어에 의해 사용됩니다.
/opt/BELOG/bin/BELOG-sendlog 명령어는 /opt/BELOG/cron/send_weblog_cron.sh 쉘 스크립트에 의해 사용됩니다.
/opt/BELOG/cron/send_weblog_cron.sh 쉘 스크립트는 cron 테이블에 등록되어 하루에 한번씩 고객의 웹 로그 파일을 비이로그 서버로 전송합니다.

다음은 클라이언트 구성 파일(/opt/BELOG/etc/BELOG-cli.conf)에 사용되는 파라미터에 대한 설명입니다. 구성 파일에서 '#'으로 시작하는 라인은 주석으로 처리됩니다.

파라미터 설명
LOGSERVER 비이로그 서버 IP를 지정합니다.
BASEDIR 웹 로그가 저장되는 디렉토리를 지정합니다.
TCP_PORT 비이로그 서버에서 웹 로그 데이터를 수신하는 belogd 데몬 프로세스가 사용하는 TCP port 번호를 지정합니다. 디폴트는 7811입니다.
[DEMO] 대괄호로 둘러싸서 도메인 ID을 지정합니다. (도메인 ID와 대괄호 사이에 공백이 있으면 안됨).

도메인 ID는 영문자와 숫자, 도트, 마이너스부호, 언더라인으로 구성할 것을 추천합니다.
(특수 문자가 들어가면 오류를 발생할 가능성이 있음)도메인 ID가 지정되면, 그 이후의 설정 값은 그 도메인에 만 적용됩니다.

BELOG_LOG_FILE_NAME 아파치 구성 파일에서 CustomLog 에 “|/usr/sbin/rotatelogs”에 정의된 파일명을 지정합니다.

예제) ssl_access_log.%Y%m%d

이 파일명에는 반드시 날짜를 표시하는 특수문자 %Y %m %d 가 포함되어 있어야 합니다.
여기서 %m은 두자리 수의 달(month)을 표시하고 %d는 2자리 숫자의 일(day)을 표시하고,%Y는 4자리 숫자의 연도(year)를 표시합니다.
위의 3개 이외의 % 표기법이 있으면 안 됩니다.


2.3.3 웹 로그 전송 스크립트 cron 테이블에 등록하기 (# crontab -e)

앞에서 /opt/BELOG/etc/BELOG-cli.conf 구성 파일이 작성되면, 고객의 웹 로그 파일을 비이로그 서버에 전송할 준비가 완성되었습니다.
웹 로그는 /opt/BELOG/cron/send_weblog_cron.sh 쉘 스크립트를 사용하여 간단히 비이로그 서버에 전송할 수 있습니다.

다음은 /opt/BELOG/cron/send_weblog_cron.sh 쉘 스크립트에 대한 간단한 사용법입니다.

# /opt/BELOG/cron/send_weblog_cron.sh -? Usage ./send_weblog_cron.sh [-W][-L][-v][-d domains][-m] -n num_prev_day ./send_weblog_cron.sh [-W][-L][-v][-d domains] -y yyyy/mm/dd ./send_weblog_cron.sh -C [-d domains] -y -n num_prev_day ./send_weblog_cron.sh -C [-d domains] -y -n yyyy/mm/dd -C check log data in the server -L print error message to syslod -m check and send the previous day's log file additionally with '-n 1' option -W overwite web log file in the server and rebuild DB files -d domain_ids specify the domain_ids EXAMPLE) ./send_weblog_cron.sh -n 1 ./send_weblog_cron.sh -y 2023/07/25 ./send_weblog_cron.sh -W -n 1 ./send_weblog_cron.sh -C -n 1

고객의 웹 로그 파일을 비이로그 서버에 전송하려면, 다음과 같이 cron 테이블에 등록하여야 합니다.

10 0 * * * /opt/BELOG/cron/send_weblog_cron.sh -L -n 1

위와 같이 등록하면, 매일 0시 10분에 /opt/BELOG/cron/send_weblog_cron.sh 명령어가 실행됩니다.
전송하는 시간은 필요한 시간으로 변경해도 됩니다.

-n 1 옵션을 지정하였기 때문에 하루 전의 웹 로그 데이터를 비이로그(BeLOG) 서버로 전송합니다. -n 2 옵션을 지정하면, 2일전의 웹 로그 데이터를 비이로그(BeLOG) 서버로 전송합니다. -L 옵션을 지정하면, 오류 발생시에 syslogd에게 오류 메시지를 보냅니다. -n 옵션 대신 -y 옵션을 사용하여 년월일을 바로 지정할 수 있습니다. -v 옵션을 지정하면, 전송할 웹 로그 파일과 비이로그 서버의 IP를 화면에 출력해줍니다.

하루 전의 웹 로그를 전송했는데, 다시 한번 더 전송하면, 다음과 같이 주의 메세지가 나옵니다.

# /opt/BELOG/cron/send_weblog_cron.sh -n 1 NOTICE: file '/BELOG/LOG/DEMO/weblog/2024/2024-10-10-access.wlog' already exists size=18101425: the same size or bigger (sending size=18101425)

웹 로그 파일을 서버에 전송할 때, 비이로그 서버는 전송 받을 웹 로그 파일의 크기를 비교하여, 웹 로그를 다시 수신하지 여부를 판단합니다. 기존에 수신 받은 웹 로그 크기와 같거나 작은 파일을 전송하면, 위와 같이 주의 메세지를 보내고 웹 로그 파일을 수신받지 않습니다.

기존에 수신 받은 웹 로그 크기와 상관 없이 무조건 비이로그 서버에 웹 로그를 전송하고 싶으면, 다음과 같이 -W 옵션을 추가 지정하여 다음과 같이 실행할 수 있습니다.

# /opt/BELOG/cron/send_weblog_cron.sh -W -n 1 OK: uploaded. 2024/10/11 18:30:31 DEMO 2024/10/10 18101425 0.599 127.0.0.1 /BELOG/LOG/DEMO/weblog/2024/2024-10-10-access.wlog OK: build start. # /opt/BELOG/bin/BELOG-buildDB -R -m -d DEMO -D 2024/10/10 === Start build: /BELOG/LOG/DEMO/weblog/2024/2024-10-10-access.wlog ==to== /BELOG/DB/DEMO/pday/2024/2024-10-10-belog.udb === Finish build: weblog: 18101425 bytes, 31340 lines, 0 warning; visitor=7704 pageview=9108 request=31340; dbfile: 532838 bytes, elapsed_time: 3.367 second, mem_usage: 20 MB OK: done.

다음은 오늘의 웹 로그를 전송하는 스크립트 명령어 입니다. 숫자 0은 오늘날짜의 웹 로그를 지정하는 것입니다.

# /opt/BELOG/cron/send_weblog_cron.sh -n 0 OK: uploaded. 2024/10/11 18:33:15 DEMO 2024/10/11 18164807 0.557 127.0.0.1 /BELOG/LOG/DEMO/weblog/2024/2024-10-11-access.wlog OK: build start. # /opt/BELOG/bin/BELOG-buildDB -R -m -d DEMO -D 2024/10/11 === Start build: /BELOG/LOG/DEMO/weblog/2024/2024-10-11-access.wlog ==to== /BELOG/DB/DEMO/pday/2024/2024-10-11-belog.udb === Finish build: weblog: 18164807 bytes, 31425 lines, 0 warning; visitor=7573 pageview=9338 request=31425; dbfile: 538235 bytes, elapsed_time: 3.358 second, mem_usage: 21 MB OK: done.

오늘 웹 로그는 계속 증가 될 수 있으므로 나중에 크기가 증가된 후에 한번 더 오늘의 웹 로그를 전송하면, 비이로그 서버는 더 큰 웹 로그 파일이 전송되기 때문에 기존의 파일을 지우고 새로 웹 로그 파일을 수신합니다.

비이로그 서버는 웹 로그를 수신 받으면, 수신 받은 웹 로그를 BELOG-buildDB 명령어를 사용하여 웹 로그를 분석하여 DB 파일을 만듭니다.


2.3.4 sendlog-once 서비스 기동 (# systemctl start/enable sendlog-once)

클라이언트 웹 서버의 웹 로그는 하루에 한번씩 cron에 등록한 웹 로그 전송 스크립트 '/opt/BELOG/cron/send_weblog_cron.sh'에 의해 비이로그 서버에 전송됩니다. 만일 시스템이 웹 로그를 전송하는 시간에 시스템이 다운되어 있었다면, 그 전날의 웹 로그를 전송할 수 없게 됩니다.
이러한 문제를 해결하기 위해, 시스템이 부팅될 떄, 전날의 웹 로그를 한번 전송하는 쉘 스크립트를 실행하는 시스템 서비스를 등록하여야 합니다.

# systemctl enable sendlog-once

sendlog-once 서비스를 enable 하면, 시스템이 다시 기동될때, 서비스가 자동으로 시작합니다.
전송할 하루 전의 웹 로그 파일이 없으면, 아무런 메세지 없이 종료합니다. 전날의 웹 로그 파일이 제대로 전송되었다면, NOTICE 메세지를 출력하고 종료합니다.

다음과 같이 'systemctl status sendlog-once' 명령어로 시스템 서비스의 상태를 확인할 수 있습니다.

# systemctl status sendlog-once * sendlog-once.service - BELOG - sendlog once on boot" Loaded: loaded (/etc/systemd/system/sendlog-once.service; enabled; vendor preset: disabled) Active: inactive (dead) since Fri 2024-10-11 19:46:21 KST; 9min ago Process: 4191 ExecStart=/opt/BELOG/cron/send_weblog_cron.sh -0 -n 1 (code=exited, status=0/SUCCESS) Main PID: 4191 (code=exited, status=0/SUCCESS) CPU: 36ms Oct 11 19:46:19 linux9.com systemd[1]: Started BELOG - sendlog once on boot". Oct 11 19:46:21 linux9.com systemd[1]: sendlog-once.service: Deactivated successfully.


2.3.5 비이로그 서버 연결 테스트 (# /opt/BELOG/bin/BELOG-check)

클라이언트/서버 구성 파일을 작성했으면, 다음과 같이 비이로그 서버와 네트웍 연결이 잘 되는지 다음과 같이 '/opt/BELOG/bin/BELOG-check' 명령어로 테스트 해볼 수 있습니다.

# /opt/BELOG/bin/BELOG-check OK: checked. SERVER=192.168.0.117: VERSON=V9.0.0 CLIENT_IP=192.168.0.119

BELOG-check 명령어에 도메인명을 지정하면, 비이로그 서버에 해당 도메인에 대한 설정이 제대로 되었는지 다음과 같이 확인할 수 있습니다.

# /opt/BELOG/bin/BELOG-check -d DEMO SERVER=192.168.0.117: VERSON=V9.0.0 CLIENT_IP=192.168.0.119 DOMAIN_ID=DEMO WEBLOG_DIR=/BELOG/LOG/DEMO/weblog DB_DIR=/BELOG/DB/DEMO/pday LOG_FS_USAGE=86.8% LOG_FS_AVAIL=3.31GB

여기에서 CLIENT_IP에 있는 IP 주소는 BELOG-check 명령어를 실행한 시스템의 IP 입니다.


2.3.6 테스트로 웹 로그 파일 전송하기 (# /opt/BELOG/cron/send_weblog_cron.sh)

고객의 아파치 웹 서버의 로그 파일이 새로 저장되었으면, 다음과 같이 오늘의 웹 로그 파일을 전송할 수 있습니다.
-n 0을 오늘의 날짜의 웹 로그 파일을 전송하라는 옵션입니다.

# /opt/BELOG/cron/send_weblog_cron.sh -n 0 OK: uploaded. 2024/10/11 18:33:15 DEMO 2024/10/11 18164807 0.557 127.0.0.1 /BELOG/LOG/DEMO/weblog/2024/2024-10-11-access.wlog OK: build start. # /opt/BELOG/bin/BELOG-buildDB -R -m -d DEMO -D 2024/10/11 === Start build: /BELOG/LOG/DEMO/weblog/2024/2024-10-11-access.wlog ==to== /BELOG/DB/DEMO/pday/2024/2024-10-11-belog.udb === Finish build: weblog: 18164807 bytes, 31425 lines, 0 warning; visitor=7573 pageview=9338 request=31425; dbfile: 538235 bytes, elapsed_time: 3.358 second, mem_usage: 21 MB OK: done.

오늘의 웹 로그 파일은 내일 cron 에 의해 다시 한번 더 전송됩니다. 지금 이후로 증가분이 있으면, 내일 반영됩니다.