Newer
Older
hawk eye server는 http 기반의 alert 푸시 및 report을 위한 중계 서버입니다.
he-agent 혹은 사용자에 의한 http post Message를 받아 Mthink혹은 Email로 구독 메세지를 보냅니다.
### download
다운로드 URL : https://lab.idatabank.com/gitlab/HawkEye/hawkeye-product/raw/master/hawkeye-server.zip
``` shell
curl -O https://lab.idatabank.com/gitlab/HawkEye/hawkeye-product/raw/master/hawkeye-server.zip
wget https://lab.idatabank.com/gitlab/HawkEye/hawkeye-product/raw/master/hawkeye-server.zip
### 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
```
-----
### Hawkeye user 생성
#### user 생성
```shell
useradd hawkeye
su - hawkeye
vi .bash_profile
```
```
export HAWKEYE_HOME=/home/hawkeye/hawkeye-server
#### hawkeye server 업로드 및 압축해제
hawkeye-server.zip UPLOAD
```shell
unzip hawkeye-server.zip
#### wkhtmltopdf Tool
Step 1: Install Dependencies
```shell
yum install -y fontconfig libXrender libXext xorg-x11-fonts-Type1 xorg-x11-fonts-75dpi freetype libpng zlib libjpeg-turbo
curl -O https://lab.idatabank.com/gitlab/HawkEye/hawkeye-product/raw/master/wkhtmltox-0.12.2.1_linux-centos7-amd64.rpm
rpm -Uvh wkhtmltox-0.12.2.1_linux-centos7-amd64.rpm
```
Step 3: Testing
```shell
pip install -r requirements.txt
```
-----
### Database Library Install
#### Mysql db library
```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
경고 메시지를 받을 항목을 설정합니다.
### 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
```
### Config
#### sendlist.ini
channel_id = 141
token = VEski0KYjy3ZniWGamqwvDT6bp9R6o6IEketBRnG2qYFCYIw3xCzjVd3ndQz5ziNOXx37PLCrYvLIiUJvCbt4J6VAsaMhCiRY6mTpgc3KC47QcnNvL0Un3g293CFwy0i
user_ids = dbs019,dbs146 <- 채널내에 해당 사용자만 push 발송 가능
<- 위의 정보는 mthink 관리자에게 문의 하세요
he-post는 he-server로 alert 및 report를 송신하는 에이전트 스크립트 모음입니다.
소스 : https://lab.idatabank.com/gitlab/HawkEye/he-post
다운로드 URL : https://lab.idatabank.com/gitlab/HawkEye/hawkeye-product/blob/master/he-post.zip
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
### 에이전트 사용방법
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}"
```
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
## **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)
);
```
## **3. Hawkeye java agent**
Hawkeye java agent
다운로드 URL : https://lab.idatabank.com/gitlab/HawkEye/hawkeye-product/raw/master/Hawkeye-agent.zip
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
### Directory
```
conf/
|- template/
|- hawkeye.conf
|- databases.ini
|- checklist.ini
|- logger.conf
lib/
script/
|- shell/
|- sql/
data/
|- logList.xml
log/
|- hawkeye.log
Hawkeye.jar
startup.sh
shutdown.sh
hawkeye.bat
service.bat
nssm.exe
```
conf/: 에이전트 설정 파일 폴더
conf/template/: checklist.ini 파일 템플릿 폴더
conf/hawkeye.conf: 에이전트 설정 파일
conf/databases.ini: 데이터베이스 연결 정보 설정 파일
conf/checklist.ini: Report, Alert 체크 리스트 설정 파일
conf/logger.conf: 에이전트 로그 설정 파일
lib/: 에이전트에서 사용하는 jar 파일 폴더
script/: checklist.ini 파일에 설정된 스크립트 파일 폴더
data/logList.xml: checklist.ini 파일 설정 중 데이터 타입이 log 일 때 로그 파일 EOF 기록
log/: 에이전트 로그 저장 폴더, conf/logger.conf 설정에 따라 로그 기록 (default 파일 사이즈 10MB, 로그 파일 개수 5)
Hawkeye.jar: 에이전트 실행 파일
startup.sh: agent start shell
shutdown.sh: agent stop shell
hawkeye.bat: agent start batch
service.bat: agent service add & start
nssm.exe: Windows 서비스 등록, 관리 프로그램, 파일이 존재하지 않으면 서비스 동작하지 않음
### Startup
환경변수 'JAVA_HOME' 등록
환경변수 'HE_HOME' 등록 (Hawkeye.jar 파일이 위치한 경로)
* Windows
service.bat 파일을 이용하여 서비스 등록 후 서비스 관리자에서 시작 및 종료
서비스명: 'Hawkeye-Agent', 시작 유형: '자동'
서비스 등록 (자동 시작)
startup.sh, shutdown.sh 파일을 이용하여 시작 및 종료
에이전트 시작
```
$HE_HOME/startup.sh
```
에이전트 종료
```
AGENT_NAME=Hawkeye-Agent
SERVER_URL=https://server.com:18080
API_KEY=1234
ALERT_REPEAT_TIME=30
CUSTOMER=
DEPARTMENT=
TASK=
HOST_NAME=
OS_INFO=
```
AGENT_NAME: 에이전트명, 서버의 summary 페이지에서 레포트 구분 [+ required +]
HEARTBEAT_CYCLE: 서버와의 연결 상태 확인 동작의 실행 간격 (초 단위) [default: 120]
REPORTING_CYCLE: 레포팅 실행 간격 (초 단위) [default: 86000]
ALERT_REPEAT_TIME: 경고 발생 후 다음 경고 까지의 시간 간격 (분 단위) [+ required +]
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
데이터베이스 연결 정보 설정
```
[alias]
type=
driver=
url=
user=
password=
initialSize=
minIdle=
maxIdle=
maxActive=
```
[alias]: 구분 alias, 중복 불가 [+ required +]
type: db type [oracle, sqlserver, mysql, postgresql, cubrid] [+ required +]
driver: jdbc driver name
url: jdbc url [+ required +]
user: user [+ required +]
password: password [+ required +]
initialSize: pool init size [default: 3]
minIdle: pool min size [default: 3]
maxIdle: pool max size [default: 8]
maxActive: maxActive size [default: 8]
```
[oracle_1]
type=oracle
url=jdbc:oracle:thin:@server:1521:sid
[MSSQL_1]
type=sqlserver
driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
```
[alias]
enable=
purpose=
data_type=
script=
database=
category=
priority=
warning=
danger=
period=
order=
```
enable: 사용 여부 [default: true]
purpose: job 구분 [report, all, alert] [+ required +]
data_type: 데이터 타입 [count, gauge, text, log, disk, disktotal] [+ required +]
database: databases.ini 파일의 데이터베이스 alias, db가 하나 일 경우 생략 가능
category: 레포트의 카테고리, 레포트 일 경우 필수
priority: 카테고리에서의 우선 순위, 레포트 일 경우 필수
warning: 경고 기준, 기본 단위: %, 데이터 타입이 disk 일 경우 용량 단위(M,MB,GB) 설정 가능, alert 일 경우 필수
danger: 위험 기준, 기본 단위: %, 데이터 타입이 disk 일 경우 용량 단위(M,MB,GB) 설정 가능, alert 일 경우 필수
period: Alert 일 경우, alert cycle: 30 기준으로 period: 1 이면 매 cycle 마다 동작, period: 4 이면 2분 마다 동작 [default: 1]
order: 데이터 타입이 count, gauge 일 때 경고 기준을 설정, 높은 값 기준 또는 낮은 값 기준
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
```
[diskusage]
enable=true
purpose=report
data_type=disk
script=he_diskusage.sh
database=oracle_1
category=Operating System
priority=10
[Tablespace Freespace Check]
enable=false
purpose=all
data_type=disk
script=he_tablespace.sql
database=oracle_1
category=Storage Status
priority=10
warning=80
danger=90
period=1
[diskusage]
purpose=alert
data_type=disk
script=he_diskusage.sh
warning=80
danger=90
period=1
```