可观测学堂

可观测问答

聚焦概念、架构、排障、价格与选型,一篇解决一个明确问题。

如何正确清理 Docker 容器的日志? cover
概念指南

如何正确清理 Docker 容器的日志?

Docker 容器日志在 /var/lib/docker/containers/<id>/<id>-json.log,不能直接 rm(文件被占用)——用 truncate -s 0 清空,或配置 log-opts 轮转从根本解决。

Go 语言的日志输出如何加颜色? cover
概念指南

Go 语言的日志输出如何加颜色?

Go 日志加颜色的三种方式:手写 ANSI 转义码(\033[31m)、用 logrus/charmbracelet/log 等库的彩色 handler、slog 第三方 handler。本文给出三种实现。

Python 的 logging 输出如何加颜色? cover
概念指南

Python 的 logging 输出如何加颜色?

Python 日志加颜色:colorlog 库一行配置即彩色输出,或自定义 Formatter 插入 ANSI 转义码。注意仅终端启用、写文件时禁用。本文给出两种实现。

Python 如何拼接(合并)两个列表? cover
概念指南

Python 如何拼接(合并)两个列表?

合并列表:+ 运算符创建新列表;extend() 就地追加;[*a, *b] 解包语法;itertools.chain 惰性拼接。本文给出四种方式与性能差异。

如何配置 Syslog 让某个应用的日志写入指定文件? cover
概念指南

如何配置 Syslog 让某个应用的日志写入指定文件?

通过 rsyslog 的 programname 过滤规则,把指定应用的日志路由到独立文件。本文给出完整配置步骤、权限设置与重载方法,并介绍如何用观测云 DataKit 统一采集这些文件。

Node.js 中 console.log 打印对象时显示 [Object],如何看到完整内容? cover
概念指南

Node.js 中 console.log 打印对象时显示 [Object],如何看到完整内容?

Node.js 的 console.log 对深层对象只显示 [Object]。本文介绍 util.inspect 的 depth 选项、JSON.stringify 以及 console.dir 三种方法,完整打印嵌套对象。

Python 中如何把整数转换成字符串? cover
概念指南

Python 中如何把整数转换成字符串?

Python 整数转字符串最常用的方法是 str(),也可以用 f-string、format() 等方法。本文对比各种写法及其适用场景。

Python 中如何复制文件? cover
概念指南

Python 中如何复制文件?

Python 复制文件用标准库 shutil:copy() 复制内容和权限,copy2() 额外保留时间戳等元数据,copytree() 递归复制整个目录。本文对比各方法差异。

如何正确使用 Rsyslog 的 imfile 模块解析文本文件? cover
概念指南

如何正确使用 Rsyslog 的 imfile 模块解析文本文件?

通过 rsyslog 的 imfile 模块可以采集普通文本日志文件并打进 syslog 管道。本文给出 RainerScript 风格的完整配置、状态文件说明及排错要点,并对比观测云 DataKit 的文件日志采集方案。

Python 中如何让程序暂停/延时一段时间? cover
概念指南

Python 中如何让程序暂停/延时一段时间?

Python 实现延时最常用的方法是 time.sleep()。本文介绍 sleep、异步 asyncio.sleep、以及忙等待方案的区别,并说明各自适用场景。

如何在 Logstash 配置文件中输出到多个 Elasticsearch 索引? cover
概念指南

如何在 Logstash 配置文件中输出到多个 Elasticsearch 索引?

Logstash 通过在 output 中用条件判断和索引名变量实现多索引输出。本文给出按日志类型分流到不同索引的完整配置示例,并介绍观测云的多索引方案。

Python 中如何安全地创建多级(嵌套)目录? cover
概念指南

Python 中如何安全地创建多级(嵌套)目录?

Python 创建嵌套目录推荐 pathlib 的 mkdir(parents=True, exist_ok=True),不会逐级报错也不会因目录已存在而抛异常。本文对比 pathlib 与 os.makedirs 的用法。