· 5 years ago · Jun 18, 2020, 08:54 AM
1import sys
2import logging
3import time
4# zabbix api imports
5from pyzabbix import ZabbixAPI
6# time date imports
7from time import strftime
8import datetime
9import fileinput
10import argparse
11import sys
12# Disable warning about insecure request
13import requests
14from requests.packages.urllib3.exceptions import InsecureRequestWarning
15requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
16
17ZABBIX_SERVER = "https://zabbix.company.com" # zabbix url
18LOGIN = "admin" # login to zabbix, use user which can get data
19PASSWORD = "superpassword" # password for given login to zabbix
20
21NAME = "availability" # for testing purposes will be rewriten
22TEST_ITEM = "35057" # for testing purposes will be rewriten
23ITEMS = "items" # name of input file
24
25TIME = []
26DATAS = []
27OK = 0
28PROBLEM = 0
29
30historyDays = 30
31
32rightValue = 1
33
34problemsDict = {}
35
36fileCnt = 0
37
38rightValue = 0
39interval = datetime.timedelta(0, 30)
40
41reportName = "SLA_02.03.2020.csv"
42
43
44def problemHappend(time, datas):
45 all_errors = {}
46 error_cnt = -1
47 isError = 0
48
49 for idx, value in enumerate(datas):
50 if int(value) != 1:
51 if isError:
52 errors = all_errors[error_cnt]
53 errors.append(time[idx])
54 all_errors[error_cnt] = errors
55 else:
56 error_cnt += 1
57 all_errors[error_cnt] = [time[idx]]
58
59 isError = 1
60 else:
61 isError = 0
62
63 return all_errors
64
65
66def test():
67 problem_cnt = 0
68 line_cnt = 0
69 whole_problem_time = 0
70
71 zapi = ZabbixAPI(ZABBIX_SERVER, user=LOGIN, password=PASSWORD)
72
73 zapi.session.verify = False
74
75 print("Connected to Zabbix API Version %s" % zapi.api_version())
76
77 timeNow = datetime.datetime.now()
78 timeNow = int(timeNow.timestamp())
79 ts = datetime.datetime.now() - datetime.timedelta(days=historyDays)
80 tsHuman = datetime.datetime.now() - datetime.timedelta(days=historyDays)
81 print(ts)
82 ts = int(ts.timestamp())
83 print(ts)
84
85 print("Getting zapi history...")
86 dataField = {}
87 for h in zapi.history.get(output="extend", history=3, itemids=TEST_ITEM, limit=10000000, time_from=ts, time_till=timeNow):
88 dataField[h['clock']] = h['value']
89
90 for key in sorted(dataField):
91 TIME.append((datetime.datetime.utcfromtimestamp(
92 int(key)).strftime('%Y-%m-%d %H:%M:%S')))
93 DATAS.append(dataField[key])
94 problemsDict = problemHappend(TIME, DATAS)
95
96 report = open(reportName, "a")
97 report.write(
98 'Zacatek vypadku;Konec vypadku;Celkovy cas vypadku H/M/S;Jira ID;Popis vypadku;\n')
99 for problem in problemsDict:
100 print(str(problemsDict[problem][0]))
101 print(str(datetime.datetime.strptime(problemsDict[problem][
102 len(problemsDict[problem]) - 1], '%Y-%m-%d %H:%M:%S')))
103 report.write(str(problemsDict[problem][0]) + ';' + str(datetime.datetime.strptime(problemsDict[problem][len(problemsDict[problem]) - 1], '%Y-%m-%d %H:%M:%S') + interval) + ';' + str(
104 datetime.datetime.strptime(problemsDict[problem][len(problemsDict[problem]) - 1], '%Y-%m-%d %H:%M:%S') - datetime.datetime.strptime(problemsDict[problem][0], '%Y-%m-%d %H:%M:%S') + interval) + ";\n")
105test()