supervisor系列:5、日志

2023-11-20

supervisor系列:5、日志



supervisord执行的主要任务之一是日志记录。 supervisord会记录一个活动日志,详细描述它在运行时所做的事情。它还将子进程stdout和stderr输出记录到其他文件(如果配置为这样做的话)。

1. 活动日志

活动日志是supervisord记录有关自身健康状况、子流程状态更改、事件产生的任何消息以及调试和信息消息的地方。活动日志的路径是通过配置文件的[supervisord]部分中的logfile参数配置的,默认为$CWD/supervisord.log。如果此选项的值是特殊字符串syslog,则活动日志将路由到syslog服务,而不是写入文件。活动日志流量示例如下所示。为了更好地适应屏幕,有些线条被打断了。

1.1 活动日志输出示例

2007-09-08 14:43:22,886 DEBG 127.0.0.1:Medusa (V1.11) started at Sat Sep  8 14:43:22 2007
        Hostname: kingfish
        Port:9001
2007-09-08 14:43:22,961 INFO RPC interface 'supervisor' initialized
2007-09-08 14:43:22,961 CRIT Running without any HTTP authentication checking
2007-09-08 14:43:22,962 INFO supervisord started with pid 27347
2007-09-08 14:43:23,965 INFO spawned: 'listener_00' with pid 27349
2007-09-08 14:43:23,970 INFO spawned: 'eventgen' with pid 27350
2007-09-08 14:43:23,990 INFO spawned: 'grower' with pid 27351
2007-09-08 14:43:24,059 DEBG 'listener_00' stderr output:
 /Users/chrism/projects/supervisor/supervisor2/dev-sandbox/bin/python:
 can't open file '/Users/chrism/projects/supervisor/supervisor2/src/supervisor/scripts/osx_eventgen_listener.py':
 [Errno 2] No such file or directory
2007-09-08 14:43:24,060 DEBG fd 7 closed, stopped monitoring <PEventListenerDispatcher at 19910168 for
 <Subprocess at 18892960 with name listener_00 in state STARTING> (stdout)>
2007-09-08 14:43:24,060 INFO exited: listener_00 (exit status 2; not expected)
2007-09-08 14:43:24,061 DEBG received SIGCHLD indicating a child quit

活动日志“level”是在配置文件中通过[supervisord]ini文件部分中的loglevel参数配置的。设置loglevel后,指定优先级的消息以及优先级更高的消息将被记录到活动日志中。例如,如果loglevelerror,则将记录errorcritical优先级的消息。但是,如果loglevelwarn,则将记录warnerrorcritical消息。

1.2 活动日志等级

下表更详细地描述了日志级别,按最高优先级到最低优先级排序。“配置文件值”是在配置文件的[supervisord]部分提供给loglevel参数的字符串,“输出代码”是显示在活动日志输出行的代码。

配置文件值 输出编码 描述
critical CRIT 指示需要用户立即注意的条件、管理员状态更改或管理员本身的错误的消息。
error ERRO 指示潜在可忽略的错误条件的消息(例如,无法清除日志目录)。
warn WARN 指示异常情况(不是错误)的消息。
info INFO 正常的信息输出。如果没有显式配置日志级别,则这是默认的日志级别。
debug DEBG 对于试图调试流程配置和通信行为(流程输出、侦听器状态更改、事件通知)的用户有用的消息。
trace TRAC 对试图调试管理插件的开发人员有用的消息,以及关于HTTP和RPC请求和响应的信息。
blather BLAT 对试图调试supervisor本身的开发人员有用的消息。

1.3 活动日志轮换

