nginx编译安装 zabbix自定义监控nginx

简介:

#

#zabbix自定义监控项监控Nginx

#

#

#系统版本:

[root@zabbix_2 ~]# cat /etc/redhat-release 
CentOS Linux release 7.2.1511 (Core)
主机名:zabbix_1 角色:zabbix-server IP地址:192.168.174.136
主机名:zabbix_2 角色:zabbix-agent

IP地址:192.168.174.137

#                                      均关闭防火墙和selinux


#编译安装Nginx    

#Nginx 下载地址:http://mirrors.sohu.com/nginx/  pcre :http://down.linuxprobe.com/Tools/pcre-8.35.tar.gz

#上传nginx 和pcre 到zabbix_2主机上

#编译安装依赖包

[root@zabbix_2 ~]# ls
anaconda-ks.cfg  nginx-1.8.1.tar.gz  pcre-8.35.tar.gz
[root@zabbix_2 ~]# yum install -y gcc-c++  openssl-devel  zlib-devel
[root@zabbix_2 ~]# tar -xf pcre-8.35.tar.gz 
[root@zabbix_2 ~]# cd pcre-8.35/
[root@zabbix_2 pcre-8.35]# ./configure  --prefix=/usr/local/pcre/
[root@zabbix_2 pcre-8.35]# make && make install


#编译安装 Nginx

[root@zabbix_2 nginx-1.8.1]# useradd -s /sbin/nologin -M nginx
[root@zabbix_2 nginx-1.8.1]# cd nginx-1.8.1/
[root@zabbix_2 nginx-1.8.1]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module  --with-http_stub_status_module
[root@zabbix_2 nginx-1.8.1]# make && make install
#./configure --help  查看参数
#启动nginx 
[root@zabbix_2 ~]# /usr/local/nginx/sbin/nginx


#启动成功,如图所示

wKioL1jtfpfBxTxFAABmEPPH_40726.png

#修改 nginx.conf

[root@zabbix_2 ~]# vim /usr/local/nginx/conf/nginx.conf 
#添加如下内容
[root@zabbix_2 ~]# sed -n '47,52p' /usr/local/nginx/conf/nginx.conf
location /status {
stub_status on;
access_log off;
allow 192.168.174.0/24;
deny all;
}

#测试配置文件是否正确

[root@zabbix_2 ~]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

#重启nginx

[root@zabbix_2 ~]# /usr/local/nginx/sbin/nginx -s reload

#访问

wKioL1jtlG3jbnCTAAAYYHFIKLU455.png



#zabbix自定义监控项

 

#编写脚本

[root@zabbix_2 ~]# cd /etc/zabbix/zabbix_agentd.d/
[root@zabbix_2 zabbix_agentd.d]# vim nginx_status.conf 
[root@zabbix_2 zabbix_agentd.d]# cat nginx_status.conf 
UserParameter=nginx.active, /usr/bin/curl -s  http://192.168.174.137/status | grep -i Active | awk -F" " '{print $3}'
#UserParameter 为关键字    /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf里面有案例
#naginx.active 为key   ,后面为获取数据脚本
[root@zabbix_2 zabbix_agentd.d]# /usr/bin/curl -s  http://192.168.174.137/status | grep -i Active | awk -F" " '{print $3}'
1
[root@zabbix_2 zabbix_agentd.d]# systemctl restart zabbix-agent.service


#在zabbix_1上测试

[root@zabbix_1 ~]# yum install -y zabbix-get
[root@zabbix_1 ~]# zabbix_get -s 192.168.174.137 -p 10050 -k "nginx.active"

1

#找到zabbix_2


wKiom1juG6DCDSxyAADkeY0tzXk934.png


#创建监控项

wKioL1juG6HwqCEXAADH0wrW7wI565.png


#添加监控项内容(注意此处的键值至关重要,千万不能错

wKiom1juG6GCh0JJAAC2VUq0HD8163.png


#监控项添加成功

wKioL1juG6KR56dUAAC8l-yvM1E872.png


#创建图形

wKiom1juG6LhbqobAACWjaRnuqM906.png


#选择所要表示的监控项

wKioL1juG6PQfFnyAAIwTQtcmO4161.png


#图形添加成功

wKiom1juG6PTgEmxAADEpSymDzs116.png



#查看图形wKioL1juG6SSET4SAAFxTlhTuKM001.png



#测试监控是否成功(在zabbix_1上使用ab 测试工具

[root@zabbix_1 ~]# ab -c 1000 -n 100000 http://192.168.174.137/status


wKiom1juG6SCB7BoAAGKNliGbT4252.png

#可以看到图形发生了变化,自定义监控项添加成功




#自定义监控项 监控nginx状态  监控TCP状态

#编写脚本内容如下

