使用Python开发一个Prometheus exporter
需求:需要监控指定的邮箱发送邮件是否正常,使用 Prometheus 官方的 Python sdk,代码如下: 代码12345678910111213141516171819202122232425262728293031323334353637383940from prometheus_client import start_http_server, Gaugeimport smtplibimport argparseimport time# 创建一个 Gauge 类型的指标EMAIL_AUTHENTICATION_SUCCESS = Gauge('email_authentication_success', 'Indicates if the email authentication was successful', ['email'])def check_email_authentication(email, password, smtp_server, smtp_port): try: ...
Alpine容器文件后缀浏览器下载变成zip
比如一个网盘程序,上传了一个 excel 文件,点击获取直链,然后将获取到的直链放到浏览器地址栏访问触发下载,下载下来的文件后缀自动变成了.zip 这是因为 Alpine 镜像比较精简,缺少了很多 MIME 类型数据,可以通过安装 mailcap 包来解决。 12FROM Alpine:latestRUN apk add --no-cache mailcap 再次测试,已经正常
nginx Ingress 对指定路径去除 contextpath
要在 Kubernetes 中配置 Nginx Ingress 以便转发到后端时去掉 contextPath,你可以通过以下步骤来实现: 单个 path 去掉 contextpath假设你有一个服务在 /app 路径下运行,并希望通过 Ingress 直接访问后端服务的根路径 /,可以如下配置: 12345678910111213141516171819apiVersion: networking.k8s.io/v1kind: Ingressmetadata: name: example-ingress annotations: nginx.ingress.kubernetes.io/rewrite-target: /$2spec: rules: - host: example.com http: paths: - path: /app(/|$)(.*) pathType: ImplementationSpecific backend: service: name:...
CentOS 7 停止维护后如何使用
CentOS 7 停止维护后,很多源都失效了,使用 yum 的时候报错 404,需要修改源才能继续使用。 老版本 CentOS 源被更改成 vault 源,需要更换成 vault 源才能继续使用 yum。 修改成官方源 1234sudo sed -i.bak \ -e 's|^mirrorlist=|#mirrorlist=|g' \ -e 's|^#baseurl=http://mirror.centos.org/centos|baseurl=https://https://vault.centos.org/centos|g' \ /etc/yum.repos.d/CentOS-Base.repo 或者更换成中科大的源 12345678910111213141516171819202122232425262728293031323334353637383940414243444546cat > /etc/yum.repos.d/CentOS-Base.repo <<-'EOF'#...
trzsz 使用记录
官方介绍:trzsz ( trz / tsz ) 是一款优秀的文件传输工具,和 lrzsz ( rz / sz ) 类似的、兼容 tmux 的文件传输工具。其实就是一个利用终端来传输文件的工具,可以用来取代 lrzsz,更多详情看官方文档:https://trzsz.github.io/cn/ 和 GitHub:https://github.com/trzsz/trzsz-ssh/blob/main/README.cn.md macOS 下使用配置trzsz-ssh 是内置支持 trzsz 的 ssh 客户端, 可以替代 openssh,并且不依赖终端的支持。 安装1brew install trzsz-ssh 简单用法使用 tssh 替代 ssh 命令 支持 zmodem(可用于取代 lrzsz)配置新版 trzsz 内置支持 lrzsz 的功能,使用方法: 1tssh --zmodem root@x.x.x.x -p 22 或者在 ~/.ssh/config 里面配置 123Host * # 如果配置在 ~/.ssh/config 中,可以加上...
Java程序被停止前自动dump内存快照
线上业务偶尔会出现重启现象,为了排查这个问题,决定在 OOM 的时候自动进行 dump 内存快照用于分析 针对 JVM OOM 的情况OOM 全称 “Out Of Memory”,表示内存耗尽。当 JVM 因为没有足够的内存来为对象分配空间,并且垃圾回收器也已经没有空间可回收时,就会抛出这个错误,解决 OOM 问题的一个思路: 假设发生 OOM 了,必然说明系统中某个区域的对象太多了,塞满了那个区域,而且一定是无法回收掉那些对象,最终才会导致内存溢出的,首先就得知道到底是什么对象太多了导致 OOM ,就必须得有一份 JVM 发生 OOM 时的 dump 内存快照有了 dump 内存快照,就可以用 MAT 之类的工具,或者在线工具来分析:https://memory.console.heapdump.cn/JVM 在发生 OOM 的时候并不是直接挂掉的, 而是在 OOM 之前会尽量去 GC 腾出来一些内存空间,如果 GC 后还是没有空间,放不下对象, 才会触发内存溢出的。JVM 给我们提供了一些参数可以在发生 OOM 的时候进行自动 dump 内存快照。:...
无显示器环境下连接香橙派
连接香橙派(树莓派等其他派也类似)一般有以下几种方法: 插显示器、键盘鼠标直接进行操作 使用串口连接电脑,通过串口访问终端 通过网线连接路由器(路由器会通过 DHCP 分配一个 IP 给香橙派)从路由器后台获取到 IP 地址进行连接 通过网线直连电脑,电脑运行一个 DHCP 服务分配 IP 给香橙派,通过 IP 地址进行连接 通过官方的 orangepi_first_run.txt 文件来自动配置一个网口 IP 地址,电脑固定一个同网段的 IP,然后通过 IP 地址进行访问 我这里使用 tftpd64 来实现一个简单的 DHCP 服务。 配置如下: 设置好了以后,通过网线将香橙派和电脑直接连起来,这里就能看到有设备获取到了 IP 地址了。(不要设置 Def router,因为我们需要让网络使用 Wi-Fi 的网卡,有线网卡只是为了内网连接。) 192.168.88.1 就是香橙派的 IP 地址。可以用 ssh 连接了。 联网: 手机开热点,使用 nmtui 命令连接 Wi-Fi
香橙派配置VNC Server
vnc 大致可以分为两种,一种直接查看 TTY 上正在显示的桌面(和插上显示器显示的一致),另一种是创建一个新的桌面(即 可以在一台 linux 上打开若干个桌面供若干用户使用) 这里使用虚拟桌面 VNC,用的是 tigervncserver, 全程使用 orangepi 用户, 香橙派安装的是 Ubuntu 22.04 系统, 如果需要直接转发显示器的内容,请查看 Ubuntu安装配置VNC直接转发桌面显示 安装依赖包12345sudo apt-get updatesudo apt-get upgradesudo apt-get -y install xorg lightdm xfce4 tango-icon-theme gnome-icon-theme dbus-x11sudo apt-get install xfonts-base tightvncserver 启动 VNC Server1vncserver :1 display :1 refers to port 5901 重启 VNC Server12vncserver -kill :1vncserver...
在Kubernetes环境下快速部署MySQL
收到个需求,开发团队希望快速启动一套业务环境,包括所有业务服务(部署在 Kubernetes 中)、MySQL 数据库、Redis 等中间件也一并创建出来并初始化,业务也需要自动连接上这些中间件。 本文记录一下在 Kubernetes 中部署 MySQL 并完成初始化操作(设置密码、创建数据库) 遇到的问题表名大小写敏感问题我们的业务需要数据库设置为表名大小写不敏感,即无论大小写都转换为小写,需要设置参数: 12[mysqld]lower_case_table_names=1 那么在容器中,参考官方文档,可以将 cnf 文件挂载到 /etc/mysql/conf.d/ 中。 创建多个数据库业务需要用到多个库,检查官方环境变量,有个 MYSQL_DATABASE 不过我测试可以创建一个库,不满足我们的需求。并且除了建库,可能还有其他的操作。 可以将你需要的 sql 文件放到 /docker-entrypoint-initdb.d 目录中,初始化的时候会自动执行。 完整的 yaml...
在Kubernetes中部署nacos 2.3.2
其他版本参考文档 在Kubernetes中部署nacos 2.1.0 nacos 官方文档写的太敷衍了,很多东西都需要自己去找,比如容器运行的时候,必须的环境变量都没有写全,遇到的一些坑整理了出来。 新版的变化鉴权逻辑优化官方说明:https://nacos.io/zh-cn/docs/v2/guide/user/auth.html 2.2.2 版本之前的 Nacos 默认控制台,无论服务端是否开启鉴权,都会存在一个登录页;这导致很多用户被误导认为 Nacos 默认是存在鉴权的。在社区安全工程师的建议下,Nacos 自 2.2.2 版本开始,在未开启鉴权时,默认控制台将不需要登录即可访问,同时在控制台中给予提示,提醒用户当前集群未开启鉴权。 部分环境变量默认值删除nacos 新版(2.2.1 之后删除了默认值) 可以查看 /home/nacos/conf/application.properties 这个文件,如果有环境变量名不确认也可以到这个文件里查询: 比如: server.port=${NACOS_APPLICATION_PORT:8848}...