1. zabbix 如何组成 ?

    1. zabbix_server:服务端守护进程
    2. zabbix_agented:agent 端守护进程
    3. zabbix_proxy:代理服务器(可选,分布式才用到)
    4. zabbix_get:命令行工具,手动测试数据采集
  2. zabbix 可以监控哪些?

    • 系统监控:cpu、内存、磁盘、网络、
    • 服务监控:nginx、tomcat、redis、MySQL
    • web 监控:响应时间、加载时间、渲染时间
  3. 主动监控和被动监控

    主动监控和被动监控是相对于被监控端主机来说的

    • 被动模式:zabbix agent被动的接受zabbix server周期性发送过来的数据收集指令。

      被动模式监控过程/原理:

      zabbix-server 会根据监控项中的数据采集时间,向zabbix-agent的10050端口发送TCP链接;

      建立连接后,zabbix-server 向zabbix-agent自己所需要的监控项指令。

      zabbix-agent将采集的数据通过tcp发送给zabbix-server。

      zabbix server发送什么指令那么zabbix agent就收集什么数据,zabbix server什么时候发送zabbix agent就什么时候采集。zabbix server不发送zabbix agent就一直不响应。所以zabbix agent也不用关心其监控项和数据采集周期间隔时间。

      缺点:当zabbix-agent达到一定量级时,zabbix-server的压力会很大

    • 主动模式:是由zabbix agent主动向zabbix server的10051端口发起tcp连接请求,获取监控项

      主动模式过程/原理:

      zabbix agent会打开一个随机端口向zabbix server的10051发起请求,获取监控项 。

      zabbix server会通过agent配置文件中所定义的hostname去数据库中查看关于这个hostname所对应的监控项,返还给agent 。

      agent得到监控项后,进行数据采集,把采集到的数据发送给server,server会把数据存放到数据库中

    主动模式配置:

    1
    2
    3
    4
    5
    6
    7
    
    zabbix_agent.conf
        StartAgents
        ServerActive
        Hostname
    zabbix_servert.conf
    	StartPollers    定义Zabbix Server主动拉取数据的进程数,在使用主动模式后应该减少进程数
    	StartTrappers   定义Zabbix Server接收Zabbix Agent发送数据的进程数,在使用主动模式后应该加大进程数
    
  4. Zabbix 监控做过哪些?

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    
    mysql:
    	监控服务器是否存活、监控主从状态、监控主从延迟
    	数据库状态:连接数、表空间使用率、错误日志、慢查询日志
    	性能指标:QPS、缓存命中率、I/O性能、CPU 使用率
    
    文件服务器:
    	ftp
    
    redis:
    
    nginx:监控流量、监控服务器是否存活
    
    硬件监控:通过 SNMP 来进行路由器交换机的监控。
    系统监控:如 CPU 的负载,上下文切换、内存使用率、磁盘读写、磁盘使用率、磁盘 inode 节点。
    日志监控:如果是 web 的话可以使用监控 Nginx 的 500x 日志。PHP 的 ERROR 日志。
    自动化监控:如上我们做了那么多的工作,当然不能是一台一台的来加 key 实现。可以通过Zabbix 的主动模式以及被动模式来实现。当然最好还是通过 API 来实现。
    
  5. 配置zabbix自定义监控流程

    1. 写一个脚本用于获取待监控服务的一些状态信息
    2. 在 zbbix 客户端的配置文件 zabbix_agentd.conf 中添加上自定义的“UserParameter”,目的是方便zabbix调用我们上面写的那个脚本去获取待监控服务的信息。
    3. 在 zabbix 服务端使用 zabbix_get 测试是否能够通过第二步定义的参数去获取 zabbix 客户端收集的数据。
    4. 在zabbix服务端的web界面中新建模板,同时第一步的脚本能够获取什么信息就添加上什么监控项,“键值”设置成前面配置的“UserParameter”的值。
    1
    2
    3
    4
    5
    
    用户自定义参数要在zabbix-agent上定义
    语法格式:UserParameter=key,command
    
    # 监控可用内存大小:
    UserParameter=mem.available,awk '/^MemAvailable/{print $2}' /proc/meminfo
    
  6. 客户端怎么进行批量安装的?

    1. 使用命令生成秘钥
    2. 将公钥发送到需要安装 zabbix 客户端的主机
    3. 安装ansible 软件,(修改配置文件,将 zabbix 客户机添加进组)
    4. 创建一个安装 zabbix 客户端的脚本
    5. 执行该脚本
  7. 监控 MySQL 集群

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    1. 创建并编辑监控mysql的脚本(通常有脚本模板),添加执行权限;
    
    2. 修改zabbix-agent配置文件,默认有一个MySQL的子配置文件,直接编辑该文件即可,数据库添加授权用户;
    
    3. 重启zabbix-agent;
    
    4. Web界面配置、点击需要监控的主机,进去添加监控模板,自带的Template DB MySQL;
    
    5. 配置完成后等一会儿就可以查看到监控主机的MySQL监控信息。
    

    如果发现监控没有数据,请排查如下问题:

    1. zabbix 客户端是否重启
    2. 脚本是否有执行权限
    3. 数据库是否有用户授权
    4. 环境变量是否有问题

    zabbix监控mysql的四大性能指标?

    • 查询吞吐量
    • 查询执行性能
    • 连接情况
    • 缓冲池使用情况
  8. zabbix如何修改其中监控的一台服务器中内存阈值信息,比如正常内存使用到了 80%报警,我想修改为 60%报警?

