确实有很久都没写博客了,这篇题目笔记是自己经历的,也有自己思考的,已经有很长时间才算写完这30道。说说自己的状况吧,首先说为什么是OpenStack运维面试呢,因为之前在一家OpenStack云计算公司实习,时间不长,只有20天,我就离职了,是我自己主动要辞的。说实话,还是不错了,实习4K,周末双休,不加班,不值夜班,坐办公室学习,这简直超乎了我的意料,确实跟我想象的运维工程师不太一样。这种上班的感觉还是挺不错的,我相信我过不了多久做下一份工作的时候,回忆起来肯定觉得这简直太幸福了。我面试准备了那么久,好不容易找到一个工资不错的公司,虽然只是实习,还是一个朝气蓬勃的行业和公司,说离开就离开估计是谁都想不通。唉,其实我本意也不想离开,但是我“闯祸了”,呵呵,倒不是技术上,而是说话上,还不是口头,只是邮件。事情是这样的,我也想吐槽,这真的很小气。

   本来让我当天去偏僻的“DB”甲方公司看项目的,恰好那天让我去搬防火墙(真尼玛重!),那天回来后,通知我还让我去,我什么都没准备啊,第二天跑了好远的路,每天的开销不小,那一天啥事都没有做,我连网都上不了。说是“看”,还算有点小见识,但是我真的感觉还不会,也确实没啥技术含量,就想下次回公司修炼一段时间再说,就是不来了。恰好那一周我给自己步骤的任务是一周内完成OpenStack平台的搭建,各种事情的耽搁让我有点慌,那天很早就下班,我跟我的上级说我不去甲方了,但是没有跟项目经理说(其实我不想当面说的)。元旦回来,星期二我就发邮件说“我不去了,有见识但技术上没啥收获”,就这么简短的一句话,呵呵,那些所谓的领导就炸了,觉得我不服从管理,好高骛远,狂妄自大吧,项目经理也回复我了,感觉是生气的样子。这几天,恰好招我进来的HR休假了吧,部门老大以及直属上级都找我谈话,我也知道自己说话确实不太小心,这2个人还是没怎么批评我,还是对我挺好的,帮我洗黑,说实话,我感谢!

   平静的过了几天,我以为没事了,没想到,HR回来倒找我了,想让我转岗,觉得我不合适做运维,沟通能力不好,性格不合,怎么可能呀,我花了那么多时间,从网络转运维,费了多少力气,如今再让我转软件,简直天方夜谭,貌似着是委婉赶我走的意思。整个下午我什么事情都不想做,想想自己,为何命运多舛,之前面试的时候还有1家公司给我offer了,问的比较难,还好答得中规中矩,还跟我签三方协议,但是工资太低,我就去了openstack公司,期间实习的时候还有2家公司面试都拒了。唉,没想到,很快就又要面试了,我把公司电脑上所有东西都删了,原来什么样就是什么样,跟带我的人说了句我走了,就离开了,那天我哭了,有点小难过,只能说准备春招吧。

   回来了堕落了好久,完全不想学习,接下来的简历我也不知道怎么准备了,反正又是大变化。毕业设计也是特么难搞,说句不好听的,我尼玛过年都有人问有女朋友了没,真没有啊,混得垃圾呀,身边比我小的也结婚了,咱还是...压力大呀

   技术、社交、生活,学的东西太多了,烦!下面好好准备春招吧,不投实习岗位了!




1、如何删除一个文本中的空白行,比如一行有字,然后一行空白,再有一行字?

[root@www]cat 1.txt

===========================

yhc 


is 


very 


good !

===========================

答:sed  '/^$/d' 1.txt   ##注意这里不能加-n静默选项。另外可以使用cat 1.txt|tr "\n" " " 让它变成一行英语语句


2、请解释下怎么进行location匹配的规则?(我觉得这个非常难以理解,多亏有视频啊!看懂这个,对Nginx自信爆涨)

