设为首页 收藏本站
查看: 1733|回复: 0

[经验分享] zabbix 使用进阶(五)

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-11-17 08:33:22 | 显示全部楼层 |阅读模式
===============================================================================
概述:

===============================================================================
回顾:
wKioL1gq7tixsc-KAAA7aZ8RSU8634.jpg
----------------------------------------------------------------------------------------
自定义key:
★定义:
  • 在zabbix agent端的配置文件中由用户通过UserParameter指令定义用户自定义参数;

★格式:
  • UserParamter=<key>,<command>
  • UserParamter=<key
  • >,<command> $1...$9
注意:
  • 类似awk命令自带$1...$9,需要改写为$$1, $$2, ...$$9;

演示1:
  在agent端自定义key,并通过传递参数来获取相应的数据。
-------------------------------------------------------------------------------
1.自定义key不带参数
  1)首先获取CentOS 7.2-2 agent端的内存相关信息
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[iyunv@centos7 ~]# cat /proc/meminfo
MemTotal:        1001332 kB
MemFree:          700136 kB
MemAvailable:     713904 kB
Buffers:            1344 kB
Cached:           104448 kB
SwapCached:            0 kB
Active:            84720 kB
Inactive:          81396 kB
Active(anon):      60732 kB
Inactive(anon):     6620 kB
Active(file):      23988 kB
Inactive(file):    74776 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:       2098172 kB
SwapFree:        2098172 kB
Dirty:                 8 kB
Writeback:             0 kB
AnonPages:         60356 kB



  2)编辑agent端(CentOS 7.2-2)的配置文件/etc/zabbix/zabbix_agentd.conf在UserParameter中定义获取空余内存的key,如下:
wKiom1gq-2qBspPzAAB9X7huu4k778.jpg
  2)重启agent端的zabbix-agent服务,在zabbix-server端使用get可以正常获取数据,说明我们在agent端自定义的key起作用了;
wKioL1gq_F7gPkGCAABhplRXmmM011.jpg
  3)现在,我们就可以在zabbix-web端使用在agent端自定义的key来监控CentOS 7.2-2主机上的空闲内存大小了,如下:
wKioL1gq_mHBLazxAAB4wxy9ZUU133.jpg
wKiom1gq_mHyhX5fAABAOPhZt-w433.jpg

wKioL1gq_qGSZDo8AACXNZWHLl4413.jpg

-----------------------------------------------------------------------------------------
自定义key可传递参数:
  1.上面我们定义的key不可传递参数,这样的话使用就不太灵活,比如在同一个监控项中有不同的指标(内存中有空闲内存,可用内存,总内存),所以能够传递参数的话,就可灵活的获取不同的指标。
  如下,还是编辑agent的配置文件,自定义有关内存相关的key,并且可以传递参数;
wKiom1grAl2y0eqTAABLaz-jfTM975.jpg
  2.重启agent端的zabbix-agent服务,在zabbix-server端使用get可以正常获取传递不同参数下的对应的数据,如下:
wKiom1grA--QVSeCAABs3OstuzQ381.jpg

演示2:
  在agent端自定义可传递参数的key,来获取nginx的状态信息:
-------------------------------------------------------------------------------
  1.首先在agent端主机,编辑其nginx的配置文件/etc/nginx/conf.d/default.conf,添加能够获取status的locations,如下:
wKioL1grJ5XjmupeAAA5pkmWLg8727.jpg

   获取nginx状态信息如下:

[iyunv@centos7 ~]# curl http://192.168.1.19/ngxstatus
Active connections: 1
server accepts handled requests
6 6 4
Reading: 0 Writing: 1 Waiting: 0

[iyunv@centos7 ~]# curl -s http://localhost/ngxstatus |awk '/^Active/{print $3}'  //获取Active信息
1
[iyunv@centos7 ~]# curl -s http://localhost/ngxstatus |awk 'NR==3{print $1}'   //获取accepts信息
20

2.如上,我们要想监控agent端nginx服务的一个状态信息,很容易实现,只需要在其agent的配置文件中定义key即可实现;但是如果想要监控nginx服务的所有状态信息(上面的7项)就需要在key中传递参数了,我们这里可以通过定义脚本传递参数来实现,如下:

[iyunv@centos7 ~]# vim /usr/bin/ngxstatus.sh
#!/bin/bash
#description:获取nginx的状态信息
#
host='127.0.0.1'
port='80'
statusurl='/ngxstatus'

active() {
       curl -s http://${host}:${port}${statusurl} | awk '/^Active/{print $3}'
}

accepts() {
       curl -s http://${host}:${port}${statusurl} | awk 'NR==3{print $1}'
}

handled() {
      curl -s http://${host}:${port}${statusurl} | awk 'NR==3{print $2}'
}