正常来说 , 一般会把监控的服务器统一加入到一个模板中 , 修改模板的其中某一项的监控项参数和告警阈值后 , 加入模板中的所有主机都会同步。如果单独想修改其中某一台服务器内存告警阈值 ,需要模板中设定阈值使用用户自定义宏代替,这样可以在单独修改某一台主机的宏,达到单个主机内存报警,阈值修改为60%。

  1. zabbix 的优势?

    Zabbix是一个企业级的高度集成开源监控软件,提供分布式监控解决方案。可以用来监控设备、服务等可用性和性能。其主要优势有:

    1. 开源
    2. 安装和配置简单
    3. 数据采集持久存储到数据库,便于对监控数据的二次分析;
    4. 系统占用小,数据采集性能和速度非常快;
    5. 丰富的扩展能力,轻松实现自定义监控项和实现数据采集
  2. 告警屏蔽

    1. 处于维护中的主机,告警信息还是会报出来,但是不会触发动作;

    2. 对于可预知的临时维护或紧急维护,可以提前设置告警屏蔽;

    3. 可针对组、单台或多台主机,进行一次性、每日定时、每月定时、每周定时屏蔽;

    4. 前端可以将维护中的主机不进行显示,Dashboard右上角有个图标可以进行筛选是否显示维护中的主机;

    5. 告警屏蔽时,可以设置采集数据或不采集数据两种方式。

  3. 报警类型和故障处理:

告警类型:1. email 2. 钉钉

故障处理:

​	如果监控服务器 down 机却不报警?

 1. 先定位问题:zabbix服务器采用轮询的方式从监控目标机的agent获取数据。但如果目标机down了,目标机的agent通常也无法工作,所以检查被监控的主机服务
 2. 增加一个目标主机进行是否存活的检测。

自动发现:

准备想要加入监控的机器,安装好 zabbix agent

创建发现规则

创建发现后的动作:添加到主机组,链接到模板

server 端轮询网段扫描发现 agent

自动注册:

Active agent主动联系zabbix server,最后由zabbix server将这些agent加到host里。

对于需要部署特别多服务器的人来说,这功能相当给力。

所有服务器批量装好zabbix agent,server配置好action,所有的服务器都配置好了,非常快速

zabbix-proxy分布式

使用场景:

  • 监控远程位置,解决跨机房
  • 监控主机多,性能跟不上,延迟大
  • 解决网络不稳定