3月 292019
 

本文以2019年1月16日Webinars课程内容编写
内容目录视频下载地址:

https://we.tl/t-A2ENyLjvCW

k8s介绍

kubernetes,简称K8s,是用8代替8个字符“ubernete”而成的缩写。Kubernetes是Google开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。

k8s架构

本次环境及配置

机器为虚拟机,磁盘为普通的SAS硬盘做RAID1,性能不是太好。
zabbix docker官方仓库,目前包括以下镜像

根据不同需要,选择使用,具体使用方法请查看我之前一篇的文章:Zabbix在Docker中的应用和监控

Zabbix部署

部署在k8s平台的zabbix架构

zabbix server和zabbix web以k8s service形式提供。同时部署二个zabbix web pod进行负载均衡,zabbix server只运行一个Pod。
所使用的yaml文件

zabbix-agent-stress 为添加了压测模块的agent
zabbix-server-mysql 在zabbix4.0.3版本的zabbix server
zabbix-secret为zabbix连接数据的账号及密码,采用k8s secret保存,默认账号:zabbix 默认密码:zabbixpwd123
zabbix-svc文件为zabbix server及zabbix web创建k8s service,提供给外部访问
zabbix-web-nginx-mysql 为zabbix前端部署文件

使用的镜像:
hub.c.163.com/canghai809/zabbix-server-mysql:v4.0.3
hub.c.163.com/canghai809/zabbix-web-nginx-mysql:v4.0.3
hub.c.163.com/canghai809/zabbix-agent-stress:v4.0.3
使用的yaml文件:https://dl.cactifans.com/zabbix/zabbix-kubernetes-yaml.tar.gz

数据库导入

下载对应版本的zabbix源码,本文以4.0.3为例子,并创建zabbix数据库文件create.sql

cat database/mysql/schema.sql > create.sql <br>cat database/mysql/images.sql >> create.sql <br>cat database/mysql/data.sql >> create.sql

导入zabbix数据库文件create.sql到数据库服务器,并建立用户并授权

create database zabbix;
grant all on zabbix.* to zabbix@'%' identfied by 'zabbixpwd123';
use zabbix;
source /opt/create.sql;

使用yaml部署

下载部署的yaml文件之后在k8s master上执行以下命令进行部署

wget https://dl.cactifans.com/zabbix/zabbix-kubernetes-yaml.tar.gz tar zxvf zabbix-kubernetes-yaml.tar.gz 
kubectl apply -f zabbix/zabbix-svc.yaml 
kubectl apply -f zabbix/

即可一键部署zabbix,即可部署完成。
部署成功后的状态如下

查看Service

可使用任何一个节点ip:30080访问zabbix web,默认账号:Admin 密码:zabbix

Zabbix压力测试

zabbix日常使用中的疑问

在zabbix的使用过程中,以下问题是大家经常关心的:
1.zabbix server每秒可以处理多少指标?
2.zabbix agent的性能到底如何?
3.如何规划zabbix数据库的磁盘?
对于这方面的疑问目前较多,网上相关的教程及资料较少,因此依赖与k8s的自动化部署及高伸缩特性,通过不断在增加zabbix agent,结合压力测试模块对zabbix server及zabbix agent进行压力测试。
基本架构:

通过k8s的deploy模式部署zabbix agent,通过zabbix的自动注册功能,添加到指定的组并关联指定的压力模版
zabibx 压力测试模块及模版:

github地址为:https://github.com/monitoringartist/zabbix-server-stress-test
提供了压力测试的module,编译之后,利用zabbix module功能,加载到zabbix agent,重启agent即可添加。template 目录下提供了压力测试模版:分为主动和被动二种模式,模版每有1k个item,每秒采集一次。还有2个每个包含5k个item的(item过多,不建议使用)模版,导入到zabbix server。自动发现添加zabbix 之后关联对应的压力测试模版即可。
在zabbix上导入模版,分别导入二个模版

Template App Zabbix Server Stress 1k active A.xml 主动模式压力测试模版
Template App Zabbix Server Stress 1k passive A.xml 被动模式压力测试模版

Zabbix 相关参数

