如何解决openstack中协程切换后request_id打印不对或者不打印的问题的

2023-10-29

OpenStack各组件一般都对外提供REST服务,当某个API请求过来之后,由于可能会涉及多个方法和进程的处理,为了方便的跟踪这个请求和后续通过日志定位,我们需要有个唯一标示来追踪这个请求,这样就能从大量日志信息中找到和这个请求相关的日志了。

OpenStack是有这个能力跟踪某个API请求的,在M版本中是通过oslo_middleware中的request_id这个中间件来实现的

[filter:request_id]
paste.filter_factory = oslo_middleware:RequestId.factory
看一下这个中间件的实现:
ENV_REQUEST_ID = 'openstack.request_id'
HTTP_RESP_HEADER_REQUEST_ID = 'x-openstack-request-id'


class RequestId(base.ConfigurableMiddleware):
    """Middleware that ensures request ID.

    It ensures to assign request ID for each API request and set it to
    request environment. The request ID is also added to API response.
    """

    @webob.dec.wsgify
    def __call__(self, req):
        req_id = context.generate_request_id()
        req.environ[ENV_REQUEST_ID] = req_id
        response = req.get_response(self.application)
        if HTTP_RESP_HEADER_REQUEST_ID not in response.headers:
            response.headers.add(HTTP_RESP_HEADER_REQUEST_ID, req_id)
        return response
可以发现一旦有API请求经过这个中间件,他就会在req环境变量中随机生成一个uuid的标示,用来记录这个请求,这个请求标示是可以打印到日志里面的,只需要在我们的日志配置项中加上request_id这个配置项即可,具体的来讲是在logging_context_format_string 中加上request_id,这样日志里面就能打印出request_id了。

