以下分模块给大家收集整理的运维网络云计算相关的面试题,持续更新中,若有错误,欢迎批评指正,谢谢各位大佬
网络部分
交换机的工作原理
初始状态,MAC地址学习,广播未知数据帧,接收方回应,交换机实现单播通讯
tcp/udp的区别
TCP:面向连接提供可靠传输
UDP:面向无连接提供不可靠传输,适合传输少量数据,耗时短,延时小的业务流量
TCP的可靠性怎么体现
TCP主要有一下三个方面保证他的可靠传输性:
1、序列号、确认应答、超时重传
2、窗口控制与快速重传(重复确认应答)
3、拥塞机制
TCP头部中确认标识位有什么用?
用于对收到的报文进行应答,确认报文已经收到
子网掩码的作用是什么?
子网掩码是一个32位地址,是与IP地址结合使用的一种技术。它的主要作用有两个,一是用于屏蔽IP地址的一部分以区别网络标识和主机标识,并说明该IP地址是在局域网上,还是在远程网上。二是用于将一个大的IP网络划分为若干小的子网络。
网关的作用是什么?
网关(Gateway)又称网间连接器、协议转换器。网关在传输层上以实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。
数据在进行二层和三层封装之前主机需要了解哪些信息
目标端的ip地址, 目标ip的下一跳的MAC地址
路由器选择最优路由的顺序是什么?
先比较路由优先级,优先级值越小越优。 如果优先级相同的情况下,比较路由cost值。优选cost值比较小的路由。如果cost相同的,则形成负载
ARP是第几层协议,其作用是什么
ARP是地址解析协议,属于网络层,作用是根据IP地址解析获得对应的MAC地址
应用层协议端口
FTP:20数据传输,21控制端口
SSH:安全命令行协议 22
telnet :23
DNS:53
http:80
https:443
SMTP邮件传输协议:25
什么是静态路由,特点是什么?
静态路由是手动配置,配置方便,对系统要求低(不需要发送报文进行维护),适用于拓扑结构简单并且稳定的小型网络。
以华为设备为例,如何实现对路由器,交换机的远程管理
设备IP可达,在设备上启用远程登录,设置认证模式如AAA或者password模式,使用Telnet和SSH登录验证
TTL是什么?作用是什么
TTL指的是数据包的生存周期,TTL值为0时路由器会丢弃该数据包,用于防止网络层的环路
路由器与三层交换机有什么区别
①在设计的功能上不同:主要功能是路由寻址,更适合不同网络之间,比如局域网和广域网之间,不同的协议之间
②应用环境不同:
三层交换机的路由功能比较简单,更多的应用在局域网内部的通信上,主要功能还是数据交换
③实现方式不同:路由器实现三层路由是基于软件的实现方式
什么是华为交换机里的Hybird端口
用于连接交换机或主机,允许多个VLAN通过, 发送数据帧时根据配置灵活带tag或不带tag。实现access和trunk
路由器应用中的NAT指的是什么?有哪几种类型?
NAT即网络地址转换,私网IP和公网IP的转换。
有静态NAT,动态NAT,NAPT,Easy IP,NAT Server
VPN使用了哪些技术?
关键技术:隧道技术,身份认证,数据加密与验证
简述防火墙的作用
实现网络攻击的防范,访问控制,身份验证,数据加密,网络地址转换等功能
防火墙数据转发原理
可以根据源目ip,源目端口,协议进行转发
防火墙安全策略匹配原则
由上往下,由精细到粗略
简述WLAN组网方式
二层直连组网,二层旁挂组网,三层直连组网,三层旁挂组网
WLAN漫游
设备连接数据同一个SSID的wifi下范围下,不通AP覆盖范围内,网络不会断
Ospf:
路由器使用的最广泛的动态路由协议之一,全称是开放式最短路径优先协议
五种数据包
hello包:标志着彼此邻居关系的建立
DBD包:关系建立完成后,路由器会互相向对方发送DBD包,以大致查阅对方链路状态数据库LSDB的内容
LSR包:链路状态请求包,收到对方发来的包对照以后,将自己没有的包发送给对方,请求回复
LSU包:链路状态更新包,将缺少的LSA以LSU的形式发送给对方
LSACK包:收到对方的包以后,给与回应
OSPF建立邻居的状态有哪些?
7个状态
down(发送hello包之前) 、init(发送一个hello包之后)、 2-way(收到包含自己router-id的hello包后,标志着邻居关系的建立)、ex-start(预启动状态)、ex-change(互相交换包含链路状态信息)、loding(相互请求对方给自己没有的LSA)、Full(标志着邻接关系建立)
工作过程
1、互相发送hello包,建立、维护、更新邻居关系
2、互相发送和接受LSA,直到LSDB同步,建立邻接关系
3、基于收到的拓扑,以自己为中心生成结构图,然后根据SPF算法生成最短路径树
OSPF为什么会卡在INIT/2-way状态
可能是设备之间出现单向链路故障的情况
OSPF为什么会卡在e-start状态
OSPF发送的DD报文,两端的MTU不一
OSPF没有形成Full状态的原因
可能是接口网络类型不一致,区域不一致,版本不一致,认证不通过,MTU不一致,底层不通,或者是特殊区域标志不一样
Vlan:虚拟局域网技术
VLAN划分的好处?
提供更灵活的网络管理和更好的网络性能
逻辑隔离:提供了更高的安全性和隔离性,可以有效控制网络中的访问权限和流量流向
网络优化:将设备组织成不同的VLAN可以帮助优化网络性能。
管理简化:通过VLAN,管理员可以更容易地管理和配置网络。
说说什么是本地VLAN?
在单个交换机上配置的VLAN,仅在该交换机内部有效的虚拟局域网,无法跨越多个交换机进行通信,以实现隔离、安全性和性能优化。
默认以太网VLAN是什么:所有接口都属于同一个VLAN默认VLAN或VLAN 1交换机的出厂配置,出于安全和管理的考虑,建议对默认以太网VLAN进行一些配置调整,改变默认VLAN ID:隔离默认VLAN,禁用不需要的端口
VLAN有三种接口类型:Access接口,Trunk接口,Hybrid接口=trunk
Trunk链路和Access链路的区别
A连接终端设备,只允许一个VLAN的数据帧通过,不携带Tag
T连接交换机, 允许多个VLAN通过, 除了PVID一致的VLAN,其余均携带Tag
静态VLAN:
手动配置来创建和管理的虚拟局域网,通常适用于小型或较简单的网络环境,VLAN的数量相对较少且变化较少
动态VLAN:
使用特定协议或技术自动创建和管理的虚拟局域网,根据设备的特征或网络策略动态地将设备分配到不同的VLAN中。
常见的动态VLAN技术:
VLAN管理策略协议,VLAN注册协议,优点:自动化和灵活性,简化网络管理,增强安全性
列举出2种能在单条链路上传输多个vlan的协议
IEEE 802.1Q,广泛应用于以太网网络中,最多支持4096个VLAN,
Cisco Inter-Switch Link(ISL)ISL允许在单个物理链路上传输多个VLAN的数据帧
Vxlan
虚拟扩展局域网,解决了现有VLAN技术无法满足大二层网络需求的问题。引入一个UDP格式的外层隧道作为数据链路层
生成树(STP):
STP协议:防止交换机冗余链路产生的环路,避免了广播风暴,大量占用交换机的资源。
广播风暴危害
1.影响网络的效率
2.占用了大量的网络带宽
3.MAC地址会出现震荡(漂移)
4.数据无法正常传递
5.网络会瘫痪
STP生成树的操作
选举一个根桥
每个非根交换机选举一个根端口
每个网段选举一个指定端口
阻塞非根,非指定端口
Dns 域名解析
DNS域名解析的是什么?
把我们人能容易理解的东西(语言字符)转换转换成计算机容易识别的数字信息,即从一个服务器网址到IP地址的映射。主机 ------> 本地域名服务器:一般都是采用递归查询
Dhcp
DHCP实现了网络参数配置的自动化,降低客户端的配置和维护成本。
集中对用户IP地址进行动态管理和配置,属于C/S架构。
协议报文基于UDP的方式进行交互
DHCP相对于手工配置有如下优点:
效率高,灵活性强,易于管理
Bgp
BGP是一种基于策略的路由选择协议,BGP在确定最佳路径时考虑的不是速度,而是让AS能够根据多种BGP属性来控制数据流的传输
BGP用tcp是可靠传输,在可靠的链路上不需要使用定期更新,所以BGP使用触发更新。类似于OSPF和ISIS路由协议的Hello报文
如何理解簇的概念?
答:路由反射器及其客户机的集合,一台客户机不一定属于一个簇 (即一台客户机可以属于多个簇)
关于BGP属性为什么这么分类
现网中有各种各样的场景和需求,所以要对BGP的各个属性进行分类,用于路由的传递和控制选路的
Isis
IS-IS属于内部网关路由协议用于自治系统内部是一种链路状态协议,使用最短路径优先算法(SPF)进行路由计算,与TCP/IP网络中的OSPF协议非常相似。isis封装在二层。
vvisis路由计算的过程
建立邻居关系、链路信息交换,路由计算
ISIS路由器的三种类型
Level-1路由器
只能与同一区域的 Level-1 和 Level-1-2 路由器形成邻居关系
只拥有Level-1 的链路状态数据库
②、LSDB中只拥有本区域路由器LSP
③、路由表里没有其他区域的路由信息
④、路由表里都有一条默认路由,下一跳是指向到Level-1-2路由器
Level-2路由器
可以与相同或不同Level-2路由器 或者不同区域的 Level-1-2 路由器形成邻居关系。
Level-2的路由器只有Level-2的LSDB
②、LSDB中由骨干区域路由器的LSP,但没有Level-1 路由器产生的LSP
③、路由表里有整个网络的路由信息
Level-1-2路由器
负责维护两个LSDB,不同区域间,只能建立Level-2的邻接关系
Level-1-2 路由器同时拥有Level-2和Level-1的链路状态数据库(LSDB)
②、Level-1数据库包含本区域的LSP,Level-2数据库包含骨干区域LSP。
③、在自己Level-1的LSP中设置了ATT比特位为1
④、路由表里有整个网络的路由信息
IS-IS支持的网络类型
①点对点网络类型(P2P)
②广播多路访问网络类型(Broadcast Multiple Access)
注:在帧中继等特殊环境下,可以通过创建子接口支持P2P的网络类型
影响 ISIS 邻居关系建立的因素(有8 条)
1.level:level-1 不能和 level-2 建立邻居
2.system-id:标识一台路由器,具有唯一性。
3.认证
云计算
使用云计算有下列优点:
1.备份和存储
2.强大的服务器功能
3.SaaS(软件即服务)
4.信息技术沙盒功能
5.提高生产力
6.具有成本效益,并节省时间
哪些平台用于大规模云计算?
用于大规模云计算的平台包括:
a) Apache Hadoop
b) MapReduce
可否解释用于云计算部署的不同模式?
私有云
公共云
社区云
混合云
由于数据在云端传输,你如何确保数据安全
要确保针对你发送的数据所使用的加密密钥没有泄露
云在安全方面的措施有哪些?
1.身份管理:授权应用程序服务。
2.访问控制:将权限授予用户,那样用户可以控制进入到云环境的另一个用户的访问。
3.验证和授权:只允许通过授权和验证的用户访问数据和应用程序
云架构使用的不同层包括
集群控制器
存储控制器
节点控制器
在使用云计算平台前,用户需要考虑哪些必要的方面?
1.合规
2.数据丢失
3.数据存储
4.业务连续性
5.正常运行时间
6.云计算的数据完整性
开源云计算平台数据库有:
1.MongoDB
2.CouchDB
3.LucidDB
云服务是什么?
云服务用来通过互联网,使用网络中的服务器来构建云应用程序。它提供了这种便利:不必将云应用程序安装到计算机上,即可直接使用。它还减少了维护和支持使用云服务开发的应用程序的工作
云架构具有的好处包括:
1.无需基础设施投入
2.适时的基础设施
3.更高效地利用资源
Docker
Docker 和虚拟机有啥不同?
Docker 是轻量级的沙盒,在其中运行的只是应用,虚拟机里面还有额外的系统。
Docker的安全性
Docker利用了Linux内核中很多安全特性来保证不同容器之间的隔离,并且通过签名机制来对镜像进行验证。大量生产环境的部署证明,Docker虽然隔离性无法与虚拟机相比,但仍然具有极高的安全性。
如何清理后台停止的容器?
答:可以使用sudo docker rm $sudo (docker ps -a -q)命令。
如何查看镜像支持的环境变量?
答:可以使用docker run Image env命令。
当启动容器的时候提示:exec format error?如何解决问题
答:检查启动命令是否具有可执行权限,进入手工运行脚本进行排查。
本地的镜像文件都存放在哪里?
答:与Docker相关的本地资源都存放在/var/lib/docker/目录下,其中container目录存放容器信息,graph目录存放镜像信息,aufs目录下存放具体的内容文件
如何退出一个镜像的bash,而不终止它?
答:按Ctrl-p Ctrl-q。
退出容器时自动删除?
答:使用-rm选项,例如sudo docker run -rm -it
批量清理临时镜像文件?
答:可以使用sudo docker rmi
构建Docker镜像应该遵循哪些原则?
答:整体原则上保持功能的明确和内容的精简,尽量选取满足需求但较小的基础系统镜像,清理编译生成文件、安装包的缓存等临时文件
安装各个软件时候要指定准确的版本号,并避免引入不需要的依赖
从安全的角度考虑,应用尽量使用系统的库和依赖
使用Dockerfile创建镜像时要添加dockerignore文件或使用干净的工作目录
如何停止所有正在运行的容器?
答:使用docker kill $(sudo docker ps -q)
如何清理批量后台停止的容器?
答:使用docker rm $(sudo docker ps -a -q)
很多应用容器都是默认后台运行的,怎么查看它们的输出和日志信息?
答:使用docker logs,后面跟容器的名称或者ID信息。
可以在一个容器中同时运行多个应用进程吗?
答:一般不推荐在同一个容器内运行多个应用进程,如果有类似需求,可以通过额外的进程管理机制,比如supervisord来管理所运行的进程。
如何控制容器占用系统资源(CPU,内存)的份额?
答:在使用docker create 命令创建容器或使用docker run创建并运行容器的时候可以使用-c|-cpu-shares[=0]参数来调整同期使用CPU的权重,使用-m|-memory参数来调整容器使用内存的大小。
Docker的配置文件放在哪里。如何修改配置?
答:Ubuntu系统下Docker的配置文件是/etc/default/docker,CentOS系统配置文件存放在/etc/sysconfig/docker
如何更改Docker的默认存储设置?
答:Docker的默认存储存放位置是/var/lib/docker,如果希望将docker的本地文件存储到其他分区,可以使用Linux软连接的方式来做。
如何将一台宿主机的docker环境迁移到另外一台宿主机?
答:停止Docker服务,将整个docker存储文件复制到另外一台宿主机上,然后调整另外一台宿主机的配置即可。
如何使用 Docker 技术创建与环境无关的容器系统?
Docker 技术有三中主要的技术途径辅助完成此需求:
存储卷(Volumes)
环境变量(Environment variable)注入
只读(Read-only)文件系统
Dockerfile 配置文件中的 COPY 和 ADD 指令有什么不同?
虽然 ADD 和 COPY 功能相似,推荐 COPY 。
Docker 中心(hub)什么概念?
Docker hub 是云基础的 Docker 注册服务平台,它允许用户进行访问 Docker 中心资源库,创建自己的 Docker 映像并测试,推送并存储创建好的 Docker 映像,连接 Docker 云平台将已创建好的指定 Docker 映像布署到本地主机等任务。它提供了一个查找发现 Docker 映像,发布 Docker 映像及控制变化升级的资源中心,成为用户组或团队协作开发中保证自动化开发流程的有效技术途径。
Dockerfile 配置文件中最常用的指令有哪些?
一些最常用的指令如下:
FROM:使用 FROM 为后续的指令建立基础映像。在所有有效的 Dockerfile
中, FROM 是第一条指令。
LABEL:LABEL 指令用于组织项目映像,模块,许可等。在自动化布署方面
LABEL 也有很大用途。在 LABEL 中指定一组键值对,可用于程序化配置或布署
Docker 。
RUN:RUN 指令可在映像当前层执行任何命令并创建一个新层,用于在映像层中
添加功能层,也许未来的层会依赖它。
CMD:使用 CMD 指令为执行的容器提供默认值。在 Dockerfile 文件中,若添
加多个 CMD 指令,只有最后的 CMD 指令运行。
Docker网络模式
host模式: 不会获得一个独立的Network Namespace,而是和宿主机共用一个Network,容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口,使用host模式的容器可以直接使用宿主机的IP地址与外界通信,host最大的优势就是网络性能比较好
container模式
指定新创建的容器和已存在的容器共享一个 Network Namespace,而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的 IP,而是和一个指定的容器共享 IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。两个容器的进程可以通过 lo 网卡设备通信
none模式
使用none模式,Docker容器拥有自己的Network Namespace,但是,并不为Docker容器进行任何网络配置。这个Docker容器没有网卡、IP、路由等信息。需要我们自己为Docker容器添加网卡、配置IP等。这种网络模式下容器只有lo回环网络,没有其他网卡。none模式可以在容器创建时通过--network=none来指定。这种类型的网络没有办法联网,封闭的网络能很好的保证容器的安全性。
bridge模式
bridge模式是docker的默认网络模式,不写--net参数,就是bridge模式。使用docker run -p时,docker实际是在iptables做了DNAT规则,实现端口转发功能。可以使用iptables -t nat -vnL查看。bridge模式如下图所示:
宿主机和Docker容器之间是可以进行网络连接的,同样的,Docker容器和容器之间也可以直接进行网络连接
容器互联
使--link可以完成这个功能,不设置--link的情况下,是无法通过容器名来进行连接的
网络连通
在没有使用connect命令的情况下,不同网络间的容器是无法进行网络连接的。
不同Docker网络之间的容器想要连接的话,需要把该容器注册到另一个容器所在的网络上,使用docker connect命令
Docker 容器的存储
对于宿主机来说只是一个应用, 因此它的数据存储还是会依赖宿主机器 Docker是通过挂载宿主机文件系统或内存的方式来实现数据存储的,挂载方式有三种,volume ,bind mount 和tmpfs
volumes-在宿主机的文件系统上的docker工作路径下创建一个文件夹(/var/lib/docker/volumes)来存储数据。Volumes是Docker推荐的挂载方式。可以避免增加容器的容量大小, 还可以使存储的数据与容器的的生命周期独立。volumes更易于备份或迁移
bind mounts -可以存储在宿主机器任何一个地方, 但是会依赖宿主机的目录结构, 不能通过docker CLI 去直接管理
tmpfs-无论是在docker主机上还是在容器内, tmpfs 挂载都不会持久保存在磁盘上, 它会将信息存储在宿主机内存里。
Zabbix可视化监控
Zabbix监控的优缺点有哪些
优点:开源、无软件成本、server端对设备性能要求低、支持的设备多,自带多种监控模板、能实现自动化监控、开放式接口,扩展性强。
缺点:需在被监控主机上安装agent, 所有数据都存在数
据库里,产生的数据量很大,瓶颈主要在数据库
讲讲你对监控的理解,监控的目的是什么
保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题
Zabbix监控模式有几种、有什么区别
主动模式:Agent向Server发起连接,主动模式可以大大减少zabbix server的压力。
被动模式:Server向Agent发起连接,被动模式zabbix server的压力大。
Zabbix自动发现怎么做的?
创建自动发现规则,设置键值,填写类型和zabbix端口,发现后的动作可以关联模板,发送邮件
Zabbix分布式监控有什么优点?
缓解服务器压力,提高可用性和灵活性,减少网络负载,提高监控系统的性能和效率,更好的处理大量的监控数据。
zabbix的分布式监控有什么作用?
部署Proxy是可选的,,但是可能非常有益于分散单个Zabbix sever的负载。 如果只有proxy收集数据,sever上的进程就会减少CPU消耗和磁盘I / O负载。
Zabbix proxy是完成远程区域、分支机构、没有本地管理员的网络的集中监控的理想解决方案。
zabbix的缺点是什么?如何解决
性能问题: 在监控大规模复杂系统时,Zabbix的性能可能会受到影响,特别是在处理大量数据时,可能会导致系统响应变慢或者出现延迟
解决方案:可以通过优化数据库、增加硬件资源、减少监控项等方法来提高Zabbix的性能
UI设计不够友好: Zabbix的ul设计相对来说不够友好,使用起来可能会比较困难,特别是对于非技术人员来说
解决方案: 可以考虑使用Zabbix的第三方插件或者自定义脚本来定制化UI界面,以满足不同用户的需求。
zabbix结合grafana怎么做?
首先需要在服务器上安装Grafana和Zabbix,在数据源中填写Zabbix的APIURL、用户名和密码等信 息。使用Grafana的面板编辑功能,创建需要监控的指标和图表,比如CPU利用率、内存使用率、网络流量等等。
可以用zabbix监控哪些
- 硬件监控。 通过 SNMP 来进行路由器交换机的监控
- 系统监控。 如 CPU 的负载,上下文切换、内存使用率、磁盘读写、磁盘使用率、磁盘 inode 节点。
- 服务监控。 比如公司用 LNMP nginx 自带 Status 模块、 PHP 也有相关的 Status 、 MySQL 的话可以通过 percona 来进行监控。
- 网络监控。 如果是云主机又不是跨机房,那么可以选择不监控网络。
- 安全监控。 如果是云主机可以考虑使用自带的安全防护。当然也可以使用 iptables 。 如果是硬件,那么推荐使用硬件防火墙。
6.Web 监控。 web 监控的话题其实还是很多。比如可以使用自带的 web 监控来监控页面相关的延迟、 js 响应时间、下载时间、等等。 - 日志监控。 如果是 web 的话可以使用监控 Nginx 的 500x 日志。 PHP 的 ERROR 日志。
- 流量分析。 平时我们分析日志都是拿 awk sed xxx 一堆工具来实现。 这样对我们统计 ip 、 pv 、 uv 不是很方便。那么可以使用百度统计、 google 统计、商业,让开发嵌入代码即可
- 可视化。 通过 screen 以及引入一 些第三方的库来美化界面,同时我们也需要知道、订单量突然增加、 突然减少。或者说突然来了一大波流量,这流量从哪儿来,是不是推广了,还是被攻击了。可以结合监控平来来梳理各个系统之间的业务关系。
- 自动化监控。 如上我们做了那么多的工作,当然不能是一台一台的来加 key 实现。 可以通过Zabbix 的主动模式以及被动模式来实现。当然最好还是通过 API 来实现。
zabbix的主动监控与被动监控
默认 zabbix 采用被动监控。
当监控主机达到一定量级后 ,zabbix 服务器会越来越慢 , 此时可以考虑使用主动监控 , 释放服务器的压力 zabbix 也支持分布式监控。
被动监控 :server 向 Agent 发起连接 , 发送监控 key,Agent 接受请求 , 响应监控数据
主动监控 :Agent 向 server 发起连接 ,Agent 请求需要检测监控项目列表 ,server 相应 Agent 发送一个 items 列表 ,Agent 确认收到监控列表 ,TCP 连接完成 , 会话关闭 ,Agent 开始周期性收集数据
区别 :
server 不用每次需要数据都连接 Agent,Agent 会自己收集数据并处理数据 ,Server 仅需要保存数据 即可
Zabbix监控做过哪些
zabbix监控mysql集群
1.创建并编辑监控mysql的脚本(通常有脚本模板),添加执行权限
2.修改zabbix-agent配置文件,默认有一个MySQL的子配置文件,直接编辑该文件即可,数据库添加授权用户
3.重启zabbix-agent
4.Web界面配置、点击需要监控的主机,进去添加监控模板,自带的Template DB MySQL
5.配置完成后等一会儿就可以查看到监控主机的MySQL监控信息
如果发现监控没有数据,请排查如下问题
1.zabbix客户端是否重启
2.脚本是否有执行权限
3.数据库是否有用户授权
4.环境变量是否有问题
zabbix监控mysql的四大性能指标:
查询吞吐量
查询执行性能
连接情况
缓冲池使用情况
配置zabbix自定义监控流程
①被监控端修改 Agent 配置文件 ( 修改是否允许自定义 key, 加载配置文件目录 )
②被监控端创建存放自定义 key 文件 ( 在 zabbix_agentd.conf 文件中定义 ), 书写自定义 key ③重起客户端 agentd
④测试自定义 key 是否生效
⑤在 zabbix 页面创建监控模板 , 创建应用 , 创建监控项 , 关联主机
服务器一般需要监控哪些项目? 凭借这些项目如何判断服务器的瓶颈?
1.比如网站故障监控、服务器性能监控、网站安全监控、用户访问速度监控等;内存,IO,CPU,网络,这个四个模块是必须的;
2.不能单一指标衡量性能瓶颈,比如说是IO出现在性能瓶颈:
第一种是调整缓冲区的大小、调整缓冲区中的数据同步的磁盘中的时间
第二种是修改磁盘调度算法,查看的路径cat /sys/bock/sda/queue/scheduler
zabbix监控mysql的io情况是否正常的流程
在 zabbix 的配置文件中开启自定义监控
编写监控脚本,过滤出 mysql 的 IO 线程是否为 yes
编写自定义监控文件,监控脚本
测试定义的监控命令是否成功
在 zabbix 网页中自定义监控项,添加监控文件中的 UserParameter
zabbix如何修改其中监控的一台服务器中的某个信息,该如何操作?
正常来说 , 一般会把监控的服务器统一加入到一个模板中 , 修改模板的某一项的监控项参数, 加入模板中的所有主机都会同步。如果单独想修改其中某一台服务器,需要进入这台主机 , 单独创建或者配置
报警类型和故障处理:
1.E-mail 邮件 2.微信报警等
故障:如监控服务器down机不报警
解决:1.先定位问题:zabbix服务器采用轮询的方式从监控目标机的agent获取数据。但如果目标机down了,目标机的agent通常也无法工作,所以检查被监控的主机服务
2.增加一个目标主机进行是否存活的检测。
告警收敛:
1.所有产生告警均由zabbix调用脚本推入缓存redis当中。
2.分析系统将在规定时间(1分钟)内去redis中拉取数据,根据定义好的一系列规则进行,合并、分析或直接丢弃,并存入分析平台数据库,以便供历史查询。
3.根据预先定义好的规则将报警通过定义好的方式发送给相关人员。
告警屏蔽:
1、处于维护中的主机,告警信息还是会报出来,但是不会触发动作;
2、对于可预知的临时维护或紧急维护,可以提前设置告警屏蔽;
3、可针对组、单台或多台主机,进行一次性、每日定时、每月定时、每周定时屏蔽;
4、前端可以将维护中的主机不进行显示,Dashboard右上角有个图标可以进行筛选是否显示维护中的主机;
5、告警屏蔽时,可以设置采集数据或不采集数据两种方式;
Ansible
说说你认识的ansible
Ansible是一个自动化运维工具,基于Python开发,集合了众多运维工具的优点,可以实现批量系统配置、批量程序部署、批量运行命令等功能。
它是基于模块工作的,本身没有批量部署的能力,真正批量部署的是ansible所运行的模块,而ansible只是提供一种框架。
什么是 Ansible 模块?
模块被认为是 Ansible 的工作单元。每个模块大多是独立的,可以用标准的脚本语言编写,如 Python、Perl、Ruby、bash 等。模块的一个重要属性是幂等性,意味着一个操作执行多次不会产生副作用
Ansiable的基本组件是什么?
包括:控制节点,主机,变量,任务,角色,模块等
Ansible常用模块(至少6个)?
command ping yum copy service shell file replace user group
什么是 Ansible 的 playbooks ?
Playbooks 是 Ansible 的配置、部署和编排语言,它是基于YAML语言编写的。或者描述一般 IT 流程中的一系列步骤。
描述Ansible是如何工作的?
Ansible由节点和控制机器组成。 控制机器是安装Ansibles的地方,节点由这些机器通过SSH管理。 借助SSH协议,控制机器可以部署临时存储在远程节点上的模块。
控制机器使用ansible或者ansible-playbooks在服务器终端输入的Ansible命令集或者playbook后,Ansible会遵循预先编排的规则将PLAYbook逐条拆解为Play,再将Play组织成Ansible可以识别的任务tasks,随后调用任务涉及到的所有modules及plugins,根据主机清单inventery中定义的主机列表通过SSH协议将任务集以临时文件或者命令的形式传输到远程节点并返回结果,如果是临时文件则执行完毕后自动删除。
Linux部分
Linux 的体系结构
从大的方面讲,Linux 体系结构可以分为两块:Linux 体系结构
用户空间(User Space) :用户空间又包括用户的应用程序(User Applications)、C 库(C Library) 。
内核空间(Kernel Space)
为什么 Linux 体系结构要分为用户空间和内核空间的原因?
1、现代 CPU 实现了不同的工作模式,不同模式下 CPU 可以执行的指令和访问的寄存器不同。
2、Linux 从 CPU 的角度出发,为了保护内核的安全,把系统分成了两部分
Linux 开机启动过程?
1、主机加电自检,加载 BIOS 硬件信息。
2、读取 MBR 的引导文件(GRUB、LILO)。
3、引导 Linux 内核。
4、运行第一个进程 init (进程号永远为 1 )
5、进入相应的运行级别。
6、运行终端,输入用户名和密码。
Linux 有哪些系统日志文件
比较重要的是 /var/log/messages 日志文件
RAID 是什么?
RAID 全称为独立磁盘冗余阵列(Redundant Array of Independent Disks),基本思想就是把多个相对便宜的硬盘组合起来,成为一个硬盘阵列组,使性能达到甚至超过一个价格昂贵、 容量巨大的硬盘。RAID 通常被用在服务器电脑上,使用完全相同的硬盘组成一个逻辑扇区,因此操作系统只会把它当做一个硬盘。
RAID 分为不同的等级,各个不同的等级均在数据可靠性及读写性能上做了不同的权衡。在实际应用中,可以依据自己的实际需求选择不同的 RAID 方案。
iptables 命令
iptables ,是一个配置 Linux 内核防火墙的命令行工具。功能非常强大,对于我们开发来说,主要掌握如何开放端口即可
route 命令
添加一条到 192.168.3.0/24 的路由,网关为 192.168.1.254 ?
输入命令 route add -net 192.168.3.0/24 netmask 255.255.255.0 gw 192.168.1.254 。
查看本机路由的三种方式?
route -n
netstat -nr
ip route
tcpdump 命令
tcpdump 这是最基本的命令,它会启动TCPDump并开始捕获数据包。默认情况下,它会捕获所有接口上的数据包
一台 Linux 系统初始化环境后需要做一些什么安全工作?
1、添加普通用户登陆,禁止 root 用户登陆,更改 SSH 端口号。
修改 SSH 端口不一定绝对哈。当然,如果要暴露在外网,建议改下。
2、服务器使用密钥登陆,禁止密码登陆。
3、开启防火墙,关闭 SElinux ,根据业务需求设置相应的防火墙规则。
4、装 fail2ban 这种防止 SSH 暴力破击的软件。
5、设置只允许公司办公网出口 IP 能登陆服务器(看公司实际需要)
也可以安装 VPN 等软件,只允许连接 VPN 到服务器上。
6、修改历史命令记录的条数为 10 条。
7、只允许有需要的服务器可以访问外网,其它全部禁止。
8、做好软件层面的防护。
8.1 设置 nginx_waf 模块防止 SQL 注入。
8.2 把 Web 服务使用 www 用户启动,更改网站目录的所有者和所属组为 www
什么叫 CC 攻击?什么叫 DDOS 攻击?
攻击,即是通过大量合法的请求占用大量网络资源,以达到瘫痪网络的目的。
CC 攻击,主要是用来攻击页面的,模拟多个用户不停的对你的页面进行访问,从而使你的系统资源消耗殆尽。
DDOS 攻击,中文名叫分布式拒绝服务攻击,指借助服务器技术将多个计算机联合起来作为攻击平台,来对一个或多个目标发动 DDOS 攻击。
怎么预防 CC 攻击和 DDOS 攻击?
防 CC、DDOS 攻击,这些只能是用硬件防火墙做流量清洗,将攻击流量引入黑洞。
流量清洗这一块,主要是买 ISP 服务商的防攻击的服务就可以,机房一般有空余流量,我们一般是买服务,毕竟攻击不会是持续长时间。
什么是网站数据库注入?
由于程序员的水平及经验参差不齐,大部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断。
应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的 SQL 注入。
SQL注入,是从正常的 WWW 端口访问,而且表面看起来跟一般的 Web 页面访问没什么区别,如果管理员没查看日志的习惯,可能被入侵很长时间都不会发觉。
如何过滤与预防?
数据库网页端注入这种,可以考虑使用 nginx_waf 做过滤与预防。
可以在 Shell 脚本中使用哪些类型的变量?
在 Shell 脚本,我们可以使用两种类型的变量:
系统定义变量:是由系统系统自己创建的
用户定义变量:由系统用户来生成和定义
Linux中各个目录的作用
1./ 根目录
2./boot 引导程序,内核等存放的目录
3./sbin 超级用户可以使用的命令的存放目录
4./bin 普通用户可以使用的命令的存放目录
5./lib 根目录下的所程序的共享库目录
6./dev 设备文件目录
7./home 普通用户的家目录
8./root 用户root的$HOME目录
9./etc 全局的配置文件存放目录
10./usr 这个目录中包含了命令库文件和在通常操作中不会修改的文件。
11./proc 特殊文件目录
这个目录采用一种特殊的文件系统格式,有助于我们了解系统内部信息。
12./opt 可择的文件目录
这个目录表示的是可择的意思,些自定义软件包或者第方工具,就可以安装在这里。
13./mnt 临时挂载目录
这个目录一般是用于存放挂载储存设备的挂载目录的,比如磁盘,光驱,网络文件系统等,当我们需要挂载某个磁盘设备的时候,可以把磁盘设备挂载到这个目录上去,这样我们可以直接通过访问这个目录来访问那个磁盘了
14./media 挂载的媒体设备目录
挂载的媒体设备目录,一般外部设备挂载到这里。
15./var 内容经常变化的目录
此目录下文件的大小可能会改变,如缓冲文件,日志文件,缓存文件,等一般都存放在这里。
16./tmp 临时文件目录
- /lost+found 恢复文件存放的位置
怎么查看当前进程?怎么执行退出?怎么查看当前路径?
查看当前进程:ps
执行退出:exit
查看当前路径:pwd
Ls 命令执行什么功能?可以带哪些参数,有什么区别?
ls 执行的功能:列出指定目录中的目录,以及文件。
-a :全部的文件,连同隐藏文件( 开头为 . 的文件) 一起列出来(常用)
-l :长数据串列出,包含文件的属性与权限等等数据;(常用)
Linux硬链接与软连接
硬链接的本质就是一条文件名和结点的关联记录而已。
硬链接是指通过索引节点来进行链接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都会给它分配一个编号,这个编号被称为索引节点编号号(Inode Index)或者Inode,它是文件或者目录在一个文件系统中的唯一标识,文件的实际数据放置在数据区域(data block),它存储着文件重要参数信息,也就是元数据 (metadata),比如创建时间、修改时间、文件大小、属主、归属的用户组、读写权限、数据所在block号等,
软链接(也叫符号链接),类似于windows系统中的快捷方式,与硬链接不同,软链接就是一个普通文件,只是数据块内容有点特殊,文件用户数据块中存放的内容是另一文件的路径名的指向,通过这个方式可以快速定位到软连接所指向的源文件实体。软链接是建立了另一个新的独立的文件,它指向源文件,因为源文件没了,
软连接和硬链接解释
在删除源文件的时候,系统则将链接数减1,当链接数为0的时候,inode就会被系统回收,文件的内容才会被删除。
建立软链接(快捷方式),以及硬链接的命令
软链接: ln -s slink source
硬链接: ln link source
查看文件内容有哪些命令可以使用?
vi 文件名 #编辑方式查看,可修改
cat 文件名 #显示全部文件内容
more 文件名 #分页显示文件内容
less 文件名 #与 more 相似,更好的是可以往前翻页
tail 文件名 #仅查看尾部,还可以指定行数
head 文件名 #仅查看头部,还可以指定行数
用什么命令对一个文件的内容进行统计?(行号、单词数、字节数)
wc 命令 - c 统计字节数 - l 统计行数 - w 统计字数
Grep 命令有什么用?
是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来
Linux 中进程有哪几种状态?在 ps 显示出来的信息中,分别用什么符号表示的?
(1)、不可中断状态:进程处于睡眠状态,但是此刻进程是不可中断的。不可中断, 指进程不响应异步信号。
(2)、暂停状态/跟踪状态:向进程发送一个 SIGSTOP 信号,它就会因响应该信号 而进入 TASK_STOPPED 状态;当进程正在被跟踪时,它处于 TASK_TRACED 这个特殊的状态。
"正在被跟踪"指的是进程暂停下来,等待跟踪它的进程对它进行操作。
(3)、就绪状态:在 run_queue 队列里的状态
(4)、运行状态:在 run_queue 队列里的状态
(5)、可中断睡眠状态:处于这个状态的进程因为等待某某事件的发生(比如等待 socket 连接、等待信号量),而被挂起
(6)、zombie 状态(僵尸):父亲没有通过 wait 系列的系统调用会顺便将子进程的尸体(task_struct)也释放掉。
(7)、退出状态
利用 ps 怎么显示所有的进程? 怎么利用 ps 查看指定进程的信息?
ps -aux | grep kai
查看指定用户kai
ps -u kai
管道符的作用
命令A|命令B,即命令1的正确输出作为命令B的操作对象
终止进程用什么命令? 带什么参数?
kill [-s <信息名称或编号>][程序] 或 kill [-l <信息编号>]
kill-9 pid
搜索文件用什么命令? 格式是怎么样的?
find <指定目录> <指定条件> <指定动作>
whereis 加参数与文件名
locate 只加文件名
使用什么命令查看磁盘使用空间?空闲空间呢?
df -hl
du作用?
du,du 的英文原义为 disk usage,含义为显示磁盘空间的使用情况,用于查看当前目录的总大小
通过什么命令查找执行命令?
Linux which命令用于查找文件。
which指令会在环境变量$PATH设置的目录里查找符合条件的文件。
Linux whereis命令用于查找文件。
该指令会在特定目录中查找符合条件的文件。这些文件应属于原始代码、二进制文件,或是帮助文件。
该指令只能用于查找二进制文件、源代码文件和man手册页,一般文件的定位需使用locate命令。