监控概述

监控的目的

  • 报告系统运行状况

    每一部分必须同时监控

    内容包括吞吐量、反应时间、使用率等

  • 提前发现问题

    进行服务器性能调整前,知道调整什么

    找出系统的瓶颈在什么地方

监控的资源类别

  • 公开数据

    WebFTPSSH数据库等应用服务

    TCPUDP端口

  • 私有数据

    CPU内存磁盘网卡流量等使用信息

    用户进程等运行信息

监控软件

系统监控命令

  • ps:查询进程信息
  • uptime:查询运行时间和cpu负载信息
  • free:查询内存信息
  • swapon -s:查看交换分区的信息
  • df -h:查询硬盘和挂载的信息
  • ifconfig:查询网络信息[net-tools]
  • netstatss:查询网络连接状态和端口的信息
  • ping:测试网络延迟
  • traceroute:跟踪路由
  • iostat:查询磁盘io的性能(读写)[sysstat]
  • sar:综合命令,可以查询cpu、磁盘、网络历史数据和实时数据

自动化监控系统

  • Cacti

    基于SNMP协议的监控软件,强大的绘图能力

  • Nagios

    基于Agent监控,强大的状态检查与报警机制

    插件极多,自己写监控脚本嵌入到Nagios非常方便

  • Zabbix

    基于多种监控机制,支持分布式监控

Zabbix简介

  • Zabbix是一个高度集成的监控解决方案
  • 可以实现企业级的开源分布式监控
  • Zabbix通过C/S(client/server:客户端/服务器)模式采集监控数据
  • Zabbix通过B/S(browser/server:浏览器/服务器)模式实现Web管理

Zabbix监控

  • 监控服务器

    监控服务器可以通过SNMPAgent采集数据

    数据可以写入MySQLOracle等数据库中

    服务器使用LNMP实现web前端管理

  • 被监控主机

    被监控主机需要安装Agent

    常见的网络设备一般支持SNMP

LNMP环境准备

安装前准备

  • 监控服务器(需要使用Web页面操作,因此需要先部署LNMP)

    设置主机名(zabbixserver)

    关闭防火墙、selinux

    设置IP(1.5)

  • 监控客户端(1.100和1.200)

    主机web1(1.100)

    主机web2(1.200)

    关闭防火墙、selinux

部署LNMP

  • 安装nginx及其依赖包
1
2
3
4
5
6
7
8
[root@zabbixserver ~]# yum install gcc pcre-devel openssl-devel make -y
[root@zabbixserver ~]# tar xf nginx-1.12.2.tar.gz
[root@zabbixserver ~]# cd nginx-1.12.2/
[root@zabbixserver ~]# ./configure --with-http_ssl_module
[root@zabbixserver ~]# make && make install

# 安装mariadb和php
[root@zabbixserver ~]# yum install mariadb mariadb-server mariadb-devel.x86_64 php php-fpm php-mysql -y
  • 修改nginx配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@zabbixserver ~]# vim /usr/local/nginx/conf/nginx.conf

fastcgi_buffers 8 16k; # 缓存php生成的页面信息,8个16k
fastcgi_buffer_size 32k; # 缓存php生成的头部信息
fastcgi_connect_timeout 300; # 连接php超时时间
fastcgi_send_timeout 300; # 发送php请求的超时时间
fastcgi_read_timeout 300; # 读取请求的超时时间

location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[root@zabbixserver ~]# vim /usr/lib/systemd/system/nginx.service

