分布式监控系统之Zabbix 使用SNMP、JMX信道采集数据的原理解析

  前文我们了解了zabbix的被动、主动以及web监控相关话题,回顾请参考https://www.jb51.net/article/200679.htm;今天我们来了解下zabbix使用SNMP和JMX信道采集数据的相关话题;

  1、SNMP协议介绍

  SNMP是英文“Simple Network Management Protocol”的缩写,中文意思是“简单网络管理协议,SNMP是一种简单网络管理协议,它属于TCP/IP五层协议中的应用层协议,用于网络管理的协议,SNMP主要用于网络设备的管理。SNMP的基本思想:为不同种类的设备、不同厂家生产的设备、不同型号的设备,定义为一个统一的接口和协议,使得管理员可以是使用统一的外观面对这些需要管理的网络设备进行管理。通过网络,管理员可以管理位于不同物理空间的设备,从而大大提高网络管理的效率,简化网络管理员的工作。SNMP协议是TCP/IP协议簇的一个应用层协议,在1988年被制定,并被Internet体系结构委员会(IAB)采纳作为一个短期的网络管理解决方案,由于SNMP的简单性,在Internet时代得到了蓬勃的发展,1992年发布了SNMPv2版本,以增强SNMPv1的安全性和功能,SNMP的协议版本目前有SNMP v1、SNMP v2c和SNMP v3三种版本,其具体差别如下:

  SNMP v1采用社区名(Community Name)认证,社区名用来定义SNMP NMS和SNMP Agent的关系,如果SNMP报文携带的社区名没有得到设备的认可,该报文将被丢弃,社区名起到了类似于密码的作用,用来限制SNMP NMS对SNMP Agent的访问。

  SNMP v2c也采用社区名认证,它在兼容SNMP v1的同时又扩充了SNMP v1的功能,它提供了更多的操作类型(GetBulk和InformRequest)、支持更多的数据类型(Counter64等)、提供了更丰富的错误代码且能够更细致地区分错误。

  SNMP v3提供了基于用户的安全模型(USM,User-Based Security Model)的认证机制,用户可以设置认证和加密功能,认证用于验证报文发送方的合法性,避免非法用户的访问,加密则是对NMS和Agent之间的传输报文进行加密,以免被窃听。通过有无认证和有无加密等功能组合,可以为SNMP NMS和SNMP Agent之间的通信提供更高的安全性。

  2、SNMP工作机制

  SNMP的工作机制SNMP网络元素分为NMS和Agent两种:NMS(Network Management Station,网络管理站)是运行SNMP客户端程序的工作站,能够提供非常友好的人机交互界面,方便网络管理员完成绝大多数的网络管理工作。Agent是驻留在设备上的一个进程,负责接收、处理来自NMS的请求报文。在一些紧急情况下,如接口状态发生改变等,Agent也会主动通知NMS。NMS是SNMP网络的管理者,Agent是SNMP网络的被管理者。NMS和Agent之间通过SNMP协议来交互管理信息。

  3、SNMP数据交互

  SNMP管理进程与代理进程之前为了交互信息,定义了5种报文:

    get-request操作:从代理进程处提取一个或多个参数值。

    get-next-request操作:从代理进程处提取一个或多个参数的下一个参数值。

    set-request操作:设置代理进程的一个或多个参数值。

    get-response操作:返回的一个或多个参数值。这个操作是由代理进程发出的。

    trap 操作:代理进程主动发出的报文,通知管理进程有某些事情发生。

  SNMP数据交互示意图

  4、SNMP组织结构

  一套完整的SNMP系统主要包括以下几个方面:SNMP报文协议。管理信息结构(SMI, Structure ofManagement Information),一套公用的结构和表示符号。管理信息库(MIB,Management Information Base),管理信息库包含所有代理进程的所有可被查询和修改的参数。OID(Object Identifiers),一个OID是一个唯一的键值对,用于标识具体某一个设备的某个具体信息(对象标识),如端口信息、设备名称等。

  5、SNMP MIB

  所谓(MIB)管理信息库,就是所有代理进程包含的、并且能够被管理进程进行查询和设置的信息的集合。MIB是基于对象标识树的,对象标识是一个整数序列,中间以"."分割,这些整数构成一个树型结构,类似于 DNS或Unix的文件系统,MIB被划分为若干个组,如system、 interfaces、 at(地址转换)和ip组等。iso.org.dod.internet.private.enterprises( 1.3.6.1.4.1)这个标识,是给厂家自定义而预留的,比如华为的为1.3.6.1.4.1.2011,华三的为1.3.6.1.4.1.25506。

  Centos 部分常用的OID

  6、在Linux上启用SNMP

