当前位置: 首页 > news >正文

day061-全网监控

文章目录

  • 0. 老男孩思想-人生四行
  • 1. 面试题:使用监控服务,监控了什么?
    • 1.1 按照用户访问顺序监控
    • 1.2 安装服务器层次监控
  • 2. 监控DNS
    • 2.1 监控脚本
    • 2.2 添加键值
    • 2.3 前端定义监控
  • 3. 监控域名和ssl证书过期时间
    • 3.1 监控脚本
    • 3.2 添加键值
    • 3.3 前端定义监控
  • 4. 云监控-拨测工具
  • 5. 监控tengine
    • 5.1 配置nginx自带状态监控
    • 5.2 前端配置tengine自定义监控
    • 5.3 为模板监控项增添标记
    • 5.4 修改监控项(相关项)
      • 5.4.1 [Get stub status page](javascript:void(0)): [Version](javascript:void(0))
      • 5.4.2 [Get stub status page](javascript:void(0)): [Requests total](javascript:void(0))
      • 5.4.3 [Get stub status page](javascript:void(0)): [Requests per second](javascript:void(0))
      • 5.4.4 [Get stub status page](javascript:void(0)): [Connections dropped per second](javascript:void(0))
    • 5.5 主机增添模板
  • 6. 负载均衡监控
    • 6.1 配置负载均衡参数
    • 6.2 编写监控脚本
    • 6.3 添加键值
  • 7. 监控keepalived是否切换
    • 7.1 编写脚本
    • 7.2 添加键值
  • 8. 监控nginx日志状态码
    • 8.1 编写脚本
    • 8.2 添加键值
  • 9. web场景监控
    • 9.1 前端配置web监测
    • 9.2 添加触发器
  • 10. php服务监控
    • 10.1 添加nginx监控配置参数
    • 10.2 修改php配置文件
    • 10.3 cul测试
    • 10.4 修改php模板
  • 11. 数据库监控
  • 12. 思维导图

0. 老男孩思想-人生四行

判断自己有没有能力,就看有几个“行”!

(1)自己要行

(2)要有人认为你行

(3)认为你行的人也很行

(4)身体要行

在这里插入图片描述

1. 面试题:使用监控服务,监控了什么?

  • 2个维度监控
  • 第1个维度:用户访问流程维度(数据流/业务流)
  • 第2个维度:某个层次上/某个服务器上具体监控的内容:模板+自定义监控
    • 物理层监控(风扇,温度,raid)
    • 系统层监控(cpu,内存,磁盘网络,负载…用户,软件包)
    • 服务监控(nginx,php,java,tomcat,db,…)
    • 代码/业务监控(web场景监控,curl/wget)
    • API接口监控

1.1 按照用户访问顺序监控

监控内容详细内容监控方案
DNS解析是否正常自定义监控—ping/dig/nslookup
域名:whois查看过期时间
SSL证书:openssl / curl -Lsv 查看域名证书过期时间
CDN缓存是否可用;
查看命中率
登录前端web页面:查看命中率、流量、带宽
分布式ping:
商业:监控宝、听云
免费网站:www.17ce.comping.chinaz.com
开源软件:smokeping
防火墙和网络设置监控流量、带宽、端口snmp协议
负载服务器nginx服务情况、证书过期时间、
网站访问量、并发情况
nginx/haproxy/keepalived服务状态:自定义模板
SSL证书:自定义监控、模板
网站访问量(运营):ip,pv,uv(网站第三方插件实现百度统计)、
matomo(php、piwiki)
并发量:统计80、443端口连接数
负载均衡健康检查模式:upstream_check、自定义监控
状态码数量/错误连接数:查看访问日志/错误日志
web服务器主要监控服务情况具体的服务使用对应的模板即可
nginx、tomcat、php、jar包
数据库redis/mysql使用模板即可
写入内容,读取写入的内容
存储服务NFS自定义监控:存储目前多少空间,能否使用;
模拟挂在,创建文件检查结果
备份备份的数据量自定义监控:系统是否有备份,发送邮件
  • ip:独立 IP 地址数
  • pv:独立访客数
  • uv:页面浏览量

