Zabbix监控接收SNMPTrap消息与SNMPTT结合

一.SNMP 协议

1.协议介绍

snmp 协议是日常使用的较多的一种协议,绝大多数网络设备/存储等都支持 snmp 协议,通过此协议可以实现设备状态的监控及管理。

2.主要组成

SNMP 协议包括以下三个部分:

SNMP Agent:负责处理 snmp 请求,主要包括 get,set 等操作。可通过此接口查询设备的运行状态(使用较多),或者变更配置(使用较少),默认使用 UDP 161 端口
SNMP Trap: snmp 通知消息,主动发送消息到管理端。如设备故障,端口 down 等都会实时发送消息到接收端。默认使用 UDP 162 端口
SNMP MIB:MIB 代表管理信息库,是按层次结构组织的信息的集合,定义了设备内被管理对象的属性。

3.基本操作

经常使用的终端命令有以下几个:
snmpwalk:遍历整个 snmp mib 树,通常用来检测 snmp 是否配置成功,一般完整 walk 到一个 MIB,在 MIB 末尾,都会输出“End Of Mib”的字样。否则可能为 Response timeout 等错误,以此来判断 snmp agent 是否配置成功
snmpget:获取某个 oid 的具体数值,通常用来检测 oid 是否正确
遇到很多使用 snmpwalk 来获取 oid 数据的,这是错误的用法,这样是不能测试 oid 的正确性。只有通过 snmpget+oid 能获取的数据的 oid,才能配置成独立的监控项,作为监控指标采集数据。
使用 zabbix 监控 snmp 设备状态,一般按照以下步骤进行操作:

  1. 通过 snmpwalk 确定 snmp agent 配置是否正确
  2. 通过 snmpget 获取具体的某个 oid 的数据,记录 oid
  3. 在 zabbix 上建立对应的 item,interface 选择设备 snmp 接口,Key 可随意,SNMP OID 输入 oid,SNMP community 输入 snmp community Type of information 选择对应类型即可。

二.SNMPTrap 监控

1.SNMPTT 介绍

SNMPTT (SNMP Trap Translator) 是一个 perl 语言编写的用来处理 snmptrap 消息的程序,可与 Net-SNMP / UCD-SNMP snmptrapd 程序(www.net-snmp.org)一起使用,基本流程如下

snmptt 负责处理 net-snmp 接收到的 trap 消息,通过 snmptt 命令或 snmptthandler 进行处理,解析消息之后可将消息写入文件或数据库。

2.安装 SNMPTT

操作系统为 centos 7.7 1908 x64,使用 yum 方式安装 snmptt,snmptt 不在默认的官方源,属于 epel 源,因此需要首先安装 epel 源。 添加 epel 源

yum install epel-release -y

安装 snmptt 及相关组件

yum install snmptt perl-Sys-Syslog perl-DBD-MySQL -y

 即可完成安装。

3.转换 MIB 文件

snmp trap 消息如果不翻译,原始内容可能是这样的

{"Version": 2,"TrapType": 0,"OID": null,"Other": null,"Community": "public","Username": "","Address": "172.16.1.64:49692","VarBinds": {".1.3.6.1.2.1.1.3.0": 7908527690000000,".1.3.6.1.2.1.2.2.1.1.18": 18,".1.3.6.1.2.1.2.2.1.2.18": "Vlanif103",".1.3.6.1.2.1.2.2.1.7.18": 2,".1.3.6.1.2.1.2.2.1.8.18": 2,".1.3.6.1.6.3.1.1.4.1.0": [1, 3, 6, 1, 6, 3, 1, 1, 5, 3]},"VarBindOIDs": [".1.3.6.1.2.1.1.3.0",".1.3.6.1.6.3.1.1.4.1.0",".1.3.6.1.2.1.2.2.1.1.18",".1.3.6.1.2.1.2.2.1.7.18",".1.3.6.1.2.1.2.2.1.8.18",".1.3.6.1.2.1.2.2.1.2.18"]
}

如果需要知道上述 oid 的具体内容及数值意义就需要对照 MIB 文件对消息进行“翻译”。snmptt 需要加载对应配置文件,对 trap 消息进行翻译。 snmptt 提供了 snmpttconvertmib 工具,snmpttconvertmib 是一个 Perl 脚本,它将读取 MIB 文件并将 TRAP-TYPE(v1)或 NOTIFICATIONATION-TYPE(v2)定义转换为 SNMPTT 可读的配置文件,从而实现对 trap 消息的翻译,基本命令如下:

