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 认证方式可参考如下链接:
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 等相关的技术资讯、实践和经验分享。面向开发、系统和云计算,提供实用的技术内容。
🎯 目标受众: 面向开发者、系统管理员和云计算从业者,提供实用的技术内容。
🗓️ 更新频率:每周更新,每次分享都为您带来有价值的技术内容。
🤝 互动与反馈: 鼓励读者留言、评论,有问题随时提问,我们将积极互动并提供帮助。
💌 订阅方式: 扫描二维码或搜索“炸鸡物料库”关注,不错过每一篇精彩内容。
🌐 合作与分享: 如果您有技术分享或合作计划,欢迎联系我们,共同成长!