今日主题:
如何根据Zabbix实际使用情况选择更适合的数据库引擎?
数据库引擎是Zabbix监控解决方案正常运行所必须具备的。
Zabbix支持多种数据库引擎,你可以在MySQL,MySQL的分支,MariaDB,Oracle,PostgreSQL ,IBM DB2之中选择。以上是五大核心数据库引擎。但是此外,你也可以在历史数据存储方面利用Elasticsearch的功能。还有一个新的Timescale数据库,也是PostgreSQL类型,内置有分区的功能。
MySQL&MariaDB
1
首先,对于初次接触Zabbix或者没有任何数据库引擎的相关经验的使用人员,也许你甚至都没有关于Zabbix的任何经验,但你需要使用, 安装,配置和运维。
没有任何经验的情况下选择哪种数据库引擎呢?
我强烈推荐用MySQL或者MariaDB分支。因为更容易,尽管你还是需要配置调优,需要备份,要编辑配置文件,要通过操作多个查询和多个指令的配置来,看起来好像并不是那么简单。但是,如果使用MySQL或者MariaDB,你很容易在互联网上找到非常非常多有用的信息。如果需要分区,你需要开启housekeeper,对于内部历史数据或其他要保留的数据,你可以在zabbix.org和很多在线社区平台上找到脚本,直接调用即可。
如果你选择用IBM DB2或者Oracle,相关信息可就非常难找了。
PostgreSQL & Oracle
2
如果对性能有要求,我们可以比较下MySQL, PostgreSQL和Oracle。
别认为MySQL不好或它不能进行大运行环境的数据处理。其实并不会遇到什么大问题,因为MySQL是后台的引擎。如果偶尔发生了问题,那可能是故障或者是数据库的配置以及调优没有完成。
但是如果你的预计数据量非常大,我指的是每秒采集超过2万个新数据,推荐你选择PostgreSQL。
并不是说它更好或别的意思,只是它比较适合超大的安装量。
PS:如果你一点都不具备使用数据库的经验,请在正式开始使用Oracle和IBM DB2之前三思而后行。如果贵司并没有一个专门的数据库管理员负责日常数据库问题定位,调优和解决数据库问题,我强烈建议你们不要使用Oracle和IBM DB2。不是因为这些数据库引擎不好,而是因为它们确实相当复杂,并且在互联网上,Zabbix论坛上或任何其他社区资源上都没有太多相关信息。
如果你使用MySQL遇到了一些问题,你可以在Zabbix论坛中提问,总有人会来帮助你的。
ElasticSearch!
3
ElasticSearch不是Zabbix的主要核心数据库引擎。它只是一个历史数据存储数据库。所以你还是需要在MySQL, Oracle, IBM DB2, PostgreSQL和MySQL分支中做出选择,作为Zabbix后台数据库引擎。除此之外,你还可以选择下载ElasticSearch。
PS:你需要注意的是,Zabbix中对ElasticSearch的支持还在试验阶段。如果你准备用ES,可以在测试环境中做一些压力测试,评估一下它是否真的满足你的需求。如果可以满足,那未尝不可。你就可以在生产环境中开始实施。
如果你正在使用ElasticSearch, 趋势数据是不会在数据库中存储的。所以你将无法看到趋势数据数据。但是所有的历史数据,你可以选择其在数据库中的存储类型,可以是日志数据,整点或浮点数据。
Timescale。
4
最后一个是Timescale数据库。
它是SQL的一个扩展, 是Zabbix4.2版本中的全新功能,可以直接提供内部分区。
如果你想进行数据库分区,但是不擅长配置设置,只想简单获取一些数据,那Timescale就很适合你,因为它可以对历史数据表与实时数据表进行分区,不需要进行任何设置,定制脚本,定时任务或者其他类似的操作。
所有的东西都基本上是立即可用的,并且配置也十分简单。你只需要打开我们的Zabbix手册查找4.2版本中的Timescale,你会发现你只需要做两到三个操作就可以使它运行起来了。
建议
5
最后,给你一个重要的建议:选择你更熟悉的数据库引擎!
不要听一些论坛里面的意见,如果你并不熟悉Oracle也没有任何使用Oracle的经验和知识储备,就不要使用它。管理和维护对你来说将是一场噩梦。
如果你没有任何经验,可以选择MySQL或者MySQL的分支。
如果有专门的数据库管理员,或者你们公司要求必须使用Oracle,你就可以放心的使用它,因为发生问题时,你可以求助于数据库管理员,所以可以放心大胆的使用他。