Python 服务实现可观测性最佳实践

news2024/11/24 4:09:10

前言

本次实践主要是介绍 Python 服务通过无侵入的方式接入观测云进行全面的可观测。

环境信息

  • 系统环境:主机环境
  • 开发语言:Python2.7+
  • APM 探针包:ddtrace

接入方案

准备工作

安装 DataKit

主机安装 DataKit

# 需要把token 改成观测云空间的实际token值(可在观测云控制台-->集成-->Datakit 上面获取)
DK_DATAWAY="https://openway.guance.com?token=tkn_xxxxxx" bash -c "$(curl -L https://static.guance.com/datakit/install.sh)" 
开启采集器

开启日志采集器

cp /usr/local/datakit/conf.d/log/logging.conf.sample /usr/local/datakit/conf.d/log/logging.conf
vim /usr/local/datakit/conf.d/log/logging.conf

在 [[inputs.logging]] 采集项目下的 logfiles 添加 python 日志的路径: "/root/guance/dd-test/python_log/*"

开启 ddtrace 采集器

cp /usr/local/datakit/conf.d/ddtrace/ddtrace.conf.sample  /usr/local/datakit/conf.d/ddtrace/ddtrace.conf

重启 Datakit

# 在主机终端输入命令
datakit service -R

准备测试环境

以下实践在 Linux 主机环境下操作

安装 Python 依赖包:

pip install flask
pip install ddtrace

新建文件夹存储日志数据:

mkdir -p /root/guance/dd-test

准备测试代码

服务 A 代码如下:

vim python_demo.py
import logging
from flask import Flask

log = logging.getLogger(__name__)
log.level = logging.INFO
stream_handler = logging.StreamHandler()
formatter = logging.Formatter('%(asctime)s %(levelname)s %(filename)s %(dd.service)s %(dd.trace_id)s %(dd.trace_id)s %(funcName)s:%(lineno)s %(message)s')
stream_handler.setFormatter(formatter)
log.addHandler(stream_handler)

app = Flask(__name__)

@app.route('/a', methods=['GET'])
def index():
    # 打印一条log日志
    log.info('Hello, World!')
    return "abcdefg", 200


if __name__ == '__main__':
    app.run(host="0.0.0.0", port=10001, debug=True)

启动业务服务

# DD_AGENT_HOST、DD_AGENT_PORT  分别为datakit 访问的地址以及端口
DD_SERVICE=python_demo \
DD_TAGS=project:python_demo,env:test,version:v1 \
DD_AGENT_HOST=localhost \
DD_AGENT_PORT=9529 \
ddtrace-run python3 python_demo.py &> /root/guance/dd-test/a.log  

调用链接入

访问服务 A,服务会产生调用链上传至 DataKit。

curl http://localhost:10001/a          # 终端使用curl 访问,浏览器则直接访问url即可

日志接入

DataKit 会定时采集服务产生的日志,通过观测云 Pipeline 提取日志中的 status, service_name, trace_id 等字段,从而实现调用链和日志的串联效果。

# pipeline 的解析规则(链路与日志通过trace_id 关联起来)
grok(_, "%{TIMESTAMP_ISO8601:time} %{LOGLEVEL:status} %{DATA:file_name} %{DATA:service_name} %{DATA:trace_id} %{DATA:span_id} " )

实践效果

  • 调用链以及调用链关联日志效果

  • 日志采集效果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1494921.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

xss.haozi.me靶机 通关

0x00 没有任何过滤可以直接注入<img srcx οnerrοralert(1)> 0x01 使用了testarea标签将我们的输入内容以普通的字符串进行展示 但是我们可以将标签进行闭合 </textarea><img srcx οnerrοralert(1)> 0x02 我们依然可以先闭合之后添加属性a" οncl…

Mendix 使用OIDC组件实现SSO|Azure Microsoft Entra ID 集成(原名:AD)

