# Hawk Eye ## Hawk Eye server hawk eye server는 http 기반의 alert 푸시 및 report을 위한 중계 서버입니다. he-agent 혹은 사용자에 의한 http post Message를 받아 Mthink혹은 Email로 구독 메세지를 보냅니다. ### download https://lab.idatabank.com/gitlab/HawkEye/hawkeye-product 에서 Download 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 *profile setting* export HAWKEYE_HOME ``` ----- ### Python Develoment tool Install #### OS Library ```shell yum install python-devel ``` #### wkhtmltopdf Tool Step 1: Install Dependencies ```shell yum install -y xorg-x11-fonts-75dpi yum install -y xorg-x11-fonts-Type1 ``` Step 2: Install wkhtmltopdf ```shell wget http://download.gna.org/wkhtmltopdf/0.12/0.12.2.1/wkhtmltox-0.12.2.1_linux-centos7-amd64.rpm rpm -Uvh wkhtmltox-0.12.2.1_linux-centos7-amd64.rpm ``` Step 3: Testing ```shell wkhtmltopdf http://www.google.com google.pdf ``` #### Python Library Install ```shell cd (HAWKEYE HOME) pip install -r requirements.txt ``` ----- ### Database Library Install #### Mysql db library mysql 혹은 mariadb 사용시에 설치합니다. ```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 경고 메시지를 받을 항목을 설정합니다. > start.sh ``` ## he-post he-post는 he-server로 alert 및 report를 송신하는 에이전트 스크립트 모음입니다. 소스 : https://lab.idatabank.com/gitlab/HawkEye/he-post ### 에이전트 사용방법 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}" ```