IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 三、Zabbix应用服务监控-Nginx -> 正文阅读

[系统运维]三、Zabbix应用服务监控-Nginx

1.Zabbix监控Nginx

1.1 监控Nginx什么内容

    1. 监控Nginx状态(stub_status)
    1. 监控进程存活,端口探测;(设定触发器)
    1. 监控Nginx访问日志(建议使用ELK)
    1. 监控Nginx错误日志(设定触发器)

1.2 如何监控Nginx状态

    1. 启用Nginx stub_status状态模块
    1. 使用curl命令获取stub_status状态模块
    1. 将获取nginx状态的数据方法封装为监控项

1.3 Nginx状态监控

1.3.1 环境准备

角色IP
Zabbix-Server192.168.20.46
web192.168.20.47

1.3.2 启用Nginx状态模块

[root@web01 ~]# cat /home/app/nginx/conf.d/status.panpancar.com.conf 
server {
    listen 80;
    server_name status.panpancar.com;


    location /ngx_status {
	stub_status;
	access_log off;
	allow 127.0.0.1;
	deny all;

    }
}

1.3.3 编写采集状态脚本

  1. 测试访问状态模块是否正常
[root@web01 nginx]# curl -H Host:status.panpancar.com 127.0.0.1/ngx_status
Active connections: 1 
server accepts handled requests
 12 12 12 
Reading: 0 Writing: 1 Waiting: 0 

Nginx状态解析:
Active connections     活跃连接数
accepts                总的TCP连接数
handled                已处理的TCP连接数
requests               已处理的请求数
Reading                已发送的Header数 
Writing                已接收的Header数 
Waiting                等待连接数 
Keep-alive的情况下,Waiting这个值等于active - (reading + writing)
请求丢失数=(握手数-连接数)可以看出,本次连接状态显示没有丢失请求
  1. 编写取值脚本
[root@web01 ~]# cat  /etc/zabbix/zabbix_agent2.d/nginx_status.sh 
#!/bin/bash

domain="status.panpancar.com"
uri_path=/ngx_status


case $1 in
    active)
	curl -s -HHost:${domain} http://127.0.0.1/${uri_path} | awk 'NR==1 {print $NF}'
	;;

    accepts)
	curl -s -HHost:${domain} http://127.0.0.1/${uri_path} | awk 'NR==3 {print $1}'
	;;
    handled)
	curl -s -HHost:${domain} http://127.0.0.1/${uri_path} | awk 'NR==3 {print $2}'
	;;
    requests)
	curl -s -HHost:${domain} http://127.0.0.1/${uri_path} | awk 'NR==3 {print $3}'
	;;
    Reading)
	curl -s -HHost:${domain} http://127.0.0.1/${uri_path} | awk 'NR==4 {print $2}'
	;;
    Writing)
	curl -s -HHost:${domain} http://127.0.0.1/${uri_path} | awk 'NR==4 {print $4}'
	;;
    Waiting)
	curl -s -HHost:${domain} http://127.0.0.1/${uri_path} | awk 'NR==4 {print $6}'
	;;
    *)
	echo "Usage $0 { active|accepts|handled|requests|Reading|Writing|Waiting}"
esac 

1.3.4 添加自定义的监控项

[root@web01 ~]# cat /etc/zabbix/zabbix_agent2.d/nginx_status.conf 
UserParameter=nginx.status[*],/bin/bash /etc/zabbix/zabbix_agent2.d/nginx_status.sh $1

[root@web01 ~]# /etc/init.d/zabbix-agent2 restart
Shutting down Zabbix agent 2:                              [确定]
Starting Zabbix agent 2: 

1.3.5 服务端测试取值

[root@zabbix-server ~]# zabbix_get -s 192.168.20.47 -k nginx.status[active] 
1
[root@zabbix-server ~]# zabbix_get -s 192.168.20.47 -k nginx.status[requests] 
28

1.3.6 配置Zabbix-web

1.创建模版
在这里插入图片描述

2.创建监控项
在这里插入图片描述

3.创建图形
在这里插入图片描述

4.创建触发器(设定监控项)
在这里插入图片描述

5.关联对应主机
在这里插入图片描述
在这里插入图片描述

访问测试脚本
[root@web01 ~]# cat curl.sh 
#!/bin/bash


index=0

while true
do
	index=[ $index+1 ]
	for i in $(seq $(echo $RANDOM));
	do
		curl http://192.168.20.47 &> /dev/null
	done

	sleep 2
	if [ $index -eq 200 ];then
		exit
	fi
done

1.4 Nginx错误日志监控实践

1.4.1 如何监控错误日志

使用zabbix内置的log监控模块完成监控

  • log[file,<regexp>,<encoding>,<maxlines>,<mode>,<output>,<maxdelay>,<options>]
    • file: 文件要绝对路径
    • regexp: 要匹配的关键字,可以使用正则表达式
    • maxlines: 发送的行数,默认配置文件定义为20行
    • mode: 可填参数:all(默认),skip(跳过旧数据)
    • output: 自定义格式输出,默认输出regexp匹配的整行数据

1.4.2 配置Agent为主动模式

[root@web01 ~]# vim /etc/zabbix/zabbix_agent2.conf
ServerActive=192.168.20.46
[root@web01 ~]# /etc/init.d/zabbix-agent2 restart
Shutting down Zabbix agent 2:                              [确定]
Starting Zabbix agent 2: 

1.5.3 添加监控项

log这个key是存在主动模式下

key:log[“/home/app/nginx/logs/error.log”,(error|alert|emerg),skip,]
在这里插入图片描述
在这里插入图片描述

1.5.4 配置触发器

发现error,并且日志有数据则触发警告
恢复:没有发现error,并且日志60秒内没有新数据
在这里插入图片描述

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-09-04 01:48:04  更:2022-09-04 01:50:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 19:25:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计