内容目录

snmp监控网络设备

什么是snmp

snmp全称simple network manager protocol,简单网络管理协议

为何需要snmp

对于路由器、交换机、打印机等设备,仅支持snmp协议,只能通过snmp协议进行数据采集,监控
对于有些服务器,不允许安装zabbix agent,也可以通过snmp协议,对其数据进行采集,监控

snmp基本概念

snmp中有一些基础概念需要我们了解,比如:OID、MIB

OID

什么是OID
内存的大小:.1.3.6.1.2.1.25.2.2.0
内存的剩余:.1.3.6.1.2.1.25.2.2.1
任何一个指标在snmp中都有一个唯一的值进行表示,而oid排列顺序是以树状信息排列

file

MIB

MIB库:统计所有的oid库(国际标准)
MIB以树状结构进行存储,树的叶子节点表示管理对象,它可以通过从根节点开始的一条惟一路径来识别,这也就是OID(Object Identifier)

file

OID是由一些系列非负整数组成,中间以"."分割,用于唯一标识管理对象在MIB树中的位置。在上图的树形结构中,mgmt对象可以标识为:1.3.6.1.2,这种标识就叫做OIDiso.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。
可以理解mib是域名,比较好记忆。oidip地址,不太好记忆。

snmp的版本

V1:不支持加密,任何人都可以取值,不安全
V2:简单加密版,通过口令才可以取值,通过community设定口令(使用最多)
V3:复杂加密,采集效率比较低

snmp监控网络设备实践

开启防火墙snmp

web登录防火墙,找到系统-->维护-->snmp,开启snmp功能
版本配置snmpv2c,只读团体名配置xxx

file

配置zabbix-web

单击配置-->主机-->添加主机-->选择类型为snmp

file

模板可以选用系统自带模板

  • Template Module EtherLike-MIB SNMP:duplex control only(半双工时触发告警)
  • Template Module Interfaces SNMP:9个监控项原型
    • 1. Inbound packets discarded
    • 2.Interface type
    • 3.Speed
    • 4.Outbound packets discarded
    • 5.Outbound packets with errors
    • 6.Bits received
    • 7.Bits sent
    • 8.Inbound packets with errors
    • 9.Operational status
  • Template Module Generic SNMP

snmp监控linux实践

snmp服务安装

yum install net-snmp net-snmp-utils

snmp服务配置

vim /etc/snmp/snmpd.conf

# public是默认的团体名称,修改为实际的
com2sec notConfigUser  default       public

# 限制从mib哪个树枝开始取值,如果需要监控的信息,修改为从树的顶点 .1 开始
view    systemview    included   .1.3.6.1.2.1.1

snmp服务启动

systemctl enable snmpd.service
systemctl start snmpd.service

获取客户端数据

# 服务端安装snmp工具
yum install net-snmp-utils

# OID获取数据方式
snmpwalk -v2c -c public 127.0.0.1 .1.3.6.1.2.1.25.2.2.0
HOST-RESOURCES-MIB::hrMemorySize.0 = INTEGER: 7989768 KBytes

# MIB获取数据方式
snmpwalk -v2c -c public 127.0.0.1 hrMemorySize.0
HOST-RESOURCES-MIB::hrMemorySize.0 = INTEGER: 7989768 KBytes

配置zabbix-web

添加主机,配置团体名,关联Template OS Linux SNMP模板

zabbix监测web

web监测的概述

使用zabbix对网站进行多方面可用性监控,比如下载速度,响应时间,响应状态码等

  1. 访问资源
  2. 登录资源
  3. 检查登录是否成功
  4. 退出登录
  5. 检查是否退出成功

web监测如何实现

要使用web监控,需要先定义web场景,web场景包括一个或多个http请求步骤。
zabbix server会周期性的执行这些步骤

zabbix2.2开始,web场景和监控项,触发器等一样,是依附在主机/模板上的。
这意味着web场景也可以创建到一个模板里,然后应用于多个主机。

web场景监测-curl

在实现web站点监测之前,我们需要先了解curl命令如何实现站点登录的,因为zabbix监控web站点底层使用的是curl命令来实现的,那使用curl命令登录站点如何实现

  • 1.请求服务端,获取session id
  • 2.请求服务端,携带session id+username+password登录验证
  • 3.可以直接访问服务端登录后的页面
# 1.使用curl命令请求web服务端,获取sessionid,并将其保存起来
curl -L -c cook -b cook 'http://blue.yn.cn/wp-login.php'
# -L 自动跳转。有的网址是自动跳转的,使用 -L 参数,curl 就会跳转到新的网址
# -c 将服务器 HTTP 回应所设置 Cookie 写入文本文件cook
# -b 读取本地文件 cook,里面是服务器设置的 Cookie(参见-c参数),将其发送到服务器

