精华内容
下载资源
问答
  • linux实时监控脚本

    千次阅读 2017-12-02 10:48:21
    http://www.jb51.net/article/112965.htm #!/bin/bash ethn=$1 while true do  RX_pre=$(cat /proc/net/dev | grep $ethn | sed 's/:/ /g' | awk '{print $2}')  TX_pre=$(cat /proc/net/dev | grep $ethn | sed ...
    http://www.jb51.net/article/112965.htm
    
    #!/bin/bash
    ethn=$1
    while true
    do
     RX_pre=$(cat /proc/net/dev | grep $ethn | sed 's/:/ /g' | awk '{print $2}')
     TX_pre=$(cat /proc/net/dev | grep $ethn | sed 's/:/ /g' | awk '{print $10}')
     sleep 1
     RX_next=$(cat /proc/net/dev | grep $ethn | sed 's/:/ /g' | awk '{print $2}')
     TX_next=$(cat /proc/net/dev | grep $ethn | sed 's/:/ /g' | awk '{print $10}')
     
     clear
     echo -e "\t RX `date +%k:%M:%S` TX"
     
     RX=$((${RX_next}-${RX_pre}))
     TX=$((${TX_next}-${TX_pre}))
     
     if [[ $RX -lt 1024 ]];then
     		RX="${RX}B/s"
     elif [[ $RX -gt 1048576 ]];then
     		RX=$(echo $RX | awk '{print $1/1048576 "MB/s"}')
     else
     		RX=$(echo $RX | awk '{print $1/1024 "KB/s"}')
     fi
     
     if [[ $TX -lt 1024 ]];then
     		TX="${TX}B/s"
     elif [[ $TX -gt 1048576 ]];then
     		TX=$(echo $TX | awk '{print $1/1048576 "MB/s"}')
     else
     		TX=$(echo $TX | awk '{print $1/1024 "KB/s"}')
     fi
     
     echo -e "$ethn \t $RX $TX "
     
    done

    展开全文
  • linux使用shell脚本对多机器日志监控 遇到的难题 日志分散在三台服务器,每次报错查看日志都需要一台一台找,非常麻烦,所以第一反应就是有没有比较好的日志系统可以一次性查看所有的日志,后来发现都需要搭建,或者...

    linux使用shell脚本对多机器日志监控

    遇到的难题

    日志分散在三台服务器,每次报错查看日志都需要一台一台找,非常麻烦,所以第一反应就是有没有比较好的日志系统可以一次性查看所有的日志,后来发现都需要搭建,或者安装,或者配置相关服务,所以想了一些简单的监控多机日志的方案。

    定义

    设三台机器为 c1, c2, c3(c1同时为跳板机)

    尝试方案一
    ### 配置简单的alias脚本,让本机可以快速tail到文件。
    ### 原理:监控跳板机的log+通过跳板机监控
    ### 配置alias的方法,vim ~/.bashrc下加入如下代码,记得修改目录和ip
    
    log1='ssh root@xxx  "tail -f ~/log/sys.log* |ccze -A"'
    log2='ssh root@xxx  "ssh root@192.168.201.10 \"tail -f ~/log/sys.log* |ccze -A\""'
    log3='ssh root@xxx  "ssh root@192.168.201.23 \"tail -f ~/log/sys.log* |ccze -A\""'
    
    尝试方案二

    考虑到这样做,每次都需要分屏+输入多个alias别名才能启动,启动太慢,有没有快速启动的方案?
    想到是否可以利用ansible做多机器日志监控,我们是否可以用ansible对日志文件不断地拿末尾20行并且显示,这是肯定可以的,但是如果程序没有打印日志,那岂不是ansible一直再取日志,刷新日志。后来想了下,尝试利用linux时间跟日志时间做对比,取当前日志时间的那些行出来,这样就可以了。
    我这里用 welog 1监控exception日志,welog 2监控sys日志。

    # ansible 配置文件 -> /etc/ansible/hosts
    [main]
    192.168.201.11
    192.168.201.10
    192.168.201.23
    
    # SHELL - welog:
    T=`date +"%Y-%m-%d %H:%m"`
    echo $T
    if [ $1 -eq 1 ]
    then
    	while true;
    		do ansible main -m shell -a "tail -n 30 ~/code/eng-server/log/exception.log|grep '`date +%Y-%m-%d\ %H:%M`' -C 40"|ccze -A
    		sleep 2
    	done
    fi
    
    
    if [ $1 -eq 2 ]
    then
    	while true;
    		do ansible main -m shell -a "tail -n 10 ~/code/eng-server/log/sys.log|grep '`date +%Y-%m-%d\ %H:%M`' -C 40"|ccze -A
    		sleep 2
    	done
    fi
    

    效果

    在这里插入图片描述

    展开全文
  • Python磁盘监控日志分析监控脚本

    万次阅读 2015-09-28 23:15:06
    因为公司异常监控系统还不够完善,特意在Linux服务器上加上Python监控脚本来实现简单的监控功能。功能: 1、磁盘使用率报警功能。在磁盘使用率超过我们定义的阈值时,会发送邮件到我们的邮箱来通知我们磁盘空间将要...

    前言:
    公司在十一放假期间需要对服务器和线上项目进行异常监控,以便在出现问题的时候能及时发现,及时地处理。因为公司异常监控系统还不够完善,特意在Linux服务器上加上Python监控脚本来实现简单的监控功能。

    功能:
    1、磁盘使用率报警功能。在磁盘使用率超过我们定义的阈值时,会发送邮件到我们的邮箱来通知我们磁盘空间将要不足。
    2、日志分析监控功能。根据关键字分析监控系统日志,并且报警,使系统问题能及时发现,及时处理。

    代码:log_monitor_real_time.py

    #coding:utf-8
    import os
    import re
    import smtplib
    import datetime
    import shelve
    from email.mime.text import MIMEText
    
    # 硬盘使用率报警阀值
    hd_usage_rate_threshold = 80
    
    # 要发给谁
    mailto_list=["******@17guagua.com","******@17guagua.com"]
    
    # 设置服务器,用户名、口令以及邮箱的后缀
    mail_host="smtp.17guagua.com"
    mail_user="******@17guagua.com"
    mail_pass="******"
    mail_postfix="17guagua.com"
    
    # 日志偏移
    log_offset = shelve.open('log_offset')
    
    # 取当天日期
    log_path_suffix=(datetime.date.today()).strftime('%Y-%m-%d')
    
    # 当前日期key
    cur_time = 'cur_time'
    
    # 日志路径
    app_info = {}
    app_info['event'] = ['/opt/log/guagua_web_event_extends/event-ext-'+log_path_suffix+'.log',['失败','异常'],[]]
    
    # 处理日志
    def analysis_log(appName ,appInfo):
        cur_time_val = get_shelve_value(cur_time)
        if cur_time_val == -1:
            set_shelve_value(cur_time, log_path_suffix)
        elif log_path_suffix != cur_time_val:
            set_shelve_value(appName, 0)
            set_shelve_value(cur_time, log_path_suffix)
    
        f1 = file(appInfo[0], "r")
        offset = get_shelve_value(appName)
        if offset != -1:
            f1.seek(offset,1)
        else:
            set_shelve_value(appName, 0)
        count = 0
        exceptionStr = ""
        for s in f1.readlines():
            searchKey = appInfo[1]
            if len(searchKey) > 0:
                for i in searchKey:
                    li = re.findall(i, s)
                    if len(li) > 0:
                        count = count + li.count(i)
                        exceptionStr = exceptionStr + " " + s
            else:
                li = re.findall('Exception', s)
                if len(li) > 0:
                    count = count + li.count('Exception')
                    exceptionStr = exceptionStr + " " + s
        set_shelve_value(appName, f1.tell())
        print appName + " 异常数量为 " + str(count)
        return [count, "---------------------------------" + appName + " ----------------------------- \n " + exceptionStr]
    
    #shelve 处理
    def set_shelve_value(key, value):
        log_offset[key] = value
    
    def get_shelve_value(key):
        if log_offset.has_key(key):
            return log_offset[key]
        else:
            return -1
    
    def del_shelve_value(key):
        if log_offset.has_key(key):
            del log_offset[key]
    
    # 发送邮件
    def send_mail(to_list,sub,content):
      me = mail_user + "<"+ mail_user + "@" + mail_postfix + ">"
      msg = MIMEText(content, 'html', 'utf-8')
      msg['Subject'] = sub
      msg['From'] = me
      msg['To'] = ";".join(to_list)
      try:
        s = smtplib.SMTP()
        s.connect(mail_host)
        s.login(mail_user,mail_pass)
        s.sendmail(me, to_list, msg.as_string())
        s.close()
        return True
      except Exception, e:
        print str(e)
        return False
    
    # 获得外网ip
    def get_wan_ip():
    	cmd_get_ip = "/sbin/ifconfig |grep 'inet addr'|awk -F\: '{print $2}'|awk '{print $1}' | grep -v '^127' | grep -v '192'"
            get_ip_info = os.popen(cmd_get_ip).readline().strip()
    	return get_ip_info
    
    # 检测硬盘使用
    def check_hd_use():
            cmd_get_hd_use = '/bin/df'
            try:
                fp = os.popen(cmd_get_hd_use)
            except:
                ErrorInfo = r'get_hd_use_error'
                print ErrorInfo
                return ErrorInfo
            re_obj = re.compile(r'^/dev/.+\s+(?P<used>\d+)%\s+(?P<mount>.+)')
            hd_use = {}
            for line in fp:
                match = re_obj.search(line)
                if match is not None:
                    hd_use[match.groupdict()['mount']] = match.groupdict()['used']
            fp.close()
            return  hd_use
    
    # 硬盘使用报警
    def hd_use_alarm():
        for v in check_hd_use().values():
    	if int(v) > hd_usage_rate_threshold:
    	    if send_mail(mailto_list,
    	       		 'System Disk Monitor',
    			 'nSystem Ip:%s\nSystem Disk Use:%s'
    			 % (get_wan_ip(),check_hd_use())):
    		     print  "sendmail success!!!!!"
    	else:
    	     print "disk not mail"
    
    if __name__ == '__main__':
      hd_use_alarm()
      exceptionCount = 0
      exceptionContents = "";
      for key in app_info:
        exceptionContent = analysis_log(key, app_info[key])
        exceptionCount += exceptionContent[0]
        exceptionContents += exceptionContent[1]
        exceptionContents = exceptionContents + "*********************************************** \n"
    
      print exceptionCount
      if exceptionCount > 0:
        if send_mail(mailto_list, get_wan_ip() + " 日志报警",exceptionContents):
            print "发送成功"
        else:
            print "发送失败"
    
    

    说明:
    1、设置磁盘报警阈值
    这里写图片描述

    2、指定收件人(一个或者多个)
    这里写图片描述

    3、增量分析日志 ,例如 如果设置定时任务每一个小时执行,那么分析的文件为 前一个小时的文件内容,可以根据时间调整

    4、指定日志和关键字(一个或者多个)
    这里写图片描述

    5、指定多个系统日志路径
    这里写图片描述

    使用方法:
    脚本类型 : python
    脚本路径 : 家目录 cd ~
    需要配合linux 定时任务(crontab -e), 比如 0 */1 * * * python /root/log_monitor_real_time.py (每一个小时执行一次)
    这里写图片描述

    注意事项:
    1、测试时可以先手动执行脚本 python /root/log_monitor_real_time.py ,每次执行会生成 log_offset 文件,
    2、如果再次测试需要先把这个文件删掉,因为这个文件记录了文件偏移量,如果不删除,读到的文件开始位置将会是上次处理过的位置

    如果想看效果,大家就自己试试吧~~~

    展开全文
  • linux日志监控和定期处理脚本

    千次阅读 2018-09-17 20:13:18
    具体场景:服务器产生的日志量非常大,每天将近100M+的日志量,所以博主写了一个日志的分隔脚本;每隔2小时执行一次,当日志文件超过6M时,将日志进行转存,命名格式为20180917-12.log,这样可以防止单个日志文件过...

    具体场景:服务器产生的日志量非常大,每天将近100M+的日志量,所以博主写了一个日志的分隔脚本;每隔2小时执行一次,当日志文件超过6M时,将日志进行转存,命名格式为20180917-12.log,这样可以防止单个日志文件过大,打开时非常耗CPU,【曾经测试在linux上打开1G的纯文本文件,2G内存 双核虚拟机几乎崩溃,CPU瞬间飚满;在Windows下更打不开】所以将日志进行切割转存,但由于日志量太大,所以要进行定期清除日志,规则:当所有日志文件超过3G时,删除掉日期最早的日志文件,这样可以保证硬盘空间的相对稳定,也保留最近期的日志文件。具体实现脚本如下:

    #!/bin/bash

    #log.sh

    #获取所有日志文件的总大小,单位M[此处假设,所有日志存在/mnt/log路径下]

    size_all=`du -s -m /mnt/log/ | awk '{print $1}'`

    date=88888888

    #当/mnt的总容量大于200M时,删除最早创建的日志文件

    if [[ $size_all -gt 3000]]; then

        for i

    展开全文
  • Linux性能监控脚本

    2012-06-30 12:03:04
    对系统负载、CPU使用率、内存、交换分区、磁盘空间、用户登录情况进行监控,并写入监控日志、各项指标超过警告值则邮件报警
  • linux 系统 实时监控shell执行命令 记录日志 原理 在linux系统中,history命令可以输出历史命令,历史命令默认保存在文件~/.bash_history中。 扩展 HISTFILESIZE 定义了在 .bash_history 中最大保存命令的记录数 ...
  • linux流量监控脚本

    2013-11-26 10:16:12
    #######################脚本内容如下####################### #!/bin/bash ##作用:监控eth0端口的流量 ##可以将eth0换为eth1等其他端口 ##作者:Barlow ##2012-12-10 #取初始流量值 R1=`cat /sys/class/...
  • linux 版看门狗脚本日志功能,定时检测程序存活,重启程序。ubuntu下功能很强大。ubuntu下功能很强大。ubuntu下功能很强大。
  • PublicSysMoniror.sh:公用系统监控脚本,用于远程监控,调用公用监控脚本入口 sysCpuMemDiskMonitor.sh:系统CPU内存和硬盘使用率监控 cleanLogFile.sh:清理日志文件脚本 ProbeUrlMonitor.sh:探测URL监控...
  • linux监控命令或脚本执行情况
  • 即对日志文件中的error进行监控...1)第一类日志在每天的日志目录下生产的error日志,此日志文件每天都会自动生成,里面有没有error日志内容不一定,日志内容写入不频繁,日志文件比较小。举例说明: [root@fk-dat...
  • Linux CPU 监控脚本

    2012-02-20 15:09:18
    #下面是一个简单的CPU监控脚本,当然还可以在进行全面考虑升级该脚本。 #!/bin/sh #-gt "60" 服务器只有一个CPU scriptdir=/root/shell/cpu_jk #目录存放 logdir=$scriptdir/log #日志文件存放及目录创建/清理 ...
  • linux进程监控重启shell脚本

    千次阅读 2017-08-30 09:05:49
    本文主要内容: shell日志date format shell poll监控重新运行,挂了则重启程序 前段时间工作需要使用python+scrapy写了个新闻舆情爬虫系统,服务器上面跑了大概5个月,期间莫名其妙的挂了2~3次。最终决定使用shell...
  • 1、脚本三大功能: 监控某一指定文件:文件大小和ERROR信息; 文件大于某一设定阀值,则移动该...1)全量脚本监控脚本、时钟脚本、发邮件脚本; 2)运行截屏:显示文件移动的源目录和备份目录; 显示日志记录;
  • 几个常用的Linux监控脚本

    千次阅读 2012-06-20 16:08:02
    最近时不时有互联网的朋友问我关于服务器监控方面的问题,问常用的服务器监控除了用开源软件,比如:cacti,nagios监控外是否可以自己写shell脚本呢?根据自己的需求写出的shell脚本更能满足需求,更能细化主机监控...
  • 主要介绍了linux自动清理日志脚本,主要功能是清理所有目录的日志,根据给定日志目录,删除时间 结合crontab进行清理日志
  • linux 监控keepalived脚本

    千次阅读 2015-05-25 17:54:43
    #!/bin/bash proc_name='keepalived -D' # 进程名 file_name="/tmp/moniterkeepalived.log" # 日志文件 pid=0 proc_num() # 计算进程
  • 采用shell脚本编写,通过读取配置文件,检测应用程序关键日志是否有更新和检测日志中是否有关键字错误,并输出错误量及相关报错信息,对接至网管的神器
  • linux实战(一)----日志的截取-----文本过滤器grep、文本流式编辑器sed、报表生成器awk的运用 本文主要记录 这三个命令的运用,一些监控实例的讲解。 对进程是否存在进行监控 思路 在对进程进行监控时,也...
  • linux系统整体监控脚本

    千次阅读 2009-03-10 23:54:00
    author:skatetime :2009/03/10 os平台:centos 4.7作为DBA要时刻注意系统的整体状况,我们不能人为的一直监控系统这就需要DBA要写一些日常的...monilog_timeswitch.sh :日志轮询脚本,保留最近5个监控日志,定期删除最
  • Shell脚本如下: #/bin/bash #disk space for d in `df -P | grep /dev | awk '{print $5}' | sed 's/%//g'` do if [ $d -gt 20 ]; then msg="TIME:$(date +%F_%T)
  • 内容简介:今天要做在linux监控tomcat的脚本文件,每隔30秒监控一次,并且当tomcat停止运行发送邮件提醒。 1.monitorTomcat.sh linux脚本文件,到所在文件路径下, 需要文件授予权限chmod u+x monitorT...
  • 一、安装linux下面的一个邮件客户端msmtp软件(类似于一个foxmail的工具) 1、下载安装: 代码如下:# tar jxvf msmtp-1.4.16.tar.bz2# cd msmtp-1.4.16# ./configure –prefix=/usr/local/msmtp# make# make install...
  • 使用脚本命令监控网站日志

    千次阅读 2015-07-15 12:44:03
    下面的内容是使用linux/unix作为网站的朋友一定要...),手里掌握一些监控、分析日志脚本显的尤为重要!下面的代码可以监控最近的访客日志,相当有用。 一、实时过滤日志 使用 tail -f 命令可以查看日志文件最近新
  • 该程序使用场景说明:主要用域Linux服务器监控程序日志,如出现关键字异常则触发相应的动作或告警操作,通知到邮件联系人
  • linux运维中,我们经常希望自己运行的脚本能够打印相应的日志,以便出现问题方便排查,shell脚本最简单的打印日志就是把代码运行的结果不断的写入一个文件中去,通过重定向(>>)实现。同时我们也希望能够监控...
  • Linux平台 下 进程监控自动 重启 恢复脚本, 测试 centos平台下 java, springboot 通过
  • Linux+性能监控之CPU&内存&IO监控Shell脚本 #!/bin/bash # 获取要监控的本地服务器IP地址 IP=`ifconfig eth0 | grep "inet addr" | cut -f 2 -d ":" | cut -f 1 -d " "` echo "IP地址:"$IP # 获取cpu总...
  • glances(资源监控工具)在实际工作中,Linux 系统管理员可以根据自己使用的服务器的具体情况编写一下简单实用的脚本实现对 Linux 服务器的监控。 本文介绍一下使用 Python 脚本实现对 Linux 服务器 CPU 内存 网络...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 56,522
精华内容 22,608
关键字:

linux监控实时监控日志内容脚本

linux 订阅