p.MsoNormal,li.MsoNormal,div.MsoNormal { margin: 0cm; margin-bottom: .0001pt; text-align: justify; text-indent: 5.0pt; line-height: 150%; font-size: 10.5pt; font-family: Consolas }
h1 { margin-top: 17.0pt; margin-right: 0cm; margin-bottom: 16.5pt; margin-left: 0cm; text-align: justify; text-indent: 0cm; line-height: 240%; page-break-after: avoid; font-size: 20.0pt; font-family: Consolas }
h2 { margin-top: 13.0pt; margin-right: 0cm; margin-bottom: 13.0pt; margin-left: 0cm; text-align: justify; text-indent: 0cm; line-height: 172%; page-break-after: avoid; font-size: 18.0pt; font-family: Consolas }
h3 { margin-top: 13.0pt; margin-right: 0cm; margin-bottom: 13.0pt; margin-left: 0cm; text-align: justify; text-indent: 0cm; line-height: 150%; page-break-after: avoid; font-size: 16.0pt; font-family: Consolas }
h4 { margin-top: 14.0pt; margin-right: 0cm; margin-bottom: 14.5pt; margin-left: 0cm; text-align: justify; text-indent: 0cm; line-height: 157%; page-break-after: avoid; font-size: 14.0pt; font-family: Consolas }
span.1Char
{ font-family: Consolas; font-weight: bold }
span.2Char
{ font-family: Consolas; font-weight: bold }
span.3Char
{ font-family: Consolas; font-weight: bold }
span.4Char
{ font-family: Consolas; font-weight: bold }
p.a,li.a,div.a { margin-top: 0cm; margin-right: 5.0pt; margin-left: 5.0pt; margin-bottom: .0001pt; text-indent: 5.0pt; line-height: 12.0pt; background: #F2F2F2; font-size: 10.5pt; font-family: Consolas; color: #333333 }
span.Char { font-family: Consolas; color: #333333; background: #F2F2F2 }
.MsoChpDefault { font-family: "Calibri", "sans-serif" }
div.WordSection1 { }
ol { margin-bottom: 0cm }
ul { margin-bottom: 0cm }

1.1自定义添加item

Items可以存在于模板(Template)中,也可以存在于主机(Host)中,模板的作用是可以复用,对需要重复配置的监控项归类。

下面演示如何在bjstack模板中添加一个Items,Key为memory.uasge[MemTotal]以及memory.uasge[MemFree]

1.配置zabbix-agent配置文件,添加自定义key,修改配置文件必须重启agent

在/etc/zabbix/zabbix_agentd.conf中配置参数,写法如下:

UserParameter=memory.uasge[*],/bin/cat
/proc/meminfo |grep "$1"|awk '{print $$2}'

2.测试key是否能获取值

[root@linux-node1
~]# yum install zabbix-get -y

[root@linux-node1
~]# zabbix_get -s 192.168.90.12 -k memory.uasge[MemTotal]

494328

[root@linux-node1
~]# zabbix_get -s 192.168.90.12 -k memory.uasge[MemFree]

76584

确保能获取到的值,就说明Key配置是正确的。提示:zabbix_get仅能测试获取Agent监控方式的Key值,不能获取其他类型的数据。

3.bjstack模板中默认不存在统计总内存的大小的Items,故我们需要自己添加item,添加方法:单击Configuration→Templates→bjstack→items→Create item,如图1-10所示

图1-10

4.自己定义的Key,手动添加即可

图1-11

5.完整的key如图1-12 (自定义key基本上都是如下模式,更多请看Zabbix监控实践)

图1-12

1.2Items key小结

用户自定义参数(UserParameter)仅支持Agent方式,对于其他方式,它是不支持的。

1.Key自定义的语法格式

在/etc/zabbix/zabbix_agentd.conf中配置参数,写法如下。

UserParameter=key,command

除了上面这种写法,还支持参数传递的写法,具体如下。

UserParameter=key[*],command
$1 $2 $3 ….

2.自定义Key中的特殊字符处理

如果Userparameter包含\’”`*?[]{}~$!&;()<>|#@这些字符,默认情况下,Zabbix对这些参数是无法正常处理的,需要在Zabbix_agentd.conf中开启参数UnsafeUserParameters,并将其值设置为1,语句如下。

[root@linux-node1
~]#vim /etc/zabbix/zabbix_agentd.conf

UnsafeUserParameters=1

3.自定义Key的例子

UserParameter=login-user,uptime|awk  -F ' ' '{print $4}'

然后重启zabbix_agent 服务(注意:修改配置文件必须重启。)

[root@linux-node1
~]# zabbix_get -s 192.168.90.12 -k login-user #运行测试命令,查看下Key

2

4.子配置文件的配置

为了便于维护和分类管理,UserParameter的内容可以单独写一个配置文件。

[root@linux-node1
~]#vim /etc/zabbix/zabbix_agentd.conf

Include=/etc/zabbix/zabbix_agentd.d/

Include是zabbix_agentd.conf中部分内容的子配置文件,注意:zabbix_agentd.conf.d/文件下所有的配置文件都会被当做子配置文件,如果有重复,会导致客户端Agent启动失败。

5.用户自定义参数总结

自定义Key的语法。

特殊字符的处理。

子配置文件的注意事项。

注意:

1.用户自定义参数一定要包含一个key和一个命令,也可以是一个脚本

2.key在整个系统是唯一的,一个key可以定义多个items

3.用户自定义参数返回值,最大返回512兆

4.自定义完后,重启服务测试Key

1.3Zabbix常用Key

1.3.1CPU的Key

system.cpu.intr
#设备中断整数

system.cpu.load[<cpu>,<mode>]
#CPU负载

system.cpu.num[<type>]
#CPU数量处理器个数type

system.cpu.switches
#上下文交换交换次数

system.cpu.util[<cpu>,<type>,<mode>]
#CPU利用率百分比

建议:

CPU负载、上下文、使用率等在Template OS Linux这个模板中存在,需要调整触发器,因为默认触发器较低(通过百分比来触发报警。)

1.3.2内存的key

vm.memory.size[<mode>]
#内存大小字节或百分比

system.swap.in[<device>,<type>]
#磁盘交换到交换分期

system.swap.out[<device>,<type>]
#交换分期到磁盘

system.swap.size[<device>,<type>]
#交换分区大小或者百分比

建议:

内存在Template
OS Linux这个模板中存在,调整下触发器即可(通过百分比来触发报警。)

1.3.3磁盘的key

vfs.dev.read[<device>,<type>,<mode>]  #磁盘读取状态整数

vfs.dev.write[<device>,<type>,<mode>]
#磁盘写入状态整数

vfs.fs.inode[fs,<mode>]
#磁盘inode数量pfree (空闲百分比), pused
(使用百分比)

建议:

默认Template
OS Linux模板有自动发现磁盘,以及外接数据盘,只需要修改自动触发器即可。(如果需要监控inode,则可以通过自带key,也可以通过自定义方式)

1.3.4网卡流量Key

net.if.in[if,<mode>]
 #网卡入口流量

net.if.out[if,<mode>]
#网卡出口流量

net.if.total[if,<mode>]
#网卡进/出流量的总和

建议:

默认Template
OS Linux模板都有自动发现网卡功能,所以基本我们只需要根据业务的流量来调整不同的触发器。

1.3.5监控端口的Key

net.tcp.listen[port]
#检测TCP端口是否开启

net.udp.listen[port]
##检测UDP端口是否开启

net.tcp.port[<ip>,port]
#连接到指定的TCP端口

net.tcp.service[service,<ip>,<port>]
#检测服务是否开启,并且端口可用

建议:

默认Template
OS Linux没有端口检测,可以根据实际情况监控端口以及服务(也可以通过自定义脚本来实现)。

1.3.6监控文件的key

vfs.file.cksum[file]
#计算文件校验

vfs.file.contents[file,<encoding>]
#获取文本内容若为空,只返回 LF/CR characters.

vfs.file.exists[file]
#检测文件是否存在1:存在 0:不存在

vfs.file.md5sum[file]
#文件MD5校验码文件MD5哈希值

vfs.file.size[file]
#文件大小字节fzabbix必须有可读此文件的权限

vfs.file.time[file,<mode>]
#文件时间信息Unix 时间戳. mode:modify (默认, 修改时间), access 最后访问时间,
change 最后改变时间

建议:

默认Template
OS Linux只有一个文件校验/etc/passwd,可根据不同的文件来做不同校验或者大小的控制。

1.3.7监控进程的key

kernel.maxfiles
#系统支持最大的open files整数

kernel.maxproc #系统支持最大的进程数量整数

建议:

进程在Template
OS Linux这个模板中存在,调整下触发器即可(低于多少即触发)。

最新文章

  1. Gitlab完美安装【CentOS6.5安装gitlab-6.9.2】
  2. [linux]如何为Virtualbox虚拟硬盘扩容(转载)
  3. JDBC连接数据库操作
  4. http状态码介绍
  5. sql语句中的注释符号
  6. jquery mobile 请求数据方法执行时显示加载中提示框
  7. PO_PO系列 - 安全文件管控管理分析(案例)
  8. erl0002-erlang ets学习笔记
  9. 禁止生产pyc
  10. C编译环境的搭建-sublime篇
  11. javascript笔记整理(变量作用域)
  12. http://fonts.googleapis.com/css?打开很慢解决方案
  13. Qt数据类型转换
  14. 教你一步一步部署.net免费空间OpenShift系列之三------上传ASP.net程序
  15. Linux学习笔记整理
  16. Android远程桌面助手(B1413)
  17. 阿里云mysql安装配置(CentOS 7.3 64)
  18. windows环境搭建nginx
  19. Web browser的发展演变
  20. 133、 Android 自动化测试(转载)

热门文章

  1. C# 6 与 .NET Core 1.0 高级编程 - 40 ASP.NET Core(上)
  2. Mybatis实战之TypeHandler高级进阶
  3. 在内存充足时malloc函数分配内存失败的原因及解决
  4. Linux less命令详解
  5. mybatis系列笔记(1)---mybatis入门
  6. 解决新建maven项目速度慢的问题
  7. java 完全二叉树的构建与四种遍历方法
  8. js基础---cookie存储
  9. java 线程及synchronized关键字
  10. js设置当前页面始终为框架最顶层