1.zabbix概述

一、什么是监控

我们的生活里,离不开监控,监控能够最大程度上,发挥如下作用

  • 实时监测,即使你不在电脑前,也能实时掌握监控区域情况,提高工作效率
  • 事后录像查询,如果不法事件未能即使发现制止,可以调取录像,让不法分子无处遁形。
  • 给与不法分子震慑作用,当不法分子意识到自己暴露在监控内,就不敢使坏。
  • 远程查看,远程操控,只需要联网,即可在任何设备上,试试查看监控。

二、运维的职责

1、保障企业数据的安全可靠。

2、为客户提供7*24小时服务。

3、不断提升用户的体验。

4、在关键时刻,提前提醒我们服务器要出问题了。

5、当出问题之后,可以便于找到问题的根源。

三、互联网公司里的运维

一般公司里的运维,大致可以分为基础运维、应用运维、运维开发、监控组四大部分。

  • 基础运维,负责IDC运维,服务器上下架,网络设备等
  • 应用运维,也就是system administrator,系统管理员
  • 运维开发,负责运维工具的开发,系统开发等,例如开发监控系统,代码发布系统
  • 监控组,也就是24小时值班的人员,需要时刻关注服务器,网站的状况,出现问题后,第一时间联系相关运维以及研发人员。

四、运维的难处

国内的互联网大厂,拥有几百,几千台服务器是很常见的,每天在几千台服务器上敲命令,查看系统状态,发布代码,任务非常繁琐。

  • 服务器崩溃,网站后台500挂了,由于没有监控,不能即使发现;
  • 代码发布太过于繁琐,每一台机器都要自己手动执行部署,一台一台的检查;
  • 机器之间环境不统一,代码一样,但是这台能正常运行,另一台就不能正常运行;
  • 分析问题困难,想要知道服务器历史状态,就比较麻烦;

五、为什么需要监控

监控:监视,控制

举例

随着用户的增多,服务随时可能会被系统 OOM out of memory内存溢出

kill -9 mysql

你怎么判断,web服务是因为用户访问过多,达到了瓶颈?还是程序代码bug导致的,内存过多?

上线一个新网站:压力测试2000并发,oom: out of memoery

压力测试

tailf

从尾部开始倒序来不间断查看一个文件,可以用于日志监控

tailf /var/log/messages

sh 复制代码
tailf /var/log/messages
free

查看内存使用信息,配合watch就可以实现对内存的一个简单监控

sh 复制代码
watch free -m
ab

做压力测试的,可用于httpd,nginx,iis

sh 复制代码
ab -help
  • -n 在测试会话中所执行的请求个数(理解为轮数)。默认时,仅执行一个请求。
  • -c 一次产生的请求个数(并发数)。默认是一次一个。
sh 复制代码
ab -n 300000 -c 6000 http://192.168.100.100/zabbix

六、没有监控系统之前

在有监控系统之前,运维人员需要登录服务器手动敲打命令来获取系统数据,例如交给大家的iotop,glances,top,free,ps等查看服务器状态的命令。

运维人员通过系统管理的命令来获取服务器数据,为了分析问题,可能会把数据复制到本地机器,通过excel等工具进行制表,画图分析服务器性能动态。

这种手动管理服务器的麻烦在于,服务器出现问题的时候,运维无法即使的发现,可能服务器内存满了,网站应用挂了,用户过来投诉才能发现。

1、free

2、df

3、iostat

  • iostat是I/O statistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视。
  • 它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。
1)安装
sh 复制代码
yum install sysstat
2)使用
sh 复制代码
iostat

单独执行iostat,显示的结果为从系统开机到当前执行时刻的统计信息。

输出中,包含三部分:

选项 说明
第一行 最上面指示系统版本、主机名和当前日期
avg-cpu 总体cpu使用情况统计信息,对于多核cpu,这里为所有cpu的平均值
Device 各磁盘设备的IO统计信息

avg-cpu中各列参数含义如下:

选项 说明
%user CPU在用户态执行进程的时间百分比。
%nice CPU在用户态模式下,用于nice操作,所占用CPU总时间的百分比
%system CPU处在内核态执行进程的时间百分比
%iowait CPU用于等待I/O操作占用CPU总时间的百分比
%steal 管理程序(hypervisor)为另一个虚拟进程提供服务而等待虚拟CPU的百分比
%idle CPU空闲时间百分比
  1. 若 %iowait 的值过高,表示硬盘存在I/O瓶颈
  2. 若 %idle 的值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量
  3. 若 %idle 的值持续低于1,则系统的CPU处理能力相对较低,表明系统中最需要解决的资源是 CPU

