容器抓包实战

tcpdump 抓包 1 tcpdump -Xnlps0 -nn -iany port 9001 -w 9001.pcap 参数说明: -X: 显示包的内容(十六进制和 ASCII) -n: 不将地址转换为名字 -l: 使标准输出行缓冲 -p: 不让网卡进入混杂模式 -s0: 抓取完整的数据包 -nn: 不将协议和端口转换为名字 -iany: 监听所有网络接口 -w: 将原始数据包写入文件 容器 Debug Kubectl Debug 1 kubectl debug -it redis-sentinel-master-ss-0 --image=reg.smvm.cn/appbase/debug-tools:latest --target=redis-master 这个命令会创建一个新的容器,共享目标容器的网络、PID 和 IPC 命名空间,方便进行调试。 ...

2022-08-30

Go RPC 初探

RPC 技术分享 RPC 介绍 远程过程调用(Remote Procedure Call 缩写 RPC)是一个计算机通信协议,通俗来讲就是调用远程服务上的一个函数,在调用时将对象名、函数名、参数等传递给远程服务器,服务器将处理结果返回给客户端,客户端调用 server 端提供的接口就像是调用本地的函数一样。 RPC 的消息可以通过 TCP、UDP 或者 HTTP 等传输。 ...

2022-04-19

Prometheus 数据保留时间

如何控制 Prometheus 保留多少历史记录? Prometheus 将时间序列及其样本存储在磁盘上。鉴于磁盘空间是一种有限资源,我们希望对 Prometheus 使用的磁盘空间进行一些限制。在以前的版本中,使用 --storage.tsdb.retention 参数即可完成配置。这个参数指定 Prometheus 将保持可用的时间范围。这是最低要求,因此如果其中一些仍在保留窗口内,它将保留整个块。如果您知道每秒样本的摄取率,那么您可以将其乘以每个样本的字节数(1.5ish,为了安全起见为 2)和保留时间,以了解将使用多少磁盘空间。 ...

2022-03-24

Go 之 Delve 调试

准备工作 安装 delve 项目代码 1 2 git clone git@git.baijiashilian.com:web/demo/go-debug-demo.git git clone git@git.baijiashilian.com:web/gotools/gitlab-tools.git 调试工具 delve delve 安装 https://github.com/go-delve/delve/tree/master/Documentation/installation 1 go install github.com/go-delve/delve/cmd/dlv@latest dlv 配置 1 ~/.dlv/config.yml 调试方式 本地调试 从源码开始编译并开始调试 1 dlv debug [package] [flags] 调试已经编译好的二进制文件 1 dlv exec ./hello -- args1 args2 编译的时候需要禁用编译器优化:go build -gcflags="-N -l" 编译选项有哪些:go tool compile -h 调试正在运行的进程 1 dlv attach pid [executable] [flags] 调试单元测试 1 dlv test [package] [flags] 远程调试 JSON-RPC & DAP 1 dlv --headless --listen 0.0.0.0:2345 <command> <target> <args> 兼容dlv connect、VS Code Go、GoLand ...

2022-03-20

Alertmanager 中的周期参数

在 Alertmanager 中有三个跟周期相关的参数,分别是 group_wait, group_interval, repeat_interval。合理地配置参数,有利于降低告警频率,避免告警风暴产生。 在深入了解这三个参数之前,首先需要关注到 Prometheus 中也有两个周期函数,scrape_interval 与 evaluation_interval。 ...

2022-03-14

Prometheus 增加身份认证

Prometheus 除了提供时序数据库和监控系统存在,其本身也对外提供了 Web 服务,用于提供报表展示及表达式计算,以及用于更新配置文件等功能的 API。 处于安全考虑,在对外的 Web 服务里,我们需要增加身份认证。Prometheus 提供 Basic Auth 身份认证。 ...

2022-03-12

ServiceAccount 的使用

概念 Kubernetes 中,Pod 内部进程想要访问 API Server,就需要用到 ServiceAccount。ServiceAccount 类似业务系统里的账户,用于为 Pod 提供身份。 ...

2022-03-10

PaperMod 主题下代码高亮最佳实践

背景 PaperMod 主题默认使用的是 highlight.js, 这是一种由 js 生成的高亮方案。相比 highlight.js, Hugo 官方更倾向使用 Chroma 来生成代码高亮。 Chroma 是由 Go 写的语法高亮工具,其编译速度更快,且 Hugo 内置了 Chroma 工具。Hugo 关于 Chroma 的文档在 Syntax Highlighting ...

2022-03-05

Docker 下 Filebeat 日志收集

背景 在收集服务端聊天消息日志时,用到了 Filebeat dissect 语法,而这个语法是 Filebeat 6.4 及之后的版本支持。服务端部分机器的 Filebeat 版本为 6.3 考虑到日志收集工作的普遍性,为了保持版本统一减少运维成本,特增加一种基于 Docker 实现的通用 Filebeat 日志收集方案。 ...

2022-03-05

Docker 常见问题小结

悬挂镜像 sonarnotify 在 CI/CD 中用到了 Docker 多阶段构建。 在构建完成后,即使每次都删掉了构建后的镜像,通过 docker images 还是能发现一些标签为 的镜像。经过查阅资料发现,这些镜像称为悬挂镜像(dangling image)。 ...