Grafana中自定义Legend的名字和自定义value的显示
针对 value 的值进行修改解释举个例子:使用 snmp_exporter 对防火墙进行监控,端口状态监控值为 1 或 2(1 是启用,2 是未启用), 在 Prometheus 中的原始数据是: 在 Grafana 中显示效果为: 其中:Value mappings 控制数值对应的显示文字。Thresholds 控制数值对应的显示颜色。 针对 Legend 修改描述文字Legend 这里配置的是 {{ifName}} 显示出来就是类似 ge0/2 等,也就是 Prometheus 里原始数据的标签名。 如果我想根据这个名字来指定一个对应关系来显示,比如领导不知道 ge0/2 是什么意思(开玩笑的,没找到合适的例子),可以将 ge0/2 转换为:第一排第二个网口,可以这么配置: 根据 value 值进行变色如果只想针对某一列修改颜色 value mappings 添加对应的说明和颜色 添加一个 override
Nginx Ingress 暴露没有定义Host的ingress的Metrics数据
指定默认的 ingress 后端名字有点绕口,假如说之前有个服务是通过 ip:port 来访问 nginx(就是 default server),然后转发到后端服务的,那么转换成 ingress 后,不能指定 host,不然会匹配不到规则。ingress 就不能配置 host,创建出来的 ingress 资源就是这样的: 创建出来的 ingress 资源显示: metrics 监控指标问题因为上面我们创建了一个 ingress,但是没有指定 host,在 ingress-nginx 中,没有 host 的 ingress 的 metrics 指标是不收集的,代码在此:https://github.com/kubernetes/ingress-nginx/blob/d82585917c845e598a2cd5d2c4291ce891b5e5b4/internal/ingress/metric/collectors/socket.go#L233-L235 GitHub 上有很多对应的 issues,比如:https://github.com/kubernetes/ingre...
Kubernetes配置镜像仓库认证imagePullSecrets
创建 secret可以在 namespace 里用一个全局的 image pull secret,创建个 secret,如果有特殊字符的,可以用单引号 ‘ ‘ 引起来。 全局配置给默认的 serviceaccount 配置 imagePullSecrets , 这样配置好了之后,就无须在每个 deployment 上配置了。 在每个服务上单独配置在每个 deployment 里面引用这个 secret 无效排查如果创建了不生效,可以排查 secret 内容是否正确: 然后看下 username 和 password 字段是否正确。
fail2ban失效排查
selinux容易忽略的一点,selinux 会限制 fail2ban 的执行, 手动运行 /usr/bin/fail2ban-server -xf start 可以正常运行,但是 systemd 就是无法启动,会报错找不到日志文件,这种情况可以将 selinux 禁用再测试。 使用 fail2ban-regex 排查规则 IndexError使用 fail2ban 分析日志,将恶意 IP 封锁,通过 fail2ban-regex 验证,报错: IndexError: string index out of range 日志是经过 docker 处理过的,格式如下: filter 文件: fail2ban-regex 报错如下: 问题原因:日志中存在日期字段,docker 又给添加了一个日期字段,导致存在两个日期字段,fail2ban 无法解析。 解决方法: 指定日期格式 修改 filter 文件,增加一行:(%% 表示 %) 防火墙我都是把系统自带的防火墙工具关掉的,避免防火墙管理工具影响到 fail2ban 的正常运行,如果需要用到防火墙,直接使用 ip...
Prometheus中查询无数据提供默认值
单一时间序列(时间戳)的样本。具体来说,vector(0) 将创建一个包含值 0 的瞬时向量(即在某个时间点的时间序列)。 这里的 vector(0) 的作用是为查询结果提供一个默认值或回退值。当前面的 sum(increase(...)) 查询没有返回任何结果时,整个查询将返回 vector(0) 生成的值,即 0。
kubectl导出的yaml忽略指定字段
kubectl 指定 -o yaml 输出的 yaml 文件包含一些默认字段,这些字段我们是不需要的,可以使用 yq 来进行去除这些字段,生成的 yaml 文件可以用于迁移/部署服务等。 安装 yq 导出 deployment 导出 service 导出 Configmap 如果导出的 configmap 格式错乱,换行符变成 \n ,可以使用 yq 再次进行格式化 导出 secret 导出 ingress
MySQL进行文件操作
我执行了这条命令: 报错: The MySQL server is running with the --secure-file-priv option so it cannot execute this statement 查询 MySQL 的安全文件目录 文件可以写入到这个目录,修改一下 SQL:
PyCharm配合WSL进行开发
本文使用 WSL2,WSL2 里面安装了 Docker, PyCharm 支持的配合 wsl 进行使用的方法有很多种,这里提供几个思路 方法 1: WSL 远程开发(目前 BETA 版)方法 2: 代码放在 Windows 上,Python 解释器在 WSL 里方法 3: 代码放在 WSL 里,Python 解释器在 WSL 里方法 4: 代码放在 WSL 里,Python 解释器在 WSL 里的 Docker 里方法 5: 代码放在 Windows 上,Python 解释器放在 WSL 里的 Docker 里方法 6: 直接在 WSL 里安装 Linux 版的 PyCharm(WSL 支持 GUI 程序运行)方法 7: 使用 devcontainer(不好用) 我最推荐的: 将代码放在 WSL 中,将 Python 解释器放在 WSL 中。 代码放在 WSL 里,Python 解释器在 WSL 里首选,这个时候执行的就是 wsl 里的程序,比如 git 调用的就是 wsl 里的 git 程序。 使用方法: 进入 WSL 终端拉取代码(PyCharm 目前不支持拉代码到 WSL...
使用Python开发一个Prometheus exporter
需求:需要监控指定的邮箱发送邮件是否正常,使用 Prometheus 官方的 Python sdk,代码如下: 代码 展示邮件登录正常: 断开网络,或者修改邮箱密码: Prometheus 界面查询 使用方式安装依赖包 部署到 KubernetesDockerfile yaml部署到 Kubernetes,借助 Prometheus 服务发现将 service 的 metrics 数据接入 其他问题python 容器化部署不产生控制台日志:
Alpine容器文件后缀浏览器下载变成zip
比如一个网盘程序,上传了一个 excel 文件,点击获取直链,然后将获取到的直链放到浏览器地址栏访问触发下载,下载下来的文件后缀自动变成了.zip 这是因为 Alpine 镜像比较精简,缺少了很多 MIME 类型数据,可以通过安装 mailcap 包来解决。 再次测试,已经正常



