salt收集windows服务器日志时间

定义收集时间区间: time.ps1

$day = get-date -format ‘dd‘
$bday = $day-1
$btime = get-date -format yyyy-M-
$qtime = $btime+$bday

$htime = get-date -format yyyy-M-d
$a = ‘T00:00:00‘
$b = ‘T23:59:00‘

$A = $qtime+$a
$B = $htime+$b

get-eventlog -logname system -after $A -before $B | where {$_.eventID -eq 1} | Format-List

使用salt分发time.ps1文件到各Windows sever中:copydir.sls

copy_dir:
  file.managed:
    - name: C:\opstools\time.ps1
    - source: salt://zhouz/time.ps1
    - makedirs: ‘True‘
  cmd.run:
    - name: powershell.exe C:\opstools\time.ps1

使用脚本收集日志并分析

#!/bin/bash
#

fdir="/tmp/first"
sdir="/tmp/second"
tdir="/tmp/third"
fodir="/tmp/forth"

ColLogs() {
    echo "收集原始系统日志:"
    [ -d $fdir ] && rm -rf $fdir && mkdir $fdir || mkdir $fdir
    #weblist=`salt "主机名" test.ping | grep -v "True" | awk -F ‘:‘ ‘{print $1}‘`
    #list="`salt "主机名" test.ping | grep -v "True" | awk -F ‘:‘ ‘{print $1}‘ | xargs echo`"
    list="`salt "主机名" test.ping | grep -v "True" | xargs echo | sed "s/://g"`"
    for i in $list; do
       salt "$i" state.sls zhouz.copydir &> $fdir/$i
       echo "$i is ok"
    done
}

TreatLogsA() {
   echo "整理初始化日志(为对比天、小时、分钟、秒钟等字符串是否一致做准备):"
   [ -d $tdir ] && rm -rf $tdir && mkdir $tdir || mkdir $tdir
   cd $fdir
   for i in $(ls BX*); do
       grep -A 1 ReplacementStrings $i | xargs echo >$tdir/$i
       cd $tdir
       sed -i ‘s/--/&\n/g‘ $i
       sed -i ‘s/--\|{\|}\|[[:space:]]//g‘ $i
      #sed -i ‘s/,/ /g‘ $i
       sed -i ‘s/,/\./g‘ $i
       sed -i ‘s/Z//g‘ $i
      #sed -i ‘s/\./:/g‘ $i
       sed -i ‘s/ReplacementStrings://g‘ $i
      #sed -i ‘s/T/:/g‘ $i
      #sed -i ‘s/2019-07-[0-9][0-9]T//g‘ $i
      #sed -i ‘s/\.[0-9]\{4,10\}Z//g‘ $i
       echo "$i is ok"
       cd $fdir
    done
}

TreatLogsB() {
   echo "对收集的初始系统日志进行整理(为对比 毫秒差值 做准备):"
   [ -d $sdir ] && rm -rf $sdir && mkdir $sdir || mkdir $sdir
   cd $fdir
   for i in $(ls BX*); do
       grep -A 1 "ReplacementStrings" $i | xargs echo >$sdir/$i
       cd $sdir
       sed -i ‘s/--/&\n/g‘ $i
       sed -i ‘s/--\|{\|}\|[[:space:]]\|Z//g‘ $i
       sed -i ‘s/,/:/g‘ $i
       sed -i ‘s/\,\ 1//g‘ $i
     # sed -i ‘s/\./:/g‘ $i  此处将 . 去掉
       sed -i ‘s/\.//g‘ $i
       sed -i ‘s/ReplacementStrings://g‘ $i
       sed -i ‘s/T/:/g‘ $i
     # sed -i ‘s/2019-07-[0-9][0-9]T//g‘ $i
       echo "$i is ok"
       cd $fdir
    done
}

TreatLogsC() {
   echo "对收集的初始系统日志进行整理(为对比 秒差值 做准备):"
   [ -d $fodir ] && rm -rf $fodir && mkdir $fodir || mkdir $fodir
   cd $fdir
   for i in $(ls BX*); do
       grep -A 1 ReplacementStrings $i | xargs echo >$fodir/$i
       cd $fodir
       sed -i ‘s/--/&\n/g‘ $i
       sed -i ‘s/--\|{\|}\|[[:space:]]\|Z//g‘ $i
       sed -i ‘s/,/:/g‘ $i
       sed -i ‘s/\./:/g‘ $i
      #sed -i ‘s/\.//g‘ $i
       sed -i ‘s/ReplacementStrings://g‘ $i
       sed -i ‘s/T/:/g‘ $i
      #sed -i ‘s/2019-07-[0-9][0-9]T//g‘ $i
       echo "$i is ok"
       cd $fdir
    done
}