1.2 安装服务器层次监控

监控内容详细内容具体实现方案
API接口监控监控指定的API接口,如zabbix api;
开发提供的内部接口、外部第三方接口
curl命令、web场景、监测
业务、应用、app监控检查应用是否可用,书写测试代码页面curl命令、web场景、监测
服务监控基本:进程、端口
专有:服务的状态
日志:错误日志(error/failed/exception)
模板或根据具体要求自定义监控
系统监控cpu、负载、内存、磁盘、网络、带宽、IO、
关键文件是否变化(aide)
僵尸进程
是否有非堡垒机登录
模板+自定义监控(僵尸进程,用户异地登录、
堡垒机登录、aide、hm、日志secure)
硬件监控温度、风扇转速、raid状态zabbix自带:ipmi/自定义监控
Linux命令:ipmitool/megacli

2. 监控DNS

  • 自定义监控

2.1 监控脚本

[root@lb01.oldboy.cn /server/scripts]# cat check_dns.sh
#!/bin/bash
##############################################################
# File Name:check_dns.sh
# Version:V1.0
# Author:SunKexu
# Organization:www.oldboyedu.com
# Desc:
##############################################################
#1.vars
url=$1#2.判断是否为域名
#2.检查nslookup命令是否存在
which  nslookup &>/dev/null || {yum install -y bind-utils
}
#3.检查
if nslookup $url &>/dev/null  ;then#输出1表示可以使用echo "1"
else#输出0echo "0"
fi

2.2 添加键值

[root@lb01.oldboy.cn ~]# cat /etc/zabbix/zabbix_agent2.d/dns.conf 
UserParameter=check.dns[*],/bin/bash   /server/scripts/check_dns.sh  "$1"

2.3 前端定义监控

在这里插入图片描述

在这里插入图片描述

3. 监控域名和ssl证书过期时间

3.1 监控脚本

[root@lb01.oldboy.cn /server/scripts]# cat check_https_expire.sh
#!/bin/bash
##############################################################
# File Name:check_https_expire.sh
# Version:V1.0
# Author:SunKexu
# Organization:www.oldboyedu.com
# Desc:
##############################################################
#1.vars
export LANG=en_US.UTF-8#检查域名过期
check_domain() {local expire_date=`whois  $url |egrep "Expiry|Expiration" |awk -F ": " '{print $2}'`local exprire_date_second=`date -d "${expire_date}" +%s`local date_second_now=`date +%s`local date_expire_days=`echo "(${exprire_date_second} - ${date_second_now} )/60/60/24" |bc`echo "$date_expire_days"}#检查证书过期
check_https() {#这里还可以加入curl判断.local expire_date=`curl -v https://www.$url  |& grep expire |awk -F ": |GMT" '{print $2}'`local exprire_date_second=`date -d "${expire_date}" +%s`local date_second_now=`date +%s`local date_expire_days=`echo "(${exprire_date_second} - ${date_second_now} )/60/60/24" |bc`echo "$date_expire_days"}#main
main() {choice=$1url=$2case "$choice" indomain)check_domain ;;https)check_https  ;;esac
}main $*

3.2 添加键值

[root@lb01.oldboy.cn /server/scripts]# cat /etc/zabbix/zabbix_agent2.d/dns.conf 
UserParameter=check.dns[*],/bin/bash   /server/scripts/check_dns.sh  "$1"
UserParameter=check.domain_https[*],sudo sh /server/scripts/check_https_expire.sh  "$1"   "$2"

3.3 前端定义监控

在这里插入图片描述

在这里插入图片描述

