千家信息网

zabbix-进阶-3

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,第三章;发现,自动注册和web监控报警实现:应该使用专用的邮箱服务实现,使用专用的账号和密码:使用飞信机器人,使用脚本实现发信息action动作:condition,operation(remote,
千家信息网最后更新 2026年11月02日zabbix-进阶-3

第三章;发现,自动注册和web监控

报警实现:应该使用专用的邮箱服务实现,使用专用的账号和密码

:使用飞信机器人,使用脚本实现发信息

action动作:condition,operation(remote,command,send message)

item:数据项()-->mysql server保存在数据库中-->web gui

key:是server向agent上获取数据时所需要的标记,

//一个key可以生成多个item,

//用户参数,userParameter=,

//key也可以接受参数

//key和item并非是一一对应的

trigger:激发动作,action,//trigger定义某个item的阈值,key

动作:condition条件,operation (remote command,send message)

完整的监控:添加主机(主机组)-->添加item(内置的简单图形)--->trigger(event)-->

action(发通知(通知信息中包括大量的宏),condition,operation(step))

Item:自己建立的,

trigger:定义一个合理的范围,超出阈值,就产生event(OK--->problem)

action:可以是发信息,或者远程命令,一旦恢复后,还需要problem-->OK

:通知信息大量使用宏,需要条件和操作

action:一个trigger未必就执行operation还要看条件,还需要满足condition才可以

:在action.Operation中定义steps,定义step duratiion//报警升级的实现

:在action.Recovery中没有steps

:trigger可以引起事件,但是必须满足action.condition才可以

Media type:email,External Script,Jabber,SMS, //最常用的就是前两个,外部脚本可以实现调用外部的应用发送信息

Meida:google_mail,our_mail等,媒介是具体的实体

//item和trigger是主机级别的,需要定义在主机或者木板上

//action:不是在主机级别因为,当多个主机监控同一个指标的时候,可以定义一个action让多个主机上的同一个指标,同事报警,::可以定义多个主机监控同一个指标时的操作

//action.condition可以定义 host.group,trigger,hosts等同时监控

信息的发送目标:zabbix用户,每个用户的系方式,自定义发送的目标

Graph:将同一类的item数据项,展示在同一个图形中;

screen:将多个graph,放在一个大屏幕中

map:通过图形定义各个节点间的拓扑关系,地图

Template:批量监控每一个主机

添加主机时,直接把主机套用模板即可,建议多做几个模板,每个模板只关注几个指标,然后

添加主机的时候,只要多关联几个指标就可以了

可以把一个主机关联多个模板,模板可以嵌套,模板和主机是同一个级别

也可以定义item,application,trigger,graph等

discovery:

发现的方式:

agent

agentless,ssh,ping//无代理方式

SNMP,

JMX:专用于监控java虚拟机的环境,tomcat默认并不支持jmx,需要为toomcat添加特定的类,官网下载,安装,重启 //假如只监控tomcat的连接数,正在打开的网页数,就不在需要JMX ,脚本即可

zabbix的网络发现功能可基于如下信息进行

IP range

根据服务(FTP,SSH,WEB,POP3,IMAP,TCP)

zabbix agent发来的信息,agent可以

SNMP代理实现

Discovery:过程阶段:discovery-->action

Discovery中的事件:

service up,service down

host up,host down

service discovered,service lost

host discovered,host lost

action:{condition,operation}添加主机,关联模板

sending notification:发送通知

adding/removing hosts:添加或者删除主机

adding hosts to a group:添加主机到组

Enabling /disabled hosts:激活或者失效一个组

removing hosts from a group

linking hosts to/unlinking from a template

remote scripts

网络发现中添加时会自动创建interface
1.the services detected //例如基于SNMP检测成功,则会创建SNMP借口

2.如果某服务同时响应了agent和snmp则,会创建两种接口

3.如果同一种发现机制(如agentd)返回了非唯一数据,第一个接口为默认,其他的为额外接口

4.即便是某主机开始时只有agent接口,后来又通过SNMP发现了它,同样会为其添加额外的SNMP借口

5.不同主机-返回相同的数据,则第一个主机将被添加,余下的主机会被当做第一个主机的额外借口


实验:自动发现,环境:zabbix_server,另外一台主机,新建立的主机,

//server为200,client为101:server指定为server,zabbix-agent启用

1.新建模板

test template

Test group //组名

//不在模板中定义,discovery,在其他地方定义

2.创建item--trigger--graph

//agentd的agent.conf上有:UserParameter=memory.usage[*],/bin/cat /proc/meminfo | awk '/^$1:/{print $$2}' 这个记录,建议在server上使用agent-get命令测试效果

//zabbix_get -s 10.0.0.101-k "agent.ping" //是一个key,对方的一个key

创建3个item

//确保item的key能够使用

memory.usage[MemAvailable] //*1024

memory.usage[MemFree]//*1024

memory.usage[Active]//*1024

memory.usage[Inactive]//*1024

创建trigger:

Name : free memory too low

Severity:High //high级别的报警

Expression:

Item:test-template: memory.usage[MemFree]

Function:Average value of a period T is < N

Last off(T) : 30 //最后30s的平均值,小于51M

TIme shift:

N: 51200 //51M小于51M为阈值,默认单位为k

OK event generation:None //不会附带产生其他的问题

创建 graph

Name:mem-usage-depaly

3.配置configuration->discovery--->create discovery //discovery创建

Name:linux_in localhost

DIscover by proxy :No proxy

ip range : 10.0.0.100-10.0.0.101 //自己的ip也要包含在内

Delay (in sec) :120 //延迟

check New:

check type: zabbix agent

key:memory.usage[MemFree]//这里的key是作为辅助手段,添加主机

//这里的discovery只能发现,但是发现完以后,选哟action

Device uniqueness criteria:IP address设备的唯一标识符为IP

4.配置action //discovery只能发现,但是发现之后做什么,他们并不知道

configuration--action-event source{discovery}---create action

action:

name:auto discovery linux in localnet

condition:Host IP.:10.0.0.100-10.0.0.101 //当满足条件的时候,才会添加到进来

:Discovery status = Discovered //当状态是发现的时候,才会添加

:Discovery rule = linux_in_localhost //这个条件是discovery中定义的

operation:

Add host

Link tooard templates :test server/test template

//在monitoring--dashboard上,可以看到有没有主机发现

果:能够发现主机,但是不能够检测其状态

5.//创建tom,加入CTO组,tom可以接受,任何类别的邮件

Send to:tom@localhost //server有tom这个系统用户

创建media:administrator--media types-->创建新的media types

创建user group:administrator-users-create users groups

创建user:

user:加入刚创建的组

media:

type:local media find

send to:tom@localhost

//在server上useradd tom ,添加用户tom

排错:主要基于,configuration{hosts,actions,discovery}

注意:一定要查看是否configuration-hosts有自定义的item和riggers等

//问题,只能在dashboard上看到有主机存活,但是不能添加到host

//最终新开启了一台主机后,自动发现成功

//解决方法:把action中的condition:Discovery status = Discovered删除即可解决

//因为这个是已经发现很久了,然后状态已经发生改变了,不是discovered的了

//重新启动,

//错误zabbix_get [43432]: Get value error: cannot connect to [[10.0.0.101]:10050]: [113] No route to host

[root@localhost ~]# zabbix_get -s 10.0.0.101 -k "memory.usage[MemFree]"

方法:iptable -F //关掉防火墙即可

6.定义另外一个action, auto_remove

createa actions:

name: remove host

conditions:host ip 10.0.0.100-102

:Discovery status = Lost

Operations:remove host

//在agent上systemctl zabbix-agent stop 停止该服务即可

步骤小结:

创建模板(item,trigger,graph)----创建discovery-----创建action

问题:

自动remove没有

Agent自动注册:

1.Zabbix支持active agent的自动注册(auto-resistration)功能,通常用于此前agent失效后的重新上线

2.也可基于active agent的自动注册机制添加被动检测,这会通过active agent注册时提供的"listen IP"

和listen port进行

3.Server端在收到自动注册请求以后以接受到的IP和Port为接口属性

网络发现:配置active agent自动注册

Configuration--actions--Event source(atuo registration)--create action

Action: add host/link to template

Condition:

Operation:只用定义operation,无需定义condition

此外:配置agent的工作属性,并重启agent

Zabbix-agentd..conf

ServerActive=172.16.100.15 //指向server

//以后

//然后在这里service agent stop ,

Web监控:

1.创建步骤的web监控需要先定义一个web方案(scenarios)

Web方案包括一个或多个HTTP请求或"步骤{step}}"

步骤{step}的执行过程按照预先定义的顺序进行执行

2.通过web监控可以获取一下信息

整个web方案中,所有step的平均下载速度

失败的step号

失败的报错信息

3.在web方案的具体step中,可以按需使用如下信息

该step的下载速度

回应时间

回应状态码

4.zabbix可以检测 获取到的HTML页面中是否包含预设的字符串,也可以实现登录和页面点击

实现:

1.创建两个页面 1.html,cp /var/log/message /var/log/www/html/2.html
chmod 644 /var/ww/html/*.html

2.创建一个新的application:name :web-test

Configuration---hosts--web:选中web

Scenario

Steps: //URL写对,required codes:200即可

Authentication:

//在monitoring中可以看到

//Scenario自动创建的item

web.test.in[Scenario,,bps],下载速度

web.test.fail[Scenario],失败步数

web.test.error[Scenario],最后一次错误码

但是假如需要自定义的话,调用的话,需要替换Scenario为自己定义的web名字

例如:创建触发器:

{host.web.test.fail[www.magedu.com].last(0)}#0 //最后一个错误码不为0:#不等于0,证明失败了

{host:web.test.in[www.magedu.com].last(0)}<10000 //

//step 自动创建的items

web.test.in[Scenario,Step,bps],下载速度

web.test.time[Scenario,Step] 响应时间

web.test.error[Scenario,Step],返回码,第几个页面的返回码

{zabbix:web.test.time[www.magedu.com,Home].last(0)}>3

//在configuration-host--trigger自定义trigger的的时候:Expression中可以看到web自动创建的item

举例:

Item:10.0.0.101: Response code for step "1.html" of scenario "web-test

Function:Last (most recent) T value is > N

N:3//响应的时间的阈值为3s

第四章:

Zabbix分布式监控

上千台主机,多个proxy汇总消息,然后汇总到server上

Zabbix的三种架构

Server--agent

Serer-node-agent //早期的了

Server-proxy--agent //zabbix1.8之后使用了proxy

Proxy or Node?

代理proxy用于本区域数据收集,并将数据发送给server//不分析,不监控,也不展示

节点node提供完整的Zabbix server用以建立分布式监控中的层级

//node是一个完整的监控平台,可以直接在node上直接web




Maintenance:维护 //centralised集中化,//embedded嵌入式

Proxy不提供GUI,但是node有

Node需要手动创建DB,但是proxy是在server

//proxy的数据采集,是从server拿到以后自行创建的

Centralised configuration:集中化管理,proxy可以实现,Node需要单独配置每一个node需要单独监控的对象

Proxy 和 node对比

1.node本身是一台server,它有完整的web页面,完整的数据库,它将数据源源不断传送给Master

2.Proxy只有一个proxy的daemon进程,Proxy也有自己的数据库,但它的数据库只会保存一定的时间的数据,它与Master通信是将一批信息打包后发送到Master,Master讲这些数据merge入Master数据库

3.Mater-Proxy相比Master-Node的优点,

1.Proxy压力小,数据库之存储一定时间的数据

2.Master压力变小,数据不是源源不断获取,减小IO压力

3.架构更清晰,易维护

//DB,web,master压力,发送数据:{不断发送|打包发送}

//proxy的话:只需要导入schema.sq,而不需要导入data.sql,p_w_picpath.sql

:不需要自己配置,从server上复制配置,只负责保存一段时间的数据,过一阵把数据打包发过去即可

//node的话,三个数据库都要导入,需要安装web界面,还需要自己配置自己安装哪些界面

Frontend:前端,用户通过前段查看数据

Server-Proxy-CLient模型

//node:独立配置,独立DB,独立frontend,master只负责把其汇总即可



Server:也需要收集node的配置信息,在node上修改的configuration必须要同步到server端

Server-Node-client特性:

1.解决host过多时单台Server面临性能瓶颈,使用多个instance(每个node),每个instance都是一个独立的zabbix

2.支持热插拔,node和server的连接可以随时断开,但不影响node的正常运行

3.Node定时给Server发送configuration,history,event

4.Server定时给Node发送configuration //Node和server需要定时同步配置等信息

5.所有配置变更只有在Node节点操作,不能再Server操作

6.支持树状结构,Node又可以是个Server

//6.意思是,node可以继续分封,自己的子child,然后自己成为server,但是自己又是一个node

Server-Proxy-Client模型:轻量级

Proxy没有独立的配置文件,需要从server上,获取server指定给自己监控的host的item

周期性的定期发送给server,由server保存在server.DB中

Proxy不会向Server同步configuration,只会接受

Proxy的数据库定时会将数据传送给Server,Proxy本地数据库只保存最近没有发送的数据

//已经发送的数据不再保存

Zabbix Proxy的功能:

1.监控远程区域

2.监控那些具有非可靠通信的位置

3.减轻server的压力

4.分布式维护

注意:

1.zabbix proxy必须使用一个单独的数据库,就算是放在同一个主机上,也已定不能喝server使用同一个数据库

2.proxy指向zabbix server的数据库会破快配置信息

Zabbix的特性:

ProxyLocalBuffer和ProxyOfflineBuffer//负责配置数据保存多长时间

Proxy仅仅是一个数据收集器,不分析,不处理事件,活着发送报警信息

实验:zabbix-proxy实现

//ntpdate 10.0.0.1时间一定要一致

Server:200 ,proxy:100,agent:141//让53监控141

Proxy:只需要安装:zabbix-proxy,zabbix-proxy-MySQL,zabbix-agent,zabbix

1.Proxy::proxy暂时不安装agent

安装mysql,创建database:库名,随便起,例如:zabbix_proxy,

create database zabbix_proxy default character set utf8;

Grant all on zabbix_proxy.* to 'zbproxy'@'10.0.0.%' identifide by 'zbproxy'

insert into mysql.user(host,password,user) value ('10.0.0.*',password('zbproxy'),'zbproxy');

mysql -uzbproxy -pzbproxy -h20.0.0.53 //测试结果

Flush privileges

//yum install http://mirrors.163.com/centos/7/extras/x86_64/Packages/epel-release-7-5.noarch.rpm

Yum install zabbix-proxy zabbix-proxy-mysql //安装zabbix-proxy,会有依赖,使用yum安装

//rpm -ql zabbix-proxy-mysql,需要导入数据库

Mysql :只需要导入schema.sql即可

mysql -uzbproxy -pzbproxy -h20.0.0.53 zabbix_proxy < /usr/share/doc/zabbix-proxy-mysql-2.4.8/create/schema.sql

//导入数据库

2..proxy:vim /etc/zabbix/zabbix_proxy.conf

[root@localhost yum.repos.d]# grep -v "^#" /etc/zabbix/zabbix_proxy.conf | grep -v "^$"

Server=10.0.0.200,172.16.1.1 //允许来拉取数据的主机的IP地址

ServerActive=127.0.0.1,172.16.1.1

//主动通知来拉取数据的主机的IP地址(只有server与agent在同一主机时才有127.0.0.1)

Hostname=server.zhou.com //需与主机名保持一致

这个配置和该机器实际的主机名没有关系,但必须和zabbix server中添加该机器的时候的主机名一致,否则zabbix server获取不到信息

Hostname=10.0.0.53 //这个将会被server识别

DBHost=10.0.0.53

DBName=zabbix_proxy

DBUser=zbproxy

DBPassword=zbproxy

ConfigFrequency=1 //zabbix proxy向服务器检索配置数据信息的频率,

DataSenderFrequency=60 //zabbix proxy发送收集的数据给zabbix server的频率tart zabbix-proxy

netstat -tunlp | grep zabbix //它也监控在server上,因为他自己也相当于server端,在被动模式下,该参数将来被忽略

3agent:.

Yum -y install zabbix-agent //安装agent

vim /etc/zabbix/zabbix_agentd.conf

Server :指向proxy的ip,而不是server

ServerActive:指向proxy的ip,而不是server

Hostname:

UserParameter=test.Mem[*],/usr/bin/cat /proc/meminfo | awk '/$1:/{print $$2}' //提供测试用

systemctl enable zabbix-agent

systemctl start zabbix-agent

4.在server 上添加被监控主机,

首先得让server知道有一个proxy,

Administration--proxy--create proxy

Proxy name: 尽量使用ip,除非能够解析到主机

Proxy mode:

Active:proxy主动到server拉取配置文件 ,一般使用

Passive:等到server想自己发发送配置文件

Host:不要添加其他主机

在proxy上测试agent错误:

[root@localhost yum.repos.d]# zabbix_get -s 10.0.0.141 -k "test.if"

zabbix_get [21365]: Get value error: cannot connect to [[10.0.0.141]:10050]: [113] No route to host

解决方式: //很有可能是虚拟机的问题

1.iptables -F; iptables-save

2.Setenforce 0

3.Shutdown -h now

4.Pkill zabbix-agent ;systemctl restart zabbix-agent

然后,添加被监控主机:create hosts

Host name:10.0.0.141

Visible name:agent-141

New group:proxy-discovery:1

Agent interfaces:10.0.0.141

Monitored by proxy:10.0.0.53 //由53代为监控

//在monitoring--Dashboard上的Hosts tatus上看结果,就能发现已经能够检测得到

创建一个item进行测试:

注意事项:

//tail /var/log/zabbix/zabbix_proxy.log //随时查看日志

1.proxy的配置文件的Hostname= //必须和Administrator--proxy中定义的主机名一致

2.通过agent的server和server active都需要指定为proxy的ip

3.加快server和proxy的同步
zabbix-proxy.conf //配置文件

ConfigFrequency=1 //拉取配置文件,默认是3600s

DataSenFrequency=1 //默认是1s

ProxyLocalBuffer=0 //本地数据保存多长时间,0:不保存

ProxyOfflineBuffer=1 //proxy联系不到server后数据保存多长时间,1:1小时

//agent上有自定义监控mysql的UserParameter

//在/etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf

项目案例:

ConfigFrequency=300 DataSenderFrequency=60 //只需要在proxy上配置

Zabbix-server上需要的操作:添加proxy,添加host.proxy为主动模式,

Agent上修改配置后,需要重启agent服务

关键是在zabbix server的前端创建代理节点的名字时,该名字应和zabbix代理配置文件中指定的Hostname值相同 .配置zabbixproxy的配置文件zabbix_proxy.conf,

该文件中有两个重要的参数:

ConfigFrequency=60 #zabbix proxy 向服务器检索配置数据信息的频率,在被动模式下该参数将被忽略

DataSenderFrequency=60 #zabbix proxy发送收集的数据给zabbix server的频率

配置完毕

现在server上,建立proxy,然后建立host.proxy

问题:server从proxy上获取不到agent的数据

1.server端与proxy端时间不同步 //ntpdate 120.25.108.11

2.server端分配的缓存不够

3.server端分配的线程不够

4.server端负载比较大{CPU,IO,MEM}

1.查看zabbix_server有没有出现 Zabbix poller processes more than 75% busy 告警

2.htop iotop iostat //查看服务器的负载情况

3. vim /usr/local/zabbix/etc/zabbix_server.conf

StartPollers=500

StartPollersUnreachable=50

StartTrappers=30

StartDiscoverers=6

CacheSize=1G

CacheUpdateFrequency=300

StartDBSyncers=20

HistoryCacheSize=512M

TrendCacheSize=256M

HistoryTextCacheSize=80M

ValueCacheSize=1G

4. crontab -e

*/3 */1 * * * /usr/sbin/ntpdate -u 202.120.2.101 &> /dev/null

重启server端和proxy服务


两个问题:

1.Too many processes on Zabbix server

2.Server从proxy上获取不到数据 //agent上server指向proxy

3.报警机制的实现

4.Zabbix-node-agent实现

Proxy常见问题:

1.proxy的 Hostname和server的web里面配置的名称不一样。这样一定要注意了无论是proxy和server 还是agent和server Hostname都要相同的

附件:zabbix_proxy.conf文件详解

1.ProxyMode=0 //0位默认,主动,1位被动

2.Server=IP地址 #说明:此参数用于设置zabbix Server端IP地址。在主动模式下,二级代理将采集到的数据传送到此IP所在服务端。#但被模式下,此参数被忽略

3.#说明:system.hostname是ZABBIX内置的一个自动获取主机名的方法,为了方便配置,建议打开此参数而关闭Hostname参数#。

4. HostnameItem=system.hostname //system.hostname是ZABBIX内置的一个自动获取主机名的方法,为了方便配置,建议打开此参数而关 闭Hostname参数#。

5.LogFileSize=1 //当日志文件达到多少M时便轮转并自动覆盖

6. StartPollersUnreachable=1 //说明:用于设置诸如SNMP STRAPPER场景提交来的数据的接收进程数,若客户机SNMP TRAPPER技术较多,建议加大此参数值

7.//http://www.bkjia.com/xtzh/926118.html 地址

//server从proxy上接受不到信息的解决

注:在server上添加proxy后,server才能收到配置信息

//tail /var/log/zabbix/zabbix_proxy.log 这样才能收到 消息

然后会自动建立一条

Agent:

Server:为proxy

Serveractive:为proxy

Proxy:server为zabbix.server

/etc/zabbix/proxy/zabbix_proxy.conf

Server:是zabbix-server的ip

/etc/zabbix/proxy/zabbix_agent.conf

Server

Server.active //都是zabbix--server的ip地址

//需要说明的是,理论没有问题,只是虚拟机的问题


数据 主机 配置 监控 信息 数据库 参数 文件 时间 模板 服务 多个 问题 地址 时候 用户 代理 报警 主动 压力 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 重生之互联网科技帝国 融势互联网科技 左右互联网络科技 海南购全球互联网科技 互联网巨头投资的硬核科技 银川新华互联网科技学校地址 成都玖崟互联网科技有限公司乐商圈怎么样 须眉科技是互联网公司吗 国大互联网教育科技有限公司工作 燊美集互联网科技有限公司 互联网科技和法律行业 爱医互联网络科技 高科技互联网套路 互联网企业科技类企业如何做账 电子商务与互联网科技的关系 宁波跨境商互联网科技有限公司 马化腾互联网科技教学 科技互联网专业工作会议发言稿 现代互联网科技公司 黑龙江互联网科技公司 互联网科技的发展 智慧科技互联网 蓝色互联网科技 云创客互联网科技公司 来此购互联网科技有限公司 35岁以上互联网科技行业 信承诺互联网科技有限公司 互联网科技企业商标注意事项 互联网科技和医药行业 互联网大会出现的黑科技
0