zabbix详解(一)

zabbix简介

zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。

zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供柔软的通知机制以让系统管理员快速定位/解决存在的各种问题。

zabbix由3部分构成,zabbixserver、可选组件zabbix proxy、可选组件zabbix agent。

zabbix server可以通过SNMP,zabbix agent,,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux,Solaris, HP-UX, AIX, Free BSD, Open BSD, OS X等平台之上。

zabbix proxy 是从监控设备收集监测数据和发送到zabbixserver的进程,属于代表zabbix server 的运行所有收集到的数据被暂时存放在代理服务器,之后统一由代理服务器转发给zabbix server所属的服务器,部署proxy是可选的,但是对于分担单个zabbix服务器的负载是非常有益的。如果尽在zabbix proxy上收集数据,那么将减轻zabbix server上的进程对cpu资源和磁盘I/O的消耗。zabbix proxy在没有本地管理员的情况下,是集中监控远程区域,分支和网络的理想解决方案。

zabbix agent需要安装在被监视的目标服务器上,它主要完成对硬件信息或与操作系统有关的内存,CPU等信息的收集。zabbix agent可以运行在Linux ,Solaris, HP-UX, AIX, Free BSD, Open BSD, OS X, Tru64/OSF1,Windows NT4.0, Windows 2000/2003/XP/Vista)等系统之上。

zabbix server可以单独监视远程服务器的服务状态;同时也可以与zabbix agent配合,可以轮询zabbix agent主动接收监视数据(trapping方式),同时还可被动接收zabbix agent发送的数据(trapping方式)。

另外zabbix server还支持SNMP (v1,v2),可以与SNMP软件(例如:net-snmp)等配合使用。

zabbix安装

zabbix的安装可以通过rpm包、源码编译、官方yum源三种方法安装,这里介绍利用yum源来安装。访问官方网址:http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/,只要安装其中的zabbix-release-2.4-1.el6.noarch.rpm即可自动生成yum源

相关安装包的说明:

  • 公共组件:

zabbix-2.4.7-1.el6.x86_64.rpm

  • java监控组件:

zabbix-java-gateway-2.4.7-1.el6.x86_64.rpm

  • 服务器端如果需要手动获取数据要装get

zabbix-get-2.4.7-1.el6.x86_64.rpm

  • 客户端自动发送数据要装send

zabbix-sender-2.4.7-1.el6.x86_64.rpm

  • 要装server端的话,只要装server、和相应数据库的server-mysql即可:

zabbix-server-2.4.7-1.el6.x86_64.rpm

zabbix-server-mysql-2.4.7-1.el6.x86_64.rpm

如果需要手动获取数据要装get

zabbix-get-2.4.7-1.el6.x86_64.rpm

  • 要装web端的话,只要装web、和相应数据库的web-mysql,还有一个japanese的日文包用来显示中文(2.0与2.2可能已有专用的中文包):

zabbix-web-2.4.7-1.el6.noarch.rpm

zabbix-web-mysql-2.4.7-1.el6.noarch.rpm

zabbix-web-japanese-2.4.7-1.el6.noarch.rpm

  • 要装proxy的话,只要安装zabbix、proxy、proxy-mysql三个即可:

zabbix-2.4.7-1.el6.x86_64.rpm

zabbix-proxy-2.4.7-1.el6.x86_64.rpm

zabbix-proxy-mysql-2.4.7-1.el6.x86_64.rpm

安装实例

  • 把A1和A2两台机器分别配置为Server与agent
  • A1上需要安装server、mysql、agent、web,因为服务器本身一般都会作为一个agent端一起监控
  • A2上只需安装agent即可

A1的安装与配置

a)server安装

server程序的安装

yum install zabbix-server-xxxx.rpmzabbix-server-mysql-xxx.rpm zabbix-get-xxx.rpm            zabbix-2.4.0-1.el6.x86_64.rpm

web程序的安装

yum install zabbix-web-xxx.rpm  zabbix-web-mysql-xxx.rpm  zabbix-2.4.0-1.el6.x86_64.rpm

agent程序的安装

yum install zabbix-agent-xxx.rpm  zabbix-sender-xxx.rpm  zabbix-2.4.0-1.el6.x86_64.rpm

