A List of Hadoop Books

Advanced Analytics with Spark: Patterns for Learning from Data at Scale by Sandy Ryza, Uri Laserson, Sean Owen and Josh Wills
Agile Data Science: Building Data Analytics Applications with Hadoop by Russell Jurney
Apache Drill: The SQL query engine for Hadoop and NoSQL by Ted Dunning, Ellen Friedman, Tomer Shiran and Jacques Nadeau
Apache Flume: Distributed Log Collection for Hadoop -Second Edition by Steve Hoffman
Apache Hadoop YARN: Moving beyond MapReduce and Batch Processing with Apache Hadoop 2 (Addison-Wesley Data & Analytics) by Arun Murthy, Vinod Vavilapalli, Douglas Eadline, Joseph Niemiec and Jeff Markham
Apache Oozie: The Workflow Scheduler for Hadoop by Mohammad Kamrul Islam and Aravind Srinivasan 
Apache Solr 3 Enterprise Search Server by David Smiley and Eric Pugh
Apache Solr 3.1 Cookbook by Rafal Kuć
Apache Solr High Performance by Surendra Mohan
Apache Spark in 24 Hours, Sams Teach Yourself by Jeffrey Aven
Apache Sqoop Cookbook: Unlocking Hadoop for Your Relational Database by Kathleen Ting and Jarek Jarcec Cecho
Architecting HBase Applications: A Guidebook for Successful Development and Design by Jean-Marc Spaggiari and Kevin O'Dell
Beginning Apache Pig: Big Data Processing Made Easy by Balaswamy Vaddeman
Big Data Analytics Beyond Hadoop: Real-Time Applications with Storm, Spark, and More Hadoop Alternatives (FT Press Analytics) by Vijay Srinivas Agneeswaran
Big Data Analytics with R and Hadoop by Vignesh Prajapati
Big Data: A Revolution That Will Transform How We Live, Work, and Think by Viktor Mayer-Schönberger and Kenneth Cukier
Big Data Essentials by Anil Maheshwari
Big Data For Beginners: Understanding SMART Big Data, Data Mining & Data Analytics For improved Business Performance, Life Decisions & More! (Data ... Computer Programming, Growth Hacking, ITIL)
by Vince Reynolds
Big Data For Dummies by Judith Hurwitz, Alan Nugent, Fern Halper and Marcia Kaufman
Big Data Forensics: Learning Hadoop Investigations by Joe Sremack
Big Data Governance: Modern Data Management Principles for Hadoop, NoSQL & Big Data Analytics
by Peter Ghavami PhD
Big Data Made Easy: A Working Guide to the Complete Hadoop Toolset by Michael Frampton
Big Data, MapReduce, Hadoop, and Spark with Python: Master Big Data Analytics and Data Wrangling with MapReduce Fundamentals using Hadoop, Spark, and Python by Lazy Programmer
Big Data: Principles and best practices of scalable realtime data systems by Nathan Marz and James Warren
Big Data SMACK: A Guide to Apache Spark, Mesos, Akka, Cassandra, and Kafka by Raul Estrada and Isaac Ruiz
CCA175: Hadoop and Spark Developer Exam Hands-on Practice Book and Preparation: CCA175 & CCP:DE575 by HadoopExam Learning Resources
Cassandra: The Definitive Guide: Distributed Data at Web Scale by Jeff Carpenter and Eben Hewitt Cloudera Certified Developer for Apache Hadoop Last Minute Guide: CCD-410 by LMG
Data Analytics Made Accessible: 2017 edition by Anil Maheshwari
Data Analytics with Hadoop: An Introduction for Data Scientists by Benjamin Bengfort and Jenny Kim Data Algorithms: Recipes for Scaling Up with Hadoop and Spark by Mahmoud Parsian
Data Munging with Hadoop (Addison-Wesley Data & Analytics Series) by Ofer Mendelevitch and Casey Stella
Data Science and Big Data Analytics: Discovering, Analyzing, Visualizing and Presenting Data by EMC Education Services
Data Science for Business: What You Need to Know about Data Mining and Data-Analytic Thinking by Foster Provost and Tom Fawcett
Data Science from Scratch: First Principles with Python by Joel Grus
Deep Learning: A Practitioner's Approach by Josh Patterson and Adam Gibson
Deep Learning with Hadoop by Dipayan Dev
Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems by Martin Kleppmann
The Enterprise Big Data Lake: Delivering on the Promise of Hadoop and Data Science in the Enterprise by Alex Gorelik
Enterprise Data Design Patterns: Best Practices for Putting Hadoop to Work by Douglas Moore and Jeffrey Breen
Enterprise Lucene and Solr by Lajos Moczar
Expert Hadoop Administration: Managing, Tuning, and Securing Spark, YARN, and HDFS (Addison-Wesley Data & Analytics Series) by Sam R. Alapati
Field Guide to Hadoop: An Introduction to Hadoop, Its Ecosystem, and Aligned Technologies
by Kevin Sitto and Marshall Presser
Ecosystem (Addison-Wesley Data & Analytics) by Douglas Eadline
Fundamentals of Deep Learning: Designing Next-Generation Machine Intelligence Algorithms
by Nikhil Buduma (Author) and Nicholas Locascio (Contributor)
Getting Started with Impala: Interactive SQL for Apache Hadoop by John Russell
Hadoop 2.x Administration Cookbook by Gurmukh Singh
Hadoop 2 Essentials: An End-to-End Approach by Dr. Henry H Liu
Hadoop 2 Quick-Start Guide: Learn the Essentials of Big Data Computing in the Apache Hadoop 2
HADOOP & YARN INTERVIEW QUESTION AND ANSWER: LEARN BIG DATA HADOOP & YARN IN QA - ALL INTERVIEW QUESTIONS COVERED by GICGAC ACADEMY
Hadoop and Big Data: Introduction to Basics of Big data analytics by Dr. Rajesh Pasupuleti
Hadoop Application Architectures: Designing Real-World Big Data Applications by Mark Grover, Ted Malaska, Jonathan Seidman and Gwen Shapira
Hadoop Backup and Recovery solutions by Gaurav Barot, Chintan Mehta and Amij Patel
Hadoop Beginner's Guide by Garry Turkington
Hadoop Big Data Guide for beginners by Parveen
Hadoop Big Data Interview Questions (Illustrated): Shyam Mallesh by Shyam Mallesh
Hadoop Blueprints by Anurag Shrivastava and Tanmay Deshpande
Hadoop Beginner's Guide by Garry Turkington
Hadoop Cluster Deployment by Danil Zburivsky
Hadoop: The Definitive Guide: Storage and Analysis at Internet Scale by Tom White
Hadoop: Data Processing and Modelling by Garry Turkington, Tanmay Deshpande and Sandeep Karanth
Hadoop: The Engine That Drives Big Data (New Street Executive Summaries) by Lars Nielsen
Hadoop Essentials: A Quantitative Approach by Henry H. Liu
Hadoop Essentials - Tackling the Challenges of Big Data with Hadoop (Community Experience Distilled)
by Shiva Achari
Hadoop For Dummies by Dirk deRoos
Hadoop for Finance Essentials by Rajiv Tiwari
Hadoop in 24 Hours, Sams Teach Yourself by Jeffrey Aven
Hadoop in Action by Chuck Lam
Hadoop Interview Guide by Monika Singla, Sneha Poddar and Shivansh Kumar
Hadoop in the Enterprise: Architecture: A Guide to Successful Integration by Jan Kunigk, Lars George, Paul Wilkinson and Ian Buss
Hadoop in Practice: Includes 104 Techniques by Alex Holmes
Hadoop MapReduce v2 Cookbook Second Edition by Thilina Gunarathne
Hadoop Operations: A Guide for Developers and Administrators by Eric Sammer
Hadoop Operations and Cluster Management Cookbook by Shumin Guo
Hadoop Real World Solutions Cookbook - Second Edition by Tanmay Deshpande
HADOOP Security Best Practices by Jason Burkett
Hadoop Security: Protecting Your Big Data Platform by Ben Spivey and Joey Echeverria
Hadoop Succinctly by Elton Stoneman
HBase: The Definitive Guide: Random Access to Your Planet-Size Data by Lars George
High Performance Spark: Best Practices for Scaling and Optimizing Apache Spark by Holden Karau and Rachel Warren
Integrating Hadoop by William McKnight
Introducing Data Science: Big Data, Machine Learning, and more, using Python tools
by Davy Cielen, Arno Meysman and Mohamed Ali
Kick Start: Hadoop: Learn Hadoop in Hours! by Mario Meir-Huber
Leaders and Innovators: How Data-Driven Organizations Are Winning with Analytics (Wiley and SAS Business Series) by Tho H. Nguyen, Bill Franks and James Taylor
Learning Hadoop 2 by Garry Turkington and Gabriele Modena  
Learn Hadoop in 1 Day: Master Big Data with this complete Guide by Krishna Rungta
Learning Spark: Lightning-Fast Big Data Analysis by Holden Karau, Andy Konwinski, Patrick Wendell and Matei Zaharia
MapReduce Design Patterns: Building Effective Algorithms and Analytics for Hadoop and Other Systems by Donald Miner and Adam Shook
Mastering Hadoop by Sandeep Karanth
Moving Hadoop to the Cloud: Harnessing Cloud Features and Flexibility for Hadoop Clusters by Bill Havanki
Network Storage: Tools and Technologies for Storing Your Company's Data by James O'Reilly
NoSQL and SQL Data Modeling: Bringing Together Data, Semantics, and Software by Ted Hills
Practical Data Science with Hadoop and Spark: Designing and Building Effective Analytics at Scale (Addison-Wesley Data & Analytics) by Ofer Mendelevitch, Casey Stella and Douglas Eadline
Practical Hadoop Ecosystem: A Definitive Guide to Hadoop-Related Frameworks and Tools by Deepak Vohra
Practical Hadoop Migration: How to Integrate Your RDBMS with the Hadoop Ecosystem and Re-Architect Relational Applications to NoSQL by Bhushan Lakhe
Practical Hive: A Guide to Hadoop's Data Warehouse System by Scott Shaw, Andreas François Vermeulen, Ankur Gupta and David Kjerrumgaard
Practical Hadoop Security by Bhushan Lakhe
Practical Machine Learning with H2O: Powerful, Scalable Techniques for Deep Learning and AI by Darren Cook
Pro Apache Hadoop by Jason Venner, Sameer Wadkar and Madhu Siddalingaiah
Professional Hadoop by Benoy Antony, Konstantin Boudnik, Cheryl Adams, Branky Shao, Cazen Lee and Kai Sasaki
Pro Hadoop (Expert's Voice in Open Source) by Jason Venner
Pro Hadoop Data Analytics: Designing and Building Big Data Systems using the Hadoop Ecosystem by Kerry Koitzsch
Programming Hive: Data Warehouse and Query Language for Hadoop by Edward Capriolo, Dean Wampler and Jason Rutherglen
Programming Pig: Dataflow Scripting with Hadoop by Alan Gates, Daniel Dai
Pro Microsoft HDInsight: Hadoop on Windows by Debarchan Sarkar
Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython by Wes McKinney
Python Machine Learning by Sebastian Raschka
Real-World Hadoop by Ted Dunning and Ellen Friedman
SAS and Hadoop Technology: Overview by SAS Institute
Scaling Big Data with Hadoop and Solr - Second Edition by Hrishikesh Vijay Karambelkar
Securing Hadoop by Sudheesh Narayanan
Spark in Action by Petar Zecevic and Marko Bonaci
Top 50 Apache Hadoop Interview Questions and Answers by Knowledge Powerhouse
Using R to Unlock the Value of Big Data: Big Data Analytics with Oracle R Enterprise and Oracle R Connector for Hadoop by Mark Hornick and Tom Plunkett
Virtualizing Hadoop: How to Install, Deploy, and Optimize Hadoop in a Virtualized Architecture (VMware Press Technology) by George Trujillo, Charles Kim, Steve Jones, Rommel Garcia and Justin Murray

For a list of Apache Spark books, see this posting.

What Is the Difference between the Internal IP Address of a Server and the External IP Address?

Problem scenario
You want to find the external and internal IP addresses of your servers.  You are not sure which is which.  

Solution
The internal IP address is found by issuing one of these commands on Linux:

ip addr show
ifconfig

For Windows, open a command prompt and run this command:

ipconfig

For Linux servers the external IP address is found by running this command (assuming your server has access to the internet):

curl http://icanhazip.com

For Windows open a web browser and go to http://ipchicken.com

If you are using AWS and your server does not have access to the internet, go to the EC2 dashboard.  The IP address shown there will be the external IP address.

How Do You Install and Configure the NRPE Agent (to Have Nagios Monitor) on a RHEL Server in AWS?

Problem scenario
You have Nagios core installed on a server in AWS.  You want a new AWS RedHat Enterprise Linux server to have the NRPE agent.  You want thorough directions for this process to potentially automate it.  How do you install and configure the NRPE agent on a RHEL server and configure a Nagios core server to monitor it?

Solution
Prerequisites

  1. You need to know the internal IP address of 1) the Nagios core server; for RHEL 7.x, use ifconfig. 2) the server that will receive the NRPE agent. 
  2. The AWS Security Group must have a certain rule configured for Nagios to perform ping tests.  We suggest you go to Security Groups.  Go to Inbound Rules and click "Edit."  Click "Add Rule."  For type use "ALL ICMP - IPv4." For "Source" keep it at Custom.  For the blank field use this (where x.x.x.x is the internal IP address of the Nagios core server):  x.x.x.x/32