[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target

[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target


[root@zabbixserver ~]# systemctl enable nginx.service
  • 启动服务
1
2
3
[root@zabbixserver ~]# systemctl start mariadb
[root@zabbixserver ~]# systemctl start php-fpm
[root@zabbixserver ~]# /usr/local/nginx/sbin/nginx
  • 测试页面
1
2
3
4
5
6
[root@zabbixserver ~]# cat /usr/local/nginx/html/test.php 
<?php
$i="192.168.1.5";
echo $i;
?>
# 浏览器访问测试

安装Zabbix

部署zabbix监控端服务器

安装软件

  • 安装源码zabbix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[root@zabbixserver ~]# yum  install net-snmp-devel libcurl-devel libevent-devel -y

[root@zabbixserver ~]# tar xf zabbix-3.4.4.tar.gz
[root@zabbixserver ~]# cd zabbix-3.4.4/
[root@zabbixserver zabbix-3.4.4]# ./configure \
> --enable-server --enable-proxy --enable-agent \
> --with-mysql=/usr/bin/mysql_config \ (which mysql_config)
> --with-net-snmp --with-libcurl
[root@zabbixserver zabbix-3.4.4]# make install

[root@zabbixserver ~]# ls /usr/local/etc/
zabbix_agentd.conf zabbix_proxy.conf zabbix_server.conf
zabbix_agentd.conf.d zabbix_proxy.conf.d zabbix_server.conf.d

[root@zabbixserver ~]# ls /usr/local/bin/
zabbix_get zabbix_sender

[root@zabbixserver ~]# ls /usr/local/sbin/
zabbix_agentd zabbix_proxy zabbix_server

初始化准备

  • 创建数据库与数据库账户
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@zabbixserver ~]# mysql
MariaDB [(none)]> CREATE DATABASE zabbix CHARACTER SET utf8;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> GRANT ALL ON zabbix.* TO zabbix@'localhost' IDENTIFIED BY 'zabbix';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> USE zabbix;
Database changed

MariaDB [zabbix]> SOURCE /root/zabbix-3.4.4/database/mysql/schema.sql;

MariaDB [zabbix]> SOURCE /root/zabbix-3.4.4/database/mysql/images.sql;

MariaDB [zabbix]> SOURCE /root/zabbix-3.4.4/database/mysql/data.sql;
  • 上线Zabbix页面
1
2
3
[root@zabbixserver ~]# cd zabbix-3.4.4/frontends/php/
[root@zabbixserver php]# cp -a * /usr/local/nginx/html/
[root@zabbixserver php]# chmod -R 777 /usr/local/nginx/html/*
  • 浏览器访问192.168.1.5/index.php
  • 点击Next step

1.png

  • 安装依赖软件
1
[root@zabbixserver ~]# yum install php-gd php-xml php-ldap php-bcmath php-mbstring -y
  • 修改PHP配置文件
1
2
3
4
5
6
7
8
[root@zabbixserver ~]# vim /etc/php.ini
# 修改
date.timezone = Asia/Shanghai # 设置时区
max_execution_time = 300 # 最大执行时间,秒
post_max_size = 32M # POST数据最大容量
max_input_time = 300 # 服务器接收数据的时间限制

[root@zabbixserver ~]# systemctl restart php-fpm
  • Back之后再次Next step

2.png

  • 没有报错之后再次点击Next step
  • 配置数据库

3.png

  • 不用添加名字,直接下一步

4.png

5.png

  • 下一步完成安装

6.png

  • 点击Finish完成,跳转登录页面
  • 默认用户admin密码zabbix

7.png

启动服务

  • 修改配置文件
1
2
3
4
5
6
[root@zabbixserver ~]# vim /usr/local/etc/zabbix_server.conf
LogFile=/tmp/zabbix_server.log # 设置日志
DBHost=localhost # 数据库主机
DBName=zabbix # 数据库名称
DBUser=zabbix # 数据库账户
DBPassword=zabbix # 数据库密码
  • 启动服务
1
2
3
4
5
[root@zabbixserver ~]# useradd zabbix	# 不创建用户无法启动
[root@zabbixserver ~]# zabbix_server # 启动服务

[root@zabbixserver ~]# netstat -untpl | grep :10051
tcp 0 0 0.0.0.0:10051 0.0.0.0:*

开机自启

  • zabbix_server设置为开机自启服务

    /etc/rc.local为开机会执行的脚本文件

    可以将任意命令写入该脚本文件,开机时就会被执行

    该文件默认没有可执行权限

1
2
3
[root@zabbixserver ~]# echo "zabbix_server" >> /etc/rc.local 
[root@zabbixserver ~]# echo "zabbix_agentd" >> /etc/rc.local
[root@zabbixserver ~]# chmod +x /etc/rc.local

部署Zabbix被监控端服务器

配置被监控主机

  • 安装软件
1
2
3
4
5
6
7
8
9
[root@web1 ~]# yum install gcc pcre-devel autoconf -y
[root@web1 ~]# tar xf zabbix-3.4.4.tar.gz
[root@web1 ~]# cd zabbix-3.4.4/
[root@web1 zabbix-3.4.4]# ./configure --enable-agent
[root@web1 zabbix-3.4.4]# make install

[root@web1 ~]# ls /usr/local/etc/
[root@web1 ~]# ls /usr/local/bin/
[root@web1 ~]# ls /usr/local/sbin/
  • 修改配置文件
1
2
3
4
[root@web1 ~]# vim /usr/local/etc/zabbix_agentd.conf
Server=127.0.0.1,192.168.1.5 # 允许访问服务器列表
ServerActive=192.168.1.5:10051 # 监控服务器IP地址
LogFile=/tmp/zabbix_agentd.log # 日志文件

启动服务

1
2
3
4
[root@web1 ~]# useradd zabbix
[root@web1 ~]# zabbix_agentd
[root@web1 ~]# netstat -untpl | grep 10050
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 18716/zabbix_agentd

开机自启

1
2
[root@web1 ~]# echo zabbix_agentd >> /etc/rc.local 
[root@web1 ~]# chmod +x /etc/rc.local

基础监控

添加监控主机

  • Host(主机)是监控的基本载体
  • Zabbix所有监控都是基于Host
  • 通过Configuration > Hosts > Create Host创建

8.png

应用监控模板

  • 为主机添加关联的监控模板

    在“Template”模板选项卡页面中

    找到Link new templatesselect选择合适的模板添加

    选择Template OS Linux模板

9.png

查看监控数据

  • 可以点击Monitoring > Latest data
  • 在过滤器中填写条件,根据群组和主机搜索即可

10.png

  • 找到需要的数据,点击后面的Graph
  • 可查看图形化监控数据

11.png

自定义监控

自定义key

  • 被监控端修改Agent配置文件
1
2
3
4
[root@web1 ~]# vim /usr/local/etc/zabbix_agentd.conf
UnsafeUserParameters=1 # 是否允许自定义支持特殊符号
Include=/usr/local/etc/zabbix_agentd.conf.d/
# 主配置文件会自动加载该目录下所有配置文件
  • 创建自定义key
1
2
3
4
5
6
[root@web1 ~]# cd /usr/local/etc/zabbix_agentd.conf.d/
# 创建文件
[root@web1 zabbix_agentd.conf.d]# vim count.line.passwd

UserParameter=count.line.passwd,sed -n '$=' /etc/passwd
# 关键字 = 名字(自定义),监控命令[可以是脚本] (监控用户数量)结尾的行号
  • 重启Agentd
1
2
3
4
yum provides "*killall"	# 查询哪个软件包提供killall命令
[root@web1 ~]# yum install psmisc.x86_64 -y
[root@web1 ~]# killall zabbix_agentd
[root@web1 ~]# zabbix_agentd
  • 测试自定义key是否生效
1
2
3
4
5
6
7
[root@web1 ~]# zabbix_get -s 127.0.0.1 -k count.line.passwd
20

# 如果提示Check access restrictions in Zabbix agent configuration
# 则需要检查配置文件/usr/local/etc/zabbix_agentd.conf
Server=127.0.0.1,192.168.1.5
ServerActive=127.0.0.1,192.168.1.5

概念

  • 要想在zabbix web页面中可以看见,每隔一段时间就自动获取数据
  • 监控模板 > 应用集 > 监控项

12.png

创建监控模板

  • 登录监控服务器web管理页面
  • 选择Configuration > Templates创建模板

13.png

14.png

  • 创建应用集

15.png

16.png

  • 创建监控项

17.png

  • 创建图形

18.png

绑定主机

  • 配置 > 主机 > web1

19.png

  • 在最新数据中查看(web1创建几个用户测试)

20.png

拓扑图与聚合图形

拓扑图

  • 绘制拓扑图可以快速了解服务器架构
  • Monitoring > Maps(拓扑图)
  • 选择默认的Local network拓扑图,编辑即可

21.png

22.png

  • 点击tuopu进行编辑
  • 添加图标,点击图标

23.png

24.png

聚合图形

  • 在一个页面显示多个数据图表,方便了解多组数据
  • Monitoring > Screens(聚合图形) > Create screen

25.png

26.png

  • 点击构造函数
  • 自己添加

27.png

28.png

自动发现

概述

  • 自动发现(Discovery)

    当Zabbix需要监控的设备越来越多,手动添加监控设备越来越有挑战

    此时,可以考虑使用自动发现功能

  • 自动发现可以实现

    发现主机、添加主机、添加主机到组、连接模板等

  • 自动发现流程

    创建自动发现规则

    创建Action动作(发现主机后执行什么动作)

    通过动作,执行添加主机,链接模板到主机等操作

部署被监控端主机web2

1
2
3
4
5
6
7
8
9
[root@web2 ~]# yum install -y gcc pcre-devel
[root@web2 ~]# tar xf zabbix-3.4.4.tar.gz
[root@web2 ~]# cd zabbix-3.4.4/
[root@web2 zabbix-3.4.4]# ./configure --enable-agent
[root@web2 zabbix-3.4.4]# make install

[root@web2 zabbix-3.4.4]# zabbix_agentd
[root@web2 zabbix-3.4.4]# echo zabbix_agentd >> /etc/rc.local
[root@web2 zabbix-3.4.4]# chmod +x /etc/rc.local

自动发现规则

  • 创建自动发现规则

    Configuration>Discovery>Create discovery rule

29.png

30.png

31.png

32.png

  • 添加完成,点击操作

33.png

  • 等待一分钟,查看

34.png

监控触发器

概念介绍

  • 自定义的监控项默认不会自动报警
  • 首页也不会提示错误
  • 需要配置触发器与报警动作才可以自动报警

35.png

  • 触发器(trigger)

    表达式,如内存不足300M,用户超过30个

    当触发条件发生后,会导致一个触发事件

    触发事件会执行某个动作

  • 动作(action)

    触发器的条件被触发后的行为

    可以是发送邮件、也可以是重启某个服务等

创建触发器

  • 通过Configuration>Templates
  • 选择模板点击后面的Triggers>Create trigger

36.png

触发器表达式

  • Expression表达式:触发异常的条件
1
2
{<server>:<key>.<function>(<parameter>)}<operator><constant>
{主机: key.函数(参数)}<表达式>常数
  • Expression表达式案例
1
2
3
4
5
6
7
8
# 0为最新数据,如果web1主机最新的CPU平均负载值大于5,则触发器状态Problem
{web1:system.cpu.load[all,avg1].last(0)}>5

# 5m为最近5分钟,根分区最近5分钟的最大容量小于10G,则状态进入Problem
{vfs.fs.size[/,free].max(5m)}<10G

# 0为最新状态,最新一次校验/etc/passwd如果与上一次有变化,则状态进入Problem
{vfs.file.cksum[/etc/passwd].diff(0)}>0
  • 大多数函数使用秒作为参数,使用#代表不同含义
  • avg、count、last、min ans max函数支持额外的第二个参数time_shift(时间偏移量)
  • 这个参数允许从过去一段时间内引用数据
函数内容 描述
sum(600) 600秒内所有值的总和
sum(#5) 最后5个值的总和
last(20) 最后20秒的值
last(#5) 倒数第5个值
avg(1h, 1d) 一天前的一小时的平均值

37.png

38.png

报警邮件

设置邮件

  • 创建Media

  • 设置邮件服务器

  • Administration>Media Type>选择Email邮件

  • 设置邮件服务器信息

39.png

40.png

  • 为账户添加Media
  • Administration>Users>Admin

41.png

42.png

创建动作

  • Action
  • 定义当触发器被触发时,执行什么Action
  • 通过Configuration>Actions>Create action创建

43.png

44.png

45.png

测试

  • 创建用户使用户数量超过20
1
2
3
4
5
6
7
8
9
[root@web1 ~]# wc -l /etc/passwd
20 /etc/passwd
[root@web1 ~]# for i in {1..10}
do
useradd test$i
done
[root@web1 ~]# wc -l /etc/passwd
30 /etc/passwd

  • 监控主机查看邮件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[root@zabbixserver ~]# yum install -y mailx

[root@zabbixserver ~]# mail
Heirloom Mail version 12.5 7/5/10. Type ? for help.
"/var/spool/mail/root": 2 messages
> 1 root@localhost.local Sat Jul 1 21:07 21/849 "Problem: passwd_line_gt"
2 root@localhost.local Sat Jul 1 21:08 21/849 "Problem: passwd_line_gt"
&
Message 1:
From root@localhost.localdomain Sat Jul 1 21:07:50 2023
Return-Path: <root@localhost.localdomain>
X-Original-To: root@localhost
Delivered-To: root@localhost.localdomain
From: <root@localhost.localdomain>
To: <root@localhost.localdomain>
Date: Sat, 01 Jul 2023 21:07:50 +0800
Subject: Problem: passwd_line_gt_20
Content-Type: text/plain; charset="UTF-8"
Status: RO

Problem started at 21:07:47 on 2023.07.01
Problem name: passwd_line_gt_20
Host: web1
Severity: Warning

46.png

主被动监控

概述

主动和被动都是对被监控端主机而言的

  • 默认zabbix采用的是被动监控

    被动监控: Server向Agent发起连接

    主动监控: Agent向Server发起连接

  • 区别

    Server不用每次需要数据都连接Agent,Agent会自己收集数据并处理数据

    Server仅需要保存数据即可

  • 被动监控

47.png

  • 主动监控

48.png

当监控主机达到一定量级后,Zabbix服务器会越来越慢

此时,可以考虑使用主动监控,释放服务器压力

​ 另外,Zabbix也支持分布式监控

主动 监控

  • 创建新的被监控主机
1
2
3
4
5
[root@web2 ~]# yum install -y gcc pcre-devel autoconf
[root@web2 ~]# tar xf zabbix-3.4.4.tar.gz
[root@web2 ~]# cd zabbix-3.4.4/
[root@web2 zabbix-3.4.4]# ./configure --enable-agent
[root@web2 zabbix-3.4.4]# make install
  • 修改配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@web2 ~]# vim /usr/local/etc/zabbix_agentd.conf
# Server=127.0.0.1,192.168.1.5 # 注释该行
StartAgents=0 # 禁止被动监控
ServerActive=192.168.1.5 # 监控服务器IP
Hostname=web2 # 告诉监控服务器,是谁发的数据,一定要和zabbixserver配置监控主机名称一致
RefreshActiveChecks=120 # 默认120秒检测一次

[root@web2 zabbix-3.4.4]# useradd zabbix
[root@web2 zabbix-3.4.4]# zabbix_agentd
[root@web2 zabbix-3.4.4]# echo zabbix_agentd >> /etc/rc.local
[root@web2 zabbix-3.4.4]# chmod +x /etc/rc.local

# 已经安装过,重启zabbix_agentd
[root@web2 ~]# yum install -y psmisc
[root@web2 ~]# killall zabbix_agentd
[root@web2 ~]# zabbix_agentd

克隆模板

  • 为了方便。克隆系统自带的模板

  • Configuration>Templates

    选择Template OS Linux

    全克隆该模板,新建一个新的模板

    新模板名称为Template OS Linux Active

49.png

50.png

51.png

修改监控项模式

  • 将模板中的所有监控项目全部修改为主动监控模式

    Configuration>Templates

    选择新克隆的模板,点击后面的Items(监控项)

    点击全选,点击批量更新

    将类型修改为Zabbix Agent(Active主动模式)

52.png

53.png

54.png

  • 把不支持主动监控的停用

55.png

  • 主机绑定模板

56.png

57.png

给web2写一个死循环

1
[root@web2 ~]# while :; do  echo a; done

58.png

监控Nginx

环境要求

  • 一台nginx服务器,部署nginx时要加载status模块
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@web1 ~]# yum install -y gcc pcre-devel openssl-devel
[root@web1 ~]# tar xf nginx-1.17.6.tar.gz
[root@web1 ~]# cd nginx-1.17.6/
[root@web1 nginx-1.17.6]# ./configure --with-http_stub_status_module
[root@web1 nginx-1.17.6]# make && make install

[root@web1 ~]# vim /usr/local/nginx/conf/nginx.conf
server {
... ...
location /status {
stub_status on;
}
... ...
}
[root@web1 ~]# /usr/local/nginx/sbin/nginx
[root@web1 ~]# curl http://192.168.1.100/status
Active connections: 1
server accepts handled requests
1 1 1
Reading: 0 Writing: 1 Waiting: 0

自定义监控key

  • 语法格式

    UserParameter=key,command

    UserParameter=key[*],<command>

    key里的所有参数,都会传递给后面命令的位置

1
2
3
4
例如:
UserParameter=ping[*],echo $1
ping[0], 返回结果都是0
ping[aaa], 返回结果都是aaa
  • 被监控端修改配置文件

    注意要允许自定义key并设置Inclued

1
2
3
4
5
[root@web1 ~]# vim /usr/local/etc/zabbix_agentd.conf.d/nginx.status
UserParameter=nginx.status[*],/usr/local/bin/nginx_status.sh $1

[root@web1 ~]# killall zabbix_agentd
[root@web1 ~]# zabbix_agentd
  • 编写脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[root@web1 ~]# vim /usr/local/bin/nginx_status.sh

#!/bin/bash
case $1 in
active)
curl -s http://127.0.0.1/status | awk '/Active/{print $NF}';;
waiting)
curl -s http://127.0.0.1/status | awk '/Waiting/{print $NF}';;
accepts)
curl -s http://127.0.0.1/status | awk 'NR==3{print $2}';;
esac

