Zabbix is an open source software for monitoring the network services, servers and other network devices, created by Alexei Vladishev. Zabbix backend written in C and uses PHP for the front end, supports MySQL, PostgreSQL, SQLite, Oracle or IBM DB2 databases.
Features
- It can verify the availability of the standard services such as SMTP or HTTP with out installing any software on the remote host.
- It can also monitor CPU, Memory, Disk and other resources on Windows or Unix hosts by installing Zabbix client on it.
- It also offers support for monitoring via SNMP, TCP, and ICMP.
- It supports real-time notifications
This guide will help you to setup the Zabbix on Ubuntu 14.04
Prerequisites
Install the latest release packages, and this contains the repository configuration.
sudo wget http://repo.zabbix.com/zabbix/2.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_2.2-1+trusty_all.deb sudo dpkg -i zabbix-release_2.2-1+trusty_all.deb sudo apt-get update
Install Zabbix
Install the following packages. This will install the Zabbix server and web with MySQL.
sudo apt-get install zabbix-server-mysql zabbix-frontend-php
Configure Database
Previous command itself invoke the MySQL and Zabbix database configuration. If you already have the MySQL configured on the server, please skip the first two steps.
Step 1: Configure the root password for MySQL.
Step 2: Confirm the root password.
Step 3: Next screen, it will ask you to configure the database for the Zabbix, you either accept or cancel it. Here i chose yes for automatic database configuration.
Step 4: Enter the password for the database user “zabbix” (zabbix user will be created by the installer), this password has been entered while setting up Zabbix.
Step 5: Confirm the password for the database user.
The following troubleshooting section is only applicable to those who facing 404 not found error while accessing Zabbix setup URL.
Troubleshooting
After configuring the database, when I tried to access the Zabbix setup URL (http://your-ip-address/zabbix). I got 404 not found page, after a lot of google search; found nothing. Later I decided to check the files created by the package, in last I found apache.conf file in /etc/zabbix.
Copy the apache.conf file to apache2 directory
sudo cp /etc/zabbix/apache.conf /etc/apache2/sites-enabled/zabbix.conf
Edit copied the file to setup the timezone.
sudo vi /etc/apache2/sites-enabled/zabbix.conf # php_value date.timezone Europe/Riga
Change the date.timezone according to your time zone.
Restart the apache2 service.
sudo /etc/init.d/apache2 restart
After performing the above steps, I was able to access the URL without any issue.
Setup Zabbix
Visit the following URL to start setting up the Zabbix http://your-ip-address/zabbix. Click Next to continue.
Zabbix setup will check the prerequisites, will give you the status like below.
Enter the database information.
Zabbix Setup – Database information
Configure the server information.
Zabbix Setup – Server information
Check out the installation summary.
Finish the setup.
Access Zabbix
Login with default credential (Admin/zabbix)
This how the Zabbix dashboard will look like.
That’s All.
Too bad you don’t explain how to setup the correct timezone in PHP to avoid red warning in the initial Zabbix setup though the web. In case anyone needs it: /etc/apache2/conf.d/zabbix
Shame, this howto miss a lot of data on mysql configuration. Better Google for another one…
Hi babak,
You do not require to import any schema or configure mysql for the Zabbix installation. This tested and verified.
It is mentioned on tutorial, please check.
this tutorial worked perfectly, including the mysql and apache stuff 🙂 thank you
Hey Raj, thank you for writing this article.
I will now try your instructions on my Ubuntu server.
Something that I am trying to figure it out is whether and how can Zabbix be configured to send SMS alerts.
Do you know something about this?
I have this message on the web page please help me
array(T_ZBX_STR, O_NO, null, NOT_EMPTY, ‘isset({enter})’, _(‘Username’)),
‘password’ => array(T_ZBX_STR, O_OPT, null, null, ‘isset({enter})’),
‘sessionid’ => array(T_ZBX_STR, O_OPT, null, null, null),
‘reconnect’ => array(T_ZBX_INT, O_OPT, P_SYS|P_ACT, BETWEEN(0, 65535), null),
‘enter’ => array(T_ZBX_STR, O_OPT, P_SYS, null, null),
‘autologin’ => array(T_ZBX_INT, O_OPT, null, null, null),
‘request’ => array(T_ZBX_STR, O_OPT, null, null, null)
);
check_fields($fields);
// logout
if (isset($_REQUEST[‘reconnect’])) {
DBstart();
add_audit_details(AUDIT_ACTION_LOGOUT, AUDIT_RESOURCE_USER, CWebUser::$data[‘userid’], ”, _(‘Manual Logout’),
CWebUser::$data[‘userid’]
);
DBend(true);
CWebUser::logout();
redirect(‘index.php’);
}
$config = select_config();
if ($config[‘authentication_type’] == ZBX_AUTH_HTTP) {
if (!empty($_SERVER[‘PHP_AUTH_USER’])) {
$_REQUEST[‘enter’] = _(‘Sign in’);
$_REQUEST[‘name’] = $_SERVER[‘PHP_AUTH_USER’];
}
else {
access_deny(ACCESS_DENY_PAGE);
}
}
// login via form
if (isset($_REQUEST[‘enter’]) && $_REQUEST[‘enter’] == _(‘Sign in’)) {
// try to login
$autoLogin = getRequest(‘autologin’, 0);
DBstart();
$loginSuccess = CWebUser::login(getRequest(‘name’, ”), getRequest(‘password’, ”));
DBend(true);
if ($loginSuccess) {
// save remember login preference
$user = array(‘autologin’ => $autoLogin);
if (CWebUser::$data[‘autologin’] != $autoLogin) {
API::User()->updateProfile($user);
}
$request = getRequest(‘request’);
$url = zbx_empty($request) ? CWebUser::$data[‘url’] : $request;
if (zbx_empty($url) || $url == $page[‘file’]) {
$url = ‘dashboard.php’;
}
redirect($url);
exit;
}
// login failed, fall back to a guest account
else {
CWebUser::checkAuthentication(null);
}
}
else {
// login the user from the session, if the session id is empty – login as a guest
CWebUser::checkAuthentication(CWebUser::getSessionCookie());
}
// the user is not logged in, display the login form
if (!CWebUser::$data[‘alias’] || CWebUser::$data[‘alias’] == ZBX_GUEST_USER) {
switch ($config[‘authentication_type’]) {
case ZBX_AUTH_HTTP:
echo _(‘User name does not match with DB’);
break;
case ZBX_AUTH_LDAP:
case ZBX_AUTH_INTERNAL:
if (isset($_REQUEST[‘enter’])) {
$_REQUEST[‘autologin’] = getRequest(‘autologin’, 0);
}
if ($messages = clear_messages()) {
$messages = array_pop($messages);
$_REQUEST[‘message’] = $messages[‘message’];
}
$loginForm = new CView(‘general.login’);
$loginForm->render();
}
}
else {
redirect(zbx_empty(CWebUser::$data[‘url’]) ? ‘dashboard.php’ : CWebUser::$data[‘url’]);
}