走好自己的路就要有自己的思考,有坚定的意志,坚持自己的信念,坚持自己的追求,不能放松对自己的要求,更不能糊里糊涂地度过自己的人生。人生不能虚度,自己要对得起自己。
二进制包安装
我们可以到 Prometheus 二进制安装包下载页面,根据自己的操作系统选择下载对应的安装包。下面我们将以 Amazon Linux 2 作为演示。
下载版本 v2.17.1
。
而我在等你
走好自己的路就要有自己的思考,有坚定的意志,坚持自己的信念,坚持自己的追求,不能放松对自己的要求,更不能糊里糊涂地度过自己的人生。人生不能虚度,自己要对得起自己。
我们可以到 Prometheus 二进制安装包下载页面,根据自己的操作系统选择下载对应的安装包。下面我们将以 Amazon Linux 2 作为演示。
下载版本 v2.17.1
。
与其每天担心未来,不如努力现在。别对自己丧失信心,成长的路上,只有奋斗才能给你最大的安全感。
Prometheus 是一套开源的系统监控报警框架。它启发于 Google 的 borgmon 监控系统,由工作在 SoundCloud 的 google 前员工在 2012 年创建,作为社区开源项目进行开发,并于 2015 年正式发布。2016 年,Prometheus 正式加入 Cloud Native Computing Foundation,成为受欢迎度仅次于 Kubernetes 的项目。
别人怎样去看待你的价值并不重要,重要是你自己怎样看待自身的价值。即便你是一块货真价实的金子,多说己长也便是短,自知己短便是长。一个人的真正伟大之处,就在于能认识到自己的渺小。
Pecan
框架的目标是实现一个采用对象分发方式进行URL
路由的轻量级Web
框架。它非常专注于自己的目标,它的大部分功能都和URL
路
由以及请求和响应的处理相关,而不去实现模板、安全以及数据库层,这些东西都可以通过其他的库来实现。关于Pecan
的更多信息,可
以 查看文档
真正的坚强,是属于那些夜晚在被窝里哭泣,而白天却若无其事的人。未曾深夜痛哭过的人,不足以谈论人生。
我们先从应用的角度来看详细的介绍一下alertmanager以下简称am,以下是官方文档介绍。
The Alertmanager handles alerts sent by client applications such as the Prometheus server. It takes care of deduplicating, grouping, and routing them to the correct receiver integrations such as email, PagerDuty, or OpsGenie. It also takes care of silencing and inhibition of alerts.
翻译一下就是,负责处理接受client(例如prometheus)发送的告警消息,包括重复告警的发送、聚合、发给相关人员,并且支持多种方式例如email或者pagerduty这种第三方通知告警平台,同时他还提供了静音以及告警抑制的功能。
这些功能基本涵盖了目前各大公司的告警痛点,重复告警(告警发生了但是一直也没人处理)、告警风暴(某次版本上线导致的大量服务机器指标异常)、告警信息重复(例如机器宕机之后又收到了网络不通的告警)。
这里注意下,prometheus族包括am他们的实现思路都是基于label来做的,后面会从代码层面详细介绍下
实现一个完整的监控体系需要以下几个功能:
你勤奋充电努力工作保持身材,对人微笑这些都不是为了取悦他人,而是为了扮靓自己照亮自己的心,告诉自己我是一股独立向上的力量。
在Python中还有一个线程池的概念,它也有并发处理能力,在一定程度上能提高系统运行效率;
线程的生命周期可以分为5个状态:创建、就绪、运行、阻塞和终止。自线程创建到终止,线程便不断在运行、创建和销毁这3个状态。一个线程的运行时间可由此可以分为3部分:线程的启动时间、线程体的运行时间和线程的销毁时间。在多线程处理的情景中,如果线程不能被重用,就意味着每次创建都需要经过启动、销毁和运行3个过程。这必然会增加系统相应的时间,降低了效率。看看之前介绍线程的博文的例子中( 点击此处可以阅读),有多少个任务,就创建多少个线程,但是由于Python特有的GIL限制,它并不是真正意义上的多线程,反而会因为频繁的切换任务等开销而降低了性能( 点击此处可以了解Python的GIL)。这种情况下可以使用线程池提高运行效率。
线程池的基本原理如下图,它是通过将事先创建多个能够执行任务的线程放入池中,所需要执行的任务通常要被安排在队列任务中。一般情况下,需要处理的任务比线程数目要多,线程执行完当前任务后,会从队列中取下一个任务,知道所有的任务完成。
由于线程预先被创建并放入线程池中,同时处理完当前任务之后并不销毁而是被安排处理下一个任务,因此能够避免多次创建线程,从而节省线程创建和销毁的开销,能带来更好的性能和系统稳定性。所以,说白了,Python的线程池也没有利用到多核或者多CPU的优势,只是跟普通的多线程相比,它不用去多次创建线程,节省了线程创建和销毁的时间,从而提高了性能。
Python中 线程池技术适合处理突发性大量请求或者需要大量线程来完成任务、但每个任务实际处理时间较短的场景,它能有效的避免由于系统创建线程过多而导致性能负荷过大、响应过慢等问题。下面介绍几种利用线程池的方法。
就算没有天分,只要你愿意每天花一点时间,做同样一件事情,不知不觉间,你就会走得很远。
上篇博文介绍了multiprocessing模块的内存共享,下面讲进程池。有些情况下,所要完成的工作可以上篇博文介绍了multiprocessing模块的内存共享,下面讲进程池。有些情况下,所要完成的工作可以分解并独立地分布到多个工作进程,对于这种简单的情况,可以用Pool类来管理固定数目的工作进程。作业的返回值会收集并作为一个列表返回。Pool可以提供指定数量的进程,供用户调用,当有新的请求提交到pool中时,如果池还没有满,那么就会创建一个新的进程用来执行该请求;但如果池中的进程数已经达到规定最大值,那么该请求就会等待,直到池中有进程结束,才会创建新的进程来它。
在网上找到了一篇非常好的分析进程池源码的文章,在这里跟大家分享下,篇幅比较长,希望大家能够有耐心的看完它,仔细体会。
进程池使用multiprocessing.pool,pool的构造如下:
生活的精彩,不只是轰轰烈烈,有的人你看了一辈子却忽视了一辈子,有的人你只看了一眼却影响了你的一生,有的人热情的为你而快乐却被你冷落,有的人让你拥有短暂的快乐却得到你思绪的连锁,有的人一个无心的表情却成了永恒的思念,这就是人生。
上篇博文介绍了Python的multiprocessing模块创建进程Process 类,进程间通信,进程间的同步三个部分,下面接着介绍学习进程共享。
在多进程情况下,由于每个进程有自己独立的内存空间,怎样能实现内存共享呢?multiprocessing模块提供了Value, Array,这两个是函数,详细定义在sharedctypes.py里,有兴趣的可以去看看(等了解了ctypes模块后回头再分享下我的理解,今天就先放放)
生活从未变得容易,只不过是我们变得更加坚强,你若不想做,总会找到借口,你若想做,总会找到方法,输不起的人,往往也赢不了人,当你勇敢跨出第一步的时候你就已经赢了,犹豫一千次都不如实践一次,所有的努力和付出一定会有收获。
什么是线程?
为什么要使用多线程?
GIL 全局解释器
年龄就像是验金石。人们到了一定的年龄之后,一类人变得越发有趣,一类人变得越发无聊。前者开始创造生活,后者开始被生活创造。不幸的是,大多数人偷懒,愿意把后半生的命运交给前半生的惯性。幸运的是,一小部分人开始有能力刹住边性,去重新定位方向。
最近的业余时间主要放在了学习Python线程、进程和协程里,第一次用python的多线程和多进程是在两个月前,当时只是简单的看了几篇博文然后就跟着用,没有仔细去研究,第一次用的感觉它们其实挺简单的,最近这段时间通过看书, 看Python 中文官方文档等等相关资料,发现并没有想想中的那么简单,很多知识点需要仔细去理解,Python线程、进程和协程应该是Python的高级用法。Python的高级用法有很多,看看Python 中文官方文档就知道了,当然有时间看看这些模块是怎么实现的对自己的提高是很有帮助的。选择了编程这个行业,就是要不断的学习、思考、归纳总结经验,路漫漫其修远兮,吾将上下而求索,希望能与各位共勉。接下来要花好几篇博文的篇幅来讲讲我学习线程、进程和协程的经验,有讲得不好的地方,希望大家批评指正。这篇博文主要讲讲与之有关的概念。
工作遇到挫折,便退缩,说难;生活遇到困难,便抱怨,说苦;总是怨天尤人,羡慕别人的成就,悲观于自己的路。其实工作不如意,慢慢来,因为经验需要累积;生活不开心,别悲观,总有悲欢离合。别人今天的成功,是他的过去所成就。我们今天可能不如意,但这不如意可以磨砺我们,我们年轻,我们还有未来。
简介
上一篇博文介绍了Python中线程、进程与协程的基本概念,通过这几天的学习总结,下面来讲讲Python的threading模块。首先来看看threading模块有哪些方法和类吧。