mirror of
https://github.com/viq/NewsBlur.git
synced 2025-08-05 16:49:45 +00:00
75 lines
2.7 KiB
Python
Executable file
75 lines
2.7 KiB
Python
Executable file
#!/srv/newsblur/venv/newsblur3/bin/python
|
|
import os
|
|
|
|
import redis
|
|
|
|
from utils.munin.base import MuninGraph
|
|
|
|
os.environ["DJANGO_SETTINGS_MODULE"] = "newsblur_web.settings"
|
|
import django
|
|
|
|
django.setup()
|
|
|
|
|
|
class NBMuninGraph(MuninGraph):
|
|
@property
|
|
def graph_config(self):
|
|
return {
|
|
"graph_category": "NewsBlur",
|
|
"graph_title": "NewsBlur Feed Counts",
|
|
"graph_vlabel": "Feeds Feed Counts",
|
|
"graph_args": "-l 0",
|
|
"scheduled_feeds.label": "scheduled_feeds",
|
|
"exception_feeds.label": "exception_feeds",
|
|
"exception_pages.label": "exception_pages",
|
|
"duplicate_feeds.label": "duplicate_feeds",
|
|
"active_feeds.label": "active_feeds",
|
|
"push_feeds.label": "push_feeds",
|
|
}
|
|
|
|
def calculate_metrics(self):
|
|
from django.conf import settings
|
|
|
|
from apps.push.models import PushSubscription
|
|
from apps.rss_feeds.models import DuplicateFeed, Feed
|
|
from apps.statistics.models import MStatistics
|
|
|
|
exception_feeds = MStatistics.get("munin:exception_feeds")
|
|
if not exception_feeds:
|
|
exception_feeds = Feed.objects.filter(has_feed_exception=True).count()
|
|
MStatistics.set("munin:exception_feeds", exception_feeds, 60 * 60 * 12)
|
|
|
|
exception_pages = MStatistics.get("munin:exception_pages")
|
|
if not exception_pages:
|
|
exception_pages = Feed.objects.filter(has_page_exception=True).count()
|
|
MStatistics.set("munin:exception_pages", exception_pages, 60 * 60 * 12)
|
|
|
|
duplicate_feeds = MStatistics.get("munin:duplicate_feeds")
|
|
if not duplicate_feeds:
|
|
duplicate_feeds = DuplicateFeed.objects.count()
|
|
MStatistics.set("munin:duplicate_feeds", duplicate_feeds, 60 * 60 * 12)
|
|
|
|
active_feeds = MStatistics.get("munin:active_feeds")
|
|
if not active_feeds:
|
|
active_feeds = Feed.objects.filter(active_subscribers__gt=0).count()
|
|
MStatistics.set("munin:active_feeds", active_feeds, 60 * 60 * 12)
|
|
|
|
push_feeds = MStatistics.get("munin:push_feeds")
|
|
if not push_feeds:
|
|
push_feeds = PushSubscription.objects.filter(verified=True).count()
|
|
MStatistics.set("munin:push_feeds", push_feeds, 60 * 60 * 12)
|
|
|
|
r = redis.Redis(connection_pool=settings.REDIS_FEED_UPDATE_POOL)
|
|
|
|
return {
|
|
"scheduled_feeds": r.zcard("scheduled_updates"),
|
|
"exception_feeds": exception_feeds,
|
|
"exception_pages": exception_pages,
|
|
"duplicate_feeds": duplicate_feeds,
|
|
"active_feeds": active_feeds,
|
|
"push_feeds": push_feeds,
|
|
}
|
|
|
|
|
|
if __name__ == "__main__":
|
|
NBMuninGraph().run()
|