Source code for oio.conscience.stats.meta

# Copyright (C) 2015-2019 OpenIO SAS, as part of OpenIO SDS
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

from oio.conscience.stats.rawx import HttpStat


[docs]class MetaStat(HttpStat): """ Fetch statistics from meta services using an HTTP request to the proxy. Expects one stat per line """
[docs] def configure(self): super(MetaStat, self).configure() self.uri = '/forward/stats' service_id = '%s:%s' % (self.stat_conf.get('host'), self.stat_conf.get('port')) self.params = {'id': service_id}
[docs] def get_stats(self): resp, _body = self.agent.client._request( 'POST', self.uri, params=self.params, retries=False) stats = self._parse_stats_lines(resp.data) # In Py3, keys() returns a view, and it's not safe to add # items while iterating over it. And so we build a list. for key in list(stats): if key.startswith('gauge'): stat_key = 'stat.' + key.split(None, 1)[1] stats[stat_key] = stats[key] return stats