ELK-Python(三)

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

[[email protected] python]# cat insert_uv.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)
#today = today - timedelta(days=1)
#print today,yestoday
#import sys
#sys.exit()
a = str(yestoday) + ‘ ‘ + ‘00:00:00‘
b = str(today) + ‘ ‘ + ‘00:00:00‘
#print a,b
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": {
          "analyze_wildcard": True,
          "query": "*"
        }
      },
      "filter": {
        "bool": {
          "must": [
            {
              "range": {
                "@timestamp": {
                  "gte": start_time,
                  "lte": end_time,
                  "format": "epoch_millis"
                }
              }
            }
          ],
          "must_not": []
        }
      }
    }
  },
  "size": 0,
  "aggs": {
    "4": {
      "terms": {
        "field": "visit_tenant_id",
        "size": 1000000,
        "order": {
          "1": "desc"
        }
      },
      "aggs": {
        "1": {
          "sum": {
            "field": "count"
          }
        },
        "3": {
          "terms": {
            "field": "client_type",
            "size": 2,
            "order": {
              "1": "desc"
            }
          },
          "aggs": {
            "1": {
              "sum": {
                "field": "count"
              }
            },
            "2": {
              "terms": {
                "field": "sessionId",
                "size": 1000000,
                "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 uv_stat where create_time = ‘%s‘" % (yestoday)
#print sql
with conn_to_mysql(‘logstash‘) as db:
    db.execute(sql)

for s in result[‘aggregations‘][‘4‘][‘buckets‘]:
    tenant_id =  s[‘key‘]
    type1 = s[‘3‘][‘buckets‘][0][‘key‘]
    for a in   s[‘3‘][‘buckets‘][0][‘2‘][‘buckets‘]:
        session_id = a[‘key‘]
        #print tenant_id,type1,session_id
        sql = "insert into uv_stat(tenant_id,create_time,session_id,client_type) values(‘%s‘,‘%s‘,‘%s‘,‘%s‘)" %(tenant_id,yestoday,session_id,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‘]
        for a in s[‘3‘][‘buckets‘][1][‘2‘][‘buckets‘]:
            session_id = a[‘key‘]
            #print tenant_id,type2,session_id
            sql = "insert into uv_stat(tenant_id,create_time,session_id,client_type) values(‘%s‘,‘%s‘,‘%s‘,‘%s‘)" %(tenant_id,yestoday,session_id,type2)
            #print sql
            with conn_to_mysql(‘logstash‘) as db:
                db.execute(sql)
    else:
        continue
时间: 2024-10-18 13:50:20

ELK-Python(三)的相关文章

【转】python 三种遍历list的方法

[转]python 三种遍历list的方法 #!/usr/bin/env python # -*- coding: utf-8 -*- if __name__ == '__main__': list = ['html', 'js', 'css', 'python'] # 方法1 print '遍历列表方法1:' for i in list: print ("序号:%s 值:%s" % (list.index(i) + 1, i)) print '\n遍历列表方法2:' # 方法2 fo

Python - 三大器 迭代器,生层器,装饰器

目录 Python - 三大器 迭代器,生层器,装饰器 一. 容器 二. 可迭代对象(iterable) 三. 迭代器 四. 生成器 五. 装饰器 1. 定义 六. 闭包 Python - 三大器 迭代器,生层器,装饰器 在介绍三大器之前先来了解一下容器和可迭代对象... 一. 容器 容器是一种把多个元素组织在一起的数据结构,容器中的元素可以逐个地迭代获取,可以用in, not in关键字判断元素是否包含在容器中.通常这类数据结构把所有的元素存储在内存中(也有一些特例,并不是所有的元素都放在内存

Python三引号

Python三引号:多用作注释.数据库语句.编写 HTML 文本. strs = ''' 使用了三引号的字符串 ''' print (strs) # 在 ‘’‘ 里可以使用转义字符 strs = '''开始 使用反斜杠 \单引号 \' 双引号 \" 换行 \n 水平制表符 \t 结束. ''' print(strs) # 开始 # 使用反斜杠 \ # 单引号 ' # 双引号 " # 换行 # # 水平制表符 结束. # 使用三引号写数据库代码 # cursor.execute('''

python三引号的作用--换行输出

python三引号包含的字符串是可以通过回车来进行换行的. >>> print("""比划一个郭富城 ... 全场和我低下头 ... 晃动你的夸夸轴""") 比划一个郭富城 全场和我低下头 晃动你的夸夸轴 原文地址:https://www.cnblogs.com/hercules-chung/p/12391262.html

python 三分钟入门

1.Python环境配置(2.7版本): Python官网:https://www.python.org/ Pycharm官网 http://www.jetbrains.com/pycharm/download 注:个人学习下载安装community版本就足够啦~ 下载好之后安装(要记得将Python加入环境变量噢~) 2.Python文件类型: Python解释器执行Python代码时候,经历如下几个阶段: 1) 加载代码文件 2)翻译成AST(语法分析所获得的中间结果) 3)生成byteco

Behave + Selenium(Python) 三

来自T先生 通过之前的2篇文章,大家都了解了如果利用behave和selenium打开网页和进行基本的操作,但是这些对于项目来说,却是往往不够的. 如果对junit或者TestNG熟悉的人都知道有@Before Class等这些在脚本之前完成的任务:如用户登入,以及当浏览器操作完,关闭浏览器等一些操作.那么问题来了,在behave里面是怎么控制的呢? 在behave中有个environment.py文件,environment.py文件可以很好的解决这个问题,除了解决这个问题,还可以用来解决同一

python三步生成二维码

本次使用python 2.7.13 下 安装qrcode模块三步生成二维码; qcrode官方说明https://pypi.python.org/pypi/qrcode/ qcrode模块通过pip install qrcode 安装即可 pip命令没有请参照http://dyc2005.blog.51cto.com/270872/1940870安装 以下是生成二维码过程: 代码如下: import qrcode mk = qrcode.make("http://www.pkey.cn"

继续Python三之基础

前言 总想在前面写点啥,来记录记录学习的过程,不得不承认,Python确实不好学,但是,不是学不会,我深信这个道理.所以,我会坚持下去. 具体内容 上次回顾: 1.列表操作可以增删改查,元祖是只读列表,元祖和列表都是有序的. 2.字符串是不能修改的. 比如把字符串变成大写是对整个字符串进行更新,等于说生产一个新的数据.而列表是在原来的位置上进行修改了. 3.列表可以嵌套任何东西. 4.字典的特性:无序的(因为通过key来找值,不需要通过小标来找,底层通过hash算法来找),可以嵌套很多层. 一.

windows下Python三步安装pip

pip是用来方便地管理Python的第三方包的,由于此前玩Python仅仅是浅尝辄止,用的是python(x,y),但是这里并不代表你想用什么包都能从里面找到的,所以我把python(x,y)卸了,然后重新装了个Python2.7.13,准备尝试一下用pip来下载想要的包. 不过pip也有一个麻烦之处,如果电脑不能联网怎么办? 之后再考虑这个问题,先在此记录一下我是如何安装pip的.本文参考百度经验<如何在win7下安装python包工具pip>,网上有很多pip安装教程,但感觉这个写的是最简

Ant、Gradle、Python三种打包方式的介绍

博客出自:http://blog.csdn.net/liuxian13183,转载注明出处! All Rights Reserved ! 今天谈一下Androdi三种打包方式,Ant.Gradle.Python. 当然最开始打包用Ant 很方便,后来转Studio开发,自带很多Gradle插件就用了它,然后随着打包数量越多,打包时间成了需要考虑的事,前两者平均打一个包要花费2-3分钟,打30个就要差不多2个小时:而前两者打包的思路主要是,替换AndroidManifest.xml的meta-da