# 2.携带sessionid+用户名+密码登录网站
curl -L -c cook -b cook -d 'log=admin&pwd=xxx&rememberme=forever&wp-submit=%E7%99%BB%E5%BD%95&redirect_to=http%3A%2F%2Fblue.yn.cn%2Fwp-admin%2F&testcookie=1' 'http://blue.yn.cn/wp-login.php'

# 3.请求web服务端,携带session即可,然后访问我们需要访问登陆后的资源
curl -L -c cook -b cook 'http://blue.yn.cn/wp-admin/edit.php'

web场景监测实战

使用zabbix web监控来监控wordpressweb界面,我们想知道它是否可用、是否正常工作以及其响应速度。
需要添加一个web监测场景来监控wordpressweb界面,该场景需要执行多个步骤

创建新的web场景

点击配置-->主机-->选择主机-->单击web监测-->创建web监测
在新的场景中,我们将场景命名为 监控腾讯云wordpress,并为其创建一个新的应用集Web_Monitor

file

步骤1-访问wordpress站点

定义场景的步骤:点击步骤-->点击添加按钮
步骤1:首先检查登录页面响应是否正确,返回http响应代码200,并包含Pale Blue Dot

file

步骤2-登录wordpress站点

通过edge开发者模式F12可以看到登录页面是提交的数据。

file

登录wordpress,提交用户名与密码
url填入:http://blue.yn.cn/wp-login.php?log=admin&pwd=xxx&rememberme=forever&wp-submit=%E7%99%BB%E5%BD%95&redirect_to=http%3A%2F%2Fblue.yn.cn%2Fwp-admin%2F&testcookie=1,再点击分析
把分析出的字段填入发布字段中。
使用正则表达式提取会话IDregex:name="_wpnonce" value="([0-9a-z]{10})",后续退出时需要使用。

file

步骤3-验证是否登录成功

登录后需要验证一下是否登录成功。为此检查一个仅在登陆后可见的字符串文章

file

步骤4-退出wordpress站点

退出时的F12截图如下:

file

验证后需要退出wordpress,否则wordpress数据库将被大量的开放会话记录所污染。
退出的url地址:http://blue.yn.cn/wp-admin/

file

步骤4也可实现判断是否退出成功,不成功返回的http响应代码是403
完整的配置如下:

file

监控结果如下:

file
file

web场景触发器

监控web站点失败场景

要创建web场景失败触发器,可以定义触发器表达式

# 触发器名称(并提供有用的问题描述)
监控腾讯云wordpress failed:{ITEM.VALUE}

# 触发器表达式
{139.199.79.133:web.test.fail[监控腾讯云wordpress].last()}<>0

# 恢复表达式
{139.199.79.133:web.test.fail[监控腾讯云wordpress].last()}=0

可以将网站的nginx服务给停止即可完成测试

监控web站点响应时间

监控项key:web.test.time[Scenario,Step,resp](以秒为单位),主要用于探测站点响应时间

#触发器名称(并提供有用的问题描述)
web"响应时间大于1s" timeout: {ITEM.VALUE}

# 触发器表达式
{139.199.79.133:web.test.time[监控腾讯云wordpress,访问腾讯云wordpress登陆页面,resp].last()}>3 or {139.199.79.133:web.test.time[监控腾讯云wordpress,登录腾讯云wordpress,resp].last()}>3 or {139.199.79.133:web.test.time[监控腾讯云wordpress,验证是否登录腾讯云wordpress,resp].last()}>3 or {139.199.79.133:web.test.time[监控腾讯云wordpress,退出腾讯云wordpress,resp].last()}>3

# 恢复表达式
{139.199.79.133:web.test.time[监控腾讯云wordpress,访问腾讯云wordpress登陆页面,resp].last()}<3 and {139.199.79.133:web.test.time[监控腾讯云wordpress,登录腾讯云wordpress,resp].last()}<3 and {139.199.79.133:web.test.time[监控腾讯云wordpress,验证是否登录腾讯云wordpress,resp].last()}<3 and {139.199.79.133:web.test.time[监控腾讯云wordpress,退出腾讯云wordpress,resp].last()}<3
监控web站点响应代码

监控项key: web.test.rspcode[Scenario,Step]用于收集监控项步骤的响应代码。

关闭php-fpm来测试

#触发器名称
web"响应状态码":{ITEM.VALUE}

# 触发器表达式
{139.199.79.133:web.test.rspcode[监控腾讯云wordpress,访问腾讯云wordpress登陆页面].last()}<>200 or {139.199.79.133:web.test.rspcode[监控腾讯云wordpress,登录腾讯云wordpress].last()}<>200

# 恢复表达式
{139.199.79.133:web.test.rspcode[监控腾讯云wordpress,访问腾讯云wordpress登陆页面].last()}=200 and {139.199.79.133:web.test.rspcode[监控腾讯云wordpress,登录腾讯云wordpress].last()}=200
最后修改日期: 2024年10月22日

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。