以下为本次测试所配置的Zabbix Server参数,其他参数为zabbix docker默认参数

<code>- name: ZBX_CACHESIZE
  value: "1024M"
- name: ZBX_TRENDCACHESIZE
  value: "1024M"
- name: ZBX_HISTORYCACHESIZE
  value: "2048M"
- name: ZBX_HISTORYINDEXCACHESIZE
  value: "1024M"
- name: ZBX_STARTTRAPPERS
  value: "50"
- name: ZBX_STARTPREPROCESSORS
  value: "300"
- name: ZBX_STARTDBSYNCERS
  value: "100"</code>

zabbix db 为使用rpm包安装,mysql server版本为mysql-community-server-5.7.24-1.el7.x86_64配置参数为

<code>lower_case_table_names=1
character_set_server=utf8

wait_timeout=31536000
interactive_timeout=31536000
max_connections=1000
validate_password_policy=LOW</code>

主动模式测试

建立自动注册动作,并关联主动模式模版,如图:

关联主动模式测试模版

添加成功之后如下图

添加之后过一会即可看到主机已自动添加到zabbix server

Zabbix Server及DB 性能
Dashboard

Zabbix Performance Overview

Db iotop

DB TOP

被动模式测试

测试主动模式之后,先停止自动注册动作,删除所有agent节点,并修改自动注册关联被动模式模版,并启用,如图:

过一会即可看到agent已自动添加到zabbix server中并关联了被动压力测试模版

Zabbix Server及DB 性能
Dashboard

32


Zabbix Performance Overview

Db iotop

Db top

总结

综合对比,如下图:

折线处为从主动模式更换为被动模式

经过以上对zabbix server及agent的简单压力测试,可得出以下结论:

1.Zabbix Server压力

主动模式Zabbix Server压力明显较小,被动模式对zabbix压力较大,nvps到达5k后,50个poller processes已经100%,需要增加poller采集数量,后期测试poller增加到300后,poller processes占用为54%,网络流量15Mbps,DB及Server负载变高,Zabbix Server运行稳定。
结论:建议使用主动模式。

2.DB压力

zabbix 性能瓶颈主要在数据库,主动模式下数据库写入流量一般,机器负载较低,被动模式下,数据库负载较高,对mysql的操作较为频繁。5k nvps情况下数据库写入最大13MB/s,写入较为正常,出现少量iowait情况(机器为SATA磁盘性能较差),如增大,有可能出现告数据写入延迟,告警异常情况。
结论:实时观察DB压力情况,进行优化,实行分区表,关闭zabbix自带的housekeep工具

3.压力估算

机器估算:每秒为5k nvps。每分钟可处理5kX60=30w指标,如每个机器有50个指标,每分钟采集一次,此压力测试约为30w/50=6k台机器的压力情况
空间估算:分钟约20MB左右磁盘占用,如保留一月数据,则需要:20x60x24x30=0.8T空间
以上估算由于收到网络/硬件/策略/指标类型等影响,只做参考使用。
结论:历史数据过多会造成页面打开缓慢,擦操作缓慢等情况,建议根据实际情况保留历史数据,或抽取历史数据到其他库,以此来减轻主库压力,建议采用分区表,关闭zabbix server自带housekeeper清理。

4.Zabbix Agent压力

Zabbix Agent在1k item压力情况,主机8vcpu/16G性能数据如下:

模式CPU占用(%)内存(MB)
普通模式0.02-0.032.2-3
主动模式1.5-2.19.5-10
被动模式3-525-30

在主动或被动模式下,Zabbix Agent均未出现负载过高情况影响系统的情形,也未出现假死等情况,所以Zabbix Agent的稳定性大家不用怀疑。众多情况问题都源于用户的自定义脚本,用户自定义脚本性能问题,影响系统,因而使Zabbix被动”背锅”

结论:Zabbix agent较为稳定,建议优化自定义脚本性能。

结语

以上为简单的测试,还未测试proxy组件及数据库主动模式下的情况,后续将会推出。

如果觉得我的文章对您有用,请关注我的公众号,有更多技术干货!

微信
打赏
 Posted by at 下午 2:59

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)