andyyuduo 发表于 2019-1-19 10:20:16

监控工具Zabbix之原理及部署

  zabbix简介
zabbix是完全开源的工具,整合了cacti和nagios等特性
  
SNMP
众多网络工具都支持此协议,比如常见路由交换,常见OS
其既可以做管理端也可以做被管理端
snmp协议大致有3个版本分别是v1 v2 v3
比较通用的版本是v2c的版本

无论是v1 和 v2 的安全性是比较差的,因为传输是明文的,v2c的认证机制也很薄弱
但是好在他们支持网络管理的功能,而对于非网络设备(操作系统),可以完全抛开snmp这种不安全的架构来实现监控的。所以很多工具都是所谓的控制端和agent架构,他们有专属的agent
snmp所谓的监控端也是为我们提供了接口再通过程序去采集,数据采集是否保存是否对趋势做分析,snmp都是不关心的,但是snmp只是一种协议
  

zabbix组件
zabbix server 负责接收数据、统计数据及操作数据均有其组织进行
database storage 专用于存储所有配置信息,以及由zabbix收集数据
web interfacezabbix的GUI接口,通常与server运行在同一台主机上,通常被称为frontend
proxy 可选组件
zabbix 自从2.0以后可以直接监控java应用

模板 : 配置的集合
item : 监控项,比如监控cpu每秒的阈值,一个特定指标的监控数据,被称为监控项,对于zabbix来讲 item是核心,因为监控对象可能有N个监控项目,那我们定义主机之后接下来就要定义主机之后的指标,定义监控项之后就回根据监控项去采集和存储数据了

一旦发现采集的数据超出了阈值之后,那么如下:
触发器   : 主要定义阈值,用于判定某一次数据采集是否符合条件,比如cpu利用率大于或等于80%,因此用于评估监控对象的某一特定的item所接受的数据是否在合理范围内的,接收数据量大于阈值时,触发器的状态将从ok转为problem,如果一直小于阈值那么一直显示OK的

事件: 触发器一旦从ok转为problem,则属于事件发生,一旦某个事件被触发,我们要执行某个动作
动作: 指对于特定事件事先定义的处理方法,通过条件和操作
报警升级:发送报警或执行远程命令的自定义方案,如每隔5分钟发送一次报警,共发送5次
媒介: 发送通知的手段或通道,比如邮件 jabber或者sms
通知:发送邮件或其他信息的内容
远程命令: 预定义的命令,可在被监控的主机处于某种特定条件下时自动执行,说白了就是通知层次上的另外操作
模板:
   用于快速定义被监控的主机的预设条目集合,通常包含了item、trigger、graph、screen
   application以及low-level discovery rule,模板可以直接链接至单个主机
  
安装zabiix

安装zabiix的方式:
·源码安装
同时安装server和agent,并支持将数据放入mysql数据中,可使用类似如下配置命令:
./configure --enable-server --enable-agent --with-mysql --enable-ipv6--with-net-snmp --with-libcurl --with-ssh2

如果仅安装server,并支持将数据放入mysql数据中,可使用类似如下配置命令:
./configure --enable-server --with-mysql --with-net-snmp --with-libcurl

如果仅安装proxy,并支持将数据放入mysql数据中,可使用类似如下配置命令:
./configure --prefix=/usr --enable-proxy --with-net-snmp --with-mysql--with-ssh2

如果仅安装agent,可使用类似如下配置命令:
./configure --enable-agent


而后编译安装zabbix即可:
# make
# make install


·rpm包安装
zabbix为各种平台都提供了编译好的rpm包
同时我们也可以直接指定epel源来安装
# groupadd mockbuild
# useradd mockbuild -g mockbuild
http://repo.zabbix.com/zabbix/2.0/rhel/6/SRPMS/zabbix-2.0.8-3.el6.src.rpm
# rpm -ivh zabbix-2.0.8-3.el6.src.rpm


规划
将mysql与mysql分割开来
10.12.33.58   mysql
10.12.33.57   zabbix
10.12.33.X      其他监控对象


安装zabbix
# wgethttp://repo.zabbix.com/zabbix/2.0/rhel/6/x86_64/zabbix-release-2.0-1.el6.noarch.rpm
# cp zabbix-2.0.8-3.el6.x86_64.rpmzabbix-agent-2.0.8-3.el6.x86_64.rpm zabbix-get-2.0.8-3.el6.x86_64.rpmzabbix-sender-2.0.8-3.el6.x86_64.rpm zabbix-server-2.0.8-3.el6.x86_64.rpmzabbix-server-mysql-2.0.8-3.el6.x86_64.rpm zabbix-web-2.0.8-3.el6.noarch.rpmzabbix-web-mysql-2.0.8-3.el6.noarch.rpm anzhuang/