注意:公共组件zabbix-2.4.0-1.el6.x86_64.rpm 是必须安装的,而且server端一般都会装上agent,监控自己

安装后/etc/httpd/conf.d/下会有zabbix.conf

启动服务service httpd start

cd/usr/share/doc/zabbix-server-mysql-2.4.0/create 该目录下有mysql创建和升级的模板脚本,需要导入到server的数据库(如果是安装proxy端只需导入schema.sql)

导入顺序:schema.sql -> images.sql -> data.sql

mysql zabbix -u root -p < schema.sql

mysql zabbix -u root -p < images.sql

mysql zabbix -u root -p < data.sql

b) 配置server

通过修改zabbix_server.conf

vim /etc/zabbix/zabbix_server.conf

常用选项说明:

  • ListenPort=10051

默认监听端口,不改的话就不用动

  • SourceIP=

给外面连接的IP,如果有多个可以在这里指定,只有一个不用指定

  • LogFileSize=0

日志文件大小,指定后日志会自动滚动,0为不滚动

  • DebugLevel

调试级别,日志级别,一般不做调整

  • DBHost=localhost

如果数据库是本机用localhost速度更快,例如这里可以指定172.16.100.7

  • DBSchema=

用于DB2或PostgreSQL

  • DBUser=zbxuser

DBPassword=zbxpass

根据实际情况修改

  • StartPollersUnreachable=1

探测主机是否在线

  • StartDiscoverers=0

自动发现功能,消耗资源,关闭

  • StartTimers=1

启动几个计时器进程

  • HousekeepingFrequency=1

每隔1小时启动一次,删除过期数据

  • MaxHousekeeperDelete=500

一次最多删多少个

  • SenderFrequency=30

报警频率

  • FpingLocation=/usr/sbin/fping

程序位置,要使用必须先安装Fping

  • 都设置好后可以启动服务了,它会启动很多进程,同时监听ipv4和ipv6

service zabbix-server start

c) web的配置

  • 首先要去编辑php的时区

vim /etc/php.ini

去掉注释 data.timezone = Asia/Chongqing

  • 重启httpd服务

service httpd restart

  • 然后访问

http://172.16.100.7/zabbix

选择2,没问题再3,填入数据库的相关信息,主机地址、端口、名字。最后就可以登陆访问了

d) 把本机配置为agent

agent程序已经安装,编辑配置文件vim/etc/zabbix/zabbix_agentd.conf

选项说明:

  • Server=172.16.100.7,127.0.0.1

服务器的设定,同时也是一个授权,授权给这个服务器来获取数据.可以多个

  • ServerActive=172.16.100.7,127.0.0.1

客户端可以主动通知服务器端,这里是通知对象的设定,同上,可以设定多个地址。当前主机即是Server又是Agent的时候,127.0.0.1不能去掉

  • Hostname=node1

主机名要全局唯一

  • 都配置好了启动

service zabbix-agent start

ss -tunlp 查看

e) web上监控相应agent

configuration -> hosts ,如果有开启自动发现功能这里就会显示出来,没有的话就create host,默认disable ,点击启用

f) 安装另一个agent

  • 程序安装

yum install zabbix-agent-xxx.rpm  zabbix-sender-xxx.rpm  zabbix-2.4.0-1.el6.x86_64.rpm

  • 修改配置文件/etc/zabbix/zabbix_agentd.conf

修改hostname,server

  • 启动服务servicezabbix-agent start
  • 再到web界面添加host

注意!!!

添加host时要注意Host name 的名字如果不是填IP,就要和/etc/zabbix/zabbix_agentd.conf中hostname名字保持一致!否则当客户端主动发送信息给服务器端时,服务器端会检测失败,这里规范的写法应该是和agent配置文件hostname一致

zabbix监控配置流程

 

Zabbix完整的监控配置流程大体上由如下步骤组成:

         Host group(主机组) --> Hosts(主机) -->Applications(应用) -->Items(监控项) --> Triggers(触发器) --> Events(事件) -->Actions(动作) -->User groups(用户组) -->Users(用户) --> Medias(媒介)

zabbix主机与组配置

主机不单单指linux、windows等服务器,它还包括路由器、交换机等设备。

