Loading

9、zabbix监控


9.1、监控:

1、初级(凡人):

(1)识别监控的对象;

(2)理解监控的对象;

(3)细分监控对象的指标;

(4)确定告警的基准线;

2、预中级(飞仙):

(1)工具化和监控分离;

(2)监控对象的分类:

1)硬件监控(方法:机房巡检、ipmi【智能平台管理接口】、snmp(简单网络管理协议)、......);

2)系统监控(对象:cpu、内存、IO【磁盘、网络】、......);

3)服务监控(对象:各类服务【nginx、tomcat、RabbitMQ、openstack、MySQL、......】);

4)日志监控(方法:elastic、stack、......);

5)网络监控(方法:第三方、smokeping、......);

6)apm(每分钟操作的次数)应用性能管理 (工具:PINPoint、......);

7)流量监控(工具:piwik、统计或分析软件、......);

8)其它监控(app监控、安全监控、业务监控、舆论监控、......);

(3)掌握一个监控工具,列如zabbix;

3、中级(元婴):

(1)标准化监控(标准化的脚本、模板、......);

(2)分布式监控(以client为对象:主动【client按时主动发送监控数据到server】、被动【server按时轮询client】、

分布式【client按时主动发送监控数据到代理,代理将数据发送到server】);

(3)自动化监控(以client为对象:被动注册【server发现client】、主动注册【client请求server进行注册】);

(4)性能优化(数据采集、数据存储、数据查询);

(5)二次开发(定制报表、API调用、......);

4、进阶(化神):

(1)动态告警;

(2)智能告警:告警去重,依赖;

(3)故障自愈(服务挂了,主动重启);

(4)大规模(事件驱动、主动控制【服务挂了,由用户来决定】);

9.2、硬件监控:

1、机房巡检;

2、通过网络来巡检;

3、ipmi:

(1)ipmi介绍:

IPMI(Intelligent Platform Management Interface)即智能平台管理接口是使硬件管理具备“智能化”的新一代通用接口标准。

用户可以利用 IPMI 监视服务器的物理特征,如温度、电压、电扇工作状态、电源供应以及机箱入侵等。

Ipmi 最大的优势在于它是独立于 CPU BIOS 和 OS 的,所以用户无论在开机还是关机的状态下,只要接通电源就可以实现对服务器的监控。

Ipmi 是一种规范的标准,其中最重要的物理部件就是BMC(Baseboard Management Controller 如图1),一种嵌入

式管理微控制器,它相当于整个平台管理的“大脑”,通过它 ipmi 可以监控各个传感器的数据并记录各种事件的日志。

(2)使用 ipmi 的先决条件:

想要实现对服务器的 ipmi 管理,必须在硬件、OS、管理工具等几个方面都满足:

1)服务器硬件本身提供对 ipmi 的支持:

目前惠普、戴尔和 NEC 等大多数厂商的服务器都支持 IPMI 1.5,但并不是所有服务器都

支持,所以应该先通过产品手册或在 BIOS 中确定服务器是否支持 ipmi,也就是说服务器

在主板上要具有 BMC 等嵌入式的管理微控制器。

2)操作系统提供相应的 ipmi 驱动:

通过操作系统监控服务器自身的 ipmi 信息时需要系统内核提供相应的支持,linux 系统通过内核对 OpenIPMI(ipmi 驱动)的支持来提供对 ipmi 的系统接口。

yum install OpenIPMI -y

3)ipmi 管理工具:

本文选择的是 Linux 下的命令行方式的 ipmi 平台管理工具 ipmitool

yum install ipmitools -y

systemctl start ipmi

4)注意:虚拟机不能使用,ipmi是服务器纯硬件的监控;

(3)实现对 Linux 服务器的 ipmi 管理:

利用 ipmitool 实现对服务器的 ipmi 管理有两种方式:

1)通过 OS 监控本地服务器(适用于监控);

2)通过网络监控远程服务器(不稳定);

通常的用法是通过impi监控本地,由zabbix收集impi监控的信息;

(4)补充:

