설치 매뉴얼
개요
아파치 웹 서버의 액세스 로그와 에러 로그 파일을 수집합니다. 소나가 SSH(SFTP)로 웹 서버에 접속해 로그 파일을 읽으며, 로그프레소 노드가 로그 디렉터리를 직접 읽을 수 있으면 로컬 파일로도 수집할 수 있습니다. 액세스 로그는 앱이 제공하는 대시보드에서 확인합니다.
적용 범위
요구 사항
| 항목 | 요구사항 | 비고 |
|---|---|---|
| 액세스 로그 | Combined 로그 형식 | 아래 단계 1: 로그 형식 확인 참고 |
| 에러 로그 | 아파치 웹 서버 2.4 기본 에러 로그 형식 | 2.2 형식이나 ErrorLogFormat을 변경한 로그는 "미분류"로 수집됨 |
| 파일 접근 권한 | 로그 디렉터리와 로그 파일에 대한 읽기 권한 | 로컬 수집 시 소나 수집 노드 계정, SFTP 수집 시 SSH 계정 |
| 네트워크 허용 (SFTP 사용 시) | TCP/22 (소나 수집 노드 → 아파치 웹 서버, Outbound) | 로컬 파일 수집 시 해당 없음 |
아파치 웹 서버 설정
단계 1: 로그 형식 확인
액세스 로그는 아래 Combined 형식이어야 합니다. 아파치 설정 파일에서 CustomLog 지시자가 이 형식을 사용하는지 확인합니다.
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
CustomLog "logs/access_log" combined
에러 로그는 ErrorLogFormat을 따로 지정하지 않은 기본 형식을 수집합니다. 이와 다른 형식의 로그도 수집은 되지만 필드가 파싱되지 않고 "미분류"로 분류됩니다.
단계 2: 로그 파일 위치 확인
아파치 웹 서버는 배포판에 따라 아래 경로에 로그 파일을 생성합니다. 가상 호스트별로 로그 파일을 따로 지정했다면 아파치 설정의 CustomLog, ErrorLog 지시자에서 경로를 확인합니다.
| 배포판 | 디렉터리 경로 | 액세스 로그 | 에러 로그 |
|---|---|---|---|
| RHEL 계열 | /var/log/httpd | access_log | error_log |
| Debian·Ubuntu | /var/log/apache2 | access.log | error.log |
SFTP로 수집하는 경우, 로그 디렉터리와 로그 파일의 소유자·권한을 확인하고 로그프레소 접속 계정이 로그 파일을 읽을 수 있도록 설정합니다. 접속 계정은 아파치 웹 서버 로그만 읽을 수 있도록 권한을 제한합니다.
로그프레소 수집 설정
액세스 로그와 에러 로그는 수집기를 각각 등록합니다. SFTP로 수집하는 경우 두 수집기가 같은 SSH 접속 프로파일을 사용합니다.
단계 1 (SFTP 원격 파일 수집 시): SSH 접속 프로파일 추가
원격 웹 서버의 로그 파일을 SFTP로 수집하는 경우, 접속 정보를 접속 프로파일로 먼저 등록합니다. 로컬 파일로 수집하는 경우 이 단계를 건너뜁니다. 시스템 > 접속 프로파일에서 추가를 클릭하고 아래 값을 입력합니다.
| 구분 | 항목 | 설정 |
|---|---|---|
| 필수 | 이름 | 접속 프로파일을 식별할 고유한 이름. 예: 아파치 웹 서버 SSH |
| 필수 | 식별자 | 로그프레소 쿼리 등에서 사용할 고유 식별자. 예: ssh-example |
| 필수 | 유형 | SSH 선택 |
| 필수 | 호스트 | 아파치 웹 서버의 IP 주소 또는 호스트 이름 |
| 필수 | 포트 | SSH 포트. 기본값 22 |
| 필수 | 계정 | 로그 디렉터리에 읽기 권한이 있는 SSH 계정 |
| 필수 | 인증 유형 | 인증 키 또는 암호 선택 |
| 조건부 | 암호 | 인증 유형이 암호인 경우 계정 암호 입력 |
| 필수 | 타임아웃 | 초 단위 접속 타임아웃. 기본값 30 |
| 선택 | 접속 유지 시간 | 밀리초 단위 Keep-Alive 간격. 미입력 시 기본값 사용 |
인증 키를 사용하는 경우 공개키 설정 방법 버튼을 클릭하면 웹 서버에서 SSH 키 기반 인증을 설정하는 방법과 소나의 SSH 공개키를 확인할 수 있습니다. 안내에 따라 접속 계정의 authorized_keys 파일에 공개키를 등록합니다.
설정을 마치면 쿼리 화면에서 아래와 같이 실행해 로그 파일 내용이 출력되는지 확인합니다. 경로는 환경에 맞게 바꿉니다.
에러 로그도 같은 방법으로 확인합니다.
단계 2: 액세스 로그 수집기 추가
수집 > 수집기에서 추가를 클릭하고 아래 값을 입력합니다.
| 구분 | 항목 | 설정 |
|---|---|---|
| 필수 | 이름 | 수집기를 식별할 고유한 이름. 예: Apache Access |
| 필수 | 실행 방식 | 주기 선택 |
| 필수 | 주기 | 초 단위 수집 주기. 예: 5 |
| 필수 | 적재 위치 | 로그를 적재할 노드 선택 |
| 선택 | 수집 위치 | 수집을 수행할 센트리 선택 |
| 필수 | 수집 모델 | Apache HTTP Server - SFTP 선택 |
| 필수 | 테이블 | WEB_APACHE_로 시작하는 테이블 이름. 예: WEB_APACHE_ACCESS |
| 필수 | SSH 프로파일 | 단계 1에서 등록한 접속 프로파일. 예: ssh-example |
| 필수 | 디렉터리 경로 | 로그 파일이 있는 디렉터리의 절대 경로. 예: /var/log/httpd |
| 필수 | 파일이름 패턴 | 액세스 로그 파일 이름에 일치하는 정규식. 예: access_log |
앱이 제공하는 대시보드는 이름이 WEB_APACHE_로 시작하는 테이블을 조회하므로, 테이블 이름은 WEB_APACHE_로 시작하도록 지정합니다.
파일이름 패턴은 파일 이름 전체와 일치하는 정규표현식입니다. 같은 디렉터리의 에러 로그가 섞이지 않도록 액세스 로그 파일만 지정합니다. Debian·Ubuntu에서는 access\.log를 입력합니다.
단계 3: 에러 로그 수집기 추가
수집 > 수집기에서 추가를 클릭하고 아래 값을 입력합니다.
| 구분 | 항목 | 설정 |
|---|---|---|
| 필수 | 이름 | 수집기를 식별할 고유한 이름. 예: Apache Error |
| 필수 | 실행 방식 | 주기 선택 |
| 필수 | 주기 | 초 단위 수집 주기. 예: 5 |
| 필수 | 적재 위치 | 로그를 적재할 노드 선택 |
| 선택 | 수집 위치 | 수집을 수행할 센트리 선택 |
| 필수 | 수집 모델 | Apache HTTP Server Error - SFTP 선택 |
| 필수 | 테이블 | WEB_APACHE_로 시작하지 않는 테이블 이름. 예: APACHE_ERROR |
| 필수 | SSH 프로파일 | 단계 1에서 등록한 접속 프로파일. 예: ssh-example |
| 필수 | 디렉터리 경로 | 로그 파일이 있는 디렉터리의 절대 경로. 예: /var/log/httpd |
| 필수 | 파일이름 패턴 | 에러 로그 파일 이름에 일치하는 정규식. 예: error_log |
Debian·Ubuntu에서는 파일이름 패턴에 error\.log를 입력합니다.
로그프레소 노드가 아파치 웹 서버의 로그 디렉터리를 직접 읽을 수 있는 경우, 수집 모델로 Apache HTTP Server - File, Apache HTTP Server Error - File을 선택하면 접속 프로파일 없이 로컬 파일로 수집합니다. 이때 SSH 프로파일 항목은 표시되지 않으며, 수집 위치는 로그 디렉터리가 있는 노드로 지정합니다.
설치 후 검증
아래 쿼리로 수집이 실제로 동작하는지 최종 확인합니다. 테이블 이름은 단계 2·3에서 입력한 값으로 바꿔 실행합니다.
- 정상:
WEB_APACHE_ACCESS테이블의 레코드 수가 1 이상.APACHE_ERROR테이블은 최근 10분간 에러가 없었다면 비어 있을 수 있으며, 이 경우에도 정상입니다. - 비정상: 웹 요청이 있었는데도
WEB_APACHE_ACCESS결과가 없으면 접속 프로파일의 호스트·계정·인증 정보, 접속 계정의 로그 파일 읽기 권한, 수집기의 디렉터리 경로와 파일이름 패턴을 재확인합니다. - 수집 오류: 수집기 상태가 오류로 표시되면 수집기의 오류 보기에서 원인을 확인합니다.