根据配置文件[supervisord]部分中的logfile_maxbyteslogfile_backups参数的组合,supervisord会对活动日志进行轮换。当活动日志达到logfile_maxbytes字节时,当前日志文件将被移动到备份文件中,并创建一个新的活动日志文件。出现这种情况时,如果现有备份文件的数量大于或等于logfile_backups,则删除最旧的备份文件,并对备份文件进行相应的重命名。如果正在写入的文件名为supervisord.log,当它超过logfile_maxbytes时,它将被关闭并改名为supervisord.log.1,如果文件supervisord.log.1, supervisord.log.2等已经存在,则重命名为supervisord.log.2, supervisord.log.3等。如果logfile_maxbytes为0,则永远不会转换日志文件(因此永远不会进行备份)。如果logfile_backups为0,则不保留任何备份。

2. 子进程日志

默认情况下,会捕获supervisor生成的子进程的标准输出,以便重新显示给supervisorctl和其他客户端用户。如果配置文件中的[program:x][fcgi-program:x],或[eventlistener:x]部分没有执行与日志文件相关的特定配置,则为true:

  • supervisord将捕获子进程的stdout和stderr输出到临时文件中。每个流都被捕获到一个单独的文件中。这就是所谓的AUTO日志模式。
  • AUTO日志文件是自动命名的,并放置在配置文件的[supervisord]部分的childlogdir目录下。
  • 每个AUTO日志文件的大小由程序部分的{streamname}_logfile_maxbytes值限定(其中{streamname}是" stdout “或” stderr ")。当它达到这个数字时,它会根据{streamname}_logfile_backups轮换(就像活动日志一样)。

影响子进程登录[program:x][fcgi-program:x]节的配置关键词如下:

redirect_stderr, stdout_logfile, stdout_logfile_maxbytes, stdout_logfile_backups, stdout_capture_maxbytes, stdout_syslog, stderr_logfile, stderr_logfile_maxbytes, stderr_logfile_backups, stderr_capture_maxbytes, 和 stderr_syslog.

[eventlistener:x]段可能不指定redirect_stderrstdout_capture_maxbytesstderr_capture_maxbytes,但否则它们接受相同的值。

[supervisord]配置文件部分影响子进程日志记录的配置关键词是:childlogdirnocleanup

2.1 捕获模式

捕获模式是Supervisor的一个高级功能。您不需要理解捕获模式,除非您希望根据从子进程输出解析的数据采取操作。

如果配置文件中的[program:x]节定义了一个非零的stdout_capture_maxbytesstderr_capture_maxbytes参数,由program部分表示的每个进程可以在其stdout或stderr流(分别)上发出特殊的令牌,这将有效地导致supervisor发出PROCESS_COMMUNICATION事件(有关事件的描述,请参阅Events)。

进程通信协议依赖于两个标签,一个命令supervisor进入捕获模式,另一个命令退出。当进程流进入捕获模式时,发送到流的数据将被发送到内存中的一个单独的缓冲区,即捕获缓冲区,该缓冲区允许包含最大的capture_maxbytes字节。在捕获模式中,当缓冲区的长度超过capture_maxbytes字节时,缓冲区中最早的数据将被丢弃,以便为新数据腾出空间。当一个进程流退出捕获模式时,一个PROCESS_COMMUNICATION事件子类型会被supervisor触发,它可能会被事件监听器拦截。

在进程流中开始“捕获模式”的标记是<!--XSUPERVISOR:BEGIN-->。退出捕获模式的标记是<!--XSUPERVISOR:END-->。这些标记之间的数据可以是任意的,并构成PROCESS_COMMUNICATION事件的有效负载。例如,如果一个程序的stdout_capture_maxbytes设置为“1MB”,它在其stdout流上发出以下内容:

<!--XSUPERVISOR:BEGIN-->Hello!<!--XSUPERVISOR:END-->

在这种情况下,supervisord将发出一个PROCESS_COMMUNICATIONS_STDOUT事件,其中包含有效负载“Hello!”中的数据。

一个(用Python编写的)会发出进程通信事件的脚本示例位于supervisor包的scripts目录中,名为sample_comment.py

指定为“事件监听器”([eventlistener:x]节)的进程的输出不会以这种方式处理。这些进程的输出不能进入捕获模式。

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

