location /ngst{
stub_status on;
access_log off;
allow 127.0.0.1;
allow xxx.xxx.xxx.xxx;
deny all;
}引用网上文档,是一种解决方案。缺点:每一个zabbix agent 都需要配置/etc/zabbix/zabbix_agentd.conf 并重新启动zabbix客户端 ,繁琐。2、nginx-status的取值脚本解决方案2 1.每台nginx server的主配置文件 都配置status模块 2.在一台nginx server 获取到nginx status的值,写到本地一个临时文件3.按需求处理临时文件,使用UserParameter=nginx_status[*] 自定义key值的方式,4.crontab 每分钟获取一次nginx status值优点,不比每台zabbix 客户端都配置 /etc/zabbix/zabbix_agentd.conf 大大节约时间,并减少错误率#!/bin/bash #HOST=`ifconfig eth0 | sed -n '/inet /{s/.*addr://;s/ .*//;p}'` HOST="192.168.103.2" PORT="8888" function active { /usr/bin/curl "http://$HOST:$PORT/nginx-status/" 2>/dev/null| grep 'Active' | awk '{print $NF}' } function reading { /usr/bin/curl "http://$HOST:$PORT/nginx-status/" 2>/dev/null| grep 'Reading' | awk '{print $2}' } function writing { /usr/bin/curl "http://$HOST:$PORT/nginx-status/" 2>/dev/null| grep 'Writing' | awk '{print $4}' } function waiting { /usr/bin/curl "http://$HOST:$PORT/nginx-status/" 2>/dev/null| grep 'Waiting' | awk '{print $6}' } function accepts { /usr/bin/curl "http://$HOST:$PORT/nginx-status/" 2>/dev/null| awk NR==3 | awk '{print $1}' } function handled { /usr/bin/curl "http://$HOST:$PORT/nginx-status/" 2>/dev/null| awk NR==3 | awk '{print $2}' } function requests { /usr/bin/curl "http://$HOST:$PORT/nginx-status/" 2>/dev/null| awk NR==3 | awk '{print $3}' } # Run the requested function $1
HOST和PORT,是监控nginx对应的服务器IP和端口可以直接用命令测试一下/usr/bin/curl "http://192.168.103.2:8888/nginx-status/"Active connections: 2 server accepts handled requests 1968 1968 3907 Reading: 0 Writing: 1 Waiting: 1
3、修改zabbix_agentd.conf的配置/etc/zabbix/zabbix_agentd.conf UserParameter=nginx.accepts,/home/zabbix/nginx-status.sh accepts UserParameter=nginx.handled,/home/zabbix/nginx-status.sh handled UserParameter=nginx.requests,/home/zabbix/nginx-status.sh requests UserParameter=nginx.connections.active,/home/zabbix/nginx-status.sh active UserParameter=nginx.connections.reading,/home/zabbix/nginx-status.sh reading UserParameter=nginx.connections.writing,/home/zabbix/nginx-status.sh writing UserParameter=nginx.connections.waiting,/home/zabbix/nginx-status.sh waiting
#!/bin/bash
rm -rf /tmp/ngst/*
function GETSTATUS {
for ip in {1..3}
do
curl http://web$ip:8080/ngst >/tmp/ngst/web$ip 2>/dev/null
done
}
function HANDLE {
for i in {1..3}
do
cat /tmp/ngst/web$i |grep Active |awk '{print $1,$NF}' >>/tmp/ngst/web${i}_status
cat /tmp/ngst/web$i |grep Reading |awk '{print $1,$2}' >>/tmp/ngst/web${i}_status
cat /tmp/ngst/web$i |grep Writing |awk '{print $3,$4}' >>/tmp/ngst/web${i}_status
cat /tmp/ngst/web$i |grep Waiting |awk '{print $5,$6}' >>/tmp/ngst/web${i}_status
#mv /tmp/ngst/web$i.new /tmp/ngst/web$i
done
}
function TOTAL{
cat /tmp/ngst/*status |grep Active |awk '{total+=$NF}END{print total}'>/tmp/ngst/total #
总的 Active 连接数
}
GETSTATUS
HANDLE
TOTAL执行后结果如下#ls /tmp/ngst/total web1 web1_status web2 web2_status web3 web3_status#cat /tmp/ngst/web1Active connections: 1 server accepts handled requests 7716005 7716005 7354221 Reading: 0 Writing: 1 Waiting: 0 # cat /tmp/ngst/web1_status 处理后的文件Active 1Reading: 0Writing: 1Waiting: 0UserParameter=nginx_status.total, cat /tmp/ngst/total
UserParameter=nginx_status[*], cat /tmp/ngst/web1 |grep "$1"|awk '{print $NF}'
UserParameter=nginx2_status[*], cat /tmp/ngst/web2 |grep "$1"|awk '{print $NF}'
UserParameter=nginx3_status[*], cat /tmp/ngst/web3 |grep "$1"|awk '{print $NF}'
#只需要写这么几行就能实现对 Active Reading 等或者其他值得监控。此时在zabbix server端添加下列监控。1,创建模板,默认都会2,创建监控项

可以添加个图形,把所以的几个线汇总到一块。

解决方案2 为自己捣鼓,有很多不足之处,大神有更好的解决方案,请分享。我正在尝试设置一个puppet节点,但rubygems似乎不正常。如果我通过它自己的二进制文件(/usr/lib/ruby/gems/1.8/gems/facter-1.5.8/bin/facter)在cli上运行facter,它工作正常,但如果我通过由rubygems(/usr/bin/facter)安装的二进制文件,它抛出:/usr/lib/ruby/1.8/facter/uptime.rb:11:undefinedmethod`get_uptime'forFacter::Util::Uptime:Module(NoMethodError)from/usr/lib/ruby
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。
我在我的项目中添加了一个系统来重置用户密码并通过电子邮件将密码发送给他,以防他忘记密码。昨天它运行良好(当我实现它时)。当我今天尝试启动服务器时,出现以下错误。=>BootingWEBrick=>Rails3.2.1applicationstartingindevelopmentonhttp://0.0.0.0:3000=>Callwith-dtodetach=>Ctrl-CtoshutdownserverExiting/Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/actionmailer-3.2.1/lib/action_mailer
我的瘦服务器配置了nginx,我的ROR应用程序正在它们上运行。在我发布代码更新时运行thinrestart会给我的应用程序带来一些停机时间。我试图弄清楚如何优雅地重启正在运行的Thin实例,但找不到好的解决方案。有没有人能做到这一点? 最佳答案 #Restartjustthethinserverdescribedbythatconfigsudothin-C/etc/thin/mysite.ymlrestartNginx将继续运行并代理请求。如果您将Nginx设置为使用多个上游服务器,例如server{listen80;server
我想向我的Controller传递一个参数,它是一个简单的复选框,但我不知道如何在模型的form_for中引入它,这是我的观点:{:id=>'go_finance'}do|f|%>Transferirde:para:Entrada:"input",:placeholder=>"Quantofoiganho?"%>Saída:"output",:placeholder=>"Quantofoigasto?"%>Nota:我想做一个额外的复选框,但我该怎么做,模型中没有一个对象,而是一个要检查的对象,以便在Controller中创建一个ifelse,如果没有检查,请帮助我,非常感谢,谢谢
我已经从我的命令行中获得了一切,所以我可以运行rubymyfile并且它可以正常工作。但是当我尝试从sublime中运行它时,我得到了undefinedmethod`require_relative'formain:Object有人知道我的sublime设置中缺少什么吗?我正在使用OSX并安装了rvm。 最佳答案 或者,您可以只使用“require”,它应该可以正常工作。我认为“require_relative”仅适用于ruby1.9+ 关于ruby-主要:Objectwhenrun
这里是Ruby新手。完成一些练习后碰壁了。练习:计算一系列成绩的字母等级创建一个方法get_grade来接受测试分数数组。数组中的每个分数应介于0和100之间,其中100是最大分数。计算平均分并将字母等级作为字符串返回,即“A”、“B”、“C”、“D”、“E”或“F”。我一直返回错误:avg.rb:1:syntaxerror,unexpectedtLBRACK,expecting')'defget_grade([100,90,80])^avg.rb:1:syntaxerror,unexpected')',expecting$end这是我目前所拥有的。我想坚持使用下面的方法或.join,
我有一些代码在几个不同的位置之一运行:作为具有调试输出的命令行工具,作为不接受任何输出的更大程序的一部分,以及在Rails环境中。有时我需要根据代码的位置对代码进行细微的更改,我意识到以下样式似乎可行:print"Testingnestedfunctionsdefined\n"CLI=trueifCLIdeftest_printprint"CommandLineVersion\n"endelsedeftest_printprint"ReleaseVersion\n"endendtest_print()这导致:TestingnestedfunctionsdefinedCommandLin
我有一个只接受一个参数的方法:defmy_method(number)end如果使用number调用方法,我该如何引发错误??通常,我如何定义方法参数的条件?比如我想在调用的时候报错:my_method(1) 最佳答案 您可以添加guard在函数的开头,如果参数无效则引发异常。例如:defmy_method(number)failArgumentError,"Inputshouldbegreaterthanorequalto2"ifnumbereputse.messageend#=>Inputshouldbegreaterthano
我使用Ember作为我的前端和GrapeAPI来为我的API提供服务。前端发送类似:{"service"=>{"name"=>"Name","duration"=>"30","user"=>nil,"organization"=>"org","category"=>nil,"description"=>"description","disabled"=>true,"color"=>nil,"availabilities"=>[{"day"=>"Saturday","enabled"=>false,"timeSlots"=>[{"startAt"=>"09:00AM","endAt"=>