高性能Linux服务器运维实战:shell编程、监控告警、性能优化与实战案例
上QQ阅读APP看书,第一时间看更新

前言

为什么要写这本书

随着物联网、云计算、大数据等技术的发展,Linux也获得了迅猛发展,其在服务器领域的应用已经占据了90%以上的市场份额,因此,基于Linux的运维也面临新的挑战。越来越复杂的业务、越来越多样化的用户需求、不断扩展的应用领域,迫切需要有越来越合理的模式来保障Linux灵活便捷、安全稳定地持续提供服务,这种模式中的保障因素就是Linux运维。Linux运维是一个融合多学科(网络、系统、架构、安全、存储等)的综合性技术岗位,优秀的运维工程师必须具备各层面问题的解决能力和全局思维能力,运维工程师需要有非常广阔的知识面,还需要有企业一线的实战工作经验。因此,知识面、工作实战能力是衡量运维工程师核心竞争力的重要标准。在当前互联网大潮下,国内外对Linux运维人才的需求非常迫切,促使运维工程师的薪资也在逐年增长,目前Linux运维岗与其他岗位(如研发、测试等技术岗)待遇基本持平、甚至超出。

目前市场上关于Linux运维管理的书籍有很多,但是普遍存在的问题是模式单一,要么只讲基础理论和系统命令,要么侧重粘贴代码,要么介绍软件的安装与配置,这种模式带有很大的实验性质,并没有生产环境中实战应用和经验技巧的介绍。

本书针对这些问题,从基础入手,再进行深入研究,同时结合实际的应用案例进行由浅入深的讲述。本书贯穿了实战、实用、通俗、易懂的特点,在内容上十分注重实战化,从运维的多个方面以真实的生产环境介绍运维工作中的方方面面。通过真实案例的学习,可以使读者深入、迅速地掌握Linux运维技术的各种经验和技巧,从而真正提高企业的实战能力。

读者对象

本书适合的阅读对象有以下几种。

● 初/中级Linux运维工程师。

● Linux系统工程师。

● 云计算工程师。

● 互联网解决方案构架师。

● 所有从事开源的爱好者。

如何阅读本书

本书最大的特点是注重实践、理论与实际相结合,在讲述完一个知识点后,一般都附有实例作为对知识的补充,并且每个章节都是一个独立的知识块,读者可以从第1章依次阅读,也可以从中间阅读。纵观全书,每个知识点的介绍都由浅入深、由点及面。

本书主要分为4篇,总计11章,基本结构如下。

系统基础运维篇(第1~3章)

系统基础运维篇介绍了系统运维中最重要的3个部分:Linux基础命令的使用、shell实战编程与应用案例以及Linux系统运维深入实践。

第1章讲述了Linux最基础、最核心的内容——命令的使用。对命令的介绍以实际应用场景为依托,主要从系统管理与监控类命令、文件管理与编辑类命令、压缩解压缩类命令、网络故障排查类命令几个场景进行举例介绍。

第2章讲述了Linux下shell实战编程,主要介绍了正则表达式、if/else判断、for循环、while循环、until循环、select循环、函数的使用等,最后通过10个shell脚本应用案例作为对shell编程的实战演练。

第3章是对Linux系统运维实战的介绍,主要介绍了Linux系统运维中非常重要的几个方面,分别为Linux用户权限管理、Linux磁盘存储管理、Linux文件系统管理、Linux进程监控与管理。

系统性能调优篇(第4、5章)

系统性能调优篇介绍了性能调优必备的工具、思路以及具体的性能调优措施。

第4章主要讲述了Linux性能调优的指标有哪些、性能调优工具如何使用以及如何发现系统性能瓶颈。掌握这些内容可以为后面进行性能调优打好基础。

第5章是实战内容,主要讲述了系统性能调优的具体措施,包括从安装系统开始进行调优、内核参数调优、内存资源性能调优以及磁盘I/O与文件系统性能调优。