(1)创建主机

configuration -> Hosts -> Create host

属性
描述
Host
name
主机名,只允许数字、空格、句号、下划线、不支持非主流符号。zabbix客户端配置文件中的hostname名称一定要与这个名字一致!
Visble
name
显示名称,可选项。主机名的别名
Groups 主机要加入的组,一个主机至少要加入一个组!
New
host group
新主机组。想新建一个组,可以在这里写上
Interfaces 主机接口:包含agent,snmp,jmx,IPMI。推荐使用IP地址方式来监控,也可以使用域名。zabbix agent 默认端口10050,snmp 161,jmx 12345,IMPI 623
Monitored
by proxy
是否通过proxy监控


(2)Templates主机模板

可以把主机链接到想要的模板上,模板上的项目就会应用到主机上

unlink: 取消模板,模板中的item依旧保留在host上

unlink and clear: 取消模板,并且删除监控到的数据以及将模板添加到host的item也删除

主机组

zabbix item 监控项

 

items是从主机里面获取的特定数据。通常称之为监控项

 

(1)item的构成

(a)item的组成,由key+参数组成。

例:

需要获取cpu信息,则需要一个对应的监控key: system.cpu.load来实现

system.cpu.load[avg5] 获取5分钟的cpu负载情况

system.cpu.load[avg1] 获取1分钟的cpu负载情况

获取网卡流量,则需要key:net.if.in或net.if.out

net.if.in[eth0] 获取eth0接口的网卡流入流量

(b)key名称的命名

允许字符:所有数字、大小写字母、下划线、减号、点

(c)key参数

key 可以有多个参数,它们之间用逗号 “,” 分开

key 的参数可以是带引号的字符串、不带引号的字符串以及数组

key 的参数如果为空,那么将会使用它设置的默认值

key 的参数带引号,任何unicode数据都合法,如果参数里面带有双引号,则要使用 “\” 来转义

key 的参数不带引号,除了逗号和右中括号,其他任何unicode字符串都合法。

key 的参数是一个数组,那么数组要多加一对中括号,并且数组里面的参数同样要遵循参数规范

注意:每个key背后都应该有一个命令或脚本来负现实现数据收集;此命令或脚本可调用传递给key的参数,调用方式为$1, $2,...

(2)item types 监控类型

如图,圈起来的就是所有的类型

常用的类型有agent、jmx、impi、snmp、agent-active

一种类型相当于一个接口,如果一个item中配置了多个接口,zabbix会依次(Agent->snmp->jmx->ipmi)调用,直到找到合适的接口为止

(a)agent 类型

agent有两种,agent(被动检测)和agent-active(主动检测)

区别:

agent(被动检测): zabbix server向 zabbix agent 讨要数据

agent-active(主动检测): zabbix agent 提交数据给 zabbixserver

agent 常用key

网卡流量相关:

net.if.in[if,<mode>]

if:接口,如eht0

mode:bytes, packets, errors, dropped

net.if.out[if,<mode>]

net.if.total[if.<mode>]

端口相关:

net.tcp.listen[port]

net.tcp.port[<ip>,port]

net.tcp.service[service,<ip>,<port>]

net.udp.listen[port]

进程相关:

kernel.maxfiles

kernel.maxproc

CPU相关:

system.cpu.intr中断

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

system.cpu.num[<type>]数量

system.cpu.switches

system.cpu.util[<cpu>,<type>,<mode>]利用率

磁盘IO或文件系统相关:

vfs.dev.read[<device>,<type>,<mode>]

vfs.dev.write[<device>,<type>,<mode>]

vfs.fs.inode[fs,<mode>]

(3)创建item

Configuration -> Hosts -> 在需要的主机上点击items-> Create item...

属性说明:

属性 描述
Host 主机或者模板
Name
监控项item名称可以使用如下宏变量:

$1,$2...$9 这9个参数对应item key的参数位置

例如:free disk on $1 如果item key 为vfs.fs.size[/,free] ,那么对应的名称会变成 free disk on / ,$1对应了第一个参数“/”

Type item类型,常用有agent,agent-active,snmp
key 可选系统自带的key或自定义key
Host
interface
主机接口
Type
of information

