转载来源 : 20171128 Zabbix(二) : https://www.jianshu.com/p/a945956cf1f1
目录
自定义key
网络发现
Web监控
主动检测
基于SNMP监控
基于JMX监控
Zabbix Proxy
Zabbix调优
一、自定义key
- 定义key:在zabbix agent端的配置文件上由用户通过UserParameter指令定义的key
- 配置文件路径:编辑/etc/zabbix/zabbix_agentd.conf文件,或者在/etc/zabbix/zabbix_agentd.d建立单独文件
- 语法格式:
不带参数:UserParameter=,
带参数:UserParameter=<key[*]>, - 实验1:实现查看被监控主机已使用内存情况
- 本文中所有实验主机ip情况:
ode0.hellopeiyang.com: 192.168.136.230, zabbix agent
node1.hellopieyang.com: 192.168.136.130, zabbix agent
node2.hellopeiyang.com: 192.168.136.131, zabbix server
- 步骤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地址范围内定期扫描;
- 发现可用服务
ftp, ssh, http等协议
zabbix_agent的响应
snmp_agent的响应
网络发现分两个阶段: - 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:连接模板至主机 - 实验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
Hostname=node0.hellopeiyang.com
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模式
-
步骤2:agent端向zabbix server发送指定数据
zabbix_sender -z 192.168.136.131 -p 10051 -s node0.hellopeiyang.com -k send.test.data -o 384
- 步骤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监控
- 实验环境:
node1.hellopeiyang.com: 192.168.136.130, zabbix agent
node2.hellopeiyang.com: 192.168.136.131, zabbix server
node3.hellopeiyang.com: 192.168.136.132, zabbix proxy - 步骤1:安装zabbix-proxy,并配置数据库
// 安装程序包
yum install zabbix-proxy-mysql zabbix-get zabbix-agent zabbix-sender
yum install mariadb-server
// 数据库服务器配置
vim /etc/my.cnf.d/server.cnf
[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时,必须使用此处指定的名称
Hostname=node4.hellopeiyang.com
// 数据库设置
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
Hostname=node1.hellopeiyang.com
systemctl start zabbix-agent.service
- 步骤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的调整
数据库的调整 -
数据调优要点:
扫描二维码关注公众号,回复: 10968758 查看本文章 -
历史数据不要保存太长时长
-
尽量让数据缓存在数据库服务器的内存中
-
触发器表达式:
减少使用min(), max(), avg()
尽量使用last(),nodata() -
数据收集:
polling较慢,减少使用SNMP/agentless/agent
尽量使用trapping, agent(active) -
数据类型:
文本型数据处理速度较慢,尽量少收集类型为text或string类型的数据
多使用类型为numeric的 -
zabbix服务器的进程:
-
服务器组件的数量,在/etc/zabbix/zabbix_server.conf alerter, discoverer,
escalator, http poller, housekeeper, icmp pinger, ipmi polller,
poller, trapper, configration syncer, … -
设定合理的缓存大小
CacheSize=8M
HistoryCacheSize=16M
HistoryIndexCacheSize=4M
TrendCacheSize=4M
ValueCacheSize=4M -
数据库优化:分表
主要分为以下三个方面的表:
history_*
trends*
events*
参考链接 :20171128 Zabbix(二) : https://www.jianshu.com/p/a945956cf1f1