Zabbix 利用 Grafana 进行图形展示
Grafana 是一款采用 go 语言编写的开源应用,主要用于大规模指标数据的可视化展现,是网络架构和应用分析中最流行的时序数据展示工具,目前已经支持绝大部分常用的时序数据库
(资料图片仅供参考)
使用 Grafana 显示Zabbix的监控数据过程
安装 grafana安装 zabbix 插件创建 zabbix 数据源导入 dashboard 模板安装 Grafana 包
包下载链接:https://grafana.com/grafana/downloadhttps://mirrors.tuna.tsinghua.edu.cn/grafana/
#Ubuntu安装[root@ubuntu2204 ~]#sudo apt-get install -y adduser libfontconfig1正在读取软件包列表... 完成正在分析软件包的依赖关系树... 完成正在读取状态信息... 完成 adduser 已经是最新版 (3.118ubuntu5)。adduser 已设置为手动安装。libfontconfig1 已经是最新版 (2.13.1-4.2ubuntu5)。libfontconfig1 已设置为手动安装。升级了 0 个软件包,新安装了 0 个软件包, 要卸载 0 个软件包,有 46 个软件包未被升级。[root@ubuntu2204 ~]#wget https://mirrors.tuna.tsinghua.edu.cn/grafana/apt/pool/main/g/grafana/grafana_9.3.2_amd64.deb--2022-12-28 21:19:15-- https://mirrors.tuna.tsinghua.edu.cn/grafana/apt/pool/main/g/grafana/grafana_9.3.2_amd64.deb正在解析主机 mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)... 101.6.15.130, 2402:f000:1:400::2正在连接 mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)|101.6.15.130|:443... 已连接。已发出 HTTP 请求,正在等待回应... 200 OK长度: 89172340 (85M) [application/octet-stream]正在保存至: ‘grafana_9.3.2_amd64.deb’grafana_9.3.2_amd64.deb 100%[===================================================================================================================================>] 85.04M 5.38MB/s 用时 20s 2022-12-28 21:19:36 (4.30 MB/s) - 已保存 ‘grafana_9.3.2_amd64.deb’ [89172340/89172340])[root@ubuntu2204 ~]#sudo dpkg -i grafana_9.3.2_amd64.deb 正在选中未选择的软件包 grafana。(正在读取数据库 ... 系统当前共安装有 106640 个文件和目录。)准备解压 grafana_9.3.2_amd64.deb ...正在解压 grafana (9.3.2) ...正在设置 grafana (9.3.2) ...正在添加系统用户"grafana" (UID 112)...正在将新用户"grafana" (UID 112)添加到组"grafana"......
开启 Grafana 服务
[root@ubuntu2204 ~]#systemctl enable --now grafana-server.serviceSynchronizing state of grafana-server.service with SysV service script with /lib/systemd/systemd-sysv-install.Executing: /lib/systemd/systemd-sysv-install enable grafana-serverCreated symlink /etc/systemd/system/multi-user.target.wants/grafana-server.service → /lib/systemd/system/grafana-server.service.[root@ubuntu2204 ~]#ss -ntlp|grep 3000LISTEN 0 4096 *:3000 *:* users:(("grafana-server",pid=2127,fd=12))
首次登录 Grafana 的 Web 界面
http://grafana-server:3000/*使用默认用户名和密码都是admin登录
登录用户等信息保存在下面数据文件中
[root@ubuntu2204 ~]#file /var/lib/grafana/grafana.db/var/lib/grafana/grafana.db: SQLite 3.x database, last written using SQLite version 3039004, file counter 478, database pages 222, 1st free page 221, free pages 1, cookie 0x17f, schema 4, UTF-8, version-valid-for 478
在 Grafana 安装 Zabbix 插件
关于zabbix的插件官网地址https://grafana.com/grafana/plugins#zabbix插件官方安装说明https://alexanderzobnin.github.io/grafana-zabbix/installation/
案例: 使用 grafana-cli 命令管理工具安装插件#列出远程的可用插件[root@ubuntu2204 ~]#grafana-cli plugins list-remote | grep zabbixid: alexanderzobnin-zabbix-app version: 4.2.10#列出插件的版本[root@ubuntu2204 ~]#grafana-cli plugins list-versions alexanderzobnin-zabbix-app4.2.104.2.94.2.84.2.7...#安装zabbix插件,可指定版本,下载安装插件至/var/lib/grafana/plugins/目录[root@ubuntu2204 ~]#grafana-cli plugins install alexanderzobnin-zabbix-app 4.2.10✔ Downloaded and extracted alexanderzobnin-zabbix-app v4.2.10 zip successfully to /var/lib/grafana/plugins/alexanderzobnin-zabbix-appPlease restart Grafana after installing plugins. Refer to Grafana documentation for instructions if necessary.[root@ubuntu2204 ~]#ll /var/lib/grafana/plugins总用量 12drwxr-xr-x 3 root root 4096 12月 28 21:39 ./drwxr-xr-x 7 grafana grafana 4096 12月 28 21:39 ../drwxr-xr-x 7 root root 4096 12月 28 21:39 alexanderzobnin-zabbix-app/[root@ubuntu2204 ~]#ll /var/lib/grafana/plugins/alexanderzobnin-zabbix-app/总用量 89032drwxr-xr-x 7 root root 4096 12月 28 21:39 ./drwxr-xr-x 3 root root 4096 12月 28 21:39 ../drwxr-xr-x 2 root root 4096 12月 28 21:39 app_config_ctrl/-rw-r--r-- 1 root root 34206 12月 28 21:39 CHANGELOG.mddrwxr-xr-x 2 root root 4096 12月 28 21:39 css/drwxr-xr-x 5 root root 4096 12月 28 21:39 datasource-zabbix/drwxr-xr-x 2 root root 4096 12月 28 21:39 img/-rw-r--r-- 1 root root 5022 12月 28 21:39 MANIFEST.txt-rw-r--r-- 1 root root 1640 12月 28 21:39 module.js-rw-r--r-- 1 root root 5588 12月 28 21:39 module.js.mapdrwxr-xr-x 4 root root 4096 12月 28 21:39 panel-triggers/-rw-r--r-- 1 root root 1721 12月 28 21:39 plugin.json-rw-r--r-- 1 root root 3783 12月 28 21:39 README.md-rwxr-xr-x 1 root root 16303504 12月 28 21:39 zabbix-plugin_darwin_amd64*-rwxr-xr-x 1 root root 16941250 12月 28 21:39 zabbix-plugin_darwin_arm64*-rwxr-xr-x 1 root root 14856192 12月 28 21:39 zabbix-plugin_linux_amd64*-rwxr-xr-x 1 root root 13107200 12月 28 21:39 zabbix-plugin_linux_arm*-rwxr-xr-x 1 root root 14614528 12月 28 21:39 zabbix-plugin_linux_arm64*-rwxr-xr-x 1 root root 15242240 12月 28 21:39 zabbix-plugin_windows_amd64.exe*#重新启动服务生效[root@ubuntu2204 ~]#systemctl status grafana-server● grafana-server.service - Grafana instance Loaded: loaded (/lib/systemd/system/grafana-server.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2022-12-28 21:41:46 CST; 27s ago Docs: http://docs.grafana.org Main PID: 2494 (grafana-server) Tasks: 14 (limit: 2196) Memory: 53.3M CPU: 1.294s CGroup: /system.slice/grafana-server.service ├─2494 /usr/sbin/grafana-server --config=/etc/grafana/grafana.ini --pidfile=/run/grafana/grafana-server.pid --packaging=deb cfg:default.paths.logs=/var/log/grafana cfg:default.paths.data=/var/lib/grafana cfg:default.paths.plugins=/var/lib/grafana/plugins cfg:default.paths.provisioning=/etc/grafana/provisioning └─2501 /var/lib/grafana/plugins/alexanderzobnin-zabbix-app/zabbix-plugin_linux_amd6412月 28 21:41:47 ubuntu2204.wang.org grafana-server[2494]: logger=server t=2022-12-28T21:41:47.634270043+08:00 level=info msg="Writing PID file" path=/run/grafana/grafana-server.pid pid=249412月 28 21:41:47 ubuntu2204.wang.org grafana-server[2494]: logger=provisioning.alerting t=2022-12-28T21:41:47.635070822+08:00 level=info msg="starting to provision alerting"12月 28 21:41:47 ubuntu2204.wang.org grafana-server[2494]: logger=provisioning.alerting t=2022-12-28T21:41:47.635185521+08:00 level=info msg="finished to provision alerting"12月 28 21:41:47 ubuntu2204.wang.org grafana-server[2494]: logger=http.server t=2022-12-28T21:41:47.6526367+08:00 level=info msg="HTTP Server Listen" address=[::]:3000 protocol=http subUrl= socket=12月 28 21:41:47 ubuntu2204.wang.org grafana-server[2494]: logger=ngalert.state.manager t=2022-12-28T21:41:47.650403635+08:00 level=info msg="Warming state cache for startup"12月 28 21:41:47 ubuntu2204.wang.org grafana-server[2494]: logger=ngalert.state.manager t=2022-12-28T21:41:47.652953238+08:00 level=info msg="State cache has been initialized" states=0 duration=2.548215ms12月 28 21:41:47 ubuntu2204.wang.org grafana-server[2494]: logger=ticker t=2022-12-28T21:41:47.653078859+08:00 level=info msg=starting first_tick=2022-12-28T21:41:50+08:0012月 28 21:41:47 ubuntu2204.wang.org grafana-server[2494]: logger=ngalert.multiorg.alertmanager t=2022-12-28T21:41:47.653245054+08:00 level=info msg="starting MultiOrg Alertmanager"12月 28 21:41:47 ubuntu2204.wang.org grafana-server[2494]: logger=grafanaStorageLogger t=2022-12-28T21:41:47.657592453+08:00 level=info msg="storage starting"12月 28 21:41:47 ubuntu2204.wang.org grafana-server[2494]: logger=context userId=1 orgId=1 uname=admin t=2022-12-28T21:41:47.842196795+08:00 level=info msg="Request Completed" method=GET path=/api/live/ws status=-1 remote_addr=10.0.0.1 time_ms=8 duration=8.760949ms size=0 referer= handler=/api/live/ws
在 Grafana 中启用 Zabbix 插件
添加 Zabbix 数据源
在URL填写以下信息
根据Zabbix安装的服务器版本#基于nginxhttp://zabbix-server/api_jsonrpc.php#基于apachehttp://zabbix-server/zabbix/api_jsonrpc.php案例:[root@ubuntu2204 ~]#cat /etc/hosts127.0.0.1 localhost127.0.1.1 ubuntu2204# The following lines are desirable for IPv6 capable hosts::1 ip6-localhost ip6-loopbackfe00::0 ip6-localnetff00::0 ip6-mcastprefixff02::1 ip6-allnodesff02::2 ip6-allrouters10.0.0.200 zabbix.mooreyxia.org
填写的用户名和密码是zabbix服务上设置好的 这里默认Admin zabbix
测试连接
导入自带的 Grafana 模板
启用插件后点击查看数据
默认的监控项有问题,修改对应的监控项的名称(注意:不是监控项的key)
也可以根据需要自定义添加模板
Zabbix 优化
如果主机和监控项众多, Zabbix Server 有可能会出现的性能问题,主要表现如下:
Web操作很卡,容易出现502错误监控图形中图层断裂监控告警不及时可以查看队列了解 Zabbix 性能状态
优化方法
数据库: 写多读少,数据采集比较频繁,可以考虑 PostgreSQLPostgreSQL 性能要优于Mysql 可以考虑安装zabbix服务初期选择PostgreSQL使用主动模式,减轻Zabbix Server压力
通过对Zabbix-Agent设置主动模式,减轻Zabbix-Server压力如果需要监控远程主机,使用 Zabbix Proxy
通过使用Zabbix Proxy收集Agent数据给到Server,减轻Zabbix-Server压力删除无用监控项,建议使用自定义的模板和监控项
只关注需要关注的监控项,减少不必要的监控压力适当增加监控项的取值间隔,减少历史数据保存周期,此工作由housekeeper进程定时清理
直白点就是减少数据的读写操作针对 Zabbix历史数据和趋势图的数据表,进行周期性分表保存
对历史数据进行转存,或分库分表优化等等,涉及数据库性能调优对 Zabbix Server 进程调优,发现性能瓶颈的进程,加大它的进程数量
根据主机选择尽可能多的进程数处理监控任务*将特定监控项的进程数量调高对 Zabbix Server 缓存调优,发现哪种缓存的剩余内存少,就加大它的缓存值
缓存默认只有8M,需要加大*缓存不够连接数量过大会造成服务宕机
针对 Zabbix历史数据和趋势图的数据表,进行周期性分表保存
占用的数据库磁盘空间可能会很大,如何估算空间占用?官方给出相关的公式
官方公式:https://www.zabbix.com/documentation/6.0/zh/manual/installation/requirementshttps://www.zabbix.com/documentation/5.0/zh/manual/installation/requirements根据使用 MySQL 后端数据库的实际统计数据中收集到的平均值,例如监控项为数值类型的值约 90 个字节,事件约 170 个字节。因此,所需要的磁盘总空间按下列方法计算: 配置文件数据+ 历史数据+ 趋势数据+ 事件数据 案例:假设 100台主机,每个主机约有100个监控项,每个监控项每间隔60s获取一次数值#历史数据:days*(items/refresh rate)*24*3600*bytes90*(10000/60)*24*3600*90=116173440000 字节 约共116GB#趋势:days*(items/3600)*24*3600*bytes365*(10000/3600)*24*3600*90=5676480000 字节 约共5G#事件:days*events*24*3600*bytes365*1*24*3600*170=5361120000 约5G#合计:126GB*根据占用磁盘空间大小选择合适的策略进行数据库性能调优
Zabbix Server 配置文件解析
AlertScriptsPath默认值:/usr/local/share/zabbix/alertscripts说明:告警脚本目录AllowRoot默认值:0 说明:是否允许使用root启动,0:不允许,1:允许,默认情况下她会使用zabbix用户来启动zabbix进程,不推荐使用rootCacheSize取值范围: 128K-8G默认值:8M说明:配置缓存,用于存储host,item,trigger数据,2.2.3版本之前最大支持2G,目前最大支持8G,zabbix5.0最大支持64GCacheUpdateFrequency取值范围:1-3600默认值:60说明:多少秒更新一次配置缓存DBHost默认值:localhost说明:数据库主机地址DBName默认值:无必填:是DBPassword:默认值:无说明:数据库密码DBPort取值范围:1024-65535默认值:3306说明:SQLite作为DB,这个选项请忽略,如果使用socket链接,也请忽略。DBSchema说明:Schema名称. 用于 IBM DB2 、 PostgreSQL.DBSocket默认值:/tmp/mysql.sock说明:mysql sock文件路径DebugLevel取值范围:0-5默认值:3说明: 指定debug级别0 - 基本信息1 - critical信息2 - error信息3 - warnings信息4 - 调试日志,日志内容很多,慎重使用5 - 用于调试web和vmware监控ExternalScripts默认值: /usr/local/share/zabbix/externalscripts说明: 外部脚本目录Fping6Location默认值:/usr/sbin/fping6说明:fping6路径,如果zabbix非root启动,请给fping6 SUIDFpingLocation默认值:/usr/sbin/fping说明:和上面的一样HistoryCacheSize取值范围:128K-2G默认值:8M说明:历史记录缓存大小,用于存储历史记录HistoryTextCacheSize取值范围:128K-2G默认值:16M说明:文本类型历史记录的缓存大小,存储character, text 、log历史记录.HousekeepingFrequency取值范围:0-24默认值:1说明:housekeep执行频率,默认每小时回去删除一些过期数据。如果server重启,那么30分钟之后才执行一次,接下来,每隔一小时在执行一次。Include说明:include配置文件,可以使用正则表达式,例如:/usr/local/zabbix-2.4.4/conf/ttlsa.com/*.confJavaGateway说明:Zabbix Java gateway的主机名,需要启动Java pollersJavaGatewayPort取值范围:1024-32767默认值:10052Zabbix Java gateway监听端口ListenIP默认值:0.0.0.0说明:监听地址,留空则会在所有的地址上监听,可以监听多个IP地址,ip之间使用逗号分隔,例如:127.0.0.1,10.10.0.2ListenPort取值范围:1024-32767默认值:10051说明:监听端口LoadModule说明:加载模块,格式: LoadModule=,文件必须在指定的LoadModulePath目录下,如果需要加载多个模块,那么写多个即可。LoadModulePath模块目录,参考上面LogFile日志文件,例如:/data/logs/zabbix/zabbix-server.logLogFileSize取值范围:0-1024默认值:10表示禁用日志自动rotation,如果日志达到了限制,并且rotation失败,老日志文件将会被清空掉,重新生成一个新日志。LogSlowQueries取值范围:0-3600000默认值:0多慢的数据库查询将会被记录,单位:毫秒,0表示不记录慢查询。只有在DebugLevel=3时,这个配置才有效。MaxHousekeeperDelete取值范围: 0-1000000默认值:5000housekeeping一次删除的数据不能大于MaxHousekeeperDeletePidFile默认值:/tmp/zabbix_server.pidPID文件ProxyConfigFrequency取值范围:1-604800默认值:3600proxy被动模式下,server多少秒同步配置文件至proxy。ProxyDataFrequency取值范围:1-3600默认值:1被动模式下,zabbix server间隔多少秒向proxy请求历史数据SenderFrequency取值范围:5-3600默认值:30间隔多少秒,再尝试发送为发送的报警SNMPTrapperFile默认值:/tmp/zabbix_traps.tmpSNMP trap发送到server的数据临时存放文件。SourceIP出口IP地址SSHKeyLocationSSH公钥私钥路径SSLCertLocationSSL证书目录,用于web监控SSLKeyLocationSSL认证私钥路径、用于web监控SSLCALocationSSL认证,CA路径,如果为空,将会使用系统默认的CAStartDBSyncers取值范围:1-100默认值:4预先foke DB Syncers的数量,1.8.5以前最大值为64StartDiscoverers取值范围:0-250默认值:1pre-forked discoverers的数量,1.8.5版本以前最大可为255StartPollers# Mandatory: no取值范围:0-1000默认值:5Number of pre-forked instances of pollers.StartHTTPPollers取值范围:0-1000默认值:1pre-forked HTTP pollers的数量,1.8.5以前最大255StartIPMIPollers取值范围:0-1000默认值:0pre-forked IPMI pollers的数量,1.8.5之前,最大为255StartPollersUnreachable取值范围:0-1000默认值:1pre-forked instances of pollers for unreachable hosts (including IPMI and Java)Timeout取值范围:1-30默认值:3agent,snmp,external check的超时时间,单位为秒TmpDir默认值:/tmpTrapperTimeout取值范围:1-300默认值:300处理trapper数据的超时时间TrendCacheSize取值范围:128K-2G默认值:4M历史数据缓存大小UnavailableDelay取值范围:1-3600默认值:60间隔多少秒再次检测主机是否可用UnreachableDelay取值范围:1-3600默认值:15间隔多少秒再次检测主机是否可达。UnreachablePeriod取值范围:1-3600默认值:45检测到主机不可用,多久将它置为不可达User默认值:zabbix启动zabbix server的用户,在配置禁止root启动,并且当前shell用户是root得情况下有效。如果当前用户是ttlsa,那么zabbix server的运行用户是ttlsaValueCacheSize取值范围:0,128K-64G默认值:8M0表示禁用,history value缓存大小,当缓存超标了,将会每隔5分钟往server日志里面记录。养成看日志的好习惯。案例:利用API添加几百台监控的主机,因为默认值8M太小 ,会造成Zabbix Server 不断的重启,可以看到如下日志信息root@zabbix-server ~]#tail -f /var/log/zabbix/zabbix_server.log......8588:20220617:213218.764 syncing trend data done8588:20220617:213218.764 Zabbix Server stopped. Zabbix 5.0.24 (revision313ff6504e3).8611:20220617:213228.800 Starting Zabbix Server. Zabbix 5.0.24 (revision313ff6504e3).8611:20220617:213228.800 ****** Enabled features ******8611:20220617:213228.800 SNMP monitoring: YES8611:20220617:213228.800 IPMI monitoring: YES8611:20220617:213228.800 Web monitoring: YES8611:20220617:213228.800 VMware monitoring: YES8611:20220617:213228.800 SMTP authentication: YES8611:20220617:213228.800 ODBC: YES8611:20220617:213228.800 SSH support: YES8611:20220617:213228.800 IPv6 support: YES8611:20220617:213228.800 TLS support: YES8636:20220617:213239.302 ******************************8636:20220617:213239.302 using configuration file:/etc/zabbix/zabbix_server.conf8636:20220617:213239.306 current database version (mandatory/optional):05000000/050000058636:20220617:213239.306 required mandatory version: 050000008636:20220617:213239.315 server #0 started [main process]8637:20220617:213239.316 server #1 started [configuration syncer #1]8637:20220617:213239.535 __mem_malloc: skipped 0 asked 72 skip_min18446744073709551615 skip_max 08637:20220617:213239.535 [file:dbconfig.c,line:96] __zbx_mem_malloc(): out ofmemory (requested 72 bytes)8637:20220617:213239.535 [file:dbconfig.c,line:96] __zbx_mem_malloc(): pleaseincrease CacheSize configuration parameter8637:20220617:213239.535 === memory statistics for configuration cache ===8637:20220617:213239.535 free chunks of size 24 bytes: 558637:20220617:213239.535 free chunks of size 32 bytes: 118637:20220617:213239.535 free chunks of size 40 bytes: 68637:20220617:213239.535 free chunks of size 48 bytes: 58637:20220617:213239.535 free chunks of size 56 bytes: 38637:20220617:213239.535 min chunk size: 24 bytes8637:20220617:213239.535 max chunk size: 56 bytes8637:20220617:213239.535 memory of total size 7264040 bytes fragmented into70263 chunks8637:20220617:213239.535 of those, 2320 bytes are in 80 freechunks8637:20220617:213239.535 of those, 7261720 bytes are in 70183 usedchunks8637:20220617:213239.535 of those, 1124192 bytes are used by allocationoverhead8637:20220617:213239.535 ================================[root@zabbix-server ~]#cat /var/log/syslogJun 17 21:37:18 zabbix-server systemd[1]: zabbix-server.service: Scheduledrestart job, restart counter is at 31.Jun 17 21:37:18 zabbix-server systemd[1]: Stopped Zabbix Server.Jun 17 21:37:18 zabbix-server systemd[1]: Starting Zabbix Server...Jun 17 21:37:18 zabbix-server systemd[1]: Started Zabbix Server.Jun 17 21:37:18 zabbix-server kill[9306]: 用法:Jun 17 21:37:18 zabbix-server kill[9306]: kill [options][...]Jun 17 21:37:18 zabbix-server kill[9306]: 选项:Jun 17 21:37:18 zabbix-server kill[9306]: [...] send signal toevery listedJun 17 21:37:18 zabbix-server kill[9306]: - , -s, --signal Jun 17 21:37:18 zabbix-server kill[9306]: specify the to be sentJun 17 21:37:18 zabbix-server kill[9306]: -l, --list=[ ] list allsignal names, or convert one to a nameJun 17 21:37:18 zabbix-server kill[9306]: -L, --table list allsignal names in a nice tableJun 17 21:37:18 zabbix-server kill[9306]: -h, --help 显示此帮助然后离开Jun 17 21:37:18 zabbix-server kill[9306]: -V, --version 显示程序版本然后离开Jun 17 21:37:18 zabbix-server kill[9306]: 欲了解更多详细信息,请参见 kill(1)。Jun 17 21:37:18 zabbix-server systemd[1]: zabbix-server.service: Control processexited, code=exited, status=1/FAILUREJun 17 21:37:18 zabbix-server systemd[1]: zabbix-server.service: Failed withresult "exit-code".[root@zabbix-server ~]#systemctl status zabbix-server.service● zabbix-server.service - Zabbix ServerLoaded: loaded (/lib/systemd/system/zabbix-server.service; enabled; vendorpreset: enabled)Active: activating (auto-restart) (Result: exit-code) since Fri 2021-06-1721:38:51 CST; 8s agoProcess: 9509 ExecStart=/usr/sbin/zabbix_server -c $CONFFILE (code=exited,status=0/SUCCESS)Process: 9528 ExecStop=/bin/kill -SIGTERM $MAINPID (code=exited,status=1/FAILURE)Main PID: 9526 (code=exited, status=0/SUCCESS)6月 17 21:38:51 zabbix-server.wang.org systemd[1]: zabbix-server.service: Controlprocess exited, code=exited, status=1/FAILURE6月 17 21:38:51 zabbix-server.wang.org systemd[1]: zabbix-server.service: Failedwith result "exit-code".#加大缓存[root@zabbix-server ~]#vim /etc/zabbix/zabbix_server.conf# CacheSize=8MCacheSize=256M#观察结果,发现Zabbix Server 服务启动成功[root@zabbix-server ~]#systemctl is-active zabbix-server.serviceactive
Zabbix高可用集群
在前面的部署架构中,Zabbix Server 和MySQL都有只有一台主机,存在单点问题可以使用Keepalived 实现 Zabbix Server的高可用基础架构为LAMP或LNMP环境,采用keepalived实现zabbix服务器高可用,保证主服务器或者Httpd宕掉后能切换到从服务器MySQL数据库做主主同步,保证两边服务器数据的一致性,实现数据库的高可用。*注意: 从 Zabbix 6.0 官方提供了高可用解决方案官方链接https://www.zabbix.com/documentation/6.0/zh/manual/concepts/server/ha#implementation-details
启用官方版高可用集群【摘抄官网原文】
在server配置中需要两个参数来启动Zabbix server作为集群节点:
HANodeName 集群中每个zabbix server节点名称必须要有且唯一这是将在agent和proxy配置中引用server的名称 (例如: zabbix-node-01 )。如果您没有指定HANodeName,那么服务器将以standalone模式启动。
NodeAddress 参数必须为每个节点指定。NodeAddress参数(address:port)将被Zabbix前端用来连接到主server节点。NodeAddress必须匹配相应Zabbix server的IP或FQDN名称。Zabbix HA解决方案由多个zabbix_server实例或节点组成。每个节点独立配置,但数据库是使用同一个实例。
Zabbix HA节点包括以下几种状态:
active(活动)standby(备用)unavailable(不可用)stopped(停止)在同一个Zabbix HA集群中,只有一个实例或节点处于active(活动)状态,standby(备用)节点不进行数据收集、处理或其他任务,并且不监听端口,并保持一个最少的数据库连接
案例:实现 Zabbix Server 6.0 的高可用
在MySQL创建用户并授权
#如果原有的数据库用户无远程连接权限,需要进行授权[root@zabbix-server ~]#vi /etc/mysql/mysql.conf.d/mysqld.cnf#注释下面两行#bind-address = 127.0.0.1#mysqlx-bind-address = 127.0.0.1[root@zabbix-server ~]#systemctl restart mysql[root@zabbix-server ~]#mysqlmysql> create user zabbix@"10.0.0.%" identified by "123456";mysql> grant all on zabbix.* to zabbix@"10.0.0.%";
两个Zabbix Server 节点都修改配置文件
*注意:在没有配置集群时,不要同时启动多个Zabbix Server#主节点配置vim /etc/zabbix/zabbix_server.confDBHost=10.0.0.200DBName=zabbixDBUser=zabbixDBPassword=123456## 以下两个参数是HA配置的参数# HANodeName设置为当前节点主机名或者IP地址,需保证同一集群中唯一HANodeName=zabbix-master# NodeAddress设置为节点IP:10051NodeAddress=10.0.0.200:10051systemctl restart zabbix-server.service#备用节点安装Zabbix server,并修改配置,指向同一个数据库vim /etc/zabbix/zabbix_server.confDBHost=10.0.0.200DBName=zabbixDBUser=zabbixDBPassword=123456## 以下两个参数是HA配置的参数# HANodeName设置为当前节点主机名或者IP地址,需保证同一集群中唯一HANodeName=zabbix-slave# NodeAddress设置为节点IP:10051NodeAddress=10.0.0.210:10051#备用节点初始化配置,修改php配置指向原数据库#初始化的的配置需要在所有Zabbix Server节点上完成,或者将已完成节点的配置文件/etc/zabbix/web/zabbix.conf.php拷贝至其他节点[root@ubuntu2204 ~]#vim /etc/zabbix/web/zabbix.conf.php$DB["TYPE"] = "MYSQL";$DB["SERVER"] = "10.0.0.200";$DB["PORT"] = "0";$DB["DATABASE"] = "zabbix";$DB["USER"] = "zabbix";$DB["PASSWORD"] = "123456";
修改所有Agent的配置指向主和备用Zabbix Server
#配置Agent,Zabbix HA的方案需要在agent配置文件中将所有的Server节点地址配置到Server和ServerActive中[root@ubuntu2204 ~]#vim /etc/zabbix/zabbix_agent2.confServer=10.0.0.200,10.0.0.210ServerActive=10.0.0.200,10.0.0.210[root@ubuntu2204 ~]#systemctl restart zabbix-agent2.service
查看状态
*查看HA状态有两种方式,一种是通过Web页面查看,另外一种是通过Runtime运行时的命令行查看
#通过Runtime运行时的命令行查看在Zabbix Server节点上执行命令zabbix_server -R ha_status,并在日志文件/var/log/zabbix/zabbix_server.log中查看HA状态[root@zabbix-server ~]#zabbix_server -R ha_statusFailover delay: 60 secondsCluster status:# ID Name AddressStatus Last Access1. clc3bjuvi000145qn9dw080tx zabbix-master 10.0.0.200:10051active 5s2. clc3bk2xf0001hedflh3t72rh zabbix-slave 10.0.0.210:10051standby 2s#备用节节点执行如下提示[root@ubuntu2204 ~]#zabbix_server -R ha_statusRuntime commands can be executed only in active mode[root@ubuntu2204 ~]#systemctl is-active zabbix-server.serviceactive#备用节点不监听端口[root@ubuntu2204 ~]#ss -nlt |grep 10051
在Reports -> System infomation页面可以查看HA状态
我是moore,大家一起加油!明天开始更新云原生系列文章。