答:精确匹配>普通匹配>正则匹配

分析:首先是URI解析,找到第一个精确匹配的,如果命中精确匹配,那么彻底结束了,不再进行下面的location匹配了,如果没有精确命中,那么就去寻找多个普通匹配的,普通匹配跟编辑location语句的顺序没有关系,如果普通匹配命中多个,那么记忆匹配最长的(比如/aaa/bbb/)的结果,如果命中一个,那么也记忆普通匹配的结果(注意,这里并未彻底结束),无论普通匹配有无命中,都要去寻找正则匹配,正则匹配跟编辑location的顺序有关(一定是正则1不满足才找正则2),如果第一个正则匹配成功,则立即跳出,返回该正则匹配下的结果,也彻底结束了,如果正则一个都没有匹配成功,则返回前面普通匹配记忆的结果。

参考视频:(燕十八location流程图解) http://www.icoolxue.com/play/7027


3、Nginx如何拒绝某一个人来访问?(对比上篇博客提到的apache只允许某个IP访问)

答:在location上下文中添加If语句,如果$remote_addr是某个IP的话,直接返回403 forbidden

-----------------------------------------------------------------------------------------

location / {

root html;

index index.php index.html;

if ($remote_addr = 192.168.1.100) {         ##if 空格 (条件),不要忘了空格

return 403;

}

}

------------------------------------------------------------------------------------------


4、当浏览器访问一个Nginx不存在的页面时,如何返回404页面?(感觉这些问题很常见,但是没怎么想过具体怎么做)

答:在location字段添加if语句,如果请求的文件名不存在,rewrite重写到我们人为定义的404页面,但是必须要加break,不再进行下一轮UEI的匹配。rewrite到新的uri后进入另外一个location,恰好这个location也有rewrite,再次重写的uri又调回原来的location,这样就是死循环了,最多执行10次,然后报500错误。本例中$document_root$fastcgi_script_name是客户端传过来的参数(比如test.html),而不是我们服务端定义的网页文档!

-----------------------------------------------------------------------------------------------------------

location / {

root html;

index index.php index.html;

if (!-e $document_root$fastcgi_script_name){

rewrite ^.*$ /404.html break;  ##这条语句表示任意文件名到/usr/local/nginx/html/404.html

}

}

-----------------------------------------------------------------------------------------------------------


5、用什么命令可以看到整个目录下的内容。

答:tree /usr/local/svn/svndata/


6、介绍下prefork和worker?(唉,这一点表述的不好,记不住了,event模式应该是nginx和apache都有的,都是一个进程处理多个请求)

答:(1)Prefork MPM实现了一个非线程的、预派生的web服务器。它在Apache启动之初,root控制进程在最初建立“StartServers”个子进程后,

为了满足MinSpareServers设置的需要创建一个进程,等待一秒钟,继续创建两个,再等待一秒钟,继续创建四个……如此按指数级增加创建的进程数,最多达到每秒32个,直到满足MinSpareServers设置的值为止。这种模式可以不必在请求到来时再产生新的进程,从而减小了系统开销以增加性能。然后等待连接;可以减少频繁创建和销毁进程的开销,每个子进程只有一个线程,在一个时间点内,只能处理一个请求。这是一个成熟稳定,可以兼容新老模块,也不需要担心线程安全问题,但是一个进程相对占用资源,消耗大量内存,不擅长处理高并发的场景。

(2)worker使用了多进程和多线程的混合模式,worker模式也同样会先预派生一些子进程,然后每个子进程创建一些线程,同时包括一个监听线程,每个请求过来会被分配到一个线程来服务。线程比起进程会更轻量,因为线程是通过共享父进程的内存空间,因此,内存的占用会减少一些,在高并发的场景下会比prefork有更多可用的线程,表现会更优秀一些;另外,如果一个线程出现了问题也会导致同一进程下的线程出现问题,如果是多个线程出现问题,也只是影响Apache的一部分,而不是全部。由于用到多进程多线程,需要考虑到线程的安全了。

