【Oracle云】 OCI Python logging 服务 Searchlog 日志查询代码示例

本文介绍了如何在OracleCloudInfrastructure(OCI)中有效利用Logging服务,特别是SearchLogs功能。提到在控制台查询限制后,建议使用OCIPythonSDK进行高级查询,以处理大量日志数据。还提供了安装SDK包、认证方式以及SearchLogs示例代码,以提升日志管理效率。
摘要由CSDN通过智能技术生成

Oracle Cloud Infrastructure (OCI) 提供了功能强大的 Logging 服务,允许您有效地管理和检索日志数据,从而更好地监控和分析您的云资源的行为。

Logging 服务支撑在 Oracle 云中的各种资源上收集、存储和查询日志信息,为您提供全面的操作可视化和故障排除工具。

然而,在使用 logging 服务的 Searchlog 查询功能时,需要注意到一些控制台的限制。当在控制台搜索结果达到上限(500 条记录)时,系统会提示您调整查询时间范围以细化搜索结果。这是为了确保查询的高效性和性能。有时,为了获取更全面的搜索结果,可能需要通过 OCI Python SDK 或其他编程接口进行查询,以便更灵活地处理和分析大量的日志数据。

在使用 Oracle 云 Logging 服务时,了解这些查询限制并利用 SDK 功能,可以帮助我们更好地理解和分析云资源的活动,提高日志管理的效率。

1 安装 OCI Python SDK 包

pip install oci  # 通过 pip 直接按照

2 OCI Python SDK 认证方式

Python SDK 认证方式可参考如下链接:

OCI Python SDK 认证 代码示例-CSDN博客

3 OCI Logging 服务 SearchLog 示例代码

通过示例可以帮助我们快速了解 SearchLog 使用方式

import oci
from datetime import datetime
import json
config_with_key_file = {  # 基础的认证信息
    "user": '<userOCID>',
    "key_file": '/home/opc/.oci/oci_api_key.pem',
    "fingerprint": 'dxxx5:75:xxxxxxxxxxx:c5:96:52',
    "tenancy": '<tenancyOCID>',
    "region": '<Region>'
}

# 写入文件操作
def save_logs_to_file(logs, file_path):
    with open(file_path, 'a') as file:
      json.dump(logs, file, indent=2)
      file.write("\n")

# 读取 logging 日志操作
def search_logs(loggingsearch_client, time_start, time_end, search_query, limit=100):
    i=0
    offset = None

    while True:
        # 设置查询参数
        query_details = oci.loggingsearch.models.SearchLogsDetails(
            time_start=time_start,
            time_end=time_end,
            search_query=search_query,
            is_return_field_info=False,
        )


        logs = []
        # 发起日志搜索请求
        try:
            search_logs_response = loggingsearch_client.search_logs(
                search_logs_details=query_details,opc_request_id="RIJJ87OXLQBMPBRN6ZWO/OpcRequestIdExample/UniqueRequestId",limit=1000,page=offset
            )
            i +=1
            print(i)
            # 处理搜索结果
            for s_data in search_logs_response.data.results:
                logs.append(s_data.data)
            save_logs_to_file(logs, "logs_output.json")
            #for log_entry in search_logs_response.data.results:
            #    logs.append(log_entry)
            print(len(search_logs_response.data.results))

            #print(search_logs_response.headers['opc-next-page'])
            # 获取下一页的 offset
            offset = search_logs_response.headers['opc-next-page']

            if not offset:
                break  # 已经到达最后一页

        except oci.exceptions.ServiceError as e:
            print(f"Error: {e}")
            break

    return logs

search_query='search "<loggingGroupOCID>" | sort by datetime desc'
loggingsearch_client = oci.loggingsearch.LogSearchClient(config_with_key_file)
limit=1000 # 每次返回数据
time_start = datetime.strptime("2023-10-26T00:00:00.600Z", "%Y-%m-%dT%H:%M:%S.%fZ")
time_end = datetime.strptime("2023-10-28T12:00:00.600Z", "%Y-%m-%dT%H:%M:%S.%fZ")
logs = search_logs(loggingsearch_client, time_start, time_end, search_query, limit)

4 参考资料

oci python SDK logSearchClient 

LogSearchClient — oci 2.78.0 documentation


 

🚀 炸鸡物料库 🚀

🔍 内容定位: IT技术领域,云计算、云原生、DevOps 和 AI 等相关的技术资讯、实践和经验分享。面向开发、系统和云计算,提供实用的技术内容。

🎯 目标受众: 面向开发者、系统管理员和云计算从业者,提供实用的技术内容。

🗓️ 更新频率:每周更新,每次分享都为您带来有价值的技术内容。

🤝 互动与反馈: 鼓励读者留言、评论,有问题随时提问,我们将积极互动并提供帮助。

💌 订阅方式: 扫描二维码或搜索“炸鸡物料库”关注,不错过每一篇精彩内容。

🌐 合作与分享: 如果您有技术分享或合作计划,欢迎联系我们,共同成长!

  • 13
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值