[root@node05 ~]# yum install -y net-snmp

  提示:以上安装是安装snmp agent,运行在被监控端;

  安装snmp客户端工具

[root@node05 ~]# yum install -y net-snmp-utils

  配置snmp允许那些社区的客户端获取数据,以及对snmp有哪些权限,允许获取那些数据

  提示:以上配置表示,首先将社区名public映射为一个安全的名称notConfigUser;其次映射安全名notConfigUser映射为组名notConfigGroup,并将安全模式v1和v2c加入到组内,这表示只要在这个组内的成员都兼容v1 和v2c两个版本的安全模式;第三是创建一个视图,名为systemview,并配置允许那些叶子节点或子树的oid加入到此视图;最后授权notConfigGroup组里的任何用户,用任何安全模式都对systemview拥有只读权限,不拥有写权限,也没有例外;简单点讲以上配置表示只要是public社区的用户,都将识别为notConfigGroup里的用户,而对应组里的用户拥有systemview授权的子树只读权限;这里需要注意,子树就是我们要获取的数据对象的标识(oid);我们授权只需要修改对应systemview拥有那些子树或叶子节点即可;授权一颗子树意味着该子树下的所有叶子节点或子树都可以被访问,授权一个叶子节点表示精确只能看到对应叶子节点;

  示例:授权systemview视图拥有对操作系统cpu负载1分钟的数据

  提示:只需要将对应cpu1分钟负载对应oid加入到systemview视图即可;

  启动snmpd

[root@node05 ~]# systemctl start snmpd.service
[root@node05 ~]# ss -unl
State Recv-Q Send-Q  Local Address:Port    Peer Address:Port
UNCONN 0 0    *:161     *:*
UNCONN 0 0   127.0.0.1:323     *:*
UNCONN 0 0    ::1:323     :::*
[root@node05 ~]#

  提示:请确保udp的161端口正常监听;

  验证:使用snmpget工具来获取node05上的cpu1分钟负载数据

[root@node05 ~]# snmpget -c public -v 2c node05 .1.3.6.1.4.1.2021.10.1.3.1
UCD-SNMP-MIB::laLoad.1 = STRING: 0.00
[root@node05 ~]# uptime
 20:57:49 up 35 min, 1 user, load average: 0.00, 0.02, 0.05
[root@node05 ~]#

  提示:可以看到用snmpget工具获取的数据和我们使用uptime命令获取的数据一样;指定获取数据可以使用oid来指定,也可以使用mib来获取;

[root@node05 ~]# snmpget -c public -v 2c node05 UCD-SNMP-MIB::laLoad.1
UCD-SNMP-MIB::laLoad.1 = STRING: 0.00
[root@node05 ~]#

  使用snmpwalk工具获取非叶子节点下所有数据

  首先授权snmp能够看到对应子树

  提示:以上红框中内容表示systemview包含.1.3.6.1.2.1.25这个子树,这意味着其下的所有子树和叶子节点都可以看到;

  重启snmpd

[root@node05 ~]# systemctl restart snmpd.service
[root@node05 ~]# ss -unl
State Recv-Q Send-Q  Local Address:Port    Peer Address:Port
UNCONN 0 0    *:161     *:*
UNCONN 0 0   127.0.0.1:323     *:*
UNCONN 0 0    ::1:323     :::*
[root@node05 ~]#

  获取系统进程列表