/usr/bin/snmpttconvertmib --in=/usr/share/snmp/mibs/CPQHOST.mib --out=/etc/snmp/snmptt.conf.compaq --net_snmp_perl
  • /usr/share/snmp/mibs/ 为 centos7 默认的 mibs 文件路径,上传设备 mib 文件到此目录。
  • /etc/snmp/snmptt.cong.compaq 转换完输出的配置文件

由于一般情况设备 mib 可能有多个,建议转换为一个配置文件中,便于管理,可使用以下命令进行批量转换

for i in HUAWEI*
do
/usr/bin/snmpttconvertmib --in=$i --out=/etc/snmp/snmptt.conf.huawei --net_snmp_perl
done

 以 HUAWEI 开头的 mib 文件都转换为 snmptt.conf.huawei,基本都是一些私有的 MIB。snmptt 自带的 snmptt.conf 配置文件里已经包括了一些常用的配置如端口 up/down。实际过程中,只转换需要关注的 MIB 文件即可。 这里以配置华为 USG 6320 登录 trap 告警为例,从华为官网下载 MIB 文件,并上传到系统/usr/share/snmp/mibs 目录下,从 MIB 说明文件得知,用户登录 MIB 文件属于 HUAWEI-SECURITY-LOGIN-MIB.mib 文件,对 mib 文件进行转换

/usr/bin/snmpttconvertmib --in=/usr/share/snmp/mibs/HUAWEI-SECURITY-LOGIN-MIB.mib --out=/etc/snmp/snmptt.conf.HUAWEI-SECURITY-LOGIN --net_snmp_perl

输入如下

表示转换成功,已经生成 snmptt.conf.HUAWEI-SECURITY-LOGIN,这里转换出来的为标准的文件,不符合 zabbix snmptrap 文件格式,因此还需要执行以下命令对配置文件进行稍加修改。

sed -i 's/FORMAT/FORMAT ZBXTRAP $aA/g' /etc/snmp/snmptt.conf.HUAWEI-SECURITY-LOGIN

其实就是添加一个 ZBXTRAP 字符。很多文档遗漏此项,导致后续配置后 zabbix server 日志出现以下错误:

28391:20190923:150150.572 invalid trap data found "2019/09/23 15:01:49 .1.3.6.1.6.3.1.1.5.4 Normal "Status Events" 172.16.1.64 - Link up on interface 18.  Admin state: up.  Operational state: up
2019/09/23 15:01:49 .1.3.6.1.6.3.1.1.5.4 Normal "Status Events" 172.16.1.64 - A linkUp trap signifies that the SNMPv2 entity, 18 up up Vlanif103

无法识别 trap 文件格式。

4.配置 snmptt

snmptt 配置文件有 2 个

  • /etc/snmp/snmptt.ini snmptt 主要配置文件
  • /etc/snmp/snmptt.conf 系统默认的策略文件,包括一些基本的端口 up/down 的配置 修改默认的 snmptt.ini 配置文件,主要修改一下几个地方
mode = standalone
multiple_event = 0
net_snmp_perl_enable = 1
translate_log_trap_oid = 1
date_time_format = %Y/%m/%d %H:%M:%S
syslog_enable = 0

在这里需要加载刚才转换完成的 snmptt.conf.HUAWEI-SECURITY-LOGIN 配置文件 在 snmptt.ini 文件末尾如下添加 snmptt.conf.HUAWEI-SECURITY-LOGIN

[TrapFiles]
# A list of snmptt.conf files (this is NOT the snmptrapd.conf file).  The COMPLETE path
# and filename.  Ex: '/etc/snmp/snmptt.conf'
snmptt_conf_files = <<END
/etc/snmp/snmptt.conf
/etc/snmp/snmptt.conf.HUAWEI-SECURITY-LOGIN
END

