There's so many way to send logs to an elk... logspout, filebeat, journalbeat, etc.
But docker has a gelf log driver and logstash a gelf input. So here we are.
Here is a docker-compose to test a full elk with a container sending logs via gelf.
from django.contrib.auth.models import AnonymousUser | |
from django.test import RequestFactory | |
from snapshottest.django import TestCase | |
from graphene.test import Client | |
from hackernews.schema import schema | |
class APITestCase(TestCase): | |
def setUp(self): |
There's so many way to send logs to an elk... logspout, filebeat, journalbeat, etc.
But docker has a gelf log driver and logstash a gelf input. So here we are.
Here is a docker-compose to test a full elk with a container sending logs via gelf.
from rest_framework.decorators import api_view | |
from django.http import JsonResponse | |
from rest_framework.authtoken.views import ObtainAuthToken | |
from app.auth_helper.authenticator import Authenticator | |
class CustomAuthToken(ObtainAuthToken): | |
def post(self, request, *args, **kwargs): | |
serializer = self.serializer_class(data=request.data, |
import os | |
from django.core.exceptions import ImproperlyConfigured | |
def get_env_value(env_variable): | |
try: | |
return os.environ[env_variable] | |
except KeyError: | |
error_msg = 'Set the {} environment variable'.format(env_variable) | |
raise ImproperlyConfigured(error_msg) |
import jwt | |
import datetime | |
from app.utils.utils import get_env_value | |
class Authenticator: | |
CHARSET = 'utf-8' | |
ALGORITHM = 'RS256' | |
TOKEN_TIME_DAYS = 15 | |
CLAIMS = { |
ssh-keygen -t rsa -b 4096 -m PEM -f jwtRS256.key | |
# Don't add passphrase | |
openssl rsa -in jwtRS256.key -pubout -outform PEM -out jwtRS256.key.pub | |
cat jwtRS256.key | |
cat jwtRS256.key.pub |
from graphql_jwt.utils import jwt_payload | |
from rest_framework_simplejwt.serializers import TokenObtainPairSerializer | |
from rest_framework_simplejwt.views import TokenObtainPairView | |
from rest_framework_simplejwt.authentication import JWTAuthentication, JWTTokenUserAuthentication | |
from rest_framework_simplejwt.models import TokenUser | |
from rest_framework_simplejwt.settings import api_settings | |
from rest_framework.decorators import api_view |
version: '3.7' | |
services: | |
reverse_proxy: | |
image: traefik:v2.1 | |
container_name: ${MY_DOMAIN}-proxy | |
ports: | |
# The HTTP port | |
- '80:80' | |
# The HTTPS port |
version: '3.7' | |
services: | |
reverse_proxy: | |
image: traefik:v2.1 | |
container_name: ${MY_DOMAIN}-proxy | |
ports: | |
# The HTTP port | |
- '80:80' | |
# The HTTPS port | |
- '443:443' |
RewriteEngine On | |
RewriteBase / | |
RewriteRule ^index\.php$ - [L] | |
# add a trailing slash to /wp-admin | |
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L] | |
RewriteCond %{REQUEST_FILENAME} -f [OR] | |
RewriteCond %{REQUEST_FILENAME} -d | |
RewriteRule ^ - [L] | |
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L] | |
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L] |