Graylog is an open-source log management tool that helps you to collect, index and analyze any machine logs centrally. This guide focuses on installing Graylog on Ubuntu 20.4.1

Components
  • MongoDB – Acts as a database, stores the configurations and meta information.
  • Elasticsearch – It stores the log messages and offers a searching facility. It is recommended to allocate more memory and use SAS or SAN disks for Elasticsearch nodes. Here, where all your searching happens.
  • Graylog Server – Log Parser. It collects the logs from various inputs and provides output to a built-in web interface for managing the logs.
sudo passwd root
#graylog#2020
apt -y update && apt -y upgrade  

 

# ******************* #
# *** PASTE BREAK *** #
# ******************* #
# Set email
ADMIN_EMAIL=adminemail
ADMIN_NAME=“graylog”
MAILTO=$ADMIN_EMAIL
HOSTNAME=graylog
DOMAINNAME=yourdomain
TIME_ZONE=“Asia/Kuala_Lumpur”

 

#LOCATION=”Rotterdam”
LOCATION=“Kuala_lumpur”

 

PHP_VERSION=7.4
PHP_VERSION_SHORT=74

 

rm /etc/localtime; ln -s /usr/share/zoneinfo/$TIME_ZONE /etc/localtime 
ls -la /etc/localtime

 

echo 
# Kernel hostname 
kernel.hostname=$HOSTNAME.$DOMAINNAME
# Kernel domain name
kernel.domainname=`echo $DOMAINNAME`” >> /etc/sysctl.conf

 

echo -e “127.0.0.1\t`echo $HOSTNAME`.`echo $DOMAINNAME` `echo $HOSTNAME`” >> /etc/hosts
echo -e “::1\t`echo $HOSTNAME`.`echo $DOMAINNAME` `echo $HOSTNAME`” >> /etc/hosts

 

sudo hostnamectl set-hostname $HOSTNAME
sysctl -p /etc/sysctl.conf
sudo apt install apt-transport-https ca-certificates curl software-properties-common -y
# ******************* #
# *** PASTE BREAK *** #
# ******************* #
#######################################################
#   SSH Config improvements to login            #
#######################################################

 

# Set SSHD value for user
mkdir ~/.ssh

 

# Backup sshd settings
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.factory-defaults

 

sed -i ‘s/GSSAPIAuthentication yes/GSSAPIAuthentication no/’ /etc/ssh/ssh_config
echo ‘UseDNS yes’ >> /etc/ssh/sshd_config

 

# allow ssh root login
sudo sed -i ‘s/#PermitRootLogin prohibit-password/PermitRootLogin no/’ /etc/ssh/sshd_config
# Enable root file edit for WinSCP
sudo echo 
#### added
sysadmin ALL=NOPASSWD: /usr/lib/openssh/sftp-server’ >> /etc/sudoers

 

service sshd restart

 

#######################################################
#          update and install basic package           #
#######################################################

 

sudo apt update

 

sudo apt install -y apt-transport-https openjdk-11-jre-headless uuid-runtime pwgen curl dirmngr

 

#Verify the Java version post installing OpenJDK.

 

java -version

 

#Output:

 

openjdk version “11.0.8” 2020-07-14
OpenJDK Runtime Environment (build 11.0.8+10-post-Ubuntu-0ubuntu120.04)
OpenJDK 64-Bit Server VM (build 11.0.8+10-post-Ubuntu-0ubuntu120.04, mixed mode, sharing)

 

#######################################################
#           Install Elasticsearch               #
#######################################################
#Elasticsearch store logs coming from external sources and 
#offers real-time distributed search and analytics with the RESTful web interface.
#Download and install the GPG signing key.

 

wget -qO – https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add –

 

#Set up the Elasticsearch repository on your system by running the below command.
echo “deb https://artifacts.elastic.co/packages/oss-6.x/apt stable main” | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list

 

#Update the repository cache and then install the Elasticsearch package.

 

sudo apt update

 

sudo apt install -y elasticsearch-oss

 

#Edit the Elasticsearch configuration file to set the cluster name for Graylog set up.

 

