You are here
Installation guide for the FromDual Performance Monitor for MariaDB and MySQL
Table of Contents
- What is the FromDual Performance Monitor for MariaDB and MySQL (fpmmm)?
- FromDual Performance Monitor as a Service (MaaS)
- FromDual Performance Monitor prerequisites
- Installation of fpmmm on CentOS / Redhat / Fedora / Rocky Linux AlmaLinux
- Installation of fpmmm on Ubuntu
- Installation of fpmmm on Debian
- Installation of fpmmm from a tarball
- Testing
fpmmm
- Configuration of
fpmmm
- Create a monitoring User in your MariaDB/MySQL database
- Adding the
fpmmm
Templates to Zabbix - Creating Zabbix Host Groups
- Creating Hosts on your Zabbix Server
- Enable the Host for monitoring on Zabbix Server
- Regularly running the
fpmmm
agent - Special requirements for specific modules
- FromDual Performance Monitor User Guide
FromDual Performance Monitor as a Service (MaaS)
Important: If you want to install and use the FromDual Performance Monitor as a Service (MaaS) please check the FromDual Performance Monitor as a Service (MaaS) Installation Guide.
FromDual Performance Monitor prerequisites
For using the FromDual Performance Monitor for MariaDB and MySQL (fpmmm
) you have to meet the following prerequisites:
- A Zabbix Server and the Zabbix Web Interface (v2.0 or newer) must be installed and properly running. The Zabbix Server is only available for Linux/Windows systems. How to install Zabbix Server you can find here under Download and Install Zabbix.
- A Zabbix Agent must be installed and running (v2.0 or newer), ideally on the database machine.
Important: The FromDual Performance Monitor for MariaDB and MySQL was only tested on Linux. It may work on other Unixoides but most probably will NOT work on Windows yet. Please let us know if you plan to runfpmmm
orfpmmm
for MaaS on Windows...
Installation of fpmmm on CentOS / Redhat / Fedora / Rocky Linux AlmaLinux
Adding FromDual RPM repository
Adding the FromDual RPM repository as described here. Then install fpmmm
with the following command:
Installation of fpmmm from FromDual repository on CentOS 9 / Redhat 9 / Rocky Linux 9 / AlmaLinux 9 / Oracle Linux 9
Not tested yet! Please feel free to try with rhel8 package and let us know your results...
Installation of fpmmm from FromDual repository on CentOS 8 / Redhat 8 / Rocky Linux 8 / AlmaLinux 8 / Oracle Linux 8
rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/8/x86_64/zabbix-release-6.0-1.el7.noarch.rpm dnf clean all dnf install fpmmm
Installation of fpmmm from FromDual repository on CentOS 7 / Redhat 7
Important: The CentOS 7 default PHP version is too old (5.4). Fpmmm needs PHP 7.0 and newer. How to achieve this is descried here.
rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-release-6.0-1.el7.noarch.rpm yum clean all yum check-update yum install epel-release yum install fpmmm cat << _EOF >/etc/php.d/fpmmm.ini variables_order = "EGPCS" date.timezone = 'Europe/Zurich' _EOF
Installation of fpmmm on Ubuntu
Adding FromDual Ubuntu DEB repository
Adding the FromDual DEB/APT repository as described here. Then install fpmmm with the following command:
Installation of fpmmm from FromDual repository on Ubuntu
apt install fpmmm
Installation of fpmmm on Debian
Adding FromDual Debian DEB repository
Adding the FromDual DEB/APT repository as described here. Then install fpmmm with the following command:
Installation of fpmmm from FromDual repository on Debian
apt install fpmmm
Installation of fpmmm from a tarball
If you are installing fpmmm
from a tarball some preparation work has to be done before. If you were using DEB or RPM packages directly without a repository the same instructions apply.
The fpmmm
can be downloaded from here.
Then proceed as follows:
cd /download wget --no-check-certificate https://support.fromdual.com/admin/download/fpmmm-2.0.0.tar.gz cd /opt tar xf /download/fpmmm-2.0.0.tar.gz ln -s fpmmm-2.0.0 fpmmm
Then the following packages have to be installed. They may be named differently depending on your distribution: php php-cli php-mysql php-mysqli php-mysqlnd php-process php-posix php-pcntl php-curl zabbix-sender zabbix-agent smartmontools dmidecode sudo epel-release php-pecl-ssh2 php-yaml pigz wget redhat-lsb-core
.
Additionaly you have to set some PHP variables and add smartctl
to the sudoers
file if you want to make use of smartctl
:
PHP_INI='/etc/php.d/20-fpmmm.ini' PHP_INI='/etc/php/7.4/mods-available/fpmmm.ini' PHP_INI='/etc/php/cli/conf.d/fpmmm.ini' PHP_INI='/etc/php/conf.d/fpmmm.ini' PHP_INI='/etc/php.d/fpmmm.ini' cat << _EOF >${PHP_INI} variables_order = "EGPCS" date.timezone = 'Europe/Zurich' _EOF phpenmod fpmmm cat << _EOF >/etc/sudoers.d/fpmmm root ALL=(root) NOPASSWD: /usr/sbin/smartctl _EOF
Testing fpmmm
php --version # Should be at least 7.0 /opt/fpmmm/bin/fpmmm --version /opt/fpmmm/bin/fpmmm --config=/etc/fpmmm.conf 1 cat /var/log/fpmmm/fpmmm.log
Configuration of fpmmm
Copy the Configuration File Template if it is not already at the right location:
cp /opt/fpmmm/tpl/fpmmm.conf.template /etc/fpmmm.conf chown zabbix: /etc/fpmmm.conf chmod 600 /etc/fpmmm.conf
Prepare the fpmmm.conf
according to your needs. A typical Configuration File for the FromDual Performance Monitor looks as follows:
# Put everything related to fpmmm agent/daemon itself into this section [self] # How long fpmmm should sleep when run as daemon Interval = 60 MyPidFile = /run/lock/fpmmm/fpmmm.pid # Put everything in here which belongs to all instances/machines [default] # Type of section: # instance for a normal MariaDB/MySQL database # machine for a server # Type = instance # LogLevels are: # 1 is logging only errors # 2 is logging errors and warnings (this is the default) # 3 logs some informations messages as well # 4 logs everything (for debugging purposes only) LogLevel = 2 LogFile = /var/log/fpmmm/fpmmm.log # Directory where the cache files should be written to: CacheFileBase = /var/cache/fpmmm/fpmmm # Currently supported formats are zabbix, nagios, icinga, centreon and snmp, default is zabbix # OutputFormat = zabbix AgentLockFile = /run/lock/fpmmm/fpmmm.lock # If you agent is not located in the same time zone as your server # For US something like -6.0 to our MaaS Server # For Asia something like +7.0 to our MaaS Server # TimeShift = +0.0 TimeZone = Europe/Zurich # Zabbix Server IP address ZabbixServer = 192.168.1.42 # Can be one of: minimal, nomal, extensive DataGathering = normal # Here you could enter the hostname of your machine (uname -n) [my_machine] # This MUST match Hostname in Zabbix! Type = machine Modules = fpmmm server smart # All MySQL databases here # Try to avoid section names with spaces! # Here you could add a random name of your MySQL/MariaDB instance [my_mysqld] # This MUST match Hostname in Zabbix! Type = instance Username = fpmmm_agent Password = secret MysqlHost = 127.0.0.1 MysqlPort = 3306 MysqlPort = 3306 Modules = process mysql myisam innodb master slave security data user DbPidFile = /var/run/mysqld/mysqld.pid
There is typically a default section ([default]
) where you can specify all the defaults for all the hosts to monitor (machines and database instances).
For every database instance you want to monitor you have to add an extra section. This allows you to monitor several MariaDB/MySQL databases running on the same machine.
Important: The section name MUST match the Hostname which you have entered in the Zabbix Server!!!
Create a Monitoring User in your MariaDB/MySQL instance
For security reason it is a good idea to NOT work with the database user root
or mysql
. This user needs some preveleges to gather information from the database:
SQL> CREATE USER 'fpmmm_agent'@'127.0.0.1' IDENTIFIED BY 'secret'; SQL> GRANT PROCESS ON *.* TO 'fpmmm_agent'@'127.0.0.1'; SQL> GRANT REPLICATION CLIENT ON *.* TO 'fpmmm_agent'@'127.0.0.1'; SQL> GRANT SELECT ON `mysql`.`user` TO 'fpmmm_agent'@'127.0.0.1'; SQL> GRANT REPLICATION SLAVE ON *.* TO 'fpmmm_agent'@'127.0.0.1'; SQL> GRANT SELECT ON performance_schema.events_statements_summary_by_user_by_event_name TO fpmmm_agent@'127.0.0.1'; SQL> GRANT SELECT ON performance_schema.events_statements_current TO fpmmm_agent@'127.0.0.1'; SQL> GRANT SELECT ON performance_schema.setup_instruments TO fpmmm_agent@'127.0.0.1'; SQL> -- Does not work on MariaDB 10.3 (Rocky Linux 8 / Oracle Linux 8) SQL> GRANT SELECT ON performance_schema.metadata_locks TO fpmmm_agent@'127.0.0.1'; SQL> GRANT SELECT ON performance_schema.threads TO fpmmm_agent@'127.0.0.1'; SQL> -- For the security module SQL> GRANT SELECT ON mysql.user TO 'fpmmm_agent'@'127.0.0.1'; SQL> -- MariaDB only SQL> INSTALL PLUGIN metadata_lock_info SONAME 'metadata_lock_info.so'; SQL> -- MariaDB 10.5 and newer SQL> GRANT SELECT ON mysql.global_priv TO fpmmm_agent@'127.0.0.1'; SQL> GRANT REPLICATION MASTER ADMIN ON *.* TO 'fpmmm_agent'@'127.0.0.1'; SQL> GRANT SLAVE MONITOR ON *.* TO 'fpmmm_agent'@'127.0.0.1';
Adding the fpmmm
Temlates to Zabbix
Choose the templates you need. The template fpmmm is mandatory. All other templates are optional but you have to load them if you want to monitor some specific storage engines or features.
If you do not want to think about install ALL templates. A typical good choice of templates for the machine (host) is: fpmmm
and server
and for the a normal MariaDB/MySQL database itself: process
, mysql
, myisam
and innodb
.
If you have a Master/Slave Replication running you should add also the Master
and the Slave
templates.
Load the Templates (tpl/templates_*/*.xml
) into the Zabbix Monitor (leave all the checkboxes as they are): Configuration → Templates → Import → Select the module → Import.
There should not be any conflict with other rules because a different name space was used for the FromDual modules.
Creating Zabbix Host Groups
We found, that it is a good idea to create a separate Host Group for your MariaDB/MySQL databases. But you are free to have even a more granular separation or to have just one Host Group.
We miss-use these Host Groups for separating our Databases and our Machines. So the name could be a bit miss-leading how we used it for our purposes. We do not only monitor Hosts but also Databases/Instances.
Adding a Zabbix Host Group:
Configuration → Host Groups → Create host group → then enter a group name for example as follows: Database Server and MariaDB/MySQL
Creating Hosts on your Zabbix Server
A Host in Zabbix terminology is a device you want to monitor. This can be either a Machine or a MariaDB/MySQL Database Instance (mysqld
) or something else.
For every Database Instance you want to monitor you have to create 2 Hosts, one for the Machine and one for the Database Instance: Configuration → Hosts → Creating host
.
Then enter a UNIQUE Name for this Host (= machine or database). Be very careful with choosing the Name (in other places also called Hostname). The Name is the identifier for authenticating the Zabbix Agent to the Zabbix Server and is the marker where the data are stored. If the names do not match, the data cannot be sent!
Make sure that Host name matches exactly the hostname specified in fpmmm.conf
(my_machine
and my_mysqld
).
Add this Host to the right Group, add the IP address and Link at least the Template tpl/templates_*/Template_FromDual.MySQL.fpmmm
from the Templates tab to the machine host (my_machine
) (and possibly some others you have chosen above) and the other templates to the Database Host (my_mysqld
). Then save the changes.
Example for the Server:
...Example for the Database:
...Then check again if your fpmmm
data reaches your Zabbix Server: Monitoring → Latest data → fpmmm
and check the time stamp of Last check for example.
Enable the Host for monitoring on Zabbix Server
When you have done all the steps above you can enable the monitored Database Server by clicking on its Not monitored status. In the availability you should see if a certain host is monitored and if not why...
The most common reasons why an agent is not monitored are:
- Hostname on Zabbix Server and Section in FromDual Performance Monitor Agent configuration file do NOT match.
- Agent is down or not reachable (firewall, etc.).
To see if data is sent and what the actual values are you can go to:
Monitoring → Latest data → then filter by group and host:
Regularly running the fpmmm
Agent
There are 2 different possibilities to run fpmmm
regularly.
First by the Zabbix Agent:
Put the following line either into its own file (/etc/zabbix/conf.d/fpmmm.conf
) or add it to the Zabbix Agent configuartion file (/etc/zabbix/zabbix_agentd.conf
).
# # /etc/zabbix/zabbix_agentd.conf # UserParameter=FromDual.MySQL.check,/opt/fpmmm/bin/fpmmm --config=/etc/fpmmm.conf
Restart the Zabbix agent afterwards: systemctl restart zabbix-agentd
.
or second by the crontab
:
* * * * * /opt/fpmmm/bin/fpmmm --config=/etc/fpmmm.conf >/dev/null
Special requirements for specific modules
Special requirements for the DRBD module
If the FromDual Performance Monitor Agent is running under a different user than root
not all information will be displayed correctly because of missing privileges.
You either have to run the FromDual Performance Monitor Agent under root
(security!) or grant the appropriate rights to the user the Agent is running.
For more information look also into our Forum or our Bug database.
Please let us know if there are some errors in this FromDual Performance Monitor Installation Guide or if something is not described clear enough!