- 自定义key
- 网络发现
- Web监控
- 主动检测
- 基于SNMP监控
- 基于JMX监控
- Zabbix Proxy
- Zabbix调优
一、自定义key
-
自定义key:在zabbix agent端的配置文件上由用户通过UserParameter指令定义的key
-
配置文件路径:
编辑/etc/zabbix/zabbix_agentd.conf文件,或者
在/etc/zabbix/zabbix_agentd.d建立单独文件 -
语法格式:
不带参数:UserParameter=<key>,<command>
带参数:UserParameter=<key[*]>,<command> -
实验1:实现查看被监控主机已使用内存情况
-
步骤1:在被监控主机编辑配置文件
// 定义无参数的key vim /etc/zabbix/zabbix_agentd.d/memory_usage.conf UserParameter=memory.used,free -m | awk '/^Mem/{print $3}' systemctl restart zabbix-agent.service
- 步骤2:在zabbix的web管理界面增加items,手动输入定义的key
-
实验2:通过一个带参数的key实现查看被监控主机多个内存使用指标
- 步骤1:在被监控主机编辑配置文件
// 定义有参数的key,$1,$2...代表参数 vim /etc/zabbix/zabbix_agentd.d/memory_usage.conf UserParameter=memory.stats[*], cat /proc/meminfo | awk '/^$1/{print $$2}' // 当command中出现$符号时,使用$$逃逸符代表属于command命令本身而非参数 systemctl restart zabbix-agent.service
- 步骤2:在zabbix的web管理界面增加items,手动输入定义的key,通过配置不同参数,可以快速添加多个items
二、网络发现:
-
网络发现:zabbix server扫描指定网络范围内的主机,并作出响应
-
发现方式:在ip地址范围内定期扫描
-
网络发现分两个阶段:
- discovery:发现,包含四种状态
UP/DOWN, DICOVERED/LOST - actions:以discovery events为触发条件,可以采取如下动作
send message:发消息
remote command:远程执行命令
add/remove host:添加/删除主机
enable/disable host:激活/禁用主机
add host to group:添加主机至主机组
link template to host:连接模板至主机
- discovery:发现,包含四种状态
-
实验3:在IP地址范围内发现主机后添加主机,并将指定模板链接至主机
-
步骤1:配置发现规则,指定IP范围、扫描间隔时间、检测所用的key
实际生产环境的间隔时间1h,本实验为加快实验速度调至1min
-
步骤2:配置执行动作,设置执行本动作的条件为步骤1设置的发现规则值为Up
- 步骤3:设置具体的执行动作:添加主机,链接至模板
-
三、Web监控:
-
功能:监控指定的站点的资源下载速度,及页面响应时间,还有响应代码
-
基本概念:
web scenario:web场景,监控站点
web step:web步骤,监控页面,每个页面都自动配置3个内建key,用于监控 -
内建key:
web.test.in[Scenario,Step,bps]:传输速率
web.test.time[Scenario,Step]:响应时长
web.test.rspcode[Scenario,Step]:响应码 -
实验4:实现监控站点
- 步骤1:建立web场景,指定更新间隔和访问网页的浏览器信息
- 步骤2:建立web步骤,分别给站点的不同网页添加监控,可以要求只返回头部,要求返回的状态码为200
- 步骤3:最终配置完成如图
-
步骤4:可以在monitoring查看web监控状态
四、主动检测:
(一)主动检测:
-
主动检测:agent向server请求与自己相关监控项配置,主动地将server配置的监控项相关的数据发送给server
-
agent端所需要基本配置:
ServerActive=
Hostname=
HostnameItem=
Hostname和HostnameItem同时存在时,以HostnameItem值为准 -
实验5:实现主动检测
- 步骤1:编辑配置文件,确保开启主动检测功能
ServerActive=192.168.136.131 systemctl restart zabbix-agent
- 步骤2:定义item,选择active模式
- 步骤3:可以看到监控情况
(二)zabbix_sender发送数据:
-
server端配置:
item type为"zabbix trapper",定义一个不与其它已有key冲突的key -
agent端zabbix_sender命令格式:
zabbix_sender
-z zabbix_server_ip
-p zabbix_server_port
-s zabbix_agent_hostname
-k key
-o value -
实验6:使用zabbix_sender主动向zabbix server发送数据
- 步骤1:定义items,选择zabbix trapper模式
-
步骤3:server端成功接收数据
五、基于SNMP监控:
(一)SNMP:简单网络管理协议
-
支持的网管操作:get, getnext(读)、set(写)、trap(陷阱)
读、写操作是 -
端口:161/udp (get, set), 162/udp (trap)
-
发展历程:
v1: 1989
v2c: 1993,目前最广泛使用
v3: 1998 -
关键概念:
- NMS:网络管理系统,向管理员提供界面以获取与改变设备的配置、信息、状态、操作等信息;NMS与Agent进行通信,执行相应的Set和Get操作,并接收代理发过来的警报(Trap)
- Agent:代理,负责NMS和设备SNMP操作的传递
- MIB:管理信息库,定义代理进程中所有可被查询和修改的参数
- OID:对象识别符,唯一指定管理信息库MIB中可访问的网络设备及其属性
-
经常使用的OID:
.1.3.6.1.2.1.
1.1.0:系统描述信息,SysDesc
1.3.0:监控时间, SysUptime
1.5.0:主机名,SysName
1.7.0:主机提供的服务,SysService
2.1.0:网络接口数目
2.2.1.2:网络接口的描述信息
2.2.1.3:网络接口类型
(二)Linux启用snmp
-
安装包:net-snmp net-snmp-utils
-
配置文件:
/etc/snmp/snmpd.conf,定义ACL(允许指定范围OID能被读取) -
启动服务:
systemctl start snmpd.service -
测试工具:
snmpget:获取指定OID信息
snmpwalk:获取指定OID根节点下所有OID叶节点的信息,遍历操作
options: -v, 协议版本 -c 认证,语法如下:
snmpget -v 2c -c public HOST OID
snmpwalk -v 2c -c public HOST OID
(三)实验:实现使用snmp v2协议监控
-
实验7:实现使用snmp v2协议监控指定网卡入栈的数据包数
- 步骤1:启用snmp服务,设置允许远程读操作的OID范围
yum install net-snmp net-snmp-utils vim /etc/snmp/snmpd.conf view systemview included .1.3.6.1.2.1.1 view systemview included .1.3.6.1.2.1.2 // 网络接口的相关数据 view systemview included .1.3.6.1.4.1.2021 // 系统资源负载:memory, disk io, cpu load view systemview included .1.3.6.1.2.1.25.1.1 systemctl start snmpd.service
- 步骤2:在zabbix-server上增加host的snmp监控接口
- 步骤3:增加items,使用snmp v2协议监控,key值可以任意指定,监控信息由OID指定,按照 /etc/snmp/snmpd.conf中的信息设置认证community
- 步骤4:稍候片刻,可以看到监控信息图
六、基于JMX监控
-
基本概念:
JMX:查询JVM信息的专用接口
Java-gateway:用于监控JMX应用的程序 -
JMX检测自带key:
jmx[object_name,attribute_name]
object name - 它代表MBean的对象名称
attribute name - 一个MBean属性名称,可选的复合数据字段名称以点分隔 -
实验8:实现通过JMX监控Tomcat程序的堆内存使用情况
- 步骤1:tomcat主机设置:开启JMX监控tomcat
vim /etc/sysconfig/tomcat CATALINA_OPTS="-Djava.rmi.server.hostname=192.168.136.230 -Djavax.management.builder.initial= -Dcom.sun.management.jmx remote=true -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false" systemctl start tomcat.service
- 步骤2:zabbix-java-gateway主机设置
zabbix-java-gateway可以搭建在zabbix-server上,也可以单独搭建
本实验将其搭建在zabbix-server上
yum install zabbix-java-gateway vim /etc/zabbix/zabbix_java_gateway.conf // 默认设置即可,不需修改 LISTEN_IP="0.0.0.0" LISTEN_PORT=10052 systemctl start zabbix-java-gateway.service
- 步骤3:zabbix-server主机设置,开启java gateway功能
vim /etc/zabbix/zabbix_server.conf JavaGateway=192.168.136.131 JavaGatewayPort=10052 StartJavaPollers=5 systemctl restart zabbix-server.service
- 步骤4:在zabbix-server上增加host的jmx监控接口
- 步骤5:增加items,使用JMX agent监控
- 步骤6:稍候片刻,可以看到监控信息图
七、Zabbix Proxy
-
降低zabbix server的network I/O的方法:
采用主动检测
通过proxy代理 -
zabbix proxy的原理:
由proxy收集本网段被监控主机的信息,以一定间隔时间向zabbix server同步信息 -
zabbix proxy的作用:
降低zabbix server的network I/O
实现分布式监控
解决跨网监控很难穿越防火墙的问题 -
实验9:实现zabbix proxy监控
-
步骤1:安装zabbix-proxy,并配置数据库
// 安装程序包 yum install zabbix-proxy-mysql zabbix-get zabbix-agent zabbix-sender yum install mariadb-server // 数据库服务器配置 vim [server] innodb_file_per_table = ON skip_name_resolve = ON max_connections = 2000 innodb_buffer_pool_size = 256M systemctl start mariadb mysql_secure_installation // 建立zabbix proxy数据库 mysql -uroot -pmagedu MariaDB [(none)]> create database zbxproxydb; MariaDB [(none)]> grant all on zbxproxydb.* to zbxproxyuser@'192.168.136.%' identified by 'centos'; cp /usr/share/doc/zabbix-proxy-mysql-3.4.4/schema.sql.gz /root gzip -d /root/schema.sql.gz mysql -uzbxproxyuser -pcentos -h192.168.136.132 zbxproxydb < /root/schema.sql
- 步骤2:配置zabbix proxy
vim /etc/zabbix/zabbix_proxy.conf Server=192.168.136.131 // zabbix server主机地址 ServerPort=10051 // zabbix server监听端口,默认值 // 当前代理服务器的名称;在server添加proxy时,必须使用此处指定的名称 // 数据库设置 DBHost=192.168.136.132 DBName=zbxproxydb DBUser=zbxproxyuser DBPassword=centos ConfigFrequency=10 // proxy向server同步配置数据的时间间隔(s) DataSenderFrequency=1 // proxy向server发送监控数据的时间间隔(s) systemctl start zabbix-proxy.service
- 步骤3:配置zabbix agent
yum install zabbix-agent zabbix-sender vim /etc/zabbix/zabbix_agentd.conf Server=192.168.136.132 // zabbix proxy的ip地址 ListenPort=10050 ListenIP=0.0.0.0 ServerActive=192.168.136.132 systemctl start zabbix-agent.service
- 步骤4:在server端添加此porxy
- 步骤5:在server端配置通过此proxy监控的主机
- 步骤6:添加items
建议使用主动检测"Zabbix agent (active)"
- 步骤7: 稍候片刻,可以看到监控信息图
八、Zabbix调优
-
zabbix调优的目的:
降低nvps(new values per second)值
降低zabbix server的磁盘I/O与网络I/O
降低mysql数据库的读写压力 -
zabbix调优方向:
数据的调整
server的调整
数据库的调整 -
数据调优要点:
- 历史数据不要保存太长时长
- 尽量让数据缓存在数据库服务器的内存中
- 触发器表达式:
减少使用min(), max(), avg()
尽量使用last(),nodata() - 数据收集:
polling较慢,减少使用SNMP/agentless/agent
尽量使用trapping, agent(active) - 数据类型:
文本型数据处理速度较慢,尽量少收集类型为text或string类型的数据
多使用类型为numeric的
-
zabbix服务器的进程:
-
设定合理的缓存大小
CacheSize=8M
HistoryCacheSize=16M
HistoryIndexCacheSize=4M
TrendCacheSize=4M
ValueCacheSize=4M
-
数据库优化:分表
主要分为以下三个方面的表:
history_*
trends*
events*