LogsDay() {
    echo "对比两列数据中秒钟是否一致:"
    cd $fodir
    mkdir $fodir/dtime &>/dev/null
    for i in $(ls BX*); do
       #cat $i | awk -F ":" ‘{print $1,":"$2,":"$3,($4-$9)}‘ >$fodir/dtime/$i
       cat $i | awk -F ":" ‘{print ($4-$9)}‘ >$fodir/dtime/$i
       cd $fodir/dtime
       #count=`grep -E -v "0|1" $i | wc -l`
       count=`grep -E -v "0" $i | wc -l`
       if [ $count -ge 1 ]; then
           echo "$i have problem"
           grep -v ‘0‘ $i
       else
           echo "$i is ok"
       fi
       cd $fodir
    done
}

DisTimePeriodA() {
   echo "对比天、小时、分钟、秒钟等字符串是否一致(批量)"
   cd $tdir
   mkdir $tdir/dtime &>/dev/null
   read_file=‘BX*‘
   for file in ${read_file}; do
      echo "$file"
      for ((i=1;i<=$(cat $file| wc -l);i++)); do
         #first="$(sed -n ${i}p $file| awk ‘{print $1}‘)"
         first="$(sed -n ${i}p $file| awk -F "." ‘{print $1}‘)"
         #second="$(sed -n ${i}p $file | awk ‘{print $2}‘)"
         second="$(sed -n ${i}p $file | awk -F "." ‘{print $3}‘)"
         #echo "${first}"
         #echo "${second}"
         if [ "${first}" == "${second}" ]; then
            echo "${first} = ${second}" &>/dev/null
         else
            A="$(grep $first $file)"
            #B="$(grep $second $file)"
            #echo "  ${first} != ${second}"
            echo "  ${A}"
         fi
      done
      echo " "
   done
}

DisTimePeriodB() {
   echo "对比天、小时、分钟、秒钟等字符串是否一致(只查询有问题的主机)"
   cd $tdir
   mkdir $tdir/dtime &>/dev/null
   #read_file=‘BX*‘
   #for file in ${read_file}; do

      read -p "请输入有问题的主机名: " file
      echo "$file" >>$tdir/dtime/$file
      for ((i=1;i<=$(cat $file| wc -l);i++)); do
        #first="$(sed -n ${i}p $file| awk ‘{print $1}‘)"
         first="$(sed -n ${i}p $file| awk -F "." ‘{print $1}‘)"
        #second="$(sed -n ${i}p $file | awk ‘{print $2}‘)"
         second="$(sed -n ${i}p $file | awk -F "." ‘{print $3}‘)"
         if [ "${first}" == "${second}" ]; then
            echo "${first} = ${second}" &>/dev/null
         else
            #echo "  ${first} != ${second}" >>$tdir/dtime/$file
            A="$(grep $first $file)"
            echo " ${A}"
         fi
      #   echo " " >>$tdir/dtime/$file
      done
   #done
}

LogsMillisecond() {
    echo "对比两列数据中 毫秒 是否一致:"
    cd $sdir
    mkdir $sdir/mtime &>/dev/null
    for i in $(ls BX*); do
       cat $i | awk -F ":" ‘{print $1,":"$2,":"$3,($4-$8)}‘ | sort -t $‘ ‘ -k4 -n >$sdir/mtime/$i
       cd $sdir/mtime
       echo "=================================================="
       echo "$i 两列毫秒为正数的数值最高的10个"
       cat  $i |tail
       #echo "=================================================="
       #echo "$i 两列毫秒为正数的数值最小的10个"
       #cat $i |grep -v ‘\-[0-9][0-9][0-9][0-9][0-9]‘ |head -15
       echo "=================================================="
       echo "$i 两列毫秒为负数的数值最大的10个"
       cat $i |grep ‘\-[0-9][0-9][0-9][0-9]‘ | head
       #echo "=================================================="
       #echo "$i 两列毫秒为负数的数值最小的10个"
       #cat $i |grep ‘\-[0-9][0-9][0-9][0-9]‘ | tail
       cd $sdir
    done
}

#ColLogs
a="ColLogs"
b="TreatLogsA"
c="TreatLogsB"
d="TreatLogsC"
e="LogsDay"
f="DisTimePeriodA"
g="DisTimePeriodB"
h="LogsMillisecond"

echo "请选择你想要执行的功能:
 a: ColLog           收集windows server初始日志;
 b: TreatLogsA       整理初始化日志(为对比天、小时、分钟、秒钟等字符串是否一致做准备);
 c: TreatLogsB       整理初始化日志(为对比  毫秒  差值做准备);
 d: TreatLogsC       整理初始化日志(为对比  秒  差值做准备);
 e: LogsDay          对比两列数据中<< 秒 >>是否一致;
 f: DisTimePeriodA   对比天、小时、分钟、秒钟等字符串是否一致(批量显示);
 g: DisTimePeriodB   对比天、小时、分钟、秒钟等字符串是否一致(只查询有问题的主机);
 h: LogsMillisecond  对比两列数据中<< 毫秒 >>是否一致."

read -n3 -p "请输入:" opt
case $opt in
  a)
    $a ;;
  b)
    $b ;;
  c)
    $c ;;
  d)
    $d ;;
  e)
    $e ;;
  f)
    $f ;;
  g)
    $g ;;
  h)
    $h ;;
  *)
   echo "No opt"
   exit 1
esac

待补充

原文地址:https://www.cnblogs.com/hanshanxiaoheshang/p/11768063.html