参考文档:http://www.mamicode.com/info-detail-1212491.html


7、Nginx的master进程和worker进程工作原理?

答:Nginx采用异步非阻塞的方式来处理网络事件,类似于Libevent。Nginx服务一启动后,master进程先建好需要listen的socket后,然后再fork出多个worker子进程,这样每个worker进程都可以去accept这个socket。当一个client连接到来时,所有accept的worker进程都会受到通知,但只有一个进程可以accept成功,其它的则会accept失败。Nginx提供了一把共享锁accept_mutex来保证同一时刻只有一个worker进程在accept连接,从而解决惊群问题。当一个worker进程accept这个连接后,就开始读取请求,解析请求,处理请求,产生数据后,再返回给客户端,最后才断开连接,这样一个完整的请求就结束了。

参考文档:http://blog.chinaunix.net/uid-24517549-id-3977650.html


8、描述系统的启动过程?当用户登录上系统后,linux系统为用户做了什么任务?(拓麻的这个问题我吞吞吐吐的才说出好几个,以前没思考过这些问题,谢天谢地终于问了我那个背了很久的启动过程,还好避免了悲剧)

答:(1)读取/etc/passwd文件进行身份验证。

(2)将用户登录信息写入安全日志里面。

(3)启动该用户的环境变量 (然后引申出环境变量的一系列问题,我不知道)

(4)


9、如何让域名拥有多个IP地址?客户端来解析的时候,返回的是哪条记录?(后面这个问题我不清楚,当时猜测是第一条,现在想起来,真尼玛×××,这特么不就是DNS轮询吗?肯定是一个客户端返回第一个,另一个客户端返回第二个,然后这样周期性的顺序调度)

答:DNS给域名设置多条主机A记录即可。不同客户端可能返回不同记录,根据轮询指定哪个IP地址返回给哪些客户端。


10、说说TCP的拥塞控制。(果然是云计算企业呀,毕竟互联网,拓麻的这个问题劳资一时想不起来呀,我还写的精通TCP/IP,其实这个问题

我整理过,表现不太完美)

答:(1)慢启动算法作用在TCP数据传输的开始阶段,当主机开始发送数据时,因为不知道网络中的负荷情况,如果立即发送大量的数据,有可能会引起网络的拥塞。因此,TCP采用试探的方法,逐渐增大拥塞窗口。通常在刚开始发送数据报文段时,先将拥塞窗口cwnd设置为一个TCP最大段长度MSS的值。而在每收到N个数据报文段的确认后,cwnd就增加一个MSS的数值(就是增大一倍,所以是指数型)。这样就可以逐渐增大发送端的拥塞窗口,使数据注入网络的速率比较合理。

(2)为了防止拥塞窗口增长过快而引起网络拥塞,TCP还需要设置一个慢启动阈值ssthresh,当拥塞窗口的值增加到ssthresh时,就要减缓拥塞窗口的增长速度,具体的做法是每经过一个RTT,拥塞窗口cwnd的值加1(单位为MSS),这样就可以使cwnd按线性规律缓慢增长

(3)快速重传算法的基本思想是:接收端每收到一个失序的数据报文段后就立即发出重复确认,以便更早地通知发送端有丢包的情况发生。

(4)快速恢复是配合快速重传使用的算法,其基本思想是:当发送端连续收到三个重复确认时,就将慢启动阈值ssthresh减半,以预防网络拥塞的发生,并且将拥塞窗口cwnd的值置为减半后的ssthresh,然后开始执行拥塞避免算法,使得cwnd缓慢地加性增大。

参考文档:https://www.nowcoder.com/discuss/6175


11、用过啥抓包软件?如何判断网络出现拥塞、***、延迟以及各种异常情况?TCP的窗口在哪?(答得不好,根据序列号来判断是我瞎说的,还好面试官原谅我没经验)

