yaml多行文本的写法和区别
直接看效果(pip install pyyaml): 123456789101112131415161718192021import yamlyaml_data = """example1: | This is line one. This is line two.example2: |- This is line one. This is line two.example3: >- This is line one. This is line two."""# 将 YAML 数据解析为 Python 对象data = yaml.safe_load(yaml_data)# 访问特定字段print(f"example1: {data['example1']}")print(f"example2: {data['example2']}")print(f"example3:...
Grafana 接入 LDAP 认证
Grafana 是一个非常好用的展示数据软件,我一直以为可以直接在设置里增加 ldap 配置,没想到啊没想到 必须要修改配置文件才能接入到 LDAP,还是记录一下吧,免得下次部署浪费时间。 我是在 Kubernetes 中部署的,数据存储用的是 MySQL,所以 Grafana 本身可以当作一个无状态服务来看待。也可以不做数据持久化。 先创建 ldap 配置文件这里包括 ldap 数据的映射关系,可以自己尝试修改调整。 12345678910111213141516171819202122kind: ConfigMapapiVersion: v1metadata: name: grafana-ldap-config namespace: opsdata: ldap.toml: | [[servers]] host = "10.0.0.11" port = 389 use_ssl = false start_tls = false ssl_skip_verify = false bind_dn =...
用Prometheus对nacos集群进行监控
参考官方文档:https://nacos.io/zh-cn/docs/monitor-guide.html 暴露 metrics 数据 需要修改配置文件,spring boot 支持通过环境变量来修改系统配置,在 Kubernets 环境下,可以通过增加环境变量的形式来暴露 metrics 数据。 123456789101112131415161718192021222324kind: StatefulSetapiVersion: apps/v1metadata: name: nacos namespace: publicspec: replicas: 3 selector: matchLabels: app: nacos template: metadata: labels: app: nacos spec: containers: - name: nacos image: nacos/nacos-server:v2.1.0 env:... ...
在Kubernetes下收集ingress日志到Elasticsearch
本文 ingress 用的是 Nginx-ingress,普通的 Nginx 原理是一样的。容器运行时是 Docker。 ingress 配置ingress 需要调整一下日志格式,json 日志更有利于分析与处理。 12345678910# Source: ingress-nginx/templates/controller-configmap.yamlapiVersion: v1kind: ConfigMap... name: ingress-nginx-controller namespace: ingress-nginxdata: ... # annotation: nginx.ingress.kubernetes.io/client-body-buffer-size: 1M log-format-upstream: '{"@timestamp":...
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 转换为:第一排第二个网口,可以这么配置:
Nginx Ingress 暴露没有定义Host的ingress的Metrics数据
指定默认的 ingress 后端名字有点绕口,假如说之前有个服务是通过 ip:port 来访问 nginx(就是 default server),然后转发到后端服务的,那么转换成 ingress 后,不能指定 host,不然会匹配不到规则。ingress 就不能配置 host,创建出来的 ingress 资源就是这样的: 12345678910111213141516171819apiVersion: networking.k8s.io/v1beta1kind: Ingressmetadata: annotations: nginx.ingress.kubernetes.io/ssl-redirect: "false" name: g.example.com namespace: defaultspec: rules: - http: paths: - backend: serviceName: server1 servicePort: 5003 path: /sdk ...
Kubernetes配置镜像仓库认证imagePullSecrets
创建 secret可以在 namespace 里用一个全局的 image pull secret,创建个 secret,如果有特殊字符的,可以用单引号 ‘ ‘ 引起来。 12# docker-secret 是 secret 的名字kubectl create secret docker-registry docker-secret --docker-server=harbor.i.com --docker-username='robot$ali' --docker-password=123456 -n default 全局配置给默认的 serviceaccount 配置 imagePullSecrets , 这样配置好了之后,就无须在每个 deployment 上配置了。 1kubectl patch serviceaccount default -n default -p '{"imagePullSecrets": [{"name":...
fail2ban失效排查
selinux容易忽略的一点,selinux 会限制 fail2ban 的执行, 手动运行 /usr/bin/fail2ban-server -xf start 可以正常运行,但是 systemd 就是无法启动,会报错找不到日志文件,这种情况可以将 selinux 禁用再测试。 12Sep 09 10:44:01 zhangfei fail2ban-server[1795]: 2024-09-09 10:44:01,134 fail2ban [1795]: ERROR Failed during configuration: Have not found any log file for nginx-http-cc jailSep 09 10:44:01 zhangfei fail2ban-server[1795]: 2024-09-09 10:44:01,134 fail2ban [1795]: ERROR Async configuration of server failed 使用...
Prometheus中查询无数据提供默认值
单一时间序列(时间戳)的样本。具体来说,vector(0) 将创建一个包含值 0 的瞬时向量(即在某个时间点的时间序列)。 1sum(increase(nginx_ingress_controller_requests{status=~"4.*"}[3m])) or vector(0) 这里的 vector(0) 的作用是为查询结果提供一个默认值或回退值。当前面的 sum(increase(...)) 查询没有返回任何结果时,整个查询将返回 vector(0) 生成的值,即 0。
kubectl导出的yaml忽略指定字段
kubectl 指定 -o yaml 输出的 yaml 文件包含一些默认字段,这些字段我们是不需要的,可以使用 yq 来进行去除这些字段,生成的 yaml 文件可以用于迁移/部署服务等。 安装 yq12curl -L https://file.babudiu.com/f/AQHE/yq_linux_amd64 -o /bin/yqchmod +x /bin/yq 导出 deployment1234567891011121314kubectl get deployment nginx -o yaml | yq eval ' del( .metadata.annotations, .metadata.creationTimestamp, .metadata.generation, .metadata.resourceVersion, .metadata.selfLink, .metadata.uid, .spec.progressDeadlineSeconds, ...