카테고리 보관물: Monitoring

rsyslog-mysql + Log Analyzer 설치

설치 환경

  • CentOS 7.1 64bit
  • Apache 2.4
  • PHP 5.4
  • MariaDB 5.5

rsyslog-mysql

  • rsyslog-mysql의 스키마 탬플릿을 활용하여 Syslog서버의 로그를 MariaDB 또는 MySQL의 DB에 보관 처리를 구현할 수 있습니다.
  • 로그가 쌓이는 SystemEvents 테이블의 사이즈만 주기적으로 관리한다면 대량의 서버 또는 네트워크 장비의 로그도 관리 및 활용이 용이합니다.
  • 선행 설치 패키지 필요(rsyslog, MariaDB(https://www.sierracloud.kro.kr/mariadb-10-3-%ec%84%a4%ec%b9%98/))
# rpm -qa | grep rsyslog-mysql
# yum install rsyslog-mysql

  • DB Create
// DB 정상 생성 확인 캐릭터셋 UTF8 변경 후 SQL 스크립트 적용
# mysql -u root -p < /usr/share/doc/rsyslog-mysql-7.4.7/createDB.sql

# mysql -u root -p
// 계정 생성
> create user 'rsyslog'@'localhost' identified by 'rsyslog';

// 권한 부여
> grant all on Syslog.* to 'rsyslog'@'localhost' with grant option;
> flush privileges;

  • rsyslog Server Setting
# vi /etc/rsyslog.conf
// 파일 포맷 탬플릿 지정
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
// 커널 로그 모듈 활성화
$ModLoad imklog
// 로그 작성 제어 모듈
$ModLoad imuxsock
// 통신용 Listen Port 지정
$ModLoad imudp
$UDPServerRun 514
$ModLoad imtcp
$InputTCPServerRun 514
// DB 연동 모듈
$ModLoad ommysql.so
// DB 칼럼 포맷
$template dbFormat,"insert into SystemEvents (Message, Facility, FromHost, Priority, DeviceReportedTime, ReceivedAt, InfoUnitID, SysLogTag) values ('%msg%', %syslogfacility%, '%FROMHOST%', %syslogpriority%, '%timereported:::date-mysql%', '%timegenerated:::date-mysql%', %iut%, '%syslogtag%')",SQL
// 로그 별 DB 포맷 설정
*.info;mail.none;authpriv.none;cron.none :ommysql:localhost,Syslog,rsyslog,rsyslog;dbFormat

// rsyslog 재시작
# systemctl restart rsyslog

Log Analyzer

  • 기 구성된 rsyslog-mysql을 통해 웹상에서 조회 및 그래프 처리를 해주는 솔루션입니다.
  • 오래되긴 했지만 기능도 단순하고 무료이므로 편하게 사용하기 좋았었습니다.
  • 선행 설치 패키지 필요(httpd, php-mysql)
  • log analyzer 설치 및 설정
// Log Analyzer 다운 및 압축 해제
# wget http://download.adiscon.com/loganalyzer/loganalyzer-3.0.6.tar.gz
# tar zxvf loganalyzer-3.0.6.tar.gz

// 웹소스 복사(아파치가 설치된 DocumentRoot의 Sub디렉토리에 위치시킴)
# cp -r loganalyzer3.0.6/src/* /var/www/html/Rsyslog
// 구성 파일 복사(아파치가 설치된 DocumentRoot의 Sub디렉토리에 위치시킴)
# cp loganalyer-3.0.6/contrib/* /var/www/html/Rsyslog/
/ 권한 변경
# chmod +x configure.sh secure.sh
실행
# ./configure.sh

  • 웹 설치
브라우저http://’ip address’/Rsyslog
here 클릭 
Next 클릭 
Next 클릭 
DB 정보 입력 후Next 클릭Enable User Database = Yes
Database Name = Syslog
Database User = rsyslog
Database Password = rsyslog
Next 클릭Step 5 내용 확인 후 Next 클릭 
관리자 계정 정보 입력 후 Next 클릭 ※ 분실시 주의
DB 정보 입력 후 Next 클릭MYSQL Native 선택
Database Name = Syslog
Database Tablename = SystemEvents (대소문자 구분)
Database User = rsyslog
Database Password = rsyslog
Enable Row Counting = Yes
완료 
캡쳐한게 없네요…..

  • 축하드립니다… 설치를 성공하셨으면 아래 같은 화면을 보시게 될겁니다…

Syslog Server 설정

Server Side

  • CentOS(RHEL)의 경우 기본 경로는 /var/log/* 이며 필요시 아래와 같이 /logs/* 로 변경이 가능 합니다.
  • CentOS 7 설치
# vi /etc/rsyslog.conf
// 커널 로그 모듈 활성화
$ModLoad imklog
// 로그 저장 경로 변경 또는 추가
*.info;mail.none;authpriv.none;cron.none    /logs/messages
authpriv.*                                  /logs/secure
cron.*                                      /logs/cron
uucp,news.crit                              /logs/spooler
local7.*                                    /logs/boot.log

// Service 재시작
# systemctl restart rsyslog
  • CentOS 6 설치
# vi /etc/rsyslog.conf
// 커널 로그 모듈 활성화
$ModLoad imklog
// 로그 저장 경로 변경 또는 추가
*.info;mail.none;authpriv.none;cron.none    /logs/messages
authpriv.*                                  /logs/secure
cron.*                                      /logs/cron
uucp,news.crit                              /logs/spooler
local7.*                                    /logs/boot.log

// Service 재시작
# service rsyslog restart

Client Side

  • 리눅스의 경우 rsyslog.conf 또는 syslog.conf에 아래 행을 추가 하여 Syslog 서버로 로그를 전송할 수 있습니다.
  • CentOS 7 설치
# vi /etc/rsyslog.conf
// 커널 로그 모듈 활성화
$ModLoad imklog
// 로그 서버 IP(ex> 192.168.0.200) 또는 Hostname 추가
*.* @192.168.0.200

// Service 재시작
# systemctl restart rsyslog
  • CentOS 6 설치
# vi /etc/rsyslog.conf
// 커널 로그 모듈 활성화
$ModLoad imklog
// 로그 서버 IP(ex> 192.168.0.200) 또는 Hostname 추가
*.* @192.168.0.200

// Service 재시작
# service rsyslog restart
  • Windows 설치(eventlog-to-syslog)
  1. 윈도우 계열의 이벤트로그(eventlog)를 Syslog 서버로 전송
  2. App 다운 및 압축 해제(http://code.google.com/p/eventlog-to-syslog)
  3. 해당 파일을 C:\Windows\System32\ 로 복사
  4. evtsys 서비스 설치(아래 Prompt 또는 Powershell 실행)
  5. services.msc 실행 서비스 등록 확인 후 속성에서 시작 유형 ‘자동’ / 변경 후 서비스 시작
// 192.168.0.200의 Syslog 서버의 514 포트로 이벤트로그를 전송하는 서비스 설치
C:\Windows\System32> evtsys -i -h 192.168.0.200 -p 514
Usage: evtsys -i|-u|-d [-h host[;host2;…]] [-f facility] [-p port]
       [-t tag] [-s minutes] [-q bool] [-l level] [-n] [-a]
  -i           Install service
  -u           Uninstall service
  -d           Debug: run as console program
  -a           Use our IP address (or fqdn) in the syslog message
  -h hosts     Name of log host(s), separated by a ‘;’
  -f facility  Facility level of syslog message
  -l level     Minimum level to send to syslog
               0=All/Verbose, 1=Critical, 2=Error, 3=Warning, 4=Info
  -n           (**Win9x/Server 2003 Only**) Include only those events specified
               in the config file
  -p port      Port number of syslogd
  -q bool      Query the Dhcp server to obtain the syslog/port to log to
               (0/1 = disable/enable)
  -t tag       Include tag as program field in syslog message
  -s minutes   Optional interval between status messages. 0 = Disabled


Default port: 514
Default facility: daemon
Default status interval: 0
Host (-h) required if installing.
Command did not complete due to a failure
Evtsys Options

Zabbix Server 설치

※ 설치 시기가 오래된 관계로 최근 버전과 설치 방식이 상이할 수 있습니다.

사전 설치 환경 구성(Pre Configuration)

  • OS Version : CentOS(RHEL) 7 64bit
  • Web Service : Apache (httpd)
  • Language : PHP (Version 5.4)
# /etc/php.ini 수정
max_execution_time=300      #스크립트의 최대 실행 시간
post_max_size=16M           #POST 방식으로 넘겨질 최대 데이터 크기
max_input_time=300          #스크립트 페이지로 넘어가기 전 php엔진이 데이터를 업로드 받는 최대 시간
date.timezone="Asia/Seoul"  #지역 시간 지정
  • DBMS : MariaDB or MySQL(Version 5.5)
# yum install MariaDB-shared MariaDB-devel MariaDB-common MariaDB-server MariaDB-client
// MariaDB 서비스 시작

# mysql_secure_installation
// 보안 설정 진행 ('enter' / 'password' / 'password' / y / n / y / y)

# mysql -uroot -p'password'
MariaDB [(none)]> CREATE DATABASE zabbix CHARACTER SET UTF8;
Query OK, 1 row affected (0.00 sec)

create user 'zabbix'@'localhost' identified by 'password'; #사용자 생성
create user 'zabbix'@'%' identified by 'password'; #원격 접근 사용자 생성

MariaDB [(none)]> GRANT ALL PRIVILEGES on zabbix.* to 'zabbix'@'localhost' IDENTIFIED BY 'SECRET_PASSWORD';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
  • 관련 패키지 설치
# yum install net-snmp-devel curl-devel fping 2fsprogs-devel zlib-devel libgssapi-devel krd5-devel openssl-devel libidn-devel iksemel-devel libXpm openssh-clients php-xml php-xmlrpc sharutils net-snmp OpenIPMI-devel libssh2-devel php-bcmath php-gd php-mbstring -y
// 설치 실패 항목 존재시 Zabbix Pre Install Error 발생

Zabbix 설치(Version 2.4)

  • Zabbix 패키지 설치 및 설정
// Zabbix Repo 설치
# rpm -Uvh http://repo.zabbix.com/zabbix/2.4/rhel/7/x86_64/zabbix-release-2.4-1.el7.noarch.rpm

// Zabbix Server 설치
# yum install zabbix zabbix-server zabbix-web zabbix-server-mysqlzabbix-web-mysql zabbix-agent -y

// 환경설정 수정
# /etc/zabbix/zabbix_server.conf
DBName=zabbix
DBUser=zabbix
DBPassword='Database 접근 계정 비밀번호'
StartSNMPTrapper=1
ListenIP='NIC IP Address',127.0.0.1
CacheSize=128M
HistoryCacheSize=128M
TrendCacheSize=64M
HistoryTextCacheSize=128M
Timeout=30
  • DB Schema Insert
// 스키마 생성(DB Table 생성 및 Data 입력)
# mysql -u zabbix -p zabbix < /usr/share/doc/zabbix-server-mysql-2.4.6/create/schema.sql

// 이미지 생성(3.0  버전 이후 zcat create.sql.gz | mysql -u root zabbix)
# mysql -u zabbix -p zabbix < /usr/share/doc/zabbix-server-mysql-2.4.6/create/images.sql

// 데이터 생성
# mysql -u zabbix -p zabbix < /usr/share/doc/zabbix-server-mysql-2.4.6/create/data.sql

Zabbix WEB 설치

  • WEB Document root 변경 : /usr/share/zabbix 디렉토리를 아파치의 기본 경로로 변경 하거나 Document root로 복사
  • 아파치 재시작 후 웹브라우저로 해당 웨서버 접속
  • 설치 과정 진행(캡쳐 화면은 2.2 버전을 활용한 것으로 실제와 차이가 다소 있습니다.)
정상 접속 상태 Next 이동
Required를 모두 충족 하면 OK상태 Fail이 하나라도 있으면 진행안됨
Required를 참고 하여 모두 적용 후 Next 이동
Database 정보 입력 모두 입력 후(MySQL 또는 MariaDB 선택, 기본 포트 미변경시 0 유지)
Test connection에 성공 하면 Next 이동
Host의 localhost 또는 IP 및 Port Num 확인 후 Next 이동
설정 확인 후 Next 이동
Fail 발생시 /usr/share/zabbix/conf/zabbix.conf.php.example 파일을 Document root 의 conf/zabbix.conf.php로 복사
Retry 재시도
OK 상태 확인 후 Finish 이동
// zabbix-server 등록
# systemctl enable zabbix-server

// zabbix-server 시작
# systemctl start zabbix-server
※시작 오류 발생시 yum update trousers
Zabbix WEB 로그인 후 정상 페이징 상태 확인(admin/zabbix)

Zabbix-agent 환경 설정

  • 설정 및 서비스 재시작
# /etc/zabbix/zabbix_agentd.conf 수정
Server=127.0.0.1          # 로컬호스트가 아닌 경우 실제 IP 입력
Hostname=hostname         # 호스트네임 적용
# ServerActive=127.0.0.1  # 주석처리

// zabbix-agent 등록
# systemctl enable zabbix-agent

// zabbix-agent 시작
# systemctl start zabbix-agent
  • Zabbix 관리 페이지에서 Hosts에 agent를 추가하여 모니터링 시작