搭建Zabbix分布式监控
1、实现zabbix监控nginx
实验环境:
server1 172.25.1.1 server redhat7
test1 172.25.1.11 agent redhat7
在“手动添加”主机的基础上进行扩展
开启服务:
[root@server ~]# systemctl start zabbix-server
[root@server ~]# systemctl enable zabbix-server
[root@server ~]# systemctl start mariadb
[root@server ~]# systemctl enable mariadb
[root@test1 ~]# /etc/init.d/zabbix-agent start
在agent端提前下载好nginx的rpm包,nginx-1.8.0-1.el6.ngx.x86_64.rpm
[root@test1 ~]# rpm -ivh nginx-1.8.0-1.el6.ngx.x86_64.rpm //也可以下载nginx源码包,不过编译的时候必须添加status模块
注意:这里由于笔者的主机为企业6,所以安装包为6版本
[root@test1 ~]# cd /etc/nginx/conf.d/
[root@test1 conf.d]# vim default.conf //增加了一个status模块
server {
listen 80;
server_name localhost;#charset koi8-r;
location / {
root html;
index index.html index.htm;
}location /nginx-status {
stub_status on;
access_log off;
}
[root@test1 ~]# 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
[root@test1 ~]# nginx //启动nginx服务
网页进行nginx的状态查看
为了安全考虑,我们可以设置黑白名单
location /nginx-status {
stub_status on;
access_log off;
allow 172.25.1.11; //只允许本机使用,这里的ip也可以写成127.0.0.1
deny all; //除本机外所有访问拒绝
}
重起nginx服务,此时其他主机不可对其状态进行访问
例如物理机:
本机172.25.1.11主机进行访问:
[root@test1 ~]# curl 172.25.1.11/nginx-status
通过正则表达式取出状态值
[root@test1 ~]# curl -s http://172.25.1.11/nginx-status | grep Active | awk '{print $3}'
[root@test1 ~]# cd /etc/zabbix/
[root@test1 zabbix]# ls
zabbix_agentd.conf zabbix_agentd.d
[root@test1 zabbix]# cd zabbix_agentd.d/
[root@test1 zabbix_agentd.d]# ls
userparameter_mysql.conf
[root@test1 zabbix_agentd.d]# cp userparameter_mysql.conf userparameter_nginx.conf
[root@test1 zabbix_agentd.d]# ls
userparameter_mysql.conf userparameter_nginx.conf
[root@test1 zabbix_agentd.d]# vim userparameter_nginx.conf
UserParameter=nginx.active,curl -s http://172.25.1.11/ngimx-status | grep Active | awk '{print $3}'
[root@test1 zabbix_agentd.d]# /etc/init.d/zabbix-agent restart //重启服务
以相同的方式分别取出其他状态并进行绘图:
[root@test1 zabbix_agentd.d]# curl -s http://172.25.1.11/nginx-status | awk 'NR==3' | awk '{print $1}'
27
[root@test1 zabbix_agentd.d]# curl -s http://172.25.1.11/nginx-status | awk 'NR==3' | awk '{print $2}'
28
[root@test1 zabbix_agentd.d]# curl -s http://172.25.1.11/nginx-status | awk 'NR==3' | awk '{print $3}'
32
[root@test1 zabbix_agentd.d]# vim userparameter_nginx.conf //其中的 nginx.active等都是键值
UserParameter=nginx.active,curl -s http://172.25.1.11/nginx-status | grep Active | awk '{print $3}'
UserParameter=nginx1.active,curl -s http://172.25.1.11/nginx-status | awk 'NR==3' | awk '{print $1}'
UserParameter=nginx2.active,curl -s http://172.25.1.11/nginx-status | awk 'NR==3' | awk '{print $2}'
UserParameter=nginx3.active,curl -s http://172.25.1.11/nginx-status | awk 'NR==3' | awk '{print $3}'
[root@test1 zabbix_agentd.d]# /etc/init.d/zabbix-agent restart
[root@server1 zabbix_agentd.d]# cd
[root@server1 ~]# ls //提前可下载好这个rpm工具包
zabbix-get-3.4.6-1.el7.x86_64.rpm
[root@server1 ~]# rpm -ivh zabbix-get-3.4.6-1.el7.x86_64.rpm
[root@server1 ~]# zabbix_get -s 172.25.1.11 -p 10050 -k 'nginx.active'
1
[root@server1 ~]# zabbix_get -s 172.25.1.11 -p 10050 -k 'nginx1.active'
46
[root@server1 ~]# zabbix_get -s 172.25.1.11 -p 10050 -k 'nginx2.active'
47
[root@server1 ~]# zabbix_get -s 172.25.1.11 -p 10050 -k 'nginx3.active'
此时我们到zabbix网页添加监控项
点击“配置”——>主机
点击test1的监控项,并点击有上角的“添加监控”选项:
点击右端的“创建监控项" ,填写键值
,键值必须与
userparameter_nginx.conf文件中的键值相同——>填写完点击“添加”
点击图形——>点击有上角的“创建图形” ,这里笔者写的绘图风格为“填满的区域”
点击“添加”添加nginx_status
点击图形右边的“预览”选项: 这里的绘图风格为“填满的区域”,读者可自行改变风格
以这样的添加监控的方式继续添加剩下的三项:
点击监控项进行添加:
最终添加完后的监控项共四项,结果如下:
继续点击图形——>点击下面的“添加”——>开始添加图形:
点击查看预览就可以看到图形啦。
我们可以绘出“填满的区域”风格的图:
也可以是“线”风格的:
实验到此就结束啦!!!
另外补充:如果搭建完没有看到线或者任何图案,则说明你的主机可能是不可用的,这时你查看test1是否处于可用状态,即“可用性“那一栏是否是绿色的,若不是,检查服务是否并未启动等。
相关文章:

Codeforces Round #372 (Div. 2), problem: (B) Complete the Word
水题,每次截取长度为26的字符串,然后直接进行修改就可以 然而本弱渣昨天wa看很久 include<bits/stdc.h> using namespace std; int n,c; int ans[30]; int main() { string s; cin>>s; int tt0; int ns.size(); if(n<26) { cout<<&…

百练 2973 Skew数 解题报告
思路: 计算出每一个skew数的不同位数表示的权值,然后用该位与权值相乘。用int数组来装权值,用char数组来装skew数。 代码: #include<stdio.h> #include<string.h> int main() {int i, k, sum;int base[32];char skew[…

【Python】在Mac系统中安装Pygame
我们通过Homebrew来安装Pygame,Homebrew是Mac OSX上的软件包管理工具,如果还没安装Homebrew,将以下命令粘贴至终端先安装Homebrew /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install…

zabbix部署onealert云警告平台
onealert告警功能 告警 All In One,支持微信、邮箱、短信、APP、电话告警支持接入 Zabbix、Nagios、阿里云、腾讯云、监控宝等等告警信息灵活的分配策略,可灵活的分配告警信息发送给相关人员微信、邮箱、app 等告警方式全部免费实验环境: 首…

StringBuilder、StringBuffer、String区别
相信大家对 String 和 StringBuffer 的区别也已经很了解了,但是估计还是会有很多同志对这两个类的工作原理有些不清楚的地方,今天重新把这个概念给大家复习一下,顺便牵出 J2SE5.0 里面带来的一个新的字符操作的类—— StringBuilder …

Class中isAssignableFrom() 方法
看Spring源码的时候看到这个方法: 1 protected WebApplicationContext createWebApplicationContext(ServletContext sc) { 2 Class<?> contextClass determineContextClass(sc); 3 if (!ConfigurableWebApplicationContext.class.isAs…
【iOS】iOS10.3新增API:应用内评分
1、需求 在iOS10.3以前,APP引导用户评分时需要跳转到AppStore中操作,并且AppStore在国内有时加载会较慢,即便有的用户想给APP好评,但是等了几秒钟评分页面还没加载出来从而放弃。在iOS10.3中,苹果新增了APP内评分的新…

dhcp动态主机配置协议
dhcp简介: 动态主机设置协议(Dynamic Host Configuration Protocol,DHCP)是一个局域网的网络协议,使用UDP协议工作,计算机网络应用层协议。 主要有两个用途:用于内部网或网络服务供应商自动分配…

JSONP--解决ajax跨域问题
取不到数据! 上周客户新买了服务器,原本在旧的服务器上放着客户的Web主页信息和一个后台程序(asp.net),在客户的主页中有一个动态显示最新消息的处理,这个处理就是通过ajax异步从那个后台程序中取得的。由于又购买了新的服务器&am…

OC基本数据存储方式
/** 一,数据存储 常用方式(5种) 1,XML属性列表 -- 保存在Doucuments文件夹 2,偏好设置(NSUserDefault)-- Library/Preference 需要配合writetoFile来配合使用,保存到沙盒 3,归档(NSKeyedArchiver) -- 实现coding协议 4,sqlite --使用sqlite语法操作数据库 5,Core Data -- 由系统…
Xcode可重用代码块code snippets
一. 关于code snippets 通过Xcode的重用代码块(code snippets)可快速输入预设好的常用代码模板,如通过键入 hystrong 系统会直接替代为 property(nonatomic,strong) <#class#> <#name#>;二. 添加方法 如下图进行选择&#…

自动化运维工具Ansible
ansible简介: ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。 ansible是基…

jquery 的3D Carousel插件参数说明
这个插件大家都很熟悉了,但是在网上找了很久找不到相关的资料,只有自己琢磨研究了一下。有些参数一眼都可以看出意思,在此我只说一下每个图片要想带一些扩展信息怎么处理。 1:首先需要创建一个ul对象,然后里面每一个li…
利用runtime实现KVO
KVO实现原理 一.关于KVO KVO(Key-Value Observing)提供一种机制,当指定对象的属性被修改后,就会通知观察者。简单的说就是每次指定的被观察的对象的属性被修改后,KVO就会自动通知相应的观察者了。 KVO其实也是“观察者”设计模式的一种应用…
Xcode 5.0.1安装插件:规范注释生成器VVDocumenter + OSX 10.9.2
终于有时间停下来玩下Xcode的插件了,最近需要用下规范注释生成器,于是装了个插件用下。 下面是安装过程(简单的不得了): 1.前往GitHub下载工程文件:VVDocumenter-Xcode 2.用Xcode打开工程,Comma…

shell的数字、字符串处理
1、显示小数点前的0 由于bc计算器目前还不支持显示小数点前的0,所以我们要用一用强大的awk工具啦! 例如: echo "scale2; 0.13 0.1" | bc | awk {printf "%.2f", $0} 2、表示1~21的命令 echo seq 1 21 3、shell 将字符串…

Javascript动画效果(四)
Javascript动画效果(四) 前面我们自己写了一个小小的关于js动画的插件,下面我们来使用之前的框架来完成我们想要的动画效果。我们经常在淘宝网中看到,鼠标经过某一图片时,该图片有从上滚出而又从下滚入的效果ÿ…
APP转让时提示:您必须移除要转让的 App 的所有构建版本和测试员,并清除“测试信息”下的所有信息
转让时出现如下问题无法转让: 解决方法: 在TestFlight中,将所有历史构建测试版本均设置为过期: 结果:

PHP shell模式下执行PHP文件报错
1.在shell下直接运行php文件 出现 PHP Deprecated: Comments starting with # are deprecated in /etc/php5/cli/conf.d/ming.ini on line 1 in Unknown on line 0 错误提示信息 2.解决办法: 将 vim /etc/php5/cli/conf.d/ming.ini 文件中第一行 # configuration …

时间同步服务器(默认)chrony和ntp
Rhel7时间同步服务器(默认)chrony 端口:323 chrony简介: 是一个开源软件,可实现系统时钟和时钟服务器同步,让时间保持精确 两部分组成:chronyd和chronyc 其中chronyd是后台运行的守护进程,用于调整内…

静态链表实现(A-B)+(B-A)【代码】
-----------------------------------------------第一次发代码,写在前面------------------------------------------------------ 思路不完全等同于严师太的课本,所以代码并不是参照课本。 代码参照《大话数据结构》相应章节,并经过了相应修…

句子单词的逆转
这里我们谈论的是句子单词的逆转。比如you are welcome!翻转成weclome! are you 对于这道题,解题思路可以有很多种,可以以单词为单位,然后交换,比如用you 和weclome!交换,利用两个指针,不断的向后和向前搜索…
【iOS】日历行程的增删改查(完整)
前言 我们可以使用系统提供的EventKit框架来访问和操作用户的日历日程和提醒(虽然日历和提醒是两个独立的app,但是是用同一个框架来处理数据)。同样地,日历和提醒的数据的数据,都是存储在同一个叫做Calendar Database…

ntp 、ntpdate 、chrony 时间同步
ntp服务 Rhel6时间同步服务器(默认)ntp 端口:UDP/123 搭建ntp客户端同步服务 例: 将配置文件/etc/ntp.conf中的server参数注释掉,并添加上自己的时钟同步服务器 server 0.time.qiyi.domain iburst 这里的…
贝塞尔曲线动画demo(仿美人相机效果)
效果如图: 仿美人相机,手势滑动隐藏顶部view。为了方便讲解,将屏幕分为几个区域,如图: 在拖动过程中: 1、拖动距离小于minMoveDistance,贝赛尔曲线发生形变 2、拖动大于minMoveDistance&am…

算法---001
题目:用1、2、3、4、5、6、7、8、9九个数字拼成一个九位数(每个数字恰好用一次),使得它的前三位、中间三位、最后三位的比值是1 : 2 : 3。例如192384576就是一个合法的解,因为192 : 384 : 576 1 : 2 : 3 看到这种要求…
IOS笔记 #pragma mark的用法
简单的来说就是为了方便查找和导航代码用的。 下面举例如何快速的定位到我已经标识过的代码。#pragma mark 播放节拍器- (void) Run:(NSNumber *)tick { //... } OK,那么如何查找呢,点击代码编辑器上面的导航栏即可:接着我修改一下代码:#prag…

shell脚本api接口考虑并发问题的可行性操作
当我们通过收集每台客户端数据后通过api接口上传到云服务器时,可能会由于客户端过多,几千以至于几万,这时不得不考虑个问题: 并发的问题,同时并发上传文件,可能导致api接口挂掉,但如果我们让文件…

ZOJ 2110 Tempter of the Bone(DFS)
点我看题目 题意 : 一个NM的迷宫,D是门的位置,门会在第T秒开启,而开启时间小于1秒,问能否在T秒的时候到达门的位置,如果能输出YES,否则NO。 思路 :DFS一下就可以,不过要注…

java 16 -12 静态导入
静态导入: 格式:import static 包名….类名.方法名; 可以直接导入到方法的级别 静态导入的注意事项: A:方法必须是静态的 B:如果有多个同名的静态方法,容易不知道使用谁?这个时候要使用&…