智能运维监控篇(第6、7章)

智能运维监控篇是本书的一个重点,主要讲述了如何构建一个智能的统一运维监控平台,从运维监控软件选型、应用软件与监控平台的集成、监控告警的配置3个方面展开介绍。

第6章主要讲述了运维监控工具Zabbix的使用。从Zabbix的安装部署、Zabbix模板的使用、触发器的使用、监控项的添加、触发器的配置、告警的设置等几个方面介绍Zabbix的基础功能,接着介绍了Zabbix的自动发现和自动注册功能以及Zabbix的主动模式和被动模式的应用区别,然后通过6个案例介绍了Zabbix如何监控MySQL、Apache、Nginx、PHP-FPM、Tomcat、Redis,最后介绍了Zabbix如何与钉钉、微信整合进行告警。

第7章主要讲述了两个方面的内容,分别是基于服务的监控Prometheus以及Grafana可视化监控平台,最后介绍了通过Grafana+Zabbix+Prometheus打造全方位立体监控系统的方法。

运维实战案例篇(第8~11章)

运维实战案例篇是本书的一大亮点,主要介绍了运维工作中多个实际应用案例,剖析故障产生的原因以及解决的思路和过程,每个案例都是企业生产环境下的真实应用。通过对案例的介绍来传达解决问题的思路,进而提高读者的实战应用能力。

第8章讲述了系统运维故障处理案例,主要从Linux系统的角度介绍系统无法启动、死机、忘记密码等场景的处理办法,最后还通过一个资源使用案例介绍了Linux下ulimit的使用经验和技巧。

第9章讲述了运维工作中常见的应用系统故障案例,主要介绍了文件系统出现只读故障、计划任务突然失效故障、Java内存溢出故障、NAS存储系统故障4个应用环境中的真实案例。

第10章讲述了Linux作为服务器的安全运维案例,主要介绍了网站被植入WebShell案例、云主机被植入挖矿病毒案例、网络遭受DDos带宽攻击案例、服务器遭受攻击后的处理措施以及SYN Flood、CC攻击的安全防范措施。

第11章讲述了企业线上业务服务器的性能调优案例,主要介绍了Java进程占用CPU过高的排查思路与案例分析、线上MySQL数据库故障处理案例、线上Hadoop大数据平台出现OutOfMemoryError错误案例。在每个案例结束后,都对此案例中涉及的内容进行了引申介绍,确保读者能从案例中学到更多、更深的知识。

勘误和支持

由于作者的水平有限,书中难免会出现一些错误或不准确的地方,不妥之处恳请读者批评指正。

本书的修订信息会发布在笔者的博客上,地址为http://www.ixdba.net。笔者会在该博客中不定期更新书中的遗漏,当然,也欢迎读者将遇到疑惑或书中的错误在博客留言中提出。如果您有更多的宝贵意见,也欢迎发送邮件至笔者的邮箱(m13388@163.com),期待能够听到读者的真挚反馈。

致谢

首先要感谢我的爸爸、妈妈,感谢你们将我培养成人,并时时刻刻向我传递信心和力量!

感谢我的妻子吴娟然女士,是她的鼓励和背后默默地支持,让我坚持写完了本书。

感谢对本书提供大力支持的杨武先生、禄广峰先生,感谢我的挚友张建坤、兰海文,他们从技术角度对本书部分章节进行了修改和补充,并提出了很多意见和建议。

本书内容是建立在开源软件与开源社区研究成果基础之上的,因此在本书完成之际,对每位无私奉献的开源作者以及开源社区表示衷心的感谢,因为有他们,开源世界才更加精彩。同时也要感谢学习和使用Linux开源软件过程中认识的一些同行好友,以及众多本书的支持者,在本书编写过程中他们向我提出了很多意见和建议,人数众多不一一列举,在此一并感谢。

高俊峰(南非蚂蚁)

2019年12月于西安