[root@node05 ~]# snmpwalk -c public -v 2c node05 .1.3.6.1.2.1.25.4.2.1.2
HOST-RESOURCES-MIB::hrSWRunName.1 = STRING: "systemd"
HOST-RESOURCES-MIB::hrSWRunName.2 = STRING: "kthreadd"
HOST-RESOURCES-MIB::hrSWRunName.3 = STRING: "ksoftirqd/0"
HOST-RESOURCES-MIB::hrSWRunName.5 = STRING: "kworker/0:0H"
HOST-RESOURCES-MIB::hrSWRunName.7 = STRING: "migration/0"
HOST-RESOURCES-MIB::hrSWRunName.8 = STRING: "rcu_bh"
HOST-RESOURCES-MIB::hrSWRunName.9 = STRING: "rcu_sched"
HOST-RESOURCES-MIB::hrSWRunName.10 = STRING: "watchdog/0"
HOST-RESOURCES-MIB::hrSWRunName.11 = STRING: "watchdog/1"
HOST-RESOURCES-MIB::hrSWRunName.12 = STRING: "migration/1"
HOST-RESOURCES-MIB::hrSWRunName.13 = STRING: "ksoftirqd/1"
HOST-RESOURCES-MIB::hrSWRunName.14 = STRING: "kworker/1:0"
HOST-RESOURCES-MIB::hrSWRunName.15 = STRING: "kworker/1:0H"
HOST-RESOURCES-MIB::hrSWRunName.17 = STRING: "kdevtmpfs"
HOST-RESOURCES-MIB::hrSWRunName.18 = STRING: "netns"
HOST-RESOURCES-MIB::hrSWRunName.19 = STRING: "khungtaskd"
HOST-RESOURCES-MIB::hrSWRunName.20 = STRING: "writeback"
HOST-RESOURCES-MIB::hrSWRunName.21 = STRING: "kintegrityd"
HOST-RESOURCES-MIB::hrSWRunName.22 = STRING: "bioset"
HOST-RESOURCES-MIB::hrSWRunName.23 = STRING: "kblockd"
HOST-RESOURCES-MIB::hrSWRunName.24 = STRING: "md"
HOST-RESOURCES-MIB::hrSWRunName.25 = STRING: "kworker/0:1"
HOST-RESOURCES-MIB::hrSWRunName.30 = STRING: "kswapd0"
HOST-RESOURCES-MIB::hrSWRunName.31 = STRING: "ksmd"
HOST-RESOURCES-MIB::hrSWRunName.32 = STRING: "khugepaged"
HOST-RESOURCES-MIB::hrSWRunName.33 = STRING: "crypto"
HOST-RESOURCES-MIB::hrSWRunName.41 = STRING: "kthrotld"
HOST-RESOURCES-MIB::hrSWRunName.42 = STRING: "kworker/u256:1"
HOST-RESOURCES-MIB::hrSWRunName.43 = STRING: "kmpath_rdacd"
HOST-RESOURCES-MIB::hrSWRunName.44 = STRING: "kworker/1:1"
HOST-RESOURCES-MIB::hrSWRunName.45 = STRING: "kpsmoused"
HOST-RESOURCES-MIB::hrSWRunName.47 = STRING: "ipv6_addrconf"
HOST-RESOURCES-MIB::hrSWRunName.66 = STRING: "deferwq"
HOST-RESOURCES-MIB::hrSWRunName.98 = STRING: "kauditd"
HOST-RESOURCES-MIB::hrSWRunName.265 = STRING: "kworker/1:2"
HOST-RESOURCES-MIB::hrSWRunName.282 = STRING: "ata_sff"
HOST-RESOURCES-MIB::hrSWRunName.283 = STRING: "scsi_eh_0"
HOST-RESOURCES-MIB::hrSWRunName.284 = STRING: "scsi_tmf_0"
HOST-RESOURCES-MIB::hrSWRunName.285 = STRING: "scsi_eh_1"
HOST-RESOURCES-MIB::hrSWRunName.286 = STRING: "scsi_tmf_1"
HOST-RESOURCES-MIB::hrSWRunName.289 = STRING: "mpt_poll_0"
HOST-RESOURCES-MIB::hrSWRunName.290 = STRING: "mpt/0"
HOST-RESOURCES-MIB::hrSWRunName.298 = STRING: "scsi_eh_2"
HOST-RESOURCES-MIB::hrSWRunName.299 = STRING: "scsi_tmf_2"
HOST-RESOURCES-MIB::hrSWRunName.300 = STRING: "ttm_swap"
HOST-RESOURCES-MIB::hrSWRunName.375 = STRING: "kdmflush"
HOST-RESOURCES-MIB::hrSWRunName.376 = STRING: "bioset"
HOST-RESOURCES-MIB::hrSWRunName.387 = STRING: "kdmflush"
HOST-RESOURCES-MIB::hrSWRunName.388 = STRING: "bioset"
HOST-RESOURCES-MIB::hrSWRunName.401 = STRING: "bioset"
HOST-RESOURCES-MIB::hrSWRunName.402 = STRING: "xfsalloc"
HOST-RESOURCES-MIB::hrSWRunName.403 = STRING: "xfs_mru_cache"
HOST-RESOURCES-MIB::hrSWRunName.404 = STRING: "xfs-buf/dm-0"
HOST-RESOURCES-MIB::hrSWRunName.405 = STRING: "xfs-data/dm-0"
HOST-RESOURCES-MIB::hrSWRunName.406 = STRING: "xfs-conv/dm-0"
HOST-RESOURCES-MIB::hrSWRunName.407 = STRING: "xfs-cil/dm-0"
HOST-RESOURCES-MIB::hrSWRunName.408 = STRING: "xfs-reclaim/dm-"
HOST-RESOURCES-MIB::hrSWRunName.409 = STRING: "xfs-log/dm-0"
HOST-RESOURCES-MIB::hrSWRunName.410 = STRING: "xfs-eofblocks/d"
HOST-RESOURCES-MIB::hrSWRunName.411 = STRING: "xfsaild/dm-0"
HOST-RESOURCES-MIB::hrSWRunName.467 = STRING: "kworker/1:1H"
HOST-RESOURCES-MIB::hrSWRunName.468 = STRING: "kworker/0:1H"
HOST-RESOURCES-MIB::hrSWRunName.482 = STRING: "systemd-journal"
HOST-RESOURCES-MIB::hrSWRunName.506 = STRING: "lvmetad"
HOST-RESOURCES-MIB::hrSWRunName.511 = STRING: "systemd-udevd"
HOST-RESOURCES-MIB::hrSWRunName.544 = STRING: "xfs-buf/sda1"
HOST-RESOURCES-MIB::hrSWRunName.545 = STRING: "xfs-data/sda1"
HOST-RESOURCES-MIB::hrSWRunName.546 = STRING: "xfs-conv/sda1"
HOST-RESOURCES-MIB::hrSWRunName.547 = STRING: "xfs-cil/sda1"
HOST-RESOURCES-MIB::hrSWRunName.548 = STRING: "xfs-reclaim/sda"
HOST-RESOURCES-MIB::hrSWRunName.549 = STRING: "xfs-log/sda1"
HOST-RESOURCES-MIB::hrSWRunName.550 = STRING: "xfs-eofblocks/s"
HOST-RESOURCES-MIB::hrSWRunName.551 = STRING: "xfsaild/sda1"
HOST-RESOURCES-MIB::hrSWRunName.554 = STRING: "nfit"
HOST-RESOURCES-MIB::hrSWRunName.598 = STRING: "kworker/u257:0"
HOST-RESOURCES-MIB::hrSWRunName.599 = STRING: "hci0"
HOST-RESOURCES-MIB::hrSWRunName.600 = STRING: "hci0"
HOST-RESOURCES-MIB::hrSWRunName.602 = STRING: "kworker/u257:2"
HOST-RESOURCES-MIB::hrSWRunName.624 = STRING: "auditd"
HOST-RESOURCES-MIB::hrSWRunName.648 = STRING: "rsyslogd"
HOST-RESOURCES-MIB::hrSWRunName.649 = STRING: "systemd-logind"
HOST-RESOURCES-MIB::hrSWRunName.650 = STRING: "polkitd"
HOST-RESOURCES-MIB::hrSWRunName.651 = STRING: "dbus-daemon"
HOST-RESOURCES-MIB::hrSWRunName.653 = STRING: "chronyd"
HOST-RESOURCES-MIB::hrSWRunName.660 = STRING: "NetworkManager"
HOST-RESOURCES-MIB::hrSWRunName.662 = STRING: "irqbalance"
HOST-RESOURCES-MIB::hrSWRunName.669 = STRING: "crond"
HOST-RESOURCES-MIB::hrSWRunName.674 = STRING: "agetty"
HOST-RESOURCES-MIB::hrSWRunName.877 = STRING: "tuned"
HOST-RESOURCES-MIB::hrSWRunName.976 = STRING: "sshd"
HOST-RESOURCES-MIB::hrSWRunName.1029 = STRING: "zabbix_agentd"
HOST-RESOURCES-MIB::hrSWRunName.1030 = STRING: "zabbix_agentd"
HOST-RESOURCES-MIB::hrSWRunName.1031 = STRING: "zabbix_agentd"
HOST-RESOURCES-MIB::hrSWRunName.1032 = STRING: "zabbix_agentd"
HOST-RESOURCES-MIB::hrSWRunName.1033 = STRING: "zabbix_agentd"
HOST-RESOURCES-MIB::hrSWRunName.1034 = STRING: "zabbix_agentd"
HOST-RESOURCES-MIB::hrSWRunName.1074 = STRING: "master"
HOST-RESOURCES-MIB::hrSWRunName.1075 = STRING: "pickup"
HOST-RESOURCES-MIB::hrSWRunName.1076 = STRING: "qmgr"
HOST-RESOURCES-MIB::hrSWRunName.1240 = STRING: "sshd"
HOST-RESOURCES-MIB::hrSWRunName.1242 = STRING: "bash"
HOST-RESOURCES-MIB::hrSWRunName.1333 = STRING: "kworker/u256:2"
HOST-RESOURCES-MIB::hrSWRunName.1666 = STRING: "kworker/0:0"
HOST-RESOURCES-MIB::hrSWRunName.1732 = STRING: "anacron"
HOST-RESOURCES-MIB::hrSWRunName.1883 = STRING: "kworker/0:2"
HOST-RESOURCES-MIB::hrSWRunName.1960 = STRING: "snmpd"
HOST-RESOURCES-MIB::hrSWRunName.1970 = STRING: "snmpwalk"
[root@node05 ~]#

  配置zabbix web使用snmp信道采集node05上的数据,并链接Template OS Linux SNMPv2模板

  链接模板

  查看主机列表,看看node05对应的SNMP信道是否变绿了?

  添加snmp item

  提示:在主机列表中找到对应主机上的item,然后点击create item ,填写好item名称,选择SNMP v2 agent;这里的key就只是起一个标识作用,尽量不要和已有的内建key和自定义key重复即可;最重要的是要填写好对应主机的snmp监听的ip地址和端口,以及要采集数据对应的oid或mib和社区名称;社区名称可以写宏,默认就有一个{$SNMP_COMMUNITY}其值就是public;调用对应的宏也是可以的;

  查看我们定义的item是否采集到数据呢?

  以上就是zabbix使用snmp信道采集数据配置和演示;接下我们再来说说zabbix 使用jmx信道监控java程序

  jmx是Java Management Extensions的缩写,即Java管理扩展,它可以跨平台实现灵活的开发无缝集成的系统、网络和服务管理应用。在zabbix 上使用jmx信道采集对应java程序的相关指标数据,首先zabbix原生是不支持jmx,它依赖zabbix-java-gateway这个服务;其次对应被监控主机上运行的java程序要打开jmx功能;zabbix-java-gateway我们可以理解为zabbix jmx的代理服务,它负责zabbix server 委派给它使用jmx信道采集数据,将采集到数据发送给zabbix server ;所以要想使用jmx信道来采集数据,首先我们得安装并启动zabbix java gateway服务,然后配置zabbix server ,告诉zabbix server java gateway服务地址和端口;最后在对应的被监控端开启jmx;

  安装zabbix java gateway