Method
#1  (Done from Nagios client; the server destined to have the NRPE agent.)   Below is the content of a script.  You must change the x.x.x.x to the IP address of the Nagios core server.  Then run the script below on the server that you want to have the NRPE agent installed and configured on. (To run it you might run a command like this sudo bash /tmp/install.sh.)

# Script written by continualintegration.com
#!/bin/bash

yum -y update

yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

yum -y install nrpe nagios-plugins-users nagios-plugins-load nagios-plugins-swap nagios-plugins-disk nagios-plugins-procs

cd /etc/nagios
cp nrpe.cfg nrpe.cfg.bak

cat nrpe.cfg.bak | sed -e 's/allowed_hosts=127.0.0.1,::1/allowed_hosts=x.x.x.x/g' > nrpe.cfg
# The old way of doing the above command required perl. Here it is:

# perl -i -pe 's/.*/allowed_hosts=x.x.x.x/ if $.==81' nrpe.cfg
​# /etc/nagios/nrpe.cfg has an allowed_hosts stanza
# This setting can support multiple Nagios core servers.  The IP addresses should be separated by a comma if you have more than one.

systemctl restart nrpe
systemctl enable nrpe

# Last line of script

#2 (Done from Nagios core server)  vi /usr/local/nagios/etc/servers/contint.cfg
The content below is what you'll need for this contint.cfg file.  You just have to change three parts:

