Alertmanager-主入口main.go
Alertmanager-主入口main.go 基于v0.28 关键模块说明 API 入口:api/v2/ 功能:接收Prometheus警报、提供管理接口 AlertRouter 路径:/dispatch 处理流程: 1func (r *Route) Match(lset model.LabelSet) bool Inhibitor 路径:/inhibit 核心逻辑: 1func (ih *Inhibitor) Mutes(lset model.LabelSet) bool DispatchTree 路径:/dispatch 特性:多级路由树结构 Notification Pipeline 路径:/notify 阶段: GroupWait GroupInterval RepeatInterval Notifier 集成:/notify/<type> 实现示例: 1234type EmailNotifier struct { conf *config.EmailConfig tmpl *template...
Prometheus安全认证
Prometheus安全认证背景一般Prometheus开启端口之后就可以访问UI,缺少安全认证 Prometheus提供了 Basic Auth能力 Ref:https://prometheus.ac.cn/docs/prometheus/latest/configuration/https/ /web-config.yml:https://github.com/prometheus/prometheus/blob/release-3.4/documentation/examples/web-config.yml 1. 设置账号密码12345Centos # 下载工具yum install httpd-tools# 生成账号密码htpasswd -nB 'admin' 2.配置web-config.yml12basic_auth_users: admin: $2y$05$UKSS18ztdsUNoEuXYScr2OE1TCMe1hWnmD6JuwUi/uPTJayHIakae 3. 启动配置添加/bin/prometheus --web.c...
《一个人就一个人》-书摘
《一个人就一个人》-书摘 一个人就一个人-不是伤感,也不是执拗。我们的人生原本就是一个人 至于爱情。 恋爱是短暂的陪伴,婚姻是长久的同行。 我们不是因为工作才走在一起,我们是为了要走 在一起才做这份工作。 困了就跟同事说:”对不起,我困了,我要睡午觉。”这个习惯坚持了十年。 到了运动时间,就跟大家说:”对不起,我要去运动了,明天继续开会吧。” 累了,就什么都不做。 不爽了,就看部催泪电影,好好哭一场。 也会为了庆祝某件事,自己开一瓶酒,对自己说:”你真厉害啊!” 不让此刻的自己失望,不让未来的自己抱憾。 我对群没恶意,群对我也没恶意。惯用的做法是屏蔽群消 息,不然我每天的工作就是看手机。有人问如果错过重要的消 息怎么办,我的感觉是一如果一个消息能错过你而进行,表 示你并不重要。如果一个消息需要等你回应,你不回应,一定会有同事给你打电话告诉你 群。说起变淡的原 因,好像也没什么特别的,大家聊起时,没有义愤填膺,也不 是特别抗拒,就是“噢噢噢,有听说,随便你……”。别人在你 人生中这么淡去,你也应该能想象得到自己又是如何淡出别人 的人生的。当你发现你和某个人淡了,可能会很懊恼,但也不...
K8s-kustomize
K8s-kustomize背景K8s为 减少维护很多YAML文件,选择定义K8s资源,从1.14开始,kustomize默认提供 kustomize提供以下管理各种配置文件: 从其他文件来源生成K8s资源对象 统一为所有资源设置命名空间、Label、注解或者特殊格式的名称 组合不同的资源作为一个应用或者一个管理单元进行整体注解 概述kustomize核心配置是kustomizeation.yaml,这个文件类似于一个一个模版文件,里面定义了相应的操作指令,主要操作指令以及作用如下: namespace:为所有资源都添加命名空间 namePrefix:要添加到所有资源名称之前的前缀 nameSuffix:要添加到所有资源名称之后的后缀 commonLabels:要添加到所有资源和选择器中的Label commonAnnoations:要添加到所有资源的注解 resources:列表中的每个条目都会生成资源配置 configMapGenerator:针对列表中的每个条目都会生成一个ConfigMap secrertGenerator:列表中的每个条目都会生成一个S...
K8s-深入理解Service
K8s-深入理解Service 基于K8s v1.31 OverviewService是K8s实现微服务的核心,通过创建Srvice,可以实现具有相同的功能都容器提供一个统一的入口 Service的概念和原理负载均衡机制当一个Service对象被定义出来,客户端都可以通过ServiceIP访问Pod容器,到每个Node山上交与kube-porxy实现 kube-porxy的代理模式 iptables模式 (v1.28中实现) 通过基于Linux 的 Linux Kernel的iptables规则实现,实现了从Service到后端Endpoints列表的负载均衡规则 每次创建Service和Endpoints发生变化,kube-proxy都会刷新本Node得全部iptables,在大规模集群(service和endpoints数量达到数百万),刷新时间过长,系统性能下降,可以通过调整kube-proxy的资源对象KubeProxyConguration中的同步行为; 12345iptables: # 设置同步最短时间,默认1s minSyncPeriod: 1s # 同步时间间隔...
GO-深入理解Sort
GO-深入理解SortGo 语言的 sort 包提供了对切片和用户自定义集合进行排序的功能。它的设计非常灵活,支持多种数据类型的排序,并且允许用户通过实现接口来自定义排序规则。以下是对 sort 包的深入解析,包括其核心接口、实现原理以及使用方法 核心接口12345678910type Interface interface { // Len 返回集合中的元素数量 Len() int // Less 返回索引为 i 的元素是否应该排在索引为 j 的元素之前 Less(i, j int) bool // Swap 交换索引为 i 和 j 的元素 Swap(i, j int)} 排序函数sort.Sort 对实现了 sort.Interface 接口的类型进行排序 exmaple: 12345678910111213141516171819202122232425262728package mainimport ( "fmt" "sort")type Person struct ...
K8sController-CronJob(定时任务)
K8sController-CronJob(定时任务) 基于K8s v1.31 Cron Job支持用于每隔一段时间创建定期运行的批处理任务 CronJob定时表达式12345678910# ┌───────────── 分钟 (0 - 59)# │ ┌───────────── 小时 (0 - 23)# │ │ ┌───────────── 月的某天 (1 - 31)# │ │ │ ┌───────────── 月份 (1 - 12)# │ │ │ │ ┌───────────── 周的某天 (0 - 6)(周日到周六)# │ │ │ │ │ 或者是 sun,mon,tue,web,thu,fri,sat# │ │ │ │ │# │ │ │ │ │# * * * * *Minutes Hours DayofMonth Month DayofWeek Minutes: , - * / 或者0-59的整数 Hours: , - * / 或者0-23的整数 DayofMonth: , - * /...
K8sController-Job(批处理任务)
K8sController-Job(批处理任务) 基于K8s 1.31 主要配置和工作机制123456789101112131415161718192021222324252627282930313233343536apiVersion: batch/v1kind: Jobmetadata: name: hellospec: # 可以并行任务数量,默认1 parallelism: 3 completions: 3 # Pod完成模式,NonIndexed(数量达到completions推出,默认),Indexed # Indexed模式:会被设置为Pod服务名 # - 设置Pod名称:<Job Name>-<索引序号>-<随机字符串> # - 设置Annotation "batch.kubernetes.io/job-completion-index": <索引序号> # - 设置Label "batch.kubernetes.io/job-completion-index"...
MySQL-PerformanceSchema
MySQL-PerformanceSchemaPerformanceSchemaPerformance Schema是提供了MySQL服务器内部运行的操作上的底层指标 消费者表实上,MySQL 8.0.25社区 版的performance_schema中包含110个表。基于它们的用途,可分为以 下几个类别。 当前和历史数据 存放事件的表名包含如下结尾: *current 当前服务器上进行中的事件 _history 每个线程最近完成的10个事件 history_long 从全局来看,每个线程最近完成的10000个事件 _ _history和_history_long表的大小是可配置的 以下是当前和历史数据 events_waits 底层服务器等待,例如获取互斥对象 events_statements SQL查询语句 events_stages 配置文件信息,例如创建临时表或发 events_transactions 事务 汇总表和摘要: 汇总表保存有关该表所建议的内容的聚合信息。例如,memory_summary_by_thread_by_event_na...
MySQL-schema设计与管理
MySQL-schema设计与管理选择数据库优化的数据类型常见原则: 更小的通用 简单为好 尽量避免存储NULL MySQL为了兼容性支持很多别名,例如, INTEGER(映射到INT)、BOOL(映射到TINYINT)和NUMERIC(映射 到DECIMAL)。它们都只是别名。这些别名可能令人不解,但不会影响性 能。如果建表时采用数据类型的别名,然后用SHOW CREATE TABLE检 查,会发现MySQL报告的是基本类型,而不是别名 整数类型 有两种类型的数字:整数(whole number)和实数(real number,带有小数 部分的数字)。如果存储整数,可以使用这几种整数类型:TINYINT、 SMALLINT、MEDIUMINT、INT或BIGINT。它们分别使用8、16、24、32 和64位存储空间。可以存储的值的范围从-2(N-1)到2(N-1)-1,其中N是存 储空间的位数。 整数类型有可选的UNSIGNED属性,表示不允许负值,这大致可以使正数 的上限提高一倍。例如,TINYINT UNSIGNED可以存储的值的范围是0~ 255,而TINYINT的...