zabbix4.0学习四:Zabbix监控tomcat故障重启

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/achenyuan/article/details/87360232

zabbix4.0学习四:Zabbix监控tomcat故障重启

前言

使用zabbix监控tomcat的运行,当tomcat停止运行,则重启它。
下面教程里,在执行远程脚本时,使用ssh方式,不使用自定义脚本方式,因为自定义脚本方式问题太多,我试了很多都没试成功
两台机器

名称 ip 作用
zabbix-server 192.168.2.33 zabbix服务器端
zabbix-agent 192.168.1.239 zabbix客户端

agent在linux上

编辑zabbix-agent.conf配置文件

打开:vi /etc/zabbix/zabbix_agentd.conf
配置

#开启远程执行命令功能
EnableRemoteCommands=1
#开启远程记录日志功能
LogRemoteCommands=1

重启zabbix-agent:systemctl restart zabbix-agent

增加zabbix权限

虽然我们可以修改/etc/sudoers文件,在里面添加权限,但破坏性比较大,建议将每个用户的权限分开放在/etc/sudoers.d目录下。

visudo  -f /etc/sudoers.d/zabbix

zabbix是文件名,随便写,建议以用户名区分

增加如下

zabbix    ALL=(ALL)NOPASSWD: ALL

语法是:who host=(runas) TAG:command

  • who :运行者用户名
  • host:主机
  • runad:以那个身份运行
  • TAG:标签
  • command:命令
    zabbix用户可以无密码方式运行任何命令,当然这种方式权限太大,上面可以修改为:
zabbix    ALL=(ALL)NOPASSWD:  /etc/zabbix/scripts/tomcat_status_monitor.sh

虽然我们可以使用vim直接来编辑sudo的配置文件,但sudo提供了更加智能的编辑命令visudo,它能在编辑配置文件的同时帮我们检查语法错误,并在错误时提供快捷的返回功能,相当nice。

注意在你使用visudo命令前,你有必要设置下EDITOR=vim来替换默认的vi,可以打开的时候语法高亮,看起来起来舒服多了。

[root@centos74 ~]$ vim ~/.bash_profile                   #编辑profile文件
# 添加如下行
export EDITOR=vim

[root@centos74 ~]$ source ~/.bash_profile                # 让其立即生效

测试zabbix是否有权限执行脚本,使用sudo -u 用户名指定用户执行脚本功能
sudo -u zabbix /usr/local/tomcat/apache-tomcat-8.5.37/bin/startup.sh

配置zabbix-web界面

访问http://192.168.2.33/zabbix界面

扫描二维码关注公众号,回复: 6000699 查看本文章

增加主机192.168.1.239(忽略)

给主机增加一个监控项(item)

可参考官方文档创建监控项
用于监控tomcat的运行情况。选中一个主机
点击监控项->创建监控项,配置的值如下
名称:Tomcat-自启监控
类型:Zabbix客户端
键值: proc.num[,,all,tomcat],意思是在任何用户下运行的tomcat进程数。
这里的tomcat是文件名,比如我的tomcat目录名是apache-tomcat-8.5.37,也可以换成proc.num[,all,apache-tomcat-8.5.37]
键值的说明可参考官方文档Zabbix客户端键值

语法是proc.num[<name>,<user>,<state>,<cmdline>],返回整型

  1. name - 进程名称 (默认是 all processes)
  2. user - 用户名 (默认是 all users)
  3. state - 可选的值:
    all-所有状态 (默认),
    disk- 不间断休眠,
    run - 运行中,
    sleep- 间断休眠,
    trace - 停止的,
    zomb - 僵尸
  4. cmdline - 按命令行过滤(它是一个正则表达式)

其它默认即可。
完整配置如下图
在这里插入图片描述

扩展知识:时间单位后缀学习

  • s - 秒(一般来说来说不写s,就表示s了)
  • m - 分
  • h - 小时
  • d - 天
  • w - 周

监控8080端口的监控项是:net.tcp.listen[8080]

给主机增加一个触发器(triggers)

