Skip to content
README.md 8.2 KiB
Newer Older
이 종수's avatar
이 종수 committed
# Hawk Eye

이 종수's avatar
이 종수 committed
## **1. Hawk Eye server**
이 종수's avatar
이 종수 committed

hawk eye server는 http 기반의 alert 푸시 및 report을 위한 중계 서버입니다.
he-agent 혹은 사용자에 의한 http post Message를 받아 Mthink혹은 Email로 구독 메세지를 보냅니다.

### download
이 종수's avatar
이 종수 committed
다운로드 URL : https://lab.idatabank.com/gitlab/HawkEye/hawkeye-product/raw/master/hawkeye-server.zip
이 종수's avatar
이 종수 committed
Centos의 경우 아래와 같은 방법들로 download가 가능합니다. curl 을 추천.
이 종수's avatar
이 종수 committed
``` shell
curl -O https://lab.idatabank.com/gitlab/HawkEye/hawkeye-product/raw/master/hawkeye-server.zip
이 종수's avatar
이 종수 committed
wget https://lab.idatabank.com/gitlab/HawkEye/hawkeye-product/raw/master/hawkeye-server.zip
이 종수's avatar
이 종수 committed
```
이 종수's avatar
이 종수 committed

### System Requirement
#### Python

[python.org](https://www.python.org)

**version** python2 (2.7 >= )

#### Database
Recommended **SQLite3** or **MariaDB** 

-----

### Installation Guide
**Recommended** CentOS 7 Install

#### CentOS 7 Setup
* CenOS 7 을 최소 설치로 설치합니다.
	
* rpm 설치
    ``` shell
    yum upgrade -y
    yum groupinstall 'Development Tools' -y
    yum install zlib-devel openssl-devel
    ```
    
* pip 설치

    ```shell
    curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
    python get-pip.py
    ```
    
이 종수's avatar
이 종수 committed
-----	

### Hawkeye user 생성
#### user 생성
```shell
useradd hawkeye
su - hawkeye
이 종수's avatar
이 종수 committed
vi .bash_profile
```
```
export HAWKEYE_HOME=/home/hawkeye/hawkeye-server
이 종수's avatar
이 종수 committed
```

이 종수's avatar
이 종수 committed
#### hawkeye server 업로드 및 압축해제
hawkeye-server.zip UPLOAD
```shell
unzip hawkeye-server.zip
이 종수's avatar
이 종수 committed
cd $HAWKEYE_HOME
이 종수's avatar
이 종수 committed
```

이 종수's avatar
이 종수 committed
-----	
### Python Develoment tool Install
이 종수's avatar
이 종수 committed
ROOT 유저로 실행
이 종수's avatar
이 종수 committed
#### OS Library

```shell
yum install python-devel
```
이 종수's avatar
이 종수 committed

#### wkhtmltopdf Tool
Step 1: Install Dependencies
```shell
이 종수's avatar
이 종수 committed
yum install -y fontconfig libXrender libXext xorg-x11-fonts-Type1 xorg-x11-fonts-75dpi freetype libpng zlib libjpeg-turbo
이 종수's avatar
이 종수 committed
```
Step 2: Install wkhtmltopdf
```shell
이 종수's avatar
이 종수 committed
curl -O https://lab.idatabank.com/gitlab/HawkEye/hawkeye-product/raw/master/wkhtmltox-0.12.2.1_linux-centos7-amd64.rpm
이 종수's avatar
이 종수 committed
rpm -Uvh wkhtmltox-0.12.2.1_linux-centos7-amd64.rpm
```
Step 3: Testing
```shell
이 종수's avatar
이 종수 committed
wkhtmltoimage --quality 100 http://www.google.com google.jpg
이 종수's avatar
이 종수 committed
```
이 종수's avatar
이 종수 committed
  
#### Python Library Install
이 종수's avatar
이 종수 committed
(HAWKEYE_HOME)으로 이동하여 설치
이 종수's avatar
이 종수 committed
```shell
이 종수's avatar
이 종수 committed
cd /home/hawkeye/hawkeye-server
이 종수's avatar
이 종수 committed
pip install -r requirements.txt 
```

-----
### Database Library Install
#### Mysql db library

이 종수's avatar
이 종수 committed
mysql 혹은 mariadb 사용시에 설치합니다. ( sqlite3를 그대로 사용하시려면 생략하셔도 됩니다. )
이 종수's avatar
이 종수 committed

```shell
yum install mysql-devel
pip install flask-mysqldb
```

### Run hawkeye-server
#### configuration Hawkeye

```shell
> cd $HAWKEYE_HOME/config
> vi hawkeye.cfg
	HOST, PORT, PDF_TOOL 등을 수정합니다.
> vi checklist.ini
	서버 레포팅 상태체크를 위한 체크리스트 항목을 설정합니다.
> vi sendlist.ini
	경고 메시지를 받을 항목을 설정합니다.
이 종수's avatar
이 종수 committed
> start.sh
이 종수's avatar
이 종수 committed
```

이 종수's avatar
이 종수 committed
### PDF에 한글이 깨질 경우
ROOT 유저로

```shell
> curl -O http://static.campaign.naver.com/0/hangeul/renew/download/NanumFont_TTF.zip
> unzip NanumFont_TTF.zip
> mkdir /usr/share/fonts/nanumfont
> mv *.ttf /usr/share/fonts/nanumfont
> curl -O http://dev.naver.com/frs/download.php/443/ttf-nanum-coding-2.0-2.noarch.rpm
> rpm -i ttf-nanum-coding-2.0-2.noarch.rpm
```
이 종수's avatar
이 종수 committed


## **2. he-post**
김 덕곤's avatar
김 덕곤 committed

he-post는 he-server로 alert 및 report를 송신하는 에이전트 스크립트 모음입니다.

소스 : https://lab.idatabank.com/gitlab/HawkEye/he-post
이 종수's avatar
이 종수 committed

이 종수's avatar
이 종수 committed
다운로드 URL : https://lab.idatabank.com/gitlab/HawkEye/hawkeye-product/blob/master/he-post.zip
김 덕곤's avatar
김 덕곤 committed

### 에이전트 사용방법

1. conf/he.ini 파일에 HawkEye Server 호스트명 및 포트, 에이전트명을 등록합니다.
```
AGENT_NAME=sns
HE_HOST=lab.idatabank.com
HE_PORT=18080
```

2. conf/he.ini 파일에 보고서를 보내는 에이전트의 관리정보를 등록합니다.
```
CUSTOMER=(주)데이타뱅크
DEPARTMENT=IS사업부
TASK=개발인프라
HOSTNAME=SNS
OS=CentOS 7
DB=Oracle
```

3. bin 경로 아래에 있는 report 및 alert 스크립트를 cron에 아래와 같은 형대로 등록합니다. (윈도우의 경우 "예약된 작업")
```
# info.sh : Daily Report용 헤더 정보 전송.
30 8 * * * /home/he/bin/info.sh
# diskusage.sh : Daily Report용 디스크 사용량 레포트 전송
30 8 * * * /home/he/bin/diskusage.sh
# alert_rq.sh : Run Queue(vmstat r) 값을 주기적으로 체크하여 alert 발송
# 매분 수행하여, 값을 초과할 때 alert를 보냅니다.
* * * * * /home/he/bin/alert_rq.sh
# hb.sh : Hawk Eye Agent HeartBeat script
* * * * * /home/he/bin/hb.sh
```

### Hawk Eye 스크립트 설명.

1. info.sh / info.wsf : 일일 리포트에 출력되는 헤더 정보(고객정보)를 발송하는 스크립트. 일반적으로 1일 1회 발송합니다.
2. hb.sh / hb.wsf : Heart Beat 스크립트, Agent가 동작중임을 나타내는 Heart Beat 신호를 주기적으로 보냅니다.

## Daily Report 스크립트 설명.
날짜별 보고서 데이터를 보내는데 사용합니다.

1. diskusage.sh / diskusage.wsf : OS 디스크 공간 정보를 일일 보고서로 보냅니다.
2. databuffer.sh :
3. datafile.sh : 
4. export.sh :
5. hot.sh :
6. library.sh :
7. oracle_databuffer.sh / oracle_databuffer.wsf :
8. tablespace.sh : 

### Alert 스크립트 설명
주기적으로 시스템의 중요 체크 포인트를 체크하여, 중요 이벤트 발생이나, 임계값 초과가 발견되면, 경보를 보내는 스크립트.

1. alert_rq.sh : Unix에서 CPU 부하를 나타내는 Run Queue 값을 체크하여, 임계값을 초과하면 alert 발송.

### 추가 스크립트 작성 요령

bin/diskusage.sh 스크립트를 참조하여, 추가로 체크하고 싶은 항목을 스크립트로 작성하여 사용할 수 있습니다.
작성한 스크립트는 lib/\_report.sh 혹은 lib/\_alert.sh 를 통해서 서버로 데이터를 보낼 수 있습니다.

스크립트에서 보내는 값의 성격에 따라 아래와 같이 alert 혹은 report로 보낼 수 있습니다.

```
# 공통부분 시작
# load _precheck.sh
PRG="$0"
PRGDIR=`dirname "$PRG"`
. $PRGDIR/../lib/_precheck.sh
# 공통부분 끝

# Alert 전송시.
${HE_HOME}/lib/_alert.sh ${HE_HOST} ${HE_PORT} ${AGENT_NAME} "${LEVEL}" "${MESSAGE}"
# Report 전송시.
${HE_HOME}/lib/_report.sh ${HE_HOST} ${HE_PORT} ${AGENT_NAME} "${NAME}" "${CATEGORY}" "${PRIORITY}" "${TYPE}" "${CONTENTS}"
```
이 종수's avatar
이 종수 committed

## **3. mysql create table query**
``` sql
CREATE TABLE `servers` (
	`name`	VARCHAR(30) PRIMARY KEY ,
	`index`	INTEGER,	
	`data_updated`	DOUBLE,
	`pdf_updated`	DOUBLE,
	`pdf_name`	VARCHAR(256)
);

CREATE TABLE `informations` (
	`id`	INTEGER PRIMARY KEY AUTO_INCREMENT,
	`name`	VARCHAR(30),
	`customer`	VARCHAR(100),
	`department`	VARCHAR(100),
	`task`	VARCHAR(100),
	`hostname`	VARCHAR(100),
	`os`	VARCHAR(100),
	`database`	VARCHAR(100),
	`server_name` VARCHAR(30),
	FOREIGN KEY(server_name) REFERENCES servers(name)  
);

CREATE TABLE categories (
	`id`	INTEGER PRIMARY KEY AUTO_INCREMENT,
	`name`	VARCHAR(100),
	`server_name` VARCHAR(30),
	FOREIGN KEY(server_name) REFERENCES servers(name)  
);

CREATE TABLE items (
	`id`	INTEGER PRIMARY KEY AUTO_INCREMENT,
	`index`	INTEGER,
	`name`	TEXT,
	`category_id`	INTEGER,
	`priority`	INTEGER,
	`status`	INTEGER,
	`type`	INTEGER,
	`contents`	TEXT(3000),
	`option`	INTEGER,
	`server_name` VARCHAR(30),
	FOREIGN KEY(server_name) REFERENCES servers(name),
	FOREIGN KEY(category_id) REFERENCES categories(id)  
);


CREATE TABLE `heartbeats` (
	`name`	VARCHAR(30) PRIMARY KEY ,
	`beat_time`	DOUBLE,
	`period`	INTEGER,
	`message`	TEXT(3000),
	`status`	INTEGER,
	`modified_on`	TIMESTAMP
);


CREATE TABLE `he_monitoring_data` (
	`id`	INTEGER PRIMARY KEY AUTO_INCREMENT,
	`name`		VARCHAR(30),
	`status`	INTEGER,
	`period`	INTEGER,
	`message`	TEXT(3000),
	`update_time`	DOUBLE,
	`modified_on`	TIMESTAMP,
	`server_name` VARCHAR(30),
	FOREIGN KEY(server_name) REFERENCES servers(name)
);

CREATE TABLE `he_message` (
	`id`	INTEGER PRIMARY KEY AUTO_INCREMENT,
	`type`	INTEGER,
	`status`	INTEGER,
	`message`	TEXT(3000),
	`occurrence_time`	DOUBLE,
	`modified_on`	TIMESTAMP,
	`server_name` TEXT,
	FOREIGN KEY(server_name) REFERENCES servers(name)
);

CREATE TABLE `he_post_history` (
	`id`	INTEGER PRIMARY KEY AUTO_INCREMENT,
	`name` VARCHAR(30),
	`type`	INTEGER,
	`post_time`	DOUBLE,
	`modified_on`	TIMESTAMP,
	`message_id` INTEGER,
	FOREIGN KEY(message_id) REFERENCES he_message(id)
);


```

이 종수's avatar
이 종수 committed