반응형
말랑Cow
IT
말랑Cow
전체 방문자
오늘
어제
  • 분류 전체보기 (165)
    • Linux (33)
    • Windows (6)
    • Network (7)
    • Hardware (10)
    • Zabbix (13)
    • python (9)
    • script (0)
    • docker (16)
    • NAS (1)
    • DB (3)
    • php (33)
    • jQuery (1)
    • 정보보안기사 (0)
    • Ajax (1)
    • Javascript (21)
    • DELL (0)
    • HPE (0)
    • Secui (0)
    • AWS (2)
    • Elastic (0)
    • 보안 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Python
  • Shell
  • 도커
  • php 객체
  • Linux
  • 네트워크
  • CentOS
  • php
  • 자빅스
  • ZABBIX
  • php 클래스
  • bash
  • jQuery
  • docker
  • 리눅스
  • 파이썬
  • 모니터링
  • JavaScript
  • 자바스크립트
  • 서버
hELLO · Designed By 정상우.
말랑Cow

IT

zabbix 그래프이미지 ppt를 이용한 보고서 자동화
Zabbix

zabbix 그래프이미지 ppt를 이용한 보고서 자동화

2021. 4. 14. 09:48
반응형

업무상 모니터링 점검 결과 보고서를 작성해야 한다면 필요한 항목들(cpu,mem,disk,network 등..)에 대해서 이미지파일을 매번(일간, 주간, 월간) 갱신시켜 복사 붙혀넣기 해야되는 번거로운 작업이 생길 수 있습니다.

이와 같은 작업을 자동화시켜 간단하게 만들 수 있습니다.

 

작업방법은 다음과 같습니다

 

1. 서버에서 그래프이미지 자동저장

 

2. 로컬에서 ssh-key 를 통해 비밀번호 인증없이 서버와 ssh 통신

ssh-key는 이 글을 참조 sojinhwan0207.tistory.com/62

 

3. Powershell 로 서버의 이미지를 로컬로 전송하는 스크립트 작성(scp 명령어를 사용)

scp는 이 글을 참조 sojinhwan0207.tistory.com/75

 

4. 윈도우 작업 스케줄러를 통해 위 스크립트 스케줄링

(로컬머신의 환경은 윈도우라고 가정)

 

1. Zabbix 서버에서 그래프 이미지파일 저장


1. #!/bin/bash
2.
3. query1="select host,hostid from hosts where status=0 and flags=0;"
4. mysql -uroot -p'패스워드' -D zabbix -e "${query1}" | sed '1d' | grep -v '|' | awk -F '\t' '{print $1}' > /tmp/zabbix/hosts
5. mysql -uroot -p'패스워드' -D zabbix -e "${query1}" | sed '1d' | grep -v '|' | awk -F '\t' '{print $2}' > /tmp/zabbix/hostids
6. host_cnt=`cat /tmp/zabbix/hosts | wc -l`
7. host_ids=`column /tmp/zabbix/hostids`
8. j=0
9. 
10. for i in $host_ids
11. do
12. (( j+=1 ))
13. 
14. cpu_itemid=`mysql -uroot -p'패스워드' -D zabbix -e "select itemid from items where name='CPU utilization' and hostid='$i'" |grep -v '|' | sed '1d'`
15. cpu_graphid=`mysql -uroot -p'패스워드' -D zabbix -e "select graphid from graphs_items where itemid='$cpu_itemid'" | grep -v '|' | sed '1d'`
16. cpu_URL="chart2.php?graphid=$cpu_graphid&from=now-24h&to=now&profileIdx=web.graphs.filter&profileIdx2=1583&width=1227&height=201&_=ur5ohnc1&screenid="
17. 
18. mem_itemid=`mysql -uroot -p'패스워드' -D zabbix -e "select itemid from items where name='Memory utilization' and hostid='$i'" |grep -v '|' | sed '1d'`
19. mem_graphid=`mysql -uroot -p'패스워드' -D zabbix -e "select graphid from graphs_items where itemid='$mem_itemid'" | grep -v '|' | sed '1d'`
20. mem_URL="chart2.php?graphid=$mem_graphid&from=now-24h&to=now&profileIdx=web.graphs.filter&profileIdx2=1583&width=1227&height=201&_=ur5ohnc1&screenid="
21. 
22. filename=`cat /tmp/zabbix/hosts | sed -n "$j"p`
23. wget -O /tmp/zabbix/"$filename"_cpu_utilization_$(date '+%Y%m%d_%H%M').png "http://192.168.1.150/zabbix/$cpu_URL"
24. wget -O /tmp/zabbix/"$filename"_mem_utilization_$(date '+%Y%m%d_%H%M').png "http://192.168.1.150/zabbix/$mem_URL"
25.
26. done

 위 스크립트에 대한 설명입니다.

 

