Zabbix(六):项目实战之--自动发现nginx调度器及后端web服务集群、自定义参数监控

简介:

项目:

 1.自动发现nginx调度器及后端apache构建的web服务集群;

 2.使用自定义参数监控调度器上nginx服务的相关统计数据及速率数据;

 3.使用自定义参数监控后端apache服务的相关统计数据及速率数据;(选做)

 4.制定出nginx调度器及后端apache服务的监控模板,在模板中定义出:items, trigger, graph;(选做)


-------------------------------------------------------------------------------------------------------

项目规划:

zabbix-server端:172.16.1.2

zabbix-agent端/nginx调度器:172.16.1.99

zabbix-agent端/后端RS1:172.16.1.3

zabbix-agent端/后端RS2:172.16.1.10


把nginx调度器的ip地址设置的大一些,是为了设置zabbix Discovery的时候,自动区分发现nginx调度器及后端apache构建的web服务集群,所以下面可以设置两个zabbix Discovery,分别发现不同作用的主机。


1.

zabbix-server端:

安装以下应用

yum install zabbix-server-mysql zabbix-web-mysql zabbix-web zabbix-agent zabbix-get -y

详细的server端配置请参照:http://blog.51cto.com/12667170/2044254


三个zabbix-agent端:

安装以下应用

yum install -y zabbix-agent zabbix-sender

详细的agent端配置请参照:http://blog.51cto.com/12667170/2044254


2.创建nginx调度器

在nginx.conf配置文件中的http段内添加upstream内容,将后端两台RS加入到该upstream中

upstream zrs {

    server 172.16.1.3;

    server 172.16.1.10;

}

server {

    listen 80;

    location / {

        proxy_pass http://zrs;

        proxy_set_header X-Real-IP $remote_addr;

    }

}


两个后端rs各配置一个index.html方便测试,并开启httpd服务


测试可以看到使用了RoundRobin模式对后端rs访问。

[root@zrs2 ~]# for i in {1..10}; do curl http://172.16.1.99; done

<h1>172.16.1.3</h1>

<h1>172.16.1.10</h1>

<h1>172.16.1.3</h1>

<h1>172.16.1.10</h1>

<h1>172.16.1.3</h1>

<h1>172.16.1.10</h1>

<h1>172.16.1.3</h1>

<h1>172.16.1.10</h1>

<h1>172.16.1.3</h1>

<h1>172.16.1.10</h1>


3.自动发现nginx调度器及后端apache构建的web服务集群


创建nginx discovery

1.png


创建web discovery

2.png


分别打开nginx调度器端和后端rs主机上的zabbix-agent服务

查看Hosts,已经添加进了这三台主机


4.使用自定义参数监控调度器上nginx服务的相关统计数据及速率数据


为了监控nginx状态,在nginx的主配置文件的server中添加location监控nginx的状态值。


[root@zrs2 ~]# vim /etc/nginx/nginx.conf 


  location /status {

          stub_status on;

  }


[root@zrs2 ~]# systemctl restart nginx.service

[root@zrs2 ~]# curl 172.16.1.99/status

Active connections: 1 

server accepts handled requests

 1 1 1 

Reading: 0 Writing: 1 Waiting: 0 


监控nginx的状态,需要item的key,默认的没有,需要自定义参数UserParameters


5.自定义参数(UserParameters)


nginx自定义参数

vim /etc/zabbix/zabbix_agentd.d/userparameter_nginx.conf


UserParameter=nginx.active,curl -s http://172.16.1.99/status | awk '/^Active/{print $NF}'

UserParameter=nginx.accepts,curl -s http://172.16.1.99/status | awk '/^[[:space:]]+[0-9]/{print $1}'

UserParameter=nginx.handled,curl -s http://172.16.1.99/status | awk '/^[[:space:]]+[0-9]/{print $2}'

UserParameter=nginx.requests,curl -s http://172.16.1.99/status | awk '/^[[:space:]]+[0-9]/{print $3}'


保存退出,重启服务

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


在server端查看,可以不用eno查看状态,直接用第二种方法就能获取值,都成功了


[root@zrs1 ~]# zabbix_get -s 172.16.1.99 -k net.if.in[eno16777736,bytes]

285905110

[root@zrs1 ~]# zabbix_get -s 172.16.1.99 -k nginx.active

1

[root@zrs1 ~]# zabbix_get -s 172.16.1.99 -k nginx.accepts

9

[root@zrs1 ~]# zabbix_get -s 172.16.1.99 -k nginx.handled

10

[root@zrs1 ~]# zabbix_get -s 172.16.1.99 -k nginx.requests

