美文网首页
zabbix监控

zabbix监控

作者: cnzhanhao | 来源:发表于2019-02-28 22:20 被阅读0次

2 ZABBIX监控平台概述

2.1 重要组件

[图片上传失败...(image-831067-1551362576388)]

1)zabbix server:负责接收agent发送的报告信息的核心组件,所有配置、统计数据及操作数据都由它组织进行;

2)database storage:专用于存储所有配置信息,以及由zabbix收集的数据;

3)web interface:zabbix的GUI接口;

4)proxy:可选组件,常用于监控节点很多的分布式环境中,代理server收集部分数据转发到server,可以减轻server的压力;

5)agent:部署在被监控的主机上,负责收集主机本地数据如cpu、内存、数据库等数据发往server端或proxy端;

另外,zabbix server、proxy、agent都有自己的配置文件以及log文件,重要的参数需要在这里配置,后面会详细说明。

2.2 通信流程

一个监控系统运行的大概的流程是这样的:

agentd需要安装到被监控的主机上,它负责定期收集各项数据,并发送到zabbix server端,zabbix server将数据存储到数据库中,zabbix web根据数据在前端进行展现和绘图。这里agentd收集数据分为主动和被动两种模式:

主动:agent请求server获取主动的监控项列表,并主动将监控项内需要检测的数据提交给server/proxy

被动:server向agent请求获取监控项的数据,agent返回数据。

【主动监测】通信过程如下:

zabbix首先向ServerActive配置的IP请求获取active items,获取并提交active tiems数据值server或者proxy。很多人会提出疑问:zabbix多久获取一次active items?它会根据配置文件中的RefreshActiveChecks的频率进行,如果获取失败,那么将会在60秒之后重试。分两个部分:

Ø 获取ACTIVE ITEMS列表

² Agent打开TCP连接(主动检测变成Agent打开)

² Agent请求items检测列表

² Server返回items列表

² Agent 处理响应

² 关闭TCP连接

² Agent开始收集数据

Ø 主动检测提交数据过程如下:

² Agent建立TCP连接

² Agent提交items列表收集的数据

² Server处理数据,并返回响应状态

² 关闭TCP连接

【被动监测】通信过程如下:

² Server打开一个TCP连接

² Server发送请求agent.ping\n

² Agent接收到请求并且响应<HEADER><DATALEN>1

² Server处理接收到的数据1

² 关闭TCP连接

这里,有人可以看出来,被动模式每次都需要打开一个tcp连接,这样当监控项越来越多时,就会出现server端性能问题了。

那实际监控中是用主动的还是被动的呢?这里主要涉及两个地方:

1、新建监控项目时,选择的是zabbix代理还是zabbix端点代理程式(主动式),前者是被动模式,后者是主动模式。

2、agentd配置文件中StartAgents参数的设置,如果为0,表示禁止被动模式,否则开启。一般建议不要设置为0,因为监控项目很多时,可以部分使用主动,部分使用被动模式。

2.3 主要功能

1)Application monitoring 应用监控数据库/SSH/Apache/Nginx等应用程序的监控。

2)Server monitoring 服务器监控CPU,内存,SWAP,磁盘空间,网卡流量的监控等,可以通过浏览器实时查看Graphs。

3)Network monitoring 网络设备监控支持Cisco, Juniper, 3Com等网络设备,网络设备通过SNMP(SNMP (v1,v2,v3) devices)协议进行监控。

4)添加自定义监控,对于Zabbix无法满足的监控,可以添加自定义监控。

2.4 主要优势

1)安装配置简单,支持多种语言,包括中文。

2)系统自带多种监控模板,可以直接使用。

3)支持分布式部署和WEB集中管理(通过WEB页面设置或查看报警结果)。

4)自动发现主机和网络设备(discovery of file systems,network interfaces,hosts and netwrok devices)。

5)WEB监控:可以监控WEB下载速度,返回码及响应时间。

6)提供实时和历史的监控分析数据。

7)EMAIL报警,按照故障级别|服务器类型|业务类型发送EMAIL邮件到相关负责人。

2.5 主要劣势

1)需要在被监控机器上面安装agent。

2)All configuration information都存储在数据库里面,数据库是整个监控平台的瓶颈。

3 ZABBIX安装部署

  • 在线yum安装

在线安装比较简单,直接用yum安装即可,这里不再赘述

  • 源码安装

指导地址;

https://www.zabbix.com/documentation/3.4/zh/manual/installation/install

4 监控需求

4.1 主机监控

4.1.1 内存监控

内存监控可以直接内置的键值:

vm.memory.size[available]

触发器:

{vm.memory.size[available].**last(**0**)**}<200M

在触发器里面自定义需要警报的大小和级别

[图片上传失败...(image-220513-1551362576386)]

[图片上传失败...(image-6c62eb-1551362576386)]

4.1.2 磁盘监控

磁盘监控可以直接内置的键值(/app为需要监控的目录):

vfs.fs.inode[/app,pfree]

触发器(这里的数字为剩余百分比):

{vfs.fs.inode[/app,pfree].**last(**0**)**}<20

在触发器里面自定义需要警报的大小和级别

[图片上传失败...(image-cdad02-1551362576386)]

4.1.3 Cpu监控

CPU监控可以直接内置的键值:

system.cpu.load[percpu,avg1]

触发器(这里的数字为linux中的top/核数):

{system.cpu.load[percpu,avg1].**avg(**5m**)**}>5

