本文转自 @TWT 社区
1、Zabbix 是怎么施行监控的?
一个监控零碎运行的大略的流程是这样的:
agent 须要装置到被监控的主机上,它负责定期收集各项数据,并发送到 zabbix server 端,zabbix server 将数据存储到数据库中,zabbix web 依据数据在前端进行展示和绘图。这里 agentd 收集数据分为被动和被动两种模式:
被动:agent 申请 server 获取被动的监控项列表,并被动将监控项内须要检测的数据提交给 server/proxy
被动:server 向 agent 申请获取监控项的数据,agent 返回数据。
被动监测通信过程如下:
zabbix 首先向 ServerActive 配置的 IP 申请获取 active items,获取并提交 active tiems 数据值 server 或者 proxy。很多人会提出疑难:zabbix 多久获取一次 active items?它会依据配置文件中的 RefreshActiveChecks 的频率进行,如果获取失败,那么将会在 60 秒之后重试。分两个局部:
获取 ACTIVE ITEMS 列表
Agent 关上 TCP 连贯(被动检测变成 Agent 关上)
Agent 申请 items 检测列表
Server 返回 items 列表
Agent 解决响应
敞开 TCP 连贯
Agent 开始收集数据
被动检测提交数据过程如下:
Agent 建设 TCP 连贯
Agent 提交 items 列表收集的数据
Server 解决数据,并返回响应状态
敞开 TCP 连贯
被动监测通信过程如下:
Server 关上一个 TCP 连贯
Server 发送申请 agent.pingn
Agent 接管到申请并且响应
Server 解决接管到的数据
敞开 TCP 连贯
1、新建监控我的项目时,抉择的是 zabbix 代理还是 zabbix 端点代理程式(主动式),前者是被动模式,后者是被动模式。
2、agentd 配置文件中 StartAgents 参数的设置,如果为 0,示意禁止被动模式,否则开启。个别倡议不要设置为 0,因为监控我的项目很多时,能够局部应用被动,局部应用被动模式。
2、Zabbix 主动发现是怎么做的?
zabbix 发现有 3 种类型:
1、主动网络发现 (Network discovery)
2、被动客户端主动注册 (Active agent auto-registration)
3、低级别发现 (low-level discovery)
主动发现的做法:
1、首先须要在模板当中创立一个主动发现的规定,这个中央只须要一个名称和一个键值。
2、过滤器两头要增加你须要的用到的值宏。
3、而后要创立一个监控项原型,也是一个名称和一个键值。
4、而后须要去写一个这样的键值的收集。
主动发现实际上就是须要首先去取得须要监控的值,而后将这个值作为一个新的参数传递到另外一个收集数据的 item 外面去。
3、Zabbix 监控的客户端是怎么进行批量装置的?
举荐应用 Ansible 等自动化软件来进行批量装置。将装置过程编写执行脚本,而后再应用 Ansible 来进行批量装置。
1、应用命令生成密钥。
2、将公钥发送到所有装置 zabbix 客户端的主机。
3、装置 ansible 软件,(批改配置文件,将 zabbix 客户机增加进组)。
4、创立一个装置 zabbix 客户端的脚本。
5、执行该脚本。
6、验证。
4、Zabbix4.0 中有些报警不会立刻触发报警邮件,这种问题该如何排查?
【问题形容】手动敞开问题时却会立刻发送报警邮件,比方更改 hostname,监控项中信息类型为字符或文本会呈现这种状况。
@chpps2000:
倡议依照触发器形容查下 triggers 表,依照 triggerid 查 function 表,确认表达式和监控项有没有问题,如果确定没问题的话查下 event 表,看看触发器是否生成事件,看事件前面的 actionid 和 mediaid 确定是否收回了报警并告诉。
5、Zabbix 能够监控端口带宽速度限制吗?
@skey_deng:
依据实际操作教训是不能获取到带宽速度限制的参数的,如果应用 qos 的话,监控是没有方法获取到数据的,而且 qos 是动静的,更难监控,目前咱们罕用的办法是有固定带宽,比方总行和各支行及网点的数据传输,带宽是固定的,咱们设置一个精确值给他,而后用实时带宽比照这个设置值,确定以后带宽占用的比率。
下面的办法能够让你看到带宽的占用状况,如果你是为了解决带宽占用告警的问题,那么就须要采纳动静基线,动静阈值的形式来实现监控,防止告警风暴的呈现,然而这波及到页面的开发,和算法的钻研,而后呈现出动静的告警,目前 zabbix 应该没有方法实现。
6、自动化运维零碎建设中,监控常常会用到 Zabbix,那么应用它监控罕用关系型数据库 DB2、Oracle、MySQL、SQLServer 时,有什么比拟全面的监控模板?
@李承轩:
Oracle 能够应用 orabbix 插件监控,入手能力强的能够通过 ODBC 去监控。
MySQL 能够应用 Percona 提供的一个模板监控,入手能力强的能够用 shell、Python 自行监控。
@TonyWang:
补充下:
目前咱们基于 Zabbix 对 Oracle、mysql 和 SQLServer 都监控了:
Oracle 能够用 Orabbix,不过 Orabbix 软件很久没更新,对于新的 Oracle 版本可能反对不好,对 RAC 环境也没有现成的配置文件。不好 Orabbix 益处是能够本人定义监控项(通过定义获取监控的 SQL 语句),譬如能够依据须要减少阻塞监控、表空间使用率等监控
SQLServer 个别是通过读取 windows 性能计数器来获取监控数据,须要解决同一台服务器多实例问题
MySQL 目前是通过 Zabbix 的自定义监控项实现,执行 shell 脚本
7、Zabbix 配置了 IPV6 的地址,怎么样能够监控到网外的某一个 IPV6 地址的网络品质?
@小民工:
1. 如仅是到探测给地址网络品质,可应用 ping 探测,设定探测周期及阈值,如:设定探测距离为 1s,当延时间断 3 次大于 50ms 则触发报警;
2. 如波及到该地址的具体服务,能够应用具体协定,如 tcp/udp,telnet/http 申请来作为具体探测形式;
注:此类探测工具,zabbix 官网能够下载到相应模板,导入现有零碎做自定义批改后即可应用。
8、Zabbix 监控虚拟主机告警 Lack of free swap space on Zabbix server 解决办法
@minseo:
Zabbix 监控虚拟机的时候有时候会报一下告警
是因为 Zabbix 监控没有思考虚拟主机的替换空间状况
解决办法批改配置
9、Zabbix4.4 启动失败的剖析与解决
@泊涯:
问题:
在装置配置好 zabbix 后无奈失常启动,起因是 SELINUX 设置问题导致启动失败。
故障剖析:
[root@localhost zabbix]# systemctl start zabbix-server.service
Job for zabbix-server.service failed because a configured resource limit was exceeded. See “systemctl status zabbix-server.service” and “journalctl -xe” for details.
[root@localhost zabbix]# journalctl -xe
— Defined-By: systemd
— Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
— Unit zabbix-server.service has begun starting up.
1 月 07 15:21:17 localhost.localdomain systemd[1]: PID file /run/zabbix/zabbix_server.pid not readable (yet?) after start.
1 月 07 15:21:17 localhost.localdomain systemd[1]: zabbix-server.service never wrote its PID file. Failing.
1 月 07 15:21:17 localhost.localdomain systemd[1]: Failed to start Zabbix Server.
— Subject: Unit zabbix-server.service has failed
— Defined-By: systemd
— Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
— Unit zabbix-server.service has failed.
— The result is failed.
1 月 07 15:21:17 localhost.localdomain systemd[1]: Unit zabbix-server.service entered failed state.
1 月 07 15:21:17 localhost.localdomain systemd[1]: zabbix-server.service failed.
1 月 07 15:21:17 localhost.localdomain polkitd[804]: Unregistered Authentication Agent for unix-process:6787:8831344 (system bus name
1 月 07 15:21:24 localhost.localdomain polkitd[804]: Registered Authentication Agent for unix-process:6797:8832061 (system bus name :
1 月 07 15:21:27 localhost.localdomain systemd[1]: zabbix-server.service holdoff time over, scheduling restart.
1 月 07 15:21:27 localhost.localdomain systemd[1]: Starting Zabbix Server…
— Subject: Unit zabbix-server.service has begun start-up
— Defined-By: systemd
— Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
— Unit zabbix-server.service has begun starting up.
1 月 07 15:21:27 localhost.localdomain systemd[1]: PID file /run/zabbix/zabbix_server.pid not readable (yet?) after start.
1 月 07 15:21:27 localhost.localdomain systemd[1]: zabbix-server.service never wrote its PID file. Failing.
1 月 07 15:21:27 localhost.localdomain systemd[1]: Failed to start Zabbix Server.
— Subject: Unit zabbix-server.service has failed
— Defined-By: systemd
— Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
— Unit zabbix-server.service has failed.
— The result is failed.
1 月 07 15:21:27 localhost.localdomain systemd[1]: Unit zabbix-server.service entered failed state.
1 月 07 15:21:27 localhost.localdomain systemd[1]: zabbix-server.service failed.
1 月 07 15:21:27 localhost.localdomain polkitd[804]: Unregistered Authentication Agent for unix-process:6797:8832061 (system bus name
lines 1907-1944/1944 (END)
Last login: Tue Jan 7 23:24:43 2020 from 10.100.81.67
查看 zabbix 日志剖析:
发现日志提醒权限问题:
5966:20200107:145500.376 using configuration file: /etc/zabbix/zabbix_server.conf
5966:20200107:145500.376 cannot set resource limit: [13] Permission denied
5966:20200107:145500.376 cannot disable core dump, exiting…
5976:20200107:145506.314 Starting Zabbix Server. Zabbix 4.4.4 (revision 3131fdac04
故障解决:
优化批改 SELINUX=disabled
[root@localhost selinux]# vi config
This file controls the state of SELinux on the system.
SELINUX= can take one of these three values:
enforcing – SELinux security policy is enforced.
permissive – SELinux prints warnings instead of enforcing.
disabled – No SELinux policy is loaded.
SELINUX=disabled
SELINUXTYPE= can take one of three two values:
targeted – Targeted processes are protected,
minimum – Modification of targeted policy. Only selected #processes are protected.
mls – Multi Level Security protection.
SELINUXTYPE=targeted
重新启动:
[root@localhost ~]# systemctl start zabbix-server.service
[root@localhost ~]# systemctl status zabbix-server.service
● zabbix-server.service – Zabbix Server
Loaded: loaded (/usr/lib/systemd/system/zabbix-server.service; disabled; vendor preset: disabled)
Active: active (running) since 二 2020-01-07 15:26:56 CST; 6s ago
Process: 1529 ExecStart=/usr/sbin/zabbix_server -c $CONFFILE (code=exited, status=0/SUCCESS)
Main PID: 1531 (zabbix_server)
CGroup: /system.slice/zabbix-server.service
└─1531 /usr/sbin/zabbix_server -c /etc/zabbix/zabbix_server.conf
1 月 07 15:26:56 localhost.localdomain systemd[1]: Starting Zabbix Server…
1 月 07 15:26:56 localhost.localdomain systemd[1]: zabbix-server.service: Supervising process 1531 which is not our child. …exits.
1 月 07 15:26:56 localhost.localdomain systemd[1]: Started Zabbix Server.
Hint: Some lines were ellipsized, use -l to show in full.
[root@localhost ~]#
至此,问题曾经失去解决。
总结:
最初要揭示各位同行,个别在装置一些开源软件,如 MYSQL、POSTGRES、zabbix、openshift 等,在装置前先查看下零碎对应版本是否与需装置的软件兼容性、在查看下下,防火墙、平安等是否开启,如下:
1、iptables 开启和敞开;
2、SELinux 开启和敞开;
3、CentOS 6 和 CentOS 7 firewalld 防火墙的开与关等。
10、Zabbix 监控界呈现“Zabbix poller processes more than 75% busy”报警?
@小雄 free:
线上部署的 zabbix 监控环境运行一段时间后,忽然呈现了报警“Zabbix poller processes more than 75% busy“。其实,Zabbix 的监控警报有很多种,比拟常见的几个莫过于内存耗尽,网络不通,IO 太慢还有这个“Zabbix poller processes more than 75% busy”了。一开始的时候因为这个即不影响应用也继续一会儿就自行解决就没有多在意。而后随着数据库的增大,Zabbix 耗费的内存可是越来越多,Poller processes(轮询)开始天天 Busy 了.
最初,发现解决这个问题很简略。能够减少 Zabbix Server 启动时初始化的过程数量,但这样做间接减少了轮询的负载量,内存配置短缺的状况下齐全能够这么做。
具体编辑 Zabbix Server 的配置文件 /etc/zabbix/zabbix_server.conf,找到配置 StartPollers 的段落:
Option: StartPollers
Number of pre-forked instances of pollers.
Mandatory: no
Range: 0-1000
Default:
StartPollers=5
勾销 StartPollers 前的 #号正文,批改 5 为 10 或者更大【因为线上机器内存 64G 的,我此处批改成 60 或 80】
批改后,重启 zabbix_server
pkill -9 zabbix_server
/usr/local/zabbix/sbin/zabbix-server
过一会儿就发现触发器里曾经没有相似的正告了。
当然,咱们也能够额外时写个脚本来重启 zabbix_server 来升高负载
上面是脚本 /root/zabbix-restart.sh
!/bin/bash
/usr/bin/pkill zabbix_server
/usr/local/zabbix/sbin/zabbix_server
而后 crontab 做打算工作
0 3 * /bin/bash -x /root/zabbix-restart.sh > /dev/null 2>&1
11、Zabbix 监控图里获取不到数据?
@小雄 free:
能够先在服务端的命令行里通过命令:
# /usr/local/zabbix/bin/zabbix_get -s 192.168.1.10 -p 10050 -k “mysql.status[Uptime]”
其中:- s 前面跟的是被监控机的 ip 地址;-k 前面跟的是监控项的键值,这个能够在 zabbix 页面里对应监控项里查到。如果在服务端通过以上命令能获取到数据,那么在 zabbix 监控页面的图形里显示获取不到数据,可能就是 web 页面里的配置问题了。
12、内存溢出导致 zabbix_server 服务敞开?
@相逢即是漂亮情绪:
14721:20170714:095330.028 [file:dbconfig.c,line:452] zbx_mem_malloc(): out of memory (requested 80 bytes)
14721:20170714:095330.028 [file:dbconfig.c,line:452] zbx_mem_malloc(): please increase CacheSize configuration parameter
14719:20170714:095330.331 One child process died (PID:14721,exitcode/signal:1). Exiting …
14719:20170714:095332.332 syncing history data…
14719:20170714:095332.332 syncing history data done
14719:20170714:095332.332 syncing trends data…
14719:20170714:095332.694 syncing trends data done
14719:20170714:095332.695 Zabbix Server stopped. Zabbix 2.4.7 (revision 56694).
zabbix 内存溢出。
/etc/zabbix/zabbix_server.conf 或者 /etc/zabbix/zabbix_agent.conf
增加或批改 CacheSize,或 CacheSize=8M
改为 CacheSize=1024M (这个值依据本人的需要)
重启服务 zabbix_server
13、Zabbix 给新机器增加监控,按失常操作实现后,发现主机那一栏最初的灯不亮
@小雄 free:
如下截图:
来回查看了好几遍,没发现问题,删除后从新加了两遍,还是灯不亮,起初在网上找相干的解决办法,试了发现不是本人遇到的问题,等过了一段时间发现灯失常亮了。
解决办法:
验证 zabbix_agent 是否增加胜利的办法,也实用其余问题。
1、查看防火墙和 SELinux 是否敞开。
2、增加实现后在 zabbix_server 上查看日志,如果不晓得地位,请查看 zabbix_server.conf 配置文件
如果在日志中发现主机名或 ip 不能被发现,就查看 /etc/hosts 文件中 ip 和主机名,是否有写错的问题。
3、查看 zabbix_agent.conf 中配置的 hostname=xxx,这里是否有些错的状况。
Server=zabbix_server 的 ip
ServerActive=zabbix_server 的 ip
hostname=zabbix_agent 的主机名
4、查看 zabbix_agent 是否启动,个别都不会遗记,但不排除犯傻的状况。
5、如果以上查看都没有发现错误。
在 zabbix_server 的 web 页面 - 监测中 - 最新数据,抉择新加的主机,查看是否有最新数据(记得链接一个零碎模板,不然你啥也看不到),如果有失常数据刷新,则不必管灯是否亮了,曾经能失常采集到数据了。如果等了一两分钟还没有数据(零碎模板的监控项采集数据个别 30 秒一次,所以失常的话一两分钟曾经有后果返回了),请返回第一条谬误,本人仔细检查。
总结:以上是一些教训用来查看谬误的,对于其余一些问题也是这个套路,教训分享给大家。
明天遇到这问题是因为 zabbix_server 端测试 agent 端数据提早导致的。所以如果你也遇到了这个问题,不必在意,在 zabbix_server 能失常采集数据进行监控,就表明监控曾经增加胜利。