i) Replace y.y.y.y with the IP address printed at the end of the script of #3 (the internal IP address of the RHEL server to get the NRPE agent).

ii) Replace the "contint" in every spot below with the hostname found in step #3.

# RedHat Linux Host configuration file.  (Largely taken from https://www.howtoforge.com/tutorial/ubuntu-nagios/)
# You can create other .cfg files with unique names in the same directory /usr/local/nagios/etc/servers/

define host {
        use                          linux-server
        host_name                    contint
        alias                        contint
        address                      y.y.y.y
        register                     1
}

define service {
      host_name                       contint
      service_description             PING
      check_command                   check_ping!100.0,20%!500.0,60%
      max_check_attempts              2
      check_interval                  2
      retry_interval                  2
      check_period                    24x7
      check_freshness                 1
      contact_groups                  admins
      notification_interval           2
      notification_period             24x7
      notifications_enabled           1
      register                        1
}

define service {
      host_name                       contint
      service_description             Check Users
      check_command           check_local_users!20!50
      max_check_attempts              2
      check_interval                  2
      retry_interval                  2
      check_period                    24x7
      check_freshness                 1
      contact_groups                  admins
      notification_interval           2
      notification_period             24x7
      notifications_enabled           1
      register                        1
}

define service {
      host_name                       contint
      service_description             Local Disk
      check_command                   check_local_disk!20%!10%!/
      max_check_attempts              2
      check_interval                  2
      retry_interval                  2
      check_period                    24x7
      check_freshness                 1
      contact_groups                  admins
      notification_interval           2
      notification_period             24x7
      notifications_enabled           1
      register                        1
}