在触发器里面自定义需要警报的大小和级别

[图片上传失败...(image-43c7e0-1551362576386)]

[图片上传失败...(image-e795b3-1551362576386)]

4.1.4 网络IO监控

网络监控可以直接内置的键值:

net.if.in[ens160] net.if.out[ens160]

[图片上传失败...(image-c6f36a-1551362576386)]

4.2 中间件监控

4.2.1 MQ监控

MQ主要监控有管理页面code,连接数,堆积消息数

  • 管理页面code

键值:

active.status[xxx.xxx.xxx.xxx:8161]

触发器:

{active.status[xxx.xxx.xxx.xxx:8161].**last()**}<>200

监控脚本:

UserParameter=active.status[*],curl -I -m 10 -o /dev/null -s -w %{http_code} -uadmin:admin http://$1/admin/queues.jsp

[图片上传失败...(image-52bc1e-1551362576381)]

  • 连接数

键值:

active.connections[xxx.xxx.xxx.xxx:8161]

触发器:

{active.connections[xxx.xxx.xxx.xxx:8161].last()}>10

监控脚本:

UserParameter=active.connections[*],curl -s -uadmin:admin http://$1/admin/connections.jsp | grep -c tcp://

[图片上传失败...(image-241bf6-1551362576381)]

  • 堆积消息数

键值:

active.status[xxx.xxx.xxx.xxx:8161]

触发器:

{active.status[xxx.xxx.xxx.xxx:8161].**last()**}<>200

监控脚本:

UserParameter=active.queues[*],sh /etc/zabbix/zabbix_agentd.d/check.sh active_queues $1 $2

(上面所用的check.sh会在最后面附上)

4.2.2 ES监控

ES监控主要有9200页面code,连接数

  • 页面code

键值:

es.status[xxx.xxx.xxx.xxx:9200]

触发器:

{ es.status[xxx.xxx.xxx.xxx:9200].**last()**}<>200

监控脚本:

UserParameter=es.status[*],curl -I -m 10 -o /dev/null -s -w %{http_code} [http://$1](http://$1)

[图片上传失败...(image-3b0c5-1551362576381)]

  • 连接数

键值:

es.connections[xxx.xxx.xxx.xxx:9200]

触发器:

{ es.connections[xxx.xxx.xxx.xxx:9200].last()}>50

监控脚本:

UserParameter=es.connections[*],sh /etc/zabbix/zabbix_agentd.d/check.sh es_connection $1

(上面所用的check.sh会在最后面附上)

[图片上传失败...(image-38c167-1551362576381)]

4.2.3 Mysql监控

对于Mysql的监控有mysqladmin ping和连接数查询

  • MysqlAdminPing

键值:

mysql.ping[xxx.xxx.xxx.xxx,xxx,xxxx]

触发器:

{ mysql.ping[xxx.xxx.xxx.xxx,xxx,xxx].last()}<>1

监控脚本:

UserParameter=mysql.ping[*],/app/mysql/mysqladmin -u$2 -h$1 -p$3 ping 2>/dev/null | grep -c alive

[图片上传失败...(image-bb5112-1551362576381)]

  • 连接数

键值:

mysql.connections[xxx.xxx.xxx.xxx,xxx,xxx]

触发器:

{ mysql.connections[xxx.xxx.xxx.xxx,xxx,xxx].last()}>100

监控脚本:

UserParameter=mysql.connections[*],/app/mysql/mysqladmin -u$2 -h$1 -p$3 status 2>/dev/null |cut -d " " -f5

[图片上传失败...(image-114427-1551362576381)]

4.3 应用监控

4.3.1 应用端口方式监控

内置键值:

net.tcp.listen[8080]

触发器:

{ net.tcp.listen[8080].last()}=0

[图片上传失败...(image-f3ce83-1551362576385)]

4.3.2 应用进程名方式监控

内置键值:

proc.num[,mcbadm,all,hello-springboot]

(mcbadm是用户名, hello-springboot是应用名)

触发器:

{proc.num[,mcbadm,all,hello-springboot].last()}=0

[图片上传失败...(image-adf7ca-1551362576381)]

4.4 安全监控

4.4.1 账号

  • 登录人数

键值:

login-user

触发器:

{login-user.last()}>3

监控脚本:

UserParameter=login-user,who|wc -l

[图片上传失败...(image-77756b-1551362576381)]

5 附件

  • check.sh

#!/bin/bash

# -------------------------------------------------------------------------------

# FileName: check.sh

# Revision: 1.0

# 这个脚本是为了解决zabbix中例如awk里面参数冲突的问题

# -------------------------------------------------------------------------------

# 参数是否正确

#if [ $# -ne "1" ];then

#    echo "arg error!"

#fi

# 获取数据

case $1 in

 active_queues)

 result=`curl -s -uadmin:admin http://$2/admin/queues.jsp | grep -A 5 "$3</a></td>"|awk -F '<' '{print $2}'|sed 's/td>//g'|head -2|tail -1`

 echo $result

 ;;

 es_connection)

 result=`curl -s http://$2/_nodes/stats | awk -F 'current_open' '{print $2}' | cut -d "," -f 1 | cut -d ":" -f 2`

 echo $result

 ;;

 *)

 echo "Usage:$0(active_queues|es_connection)"

 ;;

esac

相关文章

网友评论

      本文标题:zabbix监控

      本文链接:https://www.haomeiwen.com/subject/vkjluqtx.html