mirror of
https://github.com/viq/NewsBlur.git
synced 2025-04-13 09:38:09 +00:00
Adding django prometheus metrics.
This commit is contained in:
parent
9e086a0caa
commit
893619596b
12 changed files with 47 additions and 7 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -19,6 +19,7 @@ certbot.conf
|
||||||
task_env.py
|
task_env.py
|
||||||
app_env.py
|
app_env.py
|
||||||
data/
|
data/
|
||||||
|
.prom_cache
|
||||||
config/certificates
|
config/certificates
|
||||||
**/*.xcuserstate
|
**/*.xcuserstate
|
||||||
UserInterfaceState.xcuserstate
|
UserInterfaceState.xcuserstate
|
||||||
|
|
2
Makefile
2
Makefile
|
@ -126,7 +126,7 @@ push_monitor:
|
||||||
push_deploy:
|
push_deploy:
|
||||||
- docker buildx build . --push --platform linux/amd64,linux/arm64 --file=docker/newsblur_deploy.Dockerfile --tag=newsblur/newsblur_deploy
|
- docker buildx build . --push --platform linux/amd64,linux/arm64 --file=docker/newsblur_deploy.Dockerfile --tag=newsblur/newsblur_deploy
|
||||||
push_images: push_web push_node push_monitor push_deploy
|
push_images: push_web push_node push_monitor push_deploy
|
||||||
push: build push_images
|
push: push_images
|
||||||
|
|
||||||
# Tasks
|
# Tasks
|
||||||
deploy_web:
|
deploy_web:
|
||||||
|
|
|
@ -28,3 +28,21 @@ if workers > 4:
|
||||||
|
|
||||||
if os.environ.get('DOCKERBUILD', False):
|
if os.environ.get('DOCKERBUILD', False):
|
||||||
workers = 2
|
workers = 2
|
||||||
|
|
||||||
|
prom_folder = '/srv/newsblur/.prom_cache'
|
||||||
|
os.makedirs(prom_folder, exist_ok=True)
|
||||||
|
os.environ['PROMETHEUS_MULTIPROC_DIR'] = prom_folder
|
||||||
|
for filename in os.listdir(prom_folder):
|
||||||
|
file_path = os.path.join(prom_folder, filename)
|
||||||
|
try:
|
||||||
|
if os.path.isfile(file_path) or os.path.islink(file_path):
|
||||||
|
os.unlink(file_path)
|
||||||
|
elif os.path.isdir(file_path):
|
||||||
|
shutil.rmtree(file_path)
|
||||||
|
except Exception as e:
|
||||||
|
print('Failed to delete %s. Reason: %s' % (file_path, e))
|
||||||
|
|
||||||
|
from prometheus_client import multiprocess
|
||||||
|
|
||||||
|
def child_exit(server, worker):
|
||||||
|
multiprocess.mark_process_dead(worker.pid)
|
||||||
|
|
|
@ -27,6 +27,7 @@ django-oauth-toolkit==1.3.3
|
||||||
django-paypal==1.1.2
|
django-paypal==1.1.2
|
||||||
django-qurl==0.1.1
|
django-qurl==0.1.1
|
||||||
django-pipeline>=2,<3
|
django-pipeline>=2,<3
|
||||||
|
django-prometheus>=2,<3
|
||||||
django-redis-cache==3.0.0
|
django-redis-cache==3.0.0
|
||||||
django-redis-sessions==0.6.1
|
django-redis-sessions==0.6.1
|
||||||
django-ses==1.0.3
|
django-ses==1.0.3
|
||||||
|
|
|
@ -33,6 +33,7 @@ services:
|
||||||
container_name: grafana
|
container_name: grafana
|
||||||
image: grafana/grafana:8.2.6
|
image: grafana/grafana:8.2.6
|
||||||
environment:
|
environment:
|
||||||
|
- GF_SECURITY_ADMIN_USER=admin
|
||||||
- GF_SECURITY_ADMIN_PASSWORD=pass
|
- GF_SECURITY_ADMIN_PASSWORD=pass
|
||||||
depends_on:
|
depends_on:
|
||||||
- prometheus
|
- prometheus
|
||||||
|
|
|
@ -5,6 +5,9 @@ services:
|
||||||
hostname: nb.com
|
hostname: nb.com
|
||||||
container_name: newsblur_web
|
container_name: newsblur_web
|
||||||
image: newsblur/newsblur_${NEWSBLUR_BASE:-python3}:latest
|
image: newsblur/newsblur_${NEWSBLUR_BASE:-python3}:latest
|
||||||
|
# build:
|
||||||
|
# context: /srv/newsblur
|
||||||
|
# dockerfile: docker/newsblur_base_image.Dockerfile
|
||||||
user: "${CURRENT_UID}:${CURRENT_GID}"
|
user: "${CURRENT_UID}:${CURRENT_GID}"
|
||||||
environment:
|
environment:
|
||||||
- DOCKERBUILD=True
|
- DOCKERBUILD=True
|
||||||
|
|
|
@ -57,7 +57,7 @@ router_logging = false
|
||||||
static_root_path = public
|
static_root_path = public
|
||||||
|
|
||||||
# enable gzip
|
# enable gzip
|
||||||
enable_gzip = false
|
enable_gzip = true
|
||||||
|
|
||||||
# https certs & key file
|
# https certs & key file
|
||||||
cert_file =
|
cert_file =
|
||||||
|
@ -937,4 +937,4 @@ default_timezone = browser
|
||||||
|
|
||||||
[expressions]
|
[expressions]
|
||||||
# Enable or disable the expressions functionality.
|
# Enable or disable the expressions functionality.
|
||||||
enabled = true
|
enabled = true
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
global:
|
global:
|
||||||
scrape_interval: 5s
|
scrape_interval: 30s
|
||||||
scrape_configs:
|
scrape_configs:
|
||||||
- job_name: 'node_exporter'
|
- job_name: 'node_exporter'
|
||||||
consul_sd_configs:
|
consul_sd_configs:
|
||||||
|
@ -115,6 +115,11 @@ scrape_configs:
|
||||||
- targets: ['{{ monitor_server }}']
|
- targets: ['{{ monitor_server }}']
|
||||||
metrics_path: /monitor/users
|
metrics_path: /monitor/users
|
||||||
scheme: https
|
scheme: https
|
||||||
|
- job_name: 'django'
|
||||||
|
static_configs:
|
||||||
|
- targets: ['{{ monitor_server }}']
|
||||||
|
metrics_path: /metrics
|
||||||
|
scheme: https
|
||||||
|
|
||||||
#- job_name: 'mongo heap usage'
|
#- job_name: 'mongo heap usage'
|
||||||
# consul_sd_configs:
|
# consul_sd_configs:
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
global:
|
global:
|
||||||
scrape_interval: 5s
|
scrape_interval: 30s
|
||||||
external_labels:
|
external_labels:
|
||||||
monitor: 'my-monitor'
|
monitor: 'my-monitor'
|
||||||
|
|
||||||
|
@ -122,6 +122,13 @@ scrape_configs:
|
||||||
scheme: https
|
scheme: https
|
||||||
tls_config:
|
tls_config:
|
||||||
insecure_skip_verify: true
|
insecure_skip_verify: true
|
||||||
|
- job_name: 'django'
|
||||||
|
static_configs:
|
||||||
|
- targets: ['haproxy']
|
||||||
|
metrics_path: /metrics
|
||||||
|
scheme: https
|
||||||
|
tls_config:
|
||||||
|
insecure_skip_verify: true
|
||||||
|
|
||||||
#- job_name: 'mongo heap usage'
|
#- job_name: 'mongo heap usage'
|
||||||
# static_configs:
|
# static_configs:
|
||||||
|
|
|
@ -93,7 +93,7 @@ YOUTUBE_API_KEY = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
|
||||||
DATABASES = {
|
DATABASES = {
|
||||||
'default': {
|
'default': {
|
||||||
'NAME': 'newsblur',
|
'NAME': 'newsblur',
|
||||||
'ENGINE': 'django.db.backends.postgresql_psycopg2',
|
'ENGINE': 'django_prometheus.db.backends.postgresql',
|
||||||
#'ENGINE': 'django.db.backends.mysql',
|
#'ENGINE': 'django.db.backends.mysql',
|
||||||
'USER': 'newsblur',
|
'USER': 'newsblur',
|
||||||
'PASSWORD': 'newsblur',
|
'PASSWORD': 'newsblur',
|
||||||
|
|
|
@ -104,6 +104,7 @@ FILE_UPLOAD_MAX_MEMORY_SIZE = 5242880 # 5 MB
|
||||||
|
|
||||||
|
|
||||||
MIDDLEWARE = (
|
MIDDLEWARE = (
|
||||||
|
'django_prometheus.middleware.PrometheusBeforeMiddleware',
|
||||||
'django.middleware.gzip.GZipMiddleware',
|
'django.middleware.gzip.GZipMiddleware',
|
||||||
'django.contrib.sessions.middleware.SessionMiddleware',
|
'django.contrib.sessions.middleware.SessionMiddleware',
|
||||||
'subdomains.middleware.SubdomainMiddleware',
|
'subdomains.middleware.SubdomainMiddleware',
|
||||||
|
@ -123,6 +124,7 @@ MIDDLEWARE = (
|
||||||
'apps.profile.middleware.SQLLogToConsoleMiddleware',
|
'apps.profile.middleware.SQLLogToConsoleMiddleware',
|
||||||
'utils.mongo_raw_log_middleware.MongoDumpMiddleware',
|
'utils.mongo_raw_log_middleware.MongoDumpMiddleware',
|
||||||
'utils.redis_raw_log_middleware.RedisDumpMiddleware',
|
'utils.redis_raw_log_middleware.RedisDumpMiddleware',
|
||||||
|
'django_prometheus.middleware.PrometheusAfterMiddleware',
|
||||||
)
|
)
|
||||||
|
|
||||||
AUTHENTICATION_BACKENDS = (
|
AUTHENTICATION_BACKENDS = (
|
||||||
|
@ -314,6 +316,7 @@ INSTALLED_APPS = (
|
||||||
'django.contrib.messages',
|
'django.contrib.messages',
|
||||||
'django.contrib.staticfiles',
|
'django.contrib.staticfiles',
|
||||||
'django_extensions',
|
'django_extensions',
|
||||||
|
'django_prometheus',
|
||||||
'paypal.standard.ipn',
|
'paypal.standard.ipn',
|
||||||
'apps.rss_feeds',
|
'apps.rss_feeds',
|
||||||
'apps.reader',
|
'apps.reader',
|
||||||
|
|
|
@ -75,7 +75,8 @@ urlpatterns = [
|
||||||
{'next_page': '/'}, name='logout'),
|
{'next_page': '/'}, name='logout'),
|
||||||
url(r'^account/ifttt/v1/', include('apps.oauth.urls')),
|
url(r'^account/ifttt/v1/', include('apps.oauth.urls')),
|
||||||
url(r'^account/', include('oauth2_provider.urls', namespace='oauth2_provider')),
|
url(r'^account/', include('oauth2_provider.urls', namespace='oauth2_provider')),
|
||||||
url(r'^monitor/', include('apps.monitor.urls'), name="monitor")
|
url(r'^monitor/', include('apps.monitor.urls'), name="monitor"),
|
||||||
|
url('', include('django_prometheus.urls')),
|
||||||
]
|
]
|
||||||
|
|
||||||
if settings.DEBUG:
|
if settings.DEBUG:
|
||||||
|
|
Loading…
Add table
Reference in a new issue