check db null warn
This commit is contained in:
parent
bafcf422b9
commit
e5e4bba051
|
@ -104,15 +104,15 @@ def main():
|
||||||
print(traceback.format_exc())
|
print(traceback.format_exc())
|
||||||
sys.exit(nagios.UNKNOWN)
|
sys.exit(nagios.UNKNOWN)
|
||||||
elif args.type == 'db-lag':
|
elif args.type == 'db-lag':
|
||||||
# in seconds
|
db_lag_MAX = 0.01 if not args.crit else args.crit # in seconds
|
||||||
db_lag_MAX = 0.01 if not args.crit else args.crit
|
|
||||||
try:
|
try:
|
||||||
db_lag = get_waiting_for_db(args.grafana_api_key, args.interval, args.range, args.grafana_server)
|
db_lag, null_present = get_waiting_for_db(args.grafana_api_key, args.interval, args.range, args.grafana_server)
|
||||||
|
null_warn = 'Null data was present for this timeseries.' if null_present else ''
|
||||||
if db_lag > db_lag_MAX:
|
if db_lag > db_lag_MAX:
|
||||||
print(f"CRITICAL: DB lag is {db_lag} sec. |'db-lag'={db_lag}s;;;")
|
print(f"CRITICAL: DB lag is {db_lag} sec. {null_warn} |'db-lag'={db_lag}s;;;")
|
||||||
sys.exit(nagios.CRITICAL)
|
sys.exit(nagios.CRITICAL)
|
||||||
else:
|
else:
|
||||||
print(f"OK: DB lag is {db_lag} sec. |'db-lag'={db_lag}s;;;")
|
print(f"OK: DB lag is {db_lag} sec. {null_warn} |'db-lag'={db_lag}s;;;")
|
||||||
sys.exit(nagios.OK)
|
sys.exit(nagios.OK)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f'UNKNOWN: failed to check DB lag "{e}"')
|
print(f'UNKNOWN: failed to check DB lag "{e}"')
|
||||||
|
|
|
@ -139,8 +139,8 @@ async def main() -> None:
|
||||||
# convert mxc:// to http://
|
# convert mxc:// to http://
|
||||||
target_file_url = await client.mxc_to_http(image_event.url)
|
target_file_url = await client.mxc_to_http(image_event.url)
|
||||||
|
|
||||||
# Check the headers. Ignore the non-async thing here, it doesn't
|
# Check the file. Ignore the non-async thing here, it doesn't matter in this situation.
|
||||||
# matter in this situation.
|
# Remember: Cloudflare does not cache non-GET requests.
|
||||||
r = requests.head(target_file_url, allow_redirects=False)
|
r = requests.head(target_file_url, allow_redirects=False)
|
||||||
|
|
||||||
prints = []
|
prints = []
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
import json
|
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
import requests
|
import requests
|
||||||
from urllib3.exceptions import InsecureRequestWarning
|
from urllib3.exceptions import InsecureRequestWarning
|
||||||
|
@ -312,7 +310,13 @@ def get_waiting_for_db(api_key, interval, data_range, endpoint):
|
||||||
'to': 'now',
|
'to': 'now',
|
||||||
}
|
}
|
||||||
response = requests.post(f'{endpoint}/api/ds/query', headers={'Authorization': f'Bearer {api_key}'}, json=json_data, verify=False).json()
|
response = requests.post(f'{endpoint}/api/ds/query', headers={'Authorization': f'Bearer {api_key}'}, json=json_data, verify=False).json()
|
||||||
return np.round(np.average(response['results']['A']['frames'][0]['data']['values'][1]), 5)
|
data = response['results']['A']['frames'][0]['data']['values'][1]
|
||||||
|
null_present = False
|
||||||
|
for i in range(data):
|
||||||
|
if data[i] is None:
|
||||||
|
data[i] = -1
|
||||||
|
null_present = True
|
||||||
|
return np.round(np.average(data), 5), null_present
|
||||||
|
|
||||||
|
|
||||||
def get_stateres_worst_case(api_key, interval, data_range, endpoint):
|
def get_stateres_worst_case(api_key, interval, data_range, endpoint):
|
||||||
|
@ -374,5 +378,4 @@ def get_stateres_worst_case(api_key, interval, data_range, endpoint):
|
||||||
}
|
}
|
||||||
response = requests.post(f'{endpoint}/api/ds/query', headers={'Authorization': f'Bearer {api_key}'}, json=json_data, verify=False).json()
|
response = requests.post(f'{endpoint}/api/ds/query', headers={'Authorization': f'Bearer {api_key}'}, json=json_data, verify=False).json()
|
||||||
|
|
||||||
|
|
||||||
# AVerage CPU time per block
|
# AVerage CPU time per block
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
[Unit]
|
||||||
|
Description=Icinga to Kuma converter.
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
User=flask
|
||||||
|
Environment="ICINGA2KUMA_ICINGA2_PW=[your icinga2 API password]"
|
||||||
|
WorkingDirectory=/opt/icinga2-checks
|
||||||
|
ExecStart=/usr/local/bin/gunicorn -b 0.0.0.0:8081 -w 4 icinga2kuma:app
|
||||||
|
Restart=always
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
|
Loading…
Reference in New Issue