像MIUI一样做Zabbix二次开发(5)——那些坑和优化方向
踩过的那些坑
从2011年开始玩Zabbix,踩过的坑着实不少,被研发的同事吐了无数槽,所谓“情到深度又爱又恨“。以下简述印象比较深刻的几个坑:
二次开发的方式:2011刚开始做的时候,我们直接修改Zabbix开源的源代码,实现了一些功能自以为做得还不错,但是后来Zabbix升级一个大版本,发现Zabbix做的比我们高明多了,所以之后,我们都尽量不去Zabbix的源码,动也只是做操作层面的改进,用户交互的改良。
模板:一开始我们想得很简单,网上收集一堆模板,这个事就算做完了,后来发现这只是个开始,默认的模板考虑的深度还不够,需要持续改良和积累。
不必要的Item:在做IT基础架构监控的时候,尤其是网络监控的时候,对于Item的启用对于指标收集的及时性和数据容量的控制至关重要,一开始我们几乎启用了所有Item,后来发现监控的效率和数据库日增量实在让人受不了,最后,想办法压制了一些很少被用到的Item,改进的效果非常明显。
Oracle的监控:用原生的Orabbix监控Oracle时,会有些问题,比如说常见的审计问题,需要DBA持续优化。
数据清理的问题:Zabbix默认配置了Housekeeping来清理数据,但是根据我们的经验,在执行清理的时候除了影响数据库运行,还有约15%的系统资源的损耗,因此,我们默认关闭了这个功能,将这个功能脚本页面化了。
其他问题:
监控频率无法做到秒级别
web拨测只支持get和post,中文乱码
脚本下发只支持shell,并且搭配告警等触发,无法手动
IPMI轮训存在延时
告警有时会无法自动恢复
SNMP监控请求一个监控项一个连接请求
… …
常见优化的方向
以下简单列举我们的常见优化的几个方向:
高可用部署:高可用部署依赖可预见的监控规模和组织对监控系统的重视程度渐次加强,最简单的起码做到Web和DB的分离;其次,做到数据库层面的高可用;然后,分布式代理,甚至代理层的高可用;然后,考虑Web层的负载,最后,有条件的可以加一层冷备。
数据库优化:Zabbix的数据库优化是被提到最多的,通常矛盾最突出的也是MySQL的性能,通常的解决办法是:表分区;优化Item;多采用主动方式采集;Housekeeper优化;优化触发器表达式;数据库主从,Proxy模式;Zabbix配置文件调优;分表;提高机器配置(SSD)。
数据库监控:上一节提到Oracle监控的坑,其他数据库也一样,多采用自己可控的监控方式。
链路监控:单独把链路监控提出来,对于一些有分支机构的组织来说显得尤其必要。
历史数据存档与清理:通常限定详细监控数据的保存时间,只保留趋势数据,转存或清理历史数据,我们采用脚本页面化的方式实现。
监控平台的自监控:监控Zabbix本身的状态
像MIUI一样做Zabbix二次开发(5)——那些坑和优化方向的更多相关文章
- Zabbix二次开发_02获取数据
最近准备写一个zabbix二次页面的呈现.打算调用zabbix api接口来进行展示. 具体流程以及获取的数据. 1. 获得认证密钥 2. 获取zabbix所有的主机组 3. 获取单 ...
- Zabbix二次开发_01基础
最近有个想法:想做一个zabbix数据的二次呈现,所以来写一下Zabbix的api的内容. 先说下zabbix api的认证基础. Zabbix API简介 Zabbix API开始扮演着越来越重要的 ...
- Zabbix二次开发_03api列表_中文版
基于ZABBIX 3.0 https://www.zabbix.com/documentation/3.0/manual/api/reference 参考方法 本节提供了的zabbix提供的功能的概述 ...
- Zabbix二次开发_03api列表
基于zabbix 3.0 https://www.zabbix.com/documentation/3.0/manual/api/reference Method reference This sec ...
- 如何用Qt做SolidWorks二次开发
这个问题困扰了我2年了,之前找到的教程都是MFC的,ATL导入向导或是通过导入类型库的方式来调用控件,我一直都搞不明白. 最近学习了ActiveQT以及通过ActiveQT控制EXCEL.Word.P ...
- (50)zabbix API二次开发使用与介绍
zabbix API开发库 zabbix API请求和响应都是json,并且还提供了各种语法的lib库,http://zabbix.org/wiki/Docs/api/libraries,包含php. ...
- 【phpcms-v9】phpcms-v9二次开发所必须知道的步骤(转载)
一.做phpcms-v9二次开发时,我们经常需要用到如下代码,所以有必须在这里注释说明一下 defined('IN_PHPCMS') or exit('No permission resources. ...
- 最好最实用的PHP二次开发教程
◆二次开发 1.什么是二次开发? 二次开发,简单的说就是在现有的软件上进行定制修改,功能的扩展,然后达到自己想要的功能和效果,一般来说都不会改变原有系统的内核. 2.为什么要二次开发? 随着信息化技术 ...
- ArcGIS二次开发AO软件安装破解教程
最近在做ArcGIS二次开发时,采用C#中的WPF技术,在调研中发现ArcGIS 10.3及以上版本支持WPF技术,但是关于ArcGIS10.3的破解教程甚少,自己尝试了不少方法都失败了,淘@宝@商家 ...
- C#进行CAD二次开发环境配置
最近被公司分配到了做CAD二次开发.也是初次接触这方面的东西,其实是有些无从下手的感觉.因为公司这边也没有人有时间带我,只能是自己看书,然后再写一些Demo,再结合实际的应用来一点点的学习.废话不多说 ...
随机推荐
- 第四周作业-N67044-张铭扬
1. 自定义写出10个定时任务的示例:比如每周三凌晨三点执行data命令要求尽量的覆盖各种场景 1)每天早上8点对磁盘使用率进行查看,若超出空间的80%,则发邮件报警 [root@centos8 ~] ...
- Vue基础 · 父子组件之间的交互(5)
1.父子组件交互 <body> <div id="app"> <!--子组件接收到"change"方法,绑定父组件的方法--> ...
- 让自己的笔记本变wifi,如何设置呢?
让自己的笔记本变wifi,如何设置呢? 笔记本变wifi,居然有这样的好事,没错,就是这样的,我也是才知道,哈哈.果然,世上无奇不有,只是你不知罢了. 以win10笔记本为例,亲试有效,附上链 ...
- centos8下安装gcc11
最近的云服务器使用的centos8,c以前编译器对c++20的新特性支持的较少,当前最新版的gcc对c++20的支持还是可以的,于是准备体验一下,首要就是升级gcc gcc官网:https://gcc ...
- Mac卡顿 CPU占100%的原因Photolibraryd
找到了造成电脑卡顿的元凶,第一步要做的就是杀进程,选中这两个进程,点击上面的结束按钮,世界立马恢复了宁静,高兴的继续码代码,可是好景不长,大约一个小时以后,又特么卡了,"任务管理器" ...
- Mac下MySQL下载及安装
1在浏览器当中输入地址: https://downloads.mysql.com/archives/community/ 1. 1.1,选择mysql版本,它会自动对应某个版本macOS,1.2 ...
- Minio客户端工具mc
简介:mc(Minio Client)是Minio提供访问和操作服务端的客户端工具,有Windows和Linux两个平台版本. 一.安装(基于Linux) 1. mc下载:wget https://d ...
- flask-基础篇03 请求钩子与上下文
一.异常处理 1.HTTP 异常主动抛出 ①abort 方法: 抛出一个给定状态代码的 HTTPException 或者 指定响应,例如想要用一个页面未找到页面未找到异常来终止请求,你可以调用 abo ...
- pg9.6进程架构
进程架构 1.1 进程父子关系 PostgreSQL 的进程架构由多个后端进程组成,其父进程是 postmaster.进程 ID 记录在 {PGDATA}/postmaster.pid 文件中.当实例 ...
- spark structured streaming (结构化流) join 操作( 官方文档翻译)
spark 结构化流 join 连接 结构化流支持将流dataset/DataFrame与静态dataset/DataFrame,或者另一个流数据集-DataFrame连接起来.流式连接的结果是增量生 ...