sudo nano /etc/elasticsearch/elasticsearch.yml

 

#Set the cluster name as graylog, as shown below.

 

cluster.name: graylog
#Start the Elasticsearch service to read the new configurations.

 

sudo systemctl daemon-reload

 

sudo systemctl start elasticsearch

 

sudo systemctl enable elasticsearch

 

#Elastisearch should be now listening on port 9200. Use the curl command to check the Elasticsearch’s response.

 

curl -X GET http://localhost:9200

 

#Ensure the output has the cluster name, graylog.

 

{
  “name” : “vQklpl4”,
  “cluster_name” : “graylog”,
  “cluster_uuid” : “jLztxJoOROK-XuZkoKJr6A”,
  “version” : {
    “number” : “6.8.11”,
    “build_flavor” : “oss”,
    “build_type” : “deb”,
    “build_hash” : “00bf386”,
    “build_date” : “2020-07-09T19:08:08.940669Z”,
    “build_snapshot” : false,
    “lucene_version” : “7.7.3”,
    “minimum_wire_compatibility_version” : “5.6.0”,
    “minimum_index_compatibility_version” : “5.0.0”
  },
  “tagline” : “You Know, for Search”
}

 

#######################################################
#                  Install MongoDB              #
#######################################################
#MongoDB acts as a database for storing Graylog’s configuration. 
#Graylog requires MongoDB v3.6, 4.0 or 4.2.

 

#Unfortunately, MongoDB official repository doesn’t have the required 
#MongoDB versions for Ubuntu 20.04. So, we will install MongoDB v3.6 from the Ubuntu base repository.

 

sudo apt update

 

sudo apt install -y mongodb-server

 

#Start the MongoDB and enable it on the system start-up.

 

sudo systemctl start mongodb

 

sudo systemctl enable mongodb

 

#######################################################
#                Install Graylog Server           #
#######################################################
#Graylog Server reads data from Elasticsearch for search queries comes
#from users and then displays it for them through the Graylog web interface.

 

#Download and install the Graylog 3.3 repository configuration package.
wget https://packages.graylog2.org/repo/packages/graylog-3.3-repository_latest.deb

 

sudo dpkg -i graylog-3.3-repository_latest.deb

 

#Update the repository cache.

 

sudo apt update
#Install the Graylog server using the following command.

 

sudo apt install -y graylog-server
#You must set a secret to secure the user passwords. Use the pwgen command to generate the secret.

 

pwgen -N 1 -s 96
#secret
0FPOiNNXxmLYVdq6QxHPsBFGCMcDmAw0tzUosqtEpN555QAQ9WYdh6CSZ6r5Jd4OTZB2W7Q1cnzkjzG7RjTs2WKQNGvpsxpp

 

sudo nano /etc/graylog/server/server.conf
#Then, place the secret like below.
password_secret = 

 

#Replace password with the choice of your password.

 

echo -n admin | sha256sum
8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
#
sudo nano /etc/graylog/server/server.conf

 

root_password_sha2 = 8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918

 

#######################################################
#              Setup Graylog web interface          #
#######################################################

 

sudo nano /etc/graylog/server/server.conf
#Update the below entry with your system IP address by which you will access the Graylog web interface.

 

http_bind_address = yourserverip:9000

 

#
http_external_uri = http://yourip:9000/

 

#Start and enable the Graylog service.

 

sudo systemctl daemon-reload

 

sudo systemctl start graylog-server

 

sudo systemctl enable graylog-server

 

#Keep looking Graylog server startup logs. 
#This log will be useful for you to troubleshoot Graylog in case of any issues.

 

sudo tail -f /var/log/graylog-server/server.log

 

#######################################################
#              Setup Graylog web interface          #
#######################################################
#The Graylog web interface will now be listening on port 9000
#Open your browser and point it to.

 

http://ip.add.re.ss:9000

 

#Log in with username admin and the password you configured at
#root_password_sha2 on server.conf file.
Conclusion:
You have successfully installed Graylog 3.0 on Ubuntu 20.04. 
As a further read, you can try configuring