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 ...
随机推荐
- 初学zipkin搭建链路追踪服务注意事项
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/fsy9595887/article/det ...
- # - net - cannot access a disposed object r nobject name filebufferingreadstream
.Net Core 2.1-Cannot access a disposed object.Object name: 'IServiceProvider' (3) I just migrated .N ...
- Redis 集群:CLUSTERDOWN The cluster is down
1.错误 (error)CLUSTERDOWN The cluster is down 2.问题表现 Java项目使用redis集群时报错, HTTP Status 500 - Could not g ...
- 阿里巴巴 Java 开发手册 (八) 注释规约
1. [强制]类.类属性.类方法的注释必须使用 Javadoc 规范,使用/**内容*/格式,不得使用 //xxx 方式. 说明:在 IDE 编辑窗口中,Javadoc 方式会提示相关注释,生成 Ja ...
- 微信JS-SDK实现分享功能
1 申请一个微信公众号,并确认在开发–接口权限中拥有分享功能的权限. 2 公众号设置–功能设置:在JS接口安全域名中添加安全域名,这个安全域名不是url,只需添加一级域名即可. 3 开发,基本配置中, ...
- 强大的Grafana k8s 插件
原文参考: https://i4t.com/4152.html 参考:https://blog.csdn.net/mailjoin/article/details/81389700 插件链接:http ...
- Java之路---Day07
2019-10-21-23:30:24 ArrayList类[集合] What:java.util.ArrayList是大小可变的数组的实现,存储在内的数据称为元元素,此类提供一些方法来操作内部存储的 ...
- 深入理解JVM-内存溢出案例演示与分析
1.java堆溢出 思路:Java堆用于存储对象实例,只要不断地创建对象,并且保证GC Roots到对象之间有可达路径来避免垃圾回收机制清除这些对象, 那么在对象数量到达最大堆的容量限制后就会产生内存 ...
- [LeetCode] 78. 子集 ☆☆☆(回溯)
描述 给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集). 说明:解集不能包含重复的子集. 示例: 输入: nums = [1,2,3]输出:[ [3], [1], [2] ...
- 【Spring Boot】Spring Boot之自定义拦截器
一.拦截器的作用 将通用的代码抽取出来,达到复用的效果.比如可以用来做日志记录.登录判断.权限校验等等 二.如何实现自定义拦截器 1)创建自定义拦截器类并实现HandlerInterceptor类 / ...