Python/Python for Windows

[Python] Check ICMP using ping3 module, maria db and grafana

Pydole 2019. 8. 25. 04:54

 

이번 포스팅은 1부에서 명령어기반으로 구현한 ICMP 체크를 grafana 오픈소스를 이용해 시각화

모니터링을 구현해보겠다.

 

- 모듈 : ping3

- 적재DB : mariadb

 

 

mariadb DB 테이블 만들기

 

 

- logtime : ICMP를 체크한 현재 시간 → (str(datetime.now())[:19],site[0])

- host : ICMP 체크 대상 IP 주소 → (Site[0])

- pingstatus : 정상(0), 실패(1) → (ping status 정상 : 0, ping fail : 1)

 

import time
from datetime import datetime
from ping3 import ping,verbose_ping
import pymysql

conn = pymysql.connect(host='host',user='user',password='password',db='database',charset='utf8')
c = conn.cursor()

def dbinsert():
    c.execute('''insert into pingcheck VALUES('%s', '%s', '%s')''' %(str(datetime.now())[:19],site[0],pingstatus))
    conn.commit()

while True:
    with open(r'D:\python\pinglist.txt', 'r') as f:
        for line in f.readlines():
            site = line.split('\t')
            if site[0][0] == '#':
                pass
            else:
                result = ping(site[0])
                if result == None:
                    pingstatus = 1
                    print(site[0] + '\t' + site[1][:-1] + '\t' + ' Ping Check Fail : '+ str(datetime.now())[:19])
                    dbinsert()

                else:
                    pingstatus = 0
                    print(site[0]+'\t'+site[1][:-1]+'\t'+' Ping Check OK :', '[ Response Time %.2f ] : ' %result+str(datetime.now())[:19])
                    dbinsert()
            time.sleep(1)
        time.sleep(60)

c.close()
conn.close()

 

 

프로그램을 실행시키면, ICMP 체크상태를 mariadb에 적재한다.

 

 

grafana를 maria db와 연동하여 "Table" 형태로 대쉬보드를 만들고, ping fail시 비정상 상태인 1일 경우 주황색으로 임계치를 설정

 

이제 아래와 같이 간단한 ICMP 시각화 모니터링을 할 수 있다.

 

텍스트 추가

 

 

이상으로 가볍게 python으로 ICMP(ping) 상태를 체크하고, 시각화 할 수 있는 방법을 알아보았다.