supervisor系列:5、日志 的相关文章

  • 使用Supervisor和NGINX部署

    目录 SupervisorNGINX Supervisor span class token function sudo span span class token function apt get span y update span c
  • Supervisor 使用说明,轻松管理进程

    Supervisor 使用说明 xff0c 轻松管理进程 导读 要想在终端后台常驻进程 xff0c 首先想到的是在命令后加 amp 符号 xff0c 来达到隐藏程序在后台的目的 xff0c 尽管看起来进程已经在后台运行了 xff0c 实际上
  • 进程管理

    彩蛋 操作系统总目录 戳我 进程 进程的概念 进程的定义 程序 就是一个指令序列 程序段 数据段 PCB三部分组成了进程实体 进程映像 一般情况下 xff0c 我们把进程实体就简称为进程 例如 xff0c 所谓创建进程 xff0c 实质上是
  • python自己重启自己程序_Supervisor 让崩溃的程序自动重启

    Supervisor 介绍 Supervisor 是一个用 Python 写的进程管理工具 xff0c 可以很方便的用来启动 重启 关闭进程 不仅仅是 Python 进程 除了对单个进程的控制 xff0c 还可以同时启动 关闭多个进程 xf
  • supervisor安装

    说明 Supervisor翻译过来是监管人 xff0c 在Linux中Supervisor是一个进程管理工具 xff0c 当进程中断的时候Supervisor能自动重新启动它 可以运行在各种类Linux unix的机器上 xff0c sup
  • Redhat进程管理

    进程管理 概论 xff1a 程序 xff1a 静态的代码 xff0c 占用磁盘空间 进程 xff1a 动态的代码 xff0c 占用内存 cpu xff08 提供服务的主体 xff09 进程的唯一标识 xff1a PID 编号 父进程 子进程
  • supervisor搭建与配置

    supervisor 是管理程序进程启动和状态 xff0c 当程序进程死掉 xff0c supervisor会把这个程序进程重新拉起 python版本最低要2 7 pip install supervisor 就可以安装了 如果是pytho
  • Linux进程管理-ps

    Linux进程管理 ps ps 命令的基本格式如下 xff1a root 64 localhost ps aux 查看系统中所有的进程 xff0c 使用 BS 操作系统格式 root 64 localhost ps le 查看系统中所有的进
  • Linux进程管理-kill

    Linux进程管理 kill kill 从字面来看 xff0c 就是用来杀死进程的命令 xff0c 但事实上 xff0c 这个或多或少带有一定的误导性 从本质上讲 xff0c kill 命令只是用来向进程发送一个信号 xff0c 至于这个信
  • Linux内核:进程管理——进程文件系统 /proc详解

    proc详解 xff1a 内容摘要 xff1a Linux系统上的 proc目录是一种文件系统 xff0c 即proc文件系统 Linux系统上的 proc目录是一种文件系统 xff0c 即proc文件系统 与其它常见的文件系统不同的是 x
  • 进程管理(五)--linux进程内核栈

    在进程创建时 xff0c 内核会为进程创建一系列数据结构 xff0c 其中最重要的就是上章学习的task struct结构 xff0c 它就是进程描述符 xff0c 表明进程在生命周期内的所有特征 同时 xff0c 内核为进程创建两个栈 x
  • 深入AMS源码(四)——ActivityManagerService的进程管理

    1 AMS中的进程管理 final ArrayList
  • supervisor系列:2、运行supervisor

    supervisor系列 2 运行supervisor 文章目录 supervisor系列 2 运行supervisor 1 添加一个程序 2 运行supervisord 2 1 supervisord命令行配置 3 运行superviso
  • centos 普通用户操作 supervisor 报错

    当我们在centos系统中使用普通用户操作supervisor时 可能会有以下权限问题 error
  • Centos7 使用nginx 和 supervisord 部署python +tornado+nodejs

    一 我用到的工具是netty winscp linux 环境下安装nginx步骤 开始前 请确认gcc g 开发类库是否装好 默认已经安装 yum y install gcc gcc c 安装gcc和c 编译器 1 centOS安装依赖 y
  • supervisor系列:1、了解并安装supervisor

    supervisor系列 1 了解并安装supervisor 文章目录 supervisor系列 1 了解并安装supervisor 1 前言 2 supervisor概述 3 特点 4 Supervisor组成 5 平台要求 6 安装 6
  • Linux的进程管理

    目录 1 概述 2 进程描述符 2 1 进程描述符的分配 2 2 进程描述符的存放 2 3 进程状态 2 4 进程上下文 2 5 进程家族树 3 进程的创建 4 进程的终结 5 线程的实现 1 概述 进程是执行期的代码 但是进程不止包括这样
  • supervisor系列:4、子进程

    supervisor系列 4 子进程 文章目录 supervisor系列 4 子进程 1 非后台运行的子进程 1 1 程序配置示例 1 1 1 Apache 2 2 6 1 1 2 Two Zope 2 X instances and on
  • supervisor系列:3、配置文件

    supervisor系列 3 配置文件 文章目录 supervisor系列 3 配置文件 1 文件格式 1 1 环境变量 2 unix http server 段设置 2 1 unix http server 段的值 2 2 unix ht
  • supervisor系列:5、日志

    supervisor系列 5 日志 文章目录 supervisor系列 5 日志 1 活动日志 1 1 活动日志输出示例 1 2 活动日志等级 1 3 活动日志轮换 2 子进程日志 2 1 捕获模式 supervisord执行的主要任务之一

