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