监控supervisor管理的进程状态,在进程异常退出的时候给出报警。
利用 Supervisor 的 Event & Listener 功能进行订阅异常退出事件,并进行报警处理。
Supervisor 官方对其 Event 机制的描述是:一个进程的监控/通知框架。
该机制主要通过一个 event listener 订阅 event 通知实现。当被 Supervisor 管理的进程有特定行为的时候,supervisor 就会自动发出对应类型的 event。即使没有配置 listener,这些 event 也是会发的;如果配置了 listener 并监听该类型的 event,那么这个 listener 就会接收到该 event。 event listener 需要自己实现,并像 program 一样,作为 superviosr 的子进程运行。
一直想做个关于资源巡检的功能,其需求就是通过邮件的形式来查看linux资源的使用情况,超出一定的阈值时高亮显示出来。也有人说啦,这个需求通过监控zabbix
, prometheus
都能做呀,何必自己重复造轮子做这些啊。我就是瞎折腾呗,只能说巡检报告是一总主动探测系统资源的一种手段,一般公司监控,外部都不能直接访问的,需要拨通vpn才可以,有些情况我们是无法连接到监控平台,比如放假游玩,不想打开电脑…这些情况下通过每天的巡检报告可以随时的了解系统资源的情况。
本次使用全手工的方式以kubeadm形式部署kubernetes的ha集群,ha方式选择node节点代理apiserver的方式。
本次我们将实际利用Kubeadm工具来更新集群,这边沿用之前分享的使用kubeadm安装Kubernetes v15.4 ha集群,部署的HA丛集来进行v1.15.4
更新至 v1.16.0
。
aws中国竟然没有为产品批量添加监控报警的功能…呵呵呵呵,为了减轻工作,实现批量初始化,没有我们就动手自己写脚本吧,使用aws-cli
工具可以获取到各项产品的信息,并且可以管理产品。
aws 支持邮件和短信的报警通知,考虑时效性问题和结合公司的使用情况,需要接入企业微信的告警提醒,使用 Lambda 和 sns 的结合,可以实现这个需求,利用 Lambda 接受 SNS 的告警信息,然后通过 python 脚本发送到企业微信的接口上去。由企业微信客户端接收通知。
因为中国区域的Debian
版本没有新版的,是不是很无语。云平台竟然连 linux 发行版的系统都没的。。。
首先,在AWS
东京地区启动Debian
实例,将适当大小的EBS
卷挂载到该 Debian 实例上,然后使用dd
命令将Debian
实例的整个根卷作为文件保存到该EBS
卷。
cn-north-1
区域中的实例.在该cn-north-1
区域的实例中,使用dd
命令将该文件写入EBS
卷,然后为该EBS
卷创建快照,并使用该快照在cn-north-1
区域中创建AMI
。AMI
启动CentOS
实例,该实例与在东京地区运行的实例相同。在进行构建CI工作流前,先了解下2个概念
GitOps是一种持续交付的方式.它的核心思想是将应用系统的声明性基础架构和应用程序存放在Git的版本库中.
将Git作为交付流水线的核心,每个开发人员都可以提交拉取请求(Pull Request)并使用Git来加速和简化应用程序部署和运维任务.通过使用像Git这样的简单熟悉工具,开发人员可以更高效地将注意力集中在创建新功能而不是运维相关任务上(例如,应用系统安装,配置,迁移等)
通过应用 GitOps ,应用系统的基础架构和应用程序代码可以快速查找来源——基础架构和应用程序代码都存放在 GitLab 、或者 GitHub 等版本控制系统上.这使开发团队可以提高开发和部署速度并提高应用系统可靠性.
将 GitOps 应用在持续交付流水线上,有诸多优势和特点:
在我看来 GitOps 的最大优势就是通过完善的 Git 分支管理来达到管理所有 CI/CD 管道流水线的目的,不同的环境可以对应不同分支,在该环境出现问题时候,可以直接查找对应分支代码,达到快速排查问题的目的.而对于 Git 的熟悉,更是省去学习使用一般 DevOps 工具所需的学习成本和配置时间,开发人员可以无任何培训直接上手使用,进一步降低了时间与人力成本.
持续集成(ContinousIntergration,CI)是一种软件开发实践,即团队开发成员经常集成它们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都需要通过自动化的编译、发布、自动化回归测试来验证,从而尽快地发现集成错误。而这些自动化的操作则由CI软件进行执行。
持续部署(ContinousDelivery,CD)在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境中。交付团队 - >版本控制 - >构建和单元测试 - >自动验收测试(e2e)- > UAT - >发布(部署,DevOps)
Drone 是一个基于Docker容器技术的可扩展的持续集成引擎,用于自动化测试与构建,甚至发布。每个构建都在一个临时的Docker容器中执行,使开发人员能够完全控制其构建环境并保证隔离。开发者只需在项目中包含 .drone.yml
文件,将代码推送到 git 仓库,Drone就能够自动化的进行编译、测试、发布。
官方文档上面大量充斥着0.8
版本的配置文件描述,而最新的版本是1.2.3
,两个版本之间有大量的不同地方,需要大家一点一点的试错摸索,不过读者在读完本篇文章后,就可以很顺畅的编写pipeline了。