随机推荐

  • 樱花动漫中的视频下载分析

    昨天有个朋友问我樱花动漫中的视频怎么下载 那么今天我就写篇文章来专门分析下樱花动漫中的视频是怎么下载的 1 还是打开我们的马赛克视频助手 来分析樱花动漫的数据包 当然你们也没有用其他的抓包工具 不过我习惯了用这个 可以使用它的转到来源功能
  • EPI distortion correction形变矫正, eddy, fieldmap等五种不同方法

    EPI distortion correction形变矫正 1 topup eddy 2 fieldmap eddy 2 1 对mag做去脑壳 2 2 基于去过脑壳的mag 1volume bet nii gz数据 对fieldmap进行预
  • STM32 FLASH操作

    STM32 的闪存模块由 主存储器 信息块和闪存存储器接口寄存器等 3 部分组成 主存储器 该部分用来存放代码和数据常数 如 const 类型的数据 对于大容量产品 其被划分为 256 页 每页 2K 字节 注意 小容量和中容量产品则每页只
  • 解决iframe在ios中无法滚动的bug

    在解决iframe在ios无法滚动的bug中 需要在iframe外面包裹一层div 如下 div class scroll wrapper div 然后设置scroll wrapper的样式 给scroll wrapper添加 webkit
  • camunda 流程引擎如何开始并行任务,且有哪些实现方式?

    认识并行任务 在流程引擎开发中 稍微复杂一点的项目都会遇到并行任务 什么是并行任务呢 就是在完成一个流程节点后 下一步会同时开始多个任务 且任务与任务之间互不影响 这个说起来真的有点绕 刚开始我真不理解 试了好多次才想明白 下面就画2条不同
  • 错误的分页写法及修改

    一 错误的写法 api GetMapping groupList ApiImplicitParams ApiImplicitParam name current value 页码 required true dataType Long da
  • MMdetection学习笔记 第一步安装配置

    安装 之前的安装老是出问题 这里重新仔细进行第三遍 参考了哔哩哔哩的视频教程 mmdetection 教程 使用篇 https www bilibili com video BV1Jb4y1r7ir p 3 share source cop
  • Qt(windows下)捕获异常信息并自动重启

    参考 https blog csdn net x85371169 article details 79267592 目前在弄一个工业上用的软件 需要实现无人值守功能 软件经过两三个星期的debug 已经将绝大部分导致软件死机的bug修复 但
  • 使用burpsuite对web进行账号密码暴力破解

    一 打开环境 1 打开php 2 打开burp suite 3 打开小狐狸 进入127 0 0 1 pikachu 二 Repeater 重发器 1 访问pikachu 多次进行用户名和密码的登录 描述 2 burp suite 中抓包 3
  • set和multiset的用法详解

    一 set文档介绍 1 set是按照一定次序存储元素的容器 2 在set中 元素的value也标识它 value就是key 类型为T 并且每个value必须是唯一的 set中的元素 不能在容器中修改 元素总是const 但是可以从容器中插入
  • 【语义分割】2、Mapillary 数据集简介

    文章目录 一 简介 二 类别 三 标注示例 一 简介 Mapillary Vistas 数据集包含 66 类共 25 000 张高分辨率街景场景的数据 其中有 37 个类是以实例区分的标签 数据总量是 cityscapes 的5倍之多 包括
  • Open3D 基于点云高程制作热力图

    目录 一 概述 二 代码实现 三 结果展示 一 概述 如题 基于点云的高程来制作热力图渲染赋色点云 其结果如下图所示 二 代码实现 import numpy as np import open3d as o3d from matplotli
  • leetcode刷题方法

    leetcode刷题方法 一 范围内的200题 二 刷题步骤 三 算法思路 四 更新 1 12日留 此文章借鉴 陈同学在搬砖 微信公众号的一篇文章 https mp weixin qq com s xr2abGNv8wDZJ qyN4Kew
  • HTML、CSS、JavaScript分别实现什么功能?

    学习Web前端开发基础技术需要掌握 HTML CSS JavaScript 那么这三个都是分别实现什么功能的呢 下面和小编一起来看看吧 一 HTML是网页内容的载体 内容就是网页制作者放在页面上想要让用户浏览的信息 可以包含文字 图片 视频
  • Springboot整合dubb3+nacos作注册中心(基础篇)

    1 首先看下项目结构如下 2 新建父工程springboot dubbo模块 pom文件如下
  • 亲测可用,SpringBoot项目打印接口请求信息日志,CommonsRequestLoggingFilter实现方式

    文章目录 需求背景 效果图 实现思路 其他方案对比 优缺点分析 具体实现 需求背景 线上项目出现bug时 可以通过接口的请求参数来排查定位问题 和业务方battle时 能够证明他是自己操作的问题 效果图 实现思路 Spring提供了Comm
  • 重试机制的实现(4m,10m,10m,1h,2h,6h,15h)

    项目场景 由于我们现在所做的项目有有很多的外放接口供代理商调用 但是有些接口的响应并不是实时返回的 此时我们就需要使用回调接口的方式 将信息响应给代理商 在这期间可能会出网络不稳定等其他情况 导致回调接口调用失败 所以需要特定的回调重试机制
  • 数据库系统原理---封锁

    封锁 封锁粒度 MySQL中提供了两种封锁粒度 行级锁和表级锁 应该尽量的只锁定需要修改的那部分数据 而不是所有的资源 锁定的数据量越少 发生锁争用的可能性就越小 系统的并发程度就越高 加锁需要消耗资源 锁的各种操作 包括锁的获取 释放锁
  • org.elasticsearch.bootstrap.StartupException: java.lang.IllegalArgumentExceptio

    这是我转载的一片文章 解决了我的问题 所以记录一下 话不多说 见正文吧 elasticsearch安装踩过的那些坑 坑1 failed to send join request to master 原因 你复制了某个节点的elasticse
  • supervisor系列:5、日志

    supervisor系列 5 日志 文章目录 supervisor系列 5 日志 1 活动日志 1 1 活动日志输出示例 1 2 活动日志等级 1 3 活动日志轮换 2 子进程日志 2 1 捕获模式 supervisord执行的主要任务之一