4. 云监控-拨测工具

  • 地址:[云监控控制台](https://cloudmonitornext.console.aliyun.com/disposableTest)

在这里插入图片描述

5. 监控tengine

5.1 配置nginx自带状态监控

[root@lb01.oldboy.cn /server/scripts]# nginx -version
Tengine version: Tengine/3.1.0
nginx version: nginx/1.24.0# 为默认域名配置监控状态参数
[root@lb01.oldboy.cn /server/scripts]# cat /etc/nginx/conf.d/default.conf 
server {listen       80 default_server;server_name  localhost;default_type text/plain;location / {#return 200 "website is ok";index index.html;}location /status {#allow 221.218.213.9 ;allow 127.0.0.1;allow 10.0.0.1;allow 172.16.1.0/24;deny all;stub_status;}
}

在这里插入图片描述

5.2 前端配置tengine自定义监控

  • zabbix自带nginx监控模板,直接修改nginx模板即可

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

5.3 为模板监控项增添标记

  • 标记就是类型

在这里插入图片描述

在这里插入图片描述

5.4 修改监控项(相关项)

在这里插入图片描述

  • 主要项的键值:web.page.get["{$NGINX.STUB_STATUS.HOST}","{$NGINX.STUB_STATUS.PATH}","{$NGINX.STUB_STATUS.PORT}"]
    • 相当于:
[root@lb01.oldboy.cn ~]# zabbix_agent2 -t web.page.get["172.16.1.5","/status","80"]
web.page.get[172.16.1.5,/status,80]           [s|
HTTP/1.1 200 OK
Connection: close
Content-Length: 116
Content-Type: text/plain
Date: Sat, 26 Jul 2025 12:36:47 GMT
Server: Tengine/3.1.0Active connections: 1 
server accepts handled requests request_time178 178 66 0
Reading: 0 Writing: 1 Waiting: 0 
]

5.4.1 [Get stub status page](javascript:void(0)): [Version](javascript:void(0))

在这里插入图片描述

在这里插入图片描述

  • Server: Tengine/(.*)

5.4.2 [Get stub status page](javascript:void(0)): [Requests total](javascript:void(0))

  • tengine接收到客户端请求的连接数

在这里插入图片描述

  • server accepts handled requests request_time\s+([0-9]+) ([0-9]+) ([0-9]+) ([0-9]+)
  • 正则表达式:‘\s+’,表示匹配空白字符
    • 空格
    • 制表符:\t
    • 换行符:\n
    • 回车符:\r

5.4.3 [Get stub status page](javascript:void(0)): [Requests per second](javascript:void(0))

  • 每秒tengine接收到客户端请求的连接数
  • 跟上面的正则表达式相同,只是zabbix多了一个处理行为,可以计算每秒更改的数值,即每秒的请求量

在这里插入图片描述

5.4.4 [Get stub status page](javascript:void(0)): [Connections dropped per second](javascript:void(0))

  • tengine连接失败次数:请求数量-处理数量

在这里插入图片描述

5.5 主机增添模板

在这里插入图片描述

6. 负载均衡监控

  • 监控web节点的可用性

6.1 配置负载均衡参数

[root@lb01.oldboy.cn /etc/nginx/conf.d]# cat lb.oldboy.cn.conf 
# 创建分组/池塘
# 分组名字唯一
upstream lb_pools {server 10.0.0.7:80 weight=3;server 10.0.0.8:80 weight=1;
}
server {listen 80;server_name lb.oldboy.cn;access_log /var/log/nginx/lb.oldboy.cn-access.log main;error_log /var/log/nginx/lb.oldboy.cn-error.log notice;root /app/code/lb;location / {proxy_pass http://lb_pools;proxy_set_header Host $http_host;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Real-Ip $remote_addr;}location /lb_status {allow 10.0.0.1;allow 172.16.1.0/24;deny all;check_status;}
}

在这里插入图片描述

  • 写命令或脚本时,需要过滤页面的值,使用csv格式
    • uri:/lb_status?format=csv

在这里插入图片描述

6.2 编写监控脚本

[root@lb01.oldboy.cn /server/scripts]# cat check_lb_pools.sh
#!/bin/bash
############################################
##############
# File Name:/server/scripts/check_lb_pools.sh
# Version:V1.0
# Author:oldboy lidao996
# Organization:www.oldboyedu.com
# Desc:检查负载均衡 每组里面的情况
################################################
#############1.vars
url=$1#2.统计负载均衡后端服务器挂掉的数量
total=`curl -s -H Host:${url} localhost/lb_status?format=csv |wc -l`
up=`curl -s -H Host:${url} localhost/lb_status?format=csv |grep -wi up |wc -l`
echo "scale=2; $up / $total * 100" |bc -l

6.3 添加键值

[root@lb01.oldboy.cn ~]# cat /etc/zabbix/zabbix_agent2.d/lb.conf
UserParameter=check.lb[*],sudo bash /server/scripts/check_lb_pools.sh "$1"
  • 配置前端监控项……

7. 监控keepalived是否切换

  • 在负载均衡的备用节点监控是否有vip即可

7.1 编写脚本

  • 在备用节点
[root@lb02.oldboy.cn /server/scripts]# cat chk_vip.sh
#!/bin/bash
##############################################################
# File Name:/server/scripts/chk_vip.sh
# Version:V1.0
# Author:SunKexu
# Organization:www.oldboyedu.com
# Desc:监控keepalived是否切换
##############################################################
#1.vars
vip=$1#2.过滤
vip_cnt=`ip a |grep -w "${vip}" |wc -l`#3.判断
if [ $vip_cnt -gt 0 ];then# keepalived已经切换echo 1
else# keepalived未切换echo 0
fi

7.2 添加键值

[root@lb02.oldboy.cn ~]# cat /etc/zabbix/zabbix_agent2.d/keepalived.conf
UserParameter=keepalived.vip[*],sudo bash /server/scripts/chk_vip.sh "$1"
  • 配置前端监控项,定义一个触发器

8. 监控nginx日志状态码

8.1 编写脚本

[root@lb01.oldboy.cn ~]# cat /server/scripts/check_ngx_access_log.sh
#!/bin/bash
##############################################################
# File Name:/server/scripts/check_ngx_access_log.sh
# Version:V1.0
# Author:SunKexu
# Organization:www.oldboyedu.com
# Desc:计算不同状态码数量
##############################################################
#1.vars
access_files="/var/log/nginx/access.log"
code=$1
#2.casecase "$code" in200) awk '{print $9}' $access_files |grep -w "200"|wc -l ;;206) awk '{print $9}' $access_files |grep -w "206"|wc -l ;;301) awk '{print $9}' $access_files |grep -w "301"|wc -l ;;302) awk '{print $9}' $access_files |grep -w "302"|wc -l ;;304) awk '{print $9}' $access_files |grep -w "302"|wc -l ;;400) awk '{print $9}' $access_files |grep -w "400"|wc -l ;;401) awk '{print $9}' $access_files |grep -w "401"|wc -l ;;403) awk '{print $9}' $access_files |grep -w "403"|wc -l ;;404) awk '{print $9}' $access_files |grep -w "404"|wc -l ;;405) awk '{print $9}' $access_files |grep -w "405"|wc -l ;;413) awk '{print $9}' $access_files |grep -w "413"|wc -l ;;500) awk '{print $9}' $access_files |grep -w "500"|wc -l ;;502) awk '{print $9}' $access_files |grep -w "502"|wc -l ;;503) awk '{print $9}' $access_files |grep -w "503"|wc -l ;;504) awk '{print $9}' $access_files |grep -w "504"|wc -l ;;
esac

8.2 添加键值

[root@lb01.oldboy.cn ~]# cat /etc/zabbix/zabbix_agent2.d/ngx.conf
UserParameter=nginx.log.status[*],sudo bash /server/scripts/check_ngx_access_log.sh "$1"
  • 配置前端监控项,脚本中有多少个http状态码就要定义多少个监控项

9. web场景监控

  • zabbix的web场景监控相当于执行curl或wget
  • 用于监控web节点的页面或url请求是否正常

9.1 前端配置web监测

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

9.2 添加触发器

在这里插入图片描述

10. php服务监控

10.1 添加nginx监控配置参数

[root@web01.oldboy.cn /etc/nginx/conf.d]# cat default.conf
server {listen       80 default_server;server_name  localhost;default_type text/plain;location / {#return 200 "website is ok";index index.html;}location /php_status {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_ping {fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}
}

10.2 修改php配置文件

  • 路径要与nginx监控的url路径相同
[root@web01.oldboy.cn ~]# grep -En '^pm.stat|^ping' /etc/php-fpm.d/www.conf
240:pm.status_path = /php_status
252:ping.path = /php_ping
257:ping.response = pong

10.3 cul测试

[root@web01.oldboy.cn ~]# curl  10.0.0.7/php_status
pool:                 www
process manager:      dynamic
start time:           26/Jul/2025:22:57:24 +0800
start since:          52
accepted conn:        13
listen queue:         0
max listen queue:     0
listen queue len:     128
idle processes:       5
active processes:     1
total processes:      6
max active processes: 1
max children reached: 0
slow requests:        0
[root@web01.oldboy.cn ~]# curl 10.0.0.7/php_ping
pong
[root@web01.oldboy.cn ~]# 

10.4 修改php模板

  • zabbix自带php模板,修改一下即可

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

11. 数据库监控

  • zabbix自带mysql数据库监控模板
  • mysql需创建一个具有可读权限的用户:grant all on *.* to 'zabbix@localhost' identified by '1';

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

12. 思维导图

https://kdocs.cn/join/gpuxq6r?f=101\r\n邀请你加入共享群「老男孩教育Linux运维99期-孙克旭」一起进行文档协作

http://www.dtcms.com/a/300864.html

相关文章:

  • 【科研绘图系列】R语言绘制边际云雨图散点图
  • 【unitrix】 6.17 基本非负整数( BaseUnsigned )特质(base_unsigned.rs)
  • 【笔记】拉乌尔定律推导
  • 获取电脑主板的 通用唯一标识符(UUID)
  • C++学习(线程相关)
  • Git+宝塔面板部署Hugo博客
  • 【橘子分布式】gRPC(番外篇-客户端重试机制)
  • 五自由度磁悬浮轴承转子不平衡振动破壁战:全息前馈控制实战密码
  • 【DataWhale】快乐学习大模型 | 202507,Task08笔记
  • STM32移植LVGL9.2.1教程
  • 视频转GIF工具,一键批量制作高清动图
  • CLAP文本-音频基础模型: LEARNING AUDIO CONCEPTS FROM NATURAL LANGUAGE SUPERVISION
  • 设计模式(四)创建型:生成器模式详解
  • 设计模式(三)创建型:抽象工厂模式详解
  • 第五章第二节 对射式红外传感器计次旋转编码器计次
  • 8.c语言指针
  • 标签驱动的可信金融大模型训练全流程-Agentar-Fin-R1工程思路浅尝
  • AI驱动的金融推理:Fin-R1模型如何重塑行业决策逻辑
  • JSON格式化与结构对比
  • 2025年量子计算与前沿技术融合:六大变革性方向深度解析
  • Rust实战:高效开发技巧
  • 02人工智能中优雅草商业实战项目视频字幕翻译以及声音转译之以三方AI模型API制作方式预算-卓伊凡|莉莉
  • 【在Unity游戏开发中Dictionary、List介绍】
  • 基于Springboot+UniApp+Ai实现模拟面试小工具七:前端项目创建及框架搭建
  • 深入理解 Spring 中的 XmlBeanFactory 原理及实践
  • 【最新版】防伪溯源一体化管理系统+uniapp前端+搭建教程
  • ArKTS:List 数组
  • 机器学习特征选择 explanation and illustration of ANOVA
  • ROS2总结(二)
  • UDS 0x29 身份验证服务 Authentication service