[root@web1 ~]# chmod +x /usr/local/bin/nginx_status.sh
[root@web1 ~]# zabbix_get -s 127.0.0.1 -k 'nginx.status[accepts]'
14
[root@web1 ~]# zabbix_get -s 127.0.0.1 -k 'nginx.status[active]'
1
[root@web1 ~]# zabbix_get -s 127.0.0.1 -k 'nginx.status[waiting]'
0

监控nginx

  • 在监控服务器,添加监控项目item

    Configuration>Hosts>点击主机后面的items

    点击Create item

59.png

60.png

61.png

监控网络连接状态

TCP连接状态

  • 建立连接的3次握手

62.png

  • 断开连接的4次握手

63.png

查看网络连接状态

  • 模拟多人并发连接(如果没有命令则需要安装httpd-tools)
1
2
[root@web1 ~]# yum install -y httpd-tools
[root@web1 ~]# ab -c 1000 -n 100000 http://192.168.1.100/
  • 查看网络连接状态

    第二列为状态信息

1
2
3
4
5
6
7
[root@web1 ~]# ss -antup
-a 显示所有
-t 显示TCP连接状态
-u 显示UDP连接状态
-n 已数字形式显示端口号和IP地址
-p 显示连接对应的进程名称
-l 只显示LISTEN状态