答:wireshark、tcpdump。

(1)分析是否有大量数据包的序列号混乱。

(2)分析是否有广播地址存在。

(3)分析延迟多不多。(但是感觉不容易,因为一般是看不出来延迟的,只是观测一个源IP地址的数据包发出请求,然后看什么位置目的端进行响应了该请求)


12、如果我是小白,什么叫做反向代理,Nginx的反向代理和负载均衡有什么区别吗?Nginx根据什么来进行反向代理到后端服务器。(其实最后

一个问题当时除了URI根本答不出来其他的)

答:反向代理:代理服务器监听外网上的客户端发出来的请求,并把该请求转发给内网后台的真实服务器进行处理,处理完毕后,先经过代理服务器缓存一份,而后,再通过代理服务器封装http应答报文返回给客户端。Nginx的通过location正则匹配URI代理到后端的服务器,并且在负载均衡upstream模块,根据域名和端口代理到多台后端服务器。(域名和端口这个怎么能叫问题呢)

区别:(1)Nginx的反向代理和负载均衡没有太大区别,基本的配置指令都一样,但是反向代理提供缓存功能,所以可以添加一些缓存命令行。

(2)代理到后端一台服务器就可以称之为反向代理,代理到后端多台服务器就称为负载均衡,负载均衡是每台机器都会分担一些处理请求的压力,负载均衡完全可以认为是反向代理。

参考文档:https://www.oschina.net/question/126236_119223


13、为什么慢启动算法中拥塞窗口要按指数级进行增长呢?拥塞窗口到底代表什么意思?(以前真没有好好想过拥塞控制,一旦自己面试遇到了,知道这玩意重要了)

答:拥塞窗口就是发送方在某次会话交互过程中,在一个RTT(round trip time)周期内,能够发送的TCP报文段的数量多少。

原因:(1)当TCP连接刚刚建立,准备要数据传输的时候,由于不知道网络的负载情况,所以要去试探性检测,只发出很少的数据包,拥塞窗口的值设的很小,我每发出N个数据帧,如果网络不拥塞丢包,那么就应该返回给我N个确认包,而后我的拥塞窗口就会在以前的基础上增大一倍,说明我之前发出N个数据包是没有问题的,不会堵塞,同时增大一倍提高发送效率。

(2)那么每增大一倍,拥塞窗口的大小就是按着指数级别增长了。当增大到一定程度上,必须减缓发送速率,于是使用拥塞避免算法,让拥塞窗口可以线性增长,每收到一个确认,窗口就增大1个单位,当达到最大MSS(max segment size)时,拥塞窗口大小骤降,变为原来慢启动算法时候的窗口大小,通常为1,并且门限值变为MSS的一半,而后,如此往复。


14、在OpenStack中,用户PUT和GET都是同一个对象,说说存储节点Swift存取的工作原理?

答:(1)上传文件时,PUT请求经过负载均衡机器通过一致性哈希算法随机选择一台代理服务器,再将请求转发数据存储节点,代理服务器通过查找本地的Ring(环)文件,包括account环、container环、object环选择3个不同的区域(zone),zone保证了数据的副本不会都放在同一个存储节点上,从而避免了单点故障的可能性,可以使用3个磁盘来替代3个节点。而后,向3个数据节点都进行写操作,只有当至少2个节点都确认写成功后,再向用户返回写成功信息。

(2)而后,当用户需要get请求该对象(对象=元数据+内容)下载文件时,也需要经过负载均衡随机挑选一台代理服务器,代理服务器上的环文件能

查询到这个文件存储在哪三个节点中,然后同时向后端查询,当前仅当至少2个存储节点表示可以提供该文件,然后代理服务器才从中选择一个节点下载文件。


15、云主机实例1和云主机实例2彼此通信,基于VXLAN的工作原理?(VTEP是Vxlan tunnel end point,VNI是vxlan的network identifier,虚拟机通信还可以

linux bridge)

