ELK-Python(二)

不具有通用性,留作纪念。

[[email protected] python]# cat insert_pv.py
#!/usr/bin/env python
# -*- coding:utf-8 -*-
from datetime import *
from with_conn_to_db import conn_to_mysql
import urllib2,json
import time

###define yestoday 0-24 hours delta part##########
today = date.today()
yestoday = today - timedelta(days=1)
#print today,yestoday
a = str(yestoday) + ‘ ‘ + ‘00:00:00‘
b = str(today) + ‘ ‘ + ‘00:00:00‘
timeArray1 = time.strptime(a, "%Y-%m-%d %H:%M:%S")
timeArray2 = time.strptime(b, "%Y-%m-%d %H:%M:%S")
start_time = int(time.mktime(timeArray1)) * 1000
end_time = int(time.mktime(timeArray2)) * 1000

#####define es index and search part########
server = ‘http://elk.xkops.com:9200/‘
#stat_index = ‘client-visit-*‘
index=‘client-*‘
#start_time = 1459146210879
#stop_time = 1459147110879
url = server + index + "/_search?pretty=true"

query_date={
  "query": {
    "filtered": {
      "query": {
        "query_string": {
          "query": "*",
          "analyze_wildcard": True
        }
      },
      "filter": {
        "bool": {
          "must": [
            {
              "range": {
                "@timestamp": {
                  "gte": start_time,
                  "lte": end_time,
                  "format": "epoch_millis"
                }
              }
            }
          ],
          "must_not": []
        }
      }
    }
  },
  "size": 0,
  "aggs": {
    "2": {
      "terms": {
        "field": "visit_tenant_id",
        "size": 1000,
        "order": {
          "1": "desc"
        }
      },
      "aggs": {
        "1": {
          "sum": {
            "field": "count"
          }
        },
        "3": {
          "terms": {
            "field": "client_type",
            "size": 10000000,
            "order": {
              "1": "desc"
            }
          },
          "aggs": {
            "1": {
              "sum": {
                "field": "count"
              }
            }
          }
        }
      }
    }
  }
}

query_date = json.dumps(query_date)
req = urllib2.Request(url,query_date)
response = urllib2.urlopen(req)
page = response.read()
#print page
result = json.loads(page)
###避免当天多次插入,插入前先删除#######
sql = "delete from pv_stat where create_time = ‘%s‘" % (yestoday)
with conn_to_mysql(‘logstash‘) as db:
    db.execute(sql)
for s in result[‘aggregations‘][‘2‘][‘buckets‘]:
    tenant_id =  s[‘key‘]
    type1 = s["3"][‘buckets‘][0][‘key‘]
    type1_count = s["3"][‘buckets‘][0][‘doc_count‘]
    sql = "insert into pv_stat(tenant_id,create_time,pv_count,client_type) values(‘%s‘,‘%s‘,‘%s‘,‘%s‘)" % (tenant_id,yestoday,type1_count,type1)
    #print sql
    with conn_to_mysql(‘logstash‘) as db:
        db.execute(sql)
    if len(s["3"][‘buckets‘]) > 1:
        type2 = s["3"][‘buckets‘][1][‘key‘]
        type2_count = s["3"][‘buckets‘][1][‘doc_count‘]
        sql = "insert into pv_stat(tenant_id,create_time,pv_count,client_type)  values(‘%s‘,‘%s‘,‘%s‘,‘%s‘)" % (tenant_id,yestoday,type2_count,type2)
        #print sql
        with conn_to_mysql(‘logstash‘) as db:
            db.execute(sql)
    else:
        continue
时间: 2024-10-29 19:08:57

ELK-Python(二)的相关文章

python 人脸检测 +python 二维码检测

从官网下载opencv 目录结构如图 在samples中有丰富的示例 应为我的系统中已经安装好opepncv-python,可直接运行 会得到结果: 人脸检测代码如下 #!/usr/bin/env python ''' face detection using haar cascades USAGE: facedetect.py [--cascade <cascade_fn>] [--nested-cascade <cascade_fn>] [<video_source>

Python 二、Python过程型程序设计快速入门