先将本地安装为server,先不安装agent组件
# ll
total 5364
drwxr-xr-x 2 root root    4096 Sep1 14:06 agent
-rw-r--r-- 1 root root123788 Sep1 14:04zabbix-2.0.8-3.el6.x86_64.rpm
-rw-r--r-- 1 root root   51228 Sep1 14:04zabbix-get-2.0.8-3.el6.x86_64.rpm
-rw-r--r-- 1 root root   18632 Sep1 14:04zabbix-server-2.0.8-3.el6.x86_64.rpm
-rw-r--r-- 1 root root 1463132 Sep1 14:04zabbix-server-mysql-2.0.8-3.el6.x86_64.rpm
-rw-r--r-- 1 root root 3806960 Sep1 14:04zabbix-web-2.0.8-3.el6.noarch.rpm
-rw-r--r-- 1 root root   12068 Sep1 14:04zabbix-web-mysql-2.0.8-3.el6.noarch.rpm

解决依赖关系并安装软件包
# yum -y localinstall *.rpm



对mysql做初始化
需要相关脚本来实现
按顺序导入到mysql数据库中,并且创建相关数据库并授权给zabbix访问的账号密码
# rpm -ql zabbix-server-mysql
看到如下信息,就是我们的脚本
/usr/share/doc/zabbix-server-mysql-2.0.8/create
/usr/share/doc/zabbix-server-mysql-2.0.8/create/data.sql
/usr/share/doc/zabbix-server-mysql-2.0.8/create/images.sql
/usr/share/doc/zabbix-server-mysql-2.0.8/create/schema.sql


切换至node1.test.com
授权用户
mysql> grant all on *.* to 'root'@'10.12.33.%'IDENTIFIEDby 'mypass' WITH GRANT OPTION;
Query OK, 0 rows affected (0.00 sec)


mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

测试是否可以连接
# mysql -uroot -pmypass -h10.12.33.58

导入库
mysql> create database zabbix;
Query OK, 1 row affected (0.00 sec)

# mysql -uroot -pmypass -h10.12.33.58zabbix < /usr/share/doc/zabbix-server-mysql-2.0.8/create/schema.sql
# mysql -uroot -pmypass -h10.12.33.58zabbix < /usr/share/doc/zabbix-server-mysql-2.0.8/create/images.sql
# mysql -uroot -pmypass -h10.12.33.58 zabbix < /usr/share/doc/zabbix-server-mysql-2.0.8/create/data.sql

授权非管理员范访问
mysql> grant all on zabbix.* to 'zbxuser'@'10.12.33.%'IDENTIFIED BY 'zbxpass';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)


配置zabbix
# cd/etc/zabbix/
# ls
webzabbix_agentd.confzabbix_agentd.dzabbix_server.conf

# vim zabbix_server.conf
更改参数:
DBHost=10.12.33.58
DBUser=zbxuser
DBPassword=zbxpass
DBPort=3306
StartPollers=5   #zabbix需要向各agent端取数据的,可以并行启动好几个poller 这样可以并行大规模拉取数据,这个值需要看cpu的核心数,也就是说需要根据当前cpu进行计算

保存退出并启动服务
# /etc/init.d/zabbix-server start
Starting Zabbixserver:                                 

  # netstat -lntup
zabbix-server默认监听在10051端口

接下来配置web应用接口
  
配置web接口
由于我们之前已经安装过zabbix-web,它会默认在httpd服务目录下生成单独的配置文件
# ls /etc/httpd/conf.d/
php.confREADMEwelcome.confzabbix.conf

查看zabbix相关路径
# rpm -ql zabbix-web
我们能看到,所有的zabbix-web都被放在/usr/share/zabbix/目录下
而这些文件都是只读的

想访问zabbix-web 只要直接启动httpd服务即可
# /etc/init.d/httpd start


访问http://10.12.33.57/zabbix/
第一次访问的时候会提示如下界面
http://s3.运维网.com/wyfs02/M01/48/B8/wKiom1QLEVeSOKL4AAiqoNjD3oo490.jpg
  