define service {
      host_name                       contint
      service_description             Check SSH
      check_command                   check_ssh
      max_check_attempts              2
      check_interval                  2
      retry_interval                  2
      check_period                    24x7
      check_freshness                 1
      contact_groups                  admins
      notification_interval           2
      notification_period             24x7
      notifications_enabled           1
      register                        1
}

define service {
      host_name                       contint
      service_description             Total Process
      check_command                   check_local_procs!250!400!RSZDT
      max_check_attempts              2
      check_interval                  2
      retry_interval                  2
      check_period                    24x7
      check_freshness                 1
      contact_groups                  admins
      notification_interval           2
      notification_period             24x7
      notifications_enabled           1
      register                        1
}

#3 (Done from Nagios core server) 
Run this command:
sudo /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

If an error is found in the output, correct the problem.  If zero errors are found, proceed to step #4.

#4  (Done from Nagios client; the server destined to have the NRPE agent.) 
Run these commands:

sudo systemctl restart nrpe
sudo systemctl enable nrpe

#5  (Done from Nagios core server) 
Run these commands:

sudo systemctl restart httpd
sudo systemctl restart nagios

How Do You Install Nagios on RedHat Linux Step-By-Step?

Problem scenario
You have a small AWS server (e.g., t2.micro with 1 GB of RAM) running RedHat Enterprise Linux.  How do you install Nagios on it?  You want thorough directions to install and configure the Nagios monitoring server on RHEL.