引言 在快节奏的软件开发领域&#xff0c;Mendix作为一款领先的低代码开发平台&#xff0c;为企业提供了快速构建、部署和迭代应用程序的能力。这种灵活性和效率使得Mendix成为了推动数字化转型的强大工具。随着企业应用数量的激增&#xff0c;单点登录&#xff08;SSO&#x…

【debug】element-ui时间控件回显后不可编辑且显示为空

问题&#xff1a;使用element-ui的时间控件回显数据&#xff0c;编辑数据没有反应&#xff1a;点时间和“确认”按钮都没反应。 输入框中会显示数据&#xff0c;但提交时的校验显示为空。 <el-form-item label"开始时间" prop"limitStartTime"><…

【数据结构】堆的TopK问题

大家好&#xff0c;我是苏貝&#xff0c;本篇博客带大家了解堆的TopK问题&#xff0c;如果你觉得我写的还不错的话&#xff0c;可以给我一个赞&#x1f44d;吗&#xff0c;感谢❤️ 目录 一. 前言二. TopK三. 代码 一. 前言 TOP-K问题&#xff1a;即求数据结合中前K个最大的元…

专业145+总分410+西工大西北工业大学827信号与系统考研经验电子信息与通信工程,海航,真题,大纲,参考书。

经过一年的努力&#xff0c;分数终于出来。今年专业课827信号与系统145&#xff08;很遗憾差了一点点满分&#xff0c;没有达到Jenny老师的最高要求&#xff09;&#xff0c;数一130&#xff0c;英语和政治也都比较平衡&#xff0c;总分410分&#xff0c;当然和信息通信考研Jen…

类变量和类方法【静态变量 static】

类变量和类方法【静态变量 static】 类变量什么是类变量如何定义类变量如何访问类变量类变量使用注意事项和细节 类方法类方法的基本介绍类方法的调用类方法应用案例类方法经典的使用场景类方法使用注意事项和细节 类变量 什么是类变量 类变量&#xff0c;也叫静态属性/静态变…

Vue点击切换组件颜色

例如我有一个这样的组件&#xff0c;我希望在点击组件之后由蓝色变成橙色 先把原来的代码附上(简化掉了叉号&#xff09;&#xff1a; <div v-for"(item, index) in words" :key"index" class"scrollbar-demo-item"><span>{{ item …

一次奇特的应急响应

访问polling.oastify.com 今天&#xff08;2024/3/5&#xff09;在深信服防火墙用户安全日志页面&#xff0c;检测到我的主机在和polling.oastify.com域名进行通信 当时通知我检查我的主机&#xff0c;慌得一批&#xff0c;检查完后可能认为是我代理的问题&#xff0c;把代理关…

YOLOv7独家原创改进:特征融合涨点篇 | 广义高效层聚合网络(GELAN) | YOLOv9

💡💡💡本文独家改进:即结合用梯度路径规划(CSPNet)和(ELAN)设计了一种广义的高效层聚合网络(GELAN),高效结合YOLOv7,实现涨点。 将GELAN添加在backbone和head处,提供多个yaml改进方法 💡💡💡在多个私有数据集和公开数据集VisDrone2019、PASCAL VOC实现…

国产嵌入式DSP教学实验箱_操作教程:22-AD采集DA输出实验(采集输出正弦波)

一、实验目的 掌握EMIFA、SPI的使用&#xff0c;了解AD7606、AD5724的芯片特性和使用&#xff0c;并实现基于AD7606采集、AD5724输出正弦波。 二、实验原理 StarterWare StarterWare是一个免费的软件开发包&#xff0c;它包含了示例应用程序。StarterWare提供了一套完整的G…

【CSP试题回顾】201512-2-消除类游戏

