但Cacti 的运行要依靠的东西比较太多了,环境不好配是首要,再就要要跑多个PHP动态应用这对于许多站长都只有单台服务器来说可真费劲。
Options[apache_conn]: gauge,nopercent,growright
Directory[apache_conn]: apache_conn
MaxBytes[apache_conn]: 4000
YLegend[apache_conn]: apache_conn
ShortLegend[apache_conn]:
LegendI[apache_conn]: apache all coonn:
LegendO[apache_conn]: apache now conn
Title[apache_conn]: apache conn
PageTop[apache_conn]:http conn
然后把以下perl代码创建为 mrtg.http 存于 mrtg 根目录中并赐予可执行权限(chmod +x mrtg.http)
$hostname=`hostname`;
$hostname=~s/\s+$//;
$apache_all_conn=`netstat -an|grep 127.0.0.1:80|wc -l`;
$apache_conn=`netstat -an|grep 127.0.0.1|grep ESTABLISHED|wc -l`;
$apache_all_conn=~s/\n$//;
$apache_conn=~s/\n$//;
$apache_all_conn=~s/^\s+|\s+$//;
$apache_conn=~s/^\s+|\s+$//;
$gettime=`uptime|awk '{print \$1" "\$3" "\$4}'`;
$gettime=~s/\,|\n$//g;
print("$apache_all_conn\n");
print("$apache_conn\n");
print("$gettime\n");
print("$hostname\n");
该方法同样能用在 Nginx 上,因为一样都是80端口。
但该方法有个弊端,如果你有另外一个后端。例如 Nginx 反向代理 proxy 到后端 apache。 这时 apache 是 8080 端口的话 这么数值就有重复了。
然而,就算你使用 8181 这样的端口号来避开重复,也不是万全之计。毕竟这不是Nginx 或者 apache 原生的并发数获知方式。
而 MRTG,也行!!!之前网上找偏东南西北都没有一篇写这内容的,最后还是自己研究。今天我就要好好给大家分享分享!
我们需要像 Cacti 那样,抓取到 NginxStatus 上特定的数值,然后给 MRTG 转化成图表。
server accepts handled requests
60085 60085 175930
Reading: 0 Writing: 1 Waiting: 53
好了,内容中,不单有数据,还有解析。我们的构想是! 只要数据,不要解析。而且要的还只是指定的数据。
# curl http://127.0.0.1/NginxStatus | grep Active 这样! 我们就能紧紧获取到包含有 Active 字样的内容:
# curl http://127.0.0.1/NginxStatus |grep Active |awk '{print $3 }' 这样!我们就能紧紧获取到内容中第三列的内容。即纯数值 :54
于是乎,我们的 shell 脚本就有2行:
curl http://127.0.0.1/NginxStatus |grep Waiting |awk '{print $6 }' > /opt/mrtg/ngx.waiting
`/opt/mrtg/nginx_status`; #调用刚才的shell脚本从 NginxStatus 中获取数值到文本。
$hostname=`hostname`;
$hostname=~s/\s+$//;
$apache_all_conn=`tail /opt/mrtg/ngx.active`; #数值文本路径按照不同配置自行修改
$apache_conn=`tail /opt/mrtg/ngx.waiting`; #数值文本路径按照不同配置自行修改
$apache_all_conn=~s/\n$//;
$apache_conn=~s/\n$//;
$apache_all_conn=~s/^\s+|\s+$//;
$apache_conn=~s/^\s+|\s+$//;
$gettime=`uptime|awk '{print \$1" "\$3" "\$4}'`;
$gettime=~s/\,|\n$//g;
print("$apache_all_conn\n");
print("$apache_conn\n");
print("$gettime\n");
print("$hostname\n");
Options[apache_conn]: gauge,nopercent,growright
Directory[apache_conn]: nginx_conn # 生成网页的目录
MaxBytes[apache_conn]: 4000
YLegend[apache_conn]: nginx_conn # 图表中的名字
ShortLegend[apache_conn]:
LegendI[apache_conn]: Active connections: # 图表中绿色曲线所代表的参数
LegendO[apache_conn]: Waiting: # 图表中蓝色曲线所代表的参数
Title[apache_conn]: Nginx # 图表的抬头名称
PageTop[apache_conn]:nginx # 图表的页面名称
至此,MRTG 为 Nginx (NginxStatus) 生成图表的配置大功告成!!
Max | Average | Current | |
---|---|---|---|
Active connections: | 188.0 B/s | 51.0 B/s | 132.0 B/s |
Waiting: | 186.0 B/s | 46.0 B/s | 130.0 B/s |