MKP 2.5.1, added version infos for apps with available updates
This commit is contained in:
@@ -39,7 +39,7 @@ def check_nextcloud_info(params, section):
|
||||
except KeyError:
|
||||
last_update = "Update information not available, update to at least version 28"
|
||||
update_available = "False"
|
||||
last_update_human = "Update information not available"
|
||||
last_update_human = "Information not available"
|
||||
status = section[key]["status"]
|
||||
free_space = section[key]["freespace"]
|
||||
version = section[key]["version"]
|
||||
@@ -53,8 +53,8 @@ def check_nextcloud_info(params, section):
|
||||
yield(Metric("nc_num_shares", num_shares))
|
||||
|
||||
# create overall result
|
||||
summary = f"Status is {status}"
|
||||
details = f"Nextcloud version: {version}\nLast update: {last_update_human}\nPHP version: {php_version}\nWebserver: {webserver}\n\nNumber of files: {num_files}\nNumber of shares: {num_shares}\n\nFree space on disk: {render.bytes(free_space)}\n"
|
||||
summary = f"Status is {status}, Last update: {last_update_human}"
|
||||
details = f"Nextcloud version: {version}\nPHP version: {php_version}\nWebserver: {webserver}\n\nNumber of files: {num_files}\nNumber of shares: {num_shares}\n\nFree space on disk: {render.bytes(free_space)}\n"
|
||||
if status == "ok":
|
||||
state = State.OK
|
||||
else:
|
||||
@@ -118,12 +118,19 @@ def check_nextcloud_info(params, section):
|
||||
try:
|
||||
num_apps_installed = section[key]["installed"]
|
||||
num_apps_with_updates_available = section[key]["with_updates_available"]
|
||||
if "app_versions" in section[key]:
|
||||
app_versions = section[key]["app_versions"]
|
||||
else:
|
||||
app_versions = ""
|
||||
# create graphs for number of apps
|
||||
levels = params["levels_apps_with_updates_available"]
|
||||
yield Metric("nc_num_apps_installed", num_apps_installed)
|
||||
yield Metric("nc_apps_with_updates_available", num_apps_with_updates_available, levels=levels)
|
||||
state = getStateUpper(levels, num_apps_with_updates_available)
|
||||
notice = f"Number of installed apps: {num_apps_installed}\nNumber of apps with updates available: {num_apps_with_updates_available}"
|
||||
if (app_versions == ""):
|
||||
notice = f"Number of installed apps: {num_apps_installed}\nNumber of apps with updates available: {num_apps_with_updates_available}"
|
||||
else:
|
||||
notice = f"Number of installed apps: {num_apps_installed}\nNumber of apps with updates available: {num_apps_with_updates_available}\nNew app versions available: {app_versions}"
|
||||
yield(Result(state=state, notice=notice))
|
||||
except KeyError:
|
||||
pass
|
||||
@@ -153,6 +160,7 @@ def parse_nextcloud_info_section(string_table):
|
||||
"NC_Num_Storages_Other",
|
||||
"NC_Num_Apps_Installed",
|
||||
"NC_Num_Apps_Updates_Available",
|
||||
"NC_Apps_With_Updates_Available",
|
||||
"NC_Active_Users_Last_5Min",
|
||||
"NC_Active_Users_Last_1Hour",
|
||||
"NC_Active_Users_Last_1Day"
|
||||
@@ -191,6 +199,8 @@ def parse_nextcloud_info_section(string_table):
|
||||
parsed_data["apps"]["installed"] = int(value)
|
||||
elif param == "NC_Num_Apps_Updates_Available":
|
||||
parsed_data["apps"]["with_updates_available"] = int(value)
|
||||
elif param == "NC_Apps_With_Updates_Available":
|
||||
parsed_data["apps"]["app_versions"] = value
|
||||
elif param == "NC_Num_Users":
|
||||
parsed_data["users"]["number"] = int(value)
|
||||
elif param == "NC_Active_Users_Last_5Min":
|
||||
|
||||
@@ -136,10 +136,10 @@ def getSession(username, secret):
|
||||
return session
|
||||
|
||||
def getData(session, url, verify):
|
||||
data = {}
|
||||
headers = CaseInsensitiveDict()
|
||||
headers["Accept"] = "application/json"
|
||||
cookies = {"nc_sameSiteCookiestrict": "true"}
|
||||
response = session.get(url, headers=headers, cookies=cookies, verify=verify)
|
||||
response = session.get(url, headers=headers, verify=verify)
|
||||
status = response.status_code
|
||||
if (status == 200):
|
||||
jsdata = response.text
|
||||
@@ -157,8 +157,7 @@ def getDataAllUsers(session, url, verify):
|
||||
headers = CaseInsensitiveDict()
|
||||
headers["Accept"] = "application/json"
|
||||
headers["OCS-APIRequest"] = "true"
|
||||
cookies = {"nc_sameSiteCookiestrict": "true"}
|
||||
response = session.get(url, headers=headers, cookies=cookies, verify=verify)
|
||||
response = session.get(url, headers=headers, verify=verify)
|
||||
status = response.status_code
|
||||
if (status == 200):
|
||||
jsdata = response.text
|
||||
@@ -172,8 +171,7 @@ def getDataUser(session, url, verify):
|
||||
headers = CaseInsensitiveDict()
|
||||
headers["Accept"] = "application/json"
|
||||
headers["OCS-APIRequest"] = "true"
|
||||
cookies = {"nc_sameSiteCookiestrict": "true"}
|
||||
response = session.get(url, headers=headers, cookies=cookies, verify=verify)
|
||||
response = session.get(url, headers=headers, verify=verify)
|
||||
status = response.status_code
|
||||
if (status == 200):
|
||||
jsdata = response.text
|
||||
@@ -184,6 +182,8 @@ def getDataUser(session, url, verify):
|
||||
sys.exit(1)
|
||||
|
||||
def doCmkOutput(data):
|
||||
apps_with_updates_available = {}
|
||||
str_apps_with_updates_available = ""
|
||||
print("<<<nextcloud_info:sep(59)>>>")
|
||||
print(f"NC_Version;{data['ocs']['data']['nextcloud']['system']['version']}")
|
||||
print(f"NC_Freespace;{data['ocs']['data']['nextcloud']['system']['freespace']}")
|
||||
@@ -205,6 +205,11 @@ def doCmkOutput(data):
|
||||
try:
|
||||
print(f"NC_Num_Apps_Installed;{data['ocs']['data']['nextcloud']['system']['apps']['num_installed']}")
|
||||
print(f"NC_Num_Apps_Updates_Available;{data['ocs']['data']['nextcloud']['system']['apps']['num_updates_available']}")
|
||||
apps_with_updates_available = data['ocs']['data']['nextcloud']['system']['apps']['app_updates']
|
||||
if apps_with_updates_available:
|
||||
for app, version in apps_with_updates_available.items():
|
||||
str_apps_with_updates_available = str_apps_with_updates_available + app + "/" + version + " "
|
||||
print(f"NC_Apps_With_Updates_Available;{str_apps_with_updates_available}")
|
||||
except KeyError:
|
||||
pass
|
||||
print(f"NC_Active_Users_Last_5Min;{data['ocs']['data']['activeUsers']['last5minutes']}")
|
||||
|
||||
@@ -12,7 +12,9 @@ description:
|
||||
The user must not be secured with 2FA.
|
||||
Shows several information about a Nextcloud instance, e.g. number of files/storages/(active)users, free space on disk.
|
||||
The check will raise CRIT if the Nextcloud instance is not in "ok" state.
|
||||
The check will raise WARN if there is an update availbale for Nextcloud.
|
||||
The check will raise WARN/CRIT if free space on disk is below the configurable levels.
|
||||
The check will raise WARN/CRIT if the number of installed apps with available updates is above the configurable levels.
|
||||
The check will raise WARN/CRIT if the number of files is above the configurable levels.
|
||||
inventory:
|
||||
one service is created (with several details)
|
||||
@@ -51,10 +51,12 @@ def _parameter_spec_nextcloud_info():
|
||||
Integer(
|
||||
title=_("Warning at"),
|
||||
default_value=100000,
|
||||
size=32,
|
||||
),
|
||||
Integer(
|
||||
title=_("Critical at"),
|
||||
default_value=250000,
|
||||
size=32,
|
||||
)
|
||||
],
|
||||
)),
|
||||
|
||||
Reference in New Issue
Block a user