Linux监控相关技术

来源:互联网 发布:ppt无法编辑数据 编辑:程序博客网 时间:2024/05/21 17:59

前段时间因为接了信用卡的业务,引擎的计算量急剧上升,Tomcat宕机了两次,所以给引擎添加监控就成了很紧急的任务。

监控的主要原理是这样的,有两个监控的主要目标:1.tomcat进程2.具体的服务端口,如果这两个监控目标有一个状态不正常了,就重启后台。

所以现在要做的是写一个脚本,查看这两个目标,然后定时启动这个脚本。

第一步:监控脚本

        #!/bin/sh

        Restart(){

cd /wls/padl_spk/javaweb/tomcat/bin

    ./catalina.sh stop

cd /wls/padl_spk/javaweb/tomcat/bin

nohup ./catalina.sh run &

curl http://127.0.0.1:8080/PAServer2/init

        }

TomcatID=$(ps -ef |grep tomcat |grep -w $tomcat_name|grep -v 'grep'|awk '{print $2}')

  Monitor(){

if [[ $TomcatID ]]; then

TomcatServiceCode=$(curl -s -m 10 --connect-timeout 10 $webUrl -w %{http_code})

    if [[ $TomcatServiceCode -eq 200 ]]; then

echo "ok"

else 

echo "error"

Restart

fi

else

echo "tomcat is no exist"

Restart

fi

}

第二步:定时启动这个脚本

定时启动有很多方式,这里使用了两种:

(1)crontab 

设置方式为:

crontab -e
f1 f2 f3 f4 f5 program
示例:*/10 * * * * sh tomcatMonitor.sh
注意可能要先切换到指定目录下
systemctl restart crond

(2)systemd

运行一个简单的脚本
假设你有一个脚本叫:/usr/local/bin/myscript ,你想要每隔一小时就运行一次。
Service 文件
第一步,创建一个service文件,根据你Linux的发行版本放到相应的系统目录(在Arch中,这个目录/etc/systemd/system/ 或 /usr/lib/systemd/system)
myscript.service
  1. [Unit]
  2. Description=MyScript
  3.  
  4. [Service]
  5. Type=simple
  6. ExecStart=/usr/local/bin/myscript
注意,务必将Type变量的值设置为"simple"而不是"oneshot"。使用"oneshot"使得脚本只在第一次运行,之后系统会认为你不想再次运行它,从而关掉我们接下去创建的定时器(Timer)。
Timer 文件
第二步,创建一个timer文件,把它放在第一步中service文件放置的目录。
myscript.timer
  1. [Unit]
  2. Description=Runs myscript every hour
  3.  
  4. [Timer]
  5. # 首次运行要在启动后10分钟后 
  6. OnBootSec=10min
  7. # 每次运行间隔时间
  8. OnUnitActiveSec=1h
  9. Unit=myscript.service
  10.  
  11. [Install]
  12. WantedBy=multi-user.target
授权 / 运行
授权并运行的是timer文件,而不是service文件。
  1. # 以 root 身份启动定时器
  2. systemctl start myscript.timer
  3. # 在系统引导起来后就启用该定时器 
  4. systemctl enable myscript.timer

systemctl daemon-reload
systemctl restart monitor.timer

原创粉丝点击