一个 70 后运维老兵的 Elastic 认证工程师之路
1. 缘起
我接触 ES 的时间大约是2017年,最初是小打小闹,只是搭了个小的demo环境,用ES来存储给设备日志外加用Kibana做一些简单的可视化展示,自我娱乐和研究而已, 对于ES本身的知识也只是限于碎片化的学习。
2018~2019年是个逐渐井喷的阶段,那时候公司有几个千亿级日志收集和处理的项目开始上马,我作为项目架构师,自然要对Elastic stack玩得更加精深一点,于是便决心想要体系化的学习一下。正好在2019年7月极客时间推出了阮一鸣的ES7.1的视频课,那时便毫不犹豫的买了下来,2019年9月开始被assign到一个AIOps的项目中去,所以之后也只是断断续续的学习。
但也正是在那个AIOps的项目中,我对ES这个强大的数据平台及其与上下游周边系统的关系有了更加清晰的认识,今年年初老板同我谈起建设运维自动化平台的想法,于是想要拿下Elastic 认证的决心也就坚定了下来。
2. 准备过程
Elastic 认证在业内素来有着难通过的“恶名”,而且因为考的全是实操题,所以如果自己没有动手实践的经验是肯定不能通过考试的。3个小时10个大题,每个题目必须分秒必争,也就意味着必须对ES中的各种概念有着非常深刻的理念,并且知道他们出现在官方文档的什么位置才行。抱着这个认识,我的复习准备之路一共分为3个阶段。
今年5/1考完CKA认证后,便决心攻下Elastic 认证。因为平时从事的是架构师方面的工作,所以工作侧重点比较多在ES的运维和容量规划等方面,而对于搜索,聚合这些,乃至写DSL语句等,操练的没有那么多,其中的有些概念之前也只是有个了解,所以第一阶段的复习我对自己的目标是“夯实基础”。
ES 的文档虽然很成体系,但也正因为文档繁多,所以新手直接盲目看文档会很容易迷失,造成越看越多,最后往往会不了了之。因此我复习时主要采用的是以下两个材料:
◊ 阮一鸣在极客时间的ES视频课
◊ B站上的中华石杉的的视频
阮老师的课优势在于覆盖面广,Elastic 认证考试的所有知识点全部都覆盖到了,而且偏重实践。但也许是因为受限于每个视频课的时间不能超过15分钟的关系,因此每堂课的节奏非常快,往往一节课里包含很多知识点,这对于之前没有太接触过某个知识点的话挑战会比较大,可能要反反复复观看才行。
遇到这种情况,中华石杉的讲解就是一个很好的辅助。中华石衫的课相对更加是理论和实践并重,所以有些知识点讲解的比较透,等看完了,理解了,再回去看阮一鸣的课,就会有高屋建瓴的感觉。
在观看课程以后,我也做了大量的笔记。。Elastic 认证考试的覆盖面是相当广泛的,比如光是DSL查询语句在各种情况下的用法这一个知识点就很复杂,牵涉面很广。这个时候,做笔记是个很重要的帮助自己理解和消化的过程 。Microsoft Onenote是个很好的笔记软件,各个设备之间同步很方便,方便随时随地查阅。
光看,光记,但不动手是绝对不行的。任何一个IT技术都是实践动手的过程。阮一鸣的每堂课上的测试用例是很好的练习素材,我对自己的要求是每个case的代码至少敲过3遍以上, Kibana提供的3个sample data也是很好的数据源,方便来练习查询和聚合。
就这样反反复复,在不停的观看——练习——观看——练习——查阅——练习的过程中,一个月的时间过去了,等到了6月中的时候,我把对Elastic 认证的主要考点都基本过了一遍,到最后几乎可以摆脱文档来徒手写各种查询,聚合和API操作语句。基本实现了最初定下的“夯实基础”这一目标。
因为平时工作比较忙,所以练习的时间大多集中在晚上10点到凌晨1点这3个小时里。这里要特别感谢铭毅在“知识星球”上建立的“死磕Elasticsearch”这个版块,汇聚了大量的同道学友,以及许多针对性的练习,特别是德国博士的那个几十页的练习材料是非常有帮助的,价值不言而喻。
这段时间里我基本上就是把德国博士的这套练习题完整做了一遍,并且对照铭毅的答案进行了比对和强化,有时候我的想法和思路和铭毅的不完全一致,我会私下和铭毅交流,很多时候大家是殊途同归,只是哪种方法更加严谨而已。交流和练习的过程是一个迅速提升的过程,在此也要再次感谢铭毅给到的帮助。
2.3 冲刺收官 (端午节3天)
端午节放假3天,我闷头在家敲了3天的代码,主要是把几个前辈的考试经验贴全部看了一遍,对于他们帖子里提到的题目和考点,自问自答的回想了一遍,并且在Kibana中敲出代码,最后做到可以完全不依赖查询官方文档徒手写出。
这里要提下ES的Painless脚本。很多人把写无痛脚本视为畏途。也许是因为早在读书的时候就学习了好几个语言,有一些编程基础,和数据结构基础,所以我倒并没有觉得Painless脚本有多难。其实搞懂3种场景下的用法就足以应对考试中的要求了,我差不多花了半天的时间把这块全部看完,重点是看了官方文档上的“walk through with painless script”章。另外特别推荐如下两篇文章, 是官方文档以外,特别值得参考学习的。
◊
1.铭毅的Elasticsearch7.X Scripting脚本使用详解
https://mp.weixin.qq.com/s/PUXVdc5QKt7avXZeugjejA
◊
2.虎哥的Painless script在ElasticSearch 中的使用的一些问题
https://www.jianshu.com/p/7518dccc0bcf
3. 临场考试重要tips:
建议考前一定要看,对于熟悉考试环境很有帮助。
不要问为什么。我能说我这次考试几乎就差点栽在了没有大屏幕显示器上,用笔记本上的小屏幕去参加考试,3小时下来,几乎把我眼睛都看瞎了。
考试环境是用Chrome浏览器链接到一个虚拟桌面上,但不知是不是刻意的限制,那个虚拟桌面的分辨率很低,从笔记本的小屏幕上看考题几乎是模糊一片。加上考官会要求你不能离电脑做的太近,这就造成题目更加看的不是很清楚。
我这次就因为经常凑近屏幕看考题,被考官中断考试3次,最后警告说坐得如果再不端正,就terminate我的考试。于是我在及其不舒服的坐姿,以及朦朦胧胧的视觉效果中,花了2个小时才完成了考试。只能说幸亏考前准备的充足,几乎做到可以完全摆脱文档,否则如果还要用哪个那么低的分辨率的虚拟桌面来查阅文档,会是雪上加霜。
但我可以肯定elastic和Kibana这两个账号的密码是设置正确了的。
考试中这个问题困扰了我一段时间,乃至不得不跳过先做其他的题目。等做完所有的考题再回头来想,灵机一动,图形界面不行,那干嘛不试试直接调用 Xpack API呢。最后通过命令行解决完成这个RBAC赋权的题目。
4. 重要题目回顾
◊ Shard allocation filter配置,ES集群冷热配置,最终目标是确保分片在规定的节点上,并保证集群是Green
◊ 启用ES的安全配置功能,修改内置账号的密码,创建一个第三方的用户,并且为该用户赋权。
◊ 聚合。找出每个月的最大震级和深度
◊ 一个布尔查询,要求高亮查询结果,并且对指定关键字进行排序。注意match phrase
◊ 一个多字段查询,返回的评分结果是各个字段的总和。注意boost针对特定索引的作用。
◊ Pipeline + Update_by_query, 对某个索性增加一个字段,该字段的内容是其他3个字段的连接
◊ Reindex+自定义分词,确保对两个不同的term,返回的评分和结果数量是一致的。重点是Char_filter, 和自定义mapping。
◊ Dynamic mapping template
5. 后记
如果这一步也值得骄傲的话,那是比较渺小的。考过了只能说明实践能力强,最多还能说明学习能力强。离成为一个ES专家还有很多的距离,「学无止境」,更高的目标还在前面。
把中华石衫的视频中的理论部分在深入研究一下,对于提高对 ES 的整体理解很有帮助。
源码解析和实战这本书需要攻读。
把所学的运用到工作实践和给客户的设计中,「学以致用」这个是永远的“王道”。
争取拿下Kibana Data analyst认证。因为运维自动化平台的建设中的重点之一就是数据可视化,取得这个认证也是检验自己学识的体现。