ARTICLE / 2018.11.30

Installing Grafana, InfluxDB, Apache2 on AWS EC2: Step by Step

A medium-performance setup for Grafana on AWS. Private files at github . Setup the instance t3.large, Ubuntu 18 (or AWS Linux 2) as I'm familiar with it Seperate root and data disks Security group with 8083 (InfluxDB), 22 (SSH), 80 (www) and, optionally, 3000…

A medium-performance setup for Grafana on AWS. Private files at github.

Setup the instance

  • t3.large, Ubuntu 18 (or AWS Linux 2) as I'm familiar with it
  • Seperate root and data disks
  • Security group with 8083 (InfluxDB), 22 (SSH), 80 (www) and, optionally, 3000 (Grafana) open

Setup separate data volume

Key files

/var/lib/influxdb/       # backup via aws
/etc/influx/influx.conf # git
/etc/grafana/grafana.ini # git
/var/lib/grafana/ # backup via aws

Option 1: Mount a seperate volume for /var

Use instructions from AWS to mount an attached volume

sudo mkfs -t ext4 /dev/nvme1n1 # or xfs or ext4
sudo mkdir /data
mount /dev/nvme1e0 /data # temp...
sudo rsync -a /var/ /data/ # ..to enable this sudo blkid # remember UUID sudo nano /etc/fstab # Add the following (change UUID) UUID=8a2ca8df-d123-4ff2-9183-33ba462826de /var ext4 defaults,nofail 0 2
# restart

Option 2: Symlink to /data

# mount a volume at /data and symlink:
sudo mkdir -p /data/etc/influxdb/
sudo mkdir -p /data/lib/influxdb/ 
cd /etc/influxdbsudo 
mv /etc/influxdb/influxdb.conf /data/etc/influxdbsudo
ln -s /data/etc/influxdb/influxdb.conf 
sudo chown -R influxdb:influxdb /data/etc/influxdb/ /data/lib/influxdb/
vim /etc/influxdb/influxdb.conf # to point to /data:
[data] 
dir = "/data/lib/influxdb/data" wal-dir = "/data/lib/influxdb/wal" 
[meta] dir = "/data/lib/influxdb/meta"

Install the software:

Install as directed:

Then:

# need secure-link module  
sudo apt-get install nginx-extras
# start on boot
sudo systemctl enable nginx
sudo systemctl enable influxdb
sudo systemctl enable grafana-server

Configure

Configure InfluxDB

Add an admin user first:

influx>create user whoever with password [REDACTED]

Then configure via /etc/influxdb/influxdb.conf :

 
[http]
access-log-path = "/var/log/influxdb/influxdb-http.log" auth-enabled = true
max-connection-limit = 1000
[coordinator]
max-concurrent-queries = 100
max-select-series = 100
query-timeout = "10s"
log-queries-after = "1s"
max-select-point = 1000000

[continuous_queries]
query-stats-enabled = true
query-stats-enabled = false
run-interval = "1m"

And... restart to see changes

sudo systemctl restart influxdb
sudo systemctl status influxdb

Configure Grafana

/etc/grafana/grafana.ini:

[server]
root_url = http://live2.example.com
[users]
allow_sign_up = false
allow_org_create = false
auto_assign_org = false
[auth.anonymous]
# check if required?
enabled = true
[auth.proxy]
enabled = true

Configure Nginx

See Access Grafana via token without login screen for details.