Device中各列参数含义如下:

选项 说明
Device 设备名称
tps 每秒向磁盘设备请求数据的次数
Blk_read/s 每秒从设备(drive expressed)读取的数据量;
Blk_wrtn/s 每秒向设备(drive expressed)写入的数据量;
Blk_read 读取的总数据量;
Blk_wrtn 写入的总数量数据量;

只看CPU

sh 复制代码
iostat -c

只看磁盘

sh 复制代码
iostat -d

只看磁盘 如sda

sh 复制代码
iostat -d sda

4、uptime

查看系统的启动时间,有多少个用户连接,1、5、15 min 系统的平均负载

uptime

5、top

uptime,free... 类似于windows中的任务管理器

top

6、htop

top作为日常管理工作中最常用也是最重要的Linux系统监控工具之一,可以动态观察系统进程状况。但其缺点就是只支持键盘操作,显示也单调。现在有了一个更好的选择:htop。

1)安装

epel-release centos扩展源

sh 复制代码
yum -y install  epel-release 
yum -y install htop
2)使用
htop

F1-F10功能键中定义的快捷功能。 F1:显示帮助信息;

F2:配置界面中的显示信息;

7、Glances

linux最好用的资源监控工具-glances

Glances 是一个由 Python 编写,使用 psutil 库来从系统抓取信息的基于 curses 开发的跨平台命令行系统监视工具。 通过 Glances,我们可以监视 CPU,平均负载,内存,网络流量,磁盘 I/O,其他处理器 和 文件系统 空间的利用情况。

  • CPU 信息 (用户的相关应用, 系统核心程序和空闲程序)
  • 总内存信息,包括了物理内存,交换空间和空闲内存等等
  • 之前的 1 分钟、5 分钟和 15 分钟平均的 CPU 负载
  • 网络链接的下行和上行速度
  • 处理器总数,以及其活动状态
  • 硬盘 I/O 相关(读写)速度详情
  • 当前挂载设备的磁盘使用情况
  • 高 CPU 和内存使用的进程名,和相关应用的位置
  • 在底部显示当前日期和时间
  • 将消耗最高系统资源的进程用红色标出
1)安装

由于glances运行需要python环境,所以我们需要首先安装好python环境**(如果系统是最小安装)**

yum -y install glances 
2)使用
glances 

Glances 会用一下几种颜色来代表状态:

  • 绿色:OK(一切正常)
  • 蓝色:CAREFUL(需要注意)
  • 紫色:WARNING(警告)
  • 红色:CRITICAL(严重)

Glances 的默认刷新频率是 1 (秒),但是你可以通过在终端指定参数来手动定义其刷新频率

复制代码

8、iotop

iotop是一个用来监视磁盘I/O使用状况的 top 类工具,可监测到哪一个程序使用的磁盘IO的信息。

1)安装
sh 复制代码
yum -y install iotop
2)使用
sh 复制代码
iotop -参数
  • 左右箭头操作,按 r 是相反方向,按 o 是动态切换
  • -version 查看版本信息
  • -h, -help 查看帮助信息
  • -o, -only 只显示在操作硬盘的程序
  • -b, -batch 批量处理,用来记录日志
  • -n NUM 设定循环几次
  • -d SEC, -delay=SEC 设定显示时间间隔

9、mailx

1)安装
sh 复制代码
yum install mailx							# centos
2)配置

smtp

SMTP是一种提供可靠且有效的电子邮件传输的协议。SMTP是建立在FTP文件传输服务上的一种邮件服务,主要用于系统之间的邮件信息传递,并提供有关来信的通知。SMTP独立于特定的传输子系统,且只需要可靠有序的数据流信道支持,SMTP的重要特性之一是其能跨越网络传输邮件,即"SMTP邮件中继"。使用SMTP,可实现相同网络处理进程之间的邮件传输,也可通过中继器或网关实现某处理进程与其他网络之间的邮件传输。

  • 中文名

    简单邮件传输协议

  • 外文名

    Simple Mail Transfer Protocol

  • 简 称

    SMTP

  • 作 用

    传输系统之间的邮件信息

  • 端 口

    25

    vim /etc/mail.rc

