To monitor MySQL on an Ubuntu server where an Icinga agent is installed, you’ll need to configure both the agent and the Icinga server to handle the monitoring tasks. Here’s a detailed step-by-step guide:
Step 1: Install MySQL Monitoring Plugins
On the Icinga Agent Server: Install the nagios-plugins package, which includes the check for MySQL. Execute:
sudo apt-get update
sudo apt-get install monitoring-plugins
Code language: JavaScript (javascript)
Install mySql Server
Step 2: Configure MySQL for Monitoring
Create a MySQL User for Monitoring:
Log into your MySQL server:
mysql -u root -p
Create a user specifically for monitoring purposes:
CREATE USER 'icinga'@'localhost' IDENTIFIED BY 'yourpassword';
GRANT PROCESS, REPLICATION CLIENT ON *.* TO 'icinga'@'localhost';
FLUSH PRIVILEGES;
EXIT;Code language: PHP (php)
Step 3: Configure Icinga Agent
Add MySQL Check Command to Icinga Agent:
Edit or create a new command configuration file:
sudo nano /etc/icinga2/conf.d/commands.conf
Add the MySQL check command:
object CheckCommand "check_mysql" {
import "plugin-check-command"
command = [ PluginDir + "/check_mysql" ]
arguments = {
"-H" = {
value = "$mysql_address$"
description = "IP address or hostname of the MySQL server"
}
"-u" = {
value = "$mysql_user$"
description = "Username for MySQL login"
}
"-p" = {
value = "$mysql_password$"
description = "Password for MySQL login"
}
}
}Code language: JavaScript (javascript)
Step 4: Configure Icinga Server
Define Host Object:
Define or ensure that the host object for your MySQL server exists in your Icinga configuration:
object Host "mysql-server" {
import "generic-host"
address = "mysql-agent-ip" // Replace with the actual IP address of your MySQL server
check_command = "hostalive"
}
Define Service for MySQL Monitoring:
Create a service definition to check MySQL:
apply Service "mysql-service" {
import "generic-service"
check_command = "check_mysql"
vars.mysql_address = "localhost"
vars.mysql_user = "icinga"
vars.mysql_password = "yourpassword"
assign where host.name == "mysql-server"
}
Reload Icinga 2:
After making these changes, reload Icinga 2 to apply them:
sudo systemctl reload icinga2Code language: JavaScript (javascript)
Step 5: Verify the Configuration
- Icinga Web 2: Log into Icinga Web 2 and navigate to the ‘Services’ section. Check if the new service for monitoring MySQL is displayed and showing correct status information.
- Troubleshooting:
- If the service shows errors, check the Icinga 2 logs for any detailed error messages (
/var/log/icinga2/icinga2.log). - Ensure that the MySQL user permissions and network connections between the Icinga agent and server are correctly configured.
- If the service shows errors, check the Icinga 2 logs for any detailed error messages (
I’m Rajesh Kumar, a DevOps, SRE, DevSecOps, Cloud, and Platform Engineering expert passionate about sharing practical knowledge, real-world experiences, and industry best practices. I have worked at Cotocus and regularly write about technology, travel, investing, health, product reviews, and digital marketing through my various platforms.
I publish technical articles at DevOps School, travel stories at Holiday Landmark, stock market insights at Stocks Mantra, health and fitness guidance at My Medic Plus, product reviews at TrueReviewNow, and SEO and digital marketing strategies at Wizbrand.
Find Trusted Cardiac Hospitals
Compare heart hospitals by city and services — all in one place.
Explore Hospitals