[root@node04 ~]# yum install -y zabbix-java-gateway

  提示:这个服务可以安装在zabbix server 上,也可以独立一台服务器,也可安装在被监控端;总之zabbix server 能够正常和它通信即可;

  配置zabbix java gateway

[root@node04 ~]# grep -Ei "^[a-z]" /etc/zabbix/zabbix_java_gateway.conf
LISTEN_IP="0.0.0.0"
LISTEN_PORT=10052
PID_FILE="/var/run/zabbix/zabbix_java.pid"
START_POLLERS=5
TIMEOUT=3
[root@node04 ~]#

  提示:以上是java gateway的默认配置,保持默认配置即可;如果后续觉得java gateway的poller少了,可以更改;

  启动zabbix java gateway

[root@node04 ~]# systemctl start zabbix-java-gateway.service
[root@node04 ~]# ss -tnl
State Recv-Q Send-Q  Local Address:Port    Peer Address:Port
LISTEN 0 128    *:6379     *:*
LISTEN 0 128    *:80     *:*
LISTEN 0 128    *:22     *:*
LISTEN 0 100   127.0.0.1:25     *:*
LISTEN 0 128    *:10050     *:*
LISTEN 0 128    :::80     :::*
LISTEN 0 128    :::22     :::*
LISTEN 0 100   ::1:25     :::*
LISTEN 0 50    :::10052     :::*
[root@node04 ~]#

  提示:默认java gateway监听在10052端口,启动后请确保该端口处于监听即可;

  配置zabbix server

  提示:在zabbix server配置文件中找到java gateway的配置,配置Java gateway的ip地址,端口,以及启动的poller数量和超时时间即可;

  重启zabbix server