Solution
As root or a sudoer user, run a script with the following content:

# Written by continualintegration.com
​# This script installs Nagios.  There is some interactive portion at the beginning.  
# But it should be easy to install Nagios using the following.
# read in password for nagiosadmin
echo "Ensure you have a security group rule to allow inbound connections over port 80 from the IP address of the desktop that will access Nagios."
echo "********************************"
echo "Next..."
echo "Please enter the email address that will be sent a message when Nagios sends an alert: "
read youremail
echo "********************************"
echo "Next..."
echo "Please enter the password for nagiosadmin.  Remember that this password will sent be over the internet.  It will pass over plaintext if you follow this script.  This script is for educational and/or testing purposes.  It is advisable to use SSL for your Nagios instance (and its authentication).  The nagiosadmin user is an interactive user that logs in via a web browser.
***  Enter any password you want and press enter:"
read -s npass

yum -y update
yum -y install wget build-essential httpd php gcc glibc-common gd make net-snmp openssl-devel xinetd unzip sendmail php-gd 

useradd nagios
groupadd nagcmd
usermod -a -G nagcmd nagios
usermod -a -G nagios,nagcmd apache
cd /opt
wget https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.3.1.tar.gz
tar -xzf nagios*.tar.gz
cd nagios-4.3.1

./configure --enable-command-args --with-nagios-user=nagios --with-nagios-group=nagios --with-ssl=/usr/bin/openssl --with-ssl-lib=/usr/lib/x86_64-linux-gnu

make all
make install
make install-commandmode
make install-init
make install-config
make install-webconf
cd /opt
wget https://nagios-plugins.org/download/nagios-plugins-2.2.1.tar.gz
tar -xzf nagios-plugins*.tar.gz
cd nagios-plugins-2.2.1
./configure --with-nagios-user=nagios --with-nagios-group=nagios --with-openssl
make
make install
service xinetd restart
cd /usr/local/nagios/etc/
cp nagios.cfg nagios.cfg.bak
perl -i -pe 's/.*/cfg_dir=\/usr\/local\/nagios\/etc\/servers/ if $.==51' nagios.cfg
mkdir -p /usr/local/nagios/etc/servers

sed -i -e 's/nagios@localhost/$youremail/g' /usr/local/nagios/etc/objects/contacts.cfg
htpasswd -b -c /usr/local/nagios/etc/htpasswd.users nagiosadmin $npass

