随心随写的运维

无监控、不运维

运维行业有句话:“无监控、不运维”,是的,一点也不夸张,监控俗称“第三只眼”。没了监控,什么基础运维,业务运维都是“瞎子”。所以说监控是运维这个职业的根本。用监控数据给自己撑腰,这显得更加必要,有人说运维是背锅侠,那么,有了监控,有了充足的数据,一切以数据说话,运维还需要背锅吗,所以作为一个运维工程师,如何构建一套监控系统是你的第一件工作。

如何构建完善的监控

只有具备充足的技术能力 + 准确的资源数据 才能成就一套完美的监控体系。

资源数据

在资源数量少的情况确实容易很多,一个人搞定也不是什么问题。但是当有数个云平台(云平台架构还不一致),总数5000+以上的网元数量,维护中必定牵扯多人,有专业岗位的划分,也有班次的轮转和交接。这个时候资源数据维护准确度绝对大打折扣,因为每个人的工作方式,态度等等不可能一样。能解决这个问题就只能靠完善的线上流程来约束,通过线上流程自动维护资源数据,但如果流程一多或者说缺少人性化设计的线上流程,将导致不必要的工作量增加,很多人在工作量大的情况下,会显得力不从心(基本都喜欢偷懒,我也不例外)。所以有一套规范流程,且设计是人性化高效的线上流程很有必要。当然构建线上流程不光只考虑资源数据,还得考虑实际生产运营模式,还需要考虑前期的规划,针对上线的一台的服务器的用途,规划好相应网段。还需要考虑不同角色的维护内容。流程设计不得不考虑各种情况,实现起来确实要比技术能力要难得多。技术都能靠学习学到,但流程设计是结合公司运营模式的。

技术能力

1、首当其冲就是linux:为什么?所有服务器、交换机、防火墙等系统中不说100%吧,怎么也有99%以上是linux的内核吧!很多人学linux就只学了命令,结果发现虽然这么多生产设备都是linux内核但也不是都了解!我和新来的同事也开玩笑说,怎么换个马甲你就不认识了?所以linux必须得学原理,结合自己理解的原理进行实践测试验证,这样才能真的掌握。入门书推荐:《鸟哥私房菜》。深入的话我觉得得靠经验积累,如果要推荐的话那就是《深入Linux内核架构》,不过这个太底层了,不是搞底层开发的,帮助不是很大。

2、OSI7层网络模型:所有跨设备的数据交互以及一些本机的数据交互都在用这个模型,没有不学的道理。它对日后网络相关命令工具原理的理解,问题定位有很大帮助。网上介绍很多适合网络知识的入门,推荐华为博客空间的OSI 七层模型和TCP/IP模型及对应协议(详解)https://bbs.huaweicloud.com/blogs/372971。如果要深入了解一些,推荐书籍:《TCP/IP详解.卷1:协议》、飞哥的《深入理解Linux网络》

3、监控工具:作为监控运维,监控工具那是吃饭的家伙,硬件相关监控用的最多的还是Zabbix;虚机性能、数据库、其他中间件、业务拨测当前主流的都是使用Prometheus,可视化仪表板则使用强大的Grafana,饼图、折线图、柱状图、甘特图等都能做;日志监控当前用的比较广的也还是ELK,分别是Elasticsearch、Logstash 和 Kibana 组合,常用于日志聚合、索引和检索,以及数据可视化。入门推荐直接网上找案例,想要深入了解直接查官方文档。

4、数据库:主流监控工具所涉及的数据库也并不少,像Zabbix所用的主流数据库有MySQL、Pg,prometheus使用tsdb、InfluxDB,日志监控用的Elasticsearch。简单的入门还是有必要的,至少得会用,简单的增删改查得会吧。除此之外MySQL除了简单入门,最好可以再好好学一下它内核引擎运行的原理,不管是监控用到还是业务程序用到MySQL都是不可或缺的核心。推荐书籍《MySQL运维内参》、《MySQL技术内幕InnoDB存储引擎》

5、编程:在监控工作中,总会遇到一些功能不足需要自己搞些脚本去解决的内容。需要具备一些编程能力,我了解下来,大多运维偏好用Python或者go。写脚本的运维和专职的开发者编程上有什么区别?区别在于不同领域的开发者(如系统内核,网络,web,手机应用)都还需要学不同领域的开发框架。不过如今也有很多运维开发不仅仅只写零零散散的脚本了,也有学Django web框架以及Vue的。推荐多写多练,多看看github中大佬写的。如果有兴趣学到这一步,那和代码打交道其实也应该掌握一些git技能和CICD。

6、其他主流应用:监控打交道最多的就是茫茫多的应用,Apache的httpd、Nginx、k8s 、redis不得不用个省略号... 。遇到什么了解哪个就对了,知道它是做什么用的,需要关注其哪些性能指标。找模板、找exporter,没有就 做模板、做exporter。

企业中监控部署需要注意什么

企业中需要注意的地方那当然是学习过程中测试环境所遇不到的一些问题。

区别1:企业中所监控的东西数量级只会越来越多!

当量级持续增加会带来哪些额外的问题?第一个监控组件会遇到性能瓶颈,如何排查定位调优或者调整组件架构进行横向扩展?第二个扩展后庞大的架构和监控资源怎么管理维护?第三个持续会有服务器上架需要监控跟进,另外服务器之间的差异导致监控模板适配问题怎么解决?这么多问题加人去处理当然是可以缓解,但不是根治。最终解决方案就是逐步进行规范实现自动化或者半自动,摆脱对人手的依赖。但这个自动化的实现又取决于开始说的"具备充足的技术能力 + 准确的资源数据!"

区别2:企业中生产环境不一,监控架构可能无法套用。而且得多往安全方向考虑!

企业不像学习测试环境那么单一,往往会比较复杂的多,针对不能情况需要做出工具调整,架构选型,命名规范性等调整,才能实现更好的集中运维管理。另外也要尽可能使用代理,在保证网络区域隔断的同时能够通过明细策略的管控来实现代理机的跨域访问。不管从便捷性还是安全性来讲,跨域访问使用代理肯定是首选!

:::: column
::: column-left

公众号二维码

:::
::: column-right

个人博客二维码

:::
::::

客官,欢迎光临本站!路途遥远,常进来看看!

本文由mdnice多平台发布


吴星宇
1 声望1 粉丝

运维技术分享