我想使用 icinga2 监控我的 MySQL 服务器,如上面的标题所示。我的 MySQL 服务器使用 unix 套接字。我尝试了以下操作:
object Service "MYSQL" {
import "generic-service"
check_command = "mysql"
vars.mysql_query_hostname = "/var/run/mysqld/mysqld.sock"
vars.mysql_ignore_auth = true
vars.mysql_port = 6800
host_name = "mysql.server"
}
然后我重新启动了 icinga2 服务。当我从 icinga2 网站检查时,我发现 MySQL 服务出现以下错误: 插件输出无法连接到‘192.168.2.4’上的 MySQL 服务器 (111)
icinga2 似乎无法使用 unix 套接字检查 MySQL 服务。我使用的配置有问题吗?
编辑1: 因此,我在客户端上安装了 icinga2,并将其配置为卫星。我读到过,icinga2 代理是监控远程服务上的服务的优雅方式。由于此设置将保留,我愿意花时间和精力来正确配置一切。
在服务器上,/etc/icinga2/conf.d/services.conf
apply Service "MySQL" {
import "generic-service"
check_command = "mysql"
command_endpoint = host.vars.client_endpoint
assign where host.vars.client_endpoint == "client1.example.com"
}
/etc/icinga2/conf.d/hosts.conf
object Host "client1.example.com" {
import "generic-host"
address = "192.168.2.4"
vars.client_endpoint = "client1.example.com"
vars.mysql_hostname = "/var/run/mysqld/mysqld.sock"
}
在客户端上,我安装了所需的插件“check_mysql”,icinga2 正在运行。当我通过 icinga2 Web 界面检查时,我仍然得到以下插件输出:插件输出无法连接到“192.168.2.4”上的 MySQL 服务器 (111) 似乎它仍在通过 TCP 检查。我做错了什么?
答案1
Icinga2 是否在您的 MySQL 服务所在的同一台服务器上运行?在这种情况下,您的命令可能会出现问题。您可以在问题中粘贴命令的详细信息。
在其他情况下,要测试未在 TCP 端口上监听的 mysql 的 Unix 套接字,您必须使用 NRPE 或 SSH 连接到您的 mysql 服务器并检查服务。结果将发送到您的 icinga2 服务器。
编辑1:
如果您想测试远程服务器上没有网络监听器的服务,您可以使用以下几种方法:
这样,您将能够在远程服务器上执行远程命令,并且该命令的答案将发送到您的 icinga2 服务器。此解决方案在您的服务器之间强加 ssh 配置。
否则,您可以在远程服务器上安装 NRPE 并执行命令,并将其结果发送到您的 icinga2 服务器。
NRPE可以在windows或者linux上运行。
我认为这两种解决方案比在所有需要监督的服务器上安装 icinga2 作为卫星更简单。