systemctl start nagios.service
#systemctl restart httpd.service # we leave this commented out purely as a reference
chkconfig nagios on
systemctl start nagios.service
echo "The error 'Failed to start nagios.service: Unit not found.' may be ignorable."
echo "You should be ready to open a web browser.  Use the external AWS IP address of the server in a URL like this: "
echo "http://x.x.x.x/nagios (where x.x.x.x is the external IP address of the AWS server)"

How Do You Install and Configure the NRPE Agent on Ubuntu?

Problem scenario
You want the Nagios Core server to monitor another AWS server.  How do you install and configure the NRPE agent on Ubuntu?

Solution
Follow these step-by-step directions if you are using AWS.  If the servers are not in AWS, the directions below may still work. These directions assume that the Nagios core server is running on Ubuntu in AWS. (If you want to know how to set up Nagios core on Ubuntu, see this posting.)  These directions also assume you have root access to the Ubuntu servers in AWS.

#1 (Done from Nagios core server) Obtain the internal IP address of the Nagios core server.  You do this by going to the back end of the Nagios server and issuing ifconfig.

#2 (Done from Nagios client; the server destined to have the NRPE agent.) Run this command on the Ubuntu server you want to be monitored by the Nagios core server:
sudo su -

#3 (Done from Nagios client; the server destined to have the NRPE agent.) Launch a script with this as the content where x.x.x.x is the IP address obtained in step #1.

apt-get -y update
apt-get -y install nagios-nrpe-server nagios-plugins
cd /etc/nagios/
cp nrpe.cfg nrpe.cfg.bak
cat nrpe.cfg.bak | sed -e 's/allowed_hosts=127.0.0.1/allowed_hosts=x.x.x.x/g' > nrpe.cfg
# The line above used to require perl as shown below:
#perl -i -pe 's/.*/server_address=x.x.x.x/ if $.==44' nrpe.cfg
​# /etc/nagios/nrpe.cfg has an allowed_hosts stanza
# This setting can support multiple Nagios core servers.  The IP addresses should be separated by a comma if you have more than one.

service nagios-nrpe-server restart
i=$(ifconfig | grep Bcast | awk '{FS=":"; print $2}' | grep -o '[.,0-9]*')
echo "Go back to the Nagios core server to monitor $i."
h=$(hostname)
echo "Also know that the hostname of this server to get the NRPE agent is $h"

#4 (Done from Nagios core server)  vi /usr/local/nagios/etc/servers/contint.cfg
The content below is what you'll need for this contint.cfg file.  You just have to change three parts:

i) Replace y.y.y.y with the IP address printed at the end of the script of #3 (the internal IP address of the Ubuntu server that will be monitored).

ii) Replace the "contint" in every spot below with the hostname found in step #3.

# Ubuntu Host configuration file.  (Largely taken from https://www.howtoforge.com/tutorial/ubuntu-nagios/)

define host {
        use                          linux-server
        host_name                    contint
        alias                                contint
        address                      y.y.y.y
        register                     1
}

define service {
      host_name                       contint
      service_description             PING
      check_command                   check_ping!100.0,20%!500.0,60%
      max_check_attempts              2
      check_interval                  2
      retry_interval                  2
      check_period                    24x7
      check_freshness                 1
      contact_groups                  admins
      notification_interval           2
      notification_period             24x7
      notifications_enabled           1
      register                        1
}

define service {
      host_name                       contint
      service_description             Check Users
      check_command           check_local_users!20!50
      max_check_attempts              2
      check_interval                  2
      retry_interval                  2
      check_period                    24x7
      check_freshness                 1
      contact_groups                  admins
      notification_interval           2
      notification_period             24x7
      notifications_enabled           1
      register                        1
}

define service {
      host_name                       contint
      service_description             Local Disk
      check_command                   check_local_disk!20%!10%!/
      max_check_attempts              2
      check_interval                  2
      retry_interval                  2
      check_period                    24x7
      check_freshness                 1
      contact_groups                  admins
      notification_interval           2
      notification_period             24x7
      notifications_enabled           1
      register                        1
}