requests() {
      curl -s http://${host}:${port}${statusurl} | awk 'NR==3{print $3}'
}

reading() {
      curl -s http://${host}:${port}${statusurl} | awk 'NR==4{print $2}'
}

writing() {
      curl -s http://${host}:${port}${statusurl} | awk 'NR==4{print $4}'
}

waiting() {
      curl -s http://${host}:${port}${statusurl} | awk 'NR==4{print $6}'
}

$1   //传递的参数

[iyunv@centos7 ~]# chmod +x /usr/bin/ngxstatus.sh

脚本测试如下:
   
[iyunv@centos7 ~]# ngxstatus.sh active
1
[iyunv@centos7 ~]# ngxstatus.sh accepts
27
[iyunv@centos7 ~]# ngxstatus.sh handled
28
[iyunv@centos7 ~]# ngxstatus.sh requests
27
[iyunv@centos7 ~]# ngxstatus.sh reading
0
[iyunv@centos7 ~]# ngxstatus.sh writing
1
[iyunv@centos7 ~]# ngxstatus.sh waiting
0

  3.如上,脚本已经定义好了,现在我们去定义zabbix-agent的配置文件,自定义key来调用脚本来获取nginx的状态信息,如下:


wKiom1grtzDydSNyAABIEs9bkv0580.jpg
  4.重启agent端的zabbix-agent服务,在zabbix-server端使用get可以正常获取传递不同参数下的对应的数据,如下:
wKiom1gruFaxn7_rAABjuXEV8cU681.jpg

5.这样我们就可以在zabbix-web端添加有关nginx的监控项,也可以做成模板,图形,聚合图形,方便监控,如下:
wKioL1gry9ixmxDRAACZh3TXgJU940.jpg wKioL1grz9ODdHmwAADixSKewN4678.jpg



主动/被动 检测:
★被动监控:
★主动监控:
  • ServerActive=
  • Hostname=

主动监测配置文件:
wKiom1gsP4fgJp4MAABlqdkZDnM545.jpg



基于SNMP监控:
    ---SNMP:简单网络管理协议;基于UDP协议;能够支持网络管理系统,用以监测连接到网络上的设备是否有任何引起管理上关注的情况。
★支持的功能:
  • 读(get, getnext), 写(set), 陷阱(trap)(等待agent端报告数据)

★监听端口
  • 161/udp(agent), 162/udp

★协议版本
  • v1: 1989
  • v2c: 1993
  • v3: 1998

★相关术语
  • MIB: Management Information Base  //管理信息库
       任何一个被管理的资源都表示成一个对象,称为被管理的对象。MIB是被管理对象的集合。它定义了被管理对象的一系列属性:对象的名称、对象的访问权限和对象的数据类型等。每个SNMP设备(Agent)都有自己的MIB。MIB也可以看作是NMS(网管系统)和Agent之间的沟通桥梁。
  • OID: Object ID  //对象标识符
       唯一标识一个MIB对象

演示:
  1.Linux主机要想支持SNMP功能,要首安装SNMP的程序包
[iyunv@centos7 ~]# yum install net-snmp net-snmp-utils -y
2.编辑配置文件

[iyunv@centos7 ~]# cd /etc/snmp/
[iyunv@centos7 snmp]# ls
snmpd.conf(agent端)  snmptrapd.conf(服务端,监控端)

wKiom1gsVAHgf4TUAABLKnDZnhc246.jpg

3.启动snmp服务,查看agent端监听的端口161/udp,并尝试获取数据
1
2
3
4
5
6
7
8
[iyunv@centos7 snmp]# systemctl start snmpd.service

[iyunv@centos7 snmp]# ss -unl
State      Recv-Q Send-Q Local Address:Port                Peer Address:Port              
UNCONN     0      0                  *:68                             *:*                  
UNCONN     0      0                  *:161                            *:*                  
UNCONN     0      0                  *:65283                          *:*                  
UNCONN     0      0          127.0.0.1:323                            *:*



获取信息如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
[iyunv@centos7 ~]# snmpwalk -c public -v 2c 10.1.252.153 .1.3.6.1.2.1.1.1
SNMPv2-MIB::sysDescr.0 = STRING: Linux centos7 3.18.41-1.0-Taolinux #1 SMP Mon Sep 19 12:23:56 CST 2016 x86_64