snmptt 有二种模式,分别为

  • standalone 每次收到 trap 消息时读取 snmptt.ini 配置文件调用 snmptthandler 来处理 trap 消息
  • daemon 顾名思义守护进程方式,启动 snmptrap 时,初始化时一次性读取 snmptt.ini 二种方式各有区别,选择使用即可,具体区别可查看官方说明snmptt mode

 由于这里测试使用,经常修改 snmptt.ini 配置文件,如果使用 daemon 模式,那么每次修改 snmptt.ini 配置文件就需要重启 snmptt,因此这里我使用 standalone 模式。

5.配置 snmptrap

snmp trap 消息为主动通知,因此需要配置服务器来接收设备发送过来的 snmp trap 消息。net snmp 接收 trap 消息后,通过 traphandle 调用 snmptt 来对 trap 消息进行处理。 安装 net snmp,建议安装 net-snmp 的所有关联包

yum install net-snmp* -y

 即可完成 snmp 安装。 修改/etc/sysconfig/snmptrapd 为以下内容

OPTIONS="-m +ALL -On"

 修改/etc/snmp/snmptrapd.conf 配置文件,添加如下

authCommunity execute public
traphandle default /usr/sbin/snmptt

 authCommunity 可以配置多个 启动 snmptrap 服务

systemctl start snmptrapd
systemctl enable snmptrapd

在 usg 6320 上配置 trap 消息,并指向 snmp trap server,配置 Community 为 public

 配置之后,通过 web 登录 USG 和退出 USG,都会收到 trap 消息。snmptt 日志文件为/var/log/snmptt/snmptt.log 可看到相关信息,则表示配置处理 trap 成功,原始内容都为变量内容,不太友好, 可以通过调整 snmptt.conf.HUAWEI-SECURITY-LOGIN,配置 trap 消息输出格式。 snmptt.conf.HUAWEI-SECURITY-LOGIN 配置文件内容大致如下:

...
EVENT hwSecLOGINSucced .1.3.6.1.4.1.2011.6.122.62.2.1 "Status Events" Normal
FORMAT ZBXTRAP $aA $*
SDESCThe user login succeeded.
Variables:1: hwSecLOGINUserSyntax="OCTETSTR"Descr="The user name."2: hwSecLOGINIPSyntax="OCTETSTR"Descr="The User IP address."3: hwSecLOGINTimeSyntax="OCTETSTR"Descr="The User login time."4: hwSecLOGINTypeSyntax="OCTETSTR"Descr="The User access type."5: hwSecLOGINLevelSyntax="INTEGER32"Descr="The User login level."
EDESC
......

其中 FROMAT 就是需要修改定义的,其中包括很多变量,具体可在SNMPTT.CONF-FORMAT 常用的几个如下:

  • $aA snmp trap 的代理 IP,即源 IP
  • $* 所有变量
  • $n n 为数字,表示变量次序 Variables 为 trap 变量,基本可以看懂
  • hwSecLOGINUser 登录用户名
  • hwSecLOGINIP 登录 IP
  • hwSecLOGINTime 登录时间
  • hwSecLOGINType 登录类型
  • hwSecLOGINLevel 登录级别 按照变量,可以对 trap 消息进行定制化,还支持中文!将 FORMAT 一行修改为
FORMAT ZBXTRAP $aA User login succeed!userName = $1, loginIP = $2, loginTime = $3, accessType = $4, userLevel = $5

 修改后,登录 USG,查看 snmptt.log 日志,日志已经被格式成需要的格式,已经可以看懂了!

2019/09/27 15:08:49 hwSecLOGINSucced Normal "Status Events" 172.16.1.64 - ZBXTRAP 172.16.1.64 User login succeed!userName = admin, loginIP = 10.128.23.19, loginTime = 2019/09/27 16:54:08, accessType = web, userLevel = 15

至此完成了 snmp trap 消息的接收及翻译工作。

三.配置 Zabbix

1.zabbix 安装注意事项

zabbix 可以配置读取接收到的 trap 文件,从而实现对对 trap 消息的告警,如过 zabbix 是编译安装,系统需要安装 net-snmp-devel 包,编译时需要添加以下参数

–with-net-snmp

2.修改 zabbix server 配置文件

SNMPTrapperFile=/var/log/snmptt/snmptt.log
StartSNMPTrapper=1

 制定 trap 文件为 snmptt 日志文件,并开启 strap 处理的 poller,修改之后重启 zabbix server。

