原文地址个人认为这篇写的特别好,列出了 Production Rediness Review 需要注意的各个潜在风险点。下面是全文内容,对极少部分无关紧要的地方做了删减。Production Readiness生产准备对于生产中的功能或服务的任何新的或更改,本指南中的问题将有助于使这些更改在 GitLab.com 上启用时更加健壮。 在开始之前,请查看手册中的生产准备审查文件。 此问题作为跟踪问题
周末外面太冷,在家搞了下Prometheus的白屏化运维DEMO。目前只是把后端简单的几个接口搞出来,校验之类的还没加。。。这里先记录下。 后续等后端完成后,把前端也尝试写一下。重点:1、prometheus的target,是存在数据库里面的,只要符合一定的格式即可。 prometheus很早之前就支持了http接口方式动态target发现机制。格式类似这样:2、告警的rules,也是存在数据库里
假设有个场景,数据库或者其它中间件的运行时文件句柄等参数设置过低,导致服务不可用或者间歇性不可用。 但是重启服务的代价可能很大,那么我们也可以不重启进程,做到修改某个进程的 limits范围。这里可以使用 prlimit 命令来实现。这里我以MySQL服务为例 $ ps auxf | grep -v grep | grep mysqld mysql 1204 1.3 3.4 7
原文: https://pythonspeed.com/articles/shell-scripts/作者:Itamar Turner-Trauring最后更新于 2022 年 3 月 24 日,最初创建于 2022 年 3 月 22 日当您自动化某些任务时,例如为 Docker 打包您的应用程序时,您经常会发现自己正在编写 shell 脚本。您可能有一个bash脚本来驱
脚本加密
最近有个业务数据变更的需求,要将1个已生成的500w记录写回到另一个表里面。 这里的需求比较简单,可以通过pt-archiver来做,也通过kettle之类工具来做。kettle的话比较重,可支持的数据整型功能也更强大。我这里是用kettle来搞的(复习下kettle,弄个demo,指不定后面有更复杂的业数据需求要找DBA介入) 配置JDBC连接的时候,建议加上字符集设定等几个参数:
参考: http://redsymbol.net/articles/unofficial-bash-strict-mode/建议写法:#!/bin/bashset -e # 建议使用set -u # 强烈建议使用set -o pipefail # 建议使用IFS=$'\n\t' # 建议使用含义说明:set -e 设置该选项后,当脚本中任何以一个命令执行返回的状态码
神技一:高级搜索有过这样的经验:想搜索一个差不多的项目改改自己用,结果搜索框输入后出来一堆,无从下手。遇到这种情况我都是闭上眼睛,先自己想好怎样从中选择,最终我想到自己想要的是日期比较新、最好是团队而不是个人维护(持续性会好一些)、语言和框架和自己的技术更贴合。示例: cerebro pushed:>2021-01-01 stars:>1000 language:>javascr
rust编写的ls替代工具
生产环境,有时候开发需要权限去看k8s某个namespace下的pod的运行状态,或者其它的运行信息(ELK或其它组件并不能完全覆盖这种场景,或者特地引入kubesphere这套组件也太重了),这种情况我们要如何高效解决?我们这种情况下,可以结合jumpserver的账号来做。具体点就是:1、在k8s上namespace创建不同的rbac(只开放出list watch这类的只读权限),并把配置文件
之前被kafka跨IDC数据同步这个问题折腾过,后来我们的解决方法是在双方的公网防火墙上配置端口映射。但是这种方法比较费,可以尝试下下面的这种。背景和第三方公司进行数据集成,因为第三方服务和我们不是部署在一个数据中心,所以需要给第三方的程序开放Kafka的公网访问问题:Kafka 无法同时内外网访问Kafka 默认只暴露出来一个地址放到zk中,用户请求Kafka的时候,会返回zk中的地址给客户端进
参考了 juicefs这篇冷热分离的优势:1、业务查询通常查近期数据(7天-14天),早期数据查询概率较低2、降低成本机器:prod-devops-clickhouse-all-011、阿里云后台申请一个bucket,地区张家口2、安装juicefs工具,并初始化下载 juicefs-0.17.1-linux-amd64.tar.gztar -zxf juicefs-0.17.1-linu
Redis On K8s 优势很多:1、部署效率高(单机测试大概5分钟可以)2、纯缓存场景的redis参考:https://github.com/DandyDeveloper/charts https://artifacthub.io/packages/helm/dandydev-charts/redis-ha 架构如下图。看上去偏重些,redis的pod中有4个container,自带了prom
https://github.com/prometheus/prometheus/blob/main/CHANGELOG.md在2.28.0 / 2021-06-21 这个版本里面,引入了http的动态发现 fastapi写个接口,代码如下:main.py from fastapi import FastAPI,Responseapp = FastAPI()es_body =
官方文档版本升级路线和依赖关系gitlab12 changes log操作步骤1. 备份机器在阿里云后台,对机器创建镜像。根据阿里云的文档,需要先注释掉 /etc/fstab 里面的数据盘的挂载,然后再做镜像。 耗时统计: 3T的数据盘打image耗时不到60分钟。稳妥起见,我们这里升级分为2天去推进,留出一天观察时间来。day1,从12.9.2升级到12.10.6 【操作前备份一次
背景: 从DW那边拿到一个9kw行记录的数据库primary_key的csv文件,需要导入到mysql中,然后由业务上通过程序去进行消费及一系列的下游业务逻辑的处理。 目前难点在于如果把这个9kw的大的csv导入到数据库中,如果使用load data这种方式,势必会比较慢,因为load data这是单线程操作。 比较好的思路是先将这个大的csv文件拆分成N个小的csv文件,然后开多个scr
自建K8s上,如果部署了Nginx-Ingress,通常一些默认的参数有些可能需要优化下以便提升它的性能(阿里云之类的云厂商提供的Ingress是优化过的)。 我下面是自建的测试K8s上部署的ingress,这里贴下优化的地方: kubectl get cm -n ingress-nginx NAME DATA AGE ing
Grafana集成openLDAP实现统一登录功能
最近对生产的grafana做了版本升级。升级后发现很多插件不能使用了。新版的grafana里,限制了非官方的插件(饼图、flowcharting)的加载。 如下图: 如果要继续使用的话,需要在grafana.ini中额外加些配置。 修改后的grafana.ini 最后一行如下: [plugins] allow_loading_unsigned_plugins=vertam
ECS误删文件后恢复数据
为了便于给公司的研发查询redis数据,github上找到一个不错的项目https://github.com/andyzsf/PyRedisAdmin默认是不带登录账号控制和可以修改数据的,我们上生产前做了些改动:1、默认不带登录鉴权功能(改进:在前面接一道nginx或者其它支持统一登录的工具)2、默认可以修改数据(改进:去掉代码中 delete modify 等接口)修改起来很简答,这里就不贴了
地址: https://github.com/Shopify/toxiproxy官方地址: https://github.com/Shopify/toxiproxytoxiproxy-server -host "0.0.0.0" # 演示起见,前台启动另开一个窗口:toxiproxy-cli create mysql -l 0.0.0.0:23306 -u 192.168.2.16
原文地址:https://www.chenquan.me/archives/315混沌工程最早是Netflix引入的,用来验证服务稳定性的工程。地址:https://github.com/Netflix/chaosmonkey国内的阿里云也开源了一个chaos工具,见这里:https://github.com/chaosblade-io/chaosblade我们这里介绍的一更mini的工具pubm
上一篇中提到了使用gravity做分表,https://blog.51cto.com/lee90/2482189 另外还有个工具也比较好用,就是爱可生公司出品的 DTLE https://github.com/actiontech/dtle关于这2个工具的差异,大家可以自行参考官方文档比对下,各有千秋吧。个人这2个工具都测试过:1、gravity支持的数据源更多,DTLE只支持MySQL,但是支持
原文地址: http://rk700.github.io/2016/10/26/linux-capabilities/在传统的Linux的权限控制机制中,SUID(Set User ID on execution)是一个比较有意思的概念。例如,文件/bin/passwd设置了SUID的flag,所以普通用户在运行passwd命令时,便以passwd的所属者,即root用户的身份运行,从而修改密码。
以graphite的carbon文件夹为例,在 ext4文件系统上,占用空间大约是 83GB 。 scp到 zfs文件系统上,看到大约只占了15GB
默认情况下,ingress-nginx日志是没有做切割的,这就造成了很糟糕的体验, 日志越来越大,占着磁盘空间。下面是我暂时想到的方法 (这个写法是根据之前物理机上运维经验来的,别对DBA要求太高啊)kubectl exec -ti -n arch nginx-ingress-controller-11111 -- /usr/bin/mv /var/log/nginx/nginx-access.
Memory calculation gives a wrong output #1519相关issue:https://github.com/prometheus/node_exporter/issues/1519修正方案:https://github.com/kubernetes-monitoring/kubernetes-mixin/pull/282
我们已经将监控系统从 zabbix 替换为prometheus, 之前通过snmp很方便的采集到网络设备的指标,改用prometheus后,建议使用 snmp_exporter 来采集数据。官网提供的那个snmp_exporter默认的模板,不满足我们netscaler的监控需求。我们需要自己改改。提醒: 建议非netscaler设备请先用官方模板,如果采集不到数据,再考虑去自己修改。具体操作如下
背景:随着业务迭代,部分项目用nodejs重构后,部署到k8s环境下运行。为了便于分析,上了一版代码,增加输出日志的功能。现象:上线半天后,发现研发反馈有收到报错提示 too many open files 这种 打开文件过多的告警, 部分pod crash掉了,影响到用户体验。 同时,运维查看监控,可以看到文件句柄使用量在短时间内剧增,如下图:运维查看问题k8s节点的文件句柄使用情况ulimit
Copyright © 2005-2025 51CTO.COM 版权所有 京ICP证060544号