CSP-201512-2-消除类游戏 解题思路 输入棋盘大小和颜色: 首先&#xff0c;程序从标准输入读取两个整数n和m&#xff0c;分别代表棋盘的行数和列数。然后&#xff0c;程序读取接下来的n行输入&#xff0c;每行包含m个整数&#xff0c;代表棋盘上每个方格中的棋子颜色。 初始化…

Linux-查看服务器配置信息

一、查看操作系统 1.1、查看操作系统的版本 命令:cat /etc/redhat-release 1.2、查看系统内核 命令:uname –a 二、查看cpu信息 2.1、所有信息 lscpu [root@tes ~]# lscpu Architecture: x86_64 ##cpu架构 CPU op-mode(s): 32-bit, 64-bit Byte Order:…

Qt入门(一)Qt概述

Qt是什么&#xff1f; Qt是一个跨平台应用开发框架。 Qt既包括了一系列的Qt库&#xff0c;还包括诸多配套的开发工具如QtCreater&#xff0c;GUI Designer。Qt本身是由C开发的&#xff0c;但是也提供了其他编程语言的接口。 Qt的定位以及同类 学一种技术&#xff0c;最重要的是…

vue3 如何通过一个方法触发点击事件

需求&#xff1a;在通过一个btn按钮触发另外一个按钮的点击事件。达到点击ok&#xff08;model框按钮&#xff09;,触发create&#xff08;form表单&#xff09;按钮的事件 <!-- 1.首先通过ref创建了一个名为linkRef的引用变量&#xff0c;并将其初始化为null。 --> <…

MySQL进阶之(四)InnoDB数据存储结构之行格式

四、InnoDB数据存储结构之行格式 4.1 行格式的语法4.2 COMPACT 行格式4.2.1 记录的额外信息01、变长字段长度列表02、NULL 值列表03、记录头信息 4.2.2 记录的真实数据 4.3 Dynamic 和 Compressed 行格式4.3.1 字段的长度限制4.3.2 行溢出4.3.3 Dynamic 和 Compressed 行格式 4…

java工程师面试突击第二季分布式,Java视频

一. 什么是架构和架构本质 在软件行业&#xff0c;对于什么是架构&#xff0c;都有很多的争论&#xff0c;每个人都有自己的理解。 此君说的架构和彼君理解的架构未必是一回事。因此我们在讨论架构之前&#xff0c;我们先讨论架构的概念定义&#xff0c;概念是人认识这个世界的…

VMwareWorkstation17.0虚拟机搭建WindowsME虚拟机(完整安装步骤详细图文教程)

VMwareWorkstation17.0虚拟机搭建WindowsME虚拟机&#xff08;完整安装步骤详细图文教程&#xff09; 一、Windows ME安装准备工作3.1 Windows ME下载地址3.2 DOS软盘版下载地址3.3 UltraISO 4.用VMware虚拟模仿当年的电脑配置4.1 新建虚拟机4.2 类型配置4.3 类型配置4.4 选择版…

1、MQ_介绍、优缺点、类型等

MQ介绍 1. MQ概述 MQ&#xff08;Message Queue&#xff09;&#xff1a;消息队列&#xff0c;是基础数据结构中FIFO&#xff08;first in first out&#xff09;的一种数据结构。一般用来解决流量削峰、应用解耦、异步处理等问题&#xff0c;实现高性能&#xff0c;高可用&a…

NOC2023软件创意编程(学而思赛道)python小高组复赛真题

目录 下载原文档打印做题: 软件创意编程 一、参赛范围 1.参赛组别:小学低年级组(1-3 年级)、小学高年级组(4-6 年级)、初中组。 2.参赛人数:1 人。 3.指导教师:1 人(可空缺)。 4.每人限参加 1 个赛项。 组别确定:以地方教育行政主管部门(教委、教育厅、教育局) 认…

基于java springboot+VUE疫情防疫系统系统前后端分离设计和实现

基于java springbootVUE疫情防疫系统系统前后端分离设计和实现 博主介绍&#xff1a;5年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐留言…