专栏首页咸鱼学Python搞事 | 这个周末我对落灰的云服务器做了什么?

搞事 | 这个周末我对落灰的云服务器做了什么?

原文:https://zhuanlan.zhihu.com/Ehco-python

作者:Ehco

编辑:咸鱼

今天折腾啥呢?

上个月(201908)低价薅的华为云加上上次薅的腾讯云,手上已经有三台云服务器落灰了。

这玩意儿还不如 Kindle 呢,至少 Kindle 还能盖个泡面。

而由于备案相关的问题 个人小站一般不会托管在国内的服务器上(仅仅是我)

所以这台服务器很长时间以来只跑了:

  • 微信公众号的后端项目
  • 上学那会给女票做的小说网站(没有域名直接ip解析过去的 就没备案)

总觉得不能就这样浪费 那么做什么好呢?

写代码的怎么能没有点自己的 side project ? 我当然也不例外

我一直维护着一个叫『谜之屋』的开源项目:

https://github.com/Ehco1996/django-sspanel

所以我决定为这个项目搭一套的监控系统

这个系统主要分为3个部分:

  • sentry (bug跟踪管理)
  • prometheus (metrics / node数据监控)
  • grafana (数据监控仪表盘)

所以这台服务器就又活了过来。

sentry

首先是sentry,谜之屋就有一些bug尚未解决

Sentry不仅仅能告诉你哪些代码片段出了问题,还能展示出完整的错误栈,帮你快速定位bug

举个例子「URLError」点进去是这样的

通过观察,我们发现是在调用支付宝api的时候发生了网络的错误,我们甚至能在右侧看到有多少用户遇上了这个错,包括:

  • 他们用的系统是什么
  • 浏览器是什么…

清楚了问题发生的原因和过程,我就可以很快的做出解决方案:

  • 请求失败的时候 retry
  • 用定时任务去处理失败的消息

prometheus

接着是prometheus(普罗米修斯),这个名字很酷炫有没有,实际上普罗米修斯的功能也很酷炫,我这里只做简单的展示:

普罗米修斯可以收集和管理不同server的metrics。

metrics 数据大概是这样的

通过这些数据,我们就能查看得到这些node的:

  • 健康状态
  • 负载状态
  • 错误信息
  • 报警规则等等等

grafana

最后是 grafana,利用 prometheus是可以收集到很多的数据,但是没有一个图形化的展示,我们人类很难真的看出其中的某些变化。

grafana 就是来帮助我们解决这个问题,他提供了很多dashboard(也可以自己设计),来展示这些数据

比如我们来看一下谜之屋的 api server

可以清楚的看到 cpu 内存 网络 等重要指标的使用状态

谜之屋的访问量很小 所以只用了一台1核1g的vps在跑 不过可以看到,内存已经比较吃紧了

再来挑一个节点node观察一下

可以发现在夜里1点左右,内存的使用有了一次很夸张的增长,然后又迅速跌了下来.

凭借我的经验,这一定事发生了 「memory leak 内存泄露」,我上服务器一看,本来一直在跑的代码果然挂了,爆出了一个大大的 Memory Error.

下面我们来尝试找到发着这次内存爆炸增长的原因

首先是 cpu 的使用状况

仔细观察一下图表,发现cpu的使用还算比较稳定,负载甚至连20%都没上个,那么问题基本不出在 cpu 上.

再看看网络相关?

看了这个图之后,一下就明白了,在内存爆掉的那个时刻

  • tcp 的连接数量有了一次猛增
  • 伴随着socket用的内存也涨了上去

当新的连接不断的建立 旧的又不断开时,我这台只有500m内存的小vps自然撑不住挂了。

最后的发一波参考的安装文档:

sentry: https://docs.sentry.io/ prometheus: https://prometheus.io/docs/ grafana: http://docs.grafana.org/

PS: 推荐全部用docker安装,会减少很多麻烦。

如果安装有困难可以。。。等等,之后会出系列教程。

先预祝各位等等党大获全胜

本文分享自微信公众号 - 咸鱼学Python(xianyuxuepython),作者:Ehco

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-09-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 实用主义 | 如何跟随大佬快乐学习?

    但是上面大佬太多,还有各种非常牛逼的开源项目,为了达到我学(zhuang)习(bi)的目的,我关注了很多大佬,看大佬都star了哪些项目,紧跟大佬的步伐。

    咸鱼学Python
  • Linux 优化 | 我终于要对运维小哥下手了

    之前学习 Linux 命令的时候有学到 man 的使用,还有它的进阶版本 info 他可以更详细的查询命令手册

    咸鱼学Python
  • 英雄留步,这些数据指标你知道吗?

    前不久分享了一篇关于数据指标 DAU/MAU 的部分理解,文章里我多次提到下面这句话

    咸鱼学Python
  • Prometheus监控系列-部署篇

    Prometheus是继kubernetes第二个从CNCF中毕业的项目,个人也是非常的喜欢这款通过数据指标发现和预测告警的开源监控平台,官方的话就不多说了,根...

    公众号: 云原生生态圈
  • 需求变化的根源是什么?

    在不按时算薪的行业里,软件开发应该是加班最多的一个行业。码农,是很多程序员用以自嘲的称谓。长时间的加班,大量的BUG,无穷无尽的特性,永远都在做的重构,伴随着程...

    韩伟
  • 总结Oracle8i 的UNDO表空间损坏(ORA-01092及ORA-00600【4193】)情况下的数据库不完全恢复的经历

    服务器断电重启导致备份生产环境的恢复目录库无法进行启动,提示Ora-01092例程终止。强行断开连接

    黄昏前黎明后
  • 字符串:KMP算法还能干这个!

    给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。

    代码随想录
  • [LeetCode]Palindrome Number回文

    链接:https://leetcode.com/problems/palindrome-number/#/description 难度:Easy 题目:De...

    尾尾部落
  • Leetcode【60、79、93、131、842】

    这道题是一个从 1 到 n 的数组,共有 n! 个全排列序列,找到第 k 个全排列序列。

    echobingo
  • epoll LT 模式和 ET 模式详解(文末赠书)

    与 poll 的事件宏相比,epoll 新增了一个事件宏 EPOLLET,这就是所谓的边缘触发模式(Edge Trigger,ET),而默认的模式我们称为 水平...

    范蠡

扫码关注云+社区

领取腾讯云代金券