diff --git a/.eslintignore b/.eslintignore
index 6b92edbe29..bcea22d29b 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -1,3 +1,2 @@
static/js/blueslip.js
-puppet/zulip_ops/files/statsd/local.js
static/webpack-bundles
diff --git a/analytics/views.py b/analytics/views.py
index 3bf155abe6..bb90e915a4 100644
--- a/analytics/views.py
+++ b/analytics/views.py
@@ -1066,14 +1066,11 @@ def get_realm_activity(request, realm_str):
content = sent_messages_report(realm_str)
data += [(page_title, content)]
- realm_link = 'https://stats1.zulip.net:444/render/?from=-7days'
- realm_link += '&target=stats.gauges.staging.users.active.%s.0_16hr' % (realm_str,)
-
title = realm_str
return render(
request,
'analytics/activity.html',
- context=dict(data=data, realm_link=realm_link, title=title),
+ context=dict(data=data, realm_link=None, title=title),
)
@require_server_admin
diff --git a/puppet/zulip_ops/files/apache/sites/graphite.conf b/puppet/zulip_ops/files/apache/sites/graphite.conf
deleted file mode 100644
index 314042c45a..0000000000
--- a/puppet/zulip_ops/files/apache/sites/graphite.conf
+++ /dev/null
@@ -1,50 +0,0 @@
-WSGISocketPrefix /usr/lib/apache2/modules/
-Listen 444
-
-
- ServerName stats1.zulip.net
-
- SSLEngine on
- SSLCertificateFile /etc/ssl/certs/stats1.zulip.net.crt
- SSLCertificateKeyFile /etc/ssl/certs/stats1.zulip.net.key
-
- Header add Strict-Transport-Security "max-age=15768000"
-
-
- AuthType Digest
- AuthName "wiki"
- AuthDigestProvider file
- AuthUserFile /etc/apache2/users/wiki
- Require valid-user
-
-
- # Graphite specific setup
- DocumentRoot "/opt/graphite/webapp"
- WSGIDaemonProcess graphite processes=5 threads=5 display-name='%{GROUP}' inactivity-timeout=120
- WSGIProcessGroup graphite
- WSGIApplicationGroup %{GLOBAL}
- WSGIImportScript /opt/graphite/conf/graphite.wsgi process-group=graphite application-group=%{GLOBAL}
-
- WSGIScriptAlias / /opt/graphite/conf/graphite.wsgi
-
- Alias /content/ /opt/graphite/webapp/content/
-
- SetHandler None
-
-
- Alias /media/ "/usr/lib/pymodules/python2/django/contrib/admin/media/"
-
- SetHandler None
-
-
-
- Order deny,allow
- Allow from all
-
-
- ErrorLog /var/log/apache2/error.log
- LogLevel warn
-
- CustomLog /var/log/apache2/access.log combined
- ServerSignature On
-
diff --git a/puppet/zulip_ops/files/apache/sites/graphiti.conf b/puppet/zulip_ops/files/apache/sites/graphiti.conf
deleted file mode 100644
index d21705ecf2..0000000000
--- a/puppet/zulip_ops/files/apache/sites/graphiti.conf
+++ /dev/null
@@ -1,43 +0,0 @@
-
- ServerName graphiti.zulip.net
- Redirect permanent / https://graphiti.zulip.net/
-
-
-
-
- ServerName graphiti.zulip.net
-
- SSLEngine on
- SSLCertificateFile /etc/ssl/certs/stats1.zulip.net.crt
- SSLCertificateKeyFile /etc/ssl/certs/stats1.zulip.net.key
-
- Header add Strict-Transport-Security "max-age=15768000"
- Header add X-Frame-Options DENY
-
-
- AuthType Digest
- AuthName "wiki"
- AuthDigestProvider file
- AuthUserFile /etc/apache2/users/wiki
- Require valid-user
-
-
- # Graphiti reverse-proxy to unicorn serving at localhost:8088
-
- ProxyRequests Off
- ProxyPreserveHost On
-
-
- Order deny,allow
- Allow from all
-
-
- ProxyPass / http://127.0.0.1:8088/
- ProxyPassReverse / http://127.0.0.1:8088/
-
- ErrorLog /var/log/apache2/error.log
- LogLevel warn
-
- CustomLog /var/log/apache2/access.log combined
- ServerSignature On
-
diff --git a/puppet/zulip_ops/files/apache/sites/stats.conf b/puppet/zulip_ops/files/apache/sites/stats.conf
deleted file mode 100644
index de65a80e54..0000000000
--- a/puppet/zulip_ops/files/apache/sites/stats.conf
+++ /dev/null
@@ -1,38 +0,0 @@
-WSGISocketPrefix /usr/lib/apache2/modules/
-
-
- ServerName stats1.zulip.net
-
- SSLEngine on
- SSLCertificateFile /etc/ssl/certs/stats1.zulip.net.crt
- SSLCertificateKeyFile /etc/ssl/certs/stats1.zulip.net.key
-
- Header add Strict-Transport-Security "max-age=15768000"
-
- AuthType Digest
- AuthName "wiki"
- AuthDigestProvider file
- AuthUserFile /etc/apache2/users/wiki
- Require valid-user
-
-
- ErrorLog /var/log/apache2/error.log
- LogLevel warn
-
- CustomLog /var/log/apache2/access.log combined
- ServerSignature On
- Header add Strict-Transport-Security "max-age=15768000"
-
- # Graphiti reverse-proxy to unicorn serving at localhost:8088
-
- ProxyRequests Off
- ProxyPreserveHost On
-
-
- Order deny,allow
- Allow from all
-
-
- ProxyPass / http://127.0.0.1:8088/
- ProxyPassReverse /grapiti http://127.0.0.1:8088/
-
diff --git a/puppet/zulip_ops/files/cron.d/graphite_backup b/puppet/zulip_ops/files/cron.d/graphite_backup
deleted file mode 100644
index 36763e6774..0000000000
--- a/puppet/zulip_ops/files/cron.d/graphite_backup
+++ /dev/null
@@ -1,4 +0,0 @@
-MAILTO=root
-SHELL=/bin/bash
-
-0 3 * * * zulip /home/zulip/zulip/puppet/zulip_ops/files/graphite/daily_rsync_backup.sh
diff --git a/puppet/zulip_ops/files/graphite/aggregation-rules.conf b/puppet/zulip_ops/files/graphite/aggregation-rules.conf
deleted file mode 100644
index b10a85be08..0000000000
--- a/puppet/zulip_ops/files/graphite/aggregation-rules.conf
+++ /dev/null
@@ -1,60 +0,0 @@
-# The form of each line in this file should be as follows:
-#
-# output_template (frequency) = method input_pattern
-#
-# This will capture any received metrics that match 'input_pattern'
-# for calculating an aggregate metric. The calculation will occur
-# every 'frequency' seconds and the 'method' can specify 'sum' or
-# 'avg'. The name of the aggregate metric will be derived from
-# 'output_template' filling in any captured fields from 'input_pattern'.
-#
-# For example, if you're metric naming scheme is:
-#
-# .applications...
-#
-# You could configure some aggregations like so:
-#
-# .applications..all.requests (60) = sum .applications..*.requests
-# .applications..all.latency (60) = avg .applications..*.latency
-#
-# As an example, if the following metrics are received:
-#
-# prod.applications.apache.www01.requests
-# prod.applications.apache.www01.requests
-#
-# They would all go into the same aggregation buffer and after 60 seconds the
-# aggregate metric 'prod.applications.apache.all.requests' would be calculated
-# by summing their values.
-#
-# Note that any time this file is modified, it will be re-read automatically.
-
-# NOTE: If you use the `sum` aggregation method, make sure the aggregation period is
-# 5 seconds unless you know what you are doing. statsd pushes to carbon
-# every 5 seconds (see local.js), so aggregating over a longer period of time
-# will inflate the output value
-
-# Aggregate all per-bucket remote cache stats into a generic hit/miss stat
-stats..cache.all.hit (5) = sum stats..cache.*.hit
-stats..cache.all.miss (5) = sum stats..cache.*.miss
-
-# Aggregate all per-bucket remote cache stats counts into a generic hit/miss stat
-stats_counts..cache.all.hit (5) = sum stats_counts..cache.*.hit
-stats_counts..cache.all.miss (5) = sum stats_counts..cache.*.miss
-
-# Aggregate all per-domain active stats to overall active stats
-stats.gauges..users.active.all. (5) = sum stats.gauges..users.active.*.
-stats.gauges..users.reading.all. (5) = sum stats.gauges..users.reading.*.
-
-# Aggregate all per-realm end-to-end send stats to overall
-stats.timers..endtoend.send_time.all. (5) = sum stats.timers..endtoend.send_time.*.
-stats.timers..endtoend.receive_time.all. (5) = sum stats.timers..endtoend.receive_time.*.
-stats.timers..endtoend.displayed_time.all. (5) = sum stats.timers..endtoend.displayed_time.*.
-
-# Aggregate all per-realm narrow timing stats
-stats.timers..narrow.initial_core.all. (5) = sum stats.timers..narrow.initial_core.*.
-stats.timers..narrow.initial_free.all. (5) = sum stats.timers..narrow.initial_free.*.
-stats.timers..narrow.network.all. (5) = sum stats.timers..narrow.network.*.
-
-# Do the same for unnarrow times
-stats.timers..unnarrow.initial_core.all. (5) = sum stats.timers..unnarrow.initial_core.*.
-stats.timers..unnarrow.initial_free.all. (5) = sum stats.timers..unnarrow.initial_free.*.
diff --git a/puppet/zulip_ops/files/graphite/carbon.conf b/puppet/zulip_ops/files/graphite/carbon.conf
deleted file mode 100644
index 1d6a06cbf6..0000000000
--- a/puppet/zulip_ops/files/graphite/carbon.conf
+++ /dev/null
@@ -1,280 +0,0 @@
-[cache]
-# Configure carbon directories.
-#
-# OS environment variables can be used to tell carbon where graphite is
-# installed, where to read configuration from and where to write data.
-#
-# GRAPHITE_ROOT - Root directory of the graphite installation.
-# Defaults to ../
-# GRAPHITE_CONF_DIR - Configuration directory (where this file lives).
-# Defaults to $GRAPHITE_ROOT/conf/
-# GRAPHITE_STORAGE_DIR - Storage directory for whipser/rrd/log/pid files.
-# Defaults to $GRAPHITE_ROOT/storage/
-#
-# To change other directory paths, add settings to this file. The following
-# configuration variables are available with these default values:
-#
-# STORAGE_DIR = $GRAPHITE_STORAGE_DIR
-# LOCAL_DATA_DIR = STORAGE_DIR/whisper/
-# WHITELISTS_DIR = STORAGE_DIR/lists/
-# CONF_DIR = STORAGE_DIR/conf/
-# LOG_DIR = STORAGE_DIR/log/
-# PID_DIR = STORAGE_DIR/
-#
-# For FHS style directory structures, use:
-#
-# STORAGE_DIR = /var/lib/carbon/
-# CONF_DIR = /etc/carbon/
-# LOG_DIR = /var/log/carbon/
-# PID_DIR = /var/run/
-#
-#LOCAL_DATA_DIR = /opt/graphite/storage/whisper/
-
-# Specify the user to drop privileges to
-# If this is blank carbon runs as the user that invokes it
-# This user must have write access to the local data directory
-USER =
-
-# Limit the size of the cache to avoid swapping or becoming CPU bound.
-# Sorts and serving cache queries gets more expensive as the cache grows.
-# Use the value "inf" (infinity) for an unlimited cache size.
-MAX_CACHE_SIZE = inf
-
-# Limits the number of whisper update_many() calls per second, which effectively
-# means the number of write requests sent to the disk. This is intended to
-# prevent over-utilizing the disk and thus starving the rest of the system.
-# When the rate of required updates exceeds this, then carbon's caching will
-# take effect and increase the overall throughput accordingly.
-MAX_UPDATES_PER_SECOND = 500
-
-# Softly limits the number of whisper files that get created each minute.
-# Setting this value low (like at 50) is a good way to ensure your graphite
-# system will not be adversely impacted when a bunch of new metrics are
-# sent to it. The trade off is that it will take much longer for those metrics'
-# database files to all get created and thus longer until the data becomes usable.
-# Setting this value high (like "inf" for infinity) will cause graphite to create
-# the files quickly but at the risk of slowing I/O down considerably for a while.
-MAX_CREATES_PER_MINUTE = 50
-
-LINE_RECEIVER_INTERFACE = 0.0.0.0
-LINE_RECEIVER_PORT = 2003
-
-# Set this to True to enable the UDP listener. By default this is off
-# because it is very common to run multiple carbon daemons and managing
-# another (rarely used) port for every carbon instance is not fun.
-ENABLE_UDP_LISTENER = False
-UDP_RECEIVER_INTERFACE = 0.0.0.0
-UDP_RECEIVER_PORT = 2003
-
-PICKLE_RECEIVER_INTERFACE = 0.0.0.0
-PICKLE_RECEIVER_PORT = 2004
-
-# Per security concerns outlined in Bug #817247 the pickle receiver
-# will use a more secure and slightly less efficient unpickler.
-# Set this to True to revert to the old-fashioned insecure unpickler.
-USE_INSECURE_UNPICKLER = False
-
-CACHE_QUERY_INTERFACE = 0.0.0.0
-CACHE_QUERY_PORT = 7002
-
-# Set this to False to drop datapoints received after the cache
-# reaches MAX_CACHE_SIZE. If this is True (the default) then sockets
-# over which metrics are received will temporarily stop accepting
-# data until the cache size falls below 95% MAX_CACHE_SIZE.
-USE_FLOW_CONTROL = True
-
-# By default, carbon-cache will log every whisper update. This can be excessive and
-# degrade performance if logging on the same volume as the whisper data is stored.
-LOG_UPDATES = False
-
-# On some systems it is desirable for whisper to write synchronously.
-# Set this option to True if you'd like to try this. Basically it will
-# shift the onus of buffering writes from the kernel into carbon's cache.
-WHISPER_AUTOFLUSH = False
-
-# By default new Whisper files are created pre-allocated with the data region
-# filled with zeros to prevent fragmentation and speed up contiguous reads and
-# writes (which are common). Enabling this option will cause Whisper to create
-# the file sparsely instead. Enabling this option may allow a large increase of
-# MAX_CREATES_PER_MINUTE but may have longer term performance implications
-# depending on the underlying storage configuration.
-# WHISPER_SPARSE_CREATE = False
-
-# Enabling this option will cause Whisper to lock each Whisper file it writes
-# to with an exclusive lock (LOCK_EX, see: man 2 flock). This is useful when
-# multiple carbon-cache daemons are writing to the same files
-# WHISPER_LOCK_WRITES = False
-
-# Set this to True to enable whitelisting and blacklisting of metrics in
-# CONF_DIR/whitelist and CONF_DIR/blacklist. If the whitelist is missing or
-# empty, all metrics will pass through
-# USE_WHITELIST = False
-
-# By default, carbon itself will log statistics (such as a count,
-# metricsReceived) with the top level prefix of 'carbon' at an interval of 60
-# seconds. Set CARBON_METRIC_INTERVAL to 0 to disable instrumentation
-# CARBON_METRIC_PREFIX = carbon
-# CARBON_METRIC_INTERVAL = 60
-
-# Enable AMQP if you want to receve metrics using an amqp broker
-# ENABLE_AMQP = False
-
-# Verbose means a line will be logged for every metric received
-# useful for testing
-# AMQP_VERBOSE = False
-
-# AMQP_HOST = localhost
-# AMQP_PORT = 5672
-# AMQP_VHOST = /
-# AMQP_USER = guest
-# AMQP_PASSWORD = guest
-# AMQP_EXCHANGE = graphite
-# AMQP_METRIC_NAME_IN_BODY = False
-
-# The manhole interface allows you to SSH into the carbon daemon
-# and get a python interpreter. BE CAREFUL WITH THIS! If you do
-# something like time.sleep() in the interpreter, the whole process
-# will sleep! This is *extremely* helpful in debugging, assuming
-# you are familiar with the code. If you are not, please don't
-# mess with this, you are asking for trouble :)
-#
-# ENABLE_MANHOLE = False
-# MANHOLE_INTERFACE = 127.0.0.1
-# MANHOLE_PORT = 7222
-# MANHOLE_USER = admin
-# MANHOLE_PUBLIC_KEY = ssh-rsa AAAAB3NzaC1yc2EAAAABiwAaAIEAoxN0sv/e4eZCPpi3N3KYvyzRaBaMeS2RsOQ/cDuKv11dlNzVeiyc3RFmCv5Rjwn/lQ79y0zyHxw67qLyhQ/kDzINc4cY41ivuQXm2tPmgvexdrBv5nsfEpjs3gLZfJnyvlcVyWK/lId8WUvEWSWHTzsbtmXAF2raJMdgLTbQ8wE=
-
-# Patterns for all of the metrics this machine will store. Read more at
-# http://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol#Bindings
-#
-# Example: store all sales, linux servers, and utilization metrics
-# BIND_PATTERNS = sales.#, servers.linux.#, #.utilization
-#
-# Example: store everything
-# BIND_PATTERNS = #
-
-# To configure special settings for the carbon-cache instance 'b', uncomment this:
-#[cache:b]
-#LINE_RECEIVER_PORT = 2103
-#PICKLE_RECEIVER_PORT = 2104
-#CACHE_QUERY_PORT = 7102
-# and any other settings you want to customize, defaults are inherited
-# from [carbon] section.
-# You can then specify the --instance=b option to manage this instance
-
-
-
-[relay]
-LINE_RECEIVER_INTERFACE = 0.0.0.0
-LINE_RECEIVER_PORT = 2013
-PICKLE_RECEIVER_INTERFACE = 0.0.0.0
-PICKLE_RECEIVER_PORT = 2014
-
-# To use consistent hashing instead of the user defined relay-rules.conf,
-# change this to:
-# RELAY_METHOD = consistent-hashing
-RELAY_METHOD = rules
-
-# If you use consistent-hashing you may want to add redundancy
-# of your data by replicating every datapoint to more than
-# one machine.
-REPLICATION_FACTOR = 1
-
-# This is a list of carbon daemons we will send any relayed or
-# generated metrics to. The default provided would send to a single
-# carbon-cache instance on the default port. However if you
-# use multiple carbon-cache instances then it would look like this:
-#
-# DESTINATIONS = 127.0.0.1:2004:a, 127.0.0.1:2104:b
-#
-# The general form is IP:PORT:INSTANCE where the :INSTANCE part is
-# optional and refers to the "None" instance if omitted.
-#
-# Note that if the destinations are all carbon-caches then this should
-# exactly match the webapp's CARBONLINK_HOSTS setting in terms of
-# instances listed (order matters!).
-#
-# If using RELAY_METHOD = rules, all destinations used in relay-rules.conf
-# must be defined in this list
-DESTINATIONS = 127.0.0.1:2004
-
-# This defines the maximum "message size" between carbon daemons.
-# You shouldn't need to tune this unless you really know what you're doing.
-MAX_DATAPOINTS_PER_MESSAGE = 500
-MAX_QUEUE_SIZE = 10000
-
-# Set this to False to drop datapoints when any send queue (sending datapoints
-# to a downstream carbon daemon) hits MAX_QUEUE_SIZE. If this is True (the
-# default) then sockets over which metrics are received will temporarily stop accepting
-# data until the send queues fall below 80% MAX_QUEUE_SIZE.
-USE_FLOW_CONTROL = True
-
-# Set this to True to enable whitelisting and blacklisting of metrics in
-# CONF_DIR/whitelist and CONF_DIR/blacklist. If the whitelist is missing or
-# empty, all metrics will pass through
-# USE_WHITELIST = False
-
-# By default, carbon itself will log statistics (such as a count,
-# metricsReceived) with the top level prefix of 'carbon' at an interval of 60
-# seconds. Set CARBON_METRIC_INTERVAL to 0 to disable instrumentation
-# CARBON_METRIC_PREFIX = carbon
-# CARBON_METRIC_INTERVAL = 60
-
-
-[aggregator]
-LINE_RECEIVER_INTERFACE = 0.0.0.0
-LINE_RECEIVER_PORT = 2023
-
-PICKLE_RECEIVER_INTERFACE = 0.0.0.0
-PICKLE_RECEIVER_PORT = 2024
-
-# This is a list of carbon daemons we will send any relayed or
-# generated metrics to. The default provided would send to a single
-# carbon-cache instance on the default port. However if you
-# use multiple carbon-cache instances then it would look like this:
-#
-# DESTINATIONS = 127.0.0.1:2004:a, 127.0.0.1:2104:b
-#
-# The format is comma-delimited IP:PORT:INSTANCE where the :INSTANCE part is
-# optional and refers to the "None" instance if omitted.
-#
-# Note that if the destinations are all carbon-caches then this should
-# exactly match the webapp's CARBONLINK_HOSTS setting in terms of
-# instances listed (order matters!).
-DESTINATIONS = 127.0.0.1:2004
-
-# If you want to add redundancy to your data by replicating every
-# datapoint to more than one machine, increase this.
-REPLICATION_FACTOR = 1
-
-# This is the maximum number of datapoints that can be queued up
-# for a single destination. Once this limit is hit, we will
-# stop accepting new data if USE_FLOW_CONTROL is True, otherwise
-# we will drop any subsequently received datapoints.
-MAX_QUEUE_SIZE = 10000
-
-# Set this to False to drop datapoints when any send queue (sending datapoints
-# to a downstream carbon daemon) hits MAX_QUEUE_SIZE. If this is True (the
-# default) then sockets over which metrics are received will temporarily stop accepting
-# data until the send queues fall below 80% MAX_QUEUE_SIZE.
-USE_FLOW_CONTROL = True
-
-# This defines the maximum "message size" between carbon daemons.
-# You shouldn't need to tune this unless you really know what you're doing.
-MAX_DATAPOINTS_PER_MESSAGE = 500
-
-# This defines how many datapoints the aggregator remembers for
-# each metric. Aggregation only happens for datapoints that fall in
-# the past MAX_AGGREGATION_INTERVALS * intervalSize seconds.
-MAX_AGGREGATION_INTERVALS = 5
-
-# Set this to True to enable whitelisting and blacklisting of metrics in
-# CONF_DIR/whitelist and CONF_DIR/blacklist. If the whitelist is missing or
-# empty, all metrics will pass through
-# USE_WHITELIST = False
-
-# By default, carbon itself will log statistics (such as a count,
-# metricsReceived) with the top level prefix of 'carbon' at an interval of 60
-# seconds. Set CARBON_METRIC_INTERVAL to 0 to disable instrumentation
-# CARBON_METRIC_PREFIX = carbon
-# CARBON_METRIC_INTERVAL = 60
diff --git a/puppet/zulip_ops/files/graphite/daily_rsync_backup.sh b/puppet/zulip_ops/files/graphite/daily_rsync_backup.sh
deleted file mode 100755
index 11282b95b0..0000000000
--- a/puppet/zulip_ops/files/graphite/daily_rsync_backup.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/usr/bin/env bash
-
-rsync -avz /srv/graphite/ /mnt/graphite-backup
diff --git a/puppet/zulip_ops/files/graphite/graphite.wsgi b/puppet/zulip_ops/files/graphite/graphite.wsgi
deleted file mode 100644
index d89a670327..0000000000
--- a/puppet/zulip_ops/files/graphite/graphite.wsgi
+++ /dev/null
@@ -1,16 +0,0 @@
-import os, sys
-sys.path.append('/opt/graphite/webapp')
-os.environ['DJANGO_SETTINGS_MODULE'] = 'graphite.settings'
-
-import django.core.handlers.wsgi
-
-application = django.core.handlers.wsgi.WSGIHandler()
-
-# READ THIS
-# Initializing the search index can be very expensive, please include
-# the WSGIScriptImport directive pointing to this script in your vhost
-# config to ensure the index is preloaded before any requests are handed
-# to the process.
-from graphite.logger import log
-log.info("graphite.wsgi - pid %d - reloading search index" % os.getpid())
-import graphite.metrics.search
diff --git a/puppet/zulip_ops/files/graphite/local_settings.py b/puppet/zulip_ops/files/graphite/local_settings.py
deleted file mode 100644
index 02ba2f9958..0000000000
--- a/puppet/zulip_ops/files/graphite/local_settings.py
+++ /dev/null
@@ -1,13 +0,0 @@
-TIME_ZONE = "America/New_York"
-ALLOWED_HOSTS = ['graphite.humbughq.com', 'graphite.zulip.net', 'stats1.zulip.net']
-
-DATABASES = {
- 'default': {
- 'NAME': '/opt/graphite/storage/graphite.db',
- 'ENGINE': 'django.db.backends.sqlite3',
- 'USER': '',
- 'PASSWORD': '',
- 'HOST': '',
- 'PORT': ''
- }
-}
diff --git a/puppet/zulip_ops/files/graphite/setup_disks.sh b/puppet/zulip_ops/files/graphite/setup_disks.sh
deleted file mode 100644
index 715877d36f..0000000000
--- a/puppet/zulip_ops/files/graphite/setup_disks.sh
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-
-mkdir /srv/graphite
-mkfs.ext4 /dev/xvdb
-
-echo "/dev/xvdb /srv/graphite ext4 noatime,defaults,barrier=0 1 1" >> /etc/fstab
-mount /srv/graphite
-
-mkfs.ext4 /dev/xvdf1
-echo "/dev/xvdf1 /mnt/graphite-backup ext4 noatime,defaults,barrier=0 1 1" >> /etc/fstab
-mount /mnt/graphite-backup
diff --git a/puppet/zulip_ops/files/graphite/storage-aggregation.conf b/puppet/zulip_ops/files/graphite/storage-aggregation.conf
deleted file mode 100644
index aa226169c7..0000000000
--- a/puppet/zulip_ops/files/graphite/storage-aggregation.conf
+++ /dev/null
@@ -1,31 +0,0 @@
-# Example configuration from
-# https://gist.github.com/tristanbes/4046457#file-example-sh
-[min]
-pattern = \.min$
-xFilesFactor = 0.1
-aggregationMethod = min
-
-[max]
-pattern = \.max$
-xFilesFactor = 0.1
-aggregationMethod = max
-
-[sum]
-pattern = \.sum$
-xFilesFactor = 0
-aggregationMethod = sum
-
-[count]
-pattern = \.count$
-xFilesFactor = 0
-aggregationMethod = sum
-
-[count_legacy]
-pattern = ^stats_counts.*
-xFilesFactor = 0
-aggregationMethod = sum
-
-[default_average]
-pattern = .*
-xFilesFactor = 0.3
-aggregationMethod = average
diff --git a/puppet/zulip_ops/files/graphite/storage-schemas.conf b/puppet/zulip_ops/files/graphite/storage-schemas.conf
deleted file mode 100644
index 24d430465b..0000000000
--- a/puppet/zulip_ops/files/graphite/storage-schemas.conf
+++ /dev/null
@@ -1,26 +0,0 @@
-# Schema definitions for Whisper files. Entries are scanned in order,
-# and first match wins. This file is scanned for changes every 60 seconds.
-#
-# [name]
-# pattern = regex
-# retentions = timePerPoint:timeToStore, timePerPoint:timeToStore, ...
-
-# statsd specific
-[stats]
-pattern = ^stats.*
-#retentions = 10:2160,60:10080,600:262974
-# 5s data for 6hr
-# 10s data for 12hr
-# 1min data for 2 weeks
-# 10min data for 5 years
-retentions = 5s:6h,10s:12h,1min:14d,10min:5y
-
-# Carbon's internal metrics. This entry should match what is specified in
-# CARBON_METRIC_PREFIX and CARBON_METRIC_INTERVAL settings
-[carbon]
-pattern = ^carbon\.
-retentions = 60:90d
-
-[default_1min_for_1day]
-pattern = .*
-retentions = 60s:1d
diff --git a/puppet/zulip_ops/files/graphiti/settings.yml b/puppet/zulip_ops/files/graphiti/settings.yml
deleted file mode 100644
index 2f28947e8d..0000000000
--- a/puppet/zulip_ops/files/graphiti/settings.yml
+++ /dev/null
@@ -1,61 +0,0 @@
----
-graphiti_base_url: https://stats1.zulip.net/graphiti/
-graphite_base_url: https://graphiti:xxxxxxxxxxxxxxxxxx@stats1.zulip.net:444/
-graphite_userpw: "graphiti:xxxxxxxxxxxxxxxxxx"
-graphite_auth: :digest
-graphite_cert: "/home/zulip/graphiti/humbughq_cert_internal.pem"
-#graphite_base_url: https://user:pass@graphite01.pp.local
-redis_url: localhost:6978:1/graphiti
-tmp_dir: /tmp
-fonts:
- - DroidSans
- - DejaVuSans
-auto_refresh:
- enabled: true # checked by default?
- interval: 120 # seconds
-default_options:
- title: "New Graph"
- from: -7d
- font: DroidSans
- fontSize: 10
- thickness: 2
- bgcolor: "#FFFFFF"
- fgcolor: "#333333"
- majorGridLineColor: "#ADADAD"
- minorGridLineColor: "#E5E5E5"
-default_metrics:
- - "stats.foobar"
-metric_prefix: "stats"
-# Configure a service for snapshoting graphs. Current options are
-# s3 (amazon s3) and fs (filesystem)
-snapshots:
- # for s3 you need to provide `bucket`, `access_key_id`, and `secret_access_key`
- #
- # service: s3
- # bucket: mysnapshots
- # access_key_id: BLAH
- # secret_access_key: BLAHBLAH
-
- # for local filesystem you need to provide a dir to save the images
- # and the public route to that dir
- #
- # service: fs
- # dir: public/storage
- # public_host: http://graphiti.local/storage
-
-# These are options that are passed to Pony
-# https://github.com/benprew/pony
-# in `to:` SLUG gets replaced with the slug of the dashboard being sent
-reports:
- from: "Stampy "
- to: "graphiti+SLUG@paperlesspost.com"
- via: smtp
- via_options:
- address: 'smtp.gmail.com'
- port: 587
- authentication: plain
- enable_starttls_auto: true,
- user_name: "stampy@paperlesspost.com"
- password: "PASSWORD"
-snapshots:
- service: none
diff --git a/puppet/zulip_ops/files/statsd/local.js b/puppet/zulip_ops/files/statsd/local.js
deleted file mode 100644
index 5e905a617a..0000000000
--- a/puppet/zulip_ops/files/statsd/local.js
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
-
-Required Variables:
-
- port: StatsD listening port [default: 8125]
-
-Graphite Required Variables:
-
-(Leave these unset to avoid sending stats to Graphite.
- Set debug flag and leave these unset to run in 'dry' debug mode -
- useful for testing statsd clients without a Graphite server.)
-
- graphiteHost: hostname or IP of Graphite server
- graphitePort: port of Graphite server
-
-Optional Variables:
-
- backends: an array of backends to load. Each backend must exist
- by name in the directory backends/. If not specified,
- the default graphite backend will be loaded.
- debug: debug flag [default: false]
- address: address to listen on over UDP [default: 0.0.0.0]
- address_ipv6: defines if the address is an IPv4 or IPv6 address [true or false, default: false]
- port: port to listen for messages on over UDP [default: 8125]
- mgmt_address: address to run the management TCP interface on
- [default: 0.0.0.0]
- mgmt_port: port to run the management TCP interface on [default: 8126]
- dumpMessages: log all incoming messages
- flushInterval: interval (in ms) to flush to Graphite
- percentThreshold: for time information, calculate the Nth percentile(s)
- (can be a single value or list of floating-point values)
- negative values mean to use "top" Nth percentile(s) values
- [%, default: 90]
- keyFlush: log the most frequently sent keys [object, default: undefined]
- interval: how often to log frequent keys [ms, default: 0]
- percent: percentage of frequent keys to log [%, default: 100]
- log: location of log file for frequent keys [default: STDOUT]
- deleteIdleStats: don't send values to graphite for inactive counters, sets, gauges, or timeers
- as opposed to sending 0. For gauges, this unsets the gauge (instead of sending
- the previous value). Can be indivdually overriden. [default: false]
- deleteGauges : don't send values to graphite for inactive gauges, as opposed to sending the previous value [default: false]
- deleteTimers: don't send values to graphite for inactive timers, as opposed to sending 0 [default: false]
- deleteSets: don't send values to graphite for inactive sets, as opposed to sending 0 [default: false]
- deleteCounters: don't send values to graphite for inactive counters, as opposed to sending 0 [default: false]
- prefixStats: prefix to use for the statsd statistics data for this running instance of statsd [default: statsd]
- applies to both legacy and new namespacing
-
- console:
- prettyprint: whether to prettyprint the console backend
- output [true or false, default: true]
-
- log: log settings [object, default: undefined]
- backend: where to log: stdout or syslog [string, default: stdout]
- application: name of the application for syslog [string, default: statsd]
- level: log level for [node-]syslog [string, default: LOG_INFO]
-
- graphite:
- legacyNamespace: use the legacy namespace [default: true]
- globalPrefix: global prefix to use for sending stats to graphite [default: "stats"]
- prefixCounter: graphite prefix for counter metrics [default: "counters"]
- prefixTimer: graphite prefix for timer metrics [default: "timers"]
- prefixGauge: graphite prefix for gauge metrics [default: "gauges"]
- prefixSet: graphite prefix for set metrics [default: "sets"]
-
- repeater: an array of hashes of the for host: and port:
- that details other statsd servers to which the received
- packets should be "repeated" (duplicated to).
- e.g. [ { host: '10.10.10.10', port: 8125 },
- { host: 'observer', port: 88125 } ]
-
- repeaterProtocol: whether to use udp4 or udp6 for repeaters.
- ["udp4" or "udp6", default: "udp4"]
-
- histogram: for timers, an array of mappings of strings (to match metrics) and
- corresponding ordered non-inclusive upper limits of bins.
- For all matching metrics, histograms are maintained over
- time by writing the frequencies for all bins.
- 'inf' means infinity. A lower limit of 0 is assumed.
- default: [], meaning no histograms for any timer.
- First match wins. examples:
- * histogram to only track render durations, with unequal
- class intervals and catchall for outliers:
- [ { metric: 'render', bins: [ 0.01, 0.1, 1, 10, 'inf'] } ]
- * histogram for all timers except 'foo' related,
- equal class interval and catchall for outliers:
- [ { metric: 'foo', bins: [] },
- { metric: '', bins: [ 50, 100, 150, 200, 'inf'] } ]
-
-*/
-{
- "graphitePort": 2023
-, "graphiteHost": "localhost"
-, "port": 8125
-, "backends": [ "./backends/graphite" ]
-, "flushInterval": 5000
-}
diff --git a/puppet/zulip_ops/files/statsd/redis.conf b/puppet/zulip_ops/files/statsd/redis.conf
deleted file mode 100644
index b58ba57800..0000000000
--- a/puppet/zulip_ops/files/statsd/redis.conf
+++ /dev/null
@@ -1,492 +0,0 @@
-# Redis configuration file example
-
-# Note on units: when memory size is needed, it is possible to specifiy
-# it in the usual form of 1k 5GB 4M and so forth:
-#
-# 1k => 1000 bytes
-# 1kb => 1024 bytes
-# 1m => 1000000 bytes
-# 1mb => 1024*1024 bytes
-# 1g => 1000000000 bytes
-# 1gb => 1024*1024*1024 bytes
-#
-# units are case insensitive so 1GB 1Gb 1gB are all the same.
-
-# By default Redis does not run as a daemon. Use 'yes' if you need it.
-# Note that Redis will write a pid file in /var/run/redis.pid when daemonized.
-daemonize yes
-
-# When running daemonized, Redis writes a pid file in /var/run/redis.pid by
-# default. You can specify a custom pid file location here.
-pidfile /var/run/redis/redis-server.pid
-
-# Accept connections on the specified port, default is 6379.
-# If port 0 is specified Redis will not listen on a TCP socket.
-port 6978
-
-# If you want you can bind a single interface, if the bind option is not
-# specified all the interfaces will listen for incoming connections.
-#
-bind 127.0.0.1
-
-# Specify the path for the unix socket that will be used to listen for
-# incoming connections. There is no default, so Redis will not listen
-# on a unix socket when not specified.
-#
-# unixsocket /var/run/redis/redis.sock
-# unixsocketperm 755
-
-# Close the connection after a client is idle for N seconds (0 to disable)
-timeout 0
-
-# Set server verbosity to 'debug'
-# it can be one of:
-# debug (a lot of information, useful for development/testing)
-# verbose (many rarely useful info, but not a mess like the debug level)
-# notice (moderately verbose, what you want in production probably)
-# warning (only very important / critical messages are logged)
-loglevel notice
-
-# Specify the log file name. Also 'stdout' can be used to force
-# Redis to log on the standard output. Note that if you use standard
-# output for logging but daemonize, logs will be sent to /dev/null
-logfile /var/log/redis/redis-server.log
-
-# To enable logging to the system logger, just set 'syslog-enabled' to yes,
-# and optionally update the other syslog parameters to suit your needs.
-# syslog-enabled no
-
-# Specify the syslog identity.
-# syslog-ident redis
-
-# Specify the syslog facility. Must be USER or between LOCAL0-LOCAL7.
-# syslog-facility local0
-
-# Set the number of databases. The default database is DB 0, you can select
-# a different one on a per-connection basis using SELECT where
-# dbid is a number between 0 and 'databases'-1
-databases 16
-
-################################ SNAPSHOTTING #################################
-#
-# Save the DB on disk:
-#
-# save
-#
-# Will save the DB if both the given number of seconds and the given
-# number of write operations against the DB occurred.
-#
-# In the example below the behaviour will be to save:
-# after 900 sec (15 min) if at least 1 key changed
-# after 300 sec (5 min) if at least 10 keys changed
-# after 60 sec if at least 10000 keys changed
-#
-# Note: you can disable saving at all commenting all the "save" lines.
-
-save 900 1
-save 300 10
-save 60 10000
-
-# Compress string objects using LZF when dump .rdb databases?
-# For default that's set to 'yes' as it's almost always a win.
-# If you want to save some CPU in the saving child set it to 'no' but
-# the dataset will likely be bigger if you have compressible values or keys.
-rdbcompression yes
-
-# The filename where to dump the DB
-dbfilename dump.rdb
-
-# The working directory.
-#
-# The DB will be written inside this directory, with the filename specified
-# above using the 'dbfilename' configuration directive.
-#
-# Also the Append Only File will be created inside this directory.
-#
-# Note that you must specify a directory here, not a file name.
-dir /var/lib/redis
-
-################################# REPLICATION #################################
-
-# Master-Slave replication. Use slaveof to make a Redis instance a copy of
-# another Redis server. Note that the configuration is local to the slave
-# so for example it is possible to configure the slave to save the DB with a
-# different interval, or to listen to another port, and so on.
-#
-# slaveof
-
-# If the master is password protected (using the "requirepass" configuration
-# directive below) it is possible to tell the slave to authenticate before
-# starting the replication synchronization process, otherwise the master will
-# refuse the slave request.
-#
-# masterauth
-
-# When a slave lost the connection with the master, or when the replication
-# is still in progress, the slave can act in two different ways:
-#
-# 1) if slave-serve-stale-data is set to 'yes' (the default) the slave will
-# still reply to client requests, possibly with out of data data, or the
-# data set may just be empty if this is the first synchronization.
-#
-# 2) if slave-serve-stale data is set to 'no' the slave will reply with
-# an error "SYNC with master in progress" to all the kind of commands
-# but to INFO and SLAVEOF.
-#
-slave-serve-stale-data yes
-
-# Slaves send PINGs to server in a predefined interval. It's possible to change
-# this interval with the repl_ping_slave_period option. The default value is 10
-# seconds.
-#
-# repl-ping-slave-period 10
-
-# The following option sets a timeout for both Bulk transfer I/O timeout and
-# master data or ping response timeout. The default value is 60 seconds.
-#
-# It is important to make sure that this value is greater than the value
-# specified for repl-ping-slave-period otherwise a timeout will be detected
-# every time there is low traffic between the master and the slave.
-#
-# repl-timeout 60
-
-################################## SECURITY ###################################
-
-# Require clients to issue AUTH before processing any other
-# commands. This might be useful in environments in which you do not trust
-# others with access to the host running redis-server.
-#
-# This should stay commented out for backward compatibility and because most
-# people do not need auth (e.g. they run their own servers).
-#
-# Warning: since Redis is pretty fast an outside user can try up to
-# 150k passwords per second against a good box. This means that you should
-# use a very strong password otherwise it will be very easy to break.
-#
-# requirepass foobared
-
-# Command renaming.
-#
-# It is possilbe to change the name of dangerous commands in a shared
-# environment. For instance the CONFIG command may be renamed into something
-# of hard to guess so that it will be still available for internal-use
-# tools but not available for general clients.
-#
-# Example:
-#
-# rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52
-#
-# It is also possilbe to completely kill a command renaming it into
-# an empty string:
-#
-# rename-command CONFIG ""
-
-################################### LIMITS ####################################
-
-# Set the max number of connected clients at the same time. By default there
-# is no limit, and it's up to the number of file descriptors the Redis process
-# is able to open. The special value '0' means no limits.
-# Once the limit is reached Redis will close all the new connections sending
-# an error 'max number of clients reached'.
-#
-# maxclients 128
-
-# Don't use more memory than the specified amount of bytes.
-# When the memory limit is reached Redis will try to remove keys
-# accordingly to the eviction policy selected (see maxmemmory-policy).
-#
-# If Redis can't remove keys according to the policy, or if the policy is
-# set to 'noeviction', Redis will start to reply with errors to commands
-# that would use more memory, like SET, LPUSH, and so on, and will continue
-# to reply to read-only commands like GET.
-#
-# This option is usually useful when using Redis as an LRU cache, or to set
-# an hard memory limit for an instance (using the 'noeviction' policy).
-#
-# WARNING: If you have slaves attached to an instance with maxmemory on,
-# the size of the output buffers needed to feed the slaves are subtracted
-# from the used memory count, so that network problems / resyncs will
-# not trigger a loop where keys are evicted, and in turn the output
-# buffer of slaves is full with DELs of keys evicted triggering the deletion
-# of more keys, and so forth until the database is completely emptied.
-#
-# In short... if you have slaves attached it is suggested that you set a lower
-# limit for maxmemory so that there is some free RAM on the system for slave
-# output buffers (but this is not needed if the policy is 'noeviction').
-#
-# maxmemory
-
-# MAXMEMORY POLICY: how Redis will select what to remove when maxmemory
-# is reached? You can select among five behavior:
-#
-# volatile-lru -> remove the key with an expire set using an LRU algorithm
-# allkeys-lru -> remove any key accordingly to the LRU algorithm
-# volatile-random -> remove a random key with an expire set
-# allkeys->random -> remove a random key, any key
-# volatile-ttl -> remove the key with the nearest expire time (minor TTL)
-# noeviction -> don't expire at all, just return an error on write operations
-#
-# Note: with all the kind of policies, Redis will return an error on write
-# operations, when there are not suitable keys for eviction.
-#
-# At the date of writing this commands are: set setnx setex append
-# incr decr rpush lpush rpushx lpushx linsert lset rpoplpush sadd
-# sinter sinterstore sunion sunionstore sdiff sdiffstore zadd zincrby
-# zunionstore zinterstore hset hsetnx hmset hincrby incrby decrby
-# getset mset msetnx exec sort
-#
-# The default is:
-#
-# maxmemory-policy volatile-lru
-
-# LRU and minimal TTL algorithms are not precise algorithms but approximated
-# algorithms (in order to save memory), so you can select as well the sample
-# size to check. For instance for default Redis will check three keys and
-# pick the one that was used less recently, you can change the sample size
-# using the following configuration directive.
-#
-# maxmemory-samples 3
-
-############################## APPEND ONLY MODE ###############################
-
-# By default Redis asynchronously dumps the dataset on disk. If you can live
-# with the idea that the latest records will be lost if something like a crash
-# happens this is the preferred way to run Redis. If instead you care a lot
-# about your data and don't want to that a single record can get lost you should
-# enable the append only mode: when this mode is enabled Redis will append
-# every write operation received in the file appendonly.aof. This file will
-# be read on startup in order to rebuild the full dataset in memory.
-#
-# Note that you can have both the async dumps and the append only file if you
-# like (you have to comment the "save" statements above to disable the dumps).
-# Still if append only mode is enabled Redis will load the data from the
-# log file at startup ignoring the dump.rdb file.
-#
-# IMPORTANT: Check the BGREWRITEAOF to check how to rewrite the append
-# log file in background when it gets too big.
-
-appendonly no
-
-# The name of the append only file (default: "appendonly.aof")
-# appendfilename appendonly.aof
-
-# The fsync() call tells the Operating System to actually write data on disk
-# instead to wait for more data in the output buffer. Some OS will really flush
-# data on disk, some other OS will just try to do it ASAP.
-#
-# Redis supports three different modes:
-#
-# no: don't fsync, just let the OS flush the data when it wants. Faster.
-# always: fsync after every write to the append only log . Slow, Safest.
-# everysec: fsync only if one second passed since the last fsync. Compromise.
-#
-# The default is "everysec" that's usually the right compromise between
-# speed and data safety. It's up to you to understand if you can relax this to
-# "no" that will will let the operating system flush the output buffer when
-# it wants, for better performances (but if you can live with the idea of
-# some data loss consider the default persistence mode that's snapshotting),
-# or on the contrary, use "always" that's very slow but a bit safer than
-# everysec.
-#
-# If unsure, use "everysec".
-
-# appendfsync always
-appendfsync everysec
-# appendfsync no
-
-# When the AOF fsync policy is set to always or everysec, and a background
-# saving process (a background save or AOF log background rewriting) is
-# performing a lot of I/O against the disk, in some Linux configurations
-# Redis may block too long on the fsync() call. Note that there is no fix for
-# this currently, as even performing fsync in a different thread will block
-# our synchronous write(2) call.
-#
-# In order to mitigate this problem it's possible to use the following option
-# that will prevent fsync() from being called in the main process while a
-# BGSAVE or BGREWRITEAOF is in progress.
-#
-# This means that while another child is saving the durability of Redis is
-# the same as "appendfsync none", that in pratical terms means that it is
-# possible to lost up to 30 seconds of log in the worst scenario (with the
-# default Linux settings).
-#
-# If you have latency problems turn this to "yes". Otherwise leave it as
-# "no" that is the safest pick from the point of view of durability.
-no-appendfsync-on-rewrite no
-
-# Automatic rewrite of the append only file.
-# Redis is able to automatically rewrite the log file implicitly calling
-# BGREWRITEAOF when the AOF log size will growth by the specified percentage.
-#
-# This is how it works: Redis remembers the size of the AOF file after the
-# latest rewrite (or if no rewrite happened since the restart, the size of
-# the AOF at startup is used).
-#
-# This base size is compared to the current size. If the current size is
-# bigger than the specified percentage, the rewrite is triggered. Also
-# you need to specify a minimal size for the AOF file to be rewritten, this
-# is useful to avoid rewriting the AOF file even if the percentage increase
-# is reached but it is still pretty small.
-#
-# Specify a precentage of zero in order to disable the automatic AOF
-# rewrite feature.
-
-auto-aof-rewrite-percentage 100
-auto-aof-rewrite-min-size 64mb
-
-################################## SLOW LOG ###################################
-
-# The Redis Slow Log is a system to log queries that exceeded a specified
-# execution time. The execution time does not include the I/O operations
-# like talking with the client, sending the reply and so forth,
-# but just the time needed to actually execute the command (this is the only
-# stage of command execution where the thread is blocked and can not serve
-# other requests in the meantime).
-#
-# You can configure the slow log with two parameters: one tells Redis
-# what is the execution time, in microseconds, to exceed in order for the
-# command to get logged, and the other parameter is the length of the
-# slow log. When a new command is logged the oldest one is removed from the
-# queue of logged commands.
-
-# The following time is expressed in microseconds, so 1000000 is equivalent
-# to one second. Note that a negative number disables the slow log, while
-# a value of zero forces the logging of every command.
-slowlog-log-slower-than 10000
-
-# There is no limit to this length. Just be aware that it will consume memory.
-# You can reclaim memory used by the slow log with SLOWLOG RESET.
-slowlog-max-len 128
-
-################################ VIRTUAL MEMORY ###############################
-
-### WARNING! Virtual Memory is deprecated in Redis 2.4
-### The use of Virtual Memory is strongly discouraged.
-
-# Virtual Memory allows Redis to work with datasets bigger than the actual
-# amount of RAM needed to hold the whole dataset in memory.
-# In order to do so very used keys are taken in memory while the other keys
-# are swapped into a swap file, similarly to what operating systems do
-# with memory pages.
-#
-# To enable VM just set 'vm-enabled' to yes, and set the following three
-# VM parameters accordingly to your needs.
-
-vm-enabled no
-# vm-enabled yes
-
-# This is the path of the Redis swap file. As you can guess, swap files
-# can't be shared by different Redis instances, so make sure to use a swap
-# file for every redis process you are running. Redis will complain if the
-# swap file is already in use.
-#
-# The best kind of storage for the Redis swap file (that's accessed at random)
-# is a Solid State Disk (SSD).
-#
-# *** WARNING *** if you are using a shared hosting the default of putting
-# the swap file under /tmp is not secure. Create a dir with access granted
-# only to Redis user and configure Redis to create the swap file there.
-vm-swap-file /var/lib/redis/redis.swap
-
-# vm-max-memory configures the VM to use at max the specified amount of
-# RAM. Everything that deos not fit will be swapped on disk *if* possible, that
-# is, if there is still enough contiguous space in the swap file.
-#
-# With vm-max-memory 0 the system will swap everything it can. Not a good
-# default, just specify the max amount of RAM you can in bytes, but it's
-# better to leave some margin. For instance specify an amount of RAM
-# that's more or less between 60 and 80% of your free RAM.
-vm-max-memory 0
-
-# Redis swap files is split into pages. An object can be saved using multiple
-# contiguous pages, but pages can't be shared between different objects.
-# So if your page is too big, small objects swapped out on disk will waste
-# a lot of space. If you page is too small, there is less space in the swap
-# file (assuming you configured the same number of total swap file pages).
-#
-# If you use a lot of small objects, use a page size of 64 or 32 bytes.
-# If you use a lot of big objects, use a bigger page size.
-# If unsure, use the default :)
-vm-page-size 32
-
-# Number of total memory pages in the swap file.
-# Given that the page table (a bitmap of free/used pages) is taken in memory,
-# every 8 pages on disk will consume 1 byte of RAM.
-#
-# The total swap size is vm-page-size * vm-pages
-#
-# With the default of 32-bytes memory pages and 134217728 pages Redis will
-# use a 4 GB swap file, that will use 16 MB of RAM for the page table.
-#
-# It's better to use the smallest acceptable value for your application,
-# but the default is large in order to work in most conditions.
-vm-pages 134217728
-
-# Max number of VM I/O threads running at the same time.
-# This threads are used to read/write data from/to swap file, since they
-# also encode and decode objects from disk to memory or the reverse, a bigger
-# number of threads can help with big objects even if they can't help with
-# I/O itself as the physical device may not be able to couple with many
-# reads/writes operations at the same time.
-#
-# The special value of 0 turn off threaded I/O and enables the blocking
-# Virtual Memory implementation.
-vm-max-threads 4
-
-############################### ADVANCED CONFIG ###############################
-
-# Hashes are encoded in a special way (much more memory efficient) when they
-# have at max a given numer of elements, and the biggest element does not
-# exceed a given threshold. You can configure this limits with the following
-# configuration directives.
-hash-max-zipmap-entries 512
-hash-max-zipmap-value 64
-
-# Similarly to hashes, small lists are also encoded in a special way in order
-# to save a lot of space. The special representation is only used when
-# you are under the following limits:
-list-max-ziplist-entries 512
-list-max-ziplist-value 64
-
-# Sets have a special encoding in just one case: when a set is composed
-# of just strings that happens to be integers in radix 10 in the range
-# of 64 bit signed integers.
-# The following configuration setting sets the limit in the size of the
-# set in order to use this special memory saving encoding.
-set-max-intset-entries 512
-
-# Similarly to hashes and lists, sorted sets are also specially encoded in
-# order to save a lot of space. This encoding is only used when the length and
-# elements of a sorted set are below the following limits:
-zset-max-ziplist-entries 128
-zset-max-ziplist-value 64
-
-# Active rehashing uses 1 millisecond every 100 milliseconds of CPU time in
-# order to help rehashing the main Redis hash table (the one mapping top-level
-# keys to values). The hash table implementation redis uses (see dict.c)
-# performs a lazy rehashing: the more operation you run into an hash table
-# that is rhashing, the more rehashing "steps" are performed, so if the
-# server is idle the rehashing is never complete and some more memory is used
-# by the hash table.
-#
-# The default is to use this millisecond 10 times every second in order to
-# active rehashing the main dictionaries, freeing memory when possible.
-#
-# If unsure:
-# use "activerehashing no" if you have hard latency requirements and it is
-# not a good thing in your environment that Redis can reply form time to time
-# to queries with 2 milliseconds delay.
-#
-# use "activerehashing yes" if you don't have such hard requirements but
-# want to free memory asap when possible.
-activerehashing yes
-
-################################## INCLUDES ###################################
-
-# Include one or more other config files here. This is useful if you
-# have a standard template that goes to all redis server but also need
-# to customize a few per-server settings. Include files can include
-# other files, so use this wisely.
-#
-# include /path/to/local.conf
-# include /path/to/other.conf
diff --git a/puppet/zulip_ops/files/supervisor/conf.d/stats.conf b/puppet/zulip_ops/files/supervisor/conf.d/stats.conf
deleted file mode 100644
index dd06e70bd4..0000000000
--- a/puppet/zulip_ops/files/supervisor/conf.d/stats.conf
+++ /dev/null
@@ -1,54 +0,0 @@
-; Supervisor config file for stats.zulip.net
-; It runs graphite, graphiti, statsd
-
-
-[program:zulip-carbon-cache]
-command=/opt/graphite/bin/carbon-cache.py --debug start
-priority=200 ; the relative start priority (default 999)
-autostart=true ; start at supervisord start (default: true)
-autorestart=true ; whether/when to restart (default: unexpected)
-stopsignal=TERM ; signal used to kill process (default TERM)
-stopwaitsecs=30 ; max num secs to wait b4 SIGKILL (default 10)
-user=root ; setuid to this UNIX account to run the program
-redirect_stderr=true ; redirect proc stderr to stdout (default false)
-stdout_logfile=/var/log/zulip/carbon-cache.log ; stdout log path, NONE for none; default AUTO
-directory=/home/zulip/
-
-[program:zulip-carbon-aggregator]
-command=/opt/graphite/bin/carbon-aggregator.py --debug start
-priority=200 ; the relative start priority (default 999)
-autostart=true ; start at supervisord start (default: true)
-autorestart=true ; whether/when to restart (default: unexpected)
-stopsignal=TERM ; signal used to kill process (default TERM)
-stopwaitsecs=30 ; max num secs to wait b4 SIGKILL (default 10)
-user=root ; setuid to this UNIX account to run the program
-redirect_stderr=true ; redirect proc stderr to stdout (default false)
-stdout_logfile=/var/log/zulip/carbon-aggregator.log ; stdout log path, NONE for none; default AUTO
-directory=/home/zulip/
-
-[program:zulip-statsd]
-command=node stats.js /home/zulip/zulip/puppet/zulip/files/statsd/local.js
-priority=200 ; the relative start priority (default 999)
-autostart=true ; start at supervisord start (default: true)
-autorestart=true ; whether/when to restart (default: unexpected)
-stopsignal=TERM ; signal used to kill process (default TERM)
-stopwaitsecs=30 ; max num secs to wait b4 SIGKILL (default 10)
-user=zulip ; setuid to this UNIX account to run the program
-redirect_stderr=true ; redirect proc stderr to stdout (default false)
-stdout_logfile=/var/log/zulip/statsd.log ; stdout log path, NONE for none; default AUTO
-directory=/home/zulip/statsd
-
-
-[program:zulip-graphiti]
-command=/home/zulip/zulip/tools/run-graphiti
-autostart=true ; start at supervisord start (default: true)
-autorestart=true ; whether/when to restart (default: unexpected)
-stopsignal=TERM ; signal used to kill process (default TERM)
-stopwaitsecs=30 ; max num secs to wait b4 SIGKILL (default 10)
-user=zulip ; setuid to this UNIX account to run the program
-redirect_stderr=true ; redirect proc stderr to stdout (default false)
-stdout_logfile=/var/log/zulip/graphiti.log ; stdout log path, NONE for none; default AUTO
-directory=/home/zulip/graphiti
-
-[group:zulip-stats]
-programs=zulip-carbon-cache,zulip-carbon-aggregator,zulip-statsd,zulip-graphiti
diff --git a/puppet/zulip_ops/manifests/stats.pp b/puppet/zulip_ops/manifests/stats.pp
deleted file mode 100644
index afcc0500d9..0000000000
--- a/puppet/zulip_ops/manifests/stats.pp
+++ /dev/null
@@ -1,129 +0,0 @@
-class zulip_ops::stats {
- include zulip_ops::base
- include zulip_ops::apache
- include zulip::supervisor
-
- $stats_packages = [ "libssl-dev", "zlib1g-dev", "redis-server",
- # "python3-twisted", "python3-django", # missing on trusty
- # "python3-django-tagging", # missing on trusty and xenial!
- "python-twisted", "python-django", "python-django-tagging",
- "python-carbon", "python-graphite-web", # can't find these anywhere! did this ever work?
- "python3-cairo",
- # "python3-whisper", # missing on trusty and xenial!
- "python-cairo", "python-whisper"
- ]
- package { $stats_packages: ensure => "installed" }
-
- file { "/root/setup_disks.sh":
- ensure => file,
- owner => 'root',
- group => 'root',
- mode => 744,
- source => 'puppet:///modules/zulip_ops/graphite/setup_disks.sh',
- }
- file { "/etc/cron.d/graphite_backup":
- ensure => file,
- owner => "root",
- group => "root",
- mode => 644,
- source => "puppet:///modules/zulip_ops/cron.d/graphite_backup",
- }
- exec { "setup_disks":
- command => "/root/setup_disks.sh",
- creates => "/srv/graphite"
- }
-
- file { "/etc/ssl/certs/stats1.zulip.net.crt":
- require => File["/etc/apache2/certs/"],
- ensure => file,
- owner => "root",
- group => "root",
- mode => 640,
- source => "puppet:///modules/zulip_ops/certs/stats1.zulip.net.crt",
- }
-
- file { "/opt/graphite/conf/carbon.conf":
- ensure => file,
- owner => "root",
- group => "root",
- mode => 644,
- source => "puppet:///modules/zulip_ops/graphite/carbon.conf",
- }
- file { "/opt/graphite/conf/aggregation-rules.conf":
- ensure => file,
- owner => "root",
- group => "root",
- mode => 644,
- source => "puppet:///modules/zulip_ops/graphite/aggregation-rules.conf",
- }
- file { "/opt/graphite/conf/storage-aggregation.conf":
- ensure => file,
- owner => "root",
- group => "root",
- mode => 644,
- source => "puppet:///modules/zulip_ops/graphite/storage-aggregation.conf",
- }
- file { "/opt/graphite/conf/storage-schemas.conf":
- ensure => file,
- owner => "root",
- group => "root",
- mode => 644,
- source => "puppet:///modules/zulip_ops/graphite/storage-schemas.conf",
- }
- file { "/opt/graphite/webapp/graphite/local_settings.py":
- ensure => file,
- owner => "root",
- group => "root",
- mode => 644,
- source => "puppet:///modules/zulip_ops/graphite/local_settings.py",
- }
- file { "/opt/graphite/conf/graphite.wsgi":
- ensure => file,
- owner => "root",
- group => "root",
- mode => 644,
- source => "puppet:///modules/zulip_ops/graphite/graphite.wsgi",
- }
-
- file { "/home/zulip/graphiti/config/settings.yml":
- ensure => file,
- owner => "zulip",
- group => "zulip",
- mode => 644,
- source => "puppet:///modules/zulip_ops/graphiti/settings.yml",
- }
-
- apache2site { 'graphite':
- require => [File['/etc/apache2/sites-available/'],
- Apache2mod['headers'], Apache2mod['ssl'],
- ],
- ensure => present,
- }
- apache2site { 'graphiti':
- require => [File['/etc/apache2/sites-available/'],
- Apache2mod['headers'], Apache2mod['ssl'],
- ],
- ensure => present,
- }
-
- file { "/etc/redis/redis.conf":
- require => Package[redis-server],
- ensure => file,
- owner => "root",
- group => "root",
- mode => 644,
- source => "puppet:///modules/zulip_ops/statsd/redis.conf",
- }
- service { 'redis-server':
- ensure => running,
- subscribe => File['/etc/redis/redis.conf'],
- }
-
- file { "/etc/supervisor/conf.d/stats.conf":
- ensure => file,
- owner => "root",
- group => "root",
- mode => 644,
- source => "puppet:///modules/zulip_ops/supervisor/conf.d/stats.conf",
- }
-}
diff --git a/tools/run-graphiti b/tools/run-graphiti
deleted file mode 100644
index 860c8830e6..0000000000
--- a/tools/run-graphiti
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/bash
-
-export HOME=/home/zulip
-export PATH="/home/zulip/.rbenv/bin:$PATH"
-
-eval "$(rbenv init -)"
-
-cd /home/zulip/graphiti
-exec bundle exec unicorn -p 8088