Zabbix can be a tough cookie to crack!! And if you are planning to monitor Openstack using Zabbix, there is lot of additional work to be done .More so, if you want to go the agentless way, ie using SNMP
So, here we go.I am using Ubuntu 12.04 OS, both for my Zabbix server as well as openstack nodes
apt-get install snmpd
apt-get install snmp snmp-mibs-downloader
rocommunity public <Ip of your zabbix server>
proc apache2
proc neutron-server
proc nova-api
PS: the process names will depend on the openstack node. Name all the processes that you want to monitor
Total Swap Size: .1.3.6.1.4.1.2021.4.3.0
Available Swap Space: .1.3.6.1.4.1.2021.4.4.0
Total RAM in machine: .1.3.6.1.4.1.2021.4.5.0
Total RAM used: .1.3.6.1.4.1.2021.4.6.0
Total RAM Free: .1.3.6.1.4.1.2021.4.11.0
Total RAM Shared: .1.3.6.1.4.1.2021.4.13.0
Total RAM Buffered: .1.3.6.1.4.1.2021.4.14.0
Total Cached Memory: .1.3.6.1.4.1.2021.4.15.0
You will be getting an output which will look like this]
UCD-SNMP-MIB::memAvailReal.0 = INTEGER: 2420936 kB
In this case memAvailReal.0 is the value you should be using for SNMP OID value in the next step
UCD-SNMP-MIB::prNames.1 = STRING: mountd
UCD-SNMP-MIB::prNames.2 = STRING: ntalkd
UCD-SNMP-MIB::prNames.3 = STRING: sendmail
UCD-SNMP-MIB::prNames.4 = STRING: /usr/bin/nova-api
UCD-SNMP-MIB::prNames.5 = STRING: apache2
UCD-SNMP-MIB::prNames.6 = STRING: neutron-server
UCD-SNMP-MIB::prNames.7 = STRING: nova-api
......
So, here we go.I am using Ubuntu 12.04 OS, both for my Zabbix server as well as openstack nodes
- First you need to install the following packages using apt-get in the machine being monitored ie the openstack node
apt-get install snmpd
apt-get install snmp snmp-mibs-downloader
- snmpd will be installed by default in your zabbix server, but you need to install the snmp and snmp-mibs-downloader packages as well in the server
- Once that is done, edit the /etc/snmp/snmpd.conf file in your openstack node. Update the following values
rocommunity public <Ip of your zabbix server>
proc apache2
proc neutron-server
proc nova-api
PS: the process names will depend on the openstack node. Name all the processes that you want to monitor
- Create the openstack host in the Zabbix server, select snmp interface during the host creation
- By default zabbix has snmp templates for monitoring disk space , cpu utilization, network interface status and system uptime. You can attach those template to your host
- Inorder to monitor memory of system using SNMP, we can make us eof the following OIDs to create new templates
Total Swap Size: .1.3.6.1.4.1.2021.4.3.0
Available Swap Space: .1.3.6.1.4.1.2021.4.4.0
Total RAM in machine: .1.3.6.1.4.1.2021.4.5.0
Total RAM used: .1.3.6.1.4.1.2021.4.6.0
Total RAM Free: .1.3.6.1.4.1.2021.4.11.0
Total RAM Shared: .1.3.6.1.4.1.2021.4.13.0
Total RAM Buffered: .1.3.6.1.4.1.2021.4.14.0
Total Cached Memory: .1.3.6.1.4.1.2021.4.15.0
- For eg, if you want to monitor the total RAM used, first execute the following command from the zabbix server
You will be getting an output which will look like this]
UCD-SNMP-MIB::memAvailReal.0 = INTEGER: 2420936 kB
In this case memAvailReal.0 is the value you should be using for SNMP OID value in the next step
- You can clone any of the existing SNMP templates, and create new items . You will have to update the 'key' and 'SNMP OID' value in the new item based on the above output. The Key can be any unique value, make sure that the OIDs match the value mentioned in above step
-
In case you want to monitor
a process via snmp, as mentioned earlier, it should be defined on the
machine's snmpd.conf. Now execute the following command from the zabbix
server
snmpwalk
-v 2c -c public <openstack node ip> prTable
- Output should look something like this
UCD-SNMP-MIB::prNames.1 = STRING: mountd
UCD-SNMP-MIB::prNames.2 = STRING: ntalkd
UCD-SNMP-MIB::prNames.3 = STRING: sendmail
UCD-SNMP-MIB::prNames.4 = STRING: /usr/bin/nova-api
UCD-SNMP-MIB::prNames.5 = STRING: apache2
UCD-SNMP-MIB::prNames.6 = STRING: neutron-server
UCD-SNMP-MIB::prNames.7 = STRING: nova-api
......
UCD-SNMP-MIB::prErrorFlag.1 = INTEGER: error(1)
UCD-SNMP-MIB::prErrorFlag.2 = INTEGER: noError(0)
UCD-SNMP-MIB::prErrorFlag.3 = INTEGER: error(1)
UCD-SNMP-MIB::prErrorFlag.4 = INTEGER: error(1)
UCD-SNMP-MIB::prErrorFlag.5 = INTEGER: noError(0)
UCD-SNMP-MIB::prErrorFlag.6 = INTEGER: noError(0)
UCD-SNMP-MIB::prErrorFlag.7 = INTEGER: noError(0)
UCD-SNMP-MIB::prErrorFlag.2 = INTEGER: noError(0)
UCD-SNMP-MIB::prErrorFlag.3 = INTEGER: error(1)
UCD-SNMP-MIB::prErrorFlag.4 = INTEGER: error(1)
UCD-SNMP-MIB::prErrorFlag.5 = INTEGER: noError(0)
UCD-SNMP-MIB::prErrorFlag.6 = INTEGER: noError(0)
UCD-SNMP-MIB::prErrorFlag.7 = INTEGER: noError(0)
Note
the prErrorFlag.n field. We will be using this as SNMP OID in the template
for process monitoring. The logic to be used, as clear from the output above is
that, if the process is up and running the output will be noError(0)
Comments
Post a Comment