def password_changed(): write_points([{ 'measurement': 'karrot.events', 'fields': { 'password_changed': 1, }, }])
def password_reset_successful(): write_points([{ 'measurement': 'karrot.events', 'fields': { 'password_reset_successful': 1, }, }])
def account_deletion_requested(): write_points([{ 'measurement': 'karrot.events', 'fields': { 'account_deletion_requested': 1, }, }])
def account_deletion_successful(): write_points([{ 'measurement': 'karrot.events', 'fields': { 'account_deletion_successful': 1, }, }])
def password_reset_requested(): write_points([{ 'measurement': 'karrot.events', 'fields': { 'password_reset_requested': 1, }, }])
def incoming_email_rejected(): write_points([{ 'measurement': 'karrot.events', 'fields': { 'incoming_email_rejected': 1, }, }])
def email_changed(): write_points([{ 'measurement': 'karrot.events', 'fields': { 'email_changed': 1, }, }])
def pushed_via_subscription(success_subscriptions, failure_subscriptions): # [('web', True), ('web', False), ('android', True), ...] platform_and_result = [(item.platform, True) for item in success_subscriptions] + \ [(item.platform, False) for item in failure_subscriptions] def key(x): return x[0] measurements = [] for platform, group in itertools.groupby(sorted(platform_and_result, key=key), key=key): group = list(group) measurements.append({ 'measurement': 'karrot.events', 'tags': { 'platform': platform, }, 'fields': { 'subscription_push': sum(1 for _ in group if _[1] is True), 'subscription_push_error': sum(1 for _ in group if _[1] is False) }, }) write_points(measurements)
def activity_enabled(activity): write_points([{ 'measurement': 'karrot.events', 'tags': activity_tags(activity), 'fields': { 'activity_enabled': 1 }, }])
def feedback_given(feedback): write_points([{ 'measurement': 'karrot.events', 'tags': activity_tags(feedback.about), 'fields': { 'feedback': 1 }, }])
def feedback_dismissed(activity): write_points([{ 'measurement': 'karrot.events', 'tags': activity_tags(activity), 'fields': { 'feedback_dismissed': 1 }, }])
def member_became_editor(group): write_points([{ 'measurement': 'karrot.events', 'tags': group_tags(group), 'fields': { 'member_became_editor': 1 }, }])
def trust_given(group): write_points([{ 'measurement': 'karrot.events', 'tags': group_tags(group), 'fields': { 'trust_given': 1 }, }])
def group_activity(group): write_points([{ 'measurement': 'karrot.events', 'tags': group_tags(group), 'fields': { 'group_activity': 1 }, }])
def vote_deleted(issue): write_points([{ 'measurement': 'karrot.events', 'tags': issue_tags(issue), 'fields': { 'issue_vote_deleted': 1 }, }])
def user_lost_editor_role(group): write_points([{ 'measurement': 'karrot.events', 'tags': group_tags(group), 'fields': { 'user_lost_editor_role': 1 }, }])
def reaction_given(reaction): write_points([{ 'measurement': 'karrot.events', 'tags': conversation_tags(reaction.message.conversation), 'fields': { 'message_reaction': 1 }, }])
def notification_created(notification): write_points([{ 'measurement': 'karrot.events', 'tags': notification_tags(notification), 'fields': { 'notification_created': 1 }, }])
def offer_created(offer): write_points([{ 'measurement': 'karrot.events', 'tags': offer_tags(offer), 'fields': { 'offer_created': 1 }, }])
def verification_code_failed(reason): write_points([{ 'measurement': 'karrot.events', 'fields': { 'verification_code_{}'.format(reason): 1, 'verification_code_failed': 1, }, }])
def invitation_created(invitation): write_points([{ 'measurement': 'karrot.events', 'tags': group_tags(invitation.group), 'fields': { 'invitation_created': 1 }, }])
def login_failed(email): write_points([{ 'measurement': 'django_auth_user_login_failed', # mimic existing stats from django-influxdb-metrics 'fields': { 'value': 1, 'email': email, }, }])
def group_summary_email(group, **extra_fields): write_points([{ 'measurement': 'karrot.email.group_summary', 'tags': group_tags(group), 'fields': { 'value': 1, **extra_fields }, }])
def activity_notification_email(group, **kwargs): write_points([{ 'measurement': 'karrot.email.activity_notification', 'tags': group_tags(group), 'fields': { 'value': 1, **kwargs }, }])
def pushed_via_websocket(topic): write_points([{ 'measurement': 'karrot.events', 'tags': { 'topic': topic, }, 'fields': { 'websocket_push': 1 }, }])
def email_sent(recipient_count, category): write_points([{ 'measurement': 'karrot.email.sent', 'tags': { 'category': category, }, 'fields': { 'value': 1, 'recipient_count': recipient_count }, }])
def notification_clicked(notification): write_points([{ 'measurement': 'karrot.events', 'tags': notification_tags(notification), 'fields': { 'notification_clicked': 1, 'notification_clicked_seconds': round((timezone.now() - notification.created_at).total_seconds()) }, }])
def message_written(message): write_points([{ 'measurement': 'karrot.events', 'tags': { **conversation_tags(message.conversation), 'is_reply': message.is_thread_reply(), }, 'fields': { 'message': 1 }, }])
def record_group_stats(): with timer() as t: points = [] for group in Group.objects.all(): points.extend(get_group_members_stats(group)) points.extend(get_group_places_stats(group)) points.extend(get_application_stats(group)) points.extend(get_issue_stats(group)) write_points(points) stats_utils.periodic_task('group__record_group_stats', seconds=t.elapsed_seconds)
def periodic_task(name, seconds=None, extra_fields=None): if extra_fields is None: extra_fields = {} if seconds is not None: extra_fields['seconds'] = seconds write_points([{ 'measurement': 'karrot.periodic', 'tags': { 'name': name, }, 'fields': { 'value': 1, **extra_fields }, }])