3.配置 snmptrap item

1.添加一个主机

SNMP interfaces 添加机器 Ip,添加之后创建 item

  • Type 为 SNMP trap
  • snmptrap 为 zabbix 内置的 key,用来获取 trap 文件内容
  • Type of information 选择 log
  • Log time format 和 snmptt 配置一致,配置为 yyyy/MM/dd hh:mm:ss 直接配置 Key 为 snmptrap,表示获取 snmptt 日志里的所有消息。配置之后登录设备,退出设备,可在 Last data 看到数据已经采集。(此截图为为进行翻译之前截取,翻译之后可显示中文,英文)

4.配置 Trigger

目前已经采集了 trap 日志,需要配置对应的 trigger 对 trap 消息进行告警。以 usg 设备登录错误为例,登录错误时间类型为:hwSecLOGINFailed,因此配置如下 trigger

配置之后,用错误的用户登录 USG就可以产生告警。可以在问题中查看告警信息即可。

告警内容有点模糊,同样修改下 snmptt.conf.HUAWEI-SECURITY-LOGIN,将登录失败的内容修改为容易理解的中文,即修改 FORMAT 为中文

EVENT hwSecLOGINFailed .1.3.6.1.4.1.2011.6.122.62.2.2 "Status Events" Normal
FORMAT ZBXTRAP $aA 用户登录设备失败!用户名 = $1,登录ip = $2, 登录时间 = $3, 接入类型 = $4, 用户级别 = $5
SDESCThe user login failed.
Variables:1: hwSecLOGINUserSyntax="OCTETSTR"Descr="The user name."2: hwSecLOGINIPSyntax="OCTETSTR"Descr="The User IP address."3: hwSecLOGINTimeSyntax="OCTETSTR"Descr="The User login time."4: hwSecLOGINTypeSyntax="OCTETSTR"Descr="The User access type."
EDESC

配置后告警内容

5 分钟后故障自动恢复,至此配置完成。

5.一般用法

以上只是简单测试,生产环境中应该注意以下事项

  • 分析需要告警的 trap event 类型 如:hwSecLOGINFailed/warmStart/linkDown/coldStart/authenticationFailure 根据类型,配置对应的 triger 即可
  • 可直接配置对应的 key 来采集对应的指标,只要收到消息就告警。如下图配置只采集 hwSecLOGINSucced 的指标。

配置对应的 trigger,进行告警

  • 如只配置了采集对应的 item,而没有配置 snmptrapkey,建议配置一个 snmptrap.fallback 的 item,配有匹配的 item 消息,都会保存到此 item 里
  • 更多配置及用法参考 zabbix 官网配置zabbix trap

四.注意事项

1.MIB 文件

一定要确保 MIb 文件的准确性,设备版本与 MIB 文件版本必须一致,包括大小版本。如不一致会看到解析文件出现以类似错误

2019/09/27 08:34:23 .1.3.6.1.4.1.2011.6.122.62.2.2 Normal "Status Events" 172.16.1.64 - the user 123 login with web on 10.128.23.19 in 2019/09/27 08:34:22 by time on 2019/09/27 08:34:22 ,status is Wrong Type (should be OCTET STRING): 0

 说明 mib 文件里定义的 trap 变量类型和实际收到的 trap 消息变量类型不一致,解析错误。

2.zabbix 配置

建议对同一类型设备配置统一的 snmp trap 模版,相同型号直接关联模版即可使用。

3.snmptt 日志

随之 snmp trap 消息的增多,snmptt 会逐渐变大,建议配置 logrotate 对日志进行切分,使用 yum 安装的 snmptt 已经自动配置了,使用编译安装的,可以参考 /etc/logrotate.d/snmptt

/var/log/snmptt/snmptt*.log /var/log/snmptt/snm ptthandler.debug {weeklynotifemptymissingok
}
/var/log/snmptt/snmptt.debug {weeklynotifemptymissingokpostrotate/etc/init.d/snmptt reload >/dev/null 2>/dev/null || trueendscript
}

snmptt 可开启 debug 日志,建议在测试阶段开启 debug 日志,以便进行排错。

参考文档
1.http://snmptt.sourceforge.net/docs/snmptt.shtml
2.https://www.miraclelinux.com/product-service/zabbix/tech-lounge/zbx-tl-001