[root@node03 ~]# systemctl restart zabbix-server.service
[root@node03 ~]# ss -tnl
State Recv-Q Send-Q  Local Address:Port    Peer Address:Port
LISTEN 0 128    *:22     *:*
LISTEN 0 100   127.0.0.1:25     *:*
LISTEN 0 128    *:10050     *:*
LISTEN 0 128    *:10051     *:*
LISTEN 0 128    :::22     :::*
LISTEN 0 100   ::1:25     :::*
LISTEN 0 128    :::10051     :::*
[root@node03 ~]#

  提示:请确保zabbix server能够正常启动起来;对应端口能够正常处于监听状态;

  在node05上安装tomcat服务

[root@node05 ~]# yum install -y tomcat-admin-webapps tomcat-webapps tomcat-docs-webapp tomcat

  开启tomcat的jmx功能

  完整配置文件内容

[root@node05 ~]# grep -Ei "^[a-z]" /etc/tomcat/tomcat.conf
TOMCAT_CFG_LOADED="1"
TOMCATS_BASE="/var/lib/tomcats/"
JAVA_HOME="/usr/lib/jvm/jre"
CATALINA_HOME="/usr/share/tomcat"
CATALINA_TMPDIR="/var/cache/tomcat/temp"
CATALINA_OPTS="-Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=192.168.0.45"
JAVA_OPTS="-Djavax.sql.DataSource.Factory=org.apache.commons.dbcp.BasicDataSourceFactory"
SECURITY_MANAGER="false"
[root@node05 ~]

  启动tomcat