答:(1)VM1要向VM2发送数据前,必须要知道VM2的MAC地址,其获取过程如下:

         1、VM1发送ARP请求包,请求192.168.0.101[VM2_IP]的MAC地址;

         2、ARP请求包被VTEP1封装成多播包,发给VNI=864的多播组;

         3、所有的VTEP接收此多播包,并添加(VNI–VTEP1–VM1_MAC Address)映射关系到自己的VXLAN表中;

         4、目的主机上的VTEP2接收到多播包后将其解开,并向本主机上VNI=864的所有虚拟机发送广播包;

         5、VM2看到了ARP包后,回应了自己的MAC地址;

         6、VTEP2再次封装回应的单播包,通过路由发给VTEP1;

         7、VTEP1解包,并将包传给VM1,则最终获取了VM2的MAC地址;

         8、VTEP1将(VNI–VTEP2–VM2_MAC Address)映射关系添加到自己的VXLAN表中;

(2)VM1获知VM2的MAC地址后,发送数据包,过程如下:

1、  VM1发送IP数据包到VM2,即192.168.0.100 到 192.168.0.101;

2、  VTEP1查找自己的VXLAN表知道要发给VTEP2,然后依次封装以下数据包头;

a)VXLAN包头,VNI=864;

b)标准UDP包头,校验和checksum为0x0000,目标端口号4789;

c)标准IP包头,目标地址为VTEP2的IP地址,协议号设为0x11表面为UDP包。

d)标准MAC数据包,目标地址为下一跳设备(虚拟路由器)的MAC地址00:10:11:FE:D8:D2,可路由到目标隧道端VTEP2。

3、  VTEP2接收数据包,根据UDP的destination端口找到VXLAN数据包。接着查找所有所在VXLAN的VNI为864的端口组,找到VM2的

4、  VM2接收并处理数据包,拿到Payload数据.(vxlan有2^24个逻辑网络,所以称为扩展vlan)

参考文档:http://www.aboutyun.com/thread-11189-1-1.html


16、在OpenStack中,介绍什么是浮动IP?什么是元数据?

答:(1)OpenStack引入了一个叫浮动ip的概念,浮动ip是一些可以从外部访问的ip列表,通常从isp哪里买来的。浮动ip缺省不会自动赋给实例,用户需要手动从地址池里抓取然后赋给实例。一旦用户抓去后,他就变成这个ip的所有者,可以随意赋给自己拥有的其他实例。如果实例死掉了的话,用户也不会失去这个浮动ip,可以随时赋给其他实例。暂时不支持为了负载均衡多实例共享一个浮动ip。动IP地址可以让实例使用私有网络连接到外部网络,例如互联网。而对于固定ip来说,实例启动后获得的ip是自动的,不能指定某一个。所以当一个VM歇菜了,再启动也许固定ip就换了一个。

(2)系统管理员可以配置多个浮动ip池,这个ip池不能指定租户,每个用户都可以去抓取。多浮动ip池是为了考虑不同的isp服务提供商,免得某一个isp出故障带来麻烦。如果运行的是企业云,浮动ip池就是那些openstack外的数据中心都能访问到的ip。浮动ip机制给云用户提供了很多灵活性,也给系统管理员减少了安全风险,尽量只让OpenStack软件去改防火墙会安全些。

参考文档:http://www.cnblogs.com/wcxy/p/3402006.html

元数据(Metadata):又称中继数据,描述为数据的数据,主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。


17、讲讲Opnstack启动虚拟机实例后,虚拟机的状态是怎么变化的?

答:(1)管理员发出创建虚拟机的命令,决定从镜像文件或是快照文件进行启动。

(2)当创建后,虚拟机实例进入Build状态,任务状态是Spawning孵化。

