使用双向认证增加git仓库安全性
双向认证是用户需要提供证书来访问服务器,没有证书的用户不允许访问服务器,并且在服务端可以实现吊销指定用户的证书来实现禁止用户访问。配置 https 双向认证会影响到使用 https 协议拉取和推送代码,以及 git lfs 的正常使用 (lfs 使用 https 协议),ssh 协议使用代码仓库不受影响。 配置双向认证我是用的自签名证书,自签名证书的文档可以查看 制作和使用自签名证书 或者我的开源项目:https://github.com/iuxt/my_cert.git 服务器上的 nginx 上配置12345678910111213141516server { listen 443 ssl; server_name example.com; ssl_certificate /path/to/your/server.crt; ssl_certificate_key /path/to/your/server.key; ssl_client_certificate /path/to/your/ca.crt; # 配置 CA...
Prometheus自动监控K8S集群中的service
定义部署在 Kubernetes 上的 Prometheus 是有自动发现机制的,可以自动监控 service 通不通、监控 ingress 上的域名通不通等等。 HTTP Get 监控service 的 HTTP Get 监控1234567891011121314151617181920212223242526272829303132333435363738394041424344454647- job_name: 'service_http_get' # service 需要添加注解 # prometheus.io/http_get_path: /actuator/info # prometheus.io/http_get: "true" # prometheus.io/http_get_port: "8080" metrics_path: /probe params: module: [http_2xx] kubernetes_sd_configs: - role: service ...
Grafana 查询SQL 自定义变量
比如一个 dashboard 里面有很多通用的数据,不想每个 panel 面板都手动修改一遍,可以定义个全局的变量,所有面板都调用这个变量,后续需要修改的时候,直接改变量即可。 面板设置里添加变量这里添加好了之后,先打开 show on dashboard 显示 然后选择自己需要的数据,保存的时候,勾选 update default variable values 保存当前选择的值最后再把变量隐藏起来。 在查询的时候调用变量123456789101112SELECT `desc` AS '说明', CONVERT_TZ(time, '+08:00', '+00:00') AS '最近日期', vin, value AS '发生数量'FROM granfana.metricWHERE metric_name = 'active_fail' AND vin IN (${users})ORDER BY ...
使用selenium来实现Grafana的自动截图
selenium 是一个 python 库, 用于操作 chromium 浏览器实现一些自动化的动作, 本文是为了把 grafana 的监控图截图保存, 后续可以将图片做成运维报表之类的. 调试阶段调试阶段可以使用电脑上的 chrome,并关闭 headless 模式,方便看到界面执行的效果.chrome 官网下载即可, chromedriver 下载地址: https://googlechromelabs.github.io/chrome-for-testing/ , chromedriver 放在代码同目录即可. 问题为什么不用 grafana-image-renderer, 这个官方插件 BUG 挺多的, 比如一个图需要很长时间才能加载, 就会出现图还没加载出来, 就完成了截图的情况. 并且截图速度很慢. 简单的开始1pip install selenium 12345678910111213141516171819202122232425from selenium import webdriverfrom...
Filebeat直接输出到Elasticsearch
正常情况下收集日志流程为: filebeat 读取节点上指定目录日志文件 –> kafka logstash 消费 kafka 数据 –> 写入到 ES 的指定索引加入 kafka 会提高健壮性,可以起到削峰填谷的效果。现在是非生产环境没有 kafka,所以才采用 filebeat 写入到 ES 这种方案。另一种架构:在Kubernetes下收集ingress日志到Elasticsearch 输入配置输入就是源日志的配置, 我这里配置了 2 个日志源,一个是 nginx ingress 的配置,记录的是所有请求的访问日志,另一个是业务 pod 的日志。通过 fields.log_topic 来配合下面的 output 来区分怎么输出。 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647filebeat.inputs:- type: container symlinks: true enabled: true tail_files:...
安装插件方式来运行grafana-image-renderer
安装可以使用命令: 1grafana-cli plugins install 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...
使用 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...
java容器entrypoint.sh参数传递的隐藏陷阱
构建容器镜像对运维来说已经轻车熟路了,但是最近遇到个问题百思不得其解,准确的说就是手动执行 java -jar 带上所有参数,可以正常启动,但是打包成镜像就会报错: 先附上 entrypoint.sh 123456789101112131415161718192021222324252627#!/bin/bashif [ -n "$JVM_PARAM" ];then echo "JVM_PARAM: $JVM_PARAM"else JVM_PARAM="-Xms2g -Xmx2g -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m"fiif [ -n "$JVM_OPTS" ];then echo "JVM_OPTS: $JVM_OPTS"else JVM_OPTS="-XX:+UseConcMarkSweepGC -XX:+UseCMSInitiatingOccupancyOnly...
在 Hyper-V 下启用 Fedora 41 的增强会话模式
安装一些基础包12sudo dnf install -y hyperv-toolssudo dnf install -y xrdp xrdp-selinux 配置 Fedora12345678910111213141516171819202122232425systemctl enable xrdpsystemctl enable xrdp-sesman# use vsock transport.sed -i_orig -e 's/port=3389/port=vsock:\/\/-1:3389/g' /etc/xrdp/xrdp.ini# use rdp security.sed -i_orig -e 's/security_layer=negotiate/security_layer=rdp/g' /etc/xrdp/xrdp.ini# remove encryption validation.sed -i_orig -e 's/crypt_level=high/crypt_level=none/g'...
Logstash 写入 ES:借助自定义模板优化数据映射与存储
我们的业务场景是 ES 存储的都是一些不太重要的日志,但是对存储比较敏感,但是查看了 ES 索引都是默认创建了一个副本的。这会造成存储空间翻倍。现在通过调整 logstash 配置来实现创建出来的索引应用自定义配置,比如可以实现 30 天前的日志自动清理,默认不创建副本等。 创建生命周期策略在 ES 上创建一个生命周期策略,定义索引保留 14 天。 1234567891011121314151617PUT _ilm/policy/user_monitor_point-retention-policy{ "policy": { "phases": { "hot": { "min_age": "0ms", "actions": {} }, "delete": { ...