# pgBadger for PostgreSQL

##############################################################################
# Install on PostgreSQL Servers
# Using upstream postresql's repos, not Debian's repos.
#apt install 

# Configure postgres:
vim /etc/postgresql/10/main/postgresql.conf

# Change:
log_min_duration_statement = 1000
log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d,app=%a,client=%h '
log_checkpoints = on
log_connections = on
log_disconnections = on
log_lock_waits = on
log_temp_files = 0
log_autovacuum_min_duration = 0
log_error_verbosity = default
lc_messages='C'

# Add user to pull logs on pg1 pg2 pg3 pg4
adduser pgbadger
adduser pgbadger adm

# Set up key on pgbadger node to enable it to ssh to pg1 pg2 pg3 pg4


##############################################################################
# Install on Web Node

# Set up Debian Stretch node
# Install postgres repos:
echo 'deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main' > /etc/apt/sources.list.d/pgdg.list
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
apt update
apt install postgresql-client-10

apt install pgbadger libtext-csv-xs-perl libjson-xs-perl

adduser pgbadger
sudo su - pgbadger
ssh-keygen -t ed25519
# copy that key to user pgbadger@pg1 pg2 pg3 pg4

# Set up apache2
apt install apache2
rm /var/www/html/index.html
chown pgbadger:pgbadger /var/www/html
mkdir /var/www/html/pg1 /var/www/html/pg2 /var/www/html/pg3 /var/www/html/pg4

# Set up script for user pgbadger to run:
# See script: forksand-pgbadger-gen

# Run that script in cron as user pgbadger:
crontab -e
# m h  dom mon dow   command
*/5 *  *   *   *     /home/pgbadger/forksand-pgbadger-gen


##############################################################################
# Admin Web Client

# On workstation create tunnel:
ssh -N -C -L 55432:localhost:80 pgbadger

# On workstation, in browser:
http://localhost:55432/
##############################################################################