3

status값이 0인 것은 모니터링 중인 호스트를 의미하며 flags값이 0인 것은 활성화된 상태를 의미

위 값을 가진 호스트들을 찾아 호스트명과 호스트id를 추출

 

4,5

3의 쿼리를 조회한 후 sed, grep, awk를 이용해 데이터를 정렬하고 /tmp/zabbix/hosts, /tmp/zabbix/hostids 에 입력

 

6

추출한 호스트들의 수를 host_cnt에 저장

 

7

추출한 호스트id 값을 가로로 정렬(for문에 넣기 위함)

 

8

for문에서 1,2,3,4... 의 수를 만들기 위한 변수선언 및 초기화

 

10~26

10 가로로 정렬한 호스트id를 하나씩 입력받아 다음 명령을 실행

12 j값을 1증가시킴 (8에서 j를 0으로 초기화 선언)
14 'CPU Utilization' 이라는 항목에 대해 itemid를 추출
15 위 itemid를 통해 graphid를 추출
16 위 graphid를 URL에 변수로 넣어 저장

18 'Memory utilization' 이라는 항목에 대해 itemid를 추출
19 위 itemid를 통해 graphid를 추출
20 위 graphid를 URL에 변수로 넣어 저장

22 처음 호스트이름을 저장한 파일에서 j변수를 통해 첫번째부터 추출
23,24
wget 명령으로 파일 저장


위 스크립트에서는 cpu,memory 두 가지에 대해서만 테스트 했습니다.

자료가 필요한 항목들을 더 추가해서 스크립트를 수정하면 됩니다.

 

해당 스크립트파일을 cron을 이용해 주기적으로 서버에 저장합니다. (일일/주간/월간에 맞게..)

cron 사용법은 다음을 참고

 

 

2. 로컬머신에서 서버에 저장된 이미지 가져오기


1번에서 그래프이미지를 서버에 자동으로 저장하게 했습니다

이제 해당 이미지를 ppt를 이용한 보고서를 작성할 PC(로컬머신)로 가져와 보겠습니다.

 

먼저 ssh-key를 통해 서버와 비밀번호 인증없이 통신할 수 있게 설정합니다.

 

설정이 완료되었으면 이제 서버의 이미지를 가져올 스크립트를 생성합니다.

 

scp -rp root@192.168.1.140:/tmp/zabbix/*.png D:\zabbix

위 내용을 메모장에 열고 확장자를 ps1로 하여 원하는 폴더에 저장합니다.

 

그 다음 윈도우 작업스케줄러를 열고 다음과 같이 작업을 생성합니다.

 

트리거에서 스크립트가 실행될 원하는 시간대를 설정합니다.

 

이 부분이 중요합니다.

프로그램에 powershell 실행파일에 대한 경로를 걸어주고 인수 추가(옵션)에 다음과 같이 설정합니다.

 

-nolog -command "& (C:\Users\wlsgh\.ssh\zabbix_image.ps1)"

 

위에서 생성한 스크립트의 경로를 지정하여 위와 같이 넣어줍니다.

 

 

 

여기까지 완료되면 완성입니다.

반응형

'Zabbix' 카테고리의 다른 글

[error] zabbix_agentd [1399]: cannot create PID file [/var/run/zabbix/zabbix_agentd.pid]: [2] No such file or directory  (0) 2022.02.11
zabbix DB 분석  (2) 2021.04.14
[Zabbix][SNMP] snmp 모니터링 호스트 등록  (0) 2021.04.13
zabbix agent 설치 [Windows]  (0) 2021.04.05
zabbix + mail 연동  (0) 2021.04.01
    'Zabbix' 카테고리의 다른 글
    • [error] zabbix_agentd [1399]: cannot create PID file [/var/run/zabbix/zabbix_agentd.pid]: [2] No such file or directory
    • zabbix DB 분석
    • [Zabbix][SNMP] snmp 모니터링 호스트 등록
    • zabbix agent 설치 [Windows]
    말랑Cow
    말랑Cow

    티스토리툴바