11



接下来可以根据上面自定义的参数UserParameters,创建新的item项,可以输入刚才自定义的key。


在Hosts的172.16.1.99主机后面点击Items,然后Create item

如下创建4个监控项,也就是刚才设置的,注意的是preprocessing中改为Change per second

3.png

4.png

5.png

6.png


可以给这些监控创建一个graph

7.png


经过一段时间后,查看这个graph有了数值,表示自定义参数监控设置成功。

8.png


6.nginx调度器创建监控模板,在模板中定义出:items, trigger, graph。


创建nginx template

9.png

在这个模版上创建item,监控入站流量,注意的是preprocessing中改为Change per second

10.png


创建trigger

11.png


为了触发器被触发需要定义动作actions

12.png

13.png


这时需要定义Administration中users下面的media

14.png


再定义media types中的email中的media type

15.png


创建graph

16.png


7.后端apache服务配置监控模板,在模板中定义出:items, trigger, graph。


创建web template

17.png


在这个模版上创建item,监控出站流量,注意的是preprocessing中改为Change per second

18.png


创建trigger为了跟上面的trigger区分,这里Severity改为High

19.png


创建graph

20.png



8.链接应用模版

如下图,在172.16.1.99的host旁边,选择templates

21.png

链接nginx template

22.png


同样的步骤为两个后端rs链接模版


9.查看Hosts,刚才自定义配置监控都成功了。

23.png



本文转自 Runs_ 51CTO博客,原文链接:http://blog.51cto.com/12667170/2045749,如需转载请自行联系原作者

相关文章
|
19天前
|
应用服务中间件 网络安全 nginx
快速上手!使用Docker和Nginx部署Web服务的完美指南
快速上手!使用Docker和Nginx部署Web服务的完美指南
|
12天前
|
XML 存储 Java
11:Servlet中初始化参数的获取与应用-Java Web
11:Servlet中初始化参数的获取与应用-Java Web
27 3
|
4天前
|
应用服务中间件 nginx
nginx配置集群轮训策略
nginx配置集群轮训策略
12 0
|
5天前
|
存储 运维 负载均衡
Heartbeat+Nginx实现高可用集群
通过Heartbeat与Nginx的结合,您可以建立一个高可用性的负载均衡集群,确保在服务器故障时仍能提供无中断的服务。这种配置需要仔细的计划和测试,以确保系统在故障情况下能够正确运行。
11 2
|
7天前
|
应用服务中间件 nginx
如何在树莓派部署Nginx并实现无公网ip远程访问内网制作的web网站
如何在树莓派部署Nginx并实现无公网ip远程访问内网制作的web网站
10 0
|
8天前
|
缓存 负载均衡 安全
深入探索Nginx高性能Web服务器配置与优化
【5月更文挑战第7天】本文深入探讨了Nginx的配置与优化,重点介绍了基础配置参数如`worker_processes`、`worker_connections`和`keepalive_timeout`,以及优化策略,包括使用epoll事件驱动模型、开启gzip压缩、启用缓存、负载均衡和安全配置。此外,还提到了性能调优工具,如ab、nginx-stats和nmon,以助于提升Nginx的性能和稳定性。
|
20天前
|
负载均衡 监控 Unix
[AIGC] Nginx:一个高性能的 Web 服务器和反向代理
[AIGC] Nginx:一个高性能的 Web 服务器和反向代理
|
2天前
|
设计模式 开发框架 数据库
Python Web开发主要常用的框架
【5月更文挑战第12天】Python Web开发框架包括Django、Flask、Tornado和Pyramid。Django适用于复杂应用,提供ORM、模板引擎等全套功能;Flask轻量级,易于扩展,适合小型至中型项目;Tornado擅长处理高并发,支持异步和WebSockets;Pyramid灵活强大,可适配多种数据库和模板引擎,适用于各种规模项目。选择框架需依据项目需求和技术栈。
14 2
|
13天前
|
关系型数据库 MySQL
web简易开发(二){html5+php实现文件上传及通过关键字搜索已上传图片)}
web简易开发(二){html5+php实现文件上传及通过关键字搜索已上传图片)}
|
2天前
|
安全 测试技术 持续交付
在Python Web开发中,测试是一个至关重要的环节
【5月更文挑战第12天】在Python Web开发中,测试至关重要,包括单元测试(unittest模块)、集成测试、功能测试、系统测试、验收测试、性能测试、安全测试和端到端测试。常用的测试工具有unittest、pytest、selenium、requests和coverage。遵循“测试先行”和“持续集成”原则,确保代码质量与稳定性。
11 3

推荐镜像

更多