5 sdmei

尚未进行身份认证

我要认证

owner意识、勇于探索、孜孜不倦、精益求精……

等级
TA的排名 11w+

mysql sql语句digest收集与展示

mysql慢查询,已经有现成的成熟的方案收集展示了:pt-query-digest结合box公司的anemometer,没用过的移步:《mysql慢查询可视化》(本章内容需要了解anemometer)。但DBA们一定还遇到过这样的问题:某个时间段CPU负载较高,但慢查却没有,有时连实时看processlist都看不出异常。这种情况一般是由高并发的但单个性能正常的SQL导致的,所以慢查没有,但总体负载会升高。那怎么办呢?选择1:配置events_statements_history_long,缺点明显

2020-06-02 13:25:04

基于spark实时分析nginx请求日志,自动封禁IP之二:日志实时分析

整体思路:从kafka集群读取请求日志流,经过spark structured streaming(结构化流)实时分析,将触发阈值的数据输出至mysql。1.数据源nginx日志通过syslog协议输出至logstash,然后同时写入es和kafka:nginx -> logstash -> elasticsearch and kafkalogstash配置:output { elasticsearch { …… } ## 尽可能在来源...

2020-05-15 14:02:32

基于spark实时分析nginx请求日志,自动封禁IP之一:web功能设计

用过阿里高防的都知道,高防有个很牛X的防CC功能配置:基于域名,基于某URL(精确匹配或后模糊匹配),限制某个时间跨度的请求频率,超过该频率会拉黑n分钟,如:10秒内请求20次,达到这个阈值则拉黑IP5分钟。然而:高防不是所有公司都用得起的(月费用1万以上),高防配置的域名数量越来越苛刻(一级域名和二级域名数都有严格限制了),高防也有抽风的时候,有很多时候发现该功能没起效果,所以我们搞了个自己的防CC功能。改方案暂取名lbwaf,主要功能包括手动拉黑(就是手动填IP黑名单),自动拉黑(重点功

2020-05-12 11:46:16

mysql高可用自动切换方案(半同步复制+keepalived+第三方数据逻辑判断)

1.前言自从踏进互联网运维这个行当,就无时不刻不在为高可用费神。nginx、tomcat、缓存、队列、数据库,每个环节高可用的最基本要求是避免单点故障,能够自动failover。mysql的高可用方案说起来很多,但真正想在你家的生产环境大面积使用,发现这个有缺点、那个不完美。之前用过MHA一段时间,代码较复杂(可能因为我没搞过perl),作者不再更新,总担心误切、脑裂……,至于高大上的pxc\...

2020-03-18 15:43:18

mysql主从切换的那些事(手动)

1.主从切换因为数据库迁移、升级、主库停机维护等原因,需要将从库升为主,主要步骤如下:1.主库锁库,禁止写入mysql> flush table with read lock;确认Executed_Gtid_Set不再变化,并记录mysql> show master status\G*************************** 1. row ******...

2020-03-17 13:57:09

Anemometer适应新版pt-query-digest需要的调整

pt-query-digest 3.0.11后续版本,生成的checksum包含英文字母,点击SQL的checksum进详情页提示:“Unknown checksum: ……”说明:老版本pt-query-digest生产的checksum存数字,anemometer为了展示美观(固定长度)等原因,将checksum转成16进制列表展示,进详情页后,再讲16进制转换成10进制查找具体SQL详...

2020-03-05 19:59:35

TCP代理服务器动态路由方案

目前tcp长连接应用使用的方案是nginx(ngx_stream_core_module),静态配置;自带的健康检查只能基于端口,但应用有时程序错误或假死,端口是OK的,导致客户端不少报错,因此新的方案要求可以动态配置路由,由监控检查程序管理后端节点的动态配置。http动态路由(也叫动态upstream)方案较多,有现成的插件,或者lua对这块也支持得较好;但tcp的方案相对少,充分研究了下,...

2019-12-31 09:08:53

kettle实现数据增量同步方案

1. 背景我司目前数据库之间的数据同步都是oracle goldengate(ogg)方案,该方案的特点:优点:基于数据库的变更日志同步(oracle redo\mysql binlog),速度很快,对数据库性能影响很小,适合大量数据同步的场景缺点:同步表变更字段、新增表,需要修改数据库服务器上的很多配置文件,比较繁琐,在exact、pump、replicate进程很多的情况下,易...

2019-12-12 14:37:29

k8s支持大量商户自定义域名的配置

基于nginx -> traefik -> k8s的架构,某个应用需要支持商户的大量任意自定义域名,咋整呢?咱公司k8s上的应用遇到这个场景,因此研究了下,有以下两种方案:方案1, 最直接粗暴但很lowB的方案,ingress中列出每个域名# more ingress.yaml apiVersion: extensions/v1beta1kind: Ingressmet...

2019-12-11 19:36:58

jenkins发布k8s应用

因为还没有完成控制台开发,我们k8s应用的发布目前只能直接在jenkins中实现了。1. 基础镜像按层次制作基础镜像centos -> centos-sshd -> centos74-jre[678] -> centos74-jre[678]-[tomcat6|tomcat7|tomcat8|springboot]发布应用时,根据jre\middleware参数,...

2019-09-24 20:06:50

k8s的容器存储空间资源限制ephemeral-storage

k8s1.8引入的特性,限制容器存储空间的使用;对于容器资源隔离来说,非常有用,万一应用程序失控,写大量日志把node空间写满,影响就大了。使用很简单,和cpu\memcache一样,如:resources: requests: cpu: 1 memory: 2048Mi ephemeral-storage: 2Gi limits: cpu: 2...

2019-09-19 11:41:09

k8s过期镜像清理

随着应用程序版本的发布,k8s环境会留下大量过期的镜像占用空间,因此需要通过任务自动清理。crontab任务调用以下脚本即可:1.节点镜像清理删除dangling镜像docker image prune -f删除无容器使用的镜像,外加条件:创建于10天前、限于应用程序imagedocker image prune -a --force --filter "label=t...

2019-09-11 19:11:49

通过linux跳板根据应用名称ssh访问容器

容器的IP是不固定的,因此无法像传统服务器在ssh工具中配置清单;最佳的方式是在浏览器上通过webterminal方案点击链接直接打开ssh终端,要求开发像样的容器管理平台(我们的平台还在设计阶段。。。),另外webterminal访问有一点点卡顿的感觉,没有直接ssh畅快淋漓,因此通过linux跳板ssh访问容器,是一个很有用的补充方案。效果1备注:project、app是pod的2...

2019-08-21 20:49:58

web terminal工具gateone使用

稍微牛B的运维团队,没有运维平台是不行的,web terminal是运维平台的重要组成部分,这里吐血推荐gateone,github上5K颗星,遗憾的是作者不更新了,但瑕不掩瑜,它依然是我心目中web terminal no.1。web上直接点击终端按钮,打开一个ssh终端,体验还是很nice的:1.安装1.1.环境# cat /etc/redhat-release...

2019-07-01 20:47:00

消息队列选型:rocketmq or rabbitmq

1.目前我们用的activemq,面临一些问题activemq高可用基于leveldb的复制,但activemq从5.*开始,leveldb已经不再有任何更新The LevelDB store has been deprecated and is no longer supported or recommended for use. The recommended store is Kaha...

2019-05-28 20:54:34

ELK的监控工具Elastalert的报警功能扩展

Nginx请求日志输出到ELK,同时通过Elastalert监控ELK日志中的关键信息(如http状态500+错误,耗时较长的请求数达到阈值等等),这几乎是中小型互联网公司的标配。Elastalert自带的报警方式虽然多种多样,但是不能实现根据报警信息分组发送,如研发人员也很关心这些指标,需要接受本项目的报警,运维需要接受所有项目的报警,报警方式要支持电话语音、短信、邮件、钉钉群。要实现这些,...

2019-05-08 13:39:04

mysql历史数据自动归档

数据库跑一段时间后,因为查询性能、磁盘容量,运维管理等方面的原因,需要将在线数据挪到历史库(不同的服务器)。如我们的在线订单只留3个月数据,3个月以前的就需要到历史库查了。自动归档常见的方式有pt-archiver,但我还是觉得自己写存储过程更靠谱。。。思路:在线库实例打开federated支持,创建数据库dborder(业务库), linkhis(归档用); 历史库创建历史表dbo...

2019-03-20 20:12:17

nginx ip黑名单动态封禁

网站被恶意请求,拉黑IP是重要的手段,如果每次拉黑都要到nginx上配置,未免太low了;我们需要更方便的控制nginx IP黑名单。1.方案黑名单持久化到mysql (常见的方案是redis,但不利于控制,如:不同的IP设置不同的有效期、IP的CRUD、统计等等);通过lua-nginx-module,在nginx中开辟一块内存(lua_shared_dict),lua将黑名单定期从...

2019-03-08 10:12:40

calico的iptables规则

学习了下calico的iptables规则,挺复杂的,没想到iptables能这么用。。。iptables中的链涉及到不少简写:hep: host endpointwl: workload endpointfw: from workload endpointtw: to wordkoad endpointfip: floating IP (为某容器绑定的一个非容器段的IP地址:如n...

2018-12-26 16:19:23

ELK收集监控nginx请求日志

1.前言对于互联网公司来说,nginx的请求日志简直就是一座金矿,如果不能充分利用,简直太可惜了。初期一般都是输出到日志文件,要查什么就awk\grep\uniq\sort...,能满足不少统计需求,但最大的缺点是不直观,不方便监控(目前虽然用了ELK,但是有些信息我还是用shell统计,两者互补)。整理下实施ELK最起码要实现的需求:查询条件(精确匹配):一级域名、二级域名、客户真实IP、HTT...

2018-05-05 23:02:17

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。