1)相关文档:https://www.ibm.com/developerworks/cn/linux/l-ipmi/

2)厂家ipmi手册:

dell idrac、HP ILO、IBM IMM

4、SNMP:

(1)SNMP介绍:

简单网络管理协议(SNMP)是TCP/IP协议簇的一个应用层协议。在1988年被制定,并被Internet体系结构

委员会(IAB)采纳作为一个短期的网络管理解决方案;由于SNMP的简单性,在Internet时代得到了蓬勃的发展,1992年

发布了SNMPv2版本,以增强SNMPv1的安全性和功能。现在,已经有了SNMPv3版本。

一套完整的SNMP系统主要包括管理信息库(MIB)、管理信息结构(SMI)及SNMP报文协议。

1)管理信息库MIB:任何一个被管理的资源都表示成一个对象,称为被管理的对象。

MIB是被管理对象的集合。它定义了被管理对象的一系列属性:对象的名称、对象的访问权限和对象的数据类型等。

每个SNMP设备(Agent)都有自己的MIB。MIB也可以看作是NMS(网管系统)和Agent之间的沟通桥梁。它们之间的关系如图1所示。

图1

MIB文件中的变量使用的名字取自ISO和ITU管理的对象标识符(object identifier)名字空间。它是一种分级树的结构。

如图2所示,第一级有三个节点:ccitt、iso、iso-ccitt。低级的对象ID分别由相关组织分配。一个特定对象的标识符可通过由根到该对象的路径获得。

一般网络设备取iso节点下的对象内容。如名字空间ip结点下一个名字为ipInReceives的MIB变量被指派数字

值3,因而该变量的名字为:iso.org.dod.internet.mgmt.mib.ip.ipInReceives,相应的数字表示(对象标识符OID,唯一标识一个MIB对象)为:1.3.6.1.2.1.4.3;

图2

(2)安装snmp:

yum install net-snmp-libs net-snmp net-snmp-utils -y

(3)修改snmp配置文件:

cp -a /etc/snmp/snmpd.conf{,.bak}

vim /etc/snmp/snmpd.conf

com2sec admin default admin #配置用户;

# 用户名 团体名称

group admin v2c admin #配置组;

# 组名称 用户名称

view admin included .1 80 #配置用户权限;

# 用户名称 用户的权限

access admin "" any noauth exact admin admin none #配置用户的详细权限;

# 组名称 view名称

(4)启动snmp服务:

systemctl start snmpd

systemctl enable snmpd

(5)查看snmp的端口号:

netstat -tunlp | grep snmpd

tcp 0 0 127.0.0.1:199 0.0.0.0:* LISTEN 1549/snmpd

udp 0 0 0.0.0.0:161 0.0.0.0:* 1549/snmpd

(6)查看系统一分钟的负载:

snmpget -v2c -c admin 172.16.1.90 .1.3.6.1.4.1.2021.10.1.3.1 #snmpget代表取的是一个oid对象;

UCD-SNMP-MIB::laLoad.1 = STRING: 0.24

snmpwalk -v2c -c admin 172.16.1.90 .1.3.6.1.4.1.2021.10.1.3 #snmpwalk代表取得失oid对象的父节点信息;

UCD-SNMP-MIB::laLoad.1 = STRING: 0.14

UCD-SNMP-MIB::laLoad.2 = STRING: 0.05

UCD-SNMP-MIB::laLoad.3 = STRING: 0.06

9.3、系统监控:

中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。

1、CPU:

(1)进程:每个进程,至少有一个线程,每个进程可以有多个线程,进程是一个特殊的线程;

(2)操作系统的设计可以归纳为三点:

1)以多进程形式,允许多个任务同时运行且相互独立;

2)以多线程形式,允许单个任务分成不同的部分运行且共享进程的资源;

3)提供协调机制,一方面防止进程之间和线程之间产生冲突,另一方面允许进程之间和线程之间共享资源;

4)cpu使用进程(严格意义是进程)调度器将多进程或多线程分成不同的时间片段来运行;