(3)期间,将会从控制节点上的Glance组件把相应的镜像文件从中下载到Nova计算节点,并进行一些虚拟机的初始参数配置,如内存、CPU、磁盘空间。

(4)当一切正常后,虚拟机将会将会进入Active状态,此后,用户便可以使用云主机了。创建实例的时间一般由镜像文件的大小、网络传输带宽、以及创建的Hypervisor磁盘性能大小。

(5)虚拟机创建完毕,可以经过Horzion的web界面进行管理,也可以基于Python Nova client的命令行管理。


18、说说OpenStakc各组件的作用?

答:(1)keystone负责为每个服务进行认证、授权、租户管理、项目权限和配额以及服务目录管理。

(2)Glance负责提供Nova创建实例所需要的镜像文件,镜像格式如raw、qcow2。

(3)Nova负责云主机实例生命周期的管理,以及宿主机资源调度;Nova还决定了虚拟机实例在哪一台Hypervisior物理机上运行。

(4)Horzion将用户的http请求转换为RESTful请求,然后将RESTful请求分发给Nova API,进行实例的创建。

(5)cinder提供块存储,目的是用来做持久存储的,典型软件如ceph;swift提供对象存储,用来文件共享的。

(6)neutron服务为云主机实例提供网络服务,比如私有IP的地址分配问题,访问外网的浮动IP、NAT路由、防火墙,以及云主机实例彼此之间的vxlan通信。


19、谈谈你对OpentStack的认识?

答:OpenStack是一个分布式系统,完成一件事,基本上都会涉及到一系列的组件,这些组件协同工作,在云中扮演着各种角色。(然后就拿上面各组件的作用说,原理我看就算了,一般人说不清楚,对方也听不懂,呵呵)


20、概述创建虚拟机的流程。(这个问题,非常值得思考,很容易被问到!)

答:(1)Horizon通过Keystone获取nova-Compute组件的的访问地址(即URL),并获取令牌token。

(2)Horizion携带授权令牌,发送创建虚拟机指令。

(3)Nova-compute组件通过glance-api下载虚拟机镜像,glance镜像中有缓存机制,通常把缓存文件放入名为_base的目录,如果_base缓存没有镜像文件

,那么就会从glance下载镜像到base缓存,然后再从base缓存通过TCP/IP网络复制到计算节点云主机实例下的镜像目录里。

(4)glance检索后端镜像,glance后端存储不一定要使用swift,只要是存放镜像文件的系统都可以。

(5)获取网络信息,决定虚拟机的网络模式以及建立网络连接。

(6)nova-compute发送启动虚拟机指令,至此经过虚拟机服务任务状态的变化,正常过后创建即可完成。


21、如果我有多个计算节点,那么我启动一个云主机实例,那么我怎么知道该实例在哪台计算节点上运行呢?(嗯...因缺丝婷)

答:命令查看...



22、PXE的工作原理?

答:实现自动获取IP网络安装linux是这样的:客启端PXE网卡启动-->通过Bootp协议广播dhcp请求-->DHCP服务器-->获取IP,TFTP服务器地址-->从TFTP上下载 pxelinux.0以及系统内核文件vmlinuz、initrd.img-->启动系统-->(到指定url去下载ks.cfg文件-->根据ks.cfg文件去NFS/HTTP/FTP服务器自动下载软件包)安装系统-->完成安装。

DHCP server为客户端分配ip并提供TFTP服务器地址及PXE启动文件位置,TFTP server为客户端提供引导文件



23、创建网络时,Neutron做了什么?

答:创建虚拟机时,Neutron会根据选择的网络,首先给虚拟机分配一个tap设备作为虚拟的网卡,命名为tapXXX , XXX是一串数字和字母的组合,用来标识的,譬如tap8eaf6158-80,

在系统中使用ifconfig命令可以看到新增了这个网口。建立一个Linux网桥,命名为

qbr8eaf6158-80。把上面那个新增的tap网口接在这个qbr的交换机上,使用命令“brctl