探索技术无限可能,博主具有丰富监控模板资源及开发能力和项目管理经验,欢迎添加交流一起探讨,解决你的技术难题!

微信号:king_songax

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/199136.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode-二叉树OJ题

1.单值二叉树 965. 单值二叉树https://leetcode.cn/problems/univalued-binary-tree/ 先判断这棵树是否为空&#xff0c;如果是空树则是true。再判断左子树是否为空&#xff0c;并且左子树的值val和当前节点的val不相同&#xff0c;如果这左子树不为空且val不等于root的val则…

二百一十二、Flume——Flume实时采集Linux中的目录文件写入到HDFS中(亲测、附截图)

一、目的 在实现Flume实时采集Linux中的Hive日志写入到HDFS后&#xff0c;再做一个测试&#xff0c;用Flume实时采集Linux中的目录文件&#xff0c;即使用 Flume 监听Linux整个目录的文件&#xff0c;并上传至 HDFS中 二、前期准备 &#xff08;一&#xff09;安装好Hadoop、…

一张网页截图,AI帮你写前端代码,前端窃喜,终于不用干体力活了

简介 众所周知&#xff0c;作为一个前端开发来说&#xff0c;尤其是比较偏营销和页面频繁改版的项目&#xff0c;大部分的时间都在”套模板“&#xff0c;根本没有精力学习前端技术&#xff0c;那么这个项目可谓是让前端的小伙伴们看到了一丝丝的曙光。将屏幕截图转换为代码&a…

02_W5500网络初始化

目录 1.如何与W5500通信&#xff1f; 2.SPI数据帧&#xff1a; 3.W5500寄存器&#xff1a; 通用寄存器&#xff1a; Socket 寄存器区: 4.代码分析&#xff1a; 5.测试&#xff1a; 1.如何与W5500通信&#xff1f; 我们在W5500介绍中可以看到W5500支持SPI通信协议&#x…

RoPE旋转位置编码浅析

RoPE旋转位置编码浅析 本文介绍了旋转位置编码RoPE在大模型中的广泛应用,包括Llama、Mistral 7B、Baichuan、ChatGLM、Qwen、…等。由于计算资源限制,大模型通常在较小的上下文长度中进行训练,导致在推理超出预训练长度时性能显著下降。为了解决这个问题,涌现了许多基于Ro…

MySQL数据库基础篇

文章目录 前言1.MySQL数据库概述2.SQL2.1 SQL通用语法2.2 SQL分类2.3 DDL2.3.1 数据库操作2.3.2 表操作 2.4 图形化界面工具2.5 DML2.5.1 添加数据2.5.2 修改数据2.5.3 删除数据 2.6 DQL2.6.1 基本语法2.6.2 基础查询2.6.3 条件查询2.6.4 聚合函数2.6.5 分组查询2.6.6 排序查询…

怎样创建自己的百度百科词条?

对于企业、名人、品牌等&#xff0c;拥有一条详实的百度百科词条更是形象塑造和品牌推广的有效途径。怎样创建自己的百度百科词条&#xff1f;创建百度百科词条并非难事&#xff0c;关键在于态度和执行力。接下来伯乐网络传媒就来给大家分享一下&#xff01; 一、创建百度百科词…

Zabbix自定义监控内容

自定义监控客户端服务器登录的人数 需求&#xff1a;限制登录人数不超过 3 个&#xff0c;超过 3 个就发出报警信息 1.在客户端创建自定义key //明确需要执行的 linux 命令 who | wc -l//创建 zabbix 的监控项配置文件&#xff0c;用于自定义 key vim /etc/zabbix/zabbix_ag…

vue2-省市县三级联动选择框

Json数据&#xff1a;https://yjy-oss-files.oss-cn-zhangjiakou.aliyuncs.com/tuxian/area.json 如何访问本地文件参考&#xff1a;vue-访问本地json文件_vue3读取json文件-CSDN博客 .vue文件&#xff1a; <template><select v-model"mailAddress1" style…

【云备份】客户端实现 及 项目整体总结