[iyunv@centos7 ~]# snmpwalk -c public -v 2c 10.1.252.153 .1.3.6.1.2.1.1  //向上一级获取信息
SNMPv2-MIB::sysDescr.0 = STRING: Linux centos7 3.18.41-1.0-Taolinux #1 SMP Mon Sep 19 12:23:56 CST 2016 x86_64
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (39611) 0:06:36.11
SNMPv2-MIB::sysContact.0 = STRING: Root <root@localhost> (configure /etc/snmp/snmp.local.conf)
SNMPv2-MIB::sysName.0 = STRING: centos7
SNMPv2-MIB::sysLocation.0 = STRING: Unknown (edit /etc/snmp/snmpd.conf)
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (10) 0:00:00.10
SNMPv2-MIB::sysORID.1 = OID: SNMP-MPD-MIB::snmpMPDCompliance
SNMPv2-MIB::sysORID.2 = OID: SNMP-USER-BASED-SM-MIB::usmMIBCompliance
SNMPv2-MIB::sysORID.3 = OID: SNMP-FRAMEWORK-MIB::snmpFrameworkMIBCompliance
SNMPv2-MIB::sysORID.4 = OID: SNMPv2-MIB::snmpMIB
SNMPv2-MIB::sysORID.5 = OID: TCP-MIB::tcpMIB
SNMPv2-MIB::sysORID.6 = OID: IP-MIB::ip
SNMPv2-MIB::sysORID.7 = OID: UDP-MIB::udpMIB
SNMPv2-MIB::sysORID.8 = OID: SNMP-VIEW-BASED-ACM-MIB::vacmBasicGroup
SNMPv2-MIB::sysORID.9 = OID: SNMP-NOTIFICATION-MIB::snmpNotifyFullCompliance
SNMPv2-MIB::sysORID.10 = OID: NOTIFICATION-LOG-MIB::notificationLogMIB
SNMPv2-MIB::sysORDescr.1 = STRING: The MIB for Message Processing and Dispatching.
SNMPv2-MIB::sysORDescr.2 = STRING: The management information definitions for the SNMP User-based Security Model.
SNMPv2-MIB::sysORDescr.3 = STRING: The SNMP Management Architecture MIB.
SNMPv2-MIB::sysORDescr.4 = STRING: The MIB module for SNMPv2 entities
SNMPv2-MIB::sysORDescr.5 = STRING: The MIB module for managing TCP implementations
SNMPv2-MIB::sysORDescr.6 = STRING: The MIB module for managing IP and ICMP implementations
SNMPv2-MIB::sysORDescr.7 = STRING: The MIB module for managing UDP implementations
SNMPv2-MIB::sysORDescr.8 = STRING: View-based Access Control Model for SNMP.
SNMPv2-MIB::sysORDescr.9 = STRING: The MIB modules for managing SNMP Notification, plus filtering.
SNMPv2-MIB::sysORDescr.10 = STRING: The MIB module for logging SNMP Notifications.
SNMPv2-MIB::sysORUpTime.1 = Timeticks: (10) 0:00:00.10
SNMPv2-MIB::sysORUpTime.2 = Timeticks: (10) 0:00:00.10
SNMPv2-MIB::sysORUpTime.3 = Timeticks: (10) 0:00:00.10
SNMPv2-MIB::sysORUpTime.4 = Timeticks: (10) 0:00:00.10
SNMPv2-MIB::sysORUpTime.5 = Timeticks: (10) 0:00:00.10
SNMPv2-MIB::sysORUpTime.6 = Timeticks: (10) 0:00:00.10
SNMPv2-MIB::sysORUpTime.7 = Timeticks: (10) 0:00:00.10
SNMPv2-MIB::sysORUpTime.8 = Timeticks: (10) 0:00:00.10
SNMPv2-MIB::sysORUpTime.9 = Timeticks: (10) 0:00:00.10
SNMPv2-MIB::sysORUpTime.10 = Timeticks: (10) 0:00:00.10




4.在zabbix-web端,在CentOS 7.2-2主机上添加基于snmp监控,如下:
wKiom1gsWC6T-nzBAAB88HxrLGg345.jpg
现在,我们通过模板去添加CentOS 7.2-2的snmp监控项,如下:
wKioL1gsWN-S-NKOAABFjwqLSWk192.jpg wKioL1gsWXOj5xwVAACl0hYP4BQ440.jpg
发现CentOS 7.2-2 基于snmp监控已经启用,如下:
wKiom1gsWYjAY9cqAADVt8lwX7Q950.jpg
在监测中可以看到snmp uptime已经有数据了,如下:
wKioL1gsWz-hC3r2AAChPnUMp84170.jpg
  注意snmp在监控项中使用的是自定义宏,系统在全局宏中已经定义好了的,如下:
wKioL1gsW43gViA7AABR6kLd8rM264.jpg
wKiom1gsW42g8UiTAAA20d3fPNs820.jpg







运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-301408-1-1.html 上篇帖子: zabbix 基础配置(四) 下篇帖子: zabbix 使用进阶(六)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表