-
zabbix 如何组成 ?
- zabbix_server:服务端守护进程
- zabbix_agented:agent 端守护进程
- zabbix_proxy:代理服务器(可选,分布式才用到)
- zabbix_get:命令行工具,手动测试数据采集
-
zabbix 可以监控哪些?
- 系统监控:cpu、内存、磁盘、网络、
- 服务监控:nginx、tomcat、redis、MySQL
- web 监控:响应时间、加载时间、渲染时间
-
主动监控和被动监控
主动监控和被动监控是相对于被监控端主机来说的
-
被动模式: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发送数据的进程数,在使用主动模式后应该加大进程数
-
-
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 来实现。
-
配置zabbix自定义监控流程
- 写一个脚本用于获取待监控服务的一些状态信息
- 在 zbbix 客户端的配置文件 zabbix_agentd.conf 中添加上自定义的“UserParameter”,目的是方便zabbix调用我们上面写的那个脚本去获取待监控服务的信息。
- 在 zabbix 服务端使用 zabbix_get 测试是否能够通过第二步定义的参数去获取 zabbix 客户端收集的数据。
- 在zabbix服务端的web界面中新建模板,同时第一步的脚本能够获取什么信息就添加上什么监控项,“键值”设置成前面配置的“UserParameter”的值。
1 2 3 4 5
用户自定义参数要在zabbix-agent上定义 语法格式:UserParameter=key,command # 监控可用内存大小: UserParameter=mem.available,awk '/^MemAvailable/{print $2}' /proc/meminfo
-
客户端怎么进行批量安装的?
- 使用命令生成秘钥
- 将公钥发送到需要安装 zabbix 客户端的主机
- 安装ansible 软件,(修改配置文件,将 zabbix 客户机添加进组)
- 创建一个安装 zabbix 客户端的脚本
- 执行该脚本
-
监控 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监控信息。
如果发现监控没有数据,请排查如下问题:
- zabbix 客户端是否重启
- 脚本是否有执行权限
- 数据库是否有用户授权
- 环境变量是否有问题
zabbix监控mysql的四大性能指标?
- 查询吞吐量
- 查询执行性能
- 连接情况
- 缓冲池使用情况
-
zabbix如何修改其中监控的一台服务器中内存阈值信息,比如正常内存使用到了 80%报警,我想修改为 60%报警?
正常来说 , 一般会把监控的服务器统一加入到一个模板中 , 修改模板的其中某一项的监控项参数和告警阈值后 , 加入模板中的所有主机都会同步。如果单独想修改其中某一台服务器内存告警阈值 ,需要模板中设定阈值使用用户自定义宏代替,这样可以在单独修改某一台主机的宏,达到单个主机内存报警,阈值修改为60%。
-
zabbix 的优势?
Zabbix是一个企业级的高度集成开源监控软件,提供分布式监控解决方案。可以用来监控设备、服务等可用性和性能。其主要优势有:
- 开源
- 安装和配置简单
- 数据采集持久存储到数据库,便于对监控数据的二次分析;
- 系统占用小,数据采集性能和速度非常快;
- 丰富的扩展能力,轻松实现自定义监控项和实现数据采集
-
告警屏蔽
-
处于维护中的主机,告警信息还是会报出来,但是不会触发动作;
-
对于可预知的临时维护或紧急维护,可以提前设置告警屏蔽;
-
可针对组、单台或多台主机,进行一次性、每日定时、每月定时、每周定时屏蔽;
-
前端可以将维护中的主机不进行显示,Dashboard右上角有个图标可以进行筛选是否显示维护中的主机;
-
告警屏蔽时,可以设置采集数据或不采集数据两种方式。
-
-
报警类型和故障处理:
告警类型: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分布式
使用场景:
- 监控远程位置,解决跨机房
- 监控主机多,性能跟不上,延迟大
- 解决网络不稳定