监控系统介绍
一:监控介绍
1.监控软件介绍:
使用 SNMP 协议获取主机 CPU、内存、磁盘、网卡流量等数据.
用脚本将获取到的 SNMP 数据存入数据库中,然后再使用一种名为 MRTG 的软件根据获取的数据绘制图表来分析数据的变化。MRTG(Multi Router Traffic Grapher),顾名思义,这款软件最初是设计用于监控网络
链路流量负载的。它可以用过 SNMP 获取到设备的流量信息,并根据这些信息绘制成图表并保存为 PNG 格式的图片,再将这些 PNG 图片以HTML 页面的方式显示给用户.
不过,MRTG 展示的页面和图表曲线相对简陋,它在一张图片中最多只能绘制两个数据的变化曲线,并且由于是 PNG 格式的静态图片,所以无法针对某一时间进行细化展示。为了解决这个问题,人们又开发了
RRDTOOL 工具.
不过,直接使用 RRD TOOL 绘图操作起来很麻烦。同时,现如今的数据中心动辄成百上千的设备,一个个的去提取、绘制、监控显然是不现实的事情.
Cacti 是一套基于 PHP、MySQL、SNMP 及 RRD Tool 开发的监测图形分析工具,Cacti 是使用轮询的方式由主服务器向设备发送数据请求来获取设备上状态数据信息的,如果设备不断增多,这个轮询的过程就非常的耗时,轮询的结果就不能即时的反应设备的状态了。Cacti 监控关注的是对数据的展示,
却不关注数据异常后的反馈。如果凌晨 3 点的时候设备的某个数据出现异常,除非监控人员在屏幕前发现这个异常变化,否则是没有任何报警机制能够让我们道出现了异常。
Nagios 是一款开源的免费网络监控报警服务,能有效监控 Windows、Linux 和 Unix 的主机状态,交换机、路由器和防火墙等网络设置,打印机、网络投影、网络摄像等设备。在系统或服务状态异常时发出邮件
或短信报警第一时间通知运维人员,在状态恢复后发出正常的邮件或短信通知。Nagios 有完善的插件功能,可以方便的根据应用服务扩展功能。
Nagios 已经可以支持由数万台服务器或上千台网络设备组成的云技术平台的监控,它可以充分发挥自
动化运维技术特点在设备和人力资源减少成本。只是 Nagios 无法将多个相同应用集群的数据集合起来,也不能监控到集群中特殊节点的迁移和恢复。
一个新的监控服务根据这个需求被设计出来,它就是 Ganglia。
Ganglia 是 UC Berkeley 发起的一个开源集群监视项目,设计用于测量数以千计的节点。Ganglia 的核心包含gmond、gmetad 以及一个 Web 前端。主要是用来监控系统性能,如:CPU 、内存、硬盘利用率, I/O 负载、网
络流量情况等,通过曲线很容易见到每个节点的工作状态,对合理调整、分配系统资源,提高系统整体性能起到重要作用,目前是监控HADOOP 的官方推荐服务。
Zabbix 是一个基于 WEB 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
zabbix 能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
Zabbix 是由 Alexei Vladishev 创建,目前由 Zabbix SIA 在持续开发和支持。
Zabbix 是一个企业级的分布式开源监控方案。
Zabbix 是一款能够监控各种网络参数以及服务器健康性和完整性的软件。Zabbix使用灵活的通知机制,允许用户为几乎任何事件配置基于邮件的告警。这样可以快速反馈服务器的问题。基于已存储的数
据,Zabbix提供了出色的报告和数据可视化功能。这些功能使得Zabbix成为容量规划的理想方案。Zabbix支持主动轮询和被动捕获。Zabbix所有的报告、统计信息和配置参数都可以通过基于Web的前
1/50
端页面进行访问。基于Web的前端页面可以确保您从任何方面评估您的网络状态和服务器的健康性。适当的配置后,Zabbix可以在IT基础架构监控方面扮演重要的角色。对于只有少量服务器的小型组织和拥有大量服务器的大型公司也同样如此。
Zabbix是免费的。Zabbix是根据GPL通用公共许可证第2版编写和发行的。这意味着它的源代码都是免费发行的,可供公众任意使用。
2.监控软件区别
1.nagios图形不是特别好,也可以安装图形插件,但是也不怎么好看2.nagios一般情况下如果需要图形可以和cacti配合使用3.cacti的监控是轮询监控,效率低,图形相对nagios比较好看
4.zabbix和nagios因为是并发监控,对cpu的要求更高
5.zabbix在性能和功能上都强大很多
6.zabbix的图形相当漂亮7.支持多种监控方式 zabbix-agent snmp 等等
8.支持分布式监控,能监控的agent非常多9.zabbix有图形的web配置界面,配置简洁
10.zabbix支持自动发现功能
zabbix概述
一:zabbix 监控架构
监控中心zabbix-server
|
| |
—proxy— —proxy—
| | | |
agent agent agent agent
二:zabbix 监控邮件报警架构
postfix
邮局(MTA)——邮递员(smtp 25)——邮局(MTA)
| |
MDA maildrop dovecote MDA
| |
邮递员(smtp 25) 邮递员(pop3 110 imap 143)
| dns |
邮筒(MUA) 邮筒(MUA)
| |
2/50
lilei(user1) hanmeimei(user2)
agent 代理 proxy 代理
三:Zabbix 优点
开源,无软件成本投入 Server 对设备性能要求低
支持设备多,自带多种监控模板支持分布式集中管理,有自动发现功能,可以实现自动化监控开放式接口,扩展性强,插件编写容易
当监控的 item 比较多服务器队列比较大时可以采用被动状态,被监控客户端主动 从server 端去下载需要监控的 item 然后取数据上传到 server 端。 这种方式对服务器的负载比较小。
Api 的支持,方便与其他系统结合
四:Zabbix 缺点需在被监控主机上安装 agent,所有数据都存在数据库里, 产生的数据据很大,瓶颈主要在数据库。
五:Zabbix 监控系统监控对象
数据库: MySQL,MariaDB,Oracle,SQL Server
应用软件:Nginx,Apache,PHP,Tomcat agent
集群: LVS,Keepalived,HAproxy,RHCS,F5
虚拟化: VMware,KVM,XEN agent
操作系统:Linux,Unix,Windows性能参数
硬件: 服务器,存储,网络设备 IPMI
网络: 网络环境(内网环境,外网环境) SNMP
六:Zabbix 架构
Zabbix由几个主要的软件组件构成,这些组件的功能如下。
3/50
1、Server
Zabbix server 是agent程序报告系统可用性、系统完整性和统计数据的核心组件,是所有配置信息、统计信息和操作数据的核心存储器。
2、数据库存储所有配置信息和Zabbix收集到的数据都被存储在数据库中。
3、Web界面
为了从任何地方和任何平台都可以轻松的访问Zabbix, 我们提供基于Web的Zabbix界面。该界面是
Zabbix Server的一部分,通常(但不一定)跟Zabbix Server运行在同一台物理机器上。
如果使用SQLite,Zabbix Web界面必须要跟Zabbix Server运行在同一台物理机器上。
4、Proxy 代理服务器
Zabbix proxy 可以替Zabbix Server收集性能和可用性数据。Proxy代理服务器是Zabbix软件可选择部署的一部分;当然,Proxy代理服务器可以帮助单台Zabbix Server分担负载压力。
5、Agent监控代理
Zabbix agents监控代理 部署在监控目标上,能够主动监控本地资源和应用程序,并将收集到的数据报告给Zabbix Server。
6、数据流
此外,了解Zabbix内部的数据流同样很重要。监控方面,为了创建一个监控项(item)用于采集数据,必
须先创建一个主机(host)。告警方面,在监控项里创建触发器(trigger),通过触发器(trigger)来触发告警动作(action)。 因此,如果你想收到Server XCPU负载过高的告警,你必须: 1. 为Server X创建一个host并关联一个用于对CPU进行监控的监控项(Item)。 2. 创建一个Trigger,设置成当CPU负载过高时会触发 3.
Trigger被触发,发送告警邮件 虽然看起来有很多步骤,但是使用模板的话操作起来其实很简单,Zabbix这样的设计使得配置机制非常灵活易用。
七:Zabbix常用术语的含义
1、主机 (host)
4/50
一台你想监控的网络设备,用IP或域名表示
2、主机组 (host group)
主机的逻辑组;它包含主机和模板。一个主机组里的主机和模板之间并没有任何直接的关联。通常在给不同用户组的主机分配权限时候使用主机组。
3、监控项 (item)
你想要接收的主机的特定数据,一个度量数据。
4、触发器 (trigger)
一个被用于定义问题阈值和“评估”监控项接收到的数据的逻辑表达式 当接收到的数据高于阈值时,触发器从“OK”变成“Problem”状态。当接收到的数据低于阈值时,触发器保留/返回一个“OK”的状态。
5、事件 (event)
单次发生的需要注意的事情,例如触发器状态改变或发现有监控代理自动注册
6、异常 (problem)
一个处在“异常”状态的触发器
7、动作 (action)
一个对事件做出反应的预定义的操作。 一个动作由操作(例如发出通知)和条件(当时操作正在发生)组
成
8、升级 (escalation)
一个在动作内执行操作的自定义场景; 发送通知/执行远程命令的序列
9、媒介 (media)
发送告警通知的手段;告警通知的途径
10、通知 (notification)
利用已选择的媒体途径把跟事件相关的信息发送给用户
11、远程命令 (remote command)
一个预定义好的,满足一些条件的情况下,可以在被监控主机上自动执行的命令
12、模版 (template)
一组可以被应用到一个或多个主机上的实体(监控项,触发器,图形,聚合图形,应用,LLD,Web场景)的集合模版的任务就是加快对主机监控任务的实施;也可以使监控任务的批量修改更简单。模版是直接关联到每台单独的主机上。
13、应用 (application)
一组监控项组成的逻辑分组
14、web 场景 (web scenario)
利用一个或多个HTTP请求来检查网站的可用性
15、前端 (frontend) Zabbix提供的web界面
16、Zabbix API
Zabbix API允许你使用JSON RPC协议 (是一个无状态且轻量级的远程过程调用(RPC)传送协议,其传递内容透过 JSON 为主) 来创建、更新和获取Zabbix对象(如主机、监控项、图形和其他)信息或者执行任何其他的自定义的任务
17、Zabbix server
Zabbix软件实现监控的核心程序,主要功能是与Zabbix proxies和Agents进行交互、触发器计算、发送告警通知;并将数据集中保存等
18、Zabbix agent
一个部署在监控对象上的,能够主动监控本地资源和应用的程序 Zabbix agent部署在监控的目标上,主动监测本地的资源和应用(硬件驱动,内存,处理器统计等)。 Zabbix agent收集本地的操作信息并将数据
5/50
报告给Zabbix server用于进一步处理。一旦出现异常 (比如硬盘空间已满或者有崩溃的服务进程), Zabbix
server会主动警告管理员指定机器上的异常。. Zabbix agents 的极端高效缘于它可以利用本地系统调用来完成统计数据的收集。
19、被动(passive)和主动(active)检查
Zabbix agents可以执行被动和主动两种检查方式。 在passive check 模式中agent应答数据请求, Zabbix server(或者proxy)询问agent数据,如CPU 的负载情况,然后Zabbix agent回送结果。 Active checks
处理过程将相对复杂。 Agent必须首先从Zabbix sever索取监控项列表以进行独立处理,然后周期性地发送新的值给server。 执行被动或主动检查是通过选择相应的监测项目类型来配置的。item type. Zabbix agent
处理监控项类型有’Zabbix agent’和’Zabbix agent (active)’。
20、Zabbix proxy 一个帮助Zabbix Server收集数据,分担Zabbix Server的负载的程序 Zabbix Proxy是一个可以从一个或多
个受监控设备收集监控数据,并将信息发送到Zabbix sever的进程,基本上是代表sever工作的。 所有收集的数据都在本地进行缓存,然后传送到proxy所属的Zabbix sever。 部署Proxy是可选的,,但是可能非常有益于分散单个Zabbix sever的负载。 如果只有proxy收集数据,sever上的进程就会减少CPU消耗和磁盘I / O负
载。 Zabbix proxy是完成远程区域、分支机构、没有本地管理员的网络的集中监控的理想解决方案。
Zabbix proxy需要使用独立的数据库。
21、主动/被动模式
主动、被动模式都是相对于proxy来说的。proxy主动发送数据就是主动模式;proxy等待server的请求,再发
送数据就是被动模式。因为主动模式可以有效减轻zabbix server压力,需要监控的东西很多时一定要把监控模式更改为主动监控被动模式流程,被动模式一定要记得设置Server = ServerIP
被动模式工作流程: Server 打开一个TCP连接
Server发送一个key 为agent.ping Agent接受这个请求,然后响应< HEADER >< DATALEN > Server对接受到的数据进行处理TCP连接关闭
主动模式流程,主动模式一定要记得设置ServerActive=ServerIP Agent向Server建立一个TCP连接
Agent请求需要检测的数据列表
Server响应Agent,发送一个Items列表
Agent允许响应
TCP连接完成本次会话关闭
Agent开始周期性地收集数据
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.19.137 zabbix-server 开启监控功能
node1 192.168.19.135 zabbix-agent 开启
node2 192.168.19.136 zabbix-agent 开启
2、Zabbix的安装
1)更新yum仓库
我们去官网下载一个包zabbix-release-3.4-2.el7.noarch.rpm,本地安装至我们的虚拟机,这样,我们本地就有了新的yum源,可以直接安装zabbix服务: yum -y install wget
wget http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
安装zabbix源(官方)
rpm -ivh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm http://120.52.51.16/repo.zabbix.com/zabbix/4.1/rhel/7/x86_64/zabbix-agent-4.2.0-0.1alpha1.el7.x86_64.rpm
下载安装:
rpm -ivh zabbix-release-3.4-2.el7.noarch.rpm
而后更新我们的yum仓库:
[root@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
7/50
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
安装:
[root@server ~]# yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-agent
2)安装设置数据库:
1、创建 mariadb.repo
vim /etc/yum.repos.d/mariadb.repo
写入以下内容:
[mariadb]
name = MariaDB
baseurl = https://mirrors.ustc.edu.cn/mariadb/yum/10.4/centos7-amd64 gpgkey=https://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB gpgcheck=1 2、yum 安装最新版本 mariadb
yum install MariaDB-server MariaDB-client
首先,我们修改一下配置文件——/etc/my.cnf.d/server.cnf:
[root@server ~]# vim /etc/my.cnf.d/server.cnf
[mysqld] #跳过主机名解析
skip_name_resolve = ON
innodb_file_per_table = ON # #缓存池大小
innodb_buffer_pool_size = 256M
max_connections = 2000 #最大连接数
log-bin = master-log #开启二进制日志
2、重启我们的数据库服务:
[root@server ~]# systemctl restart mariadb
[root@server ~]# mysql_secure_installation #初始化mariadb
3、创建数据库并授权账号
MariaDB [(none)]> create database zabbix character set ‘utf8’; # 创建zabbix数据库
MariaDB [(none)]> grant all on zabbix.* to ‘zabbix’@’192.168.19.%’ identified by ‘passswd’; # 注意
授权网段
MariaDB [(none)]> flush privileges; # 刷新授权
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)]> show databases;
+——————–+
| Database |
+——————–+
| information_schema |
| mysql |
| performance_schema |
| test |
| zabbix |
+——————–+
MariaDB [(none)]> use zabbix;
Database changed
MariaDB [zabbix]> show tables;
+—————————-+
| Tables_in_zabbix |
8/50
+—————————- +
| acknowledges |
| actions |
…..
| proxy_dhistory |
| proxy_history |
| regexps |
| rights |
| screen_user |
+—————————- +
140 rows in set (0.001 sec)
5.配置zabbix 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.
开启服务以后,我们一定要去确认一下我们的端口有没有开启:
[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
6.配置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.
我们的服务已经开启,接着我们就可以用浏览器来访问了。
7.浏览器访问并进行初始化设置图片略http://192.168.122.166/zabbix/setup.php
默认用户名:Admin
默认密码:zabbix
8.配置zabbix 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
9/50
[root@zabbix-agent-none1 ~]# yum install zabbix-agent -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端添加了。none2也进行同样的操作,唯一不同的就是配置文件中的Hostname要设为zabbix-agent-none2。
zabbix使用(一)
1)修改密码及中文版
作为一只英语不好的运维,这里悄悄改成了中文版,如果大家英语好的话看英文版即可,英语不好就改了吧,毕竟中文版比较适合初学者更快的学习~
记得刷新!
按如上操作即可,选择中文以后,点击下面的update即可更新成功,更新过后是这样子的~
同样的,为了安全起见,我们把密码改掉:修改完成后同样点击更新即可。
2)创建主机及主机群组我们先来定义一个主机群组:
然后我们就可以去添加主机了:
当然,上面有很多选择卡,有一个加密:
10/50
设置完成后,点击添加。我们就可以看到,我们添加的这个主机已经出现在列表中了:
3)监控项(items)
创建监控项来确定我们要监控被监控端的内容
事实上,我们关注的指标有很多种,我们一一添加进来即可。
刚刚我们定义的监控项是很简单的,指定一个key即可,但是有些监控项是带有参数的,这样一来,我们的监控项就有更多的灵活性。
net.if.out[if,<mode>] 上行流量统计
参数 注释
net.if.in[if,<mode>] 网络接口上传流量统计。返回 整数
图中的[]就是需要参数的意思,里面的值即为参数,带<>为不可省略的。我们就以这个例子来说
明:
if表示是接口名;<mode>表示是那种模式,包括但不限于:packets(包)、bytes(字节)、errors(错误)、dropped(丢包)(上述内容通过ifconfig查看)
命令方式查看:
[root@zabbix-server zabbix]# zabbix_get -s 192.168.122.167 -p 10050 -k "net.if.in[eth0,packets]"
扩展(名词解释):
上行流量就是本机向inter网发送的字节数下行流量就是从网络中下载的字节数
[root@xingdian-cloud yum.repos.d]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.122.167 netmask 255.255.255.0 broadcast 192.168.122.255 inet6 fe80::46ba:6fa0:e1e6:8644 prefixlen 64 scopeid 0x20<link>
inet6 fe80::62ba:7626:1e71:fc5d prefixlen 64 scopeid 0x20<link> ether 52:54:00:c1:95:58 txqueuelen 1000 (Ethernet)
RX packets 97856 bytes 649560808 (619.4 MiB) RX errors 0 dropped 11 overruns 0 frame 0 TX packets 70512 bytes 5823411 (5.5 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1 (Local Loopback)
RX packets 1795 bytes 176872 (172.7 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 1795 bytes 176872 (172.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Rx Packets就是接收数据包的意思。
Tx Packets就是发送数据包的意思。
Rx Bytes就是接收比特位的意思。
Tx Bytes就是发送比特位的意思。
4)创建触发器
创建触发器来作为阀值或者预警线,来进行报警
监控项模板
agent.hostname 客户端主机名。返回字符串
agent.ping 客户端可达性检查。返回 nothing – 不可达;
agent.version zabbix客户端(agent)的版本。返回字符串
kernel.maxfiles 操作系统最大的文件打开数量。返回整数
kernel.maxproc 操作系统最大的进程数。返回整数
net.dns[<ip>,name,<type>,<timeout>,<count>,<protocol>] 检查 DNS 服务是否开启。返回 0 – DNS 服务
败);1 – DNS 服务开启
net.dns.record[<ip>,name,<type>,<timeout>,<count>,<protocol>] 执行DNS查询。返回字符串信息
net.if.collisions[if] 网络冲突数量。返回整型
net.if.in[if,<mode>] 网络接口上传流量统计。返回 整数
net.if.list 网络接口列表(包括接口类型,状态,IPv4
net.if.out[if,<mode>] 上行流量统计。返回整数
net.if.total[if,<mode>] 网络接口上传下载的流量总和。返回整数
net.tcp.listen[port] 检查 TCP 端口 是否处于侦听状态。返回 0 –
net.tcp.port[<ip>,port] 检查是否能建立 TCP 连接到指定端口。返回
net.tcp.service[service,<ip>,<port>] 检查服务是否运行并接受 TCP 连接。返回 0
net.tcp.service.perf[service,<ip>,<port>] 检查 TCP 服务的性能,当服务 down 时返回
数
net.udp.listen[port] 检查 UDP 端口 是否处于侦听状态。返回 0 –
net.udp.service[service,<ip>,<port>] 检查服务是否运行并响应 UDP 请求。返回 0
net.udp.service.perf[service,<ip>,<port>] 检查 UDP 服务的性能,当服务 down 时返回
秒数
perf_counter[counter,<interval>] 所有Windows计数器值。返回 整形、浮点、
proc.cpu.util[<name>,<user>,<type>,<cmdline>,<mode>,<zone>] CPU进程百分比。返回浮点值
proc.mem[<name>,<user>,<mode>,<cmdline>,<memtype>] 进程内存,以字节为单位。返回整数
proc.num[<name>,<user>,<state>,<cmdline>] 进程数。返回整数
proc_info[process,<attribute>,<type>] 具体处理的各个信息。返回浮点数
sensor[device,sensor,<mode>] 硬件传感器读数。返回浮点型
service.info[service,<param>] 有关服务的信息。返回整数字段表示状态,
显示名,路径,用户; 文本 – 使用字段作为描
停,2 – 启动挂起,3 – 暂停挂起,4 – 继续挂
- 未知,255 – 没有这个服务;启动码:0 – 自
禁用,4 – 未知
services[<type>,<state>,<exclude>] 列表服务。返回0表示空,如果是列表则是每
system.boottime 系统启动时间。返回时间戳
system.cpu.intr 设备的中断数。返回整数
system.cpu.load[<cpu>,<mode>] CPU 负载。返回浮点数
system.cpu.num[<type>] CPU 数量,返回整数
system.cpu.switches 上下文的数量进行切换。它返回一个整数值
system.cpu.util[<cpu>,<type>,<mode>] CPU 使用率。返回浮点数
system.hostname[<type>] 系统主机名。返回字符串
system.hw.chassis[<info>] 机架信息。返回字符串
键值 名称
13/50
system.hw.cpu[<cpu>,<info>] CPU 信息。返回字符串或整数
system.hw.devices[<type>] PCI或者USB设备列表。返回文本
system.hw.macaddr[<interface>,<format>] MAC地址。返回字符串
system.localtime[<type>] 系统时间。返回的是UTC整数。是
system.run[command,<mode>] 即在主机上指定的命令的执行。
NOWAIT的模式,这将返回执行命
system.stat[resource,<type>] 系统统计数据。返回整数值或者
system.sw.arch 软件架构信息。返回字符串
system.sw.os[<info>] 操作系统信息。返回字符串
system.sw.packages[<package>,<manager>,<format>] 安装包列表。返回文本
system.swap.in[<device>,<type>] 在交换分区(swap)(从设备到内存
system.swap.out[<device>,<type>] 交换分区(从内存到设备)的统
system.swap.size[<device>,<type>] 交换分区空间大小,字节或从总
system.uname 识别系统。返回 字符串
system.uptime 系统启动时间。返回整数
system.users.num 已登录的用户数量,返回整数
vfs.dev.read[<device>,<type>,<mode>] 磁盘读取数据。类型是sectors, op
bps则返回浮点。
vfs.dev.write[<device>,<type>,<mode>] 磁盘写入数据。类型是sectors, op
bps则返回浮点。
vfs.dir.count 目录递归的条目数量。返回整数
[dir,<regex_incl>,<regex_excl>,<types_incl>,<types_excl>,<max_depth>,<min
_size>,<max_size>,<min_age>,<max_age>,<regex_excl_dir>]
vfs.dir.size 目录大小(bytes)。返回整数
[dir,<regex_incl>,<regex_excl>,<mode>,<max_depth>,<regex_excl_dir>]
vfs.file.cksum[file] 文件效验,unix标准算法。返回整
vfs.file.contents[file,<encoding>] 搜索文件内容。返回文本
vfs.file.exists[file] 检查文件是否存在。返回 0 – 未找
在
vfs.file.md5sum[file] 文件的MD5校验。返回字符串(
vfs.file.regexp[file,regexp,<encoding>,<start line>,<end line>,<output>] 查找文件中的字符串,返回内容
参数
vfs.file.regmatch[file,regexp,<encoding>,<start line>,<end line>] 查找文件中的字符串,如果有则
vfs.file.size[file] 文件大小(单位bytes)。返回整
vfs.file.time[file,<mode>] 文件事件信息,返回的是时间戳
vfs.fs.inode[fs,<mode>] 数或inode的百分比。返回数字,
vfs.fs.size[fs,<mode>] 磁盘容量。如果返回的是字节则
vm.memory.size[<mode>] 从字节或总百分比的内存大小。
返回浮点值。
vm.vmemory.size[<type>] 虚拟空间大小(以字节计)或百
web.page.get[host,<path>,<port>] 获取网页。返回信息为网页源码
web.page.perf[host,<path>,<port>] 全网页加载时间(秒)。返回浮
web.page.regexp[host,<path>,<port>,regexp,<length>,<output>] 查找网页中的字符串,返回内容
参数
键值 名称
wmi.get[<namespace>,<query>] 执行 WMI 查询返回第一个对象。返回整形、浮点、字符串
容
zabbix.stats[<ip>,<port>] Returns a JSON object containing Zabbix server or proxy internal me
zabbix.stats[<ip>,<port>,queue,<from>,<to>] Number of items in the queue which are delayed in Zabbix server or "from" till "to" seconds, inclusive.
键值 名称
zabbix使用(二)
案例:nginx监控nginx服务状态一:前期环境准备:
yum -y install nginx systemctl start nginx
二:监控部署:
1.定义监控项 > 主机 > node1 —> 监控项(items) > 创建监控项
进入 配置 — — —
2.定义触发器定义好了监控项以后,我们亦可来定义一个触发器,当服务有问题的时候,我们才能及时知道:
进入 配置 —> 主机 —> none1 —> 触发器(trigger)—> 创建触发器(为了快速获取,选用最后一个
值为0就触发)
15/50
3.创建图形查看(zabbix可视化)
数据日积月累,如果我们想要更直观的了解到各项数据的情况,图形无疑是我们的最佳选择。zabbix提示了众多的可视化工具提供直观展示。
自定义图形中可以集中展示多个时间序列的数据流。支持“线状图(normal)”、“堆叠面积图
(stacked)”、“饼图(pie)” 和“分离型饼图(exploded)”四种不同形式的图形。
4.模拟服务宕掉
zabbix维护时间
添加维护期间:
维护期间(Maintenance)指的是服务器定期维护的时间段。Zabbix 可以设置在这个时间段里不需报警。
点击配置->维护->创建维护时段
16/50
以上页面配置项的含义为:名称:该维护配置的名称。
维护类型:该时间段内是否需要采集数据,一般选择不采集。
作用中从/直到:该维护配置生效的时间范围。
以上页面配置项的含义为:
期间类型:配置维护的时间是一次性的还是循环性的。可选一次性/每日/每周/每月。
日期/每日/每周/每月:设置执行维护的时间。
维护期间长度:维护的时间长度。
17/50
以上页面配置项的含义为:
维护中主机: 哪些主机在该维护期间进行维护。
维护中的组: 哪些主机组在该维护期间进行维护。
zabbix微信报警
一:企业微信部署使用
1.下载企业微信
2.创建企业
3.创建企业应用我的企业
CorpID wwf59d011ead30f194 AgentId 1000002
Secret 4kO-TrciubxGuKfJG-WsynbGDhnjRwGX3LdZWSGNr7A
部门id 2 云计算部
18/50
建立连接:获取AccessToken请求地址: https://qyapi.weixin.qq.com/cgi-bin/gettoken?
corpid=wwa1da242f211cdf47&corpsecret=rIrN51FEjgW6T2bdmSaEoN8s_mMW-Nu7gHysmagfdXc 返回结果: HTTP/1.1 200 OK
Connection: keep-alive
Error-Code: 0
Error-Msg: ok
Content-Type: application/json; charset=UTF-8
Content-Length: 277
{"errcode":0,"errmsg":"ok","access_token":"9O7DSEqnUsQ8MD2bRGfFs26cabY1XcGErPnnJF_mfBBnI5zsM2I3u9-9Sj0tA ggY6BahOByGZvzDNaFoJj3YTp5blSPkm9exizerPUpDZNiGXtw","expires_in":7200}
二:配置监控脚本
19/50
python监控脚本:
有4个地方需要修改,找到他们修改成之前获取的信息 self.corpid = ‘wwf59d011ead30f194’ //公司的corpid
self.secret = ‘4kO-TrciubxGuKfJG-WsynbGDhnjRwGX3LdZWSGNr7A’ //应用的secret ‘toparty’:2, //部门id
‘agentid’:"1000002", //应用id
[root@ansible alertscripts]# cat wechat.py #!/usr/bin/env python
–– coding: utf-8 ––
import urllib,urllib2,json import sys
reload(sys) sys.setdefaultencoding( "utf-8" )
class WeChat(object): __token_id = ”
init attribute
def init(self,url): self.__url = url.rstrip(‘/’)
self.__corpid = ‘wwf59d011ead30f194’
self.__secret = ‘4kO-TrciubxGuKfJG-WsynbGDhnjRwGX3LdZWSGNr7A’
Get TokenID def authID(self):
params = {‘corpid’:self.corpid, ‘corpsecret’:self.secret} data = urllib.urlencode(params)
content = self.getToken(data)
try:
self.__token_id = content[‘access_token’]
print content[‘access_token’] except KeyError:
raise KeyError
Establish a connection
def getToken(self,data,url_prefix=’/’):
url = self.__url + url_prefix + ‘gettoken?’ try:
response = urllib2.Request(url + data) except KeyError:
raise KeyError
result = urllib2.urlopen(response) content = json.loads(result.read()) return content
Get sendmessage url
def postData(self,data,url_prefix=’/’):
url = self.url + url_prefix + ‘message/send?access_token=%s’ % self.token_id request = urllib2.Request(url,data)
try:
result = urllib2.urlopen(request)
20/50
except urllib2.HTTPError as e: if hasattr(e,’reason’):
print ‘reason’,e.reason elif hasattr(e,’code’):
print ‘code’,e.code return 0
else:
content = json.loads(result.read()) result.close()
return content
send message
def sendMessage(self,touser,message): self.authID()
data = json.dumps({ ‘touser’:touser, ‘toparty’:11, ‘msgtype’:"text", ‘agentid’:"1000002", ‘text’:{
‘content’:message
},
‘safe’:"0" },ensure_ascii=False) response = self.postData(data) print response
if name == ‘main‘:
a = WeChat(‘https://qyapi.weixin.qq.com/cgi-bin’) a.sendMessage(sys.argv[1],sys.argv[3])
修改权限:
[root@ansible alertscripts]# chown zabbix.zabbix /usr/lib/zabbix/alertscripts/wechat.py [root@ansible alertscripts]# chmod 777 /usr/lib/zabbix/alertscripts/wechat.py
测试脚本:下面的invalidparty可以忽略 ,如果正常会收到消息如下图
[root@ansible alertscripts]# ./wechat.py Zhuangyao test test {u’invalidparty’: u’2′, u’invaliduser’: u’wusong’, u’errcode’: 0, u’errmsg’: u’ok’}
三:zabbix配置微信报警:
创建报警媒介:
管理->报警媒介类型->创建媒体类型
zabbix 3.0 以上需要在为alert脚本定义参数,以前的版本参数都固定的,现在用户可以自己定义命令行的参数了。添加的参数也就是脚本中的$1、$2、$3等。{ALERT.SENDTO} {ALERT.SUBJECT}
{ALERT.MESSAGE}
21/50
创建用户:Administration–>Users–>Media–>add (注意创建用户时把权限设置为超级管理员或者管理
员)
为用户关联报警媒介:收件人为企业邮箱中的账户
22/50
添加动作,触发条件后报警后发送微信消息。
Configuration–>Actions-Event source(Triggers)-Create action
23/50
恢复操作和确认操作都可以配置,同上
全部配置完成后, 重新设定触发器的值模拟报警产生,检测微信报警是否成功!
问题
问题1:
在使用zabbix图形时,发现有中文乱码如何解决?解决方案:
在/usr/share/zabbix/assets/fonts目录下,将原来的字符集文件删掉或者重新修改文件名让其失去效果,重新上传新的字符集文件,上传成功后重新刷新界面即可.
24/50
报警格式化文档
邮件内容:
名称:Action-Email
默认接收人:故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
默认信息:
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME} 告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME} 告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}事件ID:{EVENT.ID}
zabbix公网邮箱报警
邮件系统简要介绍:
电子邮件系统包括两个组件:MUA(Mail User Agent,邮件用户代理)和MTA(Mail Transport Agent,邮件传
送代理)MUA是邮件系统为用户提供的可以读写邮件的界面;而MTA是运行在底层,能够处理邮件的收发工作的程序。简单的说,用户可以 使用MUA写信、读信、而通过MTA收信、发信。Foxmail、Outlook、Webmail都属于MUA。
邮件的接收是MTA和MUA配合完成的。远程的MUA首先向远程MTA连接并验证发信人身份,然后由远程MTA向本地MTA发送邮件。接受者通过本 地MUA接收阅读邮件。邮件的发信也是MTA和MUA配合完成的,不过方向正好相反。本地MUA首先向本地的MTA连接并验证发信人身份,然后由本地 MTA向远程MTA发送邮
件,再由远程的MUA读取邮件。
mail和mailx即为负责查看、编写邮件和向MTA发送邮件的MUA。mailx是mail的功能加强版。sendmail即为负责邮件在网络上传输的MTA,将邮件从一个MTA传送至另一个MTA。
开干:
1.注册163邮箱
2.网页邮箱设置客户端授权密码
安装MUA软件:mailx
#yum install mailx
#mail -V
12.5 7/5/10
mailx -V 12.5 7/5/10
配置公网邮箱信息:
vim /etc/mail.rc 追加以下内容 set from=lisi@163.com(邮箱地址)
set smtp=smtp.163.com(smtp服务器) set smtp-auth-user=lisi@163.com(用户名) set smtp-auth-password=*(授权邮箱密码) set smtp-auth=login
使用mailx发邮件的方式:
方式1:mailx -s "邮件标题" 收件箱Email < 包含正文的文件
方式2:cat 包含正文的文件 | mailx -s "邮件标题" 收件箱Email
方式3:echo "正文内容" | mailx -s "邮件标题" 收件箱Email
方式4:mailx -s "邮件标题" 收件箱Email,回车按CTRL+D发送
手动发送邮件测试:
mailx -v -s ‘hello’ ‘zhangsan@163.com’ nihao (回车,然后ctrl+D
EOT
25/50
或者,将邮件内容放到一个文件中content.txt
#cat content.txt | mailx -v -s ‘hello’ ‘zhangsan@163.com’
手动使用mailx发送邮件测试结果:
zabbix添加邮件报警功能:
注:使用新的方式–利用公网邮件服务器发送报警,需要关闭postfix服务
配置 zabbix 的邮件报警功能需要以下三个角色的参与。
1、 示警媒体(Media)
2、 触发器(Triggers)
3、 动作(Action)
示警媒体:
指的是 zabbix 采用何种方式进行报警,目前 Zabbix 支持的示警媒体包括邮件、Jabber、短信。jabber是linux下一种即时通讯工具,可以和yahoo,icq等工具通信
触发器:
指的是当监控对象达到某个条件或条件集合的时候,触发 Zabbix 产生事件。
动作:
指的是 Zabbix 产生对应事件后,它通过示警媒体发送报警。
接下来,我们配置一个邮件报警功能的范例。效果是当 WEB 页面获取时间超过 3 秒,则触发报警,管理员将会收到一封 Zabbix 发出的报警邮件。
示警媒体的配置:
首先需要配置 Zabbix 的邮件功能。
点击 管理->报警媒介类型->创建媒体类型
26/50
然后在页面中填入你的报警媒介类型信息,例如下图所示:
注:脚本名称任意,存放于/usr/lib/zabbix/alertscripts (生产上的测试服放这:/usr/local/zabbix/share/zabbix/ alertscripts)
名称:sendmail //名称任意
类型:脚本
脚本名称:sendmail.sh //一定要写,否则可能发送不成功
脚本参数:
{ALERT.SENDTO} //照填,收件人变量
{ALERT.SUBJECT} //照填,邮件主题变量,变量值来源于‘动作’中的‘默认接收人’
{ALERT.MESSAGE} //照填,邮件正文变量,变量值来源于‘动作’中的‘默认信息’
配置完成后,不要忘记点击存档,保存你的配置。
修改zabbix服务端配置文件&编写脚本:指定脚本的存储路径:
#vim /etc/zabbix/zabbix_server.conf AlertScriptsPath=/usr/lib/zabbix/alertscripts
27/50
编写邮件脚本:
#cd /usr/lib/zabbix/alertscripts #vim sendmail.sh
#!/bin/sh
echo "$3" | sed s/’/r’//g | mailx -s "$2" $1
修改权限:
#chmod u+x sendmail.sh && chown zabbix.zabbix sendmail.sh
模拟报警产生,检查邮箱是否收到邮件
企业级zabbix电话报警
本项目(行癫)亲测
项目简介:
系统版本:Linux Centos 7.6
应用版本:Zabbix 4.2
数据库:mariadb
Onealert官方网址:http://www.onealert.com/
服务部署:
一:部署zabbix-server 1.部署zabbix的yum仓库
[root@xingdian ~] # rpm -Uvh https://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/zabbix-release-4.2-1.el7.noarch.rpm 2.清空yum缓存 [root@xingdian ~] # yum clean all
[root@xingdian ~] # yum makecache 3.安装zabbix-server和zabbix-agent
[root@xingdian ~] # yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-agent 4.安装数据库服务(可选用mysql或者mariadb)
[root@xingdian ~] # yum -y install mariadb-server mariadb
5.部署数据库服务
[root@xingdian ~] #mysqladmin -u root -p’password’ mysql>create database zabbix character set utf8 collate utf8_bin;
msyql>grant all privileges on zabbix. to zabbix@localhost identified by ‘password’; mysql> quit;
6.数据库数据导入
[root@xingdian ~] # zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -uzabbix -p zabbix 7.修改zabbix配置文件 [root@xingdian ~] # vim /etc/zabbix/zabbix_server.conf
DBPassword=password 8.修改apache配置文件(修改时区)
[root@xingdian ~] # vim /etc/httpd/conf.d/zabbix.conf php_value date.timezone Asia/ShangHai
9.启动服务并做开机启动
[root@xingdian ~] # systemctl restart zabbix-server zabbix-agent httpd [root@xingdian ~] # systemctl enable zabbix-server zabbix-agent httpd
二:部署电话报警(Onealert)
注意: 这里可以使用阿里云、华为云等公有云的语音服务,但是需要企业认证。
1.切换到zabbix脚本目录 [root@xingdian ~] # cd /lib/zabbix/alertscripts/ 2.获取取OneITSM agent包
28/50
[root@xingdian ~] #wget https://download.aiops.com/ca_agent/zabbix/ca_zabbix_release-2.1.0.tar.gz
3.解压、安装
[root@xingdian ~] # tar -xzf ca_zabbix_release-2.1.0.tar.gz 4.执行oneitsm
[root@xingdian ~] # cd cloudalert/bin
[root@xingdian ~] # bash install.sh 7c5df639-4476-4e1a-bc7c-eb8f9362d919
注意:后面的应用 Key从Onealter的配置中获取(获取方式见第三步)
5.安装过程中需要输入zabbix的管理地址,格式:http://zabbix_server_ip/zabbix
6.输入zabbix的管理员账户和密码
7当提示"安装成功"时表示安装成功!验证告警集成
产生新的zabbix告警(problem),动作状态为“已送达”表示集成成功。
三:Onealter图形化部署
1.配置策略:用户图标—个人中心—告警通知策略注意:在这有三个时段,分别对应企业中报警发生的三个不同时段。告警发生时:发生报警的一瞬间告知管理人员告警确认时:报警信息被管理确认时关闭告警时:警报解除时注意:这这里有四种告警方式。
邮件通知
电话通知
App通知
短信通知
2.电话报警关联zabbix
3.分派策略:配置—分派策略注意:根据公司不同的岗位职责,分配到不同的员工。
29/50
4.zabbix产生报警信息验证电话报警
5.收到电话报警
30/50
zabbix报警基于钉钉
1,安装钉钉—注册钉钉账号。
首先创建一个群聊把需要得到监控信息的人加到一起.在钉钉上面添加一个机器人.
31/50
32/50
33/50
因为是通过钉钉的wbehook实现报警就是一个api
钉钉已经配置好了!
========================================================
2登陆zabbix-server的机器创建python脚本:
[root@zabbixserver-01 ~]# cd /usr/lib/zabbix/alertscripts/ [root@zabbixserver-01 alertscripts]# vim dingding.py #!/usr/bin/python
–– coding: utf-8 –-import requests import json
import sys import os
headers = {‘Content-Type’: ‘application/json;charset=utf-8’} api_url = "" —这里就是刚才复制钉钉的那个webhook
def msg(text): json_text= { "msgtype": "text",
"at": {
34/50
"atMobiles": [
""
],
}, "text": {
"content": text
}
}
print requests.post(api_url,json.dumps(json_text),headers=headers).content
if name == ‘main‘: text = sys.argv[1] msg(text)
设置权限
[root@zabbixserver-01 alertscripts]# chmod 777 dingding.py
创建钉钉的日志文件:
[root@zabbixserver-01 zabbix]# pwd /var/log/zabbix
[root@zabbixserver-01 zabbix]# touch dingding.log
修改属组和属主:
[root@zabbixserver-01 zabbix]# chown zabbix.zabbix dingding.log
======================================================
由于之前已经配置好监控项和触发器了。就直接配置zabbix的报警媒介开始配置web界面:
35/50
36/50
添加用户和报警等级。
37/50
40/50
看钉钉群:
用户参数
1、介绍和用法
① 介绍
自定义用户参数,也就是自定义key有时,你可能想要运行一个代理检查,而不是Zabbix的预定义
你可以编写一个命令来检索需要的数据,并将其包含在代理配置文件("UserParameter"配置参数)的用户参数
中
用法格式 syntax UserParameter=<key>,<command>
A user parameter also contains a key 一个用户参数也包含一个键
The key will be necessary when configuring an item 在配置监控项时,key是必需的 Note: Need to restart the agent 注意:需要重新启动agent 服务
2、用法展示
(1)修改agent 端的配置,设置用户参数①自己需要查找的参数的命令
[root@zabbix-agent-none1 ~]# free | awk ‘/^Mem/{print $3}’
② 修改配置文件,把查找参数的命令设为用户参数
[root@zabbix-agent-none1 ~]# cd /etc/zabbix/zabbix_agentd.d/ [root@zabbix-agent-none1 zabbix_agentd.d]# vim memory_usage.conf UserParameter=memory.used,free | awk ‘/^Mem/{print $3}’ ③ 重启agent 服务
[root@zabbix-agent-none1 zabbix_agentd.d]# systemctl restart zabbix-agent.service (2)在zabbix-server 端,查询 [root@zabbix-server fonts]# zabbix_get -s 192.168.246.226 -p 10050 -k "memory.used"
(3)在监控上,设置一个item监控项,使用这个用户参数配置–>主机–>none1–>监控项–>创建监控项(4)查询graph 图形
41/50
3、用法升级
(1)修改agent 端的配置,设置用户参数 ① 命令行查询参数的命令
② 修改配置文件,把查找参数的命令设为用户参数
[root@zabbix-agent-none1 zabbix_agentd.d]# ls memory_usage.conf userparameter_mysql.conf
[root@zabbix-agent-none1 zabbix_agentd.d]# vim memory_usage.conf —-继续添加 UserParameter=memory.stats[],cat /proc/meminfo | awk ‘/^$1/{print $$2}’ –添加到文件中注意去掉反斜杠 [root@zabbix-agent-none1 zabbix_agentd.d]# systemctl restart zabbix-agent.service
注意:$$2:表示不是前边调位置参数的$1,而是awk 的参数$2
注意:$1是调用前边的[],位置参数,第一个参数(2)在zabbix-server 端,查询使用这个用户参数的key
传参:
[root@zabbix-server fonts]# zabbix_get -s 192.168.246.226 -p 10050 -k "memory.stats[MemTotal]" 999696
[root@zabbix-server fonts]# zabbix_get -s 192.168.246.226 -p 10050 -k "memory.stats[Cache]" 243832
[root@zabbix-server fonts]# zabbix_get -s 192.168.246.226 -p 10050 -k "memory.stats[Buffer]" 2108
(3)在监控上,设置一个item监控项,使用这个用户参数
① 添加Memory Total 的item监控项,使用memory.stats[MemTotal] 的用户参数在进程中定义倍数,规定单位
② clone 克隆Memory Total 创建Memory Free 的监控项 memory.stats[MemFree] 用户参数
(4)上面2个监控项的graph 图形
① memory total
② memory free
4、使用用户参数监控php-fpm 服务的状态
监控php-fpm
在agent 端:192.168.246.226(1)下载,设置php-fpm
[root@zabbix-agent-none1 ~]# yum -y install php-fpm php [root@zabbix-agent-none1 ~]# vim /etc/php-fpm.d/www.conf #修改如下 user = nginx
group = nginx
pm.status_path = /php-fpm-status #php-fpm 的状态监测页面 ,#打开注释并修改 ping.path = /ping #ping 接口,存活状态是否ok #打开注释 ping.response = pong #响应内容pong #打开注释
[root@zabbix-agent-none1 ~]# systemctl start php-fpm
(2)设置nginx ,设置代理php,和php-fpm的状态页面匹配
42/50
[root@zabbix-agent-none1 ~]# vim /etc/nginx/nginx.conf
server {
listen 80 default_server;
listen [::]:80 default_server;
servername ;
root /usr/share/nginx/html;
Load configuration files for the default server block. include /etc/nginx/default.d/*.conf;
location / {
}
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~* /(php-fpm-status|ping) { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $fastcgi_script_name; include fastcgi_params;
access_log off; #访问这个页面就不用记录日志了
}
}
[root@zabbix-agent-none1 ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful [root@zabbix-agent-none1 ~]# nginx -s reload
(3)在agent 端,设置用户参数
① 查询 curl 192.168.246.226/php-fpm-status
pool – fpm池子名称,大多数为www process manager – 进程管理方式,值:static, dynamic or ondemand. dynamic
start time – 启动日期,如果reload了php-fpm,时间会更新 start since – 运行时长 accepted conn – 当前池子接受的请求数
listen queue – 请求等待队列,如果这个值不为0,那么要增加FPM的进程数量 max listen queue – 请求等待队列最高的数量 listen queue len – socket等待队列长度 idle processes – 空闲进程数量 active processes – 活跃进程数量
total processes – 总进程数量 max active processes – 最大的活跃进程数量(FPM启动开始算)
max children reached – 大道进程最大数量限制的次数,如果这个数量不为0,那说明你的最大进程数量太小了,请改大一点。 slow requests – 启用了php-fpm slow-log,缓慢请求的数量
② 设置
[root@zabbix-agent-none1 ~]# cd /etc/zabbix/zabbix_agentd.d/ [root@zabbix-agent-none1 zabbix_agentd.d]# vim php_status.conf —添加
UserParameter=php-fpm.stats[],curl -s http://192.168.246.226/php-fpm-status | awk ‘/$1/{print $$NF}’
#设置用户参数为php-fpm.stats[],$1为第一个参数;$$NF为awk中的参数
③ 重启服务
[root@zabbix-agent-none1 zabbix_agentd.d]# systemctl restart zabbix-agent
(4)在zabbix-server 端,查询使用这个用户参数的key [root@zabbix-server fonts]# zabbix_get -s 192.168.246.226 -p 10050 -k "php-fpm.stats[idle]" 4
43/50
[root@zabbix-server fonts]# zabbix_get -s 192.168.246.226 -p 10050 -k "php-fpm.stats[max active]" 1
(5)创建一个模板,在模板上创建item监控项,使用定义的用户参数
① 创建一个模板
② 在模板上配置items 监控项,使用刚定义的用户参数配置—模板–fpm status—监控项–创建监控项 fpm.stats[total processes] ③ 再clone克隆一个items监控项 fpm.stats[idle processes]
(6)host主机链接模板配置–主机–none1—模板—选择—fpm status —添加—更新(7)查看graph 图形
① php-fpm total processes
② php-fpm idle processes
(8)把模板导出,可以给别人使用 ① 导出模板最下面有导出
② 自己定义用户参数的文件,也不要忘记导出
/etc/zabbix/zabbix_agentd.d/php_status.conf
Network discovery
1、介绍
网络发现:zabbix server扫描指定网络范围内的主机;
网络发现是zabbix 最具特色的功能之一,它能够根据用户事先定义的规则自动添加监控的主机或服务等优点:
加快Zabbix部署简化管理
在快速变化的环境中使用Zabbix,而不需要过度管理(2)发现方式:
ip地址范围;可用服务(ftp, ssh, http, …)
zabbix_agent的响应;snmp_agent的响应;
(3)网络发现通常包含两个阶段:discovery发现 和actions动作
① discovery:
Zabbix定期扫描网络发现规则中定义的IP范围; ② actions:网络发现中的事件可以触发action,从而自动执行指定的操作,把discvery events当作前提条件;
添加/删除主机启用/禁用host
向组中添加主机移除组中的主机
从模板链接主机或取消链接
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 Hostname=zabbix-agent-none2 #只需修改hostname [root@zabbix-agent-none2 ~]# visudo #修改sudo的配置,添加如下信息 #Defaults !visiblepw
zabbix ALL=(ALL) NOPASSWD: ALL
④ 开启服务
44/50
[root@zabbix-agent-none2 ~]# systemctl restart 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
(3)自动发现成功(在检测中查看)
45/50
(4)设置自动发现discovery 的动作action
a)创建
b)设置action动作
① 设置A条件,自动发现规则=test net
② 设置B条件,自动发现状态=up
46/50
③ 要做什么操作添加主机到监控
自动链接Template OS Linux 到此host
c)配置action 完成,默认是disabled 停用的,如果不是停用的,也需要再次选择启动,激活一下。
d)启用动作,查看效果
47/50
确实已经生效,添加主机成功,模板链接成功(5)如果自己需要添加的主机已经扫描添加完成,就可以关闭网络扫描了,因为太耗资源
Web监控
简介:
Web监控:监控指定的站点的资源下载速度,及页面响应时间,还有响应代码;
创建设置web场景配置–主机–none1–web场景–创建web场景
(1)创建(2)配置web 监测
48/50
点击步骤,设置web page web页面
设置名为home page,URL为http://192.168.246.226/index.html 的web页面
49/50
查看测试(略)创建图形查看
50/50
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/183599.html