[root@node05 ~]# systemctl start tomcat
[root@node05 ~]# ss -tnl
State Recv-Q Send-Q  Local Address:Port    Peer Address:Port
LISTEN 0 128    *:80     *:*
LISTEN 0 128    *:22     *:*
LISTEN 0 100   127.0.0.1:25     *:*
LISTEN 0 128    *:10050     *:*
LISTEN 0 128   127.0.0.1:199     *:*
LISTEN 0 100    :::8080     :::*
LISTEN 0 128    :::80     :::*
LISTEN 0 128    :::22     :::*
LISTEN 0 50    :::12345     :::*
LISTEN 0 100   ::1:25     :::*
LISTEN 0 128    :::10050     :::*
LISTEN 0 1  ::ffff:127.0.0.1:8005     :::*
LISTEN 0 50    :::44229     :::*
LISTEN 0 50    :::35589     :::*
LISTEN 0 100    :::8009     :::*
[root@node05 ~]#

  提示:请确保对应的端口都处于监听状态,jmx我们刚才指定的是12345端口,默认在zabbix使用的端口也是12345,所以这两个端口保持一致即可;

  在zabbix web上添加node05并指定使用jmx接口来采集数据

  链接模板

  查看node05上的jmx信道是否变绿?

  查看是否采集到对应模板上的监控项数据呢?

  提示:可以看到我们链接的模板,对应很多监控项都采集到数据了;说明我们配置使用jmx采集数据没有什么问题;这里需要注意我们链接都模版,不一定所有都监控项都可以采集到数据;

