精华内容
下载资源
问答
  • nginx 日志统计接口小时访问量

    千次阅读 2019-10-08 12:49:02
    指定时间段增量统计nginx日志不同接口的访问量: #!/bin/bash#此脚本用于统计nginx日志当前时间15分钟之内不同接口(URL)的访问量统计LOG=/usr/local/nginx/logs/interface.access.logTMP=/tmp/url.tmpURLSTATS=/...

    指定时间段增量统计nginx日志不同接口的访问量:

    #!/bin/bash
    #此脚本用于统计nginx日志当前时间15分钟之内不同接口(URL)的访问量统计
    LOG=/usr/local/nginx/logs/interface.access.log
    TMP=/tmp/url.tmp
    URLSTATS=/var/log/interface_urlstats.log
    RECEIVERS="test1@test.com test2@test.com"
    #删除临时统计文件
    [ -f $TMP ] && rm -fr $TMP
    for i in `seq 15`
    do
    d=`date +%d/%h/%Y:%H:%M -d "$i minutes ago"`
    #将每个时间段的URL进行统计并追加到临时文件
    awk -v b="$d" '{if ($4 ~ b)a[$7]++}END{for(i in a)printf("%-42s %-d\n", i,a[i])}' $LOG >> $TMP
    done
    #将汇总到临时文件的URL统计进行汇总
    if [ -s $TMP ];then
    awk '{a[$1]+=$2;}END{for(i in a)printf("%-42s %-d\n", i,a[i])}' $TMP | sort -nr -k2 > $URLSTATS
    mail -s "$(date +%F-%H:%M) 15分钟的URL访问量统计" "$RECEIVERS" <$URLSTATS
    else
    echo "需要统计的时间段日志文件没有被成功处理"

     

     

     

    转载于:https://www.cnblogs.com/python-xiakaibi/p/10764294.html

    展开全文
  • Flink实现从当日0点到现在的各类日志条数,且每小时生成一条统计值 import java.text.SimpleDateFormat import java.util.{Date, Properties} import org.apache.flink.api.scala._ import ...

    Flink实现统计每个小时的各类日志条数

    import java.text.SimpleDateFormat
    import java.util.{Date, Properties}
    import org.apache.flink.api.scala._
    import com.google.gson.{JsonObject, JsonParser}
    import com.iflytekzunhong.util.RedisPoolUtil
    import org.apache.flink.api.common.functions.{AggregateFunction, ReduceFunction}
    import org.apache.flink.api.common.serialization.SimpleStringSchema
    import org.apache.flink.api.common.state.{ValueState, ValueStateDescriptor}
    import org.apache.flink.api.scala.typeutils.Types
    import org.apache.flink.streaming.api.TimeCharacteristic
    import org.apache.flink.streaming.api.functions.timestamps.BoundedOutOfOrdernessTimestampExtractor
    import org.apache.flink.streaming.api.scala.StreamExecutionEnvironment
    import org.apache.flink.streaming.api.scala.function.WindowFunction
    import org.apache.flink.streaming.api.windowing.assigners.{TumblingEventTimeWindows, TumblingProcessingTimeWindows}
    import org.apache.flink.streaming.api.windowing.evictors.TimeEvictor
    import org.apache.flink.streaming.api.windowing.time.Time
    import org.apache.flink.streaming.api.windowing.triggers.{ContinuousEventTimeTrigger, Trigger, TriggerResult}
    import org.apache.flink.streaming.api.windowing.windows.TimeWindow
    import org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumer010
    import org.apache.flink.util.Collector
    import org.apache.log4j.{Level, Logger}
    
    
    
    object FlinkDemand3 {
      Logger.getLogger("org").setLevel(Level.ERROR)
      var logs = ""
    
      case class optDemo(opt: Int, num: Int)
    
      def main(args: Array[String]): Unit = {
        //创建flink运行环境
        val env: StreamExecutionEnvironment = StreamExecutionEnvironment.createLocalEnvironment(1)
        //设置为事件时间模式(即产生这条日志的时间)
        env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime)
        //kafka 的配置
        val kafkaProperties = new Properties()
        kafkaProperties.setProperty("bootstrap.servers", "172.16.88.130:9092, 172.16.88.136:9092, 172.16.88.145:9092")
        kafkaProperties.setProperty("group.id", "console-consumer-20516")
        kafkaProperties.setProperty("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer")
        kafkaProperties.setProperty("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer")
        kafkaProperties.setProperty("auto.offset.reset", "latest")
        //导入隐式转换
        import org.apache.flink.streaming.api.scala._
        //指定source
        val DStream: DataStream[String] = env.addSource(new FlinkKafkaConsumer010[String]("streamingTest", new SimpleStringSchema(), kafkaProperties))
        //解析json
        val value: DataStream[(String, (Int, Long))] = DStream.map(jstr => gsonPair(jstr)).map(obj => (obj.get("call").getAsString, (obj.get("opt").getAsInt, obj.get("makT").getAsLong)))
        //绑定事件时间戳
        val watermarkStream: DataStream[(String, (Int, Long))] = value.assignTimestampsAndWatermarks(new BoundedOutOfOrdernessTimestampExtractor[(String, (Int, Long))](Time.seconds(1)) {
          override def extractTimestamp(t: (String, (Int, Long))): Long = t._2._2
        })
    
        //需求:从当日0点到现在的opt条数,且每小时生成一条统计值
        watermarkStream.map(row => optDemo(row._2._1, 1))
          .keyBy(_.opt)
          //1.定义一个 1分钟的窗口(实际需求是1小时),允许数据延迟2秒进来(意思就是窗口会延迟2秒销毁,中间如果有数据进来,会触发计算)
          .window(TumblingEventTimeWindows.of(Time.minutes(1))).allowedLateness(Time.seconds(2))
          /*      测试开窗口 15秒,允许1秒迟到
                .timeWindow(Time.seconds(15)) //.allowedLateness(Time.seconds(1))
                .trigger(ContinuousEventTimeTrigger.of(Time.seconds(1)))*/
          //2、自己定义的一个每秒计算一次的触发器
          .trigger(new TimeOneSecondTrigger)
          //3、在计算之后,把30秒前的数据清除掉
          .evictor(TimeEvictor.of(Time.seconds(30), true))
          //4、自己定义的一个聚合方法,因为不需要去重,所以保留结果值就可以了
          .aggregate(new AggregateState)
          //5、打印出结果值,生产环境直接插入mysql中
          .addSink(row => {
          row._1 match {
            case 27 => println("订购次数" + row._2)
            case 7 => println("体验次数" + row._2)
            case 77 => println("体验过期次数" + row._2)
            case 49 => println("退订次数" + row._2)
            case _ => println("其他")
          }
        }
        )
    
        env.execute()
      }
    
      def gsonPair(str: String) = {
        val json = new JsonParser()
        val obj = json.parse(str).asInstanceOf[JsonObject]
        obj
      }
    
      /*参数:输入类型、累加器ACC类型、返回新的累加器*/
      class AggregateState extends AggregateFunction[optDemo, (Int, Int), (Int, Int)] {
    
    
        override def createAccumulator(): (Int, Int) = (0, 0)
    
        override def add(in: optDemo, acc: (Int, Int)): (Int, Int) = (in.opt, in.num + acc._2)
    
        override def getResult(acc: (Int, Int)): (Int, Int) = acc
    
        override def merge(acc: (Int, Int), acc1: (Int, Int)): (Int, Int) = (acc._1, acc._2 + acc1._2)
      }
    
    /*   CONTINUE:什么也不做
           FIRE:触发计算
           PURGE:清除窗口中的数据
           FIRE_AND_PURGE:触发计算并清除窗口中的数据*/
      class TimeOneSecondTrigger extends Trigger[optDemo, TimeWindow] {
        var count = 0
        val sdf = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss")
    
        //每行数据进来出发该方法
        override def onElement(t: optDemo, l: Long, w: TimeWindow, triggerContext: Trigger.TriggerContext): TriggerResult = {
          var valueState: ValueState[Boolean] = triggerContext.getPartitionedState(new ValueStateDescriptor[Boolean]("flinkDemo", Types.of[Boolean]))
          if (!valueState.value()) {
            val t = triggerContext.getCurrentWatermark + (1000 - (triggerContext.getCurrentWatermark % 1000))
            //注册
            triggerContext.registerEventTimeTimer(t)
            //注册窗口结束时的事件
            triggerContext.registerEventTimeTimer(w.getEnd)
            //关闭
            valueState.update(true)
          }
          TriggerResult.CONTINUE
        }
    
        //处理时间触发该方法,但是此处我们并不需要,所以不作任何处理
        override def onProcessingTime(l: Long, w: TimeWindow, triggerContext: Trigger.TriggerContext): TriggerResult = TriggerResult.CONTINUE
    
        //触发事件时间
        override def onEventTime(l: Long, w: TimeWindow, triggerContext: Trigger.TriggerContext): TriggerResult = {
          if (l == w.getEnd) {
            val date = new Date(w.getStart)
            val endtime = sdf.format(date)
            println("==========\n到达" + count + "号窗口最大时间" + endtime + ",数据清零,状态保留")
            count = count + 1
            TriggerResult.FIRE_AND_PURGE
          }
          else {
            val t = triggerContext.getCurrentWatermark + (1000 - (triggerContext.getCurrentWatermark % 1000))
            if (t < w.getEnd) {
              triggerContext.registerEventTimeTimer(t)
              val date = new Date(w.getEnd)
              val starttime = sdf.format(date)
              logs = "==========\n当前是" + count + "号窗口。开始时间" + starttime + ",已运行" + (t - w.getStart) / 1000 + "秒。"
              println(logs)
            }
            TriggerResult.FIRE
          }
        }
    
        override def clear(w: TimeWindow, triggerContext: Trigger.TriggerContext): Unit = {
    
          val firstSeen: ValueState[Boolean] = triggerContext
            .getPartitionedState(
              new ValueStateDescriptor[Boolean](
                "flinkDemo", classOf[Boolean]
              )
            )
          //注销
          firstSeen.clear()
    
        }
      }
    
    }
    
    展开全文
  • 需求:统计每天24小时每个时段的PV和UV的数量 主要使用Hive查询,Sqoop导出到MySQL PV:Page View 一条url就算一次 UV:Unique View 一个用户只算一次 2. 环境准备 操作系统:虚拟机centos7 软件:CDH版本...

    1. 前言

    需求:统计每天24小时每个时段的PV和UV的数量

    主要使用Hive查询,Sqoop导出到MySQL

    PV:Page View 一条url就算一次
    UV:Unique View 一个用户只算一次

    2. 环境准备

    操作系统:虚拟机centos7

    软件:CDH版本Hadoop、Hive、Sqoop,MySQL

    资源下载:链接:https://pan.baidu.com/s/1lgJkPzJqvzrsCIaLXtuFXg  提取码:g73u 

    3. 操作步骤

    开始之前确保启动了HDFS和Yarn、MySQL

    7473 DataNode
    7426 NameNode
    7526 SecondaryNameNode
    7719 JobHistoryServer
    7646 NodeManager
    7742 Jps
    7599 ResourceManager
    [fanl@centos7 hive-1.1.0-cdh5.14.2]$ 
    

    3.1 数据采集

    (1)创建新的Hive库"weblogs"

    hive (default)> create database weblogs;
    OK
    Time taken: 6.628 seconds
    hive (default)> use weblogs;
    OK
    Time taken: 0.034 seconds
    hive (weblogs)> 
    

     (2)创建源表logs_src,此表用于保存所有源数据

    展开全文
  • Linux wc 命令统计行数 统计日志 wc命令 wc分析日志
    > wc --h
    
    Usage: wc [OPTION]... [FILE]...
      or:  wc [OPTION]... --files0-from=F
    Print newline, word, and byte counts for each FILE, and a total line if
    more than one FILE is specified.  With no FILE, or when FILE is -,
    read standard input.
      -c, --bytes            print the byte counts
      -m, --chars            print the character counts
      -l, --lines            print the newline counts
          --files0-from=F    read input from the files specified by
                               NUL-terminated names in file F;
                               If F is - then read names from standard input
      -L, --max-line-length  print the length of the longest line
      -w, --words            print the word counts
          --help     display this help and exit
          --version  output version information and exit
    
    Report wc bugs to bug-coreutils@gnu.org
    GNU coreutils home page: <http://www.gnu.org/software/coreutils/>
    General help using GNU software: <http://www.gnu.org/gethelp/>
    For complete documentation, run: info coreutils 'wc invocation'
    
    

    统计开头为2020010的日志文件中,包含Invalid单词的行数

    > cat 2020010* |grep Invalid|wc -l
    > 38016
    
    展开全文
  • 脚本思路: 先思考获取分钟的PV,qps的该如何? 处理较小的日志可以直接...查看日志 |(管道符) cut以“ ”(空格)为分隔符,取出第四列 | 统计次数并且去重 | 按照数值排序,逆序,输出结果到temp_sorted.log 中..
  • Nginx日志的原始时间格式无法通过date命令转换,所以自己写了脚本转换格式
  • 基于Flink1.9,统计某个日志每小时的数据量,并输出到MySQL public static void main(String[] args) throws Exception { StreamExecutionEnvironment env = StreamExecutionEnvironment....
  • test.log日志格式如下:访问时间 05/May/2017:11:37:45 05/May/2017:13:46:20 05/May/2017:13:49:58 05/May/2017:13:50:16 05/May/2017:13:51:05 05/May/2017:13:51:06 05/May/2017:13:51:07 05/May/2017:13...
  • 一、业务场景描述 vpn的访问日志有三个字段,用户名、时间、状态, ... 如 张三、‘2020-04-28 11:10:...现了一天的访问vpn的日志,如果某个用户第一条就是logout,就默认该用户的今天的第一次登录为0点,如果某个用...
  • 今天,要统计一个系统的个ip访问次数,于是我找到该系统访问日志,并写脚本实现。 访问日志情况: [root@qular ~]# cd /usr/local/nginx/logs/ [root@qunlar logs]# head access.log  59.151.44....
  • nginx日志统计分析

    千次阅读 2019-01-10 15:53:53
    nginx日志分析常用命令,包括IP相关统计、页面访问统计、性能分析、蜘蛛抓取统计、TCP连接统计等相关命令的总结 1. IP相关统计 1.1 ip访问量统计 awk '{print $1}' access.log | sort -n | uniq | wc -l 1.2 ...
  • 脚本 SELECT SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH:MI:SS'),1,5) Day, SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'00',1,0)) H00, SUM(DECODE(SUBSTR(TO_CHAR(first_ti
  • 做项目的时候需要统对项目日志做分析,其中有一个需求是获取某个给定的时间段内,一天的日志数据,比如说要获取从2018-02-02 09:18:36到2018-03-05 23:18:36这个时间段内,统计一天的日志数据,一般情况下,...
  • 接收时,统计数据以天、小时和 15 分钟为间隔,全局和个应用程序合并。 存储桶名称格式为: appname.info1#param1#param2.info2#param1.infoX.field 在哪里: appname:发送应用程序的名称。 如果为空,(即...
  • hive语句简单统计搜索日志

    千次阅读 2016-09-24 08:33:17
    一、前言  初步学习了hive,以搜狗实验室的一部分搜索日志为数据集进行hiveQL语句... 简介:搜索引擎查询日志库设计为包括约1个月(2008年6月)Sogou搜索引擎部分网页查询需求及用户点击情况的网页查询日志数据集合。
  • 在做项目的时候经常会有日志统计功能,如果日志量很大的话,使用原表来做统计会很慢,这时我们可以设置一个定时任务,定时的调用存储过程,把前一小时日志做一下统计,存到hour表里,然后就可以直接用hour表来做...
  • 如何统计每小时用户在线人数?

    千次阅读 2015-02-10 16:29:58
    系统有一个表记录用户登录、登出的日志,现在以一个小时为段,统计出在线人数,这是一个数学问题。 情况1:  |___________一个小时____________|  登录时间 登出时间 情况2:  |___________一个小时__...
  • 脚本内容如下: ...####将日志进行统计秒钟的请求数 cat ./$log_name | cut -d ' ' -f4 | uniq -c | sort -n -r -o ./temp_sorted.log ###定义一天的pv,初始值为0 all_pv=0 ###循环24小时,一天 ...
  • 日志统计到大数据分析

    万次阅读 2016-12-22 16:44:46
    2007年浙大研究生毕业后加入百度,从2008年开始从事数据方向,从零构建了百度的用户日志大数据处理平台。2015年4月从百度离职,创建神策数据,帮助客户实现数据驱动。这篇文章讲述我在百度从零构建大数据平台方面的...
  • Oracle统计产生日志&数据增长&增量

    千次阅读 2019-09-24 16:09:59
    文章目录1、如何度量增删改操作产生的日志量2、根据归档日志估算数据增量情况3、DBA_HIST_SYSSTAT计算redo产生量(AWR中profile "redo size")4、根据dba_hist_tbspc_space_usage表空间维度估算容量增长情况5、根据dba...
  • 网站日志统计案例分析与实现

    千次阅读 2017-04-14 22:16:53
    一、Web日志包含着网站最...大型或超大型的网站,可能每小时就产生10G的数据量。 对于日志的这种规模的数据,用Hadoop进行日志分析,是最合适不过了。 二、目录 Web日志分析概述 需求分析:KPI指标设计
  • 很多个人站长在搭建网站时使用nginx作为服务器,为了了解网站的访问情况,一般有两种手段: 使用CNZZ之类的方式,在前端页面插入js,用户访问...利用流计算、或离线统计分析nginx的access log,从日志中挖掘有用信息。
  • 做项目的时候需要统对项目日志做分析,其中有一个需求是获取某个给定的时间段内,一天的日志数据,比如说要获取从2018-02-02 09:18:36到2018-03-05 23:18:36这个时间段内,统计一天的日志数据,一般情况下,...
  • 前言 Web日志包含着网站最...大型或超大型的网站,可能每小时就会产生10G的数据量。 对于日志的这种规模的数据,用Hadoop进行日志分析,是最适合不过的了。 目录 Web日志分析概述 需求分析:KPI指标设
  • 1)输入:日志实时更新:当前日志表以秒级更新日志秒有多条日志更新。格式如下: 2016-08-11 11:02:09 2016-08-11 11:02:09 2016-08-11 11:02:09 2016-08-11 11:02:09 2016-08-11 11:02:10 2016-08-11 11:02:10...
  • LittleSnitch 日志导出器将这些行浓缩为个应用程序/远程主机/远程端口组合的统计信息,从而显着减少日志量。 一小时标准 macOS 工作站流量的日志数据: sudo littlesnitch log-traffic -b ' 2021-01-02 11:00
  • 网站数据统计分析工具是网站站长和运营人员经常使用的一种工具,比较常用的有谷歌分析、百度统计 和 腾讯分析等等。所有这些统计分析工具的第一步都是网站访问数据的收集。目前主流的数据收集方式基本都是基于...
  • 有时候需要通过nginx日志查看网站的访问情况就需要对nginx日志分析 进入nginx的日志 统计IP访问量 统计PV  awk '{print $7}' access.log|wc -l 独立ip访问数量 统计UV awk '{print $1}' access.log | sort ...
  • 基于 hive 的日志数据统计实战 http://blog.csdn.net/sutine/article/details/5653137

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 47,595
精华内容 19,038
关键字:

统计每小时日志