6587df3269
Currently in sentry, both SnubaSearchBackend and EventsDatasetSnubaSearchBackend exist, and they are the same. This just points to the new (renamed) class so we can delete SnubaSearchBackend from sentry, as we only left it in to transition getsentry & onpremise.
226 lines
5.9 KiB
Python
226 lines
5.9 KiB
Python
# This file is just Python, with a touch of Django which means
|
|
# you can inherit and tweak settings to your hearts content.
|
|
|
|
from sentry.conf.server import * # NOQA
|
|
|
|
DATABASES = {
|
|
"default": {
|
|
"ENGINE": "sentry.db.postgres",
|
|
"NAME": "postgres",
|
|
"USER": "postgres",
|
|
"PASSWORD": "",
|
|
"HOST": "postgres",
|
|
"PORT": "",
|
|
}
|
|
}
|
|
|
|
# You should not change this setting after your database has been created
|
|
# unless you have altered all schemas first
|
|
SENTRY_USE_BIG_INTS = True
|
|
|
|
# If you're expecting any kind of real traffic on Sentry, we highly recommend
|
|
# configuring the CACHES and Redis settings
|
|
|
|
###########
|
|
# General #
|
|
###########
|
|
|
|
# Instruct Sentry that this install intends to be run by a single organization
|
|
# and thus various UI optimizations should be enabled.
|
|
SENTRY_SINGLE_ORGANIZATION = True
|
|
|
|
SENTRY_OPTIONS["system.event-retention-days"] = env('SENTRY_EVENT_RETENTION_DAYS') or 90
|
|
|
|
#########
|
|
# Redis #
|
|
#########
|
|
|
|
# Generic Redis configuration used as defaults for various things including:
|
|
# Buffers, Quotas, TSDB
|
|
|
|
SENTRY_OPTIONS["redis.clusters"] = {
|
|
"default": {
|
|
"hosts": {0: {"host": "redis", "password": "", "port": "6379", "db": "0"}}
|
|
}
|
|
}
|
|
|
|
#########
|
|
# Queue #
|
|
#########
|
|
|
|
# See https://docs.getsentry.com/on-premise/server/queue/ for more
|
|
# information on configuring your queue broker and workers. Sentry relies
|
|
# on a Python framework called Celery to manage queues.
|
|
|
|
rabbitmq_host = None
|
|
if rabbitmq_host:
|
|
BROKER_URL = "amqp://{username}:{password}@{host}/{vhost}".format(
|
|
username="guest", password="guest", host=rabbitmq_host, vhost="/"
|
|
)
|
|
else:
|
|
BROKER_URL = "redis://:{password}@{host}:{port}/{db}".format(
|
|
**SENTRY_OPTIONS["redis.clusters"]["default"]["hosts"][0]
|
|
)
|
|
|
|
|
|
#########
|
|
# Cache #
|
|
#########
|
|
|
|
# Sentry currently utilizes two separate mechanisms. While CACHES is not a
|
|
# requirement, it will optimize several high throughput patterns.
|
|
|
|
CACHES = {
|
|
"default": {
|
|
"BACKEND": "django.core.cache.backends.memcached.MemcachedCache",
|
|
"LOCATION": ["memcached:11211"],
|
|
"TIMEOUT": 3600,
|
|
}
|
|
}
|
|
|
|
# A primary cache is required for things such as processing events
|
|
SENTRY_CACHE = "sentry.cache.redis.RedisCache"
|
|
|
|
DEFAULT_KAFKA_OPTIONS = {
|
|
"bootstrap.servers": "kafka:9092",
|
|
"message.max.bytes": 50000000,
|
|
"socket.timeout.ms": 1000,
|
|
}
|
|
|
|
SENTRY_EVENTSTREAM = "sentry.eventstream.kafka.KafkaEventStream"
|
|
SENTRY_EVENTSTREAM_OPTIONS = {"producer_configuration": DEFAULT_KAFKA_OPTIONS}
|
|
|
|
KAFKA_CLUSTERS["default"] = DEFAULT_KAFKA_OPTIONS
|
|
|
|
###############
|
|
# Rate Limits #
|
|
###############
|
|
|
|
# Rate limits apply to notification handlers and are enforced per-project
|
|
# automatically.
|
|
|
|
SENTRY_RATELIMITER = "sentry.ratelimits.redis.RedisRateLimiter"
|
|
|
|
##################
|
|
# Update Buffers #
|
|
##################
|
|
|
|
# Buffers (combined with queueing) act as an intermediate layer between the
|
|
# database and the storage API. They will greatly improve efficiency on large
|
|
# numbers of the same events being sent to the API in a short amount of time.
|
|
# (read: if you send any kind of real data to Sentry, you should enable buffers)
|
|
|
|
SENTRY_BUFFER = "sentry.buffer.redis.RedisBuffer"
|
|
|
|
##########
|
|
# Quotas #
|
|
##########
|
|
|
|
# Quotas allow you to rate limit individual projects or the Sentry install as
|
|
# a whole.
|
|
|
|
SENTRY_QUOTAS = "sentry.quotas.redis.RedisQuota"
|
|
|
|
########
|
|
# TSDB #
|
|
########
|
|
|
|
# The TSDB is used for building charts as well as making things like per-rate
|
|
# alerts possible.
|
|
|
|
SENTRY_TSDB = "sentry.tsdb.redissnuba.RedisSnubaTSDB"
|
|
|
|
#########
|
|
# SNUBA #
|
|
#########
|
|
|
|
SENTRY_SEARCH = "sentry.search.snuba.EventsDatasetSnubaSearchBackend"
|
|
SENTRY_SEARCH_OPTIONS = {}
|
|
SENTRY_TAGSTORE_OPTIONS = {}
|
|
|
|
###########
|
|
# Digests #
|
|
###########
|
|
|
|
# The digest backend powers notification summaries.
|
|
|
|
SENTRY_DIGESTS = "sentry.digests.backends.redis.RedisBackend"
|
|
|
|
##############
|
|
# Web Server #
|
|
##############
|
|
|
|
SENTRY_WEB_HOST = "0.0.0.0"
|
|
SENTRY_WEB_PORT = 9000
|
|
SENTRY_WEB_OPTIONS = {
|
|
"http": "%s:%s" % (SENTRY_WEB_HOST, SENTRY_WEB_PORT),
|
|
"protocol": "uwsgi",
|
|
# This is needed to prevent https://git.io/fj7Lw
|
|
"uwsgi-socket": None,
|
|
"http-keepalive": True,
|
|
"memory-report": False,
|
|
# 'workers': 3, # the number of web workers
|
|
}
|
|
|
|
###########
|
|
# SSL/TLS #
|
|
###########
|
|
|
|
# If you're using a reverse SSL proxy, you should enable the X-Forwarded-Proto
|
|
# header and enable the settings below
|
|
|
|
# SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
|
|
# SESSION_COOKIE_SECURE = True
|
|
# CSRF_COOKIE_SECURE = True
|
|
# SOCIAL_AUTH_REDIRECT_IS_HTTPS = True
|
|
|
|
# End of SSL/TLS settings
|
|
|
|
############
|
|
# Features #
|
|
############
|
|
|
|
SENTRY_FEATURES["projects:sample-events"] = False
|
|
SENTRY_FEATURES.update(
|
|
{
|
|
feature: True
|
|
for feature in (
|
|
"organizations:discover",
|
|
"organizations:events",
|
|
"organizations:global-views",
|
|
"organizations:integrations-issue-basic",
|
|
"organizations:integrations-issue-sync",
|
|
"organizations:invite-members",
|
|
"organizations:new-issue-ui",
|
|
"organizations:repos",
|
|
"organizations:require-2fa",
|
|
"organizations:sentry10",
|
|
"organizations:sso-basic",
|
|
"organizations:sso-rippling",
|
|
"organizations:sso-saml2",
|
|
"organizations:suggested-commits",
|
|
"projects:custom-inbound-filters",
|
|
"projects:data-forwarding",
|
|
"projects:discard-groups",
|
|
"projects:plugins",
|
|
"projects:rate-limits",
|
|
"projects:servicehooks",
|
|
)
|
|
}
|
|
)
|
|
|
|
######################
|
|
# GitHub Integration #
|
|
#####################
|
|
|
|
# GITHUB_APP_ID = 'YOUR_GITHUB_APP_ID'
|
|
# GITHUB_API_SECRET = 'YOUR_GITHUB_API_SECRET'
|
|
# GITHUB_EXTENDED_PERMISSIONS = ['repo']
|
|
|
|
#########################
|
|
# Bitbucket Integration #
|
|
########################
|
|
|
|
# BITBUCKET_CONSUMER_KEY = 'YOUR_BITBUCKET_CONSUMER_KEY'
|
|
# BITBUCKET_CONSUMER_SECRET = 'YOUR_BITBUCKET_CONSUMER_SECRET'
|