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

$a = get-date
$b = $a.adddays(-)
$c = $b.tostring('yyyy-MM-dd')
$d = get-date -format 'yyyy-MM-dd'

$x = 'T00:00:00'
$y = 'T23:59:00'

$A = $c+$x
$B = $d+$y

} | 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  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  "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  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 " $i | wc -l`
        ]; then
           echo "$i have problem"
           grep -v ' $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"
      ;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
      ;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
       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
esac

待补充

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

  1. ELK收集windows服务器日志笔记

    一.软件版本 1.jdk-8u211-linux-x64.rpm 2.elasticsearch-6.8.1.rpm 3.logstash-6.8.1.rpm 4.kibana-6.8.1-x86_6 ...

  2. 案例:使用logstash收集游戏服务器日志,输出到kafka消息队列中,然后存入ES

    gamelogs2kafka.conf input { file { codec => plain { charset => "UTF-8" } path => ...

  3. 如何查看Windows服务器运行了多长时间

    前言:有时候管理.维护Windows服务器需要定期重启服务器(为什么需要重启,你懂的),但是这个"定期"有时候会受很多因素影响,例如某台服务器忘了重启:某台服务器那个时间段业务繁忙 ...

  4. Syslog和Windows事件日志收集

    Syslog和Windows事件日志收集 EventLog Analyzer从分布式Windows设备收集事件日志,或从分布式Linux和UNIX设备.交换机和路由器(Cisco)收集syslog.事 ...

  5. elk收集windows日志

    参考网站:https://www.secpulse.com/archives/55636.html https://blog.csdn.net/qq_38094271/article/details/ ...

  6. Tomcat在windows服务器下,将tomcat控制台日志记录到日志文件中

    Tomcat在windows服务器下,将tomcat控制台日志记录到日志文件中 在Linux系统中,Tomcat 启动后默认将很多信息都写入到 catalina.out 文件中,我们可以通过tail  ...

  7. 关于windows服务器的Security安全类日志的导出

    对于windows服务器,日志的分类会有很多,可以通过wevtutil el 列出 有时可能会对Security安全类日志进行审计,这里简单讲一下安全类日志的导出方法 1.直接在cmd中执行 wevt ...

  8. 12G服务器在BIOS中收集阵列卡日志(TTY日志)的方法

      如果系统进不去.请参考如下方法收集日志. 请准备个U 盘,容量在8G以下(含8G),否则会识别不到. 图片参考,以描述为准 F2 enter BIOS option--> Enter the ...

  9. ELK收集Nginx自定义日志格式输出

    1.ELK收集日志的有两种常用的方式: 1.1:不修改源日志格式,简单的说就是在logstash中转通过 grok方式进行过滤处理,将原始无规则的日志转换为规则日志(Logstash自定义日志格式) ...

随机推荐

  1. Ubuntu系统--安装官方flash插件包的方法

    浏览器安装官方install_flash_player_npapi_linux.x86_64.tar.gz插件包的方法 第一步:下载安装包. adobe flash player的官方下载instal ...

  2. 详解Object.create(null)

    在Vue和Vuex的源码中,作者都使用了Object.create(null)来初始化一个新对象.为什么不用更简洁的{}呢? 在SegmentFault和Stack Overflow等开发者社区中也有 ...

  3. cookie和Session是啥?

    HTTP是无状态(stateless)协议 http协议是无状态协议即不保存状态. 无状态协议的优点: 由于不需要保存记录,所以减少服务器的CPU和内存的资源的消耗.毕竟客户端一多起来保存记录的话对于 ...

  4. binlog2sql闪回工具的使用

    binlog2sql闪回工具的使用 一.下载安装依赖的python yum install openssl-devel bzip2-devel expat-devel gdbm-devel readl ...

  5. DNS服务基础

    DNS服务器的功能 – 正向解析:根据注册的域名查找其对应的IP地址 – 反向解析:根据IP地址查找对应的注册域名(不常用) NS(声明DNS记录) A(正向解析记录) CNAME(解析记录别名) 安 ...

  6. virtualBox中有线和无线两种情况下centos虚拟机和本地机互ping的方案

    之前写微信点餐系统的时候,刚开始是无线连接,然后每次进去虚拟机ip和本地ip都会改变,所以每次都需要配置一下nginx,还有本地的路径.之后换有线连接,就研究了一下桥接模式有线情况下虚拟机静态ip设置 ...

  7. Noip2016 提高组 Day2 T1 组合数问题

    题目描述 组合数表示的是从n个物品中选出m个物品的方案数.举个例子,从(1,2,3) 三个物品中选择两个物品可以有(1,2),(1,3),(2,3)这三种选择方法.根据组合数的定 义,我们可以给出计算 ...

  8. oracle表查询

    使用scott用户中存在的emp.dept表等做演示 一.单表查询 查看表结构:desc dept; 查看所有列:select * from dept: 查询指定列:select ename,sal, ...

  9. AcWing:239. 奇偶游戏(前缀和 + 离散化 + 带权并查集 + 异或性质 or 扩展域并查集 + 离散化)

    小A和小B在玩一个游戏. 首先,小A写了一个由0和1组成的序列S,长度为N. 然后,小B向小A提出了M个问题. 在每个问题中,小B指定两个数 l 和 r,小A回答 S[l~r] 中有奇数个1还是偶数个 ...

  10. [笔记]C++拷贝构造和移动构造

    一.拷贝构造 如果一个构造函数的第一个参数是自身类类型的引用,且任何额外参数都没有默认值,则此构造函数是拷贝构造函数.(<C++Primer,第五版>) class Foo { publi ...