diff --git a/atlas/check_injecting_rules b/atlas/check_injecting_rules index 4d70e3b..a829501 100755 --- a/atlas/check_injecting_rules +++ b/atlas/check_injecting_rules @@ -1,15 +1,17 @@ -#!/usr/bin/env python -# Copyright European Organization for Nuclear Research (CERN) 2013 +#!/usr/bin/env python3 +# Copyright European Organization for Nuclear Research (CERN) since 2012 # # Licensed under the Apache License, Version 2.0 (the "License"); -# You may not use this file except in compliance with the License. -# You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at # -# Authors: -# - Martin Barisits, , 2016 -# - Thomas Beermann, , 2019 -# - Donata Mielaikaite, , 2020 -# - Eric Vaandering, , 2020 +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """ Probe to check the backlog of injecting rules. @@ -19,39 +21,45 @@ import sys import traceback from prometheus_client import CollectorRegistry, Gauge, push_to_gateway -from rucio.common.config import config_get +from sqlalchemy import func, select + +from rucio.common.config import config_get_list from rucio.db.sqla import models from rucio.db.sqla.constants import RuleState from rucio.db.sqla.session import get_session -from rucio.db.sqla.util import get_count from utils import probe_metrics # Exit statuses OK, WARNING, CRITICAL, UNKNOWN = 0, 1, 2, 3 -PROM_SERVERS = config_get('monitor', 'prometheus_servers', raise_exception=False, default='') -if PROM_SERVERS != '': - PROM_SERVERS = PROM_SERVERS.split(',') +PROM_SERVERS = config_get_list('monitor', 'prometheus_servers', raise_exception=False, default=[]) -if __name__ == "__main__": +if __name__ == '__main__': try: registry = CollectorRegistry() session = get_session() - query = session.query(models.ReplicationRule.scope).filter(models.ReplicationRule.state == RuleState.INJECT) - result = get_count(query) + + query = select( + func.count() + ).select_from( + models.ReplicationRule + ).where( + models.ReplicationRule.state == RuleState.INJECT + ) + + result = session.execute(query).scalar_one() probe_metrics.gauge('judge.injecting_rules').set(result) Gauge('judge_injecting_rules', '', registry=registry).set(result) - if len(PROM_SERVERS): - for server in PROM_SERVERS: - try: - push_to_gateway(server.strip(), job='check_injecting_rules', registry=registry) - except: - continue + for server in PROM_SERVERS: + try: + push_to_gateway(server, job='check_injecting_rules', registry=registry) + except Exception: + continue print(result) - except: + except Exception: print(traceback.format_exc()) sys.exit(UNKNOWN) sys.exit(OK)