记一次中止线上再也不跑的服务

刚接手的服务器,什么移交都没有,而后发现上边跑了不少无用的服务在占用系统资源,问开发,查git,查计划任务,查现有wiki都没有发现这个服务到底可不能够停,怎么办,怎么去确认它已经没有人在用呢?我来举个例子php

公司的web服务器组上边跑php,nginx,mysql,go,go服务是明确在跑的服务,那么剩下的这些到底有没有再用呢?
1)查看nginx访问日志为空,php访问日志为空,近半年日志都没有更新过了
2)查看端口链接,没有1个链接进来
3)查看nginx配置的域名,解析都不在这mysql

讲道理,这个时候应该确认这个服务没有在用了,可是运维无小事,肯定这些端口若是连数据包都没有进来,那么真的是没有在用了
写了两个脚本配合使用
脚本1:
用来抓包
[root@go_web003 home]# cat /home/wwwroot/lnmp02/vhost/get_portpackage.sh
#!/bin/bash
port=(80 8888 9999 86 87 89)
ip=`ifconfig eth0|grep 'inet addr'|awk -F: '{print $2}'| awk '{print $1}'<br/>time=date +%F
%R`
getpack(){
tcpdump -i eth0 dst host $ip and dst port $1 >> /home/${2}
${3}.txt
}nginx

traverse_port(){
for p in ${port[@]}
do
get_pack $p $p $time
done
}git

traverse_port
脚本2:
计划任务,用来中止tcpdump,由于上边指定了抓10个包,不停的抓包也会占用系统资源,若是不中止的话,会一直卡在那,因此计划任务用来中止抓包,使用ansible来添加
[root@jenkins zhangdalu]# cat cron_tcpdump.yml web

  • hosts: go_rpc
    name: get server info
    gather_facts: false
    run_once: true
    tasks:
    • name: scp shell file
      copy: src=/home/get_port_package.sh dest=/home/wwwroot/lnmp02/vhost/ mode=755
    • name: add cron mission kill_tcpdump
      cron: name="kill_tcpdump" minute="*/1" job="ps -ef |grep tcpdump|grep -v grep |awk '{print $2}'|xargs kill"
    • name: add cron mission tcpdump
      cron: name="tcpdump" minute=*/10 job=/home/wwwroot/lnmp02/vhost/get_port_package.sh

/1 ps -ef |grep tcpdump|grep -v grep |awk '{print $2}'|xargs kill
/10 /home/wwwroot/lnmp02/vhost/get_port_package.shsql

结果:跑了3天之后,生成了大量的文件,但都是空的,没有抓到一个包至此证实真的是没有人在访问这几个端口,和领导对了一下,给开发和相关人员发了邮件以后,就中止了
记一次中止线上再也不跑的服务shell

相关文章
相关标签/搜索