到此这篇关于分布式监控系统之Zabbix 使用SNMP、JMX信道采集数据的文章就介绍到这了,更多相关Zabbix 分布式监控系统内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 分布式监控系统之Zabbix主动、被动及web监控的过程详解

    前文我们了解了zabbix的网络发现功能,以及结合action实现自动发现主机并将主机添加到zabbix hosts中,链接指定模板进行监控:回顾请参考https://www.jb51.net/article/200678.htm:今天我们来了解下zabbix的主动监控.被动监控以及web监控相关话题: 1.什么是主动监控?什么是被动监控? 我们知道获取数据的方式有两种,一种是get,一种是push:在zabbix中描述主动监控和被动监控都是站在agent的一方来描述的:我们把agent主动将数

  • 分布式监控系统Zabbix3.2添加自动发现磁盘IO并注册监控(推荐)

    服务器磁盘的运作情况在一定程度上反应系统的负载. 磁盘通常是服务器最慢的设备,极容易出现瓶颈,通过监控可以判断出整个系统的短板. zabbix并没有给我们提供这么一个模板来完成在Linux中磁盘IO的监控,所以我们需要自己来创建一个,在此还是在Linux OS中添加. 由于一台服务器中磁盘众多,如果只一两台可以手动添加,但服务集群达到几十那就非常麻烦,因此需要利用自动发现 这个功能,自动发现后自动添加对服务器磁盘的监控,而且添加磁盘后也会自动添加到监控,实现自动化运维的效果,所以在这里也演示一次

  • 分布式监控系统之Zabbix 使用SNMP、JMX信道采集数据的原理解析

    前文我们了解了zabbix的被动.主动以及web监控相关话题,回顾请参考https://www.jb51.net/article/200679.htm:今天我们来了解下zabbix使用SNMP和JMX信道采集数据的相关话题: 1.SNMP协议介绍 SNMP是英文"Simple Network Management Protocol"的缩写,中文意思是"简单网络管理协议,SNMP是一种简单网络管理协议,它属于TCP/IP五层协议中的应用层协议,用于网络管理的协议,SNMP主要用

  • zabbix集群搭建分布式监控的操作步骤

    目录 作用: 环境准备: 操作步骤: 1.关闭某些设置 2.server服务端无需变动,继续运行 3.配置代理服务器 4. 启动数据库 5. 进入数据库 6. 创建数据表 7. 授予所有的权限 8. 刷新mysql权限 9. 导入zabbix_proxy数据库信息 10. 查看数据是否成功导入,看到有很有数据表即为成功 11. 修改zabbix-proxy配置文件,链接数据库的信息 12. 检查代理服务器配置文件 13. 重启服务器 14. 启动代理服务器 设置开机自启 zabbix-serve

  • Python写的一个简单监控系统

    市面上有很多开源的监控系统:Cacti.nagios.zabbix.感觉都不符合我的需求,为什么不自己做一个呢 用Python两个小时徒手撸了一个简易的监控系统,给大家分享一下,希望能对大家有所启发 首先数据库建表 建立一个数据库"falcon",建表语句如下: CREATE TABLE `stat` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `host` varchar(256) DEFAULT NULL, `mem_free`

  • eBay 打造基于 Apache Druid 的大数据实时监控系统

    首先需要注意的是,本文即将提到的 Druid,并非阿里巴巴的 Druid 数据库连接池,而是另一个大数据场景下的解决方案:Apache Druid. Apache Druid 是一个用于大数据实时查询和分析的高容错.高性能开源分布式时序数据库系统,旨在快速处理大规模的数据,并能够实现快速查询和分析.尤其是当发生代码部署.机器故障以及其他产品系统遇到宕机等情况时,Druid 仍能够保持 100% 正常运行.创建 Druid 的最初意图主要是为了解决查询延迟问题,当时试图使用 Hadoop 来实现交

  • java分布式面试系统限流最佳实践

    目录 引言 1.面试官: 哪些场景系统使用了限流?为什么要使用限流? 2.面试官: 那你了解哪些常用限流算法? 1.计数器方法: 2.漏斗算法: 3.令牌桶算法: 3.面试官: 那具体这值该如何评估,说到现在我还是不知道限流到底要怎么设置,可以给我一点经验方法吗? 深入分析 使用线程池实现: 借助Guava实现: 总结 引言 前面讲了系统中的降级熔断设计和对 Hystrix 组件的功能了解,关于限流降级还有一个比较重要的知识点就是限流算法. 如果你面试的是电商相关公司,这一块就显得更加重要了,秒

  • shell脚本监控系统负载、CPU和内存使用情况

    在没有nagios监控软件的情况下,只要服务器能上互联网,就可通过发邮件的方式来提醒管理员系统负载与CPU占用的使用情况. 一.安装linux下面的一个邮件客户端msmtp软件(类似于一个foxmail的工具) 1.下载安装:  http://downloads.sourceforge.net/msmtp/msmtp-1.4.16.tar.bz2?modtime=1217206451&big_mirror=0 复制代码 代码如下: # tar jxvf msmtp-1.4.16.tar.bz2

  • python使用wmi模块获取windows下的系统信息 监控系统

    Python用WMI模块获取Windows系统的硬件信息:硬盘分区.使用情况,内存大小,CPU型号,当前运行的进程,自启动程序及位置,系统的版本等信息. 本文实例讲述了python使用wmi模块获取windows下的系统信息 监控系统 #!/usr/bin/env python # -*- coding: utf- -*- #http://www.cnblogs.com/liu-ke/ import wmi import os import sys import platform import

  • 关于.NET/C#/WCF/WPF 打造IP网络智能视频监控系统的介绍

    OptimalVision网络视频监控系统 OptimalVision(OV)网络视频监控系统(Video Surveillance System),是一套基于.NET.C#.WCF.WPF等技术构建的IP网络视频监控系统.设计与实现该系统的初衷是希望在家用电脑中部署该系统,连接本地或局域网设备,通过浏览器或手机客户端浏览宝宝实时视频,也就是俗称的"宝宝在线"或"家庭看护". 但由于业余时间总是有限,完成系统中的服务.配置.采集.传输和桌面GUI部分后,继续完成后续

随机推荐