elk python api 测试

import datetime
from elasticsearch import Elasticsearch
# 格式为:2016.7.19 的昨日日期
yesterday = (datetime.datetime.now()  + datetime.timedelta(days = -1)).strftime("%Y.%m.%d")
# 格式为:2016-7-19 的昨日日期
filter_yesterday = (datetime.datetime.now()  + datetime.timedelta(days = -1)).strftime("%Y-%m-%d")
# 格式为:2016.7.18 的前天日期
before_yesterday = (datetime.datetime.now()  + datetime.timedelta(days = -2)).strftime("%Y.%m.%d")
# 请求elasticsearch节点的url
url = "http://192.168.1.41:9200/"
# 使用的索引,因日期时区问题,所以要指定昨天和前天的索引名
index_name = "logstash-apache-www.linuxyw.com-{date},logstash-apache-www.linuxyw.com-{b_date}".format(date=yesterday,b_date=before_yesterday)
# 实例化Elasticsearch类,并设置超时间为120秒,默认是10秒的,如果数据量很大,时间设置更长一些
es = Elasticsearch(url,timeout=120)
# DSL查询语法,在下面es.search使用
data = {
    "size": 10000000,   #指定每个分片最大返回的数据量,可根据日志量进行设置
    "query" : {
        "bool":{
            # 指定要匹配的字符,这里是查找所有数据
            "must" : {"match_all":{}},
            # 过滤,指定时间范围,这里设置成昨天0点到24点,代码上||-8h,因为ELK用的是UTC时间,跟北京时间误差8小时,所以要减8小时,这就是日志里的北京时间了
            "filter" : {
                "range" : { "@timestamp" : {
                    "gt" : "{date}T00:00:00||-8h".format(date=filter_yesterday),
                    "lt" : "{date}T23:59:59||-8h".format(date=filter_yesterday),
                    }
                }
            }
        }
    }
}
# 设置要过滤返回的字段值,要什么字段,就在这里添加,这样可以节约返回的数据量(带宽,内存等)
return_fields = [
    '_scroll_id',
    'hits.hits._source.timestamp',
    'hits.hits._source.@timestamp',
    'hits.hits._source.clientip',
    'hits.hits._source.request',
]
def main():
    # 指定search_type="scan"模式,并返回_scroll_id给es.scroll获取数据使用
    res = es.search(
            index=index_name,
            body=data,
            search_type="scan",
            scroll="1m"
        )
    scrollId=res["_scroll_id"]  # 获取scrollID
    response= es.scroll(scroll_id=scrollId, scroll= "1m",filter_path=return_fields,)
    print len(response['hits']['hits']) # 打印获取到的日志数量
    # for hit in response['hits']['hits']:
    #     print hit['_source']
if __name__ == "__main__":
    main()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
建设微服务API网关是微服务架构中重要的一环,它可以帮助我们将多个微服务组合成一个整体,提供更好的用户体验和更高的性能。以下是一些实践,可以帮助您建设微服务API网关: 1. 选择一个适合您的API网关:目前市场上有很多不同的API网关,如Kong、Apigee、Zuul等。您需要根据您的需求和团队的技术水平选择一个适合您的API网关。 2. 定义API网关的功能:API网关的功能包括路由、负载均衡、安全性、监控和日志记录等。您需要根据您的需求定义API网关的功能,以便您可以选择适合您的API网关。 3. 定义API网关的API:您需要定义API网关的API,以便您的开发团队可以使用它们。您需要考虑API的版本控制、文档和测试等。 4. 集成微服务:您需要将您的微服务集成到API网关中。您需要考虑微服务的版本控制、文档和测试等。 5. 确保安全性:您需要确保API网关的安全性,包括身份验证和访问控制等。您可以使用OAuth、JWT等技术来实现安全性。 6. 监控和日志记录:您需要监控和日志记录API网关的性能和错误。您可以使用ELK、Prometheus等工具来实现监控和日志记录。 7. 测试和部署:您需要测试和部署API网关。您可以使用CI/CD工具来自动化测试和部署过程。 总之,建设微服务API网关需要您考虑多个方面,如选择适合您的API网关、定义API网关的功能和API、集成微服务、确保安全性、监控和日志记录、测试和部署等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值