时间: 2024-10-28 20:01:32

salt收集windows服务器日志时间的相关文章

windows服务器同步时间

前言:上个礼拜公司的一台内部服务器出现时间延时的问题,对服务器进行时间的校正操作 直接上图 反正我觉得系统自带的时间同步服务器不是太好,自己搜了一些时间同步服务器 server time.asia.apple.comserver 2.cn.pool.ntp.orgserver 1.centos.pool.ntp.orgserver 0.tw.pool.ntp.orgserver cn.pool.ntp.org 自己觉得可以的话,自行更换一下 再不行的话就下载一个'北京时间校准器'

如何收集Windows cluster日志

Cluster日志收集: 登录到任意一个群集的节点,在命令提示符下执行:cluster  log  /g ,之后会在节点主机生成cluster.log ,路径为:C:\Windows\cluster\reports\cluster.log 执行命令后,会在群集的所有节点上自动收集日志.

windows服务器清理系统垃圾日志文件

Windows服务器的系统盘如果是2003系统的话那么我们默认给10G的空间就够了,但是有时候我们不经意去查看系统盘的时候发现已经使用了9.9G,其实多是垃圾日志文件占用系统盘空间,使用如下批处理将这些文件删除. 在桌面新建一个文本文档,将如下代码复制进去: @echo off echo 正在清除系统垃圾文件,请稍等...... del /f /s /q %systemdrive%\*.tmp del /f /s /q %systemdrive%\*._mp del /f /s /q %syst

教你如何在Windows局域网与服务器同步时间

教你如何在Windows局域网与服务器同步时间 有联网的电脑,大家都知道可以通过网络来校正系统时间,那没有网络的局域网呢?它的时间又是怎么同步和校正的呢?下面来教大家如何通过设置时间服务器来给局域网内的其他电脑同步时间,具体步骤如下: 工具/原料 NTP(Network Time Protocol,网络时间协议)是用来同步网络中的各个计算机时间的一种协议. 两大步骤:一是先设置服务器:二是设置要同步的电脑. 方法/步骤 首先,我们要先来设置服务器端,开启NTP服务,这个协议必需要在服务器端启动才

Windows登录日志详解

摘要: 日志在很多时候是非常重要的,尤其是登录日志.从登录日志中可以发现很多有价值的信息,window2008及以后的日志基本一致,2003由于时间太长,微软都停止更新了,所以重点介绍2008的登录日志. 一. Windows登录类型 Windows登录类型对应含义如下表: 类型ID 登录方式 描述信息 2 Interactive A user logged on to this computer at the console 3 Network A user or computer logge

Linux服务器 -- 日志篇

志对于安全来说,非常重要,它记录了系统每天发生的各种各样的事情,你可以通过他来检查错误发生的原因,或者受到攻击时攻击者留下的痕迹.日志主要的功能有:审计和监测.他还可以实时的监测系统状态,监测和追踪侵入者等等.正因为如此,抚琴煮酒特的将它整理成一篇比重跟硬件篇.网络篇并列的文章,作为<明明白白你的Linux服务器>系列的第三篇,希望大家能从中学习到对自己有用的东西. 一.配置syslog(gyl4802959同学撰写) 目前,linux依旧使用syslogd作为日志监控进程,对其进行必要的配置

windows服务器详细安全设置

1).系统安全基本设置 1.安装说明:系统全部NTFS格式化,重新安装系统(采用原版win2003),安装杀毒软件(Mcafee),并将杀毒软件更新,安装sp2补钉,安装IIS(只安装必须的组件),安装SQL2000,安装.net2.0,开启防火墙.并将服务器打上最新的补钉. 2).关闭不需要的服务 Computer Browser:维护网络计算机更新,禁用 Distributed File System: 局域网管理共享文件,不需要禁用 Distributed linktracking cli

【处理多服务器日志合并处理问题】多服务器的日志合并统计——apache日志的cronolog轮循

转发:http://www.chedong.com/tech/rotate_merge_log.html 内容摘要:你完全不必耐心地看完下面的所有内容,因为结论无非以下2点:1 用 cronolog 干净,安全地轮循apache"日"志2 用 sort -m 合并排序多个日志或者用: clfmerge合并日志 根据个人的使用经历:1 先介绍apache日志的合并方法:2 然后根据由此引出的问题说明日志轮循的必要性和解决方法,介绍如何通过cronolog对apache日志进行轮循:中间有

web站点服务器日志管理及分析

管理Web网站不只是监视Web的速度和Web的内容传送.它不仅要关注服务器每天的吞吐量,还要了解这些Web网站的外来访问,了解网站各页面的访问情况.根据各页面的点击频率来改善网页的内容和质量,提高内容的可读性,以及跟踪包含有商业交易的步骤及管理Web网站"幕后"的数据等. 为了更好地提供WWW服务,监控Web服务器的运行情况.了解网站内容的详细访问状况就显得越来越重要和迫切了.而这些要求都可以通过对Web服务器日志文件的统计和分析来实现.本文将对Web服务器日志分析的原理和技术进行讨论