[root@zabbix_2 ~]# cat /opt/nginx_TCP_status.sh 
#!/bin/bash
tcp_status_fun(){
TCP_STAT=$1
#netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,state[key]}' > /tmp/netstat.tmp
ss -ant | awk 'NR>1 {++s[$1]} END {for(k in s) print k,s[k]}' > /tmp/netstat.tmp
TCP_STAT_VALUE=$(grep "$TCP_STAT" /tmp/netstat.tmp | cut -d ' ' -f2)
if [ -z $TCP_STAT_VALUE ];then
TCP_STAT_VALUE=0
fi
echo $TCP_STAT_VALUE
}
nginx_status_fun(){
NGINX_PORT=$1
NGINX_COMMAND=$2
nginx_active(){
        /usr/bin/curl "http://192.168.174.137:"$NGINX_PORT"/status/" 2>/dev/null| grep 'Active' | awk '{print $NF}'
        }
nginx_reading(){
        /usr/bin/curl "http://192.168.174.137:"$NGINX_PORT"/status/" 2>/dev/null| grep 'Reading' | awk '{print $2}'
       }
nginx_writing(){
        /usr/bin/curl "http://192.168.174.137:"$NGINX_PORT"/status/" 2>/dev/null| grep 'Writing' | awk '{print $4}'
       }
nginx_waiting(){
        /usr/bin/curl "http://192.168.174.137:"$NGINX_PORT"/status/" 2>/dev/null| grep 'Waiting' | awk '{print $6}'
       }
nginx_accepts(){
        /usr/bin/curl "http://192.168.174.137:"$NGINX_PORT"/status/" 2>/dev/null| awk NR==3 | awk '{print $1}'
       }
nginx_handled(){
        /usr/bin/curl "http://192.168.174.137:"$NGINX_PORT"/status/" 2>/dev/null| awk NR==3 | awk '{print $2}'
       }
nginx_requests(){
        /usr/bin/curl "http://192.168.174.137:"$NGINX_PORT"/status/" 2>/dev/null| awk NR==3 | awk '{print $3}'
       }
  case $NGINX_COMMAND in
active)
nginx_active;
;;
reading)
nginx_reading;
;;
writing)
nginx_writing;
;;
waiting)
nginx_waiting;
;;
accepts)
nginx_accepts;
;;
handled)
nginx_handled;
;;
requests)
nginx_requests;
esac 
}
main(){
case $1 in
tcp_status)
tcp_status_fun $2;
;;
nginx_status)
nginx_status_fun $2 $3;
;;
*)
echo $"Usage: $0 {tcp_status key|nginx_status key}"
esac
}
main $1 $2 $3
[root@zabbix_2 ~]# cd /etc/zabbix/zabbix_agentd.d/
#修改配置文件
[root@zabbix_2 zabbix_agentd.d]# cat nginx_status.conf 
UserParameter=nginx.active, /usr/bin/curl -s  http://192.168.174.137/status | grep -i Active | awk -F" " '{print $3}'
UserParameter=nginx.status[*],/opt/nginx_TCP_status.sh "$1" "$2" "$3"

#重启zabbix-agent服务

[root@zabbix_2 zabbix_agentd.d]# systemctl restart zabbix-agent.service



#测试key

[root@zabbix_1 ~]# zabbix_get -s 192.168.174.137 -p 10050 -k nginx.status[nginx_status,80,handled]
44


#添加监控项

wKioL1jvQ7bgYNvEAAClGcWxFiI503.png

wKioL1jvQ7WiCuuWAACOImGW574795.png

#将所有的都添加好后

wKiom1jvQ7bSshZgAADlFYqz9UI918.png


#创建图形

wKioL1jvQ7fggS3sAAC6HBwwAZ0599.png


#添加监控项

wKioL1jvQ7jSQlz9AADfJEtRDfY843.png


#查看最新数据

wKiom1jvQ7fA6H_YAAEN148digE005.png


#查看图形

wKiom1jvQ7nBzATLAADirCTM5is161.png


(注意:由于我们把所以的监控行全放在一个图形里面,而每个监控项的数据大小差距太大,导致数据很小的监控项已经与X轴重合了,)






#导入TCP模板(模板由abcdocker提供)


#模板下载地址:http://pan.baidu.com/s/1i54ULjJ 密码:25lh 


#修改配置文件

[root@zabbix_2 zabbix_agentd.d]# vim nginx_status.conf


#添加一行

[root@zabbix_2 zabbix_agentd.d]# cat nginx_status.conf 
UserParameter=nginx.active, /usr/bin/curl -s  http://192.168.174.137/status | grep -i Active | awk -F" " '{print $3}'
UserParameter=nginx.status[*],/opt/nginx_TCP_status.sh "$1" "$2" "$3" 
UserParameter=linux_status[*],/opt/nginx_TCP_status.sh "$1" "$2" "$3"


