如何用 Nagios 监控通用服务

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云解析 DNS,旗舰版 1个月
简介:

Nagios内置了很多脚本来监控服务。本篇会使用其中一些来检查通用服务如MySql、Apache、DNS等等。

为了保证本篇集中在系统监控,我们不会在这里配置主机组或者模板,它们已经在 前面的教程中覆盖了,它们可以满足需要了。

在命令行中运行Nagios

通常建议在添加到Nagios前,先在命令行中运行Nagios服务检测脚本。它会给出执行是否成功以及脚本的输出将会看上去的样子。

这些脚本存储在 /etc/nagios-plugins/config/ ,可执行文件在 /usr/lib/nagios/plugins/。

下面就是该怎么做

 
 
  1. root@nagios:~# cd /etc/nagios-plugins/config/
AI 代码解读

提供的脚本包含了语法帮助。示例包含了部分输出。

 
 
  1. root@nagios:~# cat /etc/nagios-plugins/config/tcp_udp.cfg
AI 代码解读

 
 
  1. # 'check_tcp' command definition
  2. define command{
  3. command_name check_tcp
  4. command_line /usr/lib/nagios/plugins/check_tcp -H '$HOSTADDRESS$' -p '$ARG1$'
AI 代码解读

了解了语法,TCP 80端口可以用下面的方法检查。

 
 
  1. root@nagios:~# /usr/lib/nagios/plugins/check_tcp -H 10.10.10.1 -p 80
AI 代码解读

 
 
  1. TCP OK - 0.000 second response time on port 80|time=0.000222s;;;0.000000;10.000000
AI 代码解读

示例拓扑

本片中使用下面三台服务器。每台服务器运行多个通用服务。Nagios服务器现在运行的是Ubuntu。

  • Server 1 (10.10.10.1) : MySQL, Apache2
  • Server 2 (10.10.10.2) : Postfix, Apache2
  • Server 3 (10.10.10.3) : DNS

首先,这些服务器被定义在了Nagios中。

 
 
  1. root@nagios:~# vim /etc/nagios3/conf.d/example.cfg
AI 代码解读

 
 
  1. define host{
  2. use generic-host
  3. host_name test-server-1
  4. alias test-server-1
  5. address 10.10.10.1
  6. }
  7. define host{
  8. use generic-host
  9. host_name test-server-2
  10. alias test-server-2
  11. address 10.10.10.2
  12. }
  13. define host{
  14. use generic-host
  15. host_name test-server-3
  16. alias test-server-3
  17. address 10.10.10.3
  18. }
AI 代码解读

监控MySQL服务

MySQL 监控需要

  • 通过检查3306端口来检测MySQL是否运行中。
  • 检测特定的数据库'testDB'是否可用。

MySQL 服务器设置

开始检测MySQL时,需要记住MySQL默认只监听回环接口127.0.0.1。这增加了数据库的安全。手动调节需要告诉MySQL该监听什么其他接口。下面是该怎么做。

这个设置要在所有的MySQL服务器上完成。

 
 
  1. root@nagios:~# vim /etc/mysql/my.cnf
AI 代码解读

下面这行被注释掉以监听所有网络接口。

 
 
  1. #bind-address = 127.0.0.1
AI 代码解读

同样,MySQL也不会让任意主机来连接它。需要为localhost和“任意”主机创建MySQL用户‘nagios’,接着在所有的数据库中为这个用户授予ALL权限,会这将在会用在监控中。

下面的设置对所有的MySQL服务器都已经设置。

 
 
  1. root@nagios:~# mysql -u root –p
  2. ## MySQL root 密码 ##
AI 代码解读

在MySQL服务器中创建'nagios@localhost'用户。

 
 
  1. mysql> CREATE USER 'nagios'@'localhost' IDENTIFIED BY 'nagios-pass';
  2. mysql> GRANT ALL PRIVILEGES ON *.* TO 'nagios'@'localhost';
AI 代码解读

创建'nagios@任意主机'用户。(LCTT 译注:实际上这两个是同一个用户,只是分别授权给localhost和任意主机的访问;因为它们所用的密码的同一个,修改任何一个,另外一个也相应变化。)

 
 
  1. mysql> CREATE USER 'nagios'@'%' IDENTIFIED BY 'nagios-pass';
  2. mysql> GRANT ALL PRIVILEGES ON *.* TO 'nagios'@'%';
  3. mysql> FLUSH PRIVILEGES;
AI 代码解读

这使MySQL监听所有的网络接口,同样接受来自用户'nagios'的进入连接。

请注意,这种修改可能有安全隐患,所以需要提示几点:

  • 这个设置将会暴露MySQL给所有的接口,包括外网。确保只有合法的网络访问是非常重要的。应该使用防火墙和TCP wrapper等过滤器。
  • MySQL用户‘nagios’的密码应该非常强。如果只有几台Nagios服务器,那么应该创建'nagios@服务器名'用户而不是任意用户的'nagios@%'。

对MySQL的Nagios配置

按如下配置来做一些调整。

 
 
  1. root@nagios:~# vim /etc/nagios3/conf.d/services_nagios2.cfg
AI 代码解读

 
 
  1. define service{
  2. use generic-service
  3. host_name test-server-1
  4. ;hostgroup can be used instead as well
  5. service_description Check MYSQL via TCP port
  6. check_command check_tcp!3306
  7. }
  8. define service{
  9. use generic-service
  10. host_name test-server-1
  11. ;hostgroup can be used instead as well
  12. service_description Check availability of database 'testDB'
  13. check_command check_mysql_database!nagios!nagios-pass!testDB
  14. ;check_mysql!userName!userPassword!databaseName
  15. }
AI 代码解读

这样,Nagios就可以同时监控MySQL服务器及其数据库的可用性。

监控Apache服务器

Nagios同样也可以监控Apache服务。

Apache监控需要

  • 监控apache服务是否可用

这个任务非常简单因为Nagios有一个内置命令。

 
 
  1. root@nagios:~# vim /etc/nagios3/conf.d/services_nagios2.cfg
AI 代码解读

 
 
  1. define service{
  2. use generic-service
  3. host_name test-server-1, test-server-2
  4. service_description Check Apache Web Server
  5. check_command check_http
  6. }
AI 代码解读

现在就非常简单了。

监控DNS服务

Nagios通过向DNS服务器查询一个完全限定域名(FQDN),或者使用dig工具来查询。默认用于查询的FQDN的是www.google.com,但是这个可以按需改变。按照下面的文件修改来完成这个任务。

 
 
  1. root@nagios:~# vim /etc/nagios-plugins/config/dns.cfg
AI 代码解读

 
 
  1. ## The -H portion can be modified to replace Google ##
  2. define command{
  3. command_name check_dns
  4. command_line /usr/lib/nagios/plugins/check_dns -H www.google.com -s '$HOSTADDRESS$'
  5. }
AI 代码解读

编辑下面的行。

 
 
  1. root@nagios:~# vim /etc/nagios3/conf.d/services_nagios2.cfg
AI 代码解读

 
 
  1. ## Nagios asks server-3 to resolve the IP for google.com ##
  2. define service{
  3. use generic-service
  4. host_name test-server-3
  5. service_description Check DNS
  6. check_command check_dns
  7. }
  8. ## Nagios asks server-3 to dig google.com ##
  9. define service{
  10. use generic-service
  11. host_name test-server-3
  12. service_description Check DNS via dig
  13. check_command check_dig!www.google.com
  14. }
AI 代码解读

监控邮件服务器

Nagios可以监控不同的邮件服务组件如SMTP、POP、IMAP和mailq。之前提过,server-2设置了Postfix邮件服务。Nagios将被配置来监控SMTP和邮件队列。

 
 
  1. root@nagios:~# vim /etc/nagios3/conf.d/services_nagios2.cfg
AI 代码解读

 
 
  1. define service{
  2. use generic-service
  3. host_name test-server-2
  4. service_description Check SMTP
  5. check_command check_smtp
  6. }
  7. define service{
  8. use generic-service
  9. host_name test-server-2
  10. service_description Check Mail Queue
  11. check_command check_mailq_postfix!50!100
  12. ;warning at 50, critical at 100
  13. }
AI 代码解读

下面的截屏显示了目前配置监控服务的概览。

基于端口自定义监控程序

让我们假设如下定制程序同样运行在网络中,监听着一个特定的端口。

  • 测试1号服务器:定制程序(TCP端口 12345)

做一些小的调整,Nagios也可以帮助我们监控这个程序。

 
 
  1. root@nagios:~# vim /etc/nagios3/conf.d/services_nagios2.cfg
AI 代码解读

 
 
  1. define service{
  2. use generic-service
  3. host_name test-server-1
  4. service_description Check server 1 custom application
  5. check_command check_tcp!12345
  6. }
AI 代码解读

在结束之前的提示,Nagios可以监控网络很多其他的方面。存储在/etc/nagios-plugins/config/中的脚本为Nagios提供了很棒的能力。

一些Nagios提供的脚本被仅限于本地服务器,比如,服务器负载、进程并发数量、登录用户数量等。这些检查可以提供Nagios服务器内有用的信息。

希望这篇文章对你有用。



原文发布时间为:2015-07-02


本文来自云栖社区合作伙伴“Linux中国”

目录
打赏
0
0
0
0
209
分享
相关文章
【揭秘可观测性】构建完美参考框架,打造系统监控的瑞士军刀!
【8月更文挑战第25天】在现代软件设计中,可观测性是确保系统稳定性和效率的关键因素。它主要由日志、指标及链路追踪(统称LMx)三大核心组件构成。本文详细介绍了构建高效可观测性框架的六个步骤:需求分析、工具选择、数据收集策略设计、实施集成、数据可视化及持续优化。并通过一个Spring Boot应用集成Prometheus和Micrometer收集指标的示例,展示了具体实践方法。合理构建可观测性框架能显著提升团队对软件系统的管理和监控能力,进而增强系统整体性能和可靠性。
106 2
zabbix利用grafana自定义监控图形展现(十一)
zabbix利用grafana实现监控图形展现 1.修改已有的system load监控图像 下面这张图是现在已经有的系统负载监控图,可以看到只有15分钟的负载并没有1分钟和5分钟的负载,我们现在修改一下图形,让他支持1分钟和5分钟的系统负载
1189 0
zabbix利用grafana自定义监控图形展现(十一)
性能测试 基于Python结合InfluxDB及Grafana图表实时采集Linux多主机性能数据
性能测试 基于Python结合InfluxDB及Grafana图表实时采集Linux多主机性能数据
171 0
Zabbix 服务器性能指标参考(学习笔记十七)
服务器性能及业务监控指标,可根据实际情况调整,下表供大家参考。 监控类别监控子对象监控维度监控指标警告严重 服务器CPU负载1分钟采集,5分钟告警>=5>=10 利用率1分钟采集,5分钟告警>=60%>=80% 温度1分钟采集,5分钟告警>=70℃>=...
1488 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等