sh 复制代码
set from=zmstemp@163.com					# 对方收到邮件时显示的发件人
set smtp=smtp.163.com						# 第三方发邮件的smtp服务器地址
set smtp-auth-user=zmstemp@163.com			# 第三方发邮件的用户名
set smtp-auth-password=WTHEZUXQINBCNORH		# 我不能直接使用密码,不安全。用密码来生成授权码  
set smtp-auth=login							# SMTP的认证方式
3)测试
sh 复制代码
echo "测试邮件" | mail -s -v "测试"  117765560@qq.com

10、awk

AWK 是一种处理文本文件的语言,是一个强大的文本分析工具。

之所以叫 AWK 是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符。

1)参数

这里要用它来取值

-F 指定分割符 默认的分隔符是 空格

常用内置变量

$1, 2.... 2.... 2....n 提取当前记录的第n个字段,字段间由FS分隔
$0 完整的输入记录
FILENAME 当前文件名
NF 一条记录的字段的数目,field列数
NR 已经读出的记录数**,就是行号**,从1开始
2)实例

111 222 333 $0

111 $1

333 $3

sh 复制代码
awk '{print}' /etc/passwd
awk '{print $1}' /etc/passwd
awk -F ':' '{print $1}' /etc/passwd
awk -F ':' 'NR==1 {print $1}' /etc/passwd

11、通过脚本监控服务器

适用于公司规模不大的情况。

sh 复制代码
#!/bin/bash
while true
do
  Free=`free -m | awk NR==2'{print $NF}'`
  if [ $Free -lt 84 ]
    then
      echo $Free
      echo $Free | mail -s" 当前内存" 117765560@qq.com
  fi
  sleep 60
done


#!/bin/bash
while true
do
  Free=`iostat | awk NR==4'{print $6}'`
  if [ $Free -lt 200 ]
    then
      echo $Free
      echo $Free | mail -s" 当前内存" 117765560@qq.com
  fi
  sleep 60
done

当登录有数据数量超过3个时,发邮件告警

#!/bin/bash
while true
do
  Free=`w | awk NR==1'{print $4}'`
  if [ $Free -gt 3 ]
    then
      echo $Free
      echo $Free | mail -s" 当前登录用户数量过多" 117765560@qq.com
  fi
  sleep 60
done


当磁盘的剩余空间<90%时,发邮件告警

授权

chmon 755 demo.sh

七、有了监控软件之后

利用一个优秀的监控软件,我们可以:

通过一个友好的界面进行浏览整个网站所有的服务器状态

可以在web前端方便的查看监控数据

可以回溯寻找事故发生时系统的问题和报警情况

1、zabbix介绍

Zabbix 是由 Alexei Vladishev 开发的一种网络监视、管理系统,基于 Server-Client 架构

可用于监视各种网络服务服务器网络机器等状态。

可以使用各种 Database-end 如 MySQL, PostgreSQL, SQLite, Oracle 或 IBM DB2 储存资料。

Server 端基于 C语言、Web 管理端 frontend 则是基于 PHP 所制作的。

Zabbix 可以使用多种方式监视。可以只使用 Simple Check 不需要安装 Client 端,亦可基**于 SNMP (简单网络管理协议)**或 HTTP 各种协议定制监视。

在客户端如 UNIX, Windows 中安装 Zabbix Agent 之后,可监视 CPU Load、网络使用状况、硬盘容量等各种状态。而就算没有安装 Agent 在监视对象中,Zabbix 也可以经由 SNMP、TCP、ICMP、利用 IPMI、SSH、telnet 对目标进行监视。

Zabbbix自带的Item足够满足普通小公司的监控需求,对于大公司也可以设定自定义的Item,自动生成报表,也有API可以和其他系统集成。

2、zabbix架构

3、zabbix程序组件 进程

  • zabbix_server,服务端守护进程
  • zabbix_agentd,agent守护进程
  • zabbix_proxy,代理服务器
  • zabbix_database,存储系统,mysql,pgsql
  • zabbix_web,web GUI图形化界面
  • zabbix_get,命令行工具,测试向agent发起数据采集请求
  • zabbix_sender,命令行工具,测试向server发送数据
  • zabbix_java_gateway,java网关

3、Zabbix监控方式

1)被动模式

  • 被动检测:相对于agent而言; agent,server向agent请求获取配置的各监控项相关的数据agent接收请求、获取数据并响应给server

