mirror of
https://github.com/bigchaindb/bigchaindb.git
synced 2024-10-13 13:34:05 +00:00
Merge remote-tracking branch 'origin/better-newrelic-support'
This commit is contained in:
commit
c76e831f15
24
deploy-cluster-aws/fabfile.py
vendored
24
deploy-cluster-aws/fabfile.py
vendored
@ -5,6 +5,9 @@ BigchainDB, including its storage backend (RethinkDB).
|
||||
|
||||
from __future__ import with_statement, unicode_literals
|
||||
|
||||
from os import environ # a mapping (like a dict)
|
||||
import sys
|
||||
|
||||
from fabric.api import sudo, env, hosts
|
||||
from fabric.api import task, parallel
|
||||
from fabric.contrib.files import sed
|
||||
@ -25,8 +28,6 @@ env.hosts = public_dns_names
|
||||
# http://docs.fabfile.org/en/1.10/usage/env.html#key-filename
|
||||
env.key_filename = 'pem/bigchaindb.pem'
|
||||
|
||||
newrelic_license_key = 'you_need_a_real_license_key'
|
||||
|
||||
|
||||
######################################################################
|
||||
|
||||
@ -189,14 +190,25 @@ def start_bigchaindb_load():
|
||||
|
||||
# Install and run New Relic
|
||||
@task
|
||||
@parallel
|
||||
def install_newrelic():
|
||||
with settings(warn_only=True):
|
||||
sudo('echo deb http://apt.newrelic.com/debian/ newrelic non-free >> /etc/apt/sources.list')
|
||||
# sudo('apt-key adv --keyserver hkp://subkeys.pgp.net --recv-keys 548C16BF')
|
||||
newrelic_license_key = environ.get('NEWRELIC_KEY')
|
||||
if newrelic_license_key is None:
|
||||
sys.exit('The NEWRELIC_KEY environment variable is not set')
|
||||
else:
|
||||
# Andreas had this "with settings(..." line, but I'm not sure why:
|
||||
# with settings(warn_only=True):
|
||||
# Use the installation instructions from NewRelic:
|
||||
# http://tinyurl.com/q9kyrud
|
||||
# ...with some modifications
|
||||
sudo("echo 'deb http://apt.newrelic.com/debian/ newrelic non-free' >> "
|
||||
"/etc/apt/sources.list.d/newrelic.list")
|
||||
sudo('wget -O- https://download.newrelic.com/548C16BF.gpg | '
|
||||
'apt-key add -')
|
||||
sudo('apt-get update')
|
||||
sudo('apt-get -y --force-yes install newrelic-sysmond')
|
||||
sudo('nrsysmond-config --set license_key=' + newrelic_license_key)
|
||||
sudo('/etc/init.d/newrelic-sysmond restart')
|
||||
sudo('/etc/init.d/newrelic-sysmond start')
|
||||
|
||||
|
||||
###########################
|
||||
|
@ -197,6 +197,26 @@ bigchaindb --help
|
||||
bigchaindb show-config
|
||||
```
|
||||
|
||||
You can also check out the RethinkDB web interface at port 8080 on any of the instances; just go to your web browser and visit a web address like `http://ec2-52-29-197-211.eu-central-1.compute.amazonaws.com:8080/`.
|
||||
|
||||
## Server Monitoring with New Relic
|
||||
|
||||
[New Relic](https://newrelic.com/) is a business that provides several monitoring services. One of those services, called Server Monitoring, can be used to monitor things like CPU usage and Network I/O on BigchainDB instances. To do that:
|
||||
|
||||
1. Sign up for a New Relic account
|
||||
2. Get your New Relic license key
|
||||
3. Put that key in an environment variable named `NEWRELIC_KEY`. For example, you might add a line like the following to your `~/.bashrc` file (if you use Bash): `export NEWRELIC_KEY=<insert your key here>`
|
||||
4. Once you've deployed a BigchainDB cluster on AWS as above, you can install a New Relic system monitor (agent) on all the instances using:
|
||||
|
||||
```text
|
||||
# in a Python 2.5-2.7 virtual environment where fabric, boto3, etc. are installed
|
||||
fab install_newrelic
|
||||
```
|
||||
|
||||
Once the New Relic system monitor (agent) is installed on the instances, it will start sending server stats to New Relic on a regular basis. It may take a few minutes for data to show up in your New Relic dashboard (under New Relic Servers).
|
||||
|
||||
## Shutting Down a Cluster
|
||||
|
||||
There are fees associated with running instances on EC2, so if you're not using them, you should terminate them. You can do that using the AWS EC2 Console.
|
||||
|
||||
The same is true of your allocated elastic IP addresses. There's a small fee to keep them allocated if they're not associated with a running instance. You can release them using the AWS EC2 Console, or by using a handy little script named `release_eips.py`. For example:
|
||||
|
Loading…
x
Reference in New Issue
Block a user