一.数据结构 程序=数据结构+算法 数据结构: 通过某种方式(例如对元素进行编号)组织在一起的数据元素的集合,这些数据元素可以是数字或者字符,甚至可以是其它的数据结构. python的最基本数据结构是序列 序列中的每个元素被分配一个序号(即元素的位置),也陈为索引:索引从0开始编号 python包含6中内建的数据序列:列表.元祖.字符串.Unicode字符串.buff对象和xrange对象 二.python的关键要素 基本数据类型 对象引用 组合数据类型 逻辑操作符 控制流语句 算术操作符 输入

Python 二、Python对象类型及其运算

一.Python对象的相关术语 Python中一切皆对象,python程序中保存的所有数据都是围绕对象这个概念展开的:所有的对象都是由类实例化而来的,只不过这些类有些是python内置的类:例如,整数和浮点数,字符串都是由python内置的类实例化而来的.除此之外用户还可以自定义类型,就是类. python程序中存储的所有数据都是对象 每个对象都有一个身份.一个类型和一个值 例如,school="MaGe Linux"会以"MaGe Linux"创建一个字符串对象,

python 二维数组90°旋转

题目: 使用python生成一个4×4二维数组并将其顺时针旋转90° 源码如下: import random datarow=[] data=[] for i in range(4):     for j in range(4):         datarow.append(random.randint(10,80))     data.append(datarow)     datarow = [] print("data") for k in data:     print(k)

hack with python(二)

环境:dvwa 1.7数据库: mysql前置知识:  1.阅读了关于sql注入基础的两个博文并自己动手实践过(一)(二)    2.阅读了hack with python(一) 一.学习web安全的过程并不总是充满快乐,有时还有点小枯燥(1)那这样我们,先来玩个小游戏吧!猜数字,看一看你能多少次猜出数字 #! /usr/bin/python #A game to a guess a number between 1 and 100 #if the times you guess is less

python二维数组

今天..好多不会的,慢慢补充 1.python的二维数组初始化 s = [[0 for i in range(3)]for i in range(3)] 这样就初始了一个3*3的二维数组 = [[0 for in range(col_numbers)] for i in range(rows_numbers)] 2. with open('test.txt','rb') as f: s = f.readline() s的结尾是带着\r\n的 所以使用 s.strip('\r\n') strip参

python二次学习之二(第一天学到的一个重点pickle模块)

ython pickle模块作用是持久化的储存数据. 经常遇到在Python程序运行中得到了一些字符串.列表.字典等数据,想要长久的保存下来,方便以后使用,而不是简单的放入内存中关机断电就丢失数据.python模块大全中的Pickle模块就派上用场了,它可以将对象转换为一种可以传输或存储的格式. 一.Pickle对象串行化 Pickle模块将任意一个Python对象转换成一系统字节的这个操作过程叫做串行化对象.二.Pickle与CPickle对比 前者是完全用Python来实现的模块,这个CPi

python二维码生成器

周小董简书主页二维码.png 周小董博客主页二维码.png 现在,我们生活中到处可以看到二维码.它有啥好处呢?它具有信息容量大.可靠性高.可表示汉字及图象多种文字信息.保密防伪性强等优点. 我们生成的东西一般都在电脑上.如果弄到移动设备上,用到最多的是扫码.在移动设备浏览器中输入URL明显没有扫描二维码方便. 就是这个: python 有qrcode库,很容易就生成二维码.现在在需要使用Python图像库的时候一般是用 Pillow 模块代替PIL.安装非常简单: pip install pil

python(二)

1.int( )范围大小转换. @整型的创建,声明. 创建一个整型和给变量赋值的过程是一样的. a =123 等号左边是变量名,右边是要赋的值,就是這么的简单. @整型的特点 对于整型来说,复制的时候一定要是整数才可以,简单是来说就是正整数和负整数. @整型变量之间的运算操作符及方法. python目前可以支持的整型数据类型变量的操作有:加(+)减(-)乘(*)除(/)和幂(**) >>>b = 10 >>>a  = 3 >>>  a+b 13 >

非正式介绍Python(二)

3.1.3. Lists Python knows a number of compound data types, used to group together other values. The most versatile is the list, which can be written as a list of comma-separated values (items) between square brackets. Lists might contain items of dif