文章目录 客户端客户端实现思想客户端文件操作类的设计与拷贝Util.hpp的设计data.hpp的设计Storage —— 持久化存储Initload——数据初始化加载 cloud.hpp的设计GetFileIdentifier——创建文件唯一标识Upload—— 文件上传IsNeedupload —— 客户端文件是否需要上传判断RunMod…

chineseocr项目不使用web推理-docker容器化

整个流程介绍 拉取 ufoym/deepo 镜像 -- 因为包含了主流深度学习框架&#xff0c;镜像4G出头。拉取 chineseocr 项目代码。修改代码&#xff0c;不使用web&#xff0c;增加命令行传入图片路径的功能打包成docker镜像。 开始 拉取 ufoym/deepo 镜像 &#xff1a;cpu版本为例 do…

设计必备网站,每天必看,无需翻墙。

设计师每天需要浏览各类设计互交网站&#xff0c;找素材、找灵感、看教程等等&#xff0c;下面就推荐几个非常好用的设计网站&#xff0c;我本人用了好几年&#xff0c;对广大设计师们一定有帮助&#xff0c;感觉收藏起来吧&#xff01; 1、免费设计素材——菜鸟图库 https://…

Java Websocket实现即时通讯功能入门教程

近年来&#xff0c;即时通讯&#xff08;Instant Messaging&#xff09;已经成为了人们日常生活中不可缺少的一部分。而Java Websocket技术则提供了一种简便高效的方式来实现即时通讯功能。本文将介绍如何使用Java Websocket来实现即时通讯&#xff0c;并提供具体的代码示例。 …

Vue自定义hook函数

hook 本质是一个函数&#xff0c;可以把 setup 函数中使用的 Composition API 进行封装。 hook 类似于 Vue2 中的 mixin 混合。 自定义 hook 的优势&#xff1a;复用代码&#xff0c;让 setup 中的逻辑更加清晰易懂。 自定义hook函数&#xff1a; 1、在 src 目录下创建 hooks…

跨境电商与本土文化融合:推动全球商业合作

随着全球经济的日益一体化&#xff0c;跨境电商成为推动全球商业合作的重要力量。在这个数字化时代&#xff0c;跨境电商不仅在商品流通上起到了桥梁作用&#xff0c;更在文化交流方面发挥了积极的作用。本文将深入探讨跨境电商如何与本土文化融合&#xff0c;以及这种融合如何…

GItLab项目导入到HBuilderX中,下载TortoiseGit 安装

1.项目拉取 选择你要下载的项目,选master下完后内部在切换想要分支,一般选http下载,下图我选的是ssh下载 选择导入,git导入 复制上地址 如果提示这个点击确定 找到下图位置安装 2.TortoiseGit 下载安装 TortoiseGit 官网下载地址&#xff1a;Download – TortoiseGit – Wind…

做一个类似东郊到家的上门服务类系统有哪些功能?

上门服务系统是一款便捷的技师接单、上门提供理疗服务的软件。我们拥有优秀的开发团队&#xff0c;为您量身定制解决方案&#xff0c;价格合理&#xff0c;用心服务。 预约上门&#xff1a;该功能是预约上门推拿理疗按摩系统软件小程序APP的核心功能。消费者通过系统预约下单&a…

待办事项app推荐哪一款?每日待办事项提醒用什么APP

每天的生活中&#xff0c;我们总是充满着各种待办事项&#xff0c;如果不及时处理&#xff0c;就会导致各种问题的出现。在众多的待办事项app中&#xff0c;如何选择一款最适合自己的app呢&#xff1f;所谓待办事项&#xff0c;通常是指尚未着手的事项。在日常生活中&#xff0…

求臻医学胃癌关爱日:美味的高“盐”值杀手

胃癌的发病率具有广泛的地域差异&#xff0c;在东南亚国家尤为高发。韩国是胃癌发病率排名第一的国家&#xff0c;其次为日本&#xff0c;中国紧随其后&#xff0c;由于中国人口基数大&#xff0c;其绝对患胃癌人数为全球第一&#xff0c;每年有100多万新诊断患者&#xff0c;其…

大文本限制录入文字后通过输入法鼠标单击还可继续超限额录入问题

textInpEl.on(keyup propertychange, "textarea", function () { var realMaxLength $(this).parent().parent().find(".maxNum").text(); //真实的最大长度 var endFontLen $(this).val().length; if (endFontLen < rea…