How to use Zabbix Plugin

This document explains how Tacker VNFM’s Zabbix-plugin works with Zabbix monitoring tool to provide application monitoring for VNF.

VNF application monitoring requires three pre-installation or configuration settings. You do not have to do a lot of work or complex settings.

  1. Zabbix-agent Installation and Setting in VNF.

Zabbix-Agent must be installed in the VNF. And you need to set it up. The necessary settings must be made in /etc/zabbix/zabbix_agentd.conf in the VNF. Installation and The setting method is as follows.

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install zabbix-agent
sudo echo 'zabbix ALL=NOPASSWD: ALL' >> /etc/sudoers

Then open the /etc/zabbix/zabbix_agentd.conf file and write for Server, ServerActive Hostname, EnableRemoteCommands. However, this approach is more difficult to manage as the number of VNFs increases.

Therefore, to solve this problem, the method presented in this document are as follows. After creating the VNF based on the TOSCA template, the USER_DATA parameter is executed on the assumption that the VNF is initialized. We can install and make the necessary settings automatically. Here is an example of a User-data script.

user_data: |
#!/bin/bash
sudo apt-get -y update
sudo apt-get -y upgrade
sudo apt-get -y install zabbix-agent
sudo sed -i "2s/.*/`ifconfig [Interface name in VNF] | grep ""\"inet addr:\"""| cut -d: -f2 | awk ""\"{ print $1 }\"""`/g" "/etc/hosts"
sudo sed -i "s/Bcast/`cat /etc/hostname`/g" "/etc/hosts"
sudo sed -i "3s/.*/[Zabbix Host IP Address]\tmonitor/g" "/etc/hosts"
sudo /etc/init.d/networking restart
sudo echo 'zabbix ALL=NOPASSWD: ALL' >> /etc/sudoers
sudo sed -i "s/# EnableRemoteCommands=0/EnableRemoteCommands=1/" "/etc/zabbix/zabbix_agentd.conf"
sudo sed -i "s/Server=127.0.0.1/Server=[Zabbix server's IP Address]/" "/etc/zabbix/zabbix_agentd.conf"
sudo sed -i "s/ServerActive=127.0.0.1/ServerActive=[Zabbix server's IP Address:Port]/" "/etc/zabbix/zabbix_agentd.conf"
sudo sed -i "s/Hostname=Zabbix server/Hostname=`cat /etc/hostname`/" "/etc/zabbix/zabbix_agentd.conf"
sudo service zabbix-agent restart

Use the sed command to modify the information in the conf file. The basic network interface finds the IP address for ens3, sets it, and sets the hostname. The zabbix user also needs permissions to run the monitoring script. EnablRemoteCommands can be set to 1 to enable execution of action commands created by Zabbix-Server.

  1. Installing Zabbix Server

Because Zabbix Server requires a lot of processes for monitoring projects, it is recommended to build it as a separate physical node if performance stability is required. Installation instructions for Zabbix Server are detailed in the manual provided by Zabbix (see [1]). Examples of installation procedures are based on Ubuntu16.04 and zabbix 3.2.

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install php7.0* libapache2-mod-php7.0
sudo wget http://repo.zabbix.com/zabbix/3.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.2-1+xenial_all.deb
sudo dpkg -i zabbix-release_3.2-1+xenial_all.deb
sudo apt-get install zabbix-server-mysql zabbix-frontend-php

Install mysql to store Zabbix-server and monitoring data and necessary information, and install Zabbix-frotend-php to provide web pages. Database creation is as follows.

shell> mysql -uroot -p[ROOT_PASSWORD]
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by '[PASSWORD]';
FLUSH PRIVILEGES;
mysql> quit;
cd /usr/share/doc/zabbix-server-mysql
zcat create.sql.gz | mysql -u root -p zabbix

We must modify the vi /etc/zabbix/zabbix_server.conf file to provide the Zabbix-server.

DBHost=localhost
DBName=[DBName]
DBUser=[DBUser]
DBPassword=[PASSWORD]

At the end of the next operation, we are now ready to use the Zabbix-server to complete the finish operation.

service zabbix-server start
update-rc.d zabbix-server enable
vi /etc/zabbix/apache.conf
=>php_value date.timezone [location/city]
service zabbix-server restart
service apache2 restart

This installation method is based on manual, but it includes additional explanation and installation part of dependency file installation.

  1. Template

The following templates are used for application monitoring. If we create a VNFD by creating the template below and use it to create a VNF, we can monitor the application without any additional steps. If we want automatic configuration, it is recommended to use USER_DATA parameter.

If we enter Zabbix-related information in the template, you will get a Token according to the internal workflow of Zabbix-plugin. It it used to configure varitous monitoring functions.

app_monitoring_policy:
  name: zabbix
  zabbix_username: [Zabbix user ID]
  zabbix_password: [Zabbix user Password]
  zabbix_server_ip: [Zabbix server IP]
  zabbix_server_port: [Zabbix server Port]
  parameters:
    application:
      app_name: [application-name]
      app_port: [application-port]
      ssh_username: [ssh username in VNF OS]
      ssh_password: [ssh password in VNF OS]
      app_status:
        condition: [comparison,value]
        actionname: [action name]
        cmd-action: [Command to be executed in VNF]
      app_memory:
        condition: [comparison,value]
        actionname: [action name]
        cmd-action: [Command to be executed in VNF]
    OS:
      os_agent_info:
        condition: [comparison,value]
        actionname: [action name]
        cmd-action: [Command to be executed in VNF]
      os_proc_value:
        condition: [comparison,value]
        actionname: [action name]
        cmd-action: [Command to be executed in VNF]
      os_cpu_load:
        condition: [comparison,value]
        actionname: [action name]
        cmd-action: [Command to be executed in VNF]
      os_cpu_usage:
        condition: [comparison,value]
        actionname: [action name]
        cmd-action: [Command to be executed in VNF]

4. Actions Currently, only cmd is supported as an action function. Respawn and Scale Action will be updated with additional proposals and corresponding functionality as more template definitions and corresponding additional functions are required.