OpenTelemetry 入门和部署

在维护现代分布式系统时,了解服务的运行状况和进行错误分析往往充满挑战。当客户请求横跨多个微服务、函数和基础设施时,如何能够清晰地洞察整个请求链路的健康状况与性能表现?这个问题的答案,就在于完善的服务可观测性。
可观测性不仅仅是传统的监控(记录已知的故障模式),它赋予我们通过系统外部输出来探索、分析和理解系统内部状态的能力。这通常建立在三大支柱之上:指标(Metrics)、链路(Traces) 和日志(Logs)。
我的Linux

2025国庆节,给我的笔记本重装了Linux桌面系统,用上了Debian 13(代号Trixie),默认的桌面环境Gnome 48,本文趁机回顾下这十几年使用Linux桌面的历史,这是一段充满探索、适应与发现的旅程。
SQLAlchemy中的联表查询

使用关系型数据库时,联表查询是一项常见的数据库操作。外键可以简化联表查询操作,确保数据的强约束和完整性。但对数据库管理而言,外键使得数据库的设计和维护变得复杂,降低灵活性。因此,许多公司禁止在业务中使用外键,而是在业务代码层保持数据的一致性。
Python中最流行的 SQLAlchemy 这个ORM库就能通过外键和自带的 relationship 函数实现跨表数据模型间的关系绑定。提供了基于外键,和基于join的2种方法。本文将从简到繁的一一介绍。
EFK日志体系快速入门

7月,远方的风暴。
Elasticsearch、Filebeat、Kibana 合称EFK,常用于构建企业级的日志系统。Filebeat 在其中负责数据的采集:读取日志文件,将其发往Elasticsearch;Elasticsearch是数据库,处理和存储Filebeat发过来的数据;Kibana是UI,用于查询Elasticsearch中的数据。三者协作,构成了完整的日志平台。此外,Elasticsearch具有强大的全文搜索能力,也常在业务上用作搜索引擎。
本文将使用docker compose编排Nginx、Filebeat、Elasticsearch和Kibana,实现将Nginx的access log分字段解析后存储到Elasticsearch,并在Kibana上展示和查询。
使用ollama搭建开源AI编程助手

水中投影,似真似幻
当前,大公司大模型几乎主导了AI行业。作为个人,把所有的数据和隐私全部上交,固然能获得很好的智能体验。不过,开源生态也一如既往的提供了一些丰富的选择,对许多个人和企业来说,用开源工具私有化部署开源模型不失为一种可行的方案。
这篇文章会基于开源的LLM模型(Qwen、Ollama、deepseek等)、开源的模型工具(Ollama)、开源的插件集成(VSCode+Continue插件)方案,搭建一个基础的编程编程助手。重点在于Ollama这个模型工具的用法。
Ollama 是一个开源的大型语言模型(LLM)工具,专注于在本地运行和管理各种 AI 模型。支持许多流行的模型,比如 deepseek-r1、gemma3、qwen3、llama4等。Ollama大大简化了用户下载和运行模型的过程。
同时,Ollama还获得了许多流行的集成工具的支持,比如Open WebUI、dify等等,许多开源工具都可以使用Ollama的接口。
Linux内核模块编写和调试

黄昏时分
接上一篇文章的内容 编译和运行新版本Linux内核,本文中,我们继续学习内核模块相关的基础知识。为了方便以后为Linux内核贡献代码,这次看看如何编写一个简单的内核模块,以及将其集成到Linux内核代码中,并使用GDB调试内核和我们写的内核模块。
这篇文章紧接上文,因此会简化上文已经详细介绍的内核编译、QEMU等基础知识,如果过程中卡壳了,建议从上文 编译和运行新版本Linux内核 中寻找答案试试。也可以在评论区留言。
编译和运行新版本Linux内核

暮春时节,咖啡店外的街道郁郁葱葱。
对天天使用Linux系统的人来说,内核是个既神秘又强大的存在。编译内核也是探索和学习Linux的一种方式,虽然不大可能真的将自己编译的内核用在桌面或者生产系统,也不大有能力为Linux内核贡献代码,但是了解内核的基本组成还是挺有趣的。
本文使用RockyLinux9作为编译机,编译最新版的Linux内核 6.14.6 版本,并编译busybox提供基础的shell环境。之后层层深入,从构建initramfs开始、制作rootfs、最后使用GRUB引导内核启动结束。
博客归来2

2025年5月11日 拍摄于黄昏的浙大紫金港校园。正如那句老话,道路是曲折的,前景是光明的。
这个博客已经开通了很久,眼尖的朋友可能已经发现博客最近发生了重大改版。
是的,近期我用 Flask 重写了本博客,替代用了好些年的Typecho。想想从大学时候写博客,用的wordpress,后续换到更轻量的typecho,其实都不算满意,主要原因就是不能随心所欲的定制,毕竟和PHP不熟。也看到很多人在用github或者其它静态页面工具搭建站点,但我更希望能自己写一套博客系统,而且必须用Python写,必须是动态的。
Vagrant和Vagrantfile入门
Vagrant 是由hashicorp公司(该公司还开源了Consul、Terraform等工具)开源的用于构建和管理虚拟机环境的工具,对于快速构建开发环境十分有用。Vagrant使用Vagrantfile进行虚拟机编排,和docker-compose有些类似,只不过Vagrant管理的对象是虚拟机,Vagrant支持VirtualBox、 VMware Fusion 和 Hyper-V 等许多虚拟化产品。本文中基于VirtualBox做演示。
VimScript:退出文件时自动关闭各种缓冲区(Buffer)
经过调教的vim,肯定有很多插件,比如nerdtree,python-mode等等,很多插件在使用过程中,都通过新建buffer来展示其提供的内容。出于习惯,使用q退出文件,当时vim上还有许多插件的buffer未退出,需要额外的指令执行退出(qa)。怎么在退出文件时,同时退出其它buffer?本文以vim初学者的,编写了一段vimscript实现该功能。