本文转自@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能失常采集数据进行监控,就表明监控曾经增加胜利。