2/26 星期三 企业级 Zabbix 监控
作业:zabbix 如何监控cpu的温度
1、zabbix 监控
1、zabbix 监控架构
zabbix的监控架构在实际监控架构中,zabbix根据网络环境、监控规模等 分了三种架构: server-client 、master-node-client、server-proxy-client三种 。
1、server-client架构也是zabbix的最简单的架构,监控机和被监控机之间不经过任何代理 ,直接由zabbix server和zabbix agentd之间进行数据交互。适用于网络比较简单,设备比较少的监控环境 。
2、server-proxy-client架构其中proxy是server、client之间沟通的一个桥梁,proxy本身没有前端,而且其本身并不存放数据,只是将agentd发来的数据暂时存放,而后再提交给server 。该架构经常是和master-node-client架构做比较的架构 ,一般适用于跨机房、跨网络的中型网络架构的监控
3、master-node-client架构该架构是zabbix最复杂的监控架构,适用于跨网络、跨机房、设备较多的大型环境 。每个node同时也是一个server端,node下面可以接proxy,也可以直接接client 。node有自已的配置文件和数据库,其要做的是将配置信息和监控数据向master同步.
普通监控:
分布式监控:
2、Zabbix 优点 需要背过
开源,无软件成本投入
Server 对设备性能要求低
支持设备多,自带多种监控模板
支持分布式集中管理,有自动发现功能,可以实现自动化监控
当监控的 item 比较多服务器队列比较大时可以采用被动状态,被监控客户端主动 从server 端去下载需要监控的item 然后取数据上传到 server 端。 这种方式对服务器的负载比较小。
Api 的支持,方便与其他系统结合
3、Zabbix 缺点
需在被监控主机上安装 agent,所有数据都存在数据库里, 产生的数据很大,瓶颈主要在数据库。
4、Zabbix 监控系统监控对象 ipmi平台管理接口
IPMI:智能平台管理接口(Intelligent Platform Management Interface)IPMI 能够横跨不同的操作系统、固件和硬件平台,可以智能的监视、控制和自动回报大量服务器的运作状况,以降低服务器系统成本。
SNMP:网络管理协议(SNMP) 是专门设计用于在 IP 网络管理网络节点(服务器、工作站、路由器、交换机等)的一种标准协议,它是一种应用层协议。
5、监控区别 还有很多需要去查
1.nagios图形不是特别好,也可以安装图形插件,但是也不怎么好看
2.nagios一般情况下如果需要图形可以和cacti配合使用
3.cacti的监控是轮询监控,效率低,图形相对nagios比较好看
4.zabbix在性能和功能上都强大很多
5.zabbix的图形相当漂亮
6.zabbix支持多种监控方式 zabbix-agent snmp 等等
7.zabbix支持分布式监控,能监控的agent非常多
8.zabbix有图形的web配置界面,配置简洁
9.zabbix支持自动发现功能
6、Zabbix监控方式
被动模式 主动模式
1、Server
Zabbix server 是agent程序报告系统可用性、系统完整性和统计数据的核心组件,是所有配置信息、统计信息和操作数据的核心存储器。
2、数据库存储
所有配置信息和Zabbix收集到的数据都被存储在数据库中。
3、Web界面
为了从任何地方和任何平台都可以轻松的访问Zabbix, 我们提供基于Web的Zabbix界面。该界面是Zabbix Server的一部分,通常跟Zabbix Server运行在同一台物理机器上。
4、Proxy 代理服务器
Zabbix proxy 可以替Zabbix Server收集性能和可用性数据。
Zabbix Proxy是一个可以从一个或多个受监控设备收集监控数据,并将信息发送到Zabbix sever,基本上是代server工作的。
部署Proxy是可选的,但是可能非常有益于分散单个Zabbix sever的负载。 如果只有proxy收集数据,sever上的进程就会减少CPU消耗和磁盘I / O负载。
Zabbix proxy是完成远程区域、分支机构、没有本地管理员的网络的集中监控的理想解决方案。
Zabbix proxy需要使用独立的数据库。
5、数据流
监控方面,为了创建一个监控项(item)用于采集数据,必须先创建一个主机(host)。告警方面,在监控项里创建触发器(trigger),通过触发器(trigger)来触发告警动作(action)。 因此,如果你想收到Server XCPU负载过高的告警,你必须: 1. 为Server 创建一个host并关联一个用于对CPU进行监控的监控项(Item)。 2. 创建一个Trigger,设置成当CPU负载过高时会触发 3. Trigger被触发,发送告警邮件 。
4、Zabbix常用术语的含义
1、主机 (host)
一台你想监控的网络设备,用IP或域名表示
2、主机组 (host group)
主机的逻辑组;它包含主机和模板。一个主机组里的主机和模板之间并没有任何直接的关联。通常在给不同用户组的主机分配权限时候使用主机组。
3、监控项 (item)
你想要接收的主机的特定数据,一个度量数据。
4、触发器 (trigger)
一个被用于定义问题阈值和“评估”监控项接收到的数据的逻辑表达式 当接收到的数据高于阈值时,触发器从“OK”变成“Problem”状态。当接收到的数据低于阈值时,触发器保留/返回一个“OK”的状态。
5、动作 (action)
一个对事件做出反应的预定义的操作。 一个动作由操作(例如发出通知)和条件(当时操作正在发生)组成
6、媒介 (media)
发送告警通知的手段;告警通知的途径
7、远程命令 (remote command)
一个预定义好的,满足一些条件的情况下,可以在被监控主机上自动执行的命令
8、模版 (template)
一组可以被应用到一个或多个主机上的实体(监控项,触发器,图形,应用,Web场景等)的集合 模版的任务就是加快对主机监控任务的实施;也可以使监控任务的批量修改更简单。模版是直接关联到每台单独的主机上。
9、web 场景 (web scenario)
利用一个或多个HTTP请求来检查网站的可用性
10、前端 (frontend)
Zabbix提供的web界面
11、Zabbix agent
Zabbix agent部署在监控的目标上,主动监测本地的资源和应用(硬件,内存,处理器统计等)。 Zabbix agent收集本地的操作信息并将数据报告给Zabbix server用于进一步处理。一旦出现异常 (比如硬盘空间已满或者有崩溃的服务进程), Zabbix server会主动警告管理员指定机器上的异常。
5、Zabbix 企业监控系统搭建
1、实验准备
centos7.5 系统服务器3台、 一台作为监控服务器, 两台台作为被监控节点, 配置好yum源、 防火墙关闭、 各节点时钟服务同步、 各节点之间可以通过主机名互相通信。 1)所有机器关闭防火墙和selinux
setenforing 0 (修改配置文件关闭)
sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/’ /etc/selinux/config
systemctl stop firewalld.service
2)根据架构图,实验基本设置如下:
机器名称
IP配置
服务角色
备注
server
192.168.246.228
zabbix-server
开启监控功能
node1
192.168.246.226
zabbix-agent-none1
开启
node2
192.168.246.227
zabbix-agent-none2
开启
2、Zabbix的安装,安装server端
1)更新yum仓库
我们去官网下载一个包zabbix-release-3.4-2.el7.noarch.rpm,本地安装至我们的虚拟机,这样,我们本地就有了新的yum源,可以直接安装zabbix服务:
[root@zabbix-server ~]# rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
而后更新我们的yum仓库:
[root@zabbix-server ~]# yum repolist
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
zabbix-non-supported 4/4
repo id repo name status
base base 9,363
epel epel 11,349
zabbix/x86_64 Zabbix Official Repository - x86_64 80
zabbix-non-supported/x86_64 Zabbix Official Repository non-supported - 4
repolist: 20,796
安装: zabbix-get 可以获取 两台被监控机器 的信息
[root@zabbix-server ~]# yum install zabbix-server-mysql zabbix-web-mysql zabbix-agent -y
[root@zabbix-server ~]# yum install -y zabbix-get-3.4.0-1.el7.x86_64
2)安装设置数据库:
1、安装 mariadb.repo
[root@zabbix-server ~]# yum install -y mariadb mariadb-server
2、重启我们的数据库服务:
[root@zabbix-server ~]# systemctl restart mariadb
[root@zabbix-server ~]# systemctl enable mariadb
[root@zabbix-server ~]# mysqladmin -u root password ‘zabbix’ #设置root密码
3、创建数据库并授权账号
[root@zabbix-server ~]# mysql -uroot -p’zabbix’
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin; # 创建zabbix数据库
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by ‘zabbix’; # 注意授权网段
MariaDB [(none)]> flush privileges; # 刷新授权
MariaDB [(none)]> \q #退出
Bye
4、导入表
我们直接把表导入至我们的数据库即可:
[root@zabbix-server ~]# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
Enter password: #输入密码
导入以后,我们进去数据库查看一下:
[root@zabbix-server zabbix-server-mysql-3.4.15]# mysql -uzabbix -p
Enter password:
MariaDB [(none)]>c
±-------------------+
| Database |
±-------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
| zabbix |
±-------------------+
MariaDB [(none)]> use zabbix;
Database changed
MariaDB [zabbix]> show tables;
±---------------------------+
| Tables_in_zabbix |
±---------------------------+
| acknowledges |
| actions |
…
| proxy_dhistory |
| proxy_history |
| regexps |
| rights |
| screen_user |
±---------------------------+
140 rows in set (0.001 sec)
可以看出来,我们的数据已经导入成功了。
3、配置 server 端
我们的数据库准备好了以后,我们要去修改server端的配置文件。
[root@zabbix-server ~]# cd /etc/zabbix/
[root@zabbix-server zabbix]# ls
web zabbix_agentd.conf zabbix_agentd.d zabbix_server.conf
#为了方便我们以后恢复,我们把配置文件备份一下
[root@zabbix-server zabbix]# cp zabbix_server.conf zabbix_server.conf.bak
[root@zabbix-server zabbix]# vim zabbix_server.conf
DBHost=localhost #数据库对外的主机
DBName=zabbix #数据库名称
DBUser=zabbix #数据库用户
DBPassword=zabbix #数据库密码
#这里的配置文件打开后:如果有的就不用添加了。如果是注释了的也不用取消注释。直接把内容复制粘贴过去就可以 了。
以上,我们的基本配置已经完成,可以开启服务了:
[root@zabbix-server zabbix]# systemctl start zabbix-server
[root@zabbix-server zabbix]# systemctl enable zabbix-server
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-server.service to /usr/lib/systemd/system/zabbix-server.service.
开启服务以后,我们一定要去确认一下我们的端口有没有开启:
zabbix-server的端口 :10051
[root@zabbix-server zabbix]# netstat -lntp | grep 10051
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 1574/zabbix_server
tcp6 0 0 :::10051 :: LISTEN 1574/zabbix_server
如果查到的端口没有开启,我们就要去检查一下配置文件有没有出问题了。
4、配置 web GUI
有一个/etc/httpd/conf.d/zabbix.conf文件,这个配置文件就是帮我们做映射的文件
[root@zabbix-server zabbix]# vim /etc/httpd/conf.d/zabbix.conf #设置时区
#里面基本不用动。只需要添加一行时区即可
php_value date.timezone Asia/Shanghai —添加如下
接下来,我们就可以启动我们的httpd服务了:
[root@zabbix-server zabbix]# systemctl start httpd
[root@zabbix-server zabbix]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
我们的服务已经开启,接着我们就可以用浏览器来访问了。
5、浏览器访问并进行初始化设置
我们使用浏览器访问192.168.246.228/zabbix,第一次访问时需要进行一些初始化的设置,我们按照提示操作即可:
点击Finish以后,我们就会跳转到登录页面,使用我们的账号密码登录即可:
默认用户名为:Admin ,密码为:zabbix 。 登陆进来就可以看到我们的仪表盘了:
6、配置 agent 端
当我们把监控端配置启动以后,我们需要来设置一下我们的被监控端,我们在被监控的主机安装好agent,设置好他的server,并把他添加到server端,就能将其纳入我们的监控系统中去了。
1)安装 zabbix
同样的,我们先来安装zabbix。两台机器都操作
[root@zabbix-agent-none1 ~]# rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
[root@zabbix-agent-none1 ~]# yum install zabbix-agent zabbix-sender -y
安装完成以后,我们去修改配置文件。
2)修改配置文件
对配置文件做一个备份,然后去修改配置文件:
[root@zabbix-agent-none1 ~]# cd /etc/zabbix/
[root@zabbix-agent-none1 zabbix]# ls
zabbix_agentd.conf zabbix_agentd.d
[root@zabbix-agent-none1 zabbix]# cp zabbix_agentd.conf{,.bak}
[root@zabbix-agent-none1 zabbix]# ls
zabbix_agentd.conf zabbix_agentd.conf.bak zabbix_agentd.d
[root@zabbix-agent-none1 zabbix]# vim zabbix_agentd.conf ----修改如下
Server=192.168.246.228 zabbix服务器的地址
ServerActive=192.168.246.228 主动模式 zabbix-server-ip
Hostname=zabbix-agent-none1
UnsafeUserParameters=1 是否限制用户自定义 keys(自定义监控脚本) 使用特殊字符 1是可以启用特殊字符 0是不可以启用特殊字符
是否允许别人执行远程操作命令,默认是禁用的,打开的话会有安全风险.
修改完成之后,我们保存退出。然后就可以启动服务了:
[root@zabbix-agent-none1 zabbix]# systemctl start zabbix-agent
[root@zabbix-agent-none1 zabbix]# systemctl enable zabbix-agent
照例查看端口是否已开启
[root@zabbix-agent-none1 zabbix]# netstat -lntp | grep 10050
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 9369/zabbix_agentd
tcp6 0 0 :::10050 :: LISTEN 9369/zabbix_agentd
已经开启成功。接着,我们就可以去server端添加了。 non2也进行同样的操作,唯一不同的就是配置文件中的Hostname要设为zabbix-agent-none2。
7、监控过程详解
1)修改密码及中文版
作为一只英语不好的运维,这里悄悄改成了中文版,如果大家英语好的话看英文版即可,英语不好就改了吧,毕竟中文版比较适合初学者更快的学习~
按如上操作即可,选择中文以后,点击下面的update即可更新成功,更新过后是这样子的~
修改完成后同样点击更新即可。
2)创建主机及主机群组
然后我们就可以去添加主机了:
当然,上面有很多选择卡,有一个加密:
设置完成后,点击添加。我们就可以看到,我们添加的这个主机已经出现在列表中了:
3)监控项(items)
① 介绍
我们点击上图中none1的监控项,即可创建我们的监控项,首先,我们创建三个应用集:
然后我们来定义监控项:
任何一个被监控项,如果想要能够被监控,一定要在zabbix-server端定义了能够连接至zabbix-agent端,并且能够获取命令。或者在agent端定义了能够让server端获取命令。一般都是内建的命令,都对应的有其名字,被我们称之为key。
关于key值,我们可以直接在网页上设置(服务器自动执行),也可以使用命令行命令(手动执行)来获取:
[root@zabbix-server zabbix]# zabbix_get -s 192.168.246.226 -p 10050 -k “system.cpu.intr”
在我们的agent端,也可以使用命令来查看intr的速率变化:
我们继续来看我们的监控项:
说了这么多,我们来简单定义一个:
② 定义一个不带参数的监控项
定义完成,我们回到所有主机,等待5秒,我们可以看到,我们node1节点后面的选项已经有变成绿色的了:如果不亮记得刷新
我们也可以回到我们的仪表盘,可以看到,我们的监控项有一个处于启用状态:
那么,我们的数据在哪里呢?可以点击最新数据,把我们的none1节点添加至主机,应用一下,就可以看到下面的状态了: 可以看到,我们还有一个图形页面,点进去则可以看图形的分布: 事实上,我们关注的指标有很多种,我们一一添加进来即可。 刚刚我们定义的监控项是很简单的,指定一个key即可,但是有些监控项是带有参数的,这样一来,我们的监控项就有更多的灵活性。接下来,我们来简单说明一个需要带参数的监控项:
③ 定义一个带参数的监控项
图中的[]就是需要参数的意思,里面的值即为参数,带<>为不可省略的。我们就以这个例子来说明: if表示是接口名;表示是那种模式,包括但不限于:packets(包)、bytes(字节)、errors(错误)、dropped(丢包)(上述内容通过ifconfig查看) 我们来设置一下这个监控值:
同样的,我们也可以通过命令行来查看:
[root@zabbix-server zabbix]# zabbix_get -s 192.168.246.226 -p 10050 -k “net.if.in[ens33,packets]”
我们来看看网页的显示情况:检测中 —> 最新数据 —> Network Interface Stats(图形),等待一会,或者刷新一下
④ 快速定义类似指标
如果我们想要定义一个类似的指标,我们可以直接选择克隆,然后简单的修改一点点参数即可。 就以我们刚刚定义的net.if.in[ens33,packets]为例,如果我们想要在定义一个out的进行如下操作即可: 如果我们要以字节为单位也要定义的话,进行同样的操作: 如果有需要的话也可以把byte再克隆成out。就不一一演示了~ 可以看一下,我们现在已经定义的指标: 我们来到 检测中 —> 最新数据,可以看到,我们定义的监控项都已经有值了:
⑤ 删除监控项
如果有一个监控项,我们用不上了,就可以删除掉。但是如果你直接删除的话,默认数据是会留下的,所以我们要先清除数据,然后再删除,具体操作步骤如下:
4)触发器(trigger)
① 简介
当我们的采集的值定义完了以后,就可以来定义触发器了。 我们触发器的定义是:界定某特定的item采集到的数据的非合理区间或非合理状态。通常为逻辑表达式。
一般,我们评定采样数值是否为合理区间的比较稳妥的方法是——根据最后N次的平均值来判定结果;这个最后N次通常有两种定义方式:
root ALL=(ALL) ALL
93 zabbix ALL=(ALL) NOPASSWD: ALL #添加的一行,表示不需要输入密码
[root@zabbix-agent-none1 ~]# vim /etc/zabbix/zabbix_agentd.conf
EnableRemoteCommands=1 #允许接收远程命令
LogRemoteCommands=1 #把接收的远程命令记入日志
2、配置网络发现Network discovery
(1)利用第二台用于可被扫描发现的主机----192.168.246.227
① 安装agent 段的包
yum -y install zabbix-agent zabbix-sender
② 设置agent 配置,可以把之前设置好的none1的配置传过来
[root@zabbix-agent-none2 ~]# vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.246.228 zabbix服务器的地址
ServerActive=192.168.246.228 主动模式 zabbix-server-ip
Hostname=zabbix-agent-none2
UnsafeUserParameters=1 是否限制用户自定义 keys(自定义监控脚本) 使用特殊字符 1是可以启用特殊字符 0是不可以启用特殊字符
[root@zabbix-agent-none2 ~]# visudo #修改sudo的配置,添加如下信息
#Defaults !visiblepw
zabbix ALL=(ALL) NOPASSWD: ALL
④ 开启服务
[root@zabbix-agent-none2 ~]# systemctl start zabbix-agent
(2)设置自动发现规则discovery
配置–自动发现–创建自动发现规则
ip范围不要给的太大
注释:在zabbix-server端
[root@zabbix-server ~]# zabbix_get -s 192.168.246.227 -p 10050 -k “system.hostname”
zabbix-agent-none2
② 更新间隔:1h就好,不要扫描太过频繁,扫描整个网段,太废资源;这里为了实验,设为1m
(3)自动发现成功
(4)设置自动发现discovery 的动作action
a) 创建
b) 设置action动作
① 设置A条件,自动发现规则=test net
② 设置B条件,自动发现状态=up
③ 要做什么操作
添加主机到监控
自动链接Template OS Linux 到此host
c) 配置action 完成,默认是disabled 停用的,如果不是停用的,也需要再次选择启动,激活一下。
d) 启用动作,查看效果
确实已经生效,添加主机成功,模板链接成功
(5)如果自己需要添加的主机已经扫描添加完成,就可以关闭网络扫描了,因为太耗资源
7、web监控
1、介绍
(1)介绍
① Web监控:监控指定的站点的资源下载速度,及页面响应时间,还有响应代码;
2、创建设置web场景
配置–主机–none1–web场景–创建web场景
(1)创建
(2)配置web 监测
① 点击步骤,设置web page web页面
a) 设置名为home page,URL为http://192.168.246.226/index.html 的web页面
3、查看测试
8、主动/被动 监控
1、介绍
(1)主动/被动介绍
被动检测:相对于agent而言;agent, server向agent请求获取配置的各监控项相关的数据,agent接收请求、获取数据并响应给server;
主动检测:相对于agent而言;agent(active),agent向server请求与自己相关监控项配置,主动地将server配置的监控项相关的数据发送给server;主动监控能极大节约监控server 的资源。
2、设置一个通过內建key发送数据的主动监控
(1)agent端所需要基本配置:
[root@zabbix-agent-none1 ~]# vim /etc/zabbix/zabbix_agentd.conf
ServerActive=192.168.246.228 给哪个监控server 发送数据
Hostname=zabbix-agent-none1 自己的主机名.
(2)设置一个主动监测
配置—主机–none1–监控项—创建监控项
① 选择进程,每秒更改,—添加
因为key:system.cpu.switches :上下文的数量进行切换,它返回一个整数值。为了监控效果,选择下一秒减上一秒的值作为监控
注释:可运行的线程数大于CPU的数量,那么OS最终会强行换出正在执行的线程,从而使其他线程能够使用CPU。这会引起上下文切换.
(3)已经有图形
9、zabbix-server 监控自己,数据库,nginx
1、下载安装,配置agent
[root@zabbix-server ~]# vim /etc/zabbix/zabbix_agentd.conf # 配置agent,添加并修改
EnableRemoteCommands=1 允许远程命令
LogRemoteCommands=1 记录远程命令
Server=127.0.0.1
ServerActive=127.0.0.1
Hostname=zabbix-server
[root@zabbix-server ~]# systemctl start zabbix-agent
2、自动生成Zabbix server 的主机
配置—主机
3、在主机中添加模板
配置–主机—zabbix–server—模板—选择Template DB MYsql -----添加 -----更新
4、启用Zabbix server
5、监控到数据