2)主动模式

  • 主动检测:相对于agent而言; agent(active),agent向server请求与自己相关监控项配置,主动地将server配置的监控项相关的数据发送给server
  • 主动监控能极大节约监控server的资源。

4、zabbix专有词汇

1)主机(host)

不是仅仅指的一台电脑,一台你想监控的网络设备,用IP或域名表示 被监控的设备

2)主机组(host group)

主机的逻辑组 ;它包含主机和模板。一个主机组里的主机和模板之间并没有任何直接的关联。通常在给不同用

户组的主机分配权限时候使用主机组。

3)监控项(item)

你想要接收的主机的特定数据,一个度量数据。 要监控的项目是什么 比如磁盘大小,内存大小

4)触发器(trigger)

当内存《200 时,我要去通知老钟。

一个被用于定义问题阈值和评估"监控项接收到的数据的逻辑表达式

当接收到的数据高于阈值时,触发器从"OK""变成"Problem"状态。当接收到的数据低于阈值时,触发器保留/返回一个OK""的状态。

5)事件(event)

单次发生的需要注意的事情。例如触发器状态改变或发现有监控代理自动注册

6)异常(problem)

一个处在"异常""状态的触发器

7)动作(action)

一个对事件做出反应的预定义的操作。

8)升级(escalation)

一个在动作内执行操作的自定义场景,发送通知/执行远程命令的序列

9)媒介(media)

发送告警通知的手段,告警通知的途径

10)通知(notification)

利用已选择的媒体途径把跟事件相关的信息发送给用户

11)远程命令(remote command)

一个预定义好的,满足一些条件的情况下,可以在被监控主机上自动执行的命令

12)模版(template)

  • 一组可以被应用到一个或多个主机上的实体(监控项,触发器,图形,聚合图形,应用,LLD,Web场景)的集合
  • 模版的任务就是加快对主机监控任务的实施;也可以使监控任务的批量修改更简单。模版是直接关联到每台单独的主机上。

14)web场景(web scenario)

利用一个或多个HTTP请求来检查网站的可用性 通常用于API的监控

13)应用(application)。

---组监控项组成的逻辑分组

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收集本地的操作信息并将数据报告给Zabbix server用于进一步处理。一旦出现异常(比如硬盘空间已满或者有崩溃的服务进程),Zabbix server会主动警告管理员指定机器上的异常。
  • Zabbix agents 的极端高效缘于它可以利用本地系统调用来完成统计数据的收集。

19)被动和主动检查

Zabbix agents 可以执行被动和主动两种检查方式

  • 被动检查(passive check)模式中 agent应答数据请求,Zabbix server(或者proxy)询问agent数据,如CPU的负载情况,然后Zabbix agent回送结果。
  • 主动检查(Active checks)处理过程将相对复杂。Agent必须首先从Zabbix sever索取监控项列表以进行独立处理,然后周期性地发送新的值给server。

20)zabbix proxy

  • 一个帮助Zabbix Server收集数据,分担Zabbix Server的负载的程序
  • Zabbix Proxy是一个可以从一个或多个受监控设备收集监控数据,并将信息发送到Zabbix sever的进程,基本上是代表sever工作的。
  • 所有收集的数据都在本地进行缓存,然后传送到proxy所属的Zabbix sever。部署Proxy是可选的
  • Zabbix proxy需要使用独立的数据库。
相关推荐
德迅云安全-小钱1 小时前
跨站脚本攻击(XSS)原理及防护方案
前端·网络·xss
ss2731 小时前
【2025小年源码免费送】
前端·后端
Amy_cx1 小时前
npm install安装缓慢或卡住不动
前端·npm·node.js
gyeolhada1 小时前
计算机组成原理(计算机系统3)--实验八:处理器结构拓展实验
java·前端·数据库·嵌入式硬件
小彭努力中1 小时前
16.在Vue3中使用Echarts实现词云图
前端·javascript·vue.js·echarts
flying robot1 小时前
React的响应式
前端·javascript·react.js
禁默1 小时前
深入探讨Web应用开发:从前端到后端的全栈实践
前端
来一碗刘肉面1 小时前
Vue - ref( ) 和 reactive( ) 响应式数据的使用
前端·javascript·vue.js
guhy fighting2 小时前
原生toFixed的bug
前端·javascript·bug
上官熊猫3 小时前
nuxt3项目打包部署到服务器后配置端口号和开启https
前端·vue3·nuxt3