Install Graylog on Freebsd 10.3
I have always needed a central logging server at home. After setting up a couple for my day job I finally decided to setup one for my home servers. This guide is meant to serve as a way install Graylog into FreeBSD. The FreeBSD server is a jail running in FreeNAS 9.10. We are looking to install Graylog 1.3.3 with the web interface. I know Graylog has moved to 2.0 but as of now, the FreeBSD packages are on version 1.3.3. This setup has been working on my server for 15 days so far with an input of 3-6 msgs a second. This guide assumes you already have access to the machine via ssh.
Nano is my editor of choice in the terminal so all the examples will use it. To install (it is not installed by default) run pkg install nano
. Feel free to use the editor of your choice.
First, we will want to configure and start ntpd. This will make sure we have an accurate time for indexes and logs flowing into the system.
NOTE: If you are running this in a jail you need to setup the ntpd service on the host not in the jail.
First lets enable the service.
`echo "ntpd_enable="YES" >> /etc/rc.conf`
Then we need to add some time servers. I always use the time servers from pool.ntp.org
Check /etc/ntpd.conf
. If you have the following lines in your file then you don’t need to do anything.
server 0.freebsd.pool.ntp.org iburst
server 1.freebsd.pool.ntp.org iburst
server 2.freebsd.pool.ntp.org iburst
#server 3.freebsd.pool.ntp.org iburst
If you do not have the lines above add the lines below to /etc/ntpd.conf
cat <<EOF >> /etc/ntp.conf
server 0.north-america.pool.ntp.org
server 1.north-america.pool.ntp.org
server 2.north-america.pool.ntp.org
server 3.north-america.pool.ntp.org
EOF
Now start the service.
service ntpd start
Install
Now we need to install the graylog and its dependancies. pkg install -y mongodb elasticsearch graylog graylog-web-interface pwgen
Copy the following and run it to make sure all the needed services are started on boot.
cat <<EOF >> /etc/rc.conf
# Graylog with dependancies
graylog_enable="YES"
graylog_web_interface_enable="YES"
elasticsearch_enable="YES"
mongod_enable="YES"
EOF
Elastic Search Configs
pw groupmod elasticsearch -m graylog
nano /usr/local/etc/elasticsearch/elasticsearch.yml
- network.host: 127.0.0.1
Mongo DB Configs
First lets start Mongo. service mongod start
Open the mongo configuration file. nano /usr/local/etc/mongodb.conf
Add the following to the file and save.
net:
port: 27017
bindIp: 127.0.0.1
security:
authorization: enabled
Start the mongo interactive shell mongo
Switch to the admin user use graylog2
Create a user with the rw role to the database graylog2. Graylog creates the graylog2 database so do not replace this value.
db.createUser({
user: "graylog",
pwd: "MY_SUPER_SECRET_PASSWORD",
roles: [
{
role: "readWrite\",
db:"graylog2"
}
]
})
Exit the shell exit
Lets restart mongo to load in the new configurations. service mongod restart
Graylog Server Configs
Change directory into graylog then copy the example configuration to the the graylong.conf (which is not there by default). Next we can touch node-id which we will need in a minute. cd /usr/local/etc/graylog && cp graylog.conf.example graylog.conf && touch node-id && chown graylog:graylog node-id
Open the config file nano /usr/local/etc/graylog/graylog.conf
All of the configuration options below are in different parts of the file and are commented as needed.
node_id_file = /usr/local/etc/graylog/node-id
#Generate one by using for example: pwgen -N 1 -s 96\npassword_secret =
root_username = admin
#echo -n yourpassword | shasum -a 256
root_password_sha2 = hash from the above command
root_email ="YOU_EMAIL_HERE"
graylog2-server.uris="http://<your-server-ip>:12900//"
rest_enable_gzip = true
rest_enable_tls = true
elasticsearch_cluster_name = elasticsearch
elasticsearch_discovery_zen_ping_multicast_enabled = false
elasticsearch_discovery_zen_ping_unicast_hosts =127.0.0.1:9300
elasticsearch_max_time_per_index = 1w
#mongodb_uri = mongodb://localhost/graylog2
mongodb_uri = mongodb://graylog:MY_SUPER_SECRET_PASSWORD@localhost:27017/graylog2
Start the service service graylog start
Graylog Web Interface Configs
Change directory and edit the graylog web interface configuration file cd .. && nano graylog-web-interface.conf
graylog2-server.uris="https://127.0.0.1:12900/"
# Generate for example with: pwgen -N 1 -s 96
application.secret=""
timezone="America/Chicago"
# This needs to be enabled to allow for a self-signed certificate.
# If you're using a valid certificate this can be set to false.
graylog2.client.accept-any-certificate=true
Start the web interface service graylog_web_interface start
Open your browser and go to http://HOSTNAME:9000
I hope this gives you some help with configuring your own central log server.