web系统的实时流量监控该怎么做? 5C

我这边有个比较大的B/S系统,现在需要对各用户使用该系统时候的实时流量进行监控,
需要采集的实时信息有用户的ip地址、流量,然后在web页面进行实时展示。前期想到是用zabbix进行监控,但这个需求是和业务挂钩的,不想在服务器安装zabbix,所以就没有采用该方法了。各位有什么好的方法推荐没?

5个回答

iftop 命令可以查看到吧

zxxcvvb
zxxcvvb ELK 监控日志. 或者写脚本监控日志
2 年多之前 回复
qqaazz211
的阿尔额 是可以看到,但这个命令只能在linux命令行中使用吧,我是需要采集这个ip地址、流量数据,并且实时的展示在web前端,后期还会利用已经采集的流量数据做一些统计分析。
2 年多之前 回复

iftop iftop iftop 命令可以查看到吧

qqaazz211
的阿尔额 是可以看到,但这个命令只能在linux命令行中使用吧,我是需要采集这个ip地址、流量数据,并且实时的展示在web前端,后期还会利用已经采集的流量数据做一些统计分析。
2 年多之前 回复

站长工具引入即可,别搞得那么费劲

java的话,可以自己在apache,ngnix等web服务器上挂钩来统计流量,这样最精确,而且可以分用户统计。然而会有一些cpu开销。

qqaazz211
的阿尔额 能给个大致思路么?我看了下nginx有个access日志记录,里面记录有客户端(用户)IP地址、访问时间、请求页面大小等信息,假如分析这个日志信息的话,感觉实时性就不大好了
2 年多之前 回复

用python、java等语言调用

iftop -B -t -s 1,读取 输出,并提取stdout

import os
output = os.popen('iftop -B -t -s 1')
print output

Java

public class test {  
    public static void main(String[] args){  
        InputStream in = null;  
        try {  
            Process pro = Runtime.getRuntime().exec(new String[]{"iftop",  
                                     "-t","-B",  
                                     "-s","1"});  
            pro.waitFor();  
            in = pro.getInputStream();  
            BufferedReader read = new BufferedReader(new InputStreamReader(in));  
            String result = read.readLine();  
            System.out.println("INFO:"+result);  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }  
} 

数据示例

interface: eth0
IP address is: 10.104.162.250
MAC address is: 52:54:00:34:42:0b
Listening on eth0
   # Host name (port/service if enabled)            last 2s   last 10s   last 40s cumulative
--------------------------------------------------------------------------------------------
   1 10.104.162.250                           =>       146B       146B       146B       292B
     183.240.27.134                           <=       208B       208B       208B       416B
   2 10.104.162.250                           =>        48B        48B        48B        96B
     10.59.171.76                             <=        48B        48B        48B        96B
--------------------------------------------------------------------------------------------
Total send rate:                                       194B       194B       194B
Total receive rate:                                    256B       256B       256B
Total send and receive rate:                           450B       450B       450B
--------------------------------------------------------------------------------------------
Peak rate (sent/received/total):                       194B       256B       450B
Cumulative (sent/received/total):                      388B       512B       900B
============================================================================================

读到这个数据了,怎么处理就看你了。挺容易了。

如果想要数据的某一部分 用sed和 awk进一步处理一下就好了

u014762921
Vtamins 回复的阿尔额: 循环调用不就行了
2 年多之前 回复
qqaazz211
的阿尔额 这个脚本只能一次运行,只能获取一次数据吧。我这边是需要一直获取这些数据
2 年多之前 回复
qqaazz211
的阿尔额 者脚本
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