ELK监控日志nginx(集成Geoip)

实验环境:之前ELK已经初步安装完毕了,只需要将nginx的日志发送过来就可以了,nginx的IP为:192.168.137.101。因为服务端只是收集日志的所以下面的操作完全是在nginx机器上面完成的。在这里感谢《ELK stack权威指南》这本书,下面配置的内容都是借鉴的这本书。

#/opt/logstash/bin/logstash-plugin install logstash-filter-geoip

安装这个插件,以前的老版本需要自己下载GeoIP还有这个插件的数据库,现在都不需要了,已经集合成插件了,直接在配置文件调用就好了。

#vim /etc/logstash/conf.d/nginx-out-es.conf

我的logstash配置文件在这个路径,里面的配置内容都是按照上面提到的那本书配置的

input {
    file {
        path => "/usr/local/nginx/logs/access.log"
        codec => json
    }
}
filter {
    geoip {
        source => "clientip"
        fields => ["city_name", "country_code2", "country_name", "latitude", "longitude", "region_name"]
        remove_field => ["[geoip][latitude]", "[geoip][longitude]"]
    }
    mutate {
        split => [ "upstreamtime", "," ]
    }
    mutate {
        convert => [ "upstreamtime", "float" ]
    }
}
output {
    elasticsearch {
        hosts => ["192.168.137.191:9200"]
        index => "nginx-access-log-%{+YYYY.MM.dd.HH}"
        workers => 1
        template_overwrite => true
    }
}

#vim /usr/local/nginx/conf/nginx.conf

log_format json ‘{"@timestamp":"$time_iso8601",‘
                 ‘"host":"$server_addr",‘
                 ‘"clientip":"$remote_addr",‘
                 ‘"size":$body_bytes_sent,‘
                 ‘"responsetime":$request_time,‘
                 ‘"upstreamtime":"$upstream_response_time",‘
                 ‘"upstreamhost":"$upstream_addr",‘
                 ‘"http_host":"$host",‘
                 ‘"url":"$uri",‘
                 ‘"xff":"$http_x_forwarded_for",‘
                 ‘"referer":"$http_referer",‘
                 ‘"agent":"$http_user_agent",‘
                 ‘"status":"$status",‘
                 ‘"country_code":"$geoip_city_country_code",‘
                 ‘"country_code3":"$geoip_city_country_code3",‘
                 ‘"city_country_name":"$geoip_city_country_name",‘
                 ‘"region_name":"$geoip_region",‘
                 ‘"city_name":"$geoip_city",‘
                 ‘"postal_code":"$geoip_postal_code"}‘;
access_log  logs/access.log  json;

这个nginx的配置内容也是根据书上面的内容写出来的,最下面的一些城市信息是自己填上去的。

#/opt/logstash/bin/logstash --configtest -f /etc/logstash/conf.d/nginx-out-es.conf

测试一下logstash的配置文件语法是否正确

#service nginx restart

重启nginx使配置文件生效

#nohup /opt/logstash/bin/logstash -f /etc/logstash/conf.d/nginx-out-es.conf &

后台静默启动longstash

下面就可以再服务端查看接收到的日志信息了

上面图片是内网访问的结果

上面这个图片是公网来访问的结果,会自动添加地理位置及城市信息和坐标位置



除了使用上述的方法还可以使用nginx自己本身的geoip模块(需要下载依赖库GeoIP,GeoIP-devel,perl-Geo-IP)来分析来访的IP地址,然后将完整的信息全都输送到ES端,但是这个方法会增加nginx的一些资源消耗。方法很简单在添加完模块后下载GeoIP的数据库文件,在nginx里面指定GeoIP数据库的文件路径,记得添加权限否则无法读取,其他的配置内容不需要修改,重启nginx就可以了。具体方法nginx的官网是有的很详细。

时间: 2024-08-03 06:22:11

ELK监控日志nginx(集成Geoip)的相关文章

离线部署ELK+kafka日志管理系统

1.简介 对于日志来说,最常见的需求就是收集.查询.显示,正对应logstash.elasticsearch.kibana的功能. ELK日志系统在系统中,主要可解决的问题: 基于日志的数据挖掘 问题排查,上线检查 根据关键字查询日志详情 异常数据自动触发消息通知 服务器监控,应用监控,Bug管理 统计分析,比如接口的调用次数.执行时间.成功率等 性能分析,用户行为分析,安全漏洞分析,时间管理 Logstash: Logstash是一个用来搜集.分析.过滤日志的工具.它支持几乎任何类型的日志,包

Centos7 之安装Logstash ELK stack 日志管理系统

