-
Notifications
You must be signed in to change notification settings - Fork 0
/
claypaky-parser.py
139 lines (92 loc) · 3.98 KB
/
claypaky-parser.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
# Add logging
# Neaten up function calls
# Add safety
# Authentication
# Data collection
# Zabbix processing
# Add threading
import logging
from logging.handlers import TimedRotatingFileHandler
from bs4 import BeautifulSoup
from pyzabbix import ZabbixMetric, ZabbixSender
import configparser
import sys
from time import sleep
import json
import os
from Sharpy import Sharpy, SharpyHelper
logger = logging.getLogger('claypaky-parse')
configPath = filename=os.path.join(sys.path[0], "config.ini")
zabbix_ip="192.168.0.116"
zabbix_packet = []
sharpys = []
#--------- PROGRAM START ----------
log_file_handler = TimedRotatingFileHandler(filename=os.path.join(sys.path[0], "runtime.log"), when='D', interval=1, backupCount=10,
encoding='utf-8',
delay=False)
log_console_handler = logging.StreamHandler(sys.stdout)
log_formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
log_file_handler.setFormatter(log_formatter)
log_console_handler.setFormatter(log_formatter)
logger.setLevel(logging.DEBUG)
logger.addHandler(log_file_handler)
logger.addHandler(log_console_handler)
logger.info("Entering program")
# Logging initialised
zabbixServer = ZabbixSender(zabbix_server=zabbix_ip, timeout=1)
for i in range(81, 92):
sharpy = Sharpy(logger, "192.168.0." + str(i), str(i))
sharpys.append(sharpy)
# TODO make this all happen in parallel in the future
while True:
for sharpy in sharpys:
if not SharpyHelper.update(logger, sharpy): continue
zabbix_packet = SharpyHelper.generatePacket(logger, sharpy)
logger.debug(zabbix_packet)
serverResponse = zabbixServer.send(zabbix_packet)
logger.info(serverResponse)
sleep(120)
###########__________OLD CODE___________#############
packet=[]
for IP_address in IP_address_List:
#---------Pull Sensor Status-----------------
#---------Pull Board communication Status-----------------
#the url to pull board diagnostics info
url = "http://"+ IP_address +"/board_diagnostic.html"
req = requests.get(url)
soup = BeautifulSoup(req.text, "html.parser")
#find the first table, which includes the fan seeds
text_table=soup.find("table").get_text()
Board_Diagnostic_list=[line for line in text_table.split('\n') if line.strip()]
#print(Board_Diagnostic_list)
print("")
Board_Diagnostic_list[24]=Board_Diagnostic_list[24][:-2]
print("PT-3f Errors : " + Board_Diagnostic_list[24]) #PT-3f Errors
packet.append(ZabbixMetric(Host_Name, 'errors.PT3F', Board_Diagnostic_list[24]))
Board_Diagnostic_list[32]=Board_Diagnostic_list[32][:-2]
print("6-Ch : " + Board_Diagnostic_list[32]) #6-Ch
packet.append(ZabbixMetric(Host_Name, 'diag.6ch', Board_Diagnostic_list[32]))
Board_Diagnostic_list[40]=Board_Diagnostic_list[40][:-2]
print("6-Ch-2 : " + Board_Diagnostic_list[40]) #6-Ch-2
packet.append(ZabbixMetric(Host_Name, 'diag.6ch2', Board_Diagnostic_list[40]))
#Bus Error Frequency
Bus_Error_List = soup.find('p').get_text().strip("Bus error frequency:").split("-")
Bus_Error_List[1]=Bus_Error_List[1].strip("standard deviation: Hz")
Bus_Error_List[0]=Bus_Error_List[0].strip(" Hz ")
print("")
print("Bus Error Frequency: " + Bus_Error_List[0])
packet.append(ZabbixMetric(Host_Name, 'error.busfrequency', Bus_Error_List[0]))
print("Bus Error Stanbdard Deviation: " + Bus_Error_List[1])
packet.append(ZabbixMetric(Host_Name, 'error.busdeviation', Bus_Error_List[1]))
#---------Pull Error Log -----------------
#the url to pull error log
url = "http://"+ IP_address +"/system_errors.html"
req = requests.get(url)
soup = BeautifulSoup(req.text, "html.parser")
#find the first table, which includes the fan seeds
text_table=soup.find("table").get_text()
system_errors_list=[line for line in text_table.split('\n') if line.strip()]
#print(system_errors_list)
if len(system_errors_list) > 6:
print(system_errors_list[9])
packet.append(ZabbixMetric(Host_Name, 'errors.system', system_errors_list[9]))