服务器监控系统Zabbix的主动监控、SNMP监控、JMX监控图解教程(第五章)

xiaoxiao2021-02-28  15

(18)主动监控:

被动检测:相对于agent而言;agent, server向agent请求获取配置的各监控项相关的数据,agent接收请求、获取数据并响应给server;主动检测:相对于agent而言;agent(active),agent向server请求与自己相关监控项配置,主动地将server配置的监控项相关的数据发送给server;

相对于主动监控,被动监控需要消耗掉更多的资源,所以当集群中压力比较大的情况下,建议使用主动监控;如果压力还是很大,则需要使用proxy来分担zabbix的部分压力;

要想启用主动监控,必须确保Agent端开启了主动监控的功能,即配置"Active checks related"端的配置,必须指定ServerActive(zabbix server的主机是谁)、Hostname(Agent自己的主机名)或者HostnameItem。还要在zabbix server上指定Type;

zabbix_sender发送数据:

zabbix server上的某主机上,直接定义Item时随便定义一个不与其它已有key冲突的key即可,即item type为"zabbix trapper";

zabbix_sender:

-z zabbix_server_ip

-p zabbix_server_port

-s zabbix_agent_hostname

-k key

-o value

注意:对于正常状态下的监控,Item中使用key来获取数据,需要指定的Type为Zabbix agent(active);如果我们想要手动发送一串数据给服务端,并且让服务端捕获,并生成一个监控信息的话,需要使用zabbix trapper;两者其实都是由Agent发送数据给server。不同的是,Zabbix Agent(active)使用的是已经定义的key;而zabbix trapper使用的是通过zabbix_sender命令发送的数据,这种方式经常用于实验环境;

实验:主动监控-zabbix agent(active),只需要Agent端打开主动监控的配置,然后web-GUI中配置的Item使用zabbix agent(active)的type即可,此处不做演示!

实验:主动监控-zabbix trapper:

node1节点上:

开启主动监控的配置!

node1节点上:

zabbix_sender -z 192.168.109.7 -p 10051 -s node1.com -k send.test.data -o 156

info from server: "processed: 1; failed: 0; total: 1; seconds spent: 0.000609"

sent: 1; skipped: 0; total: 1

zabbix_sender -z 192.168.109.7 -p 10051 -s node1.com -k send.test.data -o 651

info from server: "processed: 1; failed: 0; total: 1; seconds spent: 0.040468"

sent: 1; skipped: 0; total: 1

(19)基于SNMP(简单网络管理协议)协议的监控(仅需要了解即可):

注意:以上的监控都是基于Zabbix Agent服务来实现监控的;

SNMP协议是一款非常古老的协议。几乎所有设备都支持该协议,他是用UDP的161、和UDP的162端口。他有三个版本,v1、v2c、v3,每个版本之间的差异很大,并不会完全的兼容。该协议本身不安全,所以,启用SNMP需要经过精心的设计,他拥有管理的功能,例如禁用网卡、远程重启等等;实际生产中,在被监控的状态下,一般只启用数据请求、响应功能(只读:get、getnext),不应该启用管理功能(写:set);SNMP被管控端可以使用trap方法,将数据发送给管控端,类似于Zabbix trapper;

MIB:Management Information Base,管理信息数据库

OID:Object ID,对象标识符,OID定义"通信和信息处理世界中的任何事物,它是可标识(可以命名)的,同时它可被注册"可以看出,OID是与对象相关联的用来无歧义地标识对象的全局唯一的值,可保证对象在通信或信息处理中正确地定位和管理。通俗地讲,OID就是网络世界中对象的身份证。

使用SNMP协议监控设备,监控的对象一般是交换机、路由器等设备;

实验:实现基于SNMP的监控:

在node2节点上:

yum install net-snmp net-snmp-utils

systemctl restart snmpd

snmpget -v 2c -c public 192.168.109.6 .1.3.6.1.2.1.1.3.0#本机验证

DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (15878) 0:02:38.78

snmpget -v 2c -c public 192.168.109.6 .1.3.6.1.2.1.1.5.0#本机测试

SNMPv2-MIB::sysName.0 = STRING: node2

snmpwalk -v 2c -c public 192.168.109.6 .1.3.6.1.2.1.25#本机测试

HOST-RESOURCES-MIB::hrSystemUptime.0 = Timeticks: (1752903) 4:52:09.03