自定义监控key

  • 被监控端修改配置文件

    注意要允许自定义key并设置Include

1
2
3
4
5
[root@web1 ~]# vim /usr/local/etc/zabbix_agentd.conf.d/net.status
UserParameter=net.status[*],/usr/local/bin/net_status.sh $1

[root@web1 ~]# killall zabbix_agentd
[root@web1 ~]# zabbix_agentd
  • 创建脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@web1 ~]# vim /usr/local/bin/net_status.sh

#!/bin/bash
case $1 in
estab)
ss -antp | awk 'BEGIN{x=0} /^ESTAB/{x++} END{print x}';;
close_wait)
ss -antp | awk 'BEGIN{x=0} /^CLOSE-WAIT/{x++} END{print x}';;
time_wait)
ss -antp | awk 'BEGIN{x=0} /^TIME-WAIT/{x++} END{print x}';;
esac

[root@web1 ~]# zabbix_get -s 127.0.0.1 -k 'net.status[time_wait]'
40
[root@web1 ~]# zabbix_get -s 127.0.0.1 -k 'net.status[close_wait]'
0
[root@web1 ~]# zabbix_get -s 127.0.0.1 -k 'net.status[estab]'
3

监控netstatus

  • 在监控服务器,天界监控项目item

    Configuration>Hosts>点击主机后面的items

    点击Create item

64.png

65.png

  • ab模拟并发访问
1
[root@web1 ~]# ab -c 1000 -n 100000 http://192.168.1.100/

66.png