模拟公网ip访问接口,elk配合geoip采集日志展示各城市对网站的访问情况

参考博客:

ELK-图示nginx中ip的地理位置 - dance_man - 博客园

如何映射用户位置与GeoIP的和ELK(Elasticsearch,Logstash和Kibana)

实践步骤: ( 实操代码在https://download.csdn.net/download/weixin_36013896/33930564)

1 测试环境首先模拟出公网访问的日志(生产环境不需要模拟)

中国电信IP段表:http://www.023wg.com/ISP-CN-IP/ISP-CN-DX.html

把上面的ip段,保存到iplist.txt,通过test.py找出n个公网ip,写入到ip.txt

然后通过api.py发起请求,从ip.txt里的ip中随机取出作为X-Forwarded-For的值,达到伪装ip的目的,

api.py发起请求的接口是通过nginx进行代理的,

nginx的日志格式如下:

log_format main '$remote_addr - $remote_user [$time_local] "$request" '

'$status $body_bytes_sent "$http_referer" '

'"$http_user_agent" "$http_x_forwarded_for"';

首字段remote_addr会作为后续的真实ip,这里需要在nginx配置中把remote_addr,改为X-Forwarded-For,必应出来的做法:

nginx安装需要添加--with-http_realip_module 参数,然后在nginx配置加上以下红色的两行:

                set_real_ip_from   0.0.0.0/0;
                real_ip_header     X-Forwarded-For;

 

        server {
            listen           80;
            server_name      dev-gin-k8s.kkkk.com;
            access_log  /home/logs/ms/dev/backend/access.log main;
            error_log  /home/logs/ms/dev/backend/error.log ;
            location / {
                set_real_ip_from   0.0.0.0/0;
                real_ip_header     X-Forwarded-For;
                proxy_set_header Host      $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_http_version  1.1;
                proxy_connect_timeout  5s;
                proxy_pass http://gin-k8s:8090;
            }
        }

查看nginx日志: 查看首字段变成了公网ip

[root@flask-backend ~]# tail -f /home/logs/ms/dev/backend/access.log

222.90.0.18 - - [23/Oct/2021:00:37:42 +0800] "POST /k8s/get_deployment_list HTTP/1.1" 200 1262 "-" "python-requests/2.26.0" "222.90.0.18"

61.144.0.1 - - [23/Oct/2021:00:37:42 +0800] "POST /k8s/get_deployment_list HTTP/1.1" 200 1262 "-" "python-requests/2.26.0" "61.144.0.1"

60.176.0.23 - - [23/Oct/2021:00:37:42 +0800] "POST /k8s/get_deployment_list HTTP/1.1" 200 1262 "-" "python-requests/2.26.0" "60.176.0.23"

114.138.0.117 - - [23/Oct/2021:00:37:42 +0800] "POST /k8s/get_deployment_list HTTP/1.1" 200 1262 "-" "python-requests/2.26.0" "114.138.0.117"

接下来就简单了:

filebeat采集nginx日志给logstash扔到es里:

filebeat配置

[root@flask-backend ~]# cat /app/filebeat/filebeat.yml
filebeat.prospectors:
- type: log
  paths:
    - /home/logs/ms/dev/backend/access.log
  fields:
    project: ms
    env: dev
    role: proxy
    log_type: nginx
  scan_frequency: 10s
  tail_files: true
  fields_under_root: true
output.logstash:
  hosts: ["192.168.11.200:5045"]

logstash的配置:

[root@flask-backend ~]# cat /app/logstash/etc/config/geoip.conf

[root@flask-backend ~]# cat /app/logstash/etc/config/geoip.conf
input {
    beats {
        port => 5045
    }

}
filter {
    grok {
        match => ["message","%{COMBINEDAPACHELOG}%{SPACE}%{QS:x_forwarded_for}"]
    }
    geoip {
        source => "clientip"
        target => "geoip"
        database => "/data/filebeat/geoip/GeoLite2-City.mmdb"
        add_field => ["[geoip][coordinates]", "%{[geoip][longitude]}" ]
        add_field => ["[geoip][coordinates]", "%{[geoip][latitude]}"  ]
    }
    mutate {
        remove_field => ['beat']
    }
    date {
        match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]
    }
}

output {
     if "_grokparsefailure" not in [tags] {
          elasticsearch {
              hosts => ["http://192.168.11.200:9200"]
              index => "logstash-kibana_nginx-%{+YYYY.MM}"
          }
     }
}

上述的GeoLite2-City.mmdb 文件是进入https://www.maxmind.com/en/accounts/625659/geoip/downloads,注册账号,下载的免费版城市文件,解压就有GeoLite2-City.mmdb,

位置随意,和logstash对应上就可以.

最后通过kibana查看日志:会发现多了geoip.xx等地理位置字段:

kibana Visulize添加的Coordinate Map图表 老版本叫tile map,选择好参数就可以出图了

总结:                 运维无他,就是干

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
网站模拟访问机】 本程序是一款通过模拟IE访问来增加网站的pv流量,并通过模拟百度和谷歌的关键字搜索来增加网站的搜索排名及网站收录。 特点: 1、采用代理IP的真实访问模拟,适应各种统计软件; 2、模拟访问速度根据时段智能控制,使数据看上去更真实; 3、网页深度访问模拟,区别于其他软件只能刷指定的几个页面, 本软件根据设定的地址,进行搜索,可以访问页面内最大20层深度的页面。 4、模拟真实的百度和谷歌搜索,并自动翻页查找搜索结果,区别于其它软件的直接url访问; 5、代理地址筛选,直接粘贴代理网站的地址,自动进行格式化和晒选,生成列表文件备用; 备注: 1、被模拟网页必须规范化html代码,并保证打开速度; 2、每个网页的title必须正确; 3、所有页面中不得有死链接; 4、所输入配置文件的关键字必须在百度和谷歌搜索引擎中能搜索到本站链接,建议在前三页之内。 5、本程序采用netwinform框架开发,运行程序需要先安装 Microsoft .NET Framework 3.5 安装包 安装包下载地址可参考 http://www.netwinform.com/plusinfo.aspx?id=5 使用: 第一步、下载后,解压缩; 第二步、修改配置文件并保存; 第三步、运行主程序 webpv_autoadd.exe 第四步、载入代理IP地址列表 第五步、点启动按钮启动相应的模拟器(可同时启动三个模拟器,也可以启动多个客户端) 注册: 本软件与域名进行绑定,不限客户端数量。 试用版会每个小时自动终止网站模拟,并弹出注册提示框,点击【继续试用】按钮后,再重新点启动按钮,可以继续试用。如果想支持本软件,长期使用用本软件,建议联系软件作者索取软件注册码。 【NetWinForm程序园】 网址: http://www.netwinform.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_36013896

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值