- 博客(109)
- 资源 (5)
- 问答 (2)
- 收藏
- 关注

原创 SkyWalking入门之Agent原理初步分析
当前稍微上点体量的互联网公司已经逐渐采用微服务的开发模式,将之前早起的单体架构系统拆分为很多的子系统,子系统封装为微服务,彼此间通过HTTP协议RESET API的方式进行相互调用或者gRPC协议进行数据协作。早期微服务之后几个的情况下,我们遇到问题可以直接简单、快速地通过采集日志进行分析,是A服务存在问题或者B服务存在问题等快速恢复服务。但是,如果微服务数量已经到达了几十个、甚至上百个,这些微服务之间的调用关系会变得错综复杂.....
2023-09-15 16:07:32
399

原创 snmp_exporter监控交换机网络流量
最早是IETF的研究小组提出来的,在SGMP协议的基础之上,加上新的管理信息结构和管理信息库,让SGMP更加全面。Zabbix可以根据交换机开启的snmp服务,采集到交换机各个口的流量指标,但是由于现在已经全面转向Prometheus体系,所以只能通过一些方法将这个监控接入Prometheus。我采用文件发现的形式,将配置写在switch.json中, 这样以后修改关于交换机的信息,更改后直接热加载,如果直接写死在promeths.yml每次都要重启prometheus.运行命令测试snmp是否正常(
2023-06-28 16:45:24
2218
1

原创 通过SSH隧道安全消费Kafka数据
通过SSH隧道的方式,在IDC服务器做一个SSH隧道代理到阿里云服务器的kafka端口,这样从公网消费的kafka数据都经过隧道进行传输,避免了数据通过明文传输的风险。但是搭建了SSH隧道后,客户端竟然不能从Kafka进行消费...
2023-05-09 17:24:27
660

原创 prom-elastic-alert日志告警工具
目前市场上基于ELK的日志系统,其中数据采集、数据过滤、数据存储可以采用Filebeat、Logstash、Elasticsearch进行实现。但是日志告警相关工具较少,要么购买Elastic的付费服务可以使用日志告警功能,要么我们只能选择一些相对靠谱的开源方案例如。所以后来,我自己花了点时间造轮子在Github进行了开源,解决了我们使用Elastalert过程中的一些问题。1.针对数据的展示和分析我们可以采用Kibana进行可视化分析,同时也可以对接Grafana进行数据分析。
2023-01-12 11:42:46
27672

原创 K8S中Pod内部容器通信原理
1.docker容器网络模式1.1 默认bridge桥接网络 默认分配docker0网桥网段上的ip给容器, 每个容器的network namespace都是相互隔离的。docker自身生成一个veth pair(虚拟网卡对) 一端放在docker0网桥上, 一端放在容器内部。通过docker inspect 容器查看容器网络模式信息:网络详情:...
2019-11-21 11:50:59
119381
2

原创 docker的通俗理解
自己买了个服务器,前不久搭建好的一个网站,想要再搞一个站点,无奈只能修改端口后,再部署另外一个站点。繁琐的配置运行环境,迁移网站,是否让你感觉到很繁琐?服务器不想用了,想搬迁到另外一台服务器去部署,先是拷贝原有数据,在新的服务器上又开始搭建环境进行部署,这些费时间的事情现在只需要几分钟就能完成,那就是docker技术。 docker通俗按照自己的理解来说,就是类似...
2016-11-08 14:12:26
141775
7
原创 Redis高可用之Sentinel哨兵模式
Redis关于高可用与分布式有三个与之相关的运维部署模式。分别是主从复制master-slave模式、哨兵Sentinel模式以及集群Cluster模式。这三者都有各自的优缺点以及所应对的场景,以及对应的业务使用量,我们该怎么选择...
2023-12-05 00:11:47
153
原创 Java开源ETL工具-Kettle
Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、 Linux、 Unix上运行,绿色无需安装,数据抽取高效稳定。Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出。Kettle这个ETL工具集,它允许你管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述你想做什么,而不是你想怎么做...
2023-11-23 12:59:02
185
转载 Docker原理详细剖析-cgroups
上一篇文章Docker原理详细剖析-Namespace我们大致知道了,原来docker容器就是docker给某个进程附加了一些namespace"视野", 从而达到虚拟化隔离的目的。但是仅仅只是虚拟化隔离还远远不够, 因为这些容器的启动进程本质上和宿主机的其他进程是平等的,共用系统资源,属于资源竞争关系。为了更好地达到隔离的效果,我们希望能针对这些容器的资源进行限制,例如CPU、内存、磁盘IO、网络带宽等等。
2023-08-31 10:41:07
63
1
原创 Docker原理详细剖析-Namespace
docker容器技术从2013年开始火了以后,14年左右当时有幸在学校能和学院教授一起做些项目以及学习。其中docker技术在当时来说还算是比较新的技术,国内关于这块的资料以及使用也才刚刚开始,讨论docker和使用,算是相对时髦的话题。现在回头望去,已经10年有余,很佩服当时带领我们学习新技术的教授导师,看到这个技术的前景,所以接触的相对早,对后面我的工作起到了相当大的帮助。docker用得很熟练,面试一问原理直接懵? 本文解开namespace、cgroup核心技术神秘面纱
2023-08-30 18:48:52
568
2
原创 jumpserver命令记录膨胀问题
jumpserver由于命令记录terminal_command表会迅速膨胀,导致terminal_command表有了将近1000w左右的数据量,我们使用这种方式进行解决...
2023-08-10 21:46:40
258
原创 Crontab的sendmail邮件发送引发磁盘问题
其实配置MAILTO=root本身没什么问题,本次故障根本问题还是inode使用率没做监控,导致inode写满导致sendmail和maildrop进程堆积变为僵尸进程,占用内存与系统负载.此时有时间分析原因了,网上找了一些资料,有些朋友也遇到过这个问题,大多数是和crontab定时任务有关系。有新内容产生,说明如果配置了MAILTO=root, 且定时任务没有将标准错误和标准输出到出,则定时任务报错时发送邮件。明显并没有/usr/bin/my这个可运行程序,此时查看/var/mail/root。
2023-06-30 11:53:38
434
1
原创 Cloudcanal数据同步神器
最后,我们在网上也找了一些现成的数据同步工具,要么就是收费商业很昂贵,要么SASS(不支持私有化部署,需要安装Agent),要么开源star很少没几个人维护不敢用在生产环境。 最终发现Cloudcanal满足我们的需求: 1.支持私有化部署,整个同步过程采用Web可视化操作管理同步任务,同时还有异常监控、微信技术支持交流群(很重要,遇到问题有人解决,并且有很多技术的小伙伴相互交流) 2.Cloudcanal提供社区版许可证,可以免费使用3个月,到期后还可以继续续期。同时如果想获得更多的
2023-05-17 18:48:34
982
原创 “从零到一“基于Freeswitch二次开发:Freeswitch入门与网络架构 (一)
在当前的互联网时代,想必大家对于网络电话或者通过网络进行语音、视频的场景再熟悉不过了。基于IP的语音传输(英语:Voice over Internet Protocol,缩写为VoIP)是一种语音通话技术,经由网际协议(IP)来达成语音通话与多媒体会议,也就是经由互联网来进行通信。我们通俗称这种拨打电话的方式叫"网络电话"。
2023-05-08 18:39:00
1160
原创 Centos6源码安装Haproxy进行四层代理
公司使用专线与第三方公司进行系统交互,给定了我们业务IP的使用范围,防火墙策略只开放业务IP范围之内才能访问,如果源IP不在业务IP范围之内,那么通过互联IP过去是访问不了的。TARGET = linux26 #首先查看uname -r, Linux内核是多少版本,查看README文件可以看到这个参数的解释,我服务的内核版本是2.6,所以使用linux26。2.我们的需求只是做4层代理,7层代理不需要,尽管Haproxy也支持7层代理,但是它最初的优势就是4层代理。1.软件体积小,高性能、稳定。
2023-01-13 10:59:15
2330
原创 论设计模式以及应用
观察者模式的思想是,对象之间存在一种一对多的依赖关系,使得一旦对象的状态发生改变,则依赖的对象会收到相应通知且自动更新。各工作人员观察者对象,首先调用自己要观察的IsaApiSubject类对象引用的addObserver方法,添加到IsaApiSubject类对象的observers集合中,如果后期一旦有ISP相关API消息变更,则调用IsaApiSubject的notify方法,该方法会循环遍历observers集合对象,调用他们的update方法,让观察者们接收到消息并且做出自己的相关响应操作。
2022-12-16 13:55:26
40261
原创 论系统安全架构设计以及应用
数据在用户到站点的所有网络路由设备无法直接分析、破解请求数据内容,并且浏览器会在访问站点时校验站点证书真实性,任何人无法伪装站点身份,若发生钓鱼网站伪装,则浏览器第一时间进行拦截,防止用户访问不安全的站点,保护用户数据安全。从本次项目的实践,我们也感悟颇深,系统安全性是一个永恒的话题,只有我们一直保持这一颗敬畏的心,才能把系统做到更好、更稳定、更安全,用户使用更放心!我们从三个层面对系统进行安全性设计,首先,网络硬件层面,采用硬件加密技术、防火墙技术,对数据传输与访问进行安全隔离。一.硬件网络层安全设计。
2022-12-16 13:55:02
41268
1
原创 论软件可靠性设计及应用
容错技术确实很大程度上给系统的可靠性做出了一些保障,但是有些服务异常并不总是如预期地按照我们设计的方向进行,有时候需要进行人工介入处理才能修复,此时我们需要针对系统运行情况进行检错监控,一旦发生错误,第一时间感知并且做出相应处理措施,防止问题扩大化到用户端,造成更大的损失。白盒式检错技术,我们在开发系统时,将系统容易出问题的功能模块、重要程度高的模块进行数据采集与埋点,一旦发送异常错误,系统自动发送对应异常信息到监控系统,开发人员再通过告警信息确认错误内容与位置,第一时间进行修复与处理。
2022-12-16 13:46:27
40656
原创 论架构风格及其应用
MVC的分层结构,职责划定明确,层次结构清晰,耦合度低,容易排查问题与调试。例如项目组中,做前端页面的开发人员只负责视图View的渲染与显示,无须关心Model模型的实现逻辑与工作内容,同样的Model只需要关心Controller控制器传递过来的业务数据,并且进行处理,数据处理结束够直接传递到View视图,不关心相关页面渲染和排版情况。综合对软件架构风格的特点分析与实际项目需求情况,以本项目为例,下文将从三个系统层面:表现层,业务层,服务层,及各层面所采用具体架构风格设计与应用的过程进行阐述。
2022-12-16 13:35:26
40882
原创 论微服务架构设计与应用
但是,微服务很友好地支持技术异构性,我们可以结合自己本身服务关注的要点,选择更适合自己的开发语言、数据库类型等,最大限度地发挥技术选型的优势与业务功能的结合度,达到最大的开发产出比。首先,我们将模块拆分为粒度更小的微服务,服务职责更得加单一,利用Docker容器技术将微服务独立部署,提高了系统的可移植、扩展性。我们在以后开发项目的过程中,要根据实际情况选择系统架构,并不是说单体架构一定是落后的,同时也不代表微服务能适应所有业务场景,只有合适的场景选择合适的架构才是最为明智的选择!一.微服务拆分与部署。
2022-12-16 13:29:19
41590
原创 2022软考高级架构设计师-经历分享
其中,这些级别的考试对考试顺序不做要求,可以直接考高级,也可以先考初级、再中级、最后高级都是可以的。并且这个考试和其他考试,例如什么会计师考试、财务相关的考试还不太一样,有的级别考试分为2科或者3科, 只有所有科目都考过了才算合格,否则只能来年再考,各科成绩都不保留。但是吧,对于国企背景的相关企业,去投标拿项目的时候,有证书相对来说还是有优势的,公司可以宣称自己有xx位高级工程等等,这样也能增加甲方对你的信任。先把知识点理解透彻,再刷往年的真题,先自己做一下,再对照答案看自己做的是否正确。
2022-12-16 13:23:35
42384
4
原创 Filebeat采集数据到ES保证数据不重复
后来直接看源码分析吧。在已经设置@metadata._id的情况下并且没做其他操作,那么filebeat调用Elasticsearch的_bulk API接口,使用action: create进行插入数据. (create的基本原理是, 根据_id判断数据,如果数据已经存在则忽略插入操作,如果不存在才插入)相对上面的情况,我们有时候希望的是,相同_id存在的情况下是后面推送的数据是覆盖而不是丢弃。1.就算是官方文档也不可能事无巨细的写在上面, 如果官方文档没有的,可以尝试从源码入手,也是一个不错的选择。
2022-12-08 14:10:36
44331
2
原创 企业开源办公虚拟专用网工具
这个不用担心, 这些IPsec VPN就是一种隧道加密速度,把【原始TCP的数据包】通过物理UDP协议来进行传输, 在这个层面你可以理解UDP是底层基础网络设施跟网线的作用差不多,我们只管真实TCP即可. 如果UDP丢包,那么TCP协议本身就是会重传,所以这些问题不用担心.还有一个不想用pptp的原因就是,我macos的电脑不支持pptp协议,找了一些替代品的软件也不行,最终抛弃这个pptp的解决方案。正好找到了一个开源办公VPN项目,支持Docker容器化部署,正合我意,给大家分享一下.
2022-10-17 18:27:39
43681
2
原创 Canal增量订阅MySQL数据同步工具
阿里巴巴开源的工具canal:,译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费.基本原理就是:canal伪装成为mysql的一个【slave从节点】订阅master的binlog, 解析binlog拿到更新后的数据,拿到更新后的数据之后, 一般会将数据推送到MQ(例如Kafka、RabbitMQ等)中间件, 之后我们再通过消费MQ拿到增量更新数据进行业务处理.
2022-09-20 16:54:45
43233
原创 Nginx Location优先级顺序与目录穿越漏洞
在配置location提供web静态资源访问的时候特别注意,否则造成目录穿越访问,泄漏相关数据。原理就是, nginx拿到/file后面的路径,和root拼接,最后读取这个路径的文件内容(/var/www/html/../.env) 此时文件存在,则能访问到内容.精准匹配=或者~^优先级:1 > 正则~或者~*匹配 > 空修饰符(一般匹配,取URI匹配最长的) > / (任意通用匹配)此时再访问http://localhost/file../.env 将访问不到了.查看到.env文件的内容.
2022-09-20 16:32:23
43584
2
原创 Nginx生产环境平滑升级
其实官方早就针对Nginx平滑升级做足了功夫,基本原理就是,启动新的Nginx(master+worker)进程,之后给旧的master进程发送-USER2指令,这样就能同时让新版和旧版本进程同时接收处理请求。之后我们再发送-WINCH给旧进程,让它停止工作服务(关闭所有旧worker进程,但是旧的master进程没关,防止后面你遇到问题回滚). 如果确认新Nginx没问题,那么再手动Kill旧的master进程即可完成平滑升级.请求2次,第一次负载到新的master,第二次负载到旧的master.
2022-09-20 15:16:25
43413
2
原创 rsync+inotify文件实时同步
简介 最近有一个比较特殊的需求需要实现,某个服务提供文件上传服务。但是要解决单点问题,所以会程序会部署在多台服务器上。但是也会随之带来一个和共享cookie的问题,那就是文件存储也应该共享的.其实大部分同学想到的,第一个肯定是使用NFS来解决。大家通过NFS mount到同一个目录即可实现. 但是为什么我们没有选择这个解决方案呢? 那是因为之前不知道是我们使用不当还是NFS自身存在问题, 出现了几次事故,NFS Server端卡死,导致整个NFS的client端由于使用硬挂载的方式一
2022-04-05 10:21:22
104214
原创 filebeat重复采集数据问题排查
一.背景 公司基于ELK的日志系统一直很稳定,不过有一天下午,微信收到Kafka topic延迟堆积告警将近6000w条数据。首先接收到告警,查看了这个业务最近7天的一个流量图,基本上量都很小,每秒也就2k左右的数据流量,但是今天下午流量直接跑到了30k/s并且持续了一段时间. 首先找到业务方负责的SRE同事,确认流量是否属于正常(不排除上线新款游戏流量暴增的情况).SRE同事确认流量异常,最近无新游戏或者活动上线,开始排查原因。我们看到的现象是,某台服务器日志文件路径应该是今天只采...
2021-07-18 16:12:14
106173
原创 PHP中MySQL server has gone away问题
一.背景 之前在Codeigniter里面写过类似console命令行的脚本. 脚本里存在sleep语句时间比较久, 导致出现一个现象就是sleep之前的SQL都是操作成功的,但是sleep之后,再执行SQL操作竟然报错: MySQL server has gone away. 也就是mysql的这个连接失效. 后来分析才知道, MySQL中存在2个重要的配置参数:interactive_timeoutwait_timeout 这2个参数的单位都是秒(
2020-08-22 19:09:55
110224
2
原创 office文件在线预览
需求背景 最近学妹她们那边有一个项目类似在线网盘的东西,支持文件上传保存。其中除了普通text文本以外,还有如office文件word、excel、ppt等文件,并且提供在线预览的功能。用户能够在线预览文件内容,并且分享预览链接出去的word不能下载到这个文件,不能暴露实际文件URL路径。她那边不知道怎么来处理这个问题,所以自然问了我一下。恰好之前这块我也做过一些这方面的项目,罗列几个处理方案。解决方案1.openoffice转化
2020-06-15 11:06:27
112400
3
原创 2019安装k8s详细教程
前言学习k8s的第一步肯定是安装进行实操。但是对于生产环境搭建一个高可用的k8s集群其实还是有点挑战难度的,特别是非专业运维开发人员。因为要涉及到的方面很多,默认配置都不能用于生产环境,性能调优,安全验证等等都是必不可少的。对于入门者来说的话,第一步安装其实有时候已经把一些人挡在了门外。自己也是费了一点功夫,才搭建了在本地能测试的k8s集群,用来学习。其中遇到了一些坑,所以记录一下,希望能帮助...
2020-06-11 16:52:28
138966
2
原创 试用haproxy中继服务器二级代理加速访问
原文地址:假设某个场景, 本地网络连接aliyun主机大陆ECS云服务器速度很快,基本ping都在30ms。并且在这个服务器上,去ping香港的服务器速度比本地要快很多。例如我本地ping相关的一个服务器平均在250ms,但是在aliyun的ECS上平均是140ms并且丢包率比较低。所以存在一个设想, 能不能这样,假设本地使用A标识, 阿里云的服务器使用B标识, 香港节点使用C标识。此时香港节点启动了服务,端口是6666。
2020-06-11 16:49:59
45891
原创 FastCGI协议内容
总结: 和理解http协议一样去理解fastcgi协议其实很都是b/s架构, 一个客户端发一个request请求,一个server端响应数据。此时WebServer作为client fastcgi程序例如php-fpm作为server端(一般我们会看到起在9000端口)。此时WebServer与php-fpm交互的过程。找了一篇文章把fastcgi协议讲得比较清楚,记录一下,可以参考。
2020-04-27 14:56:35
112306
mybatis逆向工程工具包(自动生成xml和java文件)
2016-11-08
php怎么提取office的文本内容?
2017-10-16
html中文件上传的原理
2017-09-15
TA创建的收藏夹 TA关注的收藏夹
TA关注的人