From bf46208c4d9da992a40c6b3ca6c5fa109e081eba Mon Sep 17 00:00:00 2001 From: Chriz Date: Tue, 26 Mar 2024 14:06:51 +0100 Subject: [PATCH] 4.11 Individual Exlude --- checkzfs.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/checkzfs.py b/checkzfs.py index e935880..595af2f 100644 --- a/checkzfs.py +++ b/checkzfs.py @@ -16,7 +16,7 @@ ## GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ## LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -VERSION = 4.10 +VERSION = 4.11 ### for check_mk usage link or copy binary to check_mk_agent/local/checkzfs ### create /etc/check_mk/checkzfs ## the config file name matches the filename in check_mk_agent/local/ @@ -272,7 +272,7 @@ class zfscheck(object): } COLUMN_MAPPER = {} - def __init__(self,remote,source,sourceonly,legacyhosts,output,mail=None,prefix='REPLICA',debug=False,**kwargs): + def __init__(self,remote,source,sourceonly,legacyhosts,output,ignoreattr,mail=None,prefix='REPLICA',debug=False,**kwargs): _start_time = time.time() self.remote_hosts = remote.split(",") if remote else [""] if source and not sourceonly else [] ## wenn nicht und source woanders ... "" (also lokal) als remote self.source_hosts = source.split(",") if source else [""] ## wenn nix dann "" als local @@ -283,6 +283,7 @@ class zfscheck(object): self.print_debug(f"Version: {VERSION}") self.prefix = prefix.strip().replace(" ","_") ## service name bei checkmk leerzeichen durch _ ersetzen self.rawdata = False + self.ignoreattr = ignoreattr self.mail_address = mail self._overall_status = [] self.sortreverse = False @@ -494,7 +495,7 @@ class zfscheck(object): yield _match.groupdict() def _call_proc(self,remote=None): - ZFS_ATTRIBUTES = "name,type,creation,guid,used,available,written,origin,com.sun:auto-snapshot,tv.sysops:checkzfs" ## wenn ändern dann auch regex oben anpassen + ZFS_ATTRIBUTES = f"name,type,creation,guid,used,available,written,origin,com.sun:auto-snapshot,{self.ignoreattr}" ## wenn ändern dann auch regex oben anpassen ### eigentlicher zfs aufruf, sowohl local als auch remote zfs_args = ["zfs", "list", "-t", "all", @@ -611,7 +612,7 @@ class zfscheck(object): _written = _item.get("written","0") _available = _item.get("available","0") _used = _item.get("used","0") - if _status == -1: ## tv.sysops:checkzfs=ignore wollen wir nicht + if _status == -1: ## tv.sysops:checkzfs=ignore wollen wir nicht (ignoreattr) continue if self.maxsnapshots: _warn = self.maxsnapshots[0] @@ -768,6 +769,8 @@ if __name__ == "__main__": help=_("Nur Snapshot-Alter prüfen")) _parser.add_argument("--mail",type=str, help=_("Email für den Versand")) + _parser.add_argument("--ignoreattr",type=str,default="tv.sysops:checkzfs", + help=_("ZFS Attribut für ignore")) _parser.add_argument("--config",dest="config_file",type=str,default="", help=_("Config File")) _parser.add_argument("--threshold",type=str, @@ -794,7 +797,7 @@ if __name__ == "__main__": help=_("debug Ausgabe")) args = _parser.parse_args() - CONFIG_KEYS="disabled|source|sourceonly|piggyback|remote|legacyhosts|prefix|filter|replicafilter|threshold|maxsnapshots|snapshotfilter|ssh-identity|ssh-extra-options" + CONFIG_KEYS="disabled|source|sourceonly|piggyback|remote|legacyhosts|prefix|filter|replicafilter|threshold|ignoreattr|maxsnapshots|snapshotfilter|ssh-identity|ssh-extra-options" _config_regex = re.compile(f"^({CONFIG_KEYS}):\s*(.*?)(?:\s+#|$)",re.M) _basename = os.path.basename(__file__).split(".")[0] ## name für config ermitteln aufgrund des script namens _is_checkmk_plugin = os.path.dirname(os.path.abspath(__file__)).find("/check_mk_agent/local") > -1 ## wenn im check_mk ordner @@ -908,3 +911,4 @@ if __name__ == "__main__": if args.debug: raise sys.exit(1) +