#! /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的更多相关文章

  1. Mysql高可用集群-解决MMM单点故障

    目录 一.理论概述 组件介绍 三.部署 四.测试 五.总结 preface: MMM架构相比于MHA来说各方面都逊色不少,写这篇案例也算是整理下思路吧. 一.理论概述 MMM(Master-Maste ...

随机推荐

  1. 解决clover配置文件conf.plist中nv_disable=1或者nvda_drv=1不生效或者说不能删除的问题

    情况一:U盘安装MacOS的时候conf.plist中设置了nv_disable=1,但是启动的时候任然显示nvda_drv=1. 这种情况一般出现在该机器曾经安装过MacOS,MacOS会将这个参数 ...

  2. Java面试题及答案汇总(一)

    Java 基础 1. JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境. JRE:Java Ru ...

  3. springcolud 的学习(二).SpringCloud微服务框架

    为什么选择SpringCloud因为SpringCloud出现,对微服务技术提供了非常大的帮助,因为SpringCloud 提供了一套完整的微服务解决方案,不像其他框架只是解决了微服务中某个问题. 服 ...

  4. 阿里巴巴 Java 开发手册(一):命名风格

    命名风格 1. [强制] 代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束. 反例: _name / __name / $Object / name_ / name$ / Obj ...

  5. IEnumerable,ICollection,IList,List的使用

    做C#的都知道:一类只能有一个继承类,但可以实现多个接口.这句话就告诉我们:IEnumerable,ICollection,IList,List区别了 首先我看看 IEnumerable:   // ...

  6. MongoDB和Java(6):Spring Data整合MongoDB副本集、分片集群

    最近花了一些时间学习了下MongoDB数据库,感觉还是比较全面系统的,涉及了软件安装.客户端操作.安全认证.副本集和分布式集群搭建,以及使用Spring Data连接MongoDB进行数据操作,收获很 ...

  7. react学习记录(一)

    一.React是什么 声明式写法(强调结果,命令式编程强调过程) 组件化 一次学习,随处编写(多种应用场景,web程序,原生手机应用,系统应用,命令行工具) 二.为什么学习react 大公司加持-fa ...

  8. 《区块链DAPP开发入门、代码实现、场景应用》笔记5——区块链福利彩票的设计

    笔者一直强调,一定要利用区块链的特点来解决行业存在的问题,并且该问题最好用区块链解决或者说只能用区块链解决.彩票行业就是个例子. 在讲解代码之前,首先讲解一下业务设计,如图6.15所示. 图6.15 ...

  9. 关于创建Web图像时应记住的五个要素

    1. 格式与下载速度 当前,Web上用的最广泛的三种格式是GIF.PNG和JPEG.我们的目标是选择质量最高,同时文件最小的格式. WebP图像格式 谷歌建立了另一种图像格式,名为WebP. 这种格式 ...

  10. jq+swiper 实现今日头条App的选项卡效果

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...