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 ...
随机推荐
- Taylor()函数总结
Taylor()函数总结 Taylor展开式公式的具体形式见百度百科:https://baike.baidu.com/item/%E6%B3%B0%E5%8B%92%E5%85%AC%E5%BC%8F ...
- 30个关于Shell脚本的经典案例(下)
本文目录 21.从FTP服务器下载文件 22.连续输入5个100以内的数字,统计和.最小和最大 23.将结果分别赋值给变量 24.批量修改文件名 25.统计当前目录中以.html结尾的文件总大 26. ...
- 报错:failed to get the task for process XXX(解决方案)
引文: iOS真机调试程序,报如下错误信息: 原因: 证书问题,project和targets的证书都必须是开发证书,ADHOC的证书会出现此问题. 解决方案: project和targets的证书使 ...
- iOS多线程GCD简介(二)
在上一篇中,我们主要讲了Dispatch Queue相关的内容.这篇主要讲一下一些和实际相关的使用实例,Dispatch Groups和Dispatch Semaphore. dispatch_aft ...
- 结对项目(java实现)
一 .Github项目地址:https://github.com/734635746/MyApp 二.PSP表格 PSP2.1 Personal Software Process Stages 预估耗 ...
- 巧用浏览器F12调试器定位系统前后端bug-转载
做测试的小伙伴可能用过httpwatch,firebug,fiddler,charles等抓包(数据包)工具,但实际上除了这些还有一个简单实用并的抓包工具,那就是浏览器的F12调试器. httpwat ...
- win7彻底卸载VS2015
C盘越来越臃肿,VS2013.VS2015.VS2017以及VS2019都安装的情况下,C盘没有空间了. 系统:Win7 卸载办法: 管理员方式进cmd,执行vs_professional.exe / ...
- Docker04-镜像
目录 镜像介绍 获取镜像 案例:获取 redis 5.0.0的镜像 查询本地镜像 搜索镜像 删除镜像 案例:删除redis:latest镜像 镜像加速 镜像介绍 镜像是Docker的三大核心概念之一. ...
- C语言基础知识-程序流程结构
C语言基础知识-程序流程结构 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.概述 C语言支持最基本的三种程序运行结构:顺序结构,选择结构,循环结构. 顺序结构:程序按顺序执行, ...
- 2019年牛客多校第一场 I题Points Division 线段树+DP
题目链接 传送门 题意 给你\(n\)个点,每个点的坐标为\((x_i,y_i)\),有两个权值\(a_i,b_i\). 现在要你将它分成\(\mathbb{A},\mathbb{B}\)两部分,使得 ...