logging_context_format_string=%(asctime)s [%(threadName)s %(processName)s][%(filename)s %(
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何解决openstack中协程切换后request_id打印不对或者不打印的问题的 的相关文章

  • OpenStack中制作和上传Docker镜像

    一 在docker节点新建dockerfile文件 vim dockerfie 二 文件里面填 无需任何修改 FROM ubuntu 14 04 MAINTAINER ZhangKe lt 294667739 qq com gt RUN a
  • Openstack常用命令

    目录 一 创建用户 二 创建删除模板和模板其他操作 三 创建更新删除镜像 四 创建网络 五 VPN的使用 六 创建容器swift模块 前言 在linux中使用openstakc命令前 需要source etc keystone admin
  • OpenStack之仪表盘服务(Dashboard)

    一 Dashboard的基本 1 概念 OpenStack云计算平台可以通过命令行管理工具使用 或者其他应用通过应用程序接口被其他程序调用 但是都较为麻烦 不够直观 那么Dashboard随机应运而生了 其本质是一个web前端控制台 主要功
  • 先电Openstack云平台搭建【超级详细】【附带镜像】

    前言 大二上学期学习Openstack 苦于百度与CSDN上没有对应版本的教程 学的十分艰难 在此 将我的Openstack云平台搭建过程写出 留给新手学习 准备工作 VMware Workstation Pro 虚拟机 我使用版本 15
  • Learning OpenStack Keystone

    Author 海峰 http weibo com 344736086 http yanheven github io http blog csdn net yanheven1 这周重新学习整理了OpenStack Keystone里面的知识
  • OpenStack自动化安装部署实战(附OpenStack实验环境)

    packstack是openstack自动化安装工具 packstack程序中写入了openstack的安装过程 可以自动化对服务器进行openstack软件包的安装 packstack可以在answer file设置安装参数 在安装时 p
  • OpenStack官方认证(COA)正式回归!

    Certified OpenStack Administrator 简称 COA 是OpenStack基金会在2016年推出的唯一一个OpenStack官方管理员技术认证 对OpenStack的日常使用和管理 应该学习和掌握哪些技术 提出了
  • openstack中cinder与swift、glance的区别

    1 cinder与swift的用途是什么 cinder是块存储 用来给虚拟机挂扩展硬盘 就是将cinder创建出来的卷 挂到虚拟机里 cinder是OpenStack到F版 将之前在Nova中的部分持久性块存储功能 Nova Volume
  • OpenStack nova-compute 报TooOldComputeService版本过低问题

    项目场景 安装openstack的nova compute部分 问题描述 启动nova conductor时报错 查看nova conductor log 发现如下错误 Current Nova version does not suppo
  • 2000+Docker镜像,Kolla是如何管理的

    根据 DockerHub 上的数据 整个 Kolla 项目管理的 镜像有 2000 多个 这么多的镜像 是怎么定义 又是如何构建的呢 简介 我们一直在说的 Kolla 通常情况下泛指 包括了 Kolla 和 Kolla Ansible 两个
  • 云计算1+X之openstack篇

    openstack之Keystone 服务运维 概述 OpenStack 框架中 Keystone OpenStack Identity Service 的功能是负责验证身份 校验服务规则和发布服务令牌的 它实现了 OpenStack 的
  • openstack热迁移机制分析(libvirt热迁移模型、nova热迁移控制逻辑、调试方法)

    前段时间在解决大内存热迁移失败的时候 查阅了下openstack热迁移相关知识 有了一些记录跟大家分享下 以基于L版openstack qemu kvm 跟大家分享下API库libvirt的热迁移机制和nova控制逻辑的一些记录 注 这篇博
  • openstack开发实践(一):devstack搭建all-in-one的openstack开发环境

    Devstack简介 devstack是面向开发者的一个openstack部署工具 用户可以指定不同的版本分支进行安装 devstack借助于Shell脚本实现openstack自动化部署 devstack源码中的stack sh即为安装脚
  • openstack用户管理笔记

    1 创建项目 1 1 创建项目 需要确认集群环境是否初始化完毕 实验初始化需要几分钟时间 访问控制节点IP dashboard 如果正常弹出登录页面即初始化完毕 假设控制节点IP为172 20 6 22 则访问地址为 172 20 6 22
  • cehp 维护(二)常见告警维护

    零 修订记录 序号 修订时间 修订内容 1 2021 11 18 新增 一 摘要 笨猪主要介绍ceph常见告警及维护方法或过程中遇到的问题 二 环境信息 2 1 ceph版本 cephadmin proceph01 ceph v ceph
  • 用python画星空源代码

    from turtle import from random import random randint screen Screen width height 800 600 screen setup width height screen
  • Openstack - 更改仪表板的管理员密码

    在哪里可以更改 Openstack 中仪表板的管理员密码 我使用 packstack 安装程序安装了 openstack keystonerc admin 文件中的密码也不起作用 我使用 CentOS 6 3 并且我可以访问配置文件 用户名
  • 如何设置docker容器的ip?

    有人可以告诉我如何将容器的 ip 设置为特定的 ip 吗 我不想将网桥设置为 IP 集 我在网络中得到的所有结果都是将 ips 范围设置为 docker 桥 您可以使用主机的现有 IP 如下所示 docker run p 127 0 0 1
  • Terraform,如何在现有资源上运行配置程序?

    我的问题与这个 github 帖子类似 https github com hashicorp terraform issues 745 https github com hashicorp terraform issues 745 这也与我
  • 服务无法启动虚拟机“DockerDesktopVM”,因为 Hyper-V 组件之一未运行

    我有 Window Server 2016 2019 虚拟机 Openstack 至此Hyper V安装成功 但无法启动 MobyLinuxVM ExposeVirtualizationExtensions 已通过 PowerShell 在

随机推荐

  • 区块链技术应用学习

    学习导入 今天 以云计算 大数据 人工智能 区块链等为代表的的新一轮科技革命 对金融业 产生着前所未有的影响 新技术正义其独有的渗透性 冲击性 倍增性和创新性推动金融行 业发展到一个全新节点 金融科技人才 是复合型创新人才 需要金融方面掌握
  • Wrong Ramdisk Image Format Ramdisk image is corrupt or invalid

    在学习正点原子的阿尔法开发板时启动内核出错 出现 Wrong Ramdisk Image Format Ramdisk image is corrupt or invalid 报错 原因 因为我是直接复制的 因此中间 那个 格式不对 自己手
  • JavaScript和了解一切的压力,克里斯蒂安·海尔曼

    In this episode of the Versioning Show Tim and David are joined by Christian Heilmann well known developer speaker autho
  • Spring Framework---IOC/DI

    目录 1 Spring框架的主要内容 1 1Spring的发展版本 1 2Spring系统架构 1 核心层 2 AOP层 3 数据层 4 Web层 5 Test层 1 3Spring核心概念 1 3 1IOC Inversion of co
  • XSS-Labs通关(1-18)

    目录 Level1 Level2 Level3 Level4 Level5 Level6 Level7 Level8 Level9 Level10 Level11 Level12 Level13 Level15 Level16 Level1
  • Java获取文件名、文件前缀名、文件类型(文件后缀名)

    获取文件名 方法一 split分割 String fileName E file docx String temp fileName split String fileNameNow temp temp length 1 System ou
  • STM32——SPI通信

    文章目录 SPI Serial Peripheral Interface 概述 SPI的硬件连接 SPI的特点和优势 SPI的常见应用 SPI的工作方式和时序图分析 工作模式 传输模式与时序分析 工作流程 SPI设备的寄存器结构和寄存器设置
  • c++自定义类对象的初始化_类装载器

    一 类的生命周期 类从被加载到虚拟机内存中开始 直到从内存中卸载为止 它的整个生命周期包括了 加载 验证 准备 解析 初始化 使用和卸载这7个阶段 其中 验证 准备和解析这三个部分统称为链接 linking graph LR A 加载 gt
  • RedHat linux 9.1/CentOS linux YUM在线安装用不了? 不会配置Linux的网络安装源?一分钟教你解决!!!

    一 配置本地源 1 新建cdrom目录 root kongd mkdir media cdrom 2 将本地光盘挂载至本地目录 media cdrom下 root kongd mount dev cdrom media cdrom 3 新建
  • Unable to find instance for XXXX

    当你的控制台报了这样的错误 这就是请求的后端服务没启动 联系后端启动后端就行
  • dubbo之RpcContext

    dubbo之RpcContext RpcContext 是一个 ThreadLocal 的临时状态记录器 当接收到 RPC 请求 或发起 RPC 请求时 RpcContext 的状态都会变化 比如 A 调 B B 再调 C 则 B 机器上
  • matlab 判断数组中的元素是否存在,C语言判断数组中是否包含某个元素

    在实际开发中 经常需要查询数组中的元素 例如 学校为每位同学分配了一个唯一的编号 现在有一个数组 保存了实验班所有同学的编号信息 如果有家长想知道他的孩子是否进入了实验班 只要提供孩子的编号就可以 如果编号和数组中的某个元素相等 就进入了实
  • ODTK:来自NVIDIA的旋转框物体检测工具箱

    点击上方 AI公园 关注公众号 选择加 星标 或 置顶 作者 Jonathan Howe James Skinner 编译 ronghuaiyang 导读 旋转框相比矩形框可以更好的拟合物体 同时标注起来比分割要方便的多 使用来自NVIDI
  • k8s的初始及搭建

    kubernetes k8s 1 初识k8s 1 1 k8s是什么 kubernetes 简称K8s 是用8代替8个字符 ubernete 而成的缩写 是一个开源的 由go语言开发 用于管理云平台中多个主机上的容器化的应用 Kubernet
  • ElasticSearch 搜索引擎

    简称es 是类似于mysql但是专注于搜索的一种数据库 在elastic stack中占据重要地位 倒排索引 我们的数据库都是正向索引 比如根据id查询数据 那么倒排索引是将关键字进行分词 然后将词条和id保存在一张表中 不同数据分词后有相
  • retval释疑

    为了让方法返回一个与 方法的物理HRESULT 不相关的逻辑结果 COM IDL支持retval参数属性 retval属性的含义是 相关联的物理方法参数实际上是操作的逻辑结果 在支持retval的环境中 该参数应该被映射为操作的结果 例如
  • MyCAT 通过Native for MySQL 连接TESTDB 提示:1184 (HY000): Invalid DataSource:0

    问题描述 Windows 安装MyCAT服务 启动MyCAT服务 通过Native for MySQL 连接TESTDB 提示如下错误信息 1184 HY000 Invalid DataSource 0 造成问题原因 没有给root用户授予
  • 聚类尝试-kmeans-step2聚类模型训练及结果可视化

    step1 https blog csdn net nikita zj article details 122342746https blog csdn net nikita zj article details 122342746 1 数
  • python基础知识总结

    1 python相关 发布时间比java要早 1999年应用在网站后端开发 2004年发布web框架Django 2 特点 解释性语言 交互式语言 面向对象 跨平台 3 优点 易学 易读 易维护 有广泛标准库 互动模式 可嵌入性 嵌入C或者
  • 如何解决openstack中协程切换后request_id打印不对或者不打印的问题的

    OpenStack各组件一般都对外提供REST服务 当某个API请求过来之后 由于可能会涉及多个方法和进程的处理 为了方便的跟踪这个请求和后续通过日志定位 我们需要有个唯一标示来追踪这个请求 这样就能从大量日志信息中找到和这个请求相关的日志