check_monitor
#! /bin/bash
# 声明agent配置文件路径
CONF=/etc/sdata/zabbix/zabbix_agentd.conf
#CONF=/tmp/zabbix_agentd.conf
# -F指定=号切割,寻找关键字段Hostname打头的,用=切割后显示第二行的数值, 最后一位指定文件绝对路径
config_hostname=`awk -F "=" '/Hostname/{print $2}' $CONF`
# 执行hostname命令并将结果赋值给host
host=`hostname`
# cat redhat-release文件,使用 . 进行切割, 打印第一行,
osmaster=`cat /etc/redhat-release |awk -F '.' '{print $1}' |awk '{print $NF}'`
# -qa查询rpm安装的agent信息
pkg=`rpm -qa zabbix-agent| wc -l`
echo "############## Package #################"
# 如果小于1,说明没有安装
if [ $pkg -lt 1 ];then #回显信息
echo 'Need install monitor agent, Please excute command: "curl http://10.10.238.114:4507/repo/install.sh -o /tmp/install.sh && sh /tmp/install.sh"'
echo "########################################"
exit 1
else
echo "Monitor agent has been installed."
fi
# check zabbix status
echo "############## Status ##################"
# ps 查询进程信息
proc_num=`ps -ef|grep zabbix |wc -l`
# 大于1,说明已运行
if [ $proc_num -gt 1 ];then
STATUS=1
echo 'Monitor agent is running.'
else
STATUS=0
echo 'Monitor agent is stopped.'
fi
# check conf Hostname
echo "############## Config ##################"
echo -ne 'Check monitor agent conf Hostname: '
# 比较两个主机名是否相同
if [ "$config_hostname" != "$host" ];then
MODIFY=1
echo "Modify Monitor Agent Hostname: ${config_hostname} --> $host."
# 对值进行替换,在 $CONF指定的文件中, 寻找已Hostname=开头的字段,替换为$host指定的值, g全局
sed -i 's/^\(Hostname=\).*$/\1'$host'/g' $CONF
else
MODIFY=0
echo -ne "Hostname has no change.\n"
fi
# Start monitor agent
echo "############## Restart #################"
if [ $MODIFY -eq 1 ];then
if [ $STATUS -eq 1 ];then
echo "Modify config file, Restart Monitor Agent."
if [ $osmaster -eq 7 ];then
systemctl restart zabbix-agent
else
service zabbix-agent restart
fi
else
echo "Start Monitor Agent."
if [ $osmaster -eq 7 ];then
systemctl start zabbix-agent
else
service zabbix-agent start
fi
fi
else
if [ $STATUS -eq 0 ];then
echo "Start Monitor Agent."
if [ $osmaster -eq 7 ];then
systemctl start zabbix-agent
else
service zabbix-agent start
fi
else
echo "Monitor agent service is running normally."
echo "########################################"
exit 0
fi
fi
sleep 1
echo "############## Status ##################"
# check agent status
# 查看zabbix的进程数量
proc_num=`ps -ef|grep zabbix |wc -l`
如果大于1条,说明agent正常运行
if [ $proc_num -gt 1 ];then
echo 'Monitor Agent is running.'
else
echo 'Monitor Agent is stopped.'
if [ $osmaster -eq 7 ];then # 如果centos是7版本,回显命令让用户执行
echo "Please excute command: 'systemctl start zabbix-agent'"
else
echo "Please excute command: 'service zabbix-agent start'" # 回显非7版本的centos启动命令
fi
fi
echo "########################################"
check_monitor的更多相关文章
- Mysql高可用集群-解决MMM单点故障
目录 一.理论概述 组件介绍 三.部署 四.测试 五.总结 preface: MMM架构相比于MHA来说各方面都逊色不少,写这篇案例也算是整理下思路吧. 一.理论概述 MMM(Master-Maste ...
随机推荐
- springBoot入门到精通-Simple
https://blog.csdn.net/zhiyikeji/article/details/84346189 1.springBoot前期准备 1.环境配置:jdk,maven 2.编写工具:st ...
- 无法定位 Local Database Runtime 安装。请验证 SQL Server Express 是否正确安装以及本地数据库运行时功能是否已启用。
错误描述: 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误.未找到或无法访问服务器.请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接. (provide ...
- C#设计模式之12:中介者模式
中介者模式 在asp.net core中实现进程内的CQRS时用mediatR是非常方便的,定义command,然后定义commandhandler,或者notification和notificati ...
- 2019 迅雷java面试笔试题 (含面试题解析)
本人3年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.迅雷等公司offer,岗位是Java后端开发,最终选择去了迅雷. 面试了很多家公司,感觉大部分公司考察的点都差不多 ...
- Excel表格快速将公式运用到一整列
假设你的公式在B2单元格,需要复制公式到B3:B999,那么你先选择包含公式单元格的所有需要复制公式的单元格(B2:B999),然后按Ctrl+D即可全部填充.
- 英语foteball足球历史
foteball n.足球 现代足球 参见:现代足球 现代足球起源地是在英格兰.传说在11世纪,英格兰与丹麦之间有过一场战争,战争结束后,英格兰人在清理战争废墟时发现一个丹麦入侵者的头骨,出于愤恨,他 ...
- 有趣for循环
String fileValue = "2;3;4;5;6;"; String[] arry = fileValue.split(";"); for (int ...
- Response响应相关
response是响应的对象 response.text # 返回的是字节,数据的原内容response.content # 返回的是字符串,默认是utf-8解码 import reques ...
- oracle 字符串分隔去重函数
create or replaceFUNCTION "SF_SPLIT_ACCOUNT_ID_LIST" ( account_id_list IN VARCHAR2)RETURN ...
- ArcGIS操作技巧——怎样把地图放到PPT中,并且进行编辑?
需求:把arcgis配好的矢量地图插入到ppt中,并且要求可以在PPT中进行修改和重新着色.编辑. 效果:如下图所示: 操作过程: 方法一: 在最上面工具栏找到edit——>copy map t ...