一.介绍 The Elastic Stack - 它不是一个软件,而是Elasticsearch,Logstash,Kibana 开源软件的集合,对外是作为一个日志管理系统的开源方案.它可以从任何来源,任何格式进行日志搜索,分析获取数据,并实时进行展示.像盾牌(安全),监护者(警报)和Marvel(监测)一样为你的产品提供更多的可能. Elasticsearch:搜索,提供分布式全文搜索引擎 Logstash: 日志收集,管理,存储 Kibana :日志的过滤web 展示 Filebeat:监控

2018年ElasticSearch6.2.2教程ELK搭建日志采集分析系统(教程详情)

章节一 2018年 ELK课程计划和效果演示1.课程安排和效果演示简介:课程介绍和主要知识点说明,ES搜索接口演示,部署的ELK项目演示es: localhost:9200kibana http://localhost:5601/ 章节二 elasticSearch 6.2版本基础讲解到阿里云部署实战 2.搜索引擎知识介绍和相关框架简介:介绍搜索的基本概念,市面上主流的搜索框架elasticSearch和solr等对比什么是搜索:在海量信息中获取我们想要的信息传统做法:1.文档中使用系统的Fin

ELK统一日志管理平台第三篇-logstash grok插件的使用

1. ELK统一日志管理平台第三篇-logstash grok插件的使用   在本篇博文中,主要讲解如下几个知识点和实践经验,供大家参考:   1. 关于JAVA应用程序的日志内容标准规范:   2. 如何使用logstash的grok插件来完成message字段的拆分:   3. 定时删除Es的索引: 1. 关于JAVA应用程序的日志内容标准规范:   最近公司一直在主推ELK这个项目,而我是ELK这个项目的运维人员.所以针对ELK项目会有很多经验输出:由于我们公司的业务系统以JAVA语言开发

NET 的 ELK 监控方案

NET 的 ELK 监控方案 https://www.jianshu.com/p/3c26695cfc38 背景就不多说了,谁家没有个几个十系统在跑啊.如何监控这几十个系统的运行状况,对于非运营人员来说,太TM五花八门了.. 背景就不多说了,谁家没有个几个十系统在跑啊.如何监控这几十个系统的运行状况,对于非运营人员来说,太TM五花八门了... 名词 ELK = ElashticSearch + LogStash + Kibana Lucene 是搜索引擎,搜索引擎的特点就不用说了吧.但是使用起来

ELK收集日志到mysql

场景需求 在使用ELK对日志进行收集的时候,如果需要对数据进行存档,可以考虑使用数据库的方式.为了便于查询,可以同时写一份数据到Elasticsearch 中. 环境准备 CentOS7系统: 192.168.20.60 node1 Kibana ES Logstash Nginx 192.168.20.61 node2 ES MariaDB这里使用收集Nginx日志到数据库和ES中作为示例. 配置数据库 安装好数据库后,配置,并授权: MariaDB [(none)]> create data

ELK访问日志

为什么使用ELK日志分析:一般我们需要进行日志分析场景:直接在日志文件中 grep.awk 就可以获得自己想要的信息.但在规模较大的场景中,此方法效率低下,面临问题包括日志量太大如何归档.文本搜索太慢怎么办.如何多维度查询.需要集中化的日志管理,所有服务器上的日志收集汇总.常见解决思路是建立集中式日志收集系统,将所有节点上的日志统一收集,管理,访问. 准备两台测试服务器:Centos7(1),Centos(2)运行内存:最少2G以上把 一,配置环境Centos(1):操作 → 添加本地DNS解析

基于sentry的前端错误监控日志系统(部署sentry服务器/前端项目部署)-让前端最快的定位到生产问题

背景 在这越来越发达的网络时代,web应用也是越来越复杂,尤其是前端的开发,也是越来越受重视. 所以在我们前端开发完成后,会有一些列的web应用的上线验证,如自测.QA测试.code review 等,以确保 应用能在生产上没有事故. 但是事以愿违,很多时候我们都会接受的客户的一些线上问题,这些问题有时候可能你是自己开发的原因本身存 在的问题,这样的问题一般能够在测试环境重现,我们很快的能定位到问题关键位置.但是,很多时候有一些问题, 我们在测试中并未发现,可是在线上却有部分人出现了,问题确确实

Nginx的GeoIp模块的应用与使用

使用GeoIP模块的原因(Why):由于项目的需要,需要对不同城市访问的客户进行请求转发,eg: 当天津用户A访问www.XXXX.com的时候,Nginx把这个请求转发到天津的服务器以及天津的域名上去,浏览器自动跳转tj.XXXX.com 当广州用户B访问www.XXXX.com的时候,Nginx把这个请求转发到广州的服务器以及广州的域名上去,浏览器自动跳转gz.XXXX.com 使用GeoIP模块的目的(What):博主理解为两个层面,第一技术层级的,可以减轻某个服务器的负载,做到负载均衡的