选中一个主机
点击触发器->创建触发器,配置的值如下
名称:AutoTomcatRunTrigger
严重性:选“严重”
表达式{192.168.1.239:proc.num[,all,tomcat].last(#2)}=0,表示在主机192.168.1.239上,监控项proc.num[,all,tomcat]统计出的tomcat进程数倒数第二次等于0则触发。
完整配置如下
在这里插入图片描述

给主机增加一个动作

动作是与触发器绑定的,不是与主机绑定的。
配置->动作->创建动作
动作页配置如下
在这里插入图片描述
在新的触发条件里,先将动作与触发器绑定得到B条件,再与触发器示警度绑定,得到A条件,当A和B条件都满足时,才会执行动作。

操作页配置如下:
在这里插入图片描述
主要配置在于定义操作
在这里插入图片描述
这里主要注意一点,类型选择SSH,命令为:sudo /usr/local/tomcat/apache-tomcat-8.5.37/bin/./startup.sh
远程命令最大长度为255字符,同时支持多个远程命令,如需要执行多条命令,只需要另起一行写命令即可,还有,远程命令可以使用宏变量。

至些配置完毕,使用/usr/local/tomcat/apache-tomcat-8.5.37/bin/./shutdown.sh关闭tomcat,效果如下:
在这里插入图片描述
等一会效果如下
在这里插入图片描述

agent在windows上

由于在远程执行tomcat的startup.bat启动命令时不能成功打开tomcat(可能是不能成功打开dos命令窗口原因),所以,这里介绍将tomcat注册成服务的方式启动。在tomcat/bin目录下执行安装服务命令:service.bat install,我的tomcat服务是tomcat8-8089(可以修改的)。

添加监控项service.info

在主机上添加一个监控项,service.info[tomcat8-8089,state]
顺便介绍service.info命令,可忽略
语法:service.info[service,],这个命令可以获得服务的运行状态,启动类型,描述等
service是服务名。
param:

  1. 默认是state,获得服务运行的状态,返回的值如:
    1. 0 - 运行,
    2. 1 - 暂停,
    3. 2 - 开始等待,
    4. 3 - 暂停等待,
    5. 4 - 继续等待,
    6. 5 - 停止等待,
    7. 6 - 停止,
    8. 7 - 未知,
    9. 255 - 没有这样的服务
  2. startup:获得服务的启动类型
    1. 0 - 自动的,
    2. 1 - 自动延迟,
    3. 2 - 手动,
    4. 3 - 禁用,
    5. 4 - 未知
  3. displayname:获得服务的标准名
  4. path:启动命令位置
  5. user:启动的用户
  6. description:服务的描述

示例:
service.info[SNMPTRAP] - SNMPTRAP服务的状态
service.info[SNMP Trap] - 同一服务的状态,但指定了显示名称
service.info[EventLog,startup]<k/bd> - 事件日志服务的启动类型

请注意,只有使用 param 作为 状态,此选项将返回不存在的服务(255)。

自Zabbix 3.0.0起支持此监控项。不建议使用旧的service_state [service]选项。
测试:zabbix_get -s 192.168.1.243 -k service.info[tomcat8-8089,startup]

添加触发器

做法如上,触发器表达式为:{192.168.1.243:service.info[“tomcat8-8089”,state].last(#2)}=6

添加动作

新建一个zabbixRestart.bat脚本:

net stop tomcat8-8089
net start tomcat8-8089

将脚本拷贝到D:\soft\tomcat\apache-tomcat-8.5.37-8089\bin

这里不使用SSH方式执行,(windows上PowerShellServer可以模拟ssh连接方式),通过自定义脚本反而可以执行,和上面的linux不同。自定义脚本可执行启动windows服务
动作执行自定义脚本内容如下:
在这里插入图片描述

概念

这里涉及触发器,邮件,动作,参考
zabbix从放弃到入门(3):在zabbix中添加主机~zabbix从放弃到入门(11):监控配置小结,触发警报系统文件
Zabbix设置触发器,远程执行命令,以及邮件报警

猜你喜欢

转载自blog.csdn.net/achenyuan/article/details/87360232
今日推荐