使用selenium来实现Grafana的自动截图
selenium 是一个 python 库, 用于操作 chromium 浏览器实现一些自动化的动作, 本文是为了把 grafana 的监控图截图保存, 后续可以将图片做成运维报表之类的. 调试阶段调试阶段可以使用电脑上的 chrome,并关闭 headless 模式,方便看到界面执行的效果.chrome 官网下载即可, chromedriver 下载地址: https://googlechromelabs.github.io/chrome-for-testing/ , chromedriver 放在代码同目录即可. 问题为什么不用 grafana-image-renderer, 这个官方插件 BUG 挺多的, 比如一个图需要很长时间才能加载, 就会出现图还没加载出来, 就完成了截图的情况. 并且截图速度很慢. 简单的开始 正常的话, 可以打开页面了, 然后浏览器会自动关闭. 查找元素从浏览器开发工具查找元素比如说在 grafana 登陆界面,我想自动输入账号密码进行登录,那么可以使用 在这里可以找到名字, 可以根据 NAME 来定位,也可以根据 class 定位. ...
Filebeat直接输出到Elasticsearch
正常情况下收集日志流程为: filebeat 读取节点上指定目录日志文件 –> kafka logstash 消费 kafka 数据 –> 写入到 ES 的指定索引加入 kafka 会提高健壮性,可以起到削峰填谷的效果。现在是非生产环境没有 kafka,所以才采用 filebeat 写入到 ES 这种方案。另一种架构:在Kubernetes下收集ingress日志到Elasticsearch 输入配置输入就是源日志的配置, 我这里配置了 2 个日志源,一个是 nginx ingress 的配置,记录的是所有请求的访问日志,另一个是业务 pod 的日志。通过 fields.log_topic 来配合下面的 output 来区分怎么输出。 索引生命周期如果你的索引名字没有生效,变成了 filebeat 开头的, 你需要关闭 filebeat 的自动 ILM 功能: 关闭自动 ILM 仅仅是索引生命周期不由 filebeat 来管理,还可以手动在 es 里创建生命周期策略的方式来管理。参考 Elasticsearch索引生命周期配置 索引模版配置 这里可以根据...
安装插件方式来运行grafana-image-renderer
安装可以使用命令: 如果不能正常访问网络,或者下载速度太慢,可以使用离线包:到这里https://grafana.com/grafana/plugins/grafana-image-renderer/?tab=installation下载离线包,然后放到 plugins 文件夹下。需要注意下 plugins 文件夹的位置,可能使用命令安装的路径和真实的 plugins 目录不一致。 如果插件启动失败,报错:可以检查下 plugins/grafana-image-renderer/chrome-headless-shell/linux-136.0.7101.0/chrome-headless-shell-linux64 这个程序能否正常运行,如果报错 需要安装 apt install -y libasound2t64 完整配置容器Dockerfile: kubernetes 部署配置k8s 运行的时候,需要配置 root_url 被这个坑了很久,完整的配置文件如下:
使用 Python 自动截图 Grafana 仪表盘,实现可视化监控快照
官方配置文档在这里:https://grafana.com/docs/grafana/latest/setup-grafana/image-rendering/ 使用方式有两种,一种是直接在 grafana 机器上安装插件,另一个是使用外挂渲染器的方式。 部署渲染器 grafana-image-renderer 官方有现成的镜像,也可以不用自己构建镜像: grafana/grafana-image-renderer:3.12.3 也可以用 bitnami 打包的镜像:bitnami/grafana-image-renderer:latest, 我哼哧哼哧搞了半天才想起来官方也有镜像😓 我的 grafana 是运行在 kubernetes 里的,所以选择用外挂渲染器的方法。渲染器核心用的是 Puppeteer,根据官网文档安装依赖包:https://pptr.dev/troubleshooting#chrome-doesnt-launch-on-linux ,另外增加了中文字体包,解决了中文显示框框的问题。最终的渲染器镜像 dockerfile 如下: 部署在 kubern...
java容器entrypoint.sh参数传递的隐藏陷阱
构建容器镜像对运维来说已经轻车熟路了,但是最近遇到个问题百思不得其解,准确的说就是手动执行 java -jar 带上所有参数,可以正常启动,但是打包成镜像就会报错: 先附上 entrypoint.sh Dockerfile: 看起来很正常对吧,但是启动报错: 查看控制台,echo 出来的 JAVA_CMD 变量也是正常的 中间排查过程忽略,最后增加了 set -x 参数后,重新打包镜像,再次查看控制台输出: 注意以 + 开头的输出 这里 java 启动命令是被解析成了单引号引用,所以造成无法启动。把 java 启动参数中的环境变量双引号去掉,可以正常启动了。 罪魁祸首:Shell 变量展开的分词机制问题的本质在于 Shell 脚本中变量展开时的参数分割规则。当我们使用 "$VAR" 这种带引号的写法时,变量值中的所有内容会被视为一个整体参数,即使其中包含空格也不会被分割。而 Java 虚拟机要求每个参数必须作为独立的命令行参数传递。
在 Hyper-V 下启用 Fedora 41 的增强会话模式
安装一些基础包 配置 Fedora 配置 Hyper-V 虚拟机将 Fedora 关机,以管理员身份运行 powershell: 引用代码来自:https://github.com/hu-ximing/Hyper-V-RHEL-Fedora-enhanced-session/
Logstash 写入 ES:借助自定义模板优化数据映射与存储
我们的业务场景是 ES 存储的都是一些不太重要的日志,但是对存储比较敏感,但是查看了 ES 索引都是默认创建了一个副本的。这会造成存储空间翻倍。现在通过调整 logstash 配置来实现创建出来的索引应用自定义配置,比如可以实现 30 天前的日志自动清理,默认不创建副本等。 创建生命周期策略在 ES 上创建一个生命周期策略,定义索引保留 14 天。 创建 ES 模板配置文件准备一个 template 配置文件 logstash-template.json 这里定义了应用的模板规则,应用的生命周期规则,还有副本数。 logstash 配置文件 logstash.conf 这样使用 logstash 创建索引的时候就会自动应用模板规则。 当然也可以将 manage_template 设置成 false 转而使用 ES 来管理索引模板配置。
使用Python识别验证码 ddddocr
GitHub 地址:https://github.com/sml2h3/ddddocr 安装 如果 windows 安装报错:ImportError:DLL load failed: 找不到指定的模块。需要安装 vc 运行库:https://aka.ms/vs/16/release/VC_redist.x86.exe https://aka.ms/vs/16/release/VC_redist.x64.exe 基本使用: 初始化传参 show_ad=False 输出就不带作者的广告了。
解决PyCharm终端使用zsh powerlevel10k主题时的乱码问题
powerlevel10k 是 zsh 上很好看的主题,我一直是在 wsl 里用,配合 Windows Terminal 很好看,不过在 PyCharm 里打开会乱码,可以通过修改控制台字体为支持 powerline 的字体,不过还是不完美,有时候还有 BUG。 想了下,我平时都是在 Windows Terminal 上用的,那么可以让使用 Windows Terminal 的时候显示成花里胡哨的主题,用其他软件比如 PyCharm 或者 VScode 的时候,换成朴素的主题。看了下,在 Windows Terminal 上有个特殊的环境变量 WT_SESSION 和 WT_PROFILE_ID ,看名字应该是和 Windows terminal 有关,测试了下也确实如此,那么可以修改 ~/.zshrc 来实现。 此时显示如下:
Nacos 2.0.3 集群升级为 2.1.0
2.0.3 版本的 BUG详细 bug 在 GitHub 上有,比如: issue 链接见:https://github.com/alibaba/nacos/issues/9332https://github.com/alibaba/nacos/issues/8492 我们遇到的 bug 简单一句话总结就是:集群方式部署的 nacos 其中一个节点重启后可能会有节点数据不一致的现象(服务注册与服务发现里面的服务数量不一致)比如说一个服务注册到了 nacos 中,我在 nacos 网页控制台 服务管理 服务列表 里查看有 10 个服务注册进来,刷新下网页可能就变成了 9 个,再刷新又变成 10 个,这种情况就是 nacos 的多个节点数据不同步了(nacos 配置中心数据是从 MySQL 取的,不受这个 bug 的影响),这种情况可以直接将 nacos 副本数设置成 1 临时解决,想要彻底解决我们验证了升级到 2.1.0 就能修复。 升级数据库表结构 nacos 官网文档写的太敷衍了,版本之间的差异需要自己找,哪怕你上个 flyway 也好啊。 其中有三个表(config_inf...



