def silence(labels, duration=None, **kwargs): ''' Post a silence message to Alert Manager Duration should be sent in a format like 1m 2h 1d etc ''' if duration: start = timezone.now() if duration.endswith('m'): end = start + datetime.timedelta(minutes=int(duration[:-1])) elif duration.endswith('h'): end = start + datetime.timedelta(hours=int(duration[:-1])) elif duration.endswith('d'): end = start + datetime.timedelta(days=int(duration[:-1])) else: raise Exception('Unknown time modifier') kwargs['endsAt'] = end.isoformat() else: local_timezone = pytz.timezone(settings.PROMGEN.get('timezone', 'UTC')) for key in ['startsAt', 'endsAt']: kwargs[key] = local_timezone.localize(parser.parse( kwargs[key])).isoformat() kwargs['matchers'] = [{ 'name': name, 'value': value, 'isRegex': True if value.endswith("*") else False } for name, value in labels.items()] logger.debug('Sending silence for %s', kwargs) url = urljoin(settings.PROMGEN['alertmanager']['url'], '/api/v1/silences') util.post(url, json=kwargs).raise_for_status()
def _send(task, url, alert, data): params = { 'externalURL': data.get('externalURL'), 'alert': alert, } util.post(url, params) return True
def _send(self, url, data): if data['status'] == 'resolved': message = self.render('promgen/sender/slack.resolved.txt', data) else: message = self.render('promgen/sender/slack.body.txt', data) json = { 'text': message, } util.post(url, json=json).raise_for_status()
def silence(labels, duration=None, **kwargs): ''' Post a silence message to Alert Manager Duration should be sent in a format like 1m 2h 1d etc ''' if duration: start = timezone.now() if duration.endswith('m'): end = start + datetime.timedelta(minutes=int(duration[:-1])) elif duration.endswith('h'): end = start + datetime.timedelta(hours=int(duration[:-1])) elif duration.endswith('d'): end = start + datetime.timedelta(days=int(duration[:-1])) else: raise ValidationError('Unknown time modifier') kwargs['endsAt'] = end.isoformat() kwargs.pop('startsAt', False) else: local_timezone = pytz.timezone(util.setting("timezone", "UTC")) for key in ['startsAt', 'endsAt']: kwargs[key] = local_timezone.localize(parser.parse( kwargs[key])).isoformat() kwargs['matchers'] = [{ 'name': name, 'value': value, 'isRegex': True if value.endswith("*") else False } for name, value in labels.items()] logger.debug("Sending silence for %s", kwargs) url = urljoin(util.setting("alertmanager:url"), "/api/v1/silences") response = util.post(url, json=kwargs) response.raise_for_status() return response
def reload_prometheus(): from promgen import signals target = urljoin(util.setting("prometheus:url"), "/-/reload") response = util.post(target) response.raise_for_status() signals.post_reload.send(response)
def _send(self, channel, data): url = self.config('server') params = { 'channel': channel, 'message_format': 'text', } if data['status'] == 'resolved': params['color'] = 'green' params['message'] = self.render('promgen/sender/ikasan.resolved.txt', data) else: params['color'] = 'red' params['message'] = self.render('promgen/sender/ikasan.body.txt', data) util.post(url, params).raise_for_status()
def _send(self, token, data): url = self.config('server') if data['status'] == 'resolved': message = self.render('promgen/sender/linenotify.resolved.txt', data) else: message = self.render('promgen/sender/linenotify.body.txt', data) params = { 'message': message, } headers = { 'Authorization': 'Bearer %s' % token } util.post(url, data=params, headers=headers).raise_for_status()
def _send(self, url, data): kwargs = {} proxy = self.config('proxies') if proxy is not None and proxy != "": kwargs['proxies'] = { 'http': proxy, 'https': proxy, } if data['status'] == 'resolved': message = self.render('promgen/sender/slack.resolved.txt', data) else: message = self.render('promgen/sender/slack.body.txt', data) json = { 'text': message, } util.post(url, json=json, **kwargs).raise_for_status()
def reload_prometheus(): from promgen.signals import post_reload target = urljoin(settings.PROMGEN['prometheus']['url'], '/-/reload') response = util.post(target) post_reload.send(response)
def _send(self, url, data): print(data) util.post(url, data) return True
def reload_prometheus(): from promgen import signals target = urljoin(settings.PROMGEN["prometheus"]["url"], "/-/reload") response = util.post(target) signals.post_reload.send(response)
def _send(self, url, data): util.post(url, json=data).raise_for_status()
def clear_tombstones(): target = urljoin(util.setting("prometheus:url"), "/api/v1/admin/tsdb/clean_tombstones") response = util.post(target) response.raise_for_status()