Scalingo for InfluxDB®
Scalingo for InfluxDB® is the official InfluxDB® addon provided by Scalingo, details on the available plans can be found here. This addon gives your app instant access to an InfluxDB® database.
Adding Scalingo for InfluxDB® to your app
You can add the Scalingo for InfluxDB® addon through the Dashboard or through the command line interface. The capacity of your database is elastic, you will be able to upgrade it later.
Through the Dashboard
- Go to your app on Scalingo Dashboard
- Click on Addons tab
- Select the addon you want to add
- In the dialog select the database plan you need
- Validate your choice
Through the command-line interface
$ scalingo --app my-app addons-add influxdb 1g
-----> Addon influxdb has been provisionned
ID: my_app_3707
Modified variables: [INFLUX_URL SCALINGO_INFLUX_URL]
Message from addon provider: Database successfully created
This command will provision the application my-app
with a 1g
Scalingo for InfluxDB® database plan.
To find out what other plans are available:
$ scalingo addons-plans influxdb
Getting your connection URI
Once the addon is provisioned, 2 environment variables are added to your app: SCALINGO_INFLUX_URL
and INFLUX_URL
. INFLUX_URL
is an alias to SCALINGO_INFLUX_URL
. To find out how to use it in your code please refer to Application environment.
In most cases, you can pass the variable directly to the client library you are using in your code. But sometimes the library requires a specific URI format, you’ll need to add a little bit of code to suit the library.
You can get environment variables from the dashboard or the command-line interface.
From the Dashboard
- Go to your app on Scalingo Dashboard
- Click on Environment tab
-
SCALINGO_INFLUX_URL
is displayed
From the command-line interface
$ scalingo --app my-app env
INFLUX_URL=$SCALINGO_INFLUX_URL
SCALINGO_INFLUX_URL=http://sample_influxdb_3707:YANs3y07m5_KJC2MSDGebh8tx1lliFWh2Yb239zVqGQvbElWDjIN7QWspVH92Ul8@my-app-3707.influxdb.a.osc-fr1.scalingo-dbs.com:31061/sample_influxdb_3707
Remote access your database
If you need to access your database from other places than your app please follow the Access your database guide.
Force TLS Connections
InfluxDB® support TLS to encrypt all of its network traffic between the client and the server.
InfluxDB® cannot listen to connections with and without TLS. If you want to encrypt communications with your Scalingo for InfluxDB® databases, you need to force all connections to use TLS. Forcing TLS connections is as simple as heading to the database dashboard and clicking on the toggle button:
Note that you must have configured your application to use TLS when connecting to the database.
When in force TLS mode, you must specify the influx
client to connect to your
database using HTTPS with the -ssl
option:
> influx -ssl -unsafeSsl -username <user> -password <password> -host <host> -port <port> -database dbname
The --unsafeSsl
option is mandatory as the generated certificates for your
databases are
self-signed.
Some existing databases may not have yet TLS support. To activate TLS, you need to restart the database. Any action leading to the restart will activate TLS (e.g. plan update, upgrade of the database).
Changing plans
You can upgrade or downgrade your database plan whenever you need it. This operation happens instantly thanks to Docker containers and no manual input is required. When you change the plan, your database will be stopped then restarted on a new host with new parameters of the chosen plan. During the operation the connection is dropped between your app and the database. Finally, after the operation is successful, the related app will be restarted.
From the Dashboard
- Go to your app on Scalingo Dashboard
- Click on Addons tab
- Select the addon you want to change
- In the dialog select the plan you want to upgrade/downgrade to
- Validate your choice
From the command-line interface
To upgrade or downgrade your addon the sub-command is the same: addons-upgrade
.
$ scalingo --app my-app addons-upgrade sample_influxdb_3707 2g
In this example, sample_influxdb_3707
is the ID of the addon, and 2g
is the plan we want to upgrade to.
To find out the addon ID:
$ scalingo --app my-app addons
+-------------------+----------------------+------+
| ADDON | ID | PLAN |
+-------------------+----------------------+------+
| InfluxDB | my_app_3707 | 1g |
+-------------------+----------------------+------+
Database dashboard
The Scalingo InfluxDB® dashboard is the central place for administrative tasks such as:
- Monitor database and system stats
- Upgrade the database engine version
- Activate database specific features
- Manage database users
- Manage backups
Database Upgrade
When the database vendor releases a new version of your database engine, we will try to provide it as soon as possible. You will have the choice to upgrade your database with one click through your database dashboard.
This operation is similar to changing your database plan; your database will be stopped and restarted with the new database version. When this operation finishes, your application will be restarted.
Container Stats
CPU usage | Current CPU usage. |
Memory usage | Display the current, hightest and free memory. Highest is the maximum memory recorded since database restarted. |
Swap usage | Display the current, hightest and free swap. Highest is the maximum swap recorded since database restarted. |
Database Stats
Data size | Size of your data provided by InfluxDB® |
Database on disk size | Effective physical space used. |
Backups
If your database is in a paid plan (i.e. it’s not “free plan”), we’ll automatically make periodic backups of your database on a daily basis, at around 1:00 AM Central European Time (CET or UTC+0100). The time of your daily backup is configurable via the web dashboard of your database or using the CLI. The scheduled date is not strongly enforced: it might get delayed depending on the load on our infrastructure.
Using the Database Dashboard
- From your web browser, open your database dashboard
- Click the Backups tab
- Locate the Backup schedule block
- Click the Schedule button
- Make sure to check the I want to enable scheduled backups checkbox
- Pick an hour (timezone is UTC)
- Validate by clicking the Update button
Using the Command Line
- Make sure you have correctly setup the Scalingo command line tool
- Configure the time of backup:
- By setting an hour:
scalingo --app my-app --addon [YOUR ADDON KIND] backups-config --schedule-at 3
In this example, we ask the platform to create the backups at ~03:00. Note: The timezone used is the local timezone of the machine running the command.
- By setting an hour and a timezone:
scalingo --app my-app --addon [YOUR ADDON KIND] backups-config --schedule-at "4:00 UTC"
In this example, we ask the platform to create the backup at ~04:00 UTC. The output should look like this:
-----> Periodic backups will be done daily at 6:00 CET
- By setting an hour:
Retention Policy for Daily Backups
We keep a limited amount of backups depending on your database plan. A daily backup is retained for the last 7 days. That means that 7 backups will exist, one for each of the last 7 days. A weekly backup means that only one backup is saved over a 7 days period. A monthly backup means that only 1 backup is saved over the course of a month.
Plan | Weekly Backups Retained | Monthly Backup Retained |
---|---|---|
Sandbox/Free | N/A | N/A |
Starter | 4 weeks | 0 months |
Business | 8 weeks | 12 months |
Retention Policy for Manual Backups
You can also manually trigger a backup for your database at any time you want. The number of manual backups that you can retain is limited by your plan:
Plan | Backups Retained |
---|---|
Sandbox/Free | N/A |
Starter | 10 |
Business | 50 |
In case a database is removed from an application, the retention policy remains untouched: backups are not instantly deleted.
Creating a Manual Backup
Using the Database Dashboard
- From your web browser, open your database dashboard
- Click the Backups tab
- Locate the Backup Settings block
- Click the Make Manual Backup button
- Locate the Backups block
- Click the Trigger manual backup button
Using the Command Line
- Make sure you have correctly setup the Scalingo command line tool
- Ask the platform to backup the database:
scalingo --app my-app --addon [YOUR ADDON KIND] backups-create
After a while, the output should look like this:
-----> Backup successfully finished
Download Periodic Backups
Periodic backups are listed in the database specific dashboard.
- Go to your app on Scalingo Dashboard
- Click on Addons tab
- Click Link to dashboard which will take you to the Scalingo for InfluxDB® dashboard
- Click on Backups tab
- Download the backup you want
Restoring a Backup
Follow our guide: How to dump and restore my Scalingo for InfluxDB® database on Scalingo
Add Retention Policies
InfluxDB® provides a way to automatically delete records older than a certain date called retention policy:
CREATE RETENTION POLICY "one_hour" ON "tweets" DURATION 1h REPLICATION 1 DEFAULT
Creating retention policy is not available to simple database users. If you wish to create one, you can log into your database dashboard, and go to the “Advanced” tab.
Removing a Measurement
Your user is not admin on the Scalingo for InfluxDB® database. Hence, removing a measurement
with DROP MEASUREMENT
leads to an error:
> DROP MEASUREMENT mymeasurement
ERR: error authorizing query: my_app_3707 not authorized to execute statement 'DROP MEASUREMENT mymeasurement', requires admin privilege
Hence you should use the DROP SERIES FROM
command:
DROP SERIES FROM mymeasurement
Control Memory Usage
To reduce the memory usage of your InfluxDB® database, you can leverage a combination of both continuous queries and retention policies:
- Use a continuous query to aggregate data to a larger time step. It can be created from the InfluxDB® CLI.
- Use a retention policy to remove old unaggregated data. It can be created from your database dashboard.
If you are looking at reducing the memory usage, big tag cardinality also induces some memory issues. InfluxDB® has the SHOW CARDINALITY
command to help you debug that.