5)相关文档:https://blog.csdn.net/baigoocn/article/details/38236635

(3)cpu的用户态和内核态:

1)cpu有四种不同的执行级别:0-3,其中0表示的是内核态(调用系统的一切的资源),3表示的用户态(执行简单的运算,不能

直接调用系统资源,必须通过接口【又称为system call】,才能向内核发出指令);

2)top:

top - 14:06:56 up 2:44, 1 user, load average: 0.00, 0.01, 0.05

# 当前时间; 启动了多长时间;当前在线的用户数;系统1、5、15分钟的负载值;

Tasks: 93 total, 1 running, 92 sleeping, 0 stopped, 0 zombie

# 总共有93个任务(线程); 当前在运行的任务有一个; 有92个任务处于休眠的状态;0个停止的任务;0个僵尸任务;

%Cpu(s): 5.9 us, 5.9 sy, 0.0 ni, 88.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st

# 用户态;内核态;优先级为负;空闲; io等待,只针对cpu;硬中断;软中断; 虚拟cpu等待实际cpu的百分比;

#cpu利用率中user/system比例维持在70/30算正常;

KiB Mem : 997956 total, 561068 free, 169272 used, 267616 buff/cache

KiB Swap: 2097148 total, 2097148 free, 0 used. 656408 avail Mem


PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

#进程的pid; 进程的所有者; 进程的优先级级别,越小越优先; 进程的虚拟内存;进程的物理内存;进程的共享内存; 进程的cpu使用率;进程的内存使用率;进程启动后占用cpu的总时间;进程名称;

2204 root 20 0 161840 2144 1540 R 6.7 0.2 0:00.01 top

1 root 20 0 125724 4160 2604 S 0.0 0.4 0:04.45 systemd

补充:

PRI是比较好理解的,即进程的优先级,或者通俗点说就是程序被CPU执行的先后顺序,此值越小进程的优先级别越高。

那NI呢?就是我们所要说的nice值了,其表示进程可被执行的优先级的修正数值。如前面所说,PRI值越小越快被执行,那么

加入nice值后,将会使得PRI变为:PRI(new)=PRI(old)+nice。由此看出,PR是根据NICE排序的,规则是NICE越小PR越

前(小,优先权更大),即其优先级会变高,则其越快被执行。

Nice值的范围从-20到+19(不同系统的值范围是不一样的),正值表示低优先级,负值表示高优先级,值为零则表示

不会调整该进程的优先级;

3)top常用的使用方法:

1:展示每个cpu的详情;

M:按内存使用率降序排序;

P:按cpu使用率降序排序;

(4)sysstat工具包的使用:

1)安装sysstat软件:

yum install sysstat -y

2)监控cpu:

mpstat 1 1

Linux 3.10.0-862.el7.x86_64 (controller-node1) 2019年04月20日 _x86_64_ (1 CPU)

14时59分01秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle

14时59分02秒 all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00

平均时间: all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00

参数解释:

CPU: 每个CPU的process id

%usr: 用户态下cpu的利用率;

%nice: 具有nice优先级的用户下,CPU的使用率;

%sys: 内核态下cpu的使用率;

%iowait:io等待cpu的使用率;

%irq: 硬中断;

%soft: 软中断;

%steal: 虚拟cpu等待实际cpu的百分比;

%guest: CPU处理虚拟进程的百分比;

%idel: CPU空闲百分比;

(5)如何判断cpu的使用是否正常:

1)cpu的使用率,常用;

2)系统的负载;

(6)查看cpu信息:

lscpu

Architecture: x86_64

CPU op-mode(s): 32-bit, 64-bit

Byte Order: Little Endian

CPU(s): 8

#逻辑cpu的总数=1*2*3;

On-line CPU(s) list: 0-7

#在线的逻辑cpu数;

Thread(s) per core: 1 #1

#每个核心的线程数;

Core(s) per socket: 4 #2

#每个物理cpu插座上cpu的核心数;

座: 2 #3

#cpu的物理插座总数;

NUMA 节点: 1

厂商 ID: GenuineIntel