show”可以列出存在的网桥设备和端口。现在,虚拟机上已经有了一个接在虚拟网桥上的网

口,接下来是如何把这个网口与OVS的br-tun连接起来。

    这时会有一对veth设备出现。veth是Linux中的虚拟网络设备,总是成对出现,一对veth设备的数据总是从一个流人,

从另一个流出。Neut1-on会建立一对分别命名为qvbXXX

和qvoXXX的veth设备,并且把它们分别连接到前面提到的qbr8eaf6158和br-int这两个交

换机上。可以使用命令“brctl show”和“ovs-vsctl show”分别查询qbrXXX和br-int这两个

交换机是否已经串联起来了。


23、saltstack中,master和minion各自干了什么事?

答:master:存放所有minion的公钥、监听mininon、发送命令给minion、存放一些为minion准备的配置文件,如state、存放一些为minion准备的files和数据,如apache2.cnf,pillar

minion:连接master、监听master发送的commands、从master下载state并且执行state、可以执行在minion上执行state,用salt-call,当然这个一般多数用于调试


24、SSH的工作原理?

答:(1)SSH可以基于账户密码进行认证;SSH可以基于密钥对进行认证

(2)基于密钥的安全认证就是本机提供一对公钥和私钥,把公钥复制一份放在远程服务器上面,远程服务器的sshd进程监听22号端口。当向远程服务器发起请求的时候,本机会把公钥发送给远程服务器,远程服务器会在家目录下检查公钥是否一致,如果一致,就会把应答数据包使用公钥加密后返回给客户端,客户端再使用自己的私钥进行解密,得到解密后的数据包,其中解密后的数据包含有会话密钥,而后使用会话密钥进行通信。


25、Zabbix有何特性?

答:数据收集、灵活的阈值定义、高级告警设置、实时绘图、扩展的图形化展示、历史数据存储、监控主机使用模板、自动发现网络设备、提供Zabbix API。


26、Zabiix包含了哪几个进程,各有什么作用?

答:(1)Zabbix_agentd:客户端守护进程,收集本机的数据

(2)Zabbix_get:Server端用于主动获取被监控端数据

(3)Zabbix_sender:被监控端结合trapper进程,主动发送监控项收集的数据到Server或Proxy端

(4)Zabbix_server:服务端的守护进程,接受其他进程发过来的数据

(5)Zabbix_proxy:代理守护进程,功能类似于Server,不过它只是一个中转站,把收集到的数据再提交给Server,跨机房和地区需要用到



27、zabbix的server端如何去监控agent端?

答:原理:每一个item都有其专用的key,zabbix服务器与被监控端进行通信时就使用相应的协议或机制去质询被监控端这个key的值,被监控端就调用此key所对应的脚本去获取相应的数据并返回给服务端。


28、监控中,历史数据和历史趋势数据有何区别?

答:历史数据:指的是采样的数据。指定存储在数据库中的天数,如果超过该阈值,那么会被housekeeper进程给清理掉

历史趋势数据:指的是每小时的最大值、最小值、平均值以及各种统计。


29、说一下,在zabbix监控某个主机的时候,人为应该部署哪些步骤?

答:创建主机、附加模板,修改item监控项,创建图形(关联Item),定义触发器,创建用户,创建事件、创建action


30、如果有100台服务器,每台服务器有30个监控项,每个监控项60秒刷新一次,需要多大的硬盘呢?

答:随着监控项的数量增多以及监控值的实时刷新,数据库也会越来越庞大,那么影响Zabbix硬盘大小的因素有:

(1)监控值每秒中存储的数据量:100x30/60=50个  

(2)历史记录保存时间

(3)趋势数据保存时间

(4)事件记录保存时间 (报警、恢复)

(5)数据库引擎以及数据类型(整型、浮点型、字符型)

综上:数据库硬盘空间=配置文件大小+历史记录+趋势记录+事件记录