#重启zabbix-agent服务

[root@zabbix_2 zabbix_agentd.d]# systemctl restart zabbix-agent.service


#测试key

[root@zabbix_1 ~]# zabbix_get -s 192.168.174.137 -p 10050 -k linux_status[tcp_status,LISTEN]
7


#导入模板

wKioL1jvQ7nzQaD1AAD7nHQdPDo709.png


#选择文件(文件从上面的链接地址下载)


wKioL1jvQ7ridvv2AAB_pUb7NNE298.png



#选择主机中添加模板

wKiom1jvQ7qArJnoAAD4OIf-rfk620.png


#添加模板

wKioL1jvQ7vS8jMNAAD_b0iF7oA146.png



#查看最新数据

wKiom1jvRcPgItj5AAEZLICrfFs791.png


#查看图形

wKiom1jvQ7uTWvVwAAHED6pGz6E339.png










本文转自 chaunceyjiang  51CTO博客,原文链接:http://blog.51cto.com/cqwujiang/1915365,如需转载请自行联系原作者
目录
相关文章
|
3月前
|
自然语言处理 大数据 应用服务中间件
大数据-172 Elasticsearch 索引操作 与 IK 分词器 自定义停用词 Nginx 服务
大数据-172 Elasticsearch 索引操作 与 IK 分词器 自定义停用词 Nginx 服务
91 5
|
6天前
|
前端开发 应用服务中间件 nginx
docker安装nginx,前端项目运行
通过上述步骤,你可以轻松地在Docker中部署Nginx并运行前端项目。这种方法不仅简化了部署流程,还确保了环境的一致性,提高了开发和运维的效率。确保按步骤操作,并根据项目的具体需求进行相应的配置调整。
49 25
|
2月前
|
应用服务中间件 网络安全 nginx
轻松上手Nginx Proxy Manager:安装、配置与实战
Nginx Proxy Manager (NPM) 是一款基于 Nginx 的反向代理管理工具,提供直观的 Web 界面,方便用户配置和管理反向代理、SSL 证书等。本文档介绍了 NPM 的安装步骤,包括 Docker 和 Docker Compose 的安装、Docker Compose 文件的创建与配置、启动服务、访问 Web 管理界面、基本使用方法以及如何申请和配置 SSL 证书,帮助用户快速上手 NPM。
617 1
|
3月前
|
负载均衡 应用服务中间件 Linux
nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全
这篇博客文章详细介绍了Nginx的下载、安装、配置以及使用,包括正向代理、反向代理、负载均衡、动静分离等高级功能,并通过具体实例讲解了如何进行配置。
214 4
nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全
|
3月前
|
tengine 关系型数据库 MySQL
Tengine、Nginx安装MySQL数据库命令教程
本指南详细介绍了在Linux系统上安装与配置MySQL数据库的步骤。首先通过下载并安装MySQL社区版本,接着启动MySQL服务,使用`systemctl start mysqld.service`命令。若启动失败,可尝试使用`sudo /etc/init.d/mysqld start`。利用`systemctl status mysqld.service`检查MySQL的服务状态,确保其处于运行中。通过日志文件获取初始密码,使用该密码登录数据库,并按要求更改初始密码以增强安全性。随后创建一个名为`tengine`的数据库,最后验证数据库创建是否成功以及完成整个设置流程。
|
3月前
|
tengine 应用服务中间件 Linux
Tengine、Nginx安装PHP命令教程
要在阿里云Linux上安装PHP,请先更新YUM源并启用PHP 8.0仓库,然后安装PHP及相关扩展。通过`php -v`命令验证安装成功后,需修改Nginx配置文件以支持PHP,并重启服务。最后,创建`phpinfo.php`文件测试安装是否成功。对于CentOS系统,还需安装EPEL源和Remi仓库,其余步骤类似。完成上述操作后,可通过浏览器访问`http://IP地址/phpinfo.php`测试安装结果。
|
3月前
|
应用服务中间件 Linux nginx
Mac os 安装 nginx 教程(success)
这篇文章是关于如何在Mac OS系统上使用Homebrew安装nginx及其依赖,并解决安装过程中可能出现的权限问题。
306 0
Mac os 安装 nginx 教程(success)
|
3月前
|
Ubuntu 搜索推荐 应用服务中间件
Nginx安装与使用
Nginx安装与使用
|
3月前
|
Docker 容器
docker nginx-proxy 添加自定义https网站
docker nginx-proxy 添加自定义https网站
56 4
|
3月前
|
负载均衡 算法 应用服务中间件
Nginx安装及配置详解
Nginx安装及配置详解

推荐镜像

更多