define service {
      host_name                       contint
      service_description             Check SSH
      check_command                   check_ssh
      max_check_attempts              2
      check_interval                  2
      retry_interval                  2
      check_period                    24x7
      check_freshness                 1
      contact_groups                  admins
      notification_interval           2
      notification_period             24x7
      notifications_enabled           1
      register                        1
}

define service {
      host_name                       contint
      service_description             Total Process
      check_command                   check_local_procs!250!400!RSZDT
      max_check_attempts              2
      check_interval                  2
      retry_interval                  2
      check_period                    24x7
      check_freshness                 1
      contact_groups                  admins
      notification_interval           2
      notification_period             24x7
      notifications_enabled           1
      register                        1
}

#5 (Done from Nagios core server) 
Run this command:
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

If an error is found in the output, correct the problem.  If zero errors are found, proceed to step #6.

#6  (Done from Nagios client; the server destined to have the NRPE agent.) 
Run this command:
sudo service nagios-nrpe-server restart

#7  (Done from Nagios core server) 
Run these commands:
sudo service apache2 restart
sudo service nagios restart

#8 Open a web browser, go to this address (where x.x.x.x is either the external IP address or the FQDN of the Nagios server):

http://x.x.x.x/nagios

You will be challenged for credentials via a pop-up. For the username, use "nagiosadmin" with no quotes. For the password, enter the password you entered when it was installing.

How Do You Install Nagios on Ubuntu Step-By-Step?

Problem scenario
You have a small AWS server (e.g., t2.nano with 0.5 GB of RAM) running Ubuntu.  How do you install Nagios on it?

Solution
1. As root or a sudoer user, run a script with the following content (sudo bash /tmp/install.sh):

# Written by continualintegration.com
​#This script installs Nagios.  There is some interactive portion at the beginning.  
# But it should be easy to install Nagios using the following.
# read in password for nagiosadmin
echo "Ensure you have a security group rule to allow inbound connections over port 80 from the IP address of the desktop that will access Nagios.  You can do this when the script is running."
echo "********************************"
echo "Next..."
echo "Please enter the email address that will be sent a message when Nagios sends an alert and press Enter: "
read youremail
echo "********************************"
echo "Next..."
echo "Please enter the password for nagiosadmin.  Remember that this password will sent be over the internet.  It will pass over plaintext if you follow this script.  This script is for educational and/or testing purposes.  It is advisable to use SSL for your Nagios instance (and its authentication).  The nagiosadmin user is an interactive user that logs in via a web browser.
***  Enter any password you want and press enter:"
read -s npass

apt-get update
apt-get -y install wget build-essential apache2 php apache2-mod-php7.0 php-gd libgd-dev sendmail unzip

useradd nagios
groupadd nagcmd
usermod -a -G nagcmd nagios
usermod -a -G nagios,nagcmd www-data
cd /opt
wget https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.3.1.tar.gz
tar -xzf nagios*.tar.gz
cd nagios-4.3.1
./configure --with-nagios-group=nagios --with-command-group=nagcmd
make all
make install
make install-commandmode
make install-init
make install-config
/usr/bin/install -c -m 644 sample-config/httpd.conf /etc/apache2/sites-available/nagios.conf
cp -R contrib/eventhandlers/ /usr/local/nagios/libexec/
chown -R nagios:nagios /usr/local/nagios/libexec/eventhandlers
cd /opt
wget https://nagios-plugins.org/download/nagios-plugins-2.2.1.tar.gz
tar -xzf nagios-plugins*.tar.gz
cd nagios-plugins-2.2.1
./configure --with-nagios-user=nagios --with-nagios-group=nagios --with-openssl
make
make install
cd /usr/local/nagios/etc/
cp nagios.cfg nagios.cfg.bak
perl -i -pe 's/.*/cfg_dir=\/usr\/local\/nagios\/etc\/servers/ if $.==51' nagios.cfg
mkdir -p /usr/local/nagios/etc/servers

sed -i -e 's/nagios@localhost/$youremail/g' /usr/local/nagios/etc/objects/contacts.cfg
a2enmod rewrite
a2enmod cgi
htpasswd -b -c /usr/local/nagios/etc/htpasswd.users nagiosadmin $npass
ln -s /etc/apache2/sites-available/nagios.conf /etc/apache2/sites-enabled/