HOST-RESOURCES-MIB::hrSystemUptime.0 = No more variables left in this MIB View (It is past the end of the MIB tree)

vim /etc/snmp/snmpd.conf

view systemview included .1.3.6.1.2.1.1

view systemview included .1.3.6.1.2.1.25.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

systemctl restart snmpd

注意:此处的实验使用了Linux OS,实际生产中,一般使用SNMP来配置路由器或者交换机。一定要注意,配置之前,先在SNMP的配置文件中启用该分支,还要了解该分支下有哪些OID,代表的含义是什么,并设置好ACL,确保有监控的权限;

注意:/etc/snmp/snmpd.conf配置文件的结构:

注意:真正的管理端需要启用的是/usr/lib/systemd/system/snmptrapd.service服务;被管控端需要启用/usr/lib/systemd/system/snmpd.service服务;

注意:默认情况下,snmpd服务(161端口)开放的就是一个只读的权限,配置文件默认所授予的可以访问的资源应该够SNMP的基础应用!

注意:使用SNMP访问的常见资源是:

.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:网络接口类型

(20)基于JMX的监控:

在企业中,很多程序是基于Java来编写的,java程序运行在JVM之上,而JVM自己就可以监听在某个套接字上,将自己内部的状态信息输出出去,所以监控服务器只需要直接连接JVM的套接字就可以获取到Java进程的相关信息,不需要通过Agent、SNMP;可是zabbix是没有办法自己链接JVM的套接字的,也就是说,zabbix自身是不能够作为客户端来链接该套接字的。所以,就需要额外安装一个服务来连接JVM的套接字的。这个服务就是zabbix-java-gateway.x86_64(Java网关);可以通过该网关来监听多个JVM;zabbix-java-gateway可以是一个单独的主机,可以和zabbix server安装到一台主机上;

如果以监控tomcat为例,首先需要在/etc/sysconfig/tomcat文件中添加:

CATALINA_OPTS="

-Djava.rmi.server.hostname=TOMCAT_SERVER_IP

-Djavax.management.builder.initial= -Dcom.sun.management.jmxremote=true

-Dcom.sun.management.jmxremote.port=12345

-Dcom.sun.management.jmxremote.ssl=false

-Dcom.sun.management.jmxremote.authenticate=false"

#该配置的含义就是启用JVM的JMX接口,默认是关闭的;

注意:CATALINA_OPTS表示仅对tomcat有效,如果是JAVA_OPTS表示对所有的JAVA进程都有效!

然后安装zabbix-java-gateway.x86_64;

之后还需要在Zabbix server端指明zabbix-java-gateway的IP、端口号、以及开启的进程:

JavaGateway=172.16.0.70

JavaGatewayPort=10052

StartJavaPollers=5

实验:实现基于JMX的监控:

node2节点上:

yum install java-1.8.0-openjdk-devel tomcat-webapps.noarch tomcat-admin-webapps.noarch tomcat-docs-webapp.noarch

vim /etc/sysconfig/tomcat

CATALINA_OPTS="-Djava.rmi.server.hostname=192.168.109.6 -Djavax.management.builder.initial= -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"

systemctl start tomcat.service

ss -ntlu #查看tcp的12345端口是否打开,确定配置是否正常!

zabbix server节点上:

yum install zabbix-java-gateway.x86_64

cd /etc/zabbix/

vim zabbix_java_gateway.conf#默认配置即可,此处只是为了确认一下;

systemctl restart zabbix-java-gateway.service

vim /etc/zabbix/zabbix_server.conf

JavaGateway=192.168.109.7

JavaGatewayPort=10052

StartJavaPollers=5

systemctl restart zabbix-server.service

systemctl status zabbix-server.service#查看5个poller进程是否正常运行;

注意:实验中所使用的监控项的含义:

jmx[object_name,attribute_name]

object name - 它代表MBean的对象名称

attribute name - 一个MBean属性名称,可选的复合数据字段名称以点分隔

示例:jmx["java.lang:type=Memory","HeapMemoryUsage.used"]

jmx的详细文档:

https://docs.oracle.com/javase/1.5.0/docs/guide/management/agent.html

注意:如果使用系统提供的模板,可能会应为没有启用该项功能而导致不支持,例如8443端口,一般是不开启的;

转载请注明原文地址: https://www.6miu.com/read-1400302.html

最新回复(0)