说明我们必须安装zabiix,上面有个警告,说明直接依赖于php默认配置的时区是不安全的,因此最好手动配置时区,所以我们需要更改时区
# vim /etc/php.ini
date.timezone = Asia/Shanghai

/etc/init.d/httpd restart
再次刷新页面,如果没有提示错误信息,则选择下一步
  
  http://s3.运维网.com/wyfs02/M01/48/B8/wKiom1QLEXDCvApUAALt_fup4ig317.jpg
  提示检测所有条件是否符合 全部ok则可以进行下一步了
  http://s3.运维网.com/wyfs02/M00/48/B8/wKiom1QLEY6hgm31AAKtMye9eus233.jpg
  
提示后端类型,因为我们安装的是zabbix-mysql 所有只支持mysql数据库,服务器是10.12.33.58 端口为3306   0为默认则不需要更改,数据库为zabbix 用户名和密码为我们刚授权的用户权限,输入完后一定要选择testconnection 不然无法下一步
  http://s3.运维网.com/wyfs02/M02/48/B8/wKiom1QLEaaTUYwqAAIqr8IvGY8518.jpg
  
当前zabbix server在什么地方,因为web需要跟server进行交互的,而server就是本机,所以不用更改,而port就是10051,name是可选的,如果zabbix server比较多的话可以为其取名,这里我们就不对其命名了,直接下一步
  
  http://s3.运维网.com/wyfs02/M01/48/BA/wKioL1QLEeSD6vyWAAKwmc8g_BQ098.jpg
  
提示信息,告知我们大概信息是这样是否继续安装
  http://s3.运维网.com/wyfs02/M00/48/B8/wKiom1QLEfSBTCCLAAH-At6TzSA498.jpg
  
选择finish,直接下一步,接下来跳到登录页面
  http://s3.运维网.com/wyfs02/M02/48/BA/wKioL1QLEjHgbX9nAAIOC4hx36s152.jpg
  
登录的时候第一次要验证,用户名默认为admin,密码为zabbix
选择登录,可以看到如下界面
  http://s3.运维网.com/wyfs02/M02/48/BA/wKioL1QLElPA1LjEAAZGlI6oYXw663.jpg
  
zabiix的用户
很显然我们使用zabbix必须得有用户的,如上的菜单每个菜单下面都有子菜单,选择Administration 在子菜单选择User
  http://s3.运维网.com/wyfs02/M00/48/B8/wKiom1QLEmqTbq6gAAUYVRDAjDU828.jpg
默认显示的是组,而默认情况下是有俩用户 一个是admin 另一个则是guest
  
  
主界面
  http://s3.运维网.com/wyfs02/M00/48/BA/wKioL1QLEqOiuRQPAAGh5EgT2zU061.jpg
  
如果提示is running 说明服务器是没有任何问题的
  
  Zabbix的状态信息
  
表示监控的主机有多少, 0表示正常(被监控) 1表示没有被监控的 23为模板数
Number of hosts (monitored/notmonitored/templates)
24
0 / 1 / 23

表示没有任何的数据需要采集
Number of items(monitored/disabled/not supported)
0
0 / 0 / 0

triggers的信息
Number of triggers(enabled/disabled)
0
0 / 0[0 / 0 / 0]

共有几个用户
Number of users (online)
2
1

以上信息是经常需要我们去关注的,但是我们现在没有任何的监控对象,所以首先我们要去添加一个需要监控的主机

添加监控节点
# scp zabbix-2.0.8-3.el6.x86_64.rpmzabbix-agent-2.0.8-3.el6.x86_64.rpm zabbix-sender-2.0.8-3.el6.x86_64.rpmnode1.test.com:/tmp
root@node1.test.com's password:
zabbix-2.0.8-3.el6.x86_64.rpm      100%121KB120.9KB/s   00:00   
zabbix-agent-2.0.8-3.el6.x86_64.rp 100%138KB 138.4KB/s00:00   
zabbix-sender-2.0.8-3.el6.x86_64.r 100%   57KB 56.8KB/s   00:00   

# yum localinstall zabbix-*.rpm

# ls /etc/zabbix/
zabbix_agentd.confzabbix_agentd.d

# ll zabbix_agentd.d/
total 4
-rw-r--r-- 1 root root 1517 Oct32013 userparameter_mysql.conf    #用来监控mysql的额外所需要的补充

