{"id":46258,"date":"2024-05-15T01:54:18","date_gmt":"2024-05-15T01:54:18","guid":{"rendered":"https:\/\/www.devopsschool.com\/blog\/?p=46258"},"modified":"2024-05-29T03:05:09","modified_gmt":"2024-05-29T03:05:09","slug":"icinga-tutorials-how-to-monitor-mysql-server-using-icinga-agent","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/icinga-tutorials-how-to-monitor-mysql-server-using-icinga-agent\/","title":{"rendered":"icinga tutorials: How to monitor Mysql server using icinga agent"},"content":{"rendered":"\n<p>To monitor MySQL on an Ubuntu server where an Icinga agent is installed, you&#8217;ll need to configure both the agent and the Icinga server to handle the monitoring tasks. Here&#8217;s a detailed step-by-step guide:<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 1: Install MySQL Monitoring Plugins<\/h2>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">On the Icinga Agent Server: Install the nagios-plugins package, which includes the check <span class=\"hljs-keyword\">for<\/span> MySQL. Execute:\n\nsudo apt-<span class=\"hljs-keyword\">get<\/span> update\nsudo apt-<span class=\"hljs-keyword\">get<\/span> install monitoring-plugins\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Install mySql Server<\/h2>\n\n\n\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-devopsschool-com wp-block-embed-devopsschool-com\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"iKIRjIFEw3\"><a href=\"https:\/\/www.devopsschool.com\/blog\/how-to-install-mysql-server-and-client-on-ubuntu\/\">How To Install MySQL server and client on Ubuntu?<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"&#8220;How To Install MySQL server and client on Ubuntu?&#8221; &#8212; DevOpsSchool.com\" src=\"https:\/\/www.devopsschool.com\/blog\/how-to-install-mysql-server-and-client-on-ubuntu\/embed\/#?secret=3MiW9JTaKD#?secret=iKIRjIFEw3\" data-secret=\"iKIRjIFEw3\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Step 2: Configure MySQL for Monitoring<\/h2>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">Create a MySQL User <span class=\"hljs-keyword\">for<\/span> Monitoring:\nLog into your MySQL server:\n\nmysql -u root -p\n\nCreate a user specifically <span class=\"hljs-keyword\">for<\/span> monitoring purposes:\n\nCREATE USER <span class=\"hljs-string\">'icinga'<\/span>@<span class=\"hljs-string\">'localhost'<\/span> IDENTIFIED BY <span class=\"hljs-string\">'yourpassword'<\/span>;\nGRANT PROCESS, REPLICATION CLIENT ON *.* TO <span class=\"hljs-string\">'icinga'<\/span>@<span class=\"hljs-string\">'localhost'<\/span>;\nFLUSH PRIVILEGES;\n<span class=\"hljs-keyword\">EXIT<\/span>;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Step 3: Configure Icinga Agent<\/h2>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">Add MySQL Check Command to Icinga Agent:\nEdit or create a <span class=\"hljs-keyword\">new<\/span> command configuration file:\n\nsudo nano \/etc\/icinga2\/conf.d\/commands.conf\n\nAdd the MySQL check command:\n\nobject CheckCommand <span class=\"hljs-string\">\"check_mysql\"<\/span> {\n    <span class=\"hljs-keyword\">import<\/span> <span class=\"hljs-string\">\"plugin-check-command\"<\/span>\n    command = &#91; PluginDir + <span class=\"hljs-string\">\"\/check_mysql\"<\/span> ]\n\n    <span class=\"hljs-built_in\">arguments<\/span> = {\n        <span class=\"hljs-string\">\"-H\"<\/span> = {\n            value = <span class=\"hljs-string\">\"$mysql_address$\"<\/span>\n            description = <span class=\"hljs-string\">\"IP address or hostname of the MySQL server\"<\/span>\n        }\n        <span class=\"hljs-string\">\"-u\"<\/span> = {\n            value = <span class=\"hljs-string\">\"$mysql_user$\"<\/span>\n            description = <span class=\"hljs-string\">\"Username for MySQL login\"<\/span>\n        }\n        <span class=\"hljs-string\">\"-p\"<\/span> = {\n            value = <span class=\"hljs-string\">\"$mysql_password$\"<\/span>\n            description = <span class=\"hljs-string\">\"Password for MySQL login\"<\/span>\n        }\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Step 4: Configure Icinga Server<\/h2>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">Define Host <span class=\"hljs-built_in\">Object<\/span>:\n\nDefine or ensure that the host object <span class=\"hljs-keyword\">for<\/span> your MySQL server exists <span class=\"hljs-keyword\">in<\/span> your Icinga configuration:\n\nobject Host <span class=\"hljs-string\">\"mysql-server\"<\/span> {\n    <span class=\"hljs-keyword\">import<\/span> <span class=\"hljs-string\">\"generic-host\"<\/span>\n    address = <span class=\"hljs-string\">\"mysql-agent-ip\"<\/span>  <span class=\"hljs-comment\">\/\/ Replace with the actual IP address of your MySQL server<\/span>\n    check_command = <span class=\"hljs-string\">\"hostalive\"<\/span>\n}\n\nDefine Service <span class=\"hljs-keyword\">for<\/span> MySQL Monitoring:\n\nCreate a service definition to check MySQL:\n\napply Service <span class=\"hljs-string\">\"mysql-service\"<\/span> {\n    <span class=\"hljs-keyword\">import<\/span> <span class=\"hljs-string\">\"generic-service\"<\/span>\n    check_command = <span class=\"hljs-string\">\"check_mysql\"<\/span>\n    vars.mysql_address = <span class=\"hljs-string\">\"localhost\"<\/span>\n    vars.mysql_user = <span class=\"hljs-string\">\"icinga\"<\/span>\n    vars.mysql_password = <span class=\"hljs-string\">\"yourpassword\"<\/span>\n    assign where host.name == <span class=\"hljs-string\">\"mysql-server\"<\/span>\n}\nReload Icinga <span class=\"hljs-number\">2<\/span>:\n\nAfter making these changes, reload Icinga <span class=\"hljs-number\">2<\/span> to apply them:\n\nsudo systemctl reload icinga2<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Step 5: Verify the Configuration<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Icinga Web 2<\/strong>: Log into Icinga Web 2 and navigate to the &#8216;Services&#8217; section. Check if the new service for monitoring MySQL is displayed and showing correct status information.<\/li>\n\n\n\n<li><strong>Troubleshooting<\/strong>:\n<ul class=\"wp-block-list\">\n<li>If the service shows errors, check the Icinga 2 logs for any detailed error messages (<code>\/var\/log\/icinga2\/icinga2.log<\/code>).<\/li>\n\n\n\n<li>Ensure that the MySQL user permissions and network connections between the Icinga agent and server are correctly configured.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>To monitor MySQL on an Ubuntu server where an Icinga agent is installed, you&#8217;ll need to configure both the agent and the Icinga server to handle the monitoring tasks. Here&#8217;s&#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[8217],"tags":[],"class_list":["post-46258","post","type-post","status-publish","format-standard","hentry","category-icinga"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/46258","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=46258"}],"version-history":[{"count":2,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/46258\/revisions"}],"predecessor-version":[{"id":46280,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/46258\/revisions\/46280"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=46258"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=46258"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=46258"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}