CPU 系列: 6

型号: 142

型号名称: Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz

步进: 10

CPU MHz: 2001.000

CPU max MHz: 0.0000

CPU min MHz: 0.0000

BogoMIPS: 4002.00

虚拟化: VT-x

超管理器厂商: VMware

虚拟化类型: 完全

L1d 缓存: 32K

L1i 缓存: 32K

L2 缓存: 256K

L3 缓存: 8192K

NUMA 节点0 CPU: 0-7

(7)系统负载:
1)查看系统的负载:

cat /proc/loadavg

0.01 0.03 0.05 2/112 2304

#系统1、5、15分钟的负载;分子是当前正在运行的线程数,分母是总的线程数;系统创建的最后一个进程的pid;

uptime

15:07:00 up 3:44, 1 user, load average: 0.00, 0.03, 0.05

2)负载的算法:

lscpu取得CPU逻辑处理器数量N,N*0.7小于uptime后面两位数则正常;

系统正在运行的线程数占用系统可运行的最大线程总数的比值;

2、内存:

(1)虚拟内存、swap、物理内存;

内存是分页的;

(2)free -mh

total used free shared buff/cache available

Mem: 974M 165M 544M 7.6M 264M 640M

# 总的物理内存MB; 使用的内存; 空闲的内存; 共享的内存; buffer和cache内存; 现在可用的物理内存

Swap: 2.0G 0B 2.0G

# 交换分区的总内存; 使用的交换内存; 剩余的交换内存;

(3)vmstat 1 1

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----

r b swpd free buff cache si so bi bo in cs us sy id wa st

2 0 0 557056 2076 269244 0 0 8 2 60 61 0 0 99 0 0

1) procs:进程信息字段:

-r:运行的进程数,数量越大,系统越繁忙。

-b:不可被唤醒的进程数量,数量越大,系统越繁忙。

2) memory:内存信息字段:

-swpd:虚拟内存的使用情况,单位为KB。

-free:空闲的内存容量,单位为KB。

-buff:缓冲的内存容量,单位为KB。

-cache:缓存的内存容量,单位为KB。

3) swap:交换分区信息字段:

-si:从swap中读取到ram中数据的数量,单位为KB。

-so:从ram中写到swap中数据的数量,单位为KB。

这两个数越大,表明数据需要经常在swap和ram之间进行交换,系统性能越差。

4) io:磁盘读/写信息字段:

-bi:从文件系统或swap读取到ram的磁盘块大小,单位是块,一个block为4kB。

-bo:从ram写到文件系统或swap的磁盘块大小,单位是块。

这两个数越大,代表系统的 I/O 越繁忙。

5) system:系统信息字段:

-in:每秒被中断的进程次数。

-cs:每秒进行的事件切换次数。

这两个数越大,代表系统与接口设备的通信越繁忙。

6) cpu:CPU信息字段:

-us:非内核进程消耗CPU百分比。

-sy:内核进程消耗CPU的百分比。

-id:空闲CPU的百分比。

-wa:等待I/O所消耗的CPU的百分比。

-st:虚拟机消耗的CPU百分比。

3、IO:

(1)iotop软件:

iotop是一个用来监视磁盘I/O使用状况的top类工具,可以知道每个进程是如何使用IO;

1)安装:

yum install iotop -y

2)使用方法:

A、参数:

-o:只显示有io操作的进程

-b:批量显示,无交互,主要用作记录到文件。

-n NUM:显示NUM次,主要用于非交互式模式。

-d SEC:间隔SEC秒显示一次。

-p PID:监控的进程pid。

-u USER:监控的进程用户。

B、监视进程的IO流量和带宽:

iotop

Total DISK READ : 0.00 B/s | Total DISK WRITE : 0.00 B/s

Actual DISK READ: 0.00 B/s | Actual DISK WRITE: 0.00 B/s

TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND

512 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [xfs-eofblocks/s]

1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % systemd --switched-root --system --deserialize 22

2 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kthreadd]

3 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/0]

516 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [hci0]