编辑配置文件
# vim zabbix_agentd.conf
更改以下参数:
Server=10.12.33.57
对于其他参数后期可以慢慢更改,于是可以正常启动了
# /etc/init.d/zabbix-agent restart

# ss -tanl
State       Recv-QSend-Q   Local Address:Port   Peer Address:Port
LISTEN      0   128               *:80               *:*   
LISTEN      0   128               :::22                :::*   
LISTEN      0   128               *:22               *:*   
LISTEN      0   128         127.0.0.1:6010               *:*   
LISTEN      0   128                ::1:6010            :::*   
LISTEN      0   128                :::10050             :::*   
LISTEN      0   128               *:10050             *:*   
LISTEN      0   80               :::3306            :::*   

接下来就可以对其进行监控了,要想监控其主机,需要新加配置才可以进行

添加监控
http://s3.运维网.com/wyfs02/M00/48/B8/wKiom1QLEzXw-COsAAKmZbfX68c330.jpg
  提示如下信息栏
  http://s3.运维网.com/wyfs02/M01/48/BA/wKioL1QLE13DsEUOAABEpQ3R2_U250.jpg
Host               主机自身的属性
Tamplates          关联的模板
IPMI               ipmi的属性配置
Macros             zabbix的宏(变量
Host inyentory   企业资产盘点

  
这里我们只更改host这一项即可:
http://s3.运维网.com/wyfs02/M01/48/B8/wKiom1QLE4eQZ14OAAOegOE4r08701.jpg
  
主机一定要归类到组里面去的,如果没有一个适合我们的,我们可以定义新的组
Host name 跟agentinterfaces 需要注意的是监控接口地址定义的主机才是最关键的
端口为10050,表示使用agent进行连接的,如果对端不支持agent,下面也有列出其他连接方式
  
  
  
查看其状态:
  http://s3.运维网.com/wyfs02/M02/48/BA/wKioL1QLE7GxzJRrAARAnMqPzx0275.jpg
  
回到主页面查看dashboard
查看当前监控信息:
Number of hosts (monitored/notmonitored/templates)
25
1 / 1 / 23

监控的主机有1个,没有监控的主机有1个

但是我们现在监控的主机的确是在线的而且能连接agent,说明主机只是处于活动状态,但是我们还需要监控对方的其他信息,比如网络网卡发送数据量等等
因此,我们还需要定义其监控的监控项

  
定义监控项
  http://s3.运维网.com/wyfs02/M02/48/BA/wKioL1QLE93zVG3hAASKp_7Re18256.jpg
  
  
创建一个监控项
  http://s3.运维网.com/wyfs02/M02/48/B8/wKiom1QLE_aD3096AAPkPQ7K2ko710.jpg
  
这里显示的是当前已有的items,依旧选择create items
Host
Name
Type          item的类型,使用哪种方法采集而来的数据,我们这里需要使用agent进行监控
key         对zabbix items而言,key用来标记items的键,我们也称之为标示符,监控对象一定是可采集数据的,为了唯一的标示这个指标,我们要为其做标记,就叫做key,所以对于zabbix而言 key是不能重名的
  
  http://s3.运维网.com/wyfs02/M00/48/BA/wKioL1QLFCez-XBtAAKnD2e63Jc864.jpg
  
Use custom multiplier   #自定义乘以多少倍,需要自定义的,因为我们所要显示的内容在图形里很可能与它的数据单位不一致,所以有些时候采集的数据是按位来处理的,但是显示的是按字节进行显示,所以要乘以8 ,同样的如果以字节为采集单位,显示的为k 那么需要乘以1024

Update interval (in sec)    #定义多少秒采集一次数据,当然我们也可以定义在什么时间内采集
Flexible intervals          #定义采集时间段
Keep history (in days)      #数据历史保存多少天
Keep trends (in days)       #数据趋势保存多少天
Store value               #保存的格式
    As is                   #原封不动保存
    delta (speed per secound)      #使用当前时间点的值减去上个时间点的值并除以时间来计算速率
    delta (simple change)          #只计算差别而不计算平均速率
#对于网卡速率而言要选择第二个
Show value                  #显示的状态
New application             #当前的在状态存放在哪个application里
Description               #描述信息
Status                      #状态

创建完毕后返回configureation --> hosts
  http://s3.运维网.com/wyfs02/M01/48/BA/wKioL1QLFHHgXFjzAANQiVWiVUc229.jpg
  
看到其自动建立了名为NetTraffic 的application
  http://s3.运维网.com/wyfs02/M01/48/B8/wKiom1QLFIDQabuwAANLTsOgqQw891.jpg
  
回到主页面并查看监控项
当前monitored有多少个处于监控的状态 为1个
Number of hosts (monitored/notmonitored/templates)
25
1 / 1 / 23
Number of items(monitored/disabled/not supported)
1
1 / 0 / 0
查看图形
当每建立一个item会自动创建图形的
依次选择monitoring --> Latest data,每个节点对应的监控项:
   http://s3.运维网.com/wyfs02/M02/48/B8/wKiom1QLFL_RvKfIAAME28TCZE8998.jpg
可以看到其监控项,上次数据是2016 当前数据是+476,我们选择Graph 可以查看图形
http://s3.运维网.com/wyfs02/M01/48/B8/wKiom1QLFOGgRcHiAAaHkIDujhQ124.jpg
那么我们对这个节点进行ping操作,使其产生一些数据流量,如下所示:
http://s3.运维网.com/wyfs02/M02/48/BA/wKioL1QLFQGSJMQSAAYBdIukSe4609.jpg
如果我们想对其监控多个状态只需要再加监控项即可

新加监控项
新加监控多个状态
http://s3.运维网.com/wyfs02/M00/48/BA/wKioL1QLFRqxeZOOAARWO5XYwYo510.jpg
http://s3.运维网.com/wyfs02/M02/48/B8/wKiom1QLFSbjP8VoAANo1hvgS38398.jpg
添加新监控项
http://s3.运维网.com/wyfs02/M00/48/B8/wKiom1QLFU3TRepnAAKvPW-jc04527.jpg
http://s3.运维网.com/wyfs02/M00/48/BA/wKioL1QLFVaB0mh9AARJI0cr92s207.jpg
添加监控CPU
需要再次创建items
http://s3.运维网.com/wyfs02/M00/48/B8/wKiom1QLFW3RzrWBAAKaJgAT_EM746.jpg
再添加,使其监控cpu的使用率
http://s3.运维网.com/wyfs02/M01/48/BA/wKioL1QLFY6jgZ1IAAKOKHCEyBo005.jpg
key为system.cpu.intr 意思是cpu的中断次数
Units 不用填写因为这次与上次没有关系,所以不用计算,而且一定是无符号整数
http://s3.运维网.com/wyfs02/M01/48/BA/wKioL1QLFbKTobH8AARRgp0ZPJ0630.jpg
可看到,我们的一个主机的application 被分为了两个,虽然都是同一个主机
因为这里是根据application为主 建立分组的,此时我们发现所有的application都采集到了数据

使同一application工作在同一张图上
http://s3.运维网.com/wyfs02/M01/48/B8/wKiom1QLFcrQZdo5AAP73jdOEW4416.jpg
我们自定义某几个指标放在一个图进行展示
http://s3.运维网.com/wyfs02/M01/48/B8/wKiom1QLFeChLitCAAKZm1numvA049.jpg
可以选择Preview先预览一下效果
http://s3.运维网.com/wyfs02/M02/48/BA/wKioL1QLFfrjxPFQAAM79fiNll8772.jpg
选择Save 进行保存
使用screens将图整合
http://s3.运维网.com/wyfs02/M02/48/B8/wKiom1QLFhvjpn4mAAKYRL3327Q742.jpg
http://s3.运维网.com/wyfs02/M02/48/BA/wKioL1QLFiPTrlNdAADjAHeaRNU930.jpg
显示为几行几列,这里为1行2列
加图:
  
http://s3.运维网.com/wyfs02/M00/48/BA/wKioL1QLFl7AaJNjAAE0ZXcbPfc467.jpg
http://s3.运维网.com/wyfs02/M00/48/B8/wKiom1QLFlfQIgw4AAJDf26gRyA511.jpg
如下所示:
http://s3.运维网.com/wyfs02/M01/48/BA/wKioL1QLFmDiN5ScAAJnS0DUEkw275.jpg
   接下来再添加网络图
http://s3.运维网.com/wyfs02/M02/48/BA/wKioL1QLFqeijPJKAAMZ7stzWTI162.jpg
http://s3.运维网.com/wyfs02/M02/48/B8/wKiom1QLFqCjfQnAAAOVWJJXE-s752.jpg
  以上,为zabbix的简单部署以及使用方法,感谢各位
  
  
  
  
  
  
  
  
  



页: [1]
查看完整版本: 监控工具Zabbix之原理及部署