获取到的数据类型

Numeric(unsigned) - 64bit unsigned integer

Numeric(float) - floating point

numbercharacter - 字符串,最长255字节

Log - 日志文件 .key 必须为log[]

Text- 文本

Date
type

定义获取到数据的数据类型

Boolean - 数据为0或1. true表示1 false 为0 ,不区分大小写

Octal - 八进制

Decimal - 十进制

Hexadecimal - 十六进制

Units
默认情况下,如果原始值超过1000,那么它会先除以1000并且显示出来。例如设置了单位为bps并且受到的值为11102,将会显示为11.1kbps

如果单位被指定为B(byte),Bps(bytes per second),那么它会除以1024然后再显示数据

如果指定如下时间单位:

unixtime - 转为 “yyyy.mm.ddhh:mm:ss” 只能使用正数

uptime - 转为 “hh:mm:ss” 或者 “N days,hh:mm:ss”

例如收到的值为881764秒,它将会显示为“10 days,04:56:04”

s - 转为 “yyy mmm ddd hhhmmm sss ms”

例如收到的值为881764(秒),它将会显示为 10d 4h 56m 。有时只会显示2个单元,例如1m 5h,如果返回的值小于0.001,它只会显示 <1 ms

禁用的单位:ms、rpm、RPM、%

Use
custom multiplier
如果启用这个选项,所有接收到的整数或者浮点数都会乘以这个文本框里面的值。使用这选项,zabbix将会把收到的KB,MBps 等数据先转为B, Bps 。否则zabbix不能正确设置前缀(K,M,G等)
Update
interval (in sec)

数据更新时间。

如果设置为0,那么这个数据将永久不更新。但如果在灵活更新间隔(flexible interval)里面设置了一个非0间隔,那么以这个为准

Flexible
intervals

可以创建例外的更新间隔,例如:

Interval: 10,Period:1-5,10:00-19:00,表示周一到周五的早上10点到晚上19点每十秒更新一次数据。其余使用默认值。

最多只能设置7个灵活更新间隔

如果设置的多个灵活更新时间有冲突,那么它会使用最小的时间间隔

注意:

1.如果时间间隔被设置为0,那么数据永久不会更新

2.它不能用在zabbix active 主动方式的item

keep
history(in days)
历史记录在数据库中保存的天数
keep
trends(in days)

趋势数据(以小时为单位的min,max,avg,count的数据)在数据库中保留时长,过期数据将会被HouseKeeping删除

注意:趋势数据只能保存数字类型数据,字符、日志这些都无法存储

Store
value

Asis - 数据不做处理

Delta(speed per second) 一般用于数据增长的类型

计算公式为(value-prev_value)/(time-prev_time)

value - 获取到的原始值

prev_value - 上次接收到的值

time - 当前时间

prev_time - 上次接收数据的世界

例:

网卡流量,每次获取到的都是当前网卡总流量,比如第一次给的值是0字节(时间为30),第二次获取到的值为3000字节(时间为31),可以得出最终数据是100字节/秒

注意:如果当前获取到的值比上一个值更小,那么zabbix会忽略这个值,等待下一次的值

Delta(simple change)

计算公式为(value - prev_value)

value - 获取到的原始值

prev_value - 上次接收到的值

Show
value

值映射,需要配置数字值映射到字符的映射表。

例如:

1=>aa.com。如果key返回的数据为1,那么监控页面不会显示1,而是显示aa.com. key返回的数据只能为整数,并且不做任何修改保存到数据库中,只有在显示的时候才会根据映射表来展示相应内容

New
application
创建一个新的应用
Applications 设置item属于哪个应用
Populates
host inventory field
设置获取到的数据自动填充到inventory 资产清单的相应属性。前提是你的inventory 处于自动模式

(4)自定义item

语法:

UserParameter=<key>,<command>

定义方法:

在zabbix安装目录/etc/zabbix/zabbix_agentd.d/下创建对应的conf文件,在文件里按语法编写即可。

例:

该conf内容为: cat /etc/zabbix/zabbix-agnet.d/mysql.conf

UserParameter=Mysql.dml[*],/usr/local/mysql/bin/mysql -h$1 -u$2 -p$3 -e ‘SHOW GLOBAL STATUS‘ | awk‘/Com_$4\>/{print $$2}‘

(这里-p后不要加空格,这里命令参数使用了$符,所以要用两个$)

重启客户端服务使定义生效

service zabbix-agent restart

再在命令行用zabbix_get测试:

zabbix_get -s 172.16.100.7 -p 10050 -k"Mysql.dml[172.16.100.7,root,password,select]"

注意:可以在服务器端使用zabbix_get命令来测试定义好的item

zabbix Applications 应用程序

Applications 是item的一个组。例如我们要监控Mysql,就可以把所有和Mysql相关的item放到这个应用程序中。

一个item可以属于多个Application

(1)创建Application并添加item

  1. 点击configuration -> Hosts 或者 Templates
  2. 点击对应Host或Template中的 Application,再点击右上角的Create Application,填写名称添加即可

(2)添加item到application

新建或编辑item,修改其中的applications为需要的即可

zabbix simple check 基本检测

Simplecheck检测用于无远程客户商的环境,没有安装Agent的情况下使用,可以支持的功能包括ICMP ping和service检测。

Simplecheck所支持的key

1icmpping

用法:

  • zabbix使用外部命令fping处理icmp ping. fping 不包含在zabbix中,所以要额外安装,如果配置了epel源,可以直接yum install fping 安装
  • 安装后修改zabbix_server.conf, 指定fping 路径,配置参数FpingLocation=/usr/bin/fping.
  • 执行fping命令的zabbix用户要设置setuid,fping命令时需要root
  • Web配置:Configuration -> Hosts -> 点击 zabbix server 的 items -> create item

    这里只填一个参数IP,其他用默认值,增加后就可以在Monitoring -> latest data 查看数据

2icmppingloss

 

3icmppingsec

 

4net.tcp.service 检测服务是否开启

创建过程同上图,key内容如下:

net.tcp.service[http]或 net.tcp.service[ftp,,155]

 

5net.tcp.service.perf 检测服务器性能

创建过程同上图,key内容如下:

net.tcp.service.perf[http,,8080]

zabbix 历史数据与趋势数据

所有的数据收集后成为过去的了,所以称为历史数据。以及还会收集每小时的平均数据作为趋势数据,因为每小时才收集一次,所以趋势数据占用的资源很小。

1)保留历史数据

可以通过如下方式设置保留数据的时长:

  • item项新建或编辑里
  • 设置HouseKeeper tasks

2)保留趋势数据

可以通过如下方式设置保留趋势数据的周期

  • item项新建或编辑里
  • 批量更新item
  • 设置Housekeeper tasks

注意:Housekeeper会定期删除过期的数据,一般历史数据根据需要尽量少存点,因为数据量是很大的。趋势数据占用资源小,可以保留长一点。例如保存历史记录15天,趋势数据保留2年。另外,如果历史数据设置为0,zabbix用与触发器后不会存到数据库.如果趋势数据设置为0,zabbix不会计算和存储它。

重启服务器会丢失数据导致这个小时的平均数据不正确。你的数据是什么类型的,趋势数据也是什么类型的。整数的数据特别要注意一个问题,如果一共获取了两个值,其中一个0,一个1,那么它们的平均值是0,而不是0.5

时间: 2024-10-07 20:11:35

zabbix详解(一)的相关文章

zabbix详解:(二)添加被监控机器

通过上一篇的学习,看这一篇文章的应该是已经安装好zabbix的了,然而zabbix装好了并不代表就能用,因为他的目的是监控服务器,刚刚安装完也就只能监控zabbix_server自己,显然是要添加被监控机才能叫真正能使用,而zabbix本身虽然自带监控模板,但是有些时候还是不太适用,例如系统的不一样,命令的不一样等等,那怎么办呢,这个时候就需要自己添加监控项目了. 添加被监控机器: 来看看怎么添加被监控机器,只有两步, 第一步,被监控机要装上zabbix_agent,系统不同,就有不同zabbi

zabbix详解:(四)添加自定义的监控项目并使用