iotop常用快捷键:

左右箭头:改变排序方式,默认是按IO排序;

r:改变排序顺序;

o:只显示有IO输出的进程;

p:进程/线程的显示方式的切换;

a:显示累积使用量,默认显示的是进程的io带宽;

q:退出;

3)监视磁盘的读写性能:

iostat sda scd0:

Linux 3.10.0-862.el7.x86_64 (controller-node1) 2019年04月20日 _x86_64_ (1 CPU)


avg-cpu: %user %nice %system %iowait %steal %idle

0.19 0.00 0.32 0.11 0.00 99.38


Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn

sda 0.42 7.05 1.98 231960 65013

scd0 0.00 0.03 0.00 1028 0

(4)df -hT:

文件系统 类型 容量 已用 可用 已用% 挂载点

/dev/sda3 xfs 58G 1.7G 57G 3% /

devtmpfs devtmpfs 477M 0 477M 0% /dev

tmpfs tmpfs 488M 0 488M 0% /dev/shm

tmpfs tmpfs 488M 7.7M 480M 2% /run

tmpfs tmpfs 488M 0 488M 0% /sys/fs/cgroup

/dev/sda1 xfs 197M 102M 95M 52% /boot

tmpfs tmpfs 98M 0 98M 0% /run/user/0

(5)Centos7的io调度算法:

1)查看当前系统的io调度算法:

cat /sys/block/sda/queue/scheduler

noop [deadline] cfq

#不调度,ssd; 截止时间调度,默认,对数据库支持好;公平调度,桌面;

2)临时生效:

echo cfq>/sys/block/sda/queue/scheduler

cat /sys/block/sda/queue/scheduler

noop deadline [cfq]

由上,我们可以看到CentOS7下默认的算法被调整为cfq了;

3)永久生效的方法:

grubby --update-kernel=ALL --args="elevator=deadline"

reboot

cat /sys/block/sda/queue/scheduler

noop [deadline] cfq

4)测试磁盘的读写性能:

time dd if=/dev/sda3 of=/dev/null bs=2M count=300

记录了300+0 的读入

记录了300+0 的写出

629145600字节(629 MB)已复制,25.458 秒,24.7 MB/秒


real 0m25.461s

user 0m0.000s

sys 0m23.326s

5)补充:

CentOS6下默认支持磁盘io算法是cfq;

CentOS6更改io永久生效的方法:

vim /boot/grub/menu.lst #更改到如下内容;

kernel /boot/vmlinuz-2.6.32-504.el6 ro root=LABEL=/ elevator=deadline rhgb quiet

(6)磁盘可以不分区直接格式化,然后再进行挂载;

磁盘的缓存用不到,用的是raid卡的缓存,raid卡上有电池;

4、网络:

(1)软件iftop:

iftop是一款实时流量监控工具,监控TCP/IP连接等,缺点就是无报表功能,必须以root身份才能运行;

1)安装:

yum install iftop -y

2)iftop命令的使用:

A、参数解释:

a、-i eth1:

监控eth1网卡;默认是监控第一块网卡的流量;

b、-P:

显示端口信息;

c、-n:

直接显示IP, 不进行DNS反解析

d、-F 192.168.1.0/24 or 192.168.1.0/255.255.255.0

显示某个网段进出封包流量,本地ip段;

B、监视网络流量:

iftop -i eth0 -P -n

interface: eth0

IP address is: 10.0.0.90

MAC address is: 00:0c:29:5d:92:84

12.5Kb 25.0Kb 37.5Kb 50.0Kb 62.5Kb

└────────────────────────────────────┴─────────────────────────────────────┴─────────────────────────────────────

10.0.0.90:53525 => 51.75.17.219:ntp 0b 0b 15b

<= 0b 0b 15b

─────────────────────────────────────────────────────────────────────────────────────────────────────────────────

TX: cum: 2.75KB peak: 304b rates: 0b 0b 15b

RX: 2.72KB 304b 0b 0b 15b

TOTAL: 5.47KB 304b 0b 0b 30b

说明:

界面上面显示的是类似刻度尺的刻度范围,为显示流量图形的长条作标尺用的;

中间'<= =>'这两个左右箭头,表示的是流量的方向;

中间'<= =>'这两个箭头的左边,表示本地ip端口;

中间'<= =>'这两个箭头的右边,分别表示每2秒、10秒、40秒的平均流量;

TX:发送流量;

RX:接收流量;

TOTAL:总流量;

Cumm:运行iftop到目前时间的总流量;

peak:流量峰值;

rates:分别表示过去 2s 10s 40s 的平均流量;

3)监视网络流量:

ifstat eth0 eth1

#kernel

Interface RX Pkts/Rate TX Pkts/Rate RX Data/Rate TX Data/Rate

RX Errs/Drop TX Errs/Drop RX Over/Rate TX Coll/Rate

lo 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0

eth0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0

eth1 11 0 7 0 920 0 712 0

0 0 0 0 0 0 0 0

(2)软件nethogs:

检测系统进程占用带宽情况的检查;

1)安装:

yum install nethogs -y

2)nethogs命令的使用:

A、参数解释:

a、eth0 eth1:

指定监听eth0 eth1网卡,默认监听所有网卡;

b、-d 5:

表示每5秒刷新一次,每1秒刷新一次;

B、示例:

nethogs -d 5 eth0 eth1

Ethernet link detected

Ethernet link detected

Waiting for first packet to arrive (see sourceforge.net bug 1019381)NetHogs version 0.8.5

PID USER PROGRAM DEV SENT RECEIVED

#进程pid;所属用户;进程名称; 网卡名称;进程发送数据的的带宽;进程接收数据的带宽;

1408 root sshd: root@pts/0 eth1 0.147 0.059 KB/sec

? root unknown TCP 0.000 0.000 KB/sec


TOTAL 0.147 0.059 KB/se

#所有进程发送带宽的总和和接收带宽的总和;

交互命令:

m : 修改单位;

r : 按接收流量排序;

s : 按发送流量排序;

q : 退出命令提示符

(3)nmon软件:

Nmon (Nigel's Monitor)是由IBM 提供、免费监控 AIX 系统与 Linux 系统资源的工具。

该工具可将服务器系统资源耗用情况收集起来并输出一个特定的文件,并可利用 excel 分析工具(nmon analyser)进行数据的统计分析。

单机版的,对于批量管理不使用;

1)安装:

yum install nmon -y

2)命令使用:

nmon

交互命令:

c #可显示CPU的信息;

m #对应内存;

n #对应网络;

d #可以查看磁盘信息;

t #可以查看系统的进程信息;

3)使用nmon采集数据:

A、采集:

nmon -s10 -c60 -f -m /tmp/

参数解释:

-s10 #每 10 秒采集一次数据;

-c60 #采集 60 次,即为采集十分钟的数据;

-f #生成的数据文件名中包含文件创建的时间;

-m #生成的数据文件的存放目录;

ls -l /tmp/

总用量 68

-rw-r--r-- 1 root root 67616 4月 21 14:41 controller-node1_190421_1431.nmon

#controller-node1_190421_1431.nmon:由"本地主机名_年月日_数据收集开始的时间.nmon"构成数据文件;

B、下载采集的数据文件到windos:

sz -y /tmp/controller-node1_190421_1431.nmon

4)安装nmon_analyser分析器:

在windows中使用nmon_analyser分析器;

A、下载软件:

https://www.ibm.com/developerworks/community/wikis/form/anonymous/api/ \
wiki/61ad9cf2-c6a3-4d2c-b779-61ff0266d32a/page/b7fc61a1-eef9-4756-8028-6e687997f176/ \
attachment/ead4752f-8c08-4893-8946-d18911082f3d/media/nmon_analyser_v60.zip

B、数据分析:

(4)ping检测:

http://ping.chinaz.com/www.baidu.com

smokeping:网络监控,了解即可;

posted @ 2020-02-17 10:40  云起时。  阅读(354)  评论(0编辑  收藏  举报