#service apache2 restart # we leave this commented out purely as a reference
telinit u # this is plan b
systemctl enable /run/systemd/generator.late/nagios.service
service nagios start
echo 'run sudo service apache2 restart'

2. Verify the installation with this command: sudo /usr/local/nagios/bin/nagios --version

3. Open a web browser, go to this address (where x.x.x.x is either the external IP address or the FQDN of the Nagios server):

http://x.x.x.x/nagios

You will be challenged for credentials via a pop-up. For the username, use "nagiosadmin" with no quotes. For the password, enter the password you entered when it was installing.

How Do You Troubleshoot This Error “javac: command not found”?

Problem scenario
You have Java installed. The "java -version" command returns data showing that Java was been installed correctly.  You try to use the javac command to compile a .java file.  You get this error:

-bash: javac: command not found

How do you compile your Java code when javac is not recognized?

Solution
As root, run this command:

apt-get install -y openjdk-7-jdk

You may or may not encounter errors.  These errors may be ignorable.

How Do You Change the MAC Address of Your Wireless Network Adapter on a Windows 7 Machine?

Problem scenario
You want to change the MAC address of your wireless network adapter (e.g., you want a WiFi network to see your laptop as a different or new machine).  How do you do this?

Solution
1.  Go to Control Panel -> Network and Internet

2.  Go to "Network and Sharing Center"

3.  Click on "Change adapter settings"

4.  Right-click on "Wireless Network Connection" and go to "Properties"

5.  Below and to the right of the "Networking" tab click the "Configure" button

6.   Click the "Advanced" tab

7.  Under "Property" click on "Locally Administered MAC Address"

8.  Check the radio button under "Value" if it is not checked. 

9.  Enter a new hexadecimal value (i.e., using numbers and letters from A through F).  

10.  Click "Ok."

How Do You Troubleshoot This Error with a PostgreSQL Front End Application “Connection refused … Is the server running on host “x.x.x.x” and accepting TCP/IP connections on port 5432″?

Problem scenario
With a SQL front end (e.g., pgAdmin or HeidiSQL) you get this error "could not connect to server: Connection refused 0x0000274D/10061) Is the server running on host "x.x.x.x" and accepting TCP/IP connections on port 5432?

You double checked you are trying to connect to the correct IP address (x.x.x.x).  You know port 5432 is not blocked.  You know the postgres service is listening on port 5432 on the destination server. How do you fix this problem?

Solution
With Postgres version 9 on Ubuntu 16.x, the "postmaster" service does not need to be running.  One of these below may solve the problem by itself.

Possible solution #1  Go to the server with Postgres.  Find the postgresql.conf file (e.g., with this find / -name postgresql.conf).  Find the listen_addresses stanza.  Make sure the server's own IP address is listed next to the "localhost," text separated by a space.  A common mistake is to have the IP address of a Postgres client.  The Postgres server's IP address is the one that is needed.  Here is how it should look where x.x.x.x is the IP address of the PostgreSQL server:

listen_addresses = 'localhost, x.x.x.x'      # Replace x.x.x.x with the IP address of the Postgres server.

Possible solution #2  Go to the /etc/hosts file.  Make sure that one IP address to DNS name maps "localhost" to the server's IP address.

Possible solution #3  Make sure that postgresql.conf file does not have this stanza:

tcpip_socket = true

It used to be necessary.  This stanza will now cause this "connection refused" error.  Remove this stanza if it is there.

Comprehending Being Sued for Online Postings (e.g., Frivolous Libel Lawsuits)

Worried about being sued for something you posted online?  You may need to educate yourself about the risks.

American citizens may want to understand the context of online defamation by buying Be Careful Who You SLAPP by Delfino and Day.  To learn about strategic lawsuits designed to silence people in the USA, there is no better book than SLAPPs: Being Sued for Speaking Out by Rock Pring.  For British citizens or those interested with English law, you may want to buy a copy of The Law of Defamation and the Internet.  It is best to be prepared!

To learn more about the law in general, we recommend a Nolo book.