从安装的第一天,就必然有人会有疑问,默认的监控模板不好用,或者说根本没有自己想要的,这可怎么办呢?没关系,zabbix和nagios一样,可以自定义监控项目,当然包括报警规则和视图了,也不是很复杂. 添加自定义的监控项目: 操作之前要知道原理:原理是server端调用agent端配置的键值参数调用脚本,然后脚本参数传输给server端,server端写进数据库,然后获取到新的数值再进行处理并在前端显示给用户看. 所以我们需要做的事情有三个: 第一,编写监控脚本 第二,修改zabbix_agent

zabbix详解:(五)添加微信告警配置

新时代,新事物,前两年大伙还在想着怎么用短信告警比较合理的时候,这回微信告警已经悄悄进入人们视线,邮件报警就变得落后了,甚至有些大牛公司,微信告警还能做成图形告警,把监控图形也发上去,想当NB的架构. 添加微信告警配置: 微信告警的原理其实是利用微信企业号接口,把告警信息发送到微信企业号发布内容,然后关注这个企业号的微信用户就能收到微信信息了,达到了微信告警的结果. 所以我们要做的事情是: 第一,创建一个微信公众号 第二,写一个调用微信公众号接口的脚本 第三,在zabbix_web配置相关信息

zabbix详解:(三)添加邮件告警配置

大家应该心理有底,做监控不是只为了看服务器状态,虽然那也是监控的目的之一,但绝对不是全部,大家做监控的目的肯定是想预警,甚至是出问题就告警,毫无疑问zabbix也是支持告警规则的,现在来介绍传统的添加邮件告警,后面还会介绍微信告警. 添加邮件告警配置: 关于zabbix邮件告警的原理,其实是调用脚本,然后脚本通过邮件功能来向外发邮件,后面介绍的微信告警也是通过脚本调用微信接口来做的. 所以,告警的关键,就是脚本了,其实zabbix邮件告警这个功能很多文章有写,也有很多脚本可以参考,只是大部分版本

运维监控平台之zabbix详解1

本来是想一篇文章介绍完的,写着写着发现篇幅太长,所以决定还是分两篇来介绍,本次软件所用的版本信息如下(基于LNMP环境),操作系统centos6.7 nginx-1.6.3.tar.gz php-5.6.24.tar.gz mysql-5.5.49-linux2.6-x86_64.tar.gz zabbix-3.0.4.tar.gz (zabbix-3以上版本之支持php5.4以上环境) LNMP环境搭建不再这里说明了,如果不懂的看本人之前写的nginx+php,这里简单介绍下php编译 [[e

运维监控平台之zabbix详解2

1.Zabbix架构 zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案.zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题. Zabbix的运行架构如下图所示: 2.组件 zabbix由以下几个组件部分构成: 1).Zabbix Server:负责接收agent发送的报告信息的核心组件,所有配置,统计数据及操作数据均由其组织进行: 2).Database Storage:专用于存储所有

zabbix详解(二)

zabbix 触发器triggers 触发器使用逻辑表达式来评估通过item获取到的数据是处于哪种状态. 触发器的状态只有两种:OK和PROBLEM 一个trigger只能属于一个Item, 但一个Item可以有多个trigger (1)创建触发器 点击Configuration -> Host 或 Template 点击Hosts或Template相关行的triggers,再点击右上角的create trigger 在表单中输入相应的信息 Severity用途和定义说明: 可视化显示,不同级别

zabbix详解(三)

zabbix网络发现 网络发现有什么用?比如小军有100台服务器,不想一台台主机去添加,这时就可以使用网络发现功能自动添加了,前提条件是所有服务器都已经安装了agent或snmp,Server端就可以扫描配置好的ip段,自动添加host,自动给host link 模板.自动添加到主机组里等.网络发现功能让我们能更快速的部署zabbix.简化zabbix管理,并且在经常变动的环境里面也不需要花太多的精力. zabbix网络发现基于如下信息 ip范围 可用的外部服务(FTP,SSH,WEB,POP3

企业级Zabbix详解

基础LNMP环境搭建 [更多参考] 创建zabbix数据库信息 create database zabbix; grant all privileges on zabbix.* to [email protected]'localhost' identified by 'zabbix'; grant all privileges on zabbix.* to [email protected]'192.168.25.%' identified by 'zabbix; flush privileg