先展示下grafana 的一张大图。

看图还是比较炫酷的,那怎么才能够展示这样的大屏,咱们一步一步拆解

用到组件:nginx ,filebeat,logstash,elasticsearch,grafana

流程图如下:

1、nginx代理设置

log_format  elklog '$remote_addr - $remote_user [$time_local] "$host" $server_port "$request" ''$status $body_bytes_sent $bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for" $request_time ''"$upstream_response_time" "$upstream_addr" "$upstream_status" ';

2、filebeat 将nginx日志发往logstash,编辑filebeat.yml

filebeat.inputs:
- type: logenabled: truepaths:- /opt/servers/nginx/logs/access.portal.*.log- /opt/servers/nginx/logs/access.*.logfields:filetype: nginx   #这一行的key:value都可以自己定义fields_under_root: trueoutput.logstash:hosts: ["logstash001:5044"]

3、logstash解析nginx日志写入elasticsearch


input {beats {port => 5044 #设置专用端口用于接受filebeat的日志}
}
filter {    # nginx 日志if ([fields][filetype] == "nginx") or ([fields][filetype] == "nginx-records") {grok {match => {"message" => "%{IP:remote_addr} - (?:%{DATA:remote_user}|-) \[%{HTTPDATE:timestamp}\] \"%{DATA:host}\" %{NUMBER:server_port} \"%{WORD:request_method} %{DATA:request} HTTP/%{NUMBER:httpversion}\" %{NUMBER:status} %{NUMBER:body_bytes_sent} %{NUMBER:bytes_sent} \"(?:%{DATA:http_referer}|-)\" \"%{DATA:http_user_agent}\" \"(?:%{DATA:http_x_forwarded_for}|-)\" (?:%{DATA:request_time}|-) \"%{DATA:upstream_response_time}\" \"%{DATA:upstream_addr}\" \"%{NUMBER:upstream_status}\""}}urldecode{field => [ "request" ]}#解析requestmutate {add_field => { "http_request" => "%{request}" } #先随便创建一个字段,把request的值传给它。}#分割http_requestmutate {split  => [ "http_request"  , "?" ]   #http_request以问号为切割点add_field => [ "url" ,  "%{[http_request][0]}" ]    #取出数组中第一个值,同时添加url为新的field}#存在 [http_request][1] 机型解析参数if[http_request][1] {mutate {add_field => [ "args" ,  "%{[http_request][1]}" ]    #取出http_request数组中第一个值,同时添加args为新的field}kv {source => "args"field_split => "&"target => "query"}#删除args字段mutate {remove_field => [ "args" ]}}#删除http_request字段mutate {remove_field => [ "http_request" ]}geoip {#multiLang => "zh-CN"target => "geoip"source => "remote_addr"database => "/home/hadoop/logstash/vendor/bundle/jruby/2.5.0/gems/logstash-filter-geoip-6.0.5-java/vendor/GeoLite2-City.mmdb"    #指定库的位置add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ]add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}" ]# 去掉显示 geoip 显示的多余信息remove_field => ["[geoip][latitude]", "[geoip][longitude]", "[geoip][country_code]", "[geoip][country_code2]", "[geoip][country_code3]", "[geoip][timezone]", "[geoip][continent_code]", "[geoip][region_code]"]}mutate {#重名字段改名rename  => { "remote_addr" => "client_ip" } #将key字段改名。rename  => { "http_x_forwarded_for" => "xff" } #将key字段改名。# rename  => { "host" => "domain" } #将key字段改名。rename  => { "http_referer" => "referer" } #将key字段改名。rename  => { "request_time" => "responsetime" } #将key字段改名。rename  => { "upstream_response_time" => "upstreamtime" } #将key字段改名。rename  => { "body_bytes_sent" => "size" } #将key字段改名。rename  => { "upstream_addr" => "upstreamhost" } #将key字段改名。#copy字段copy => { "host" => "domain" } #copy _ProductID字段改名。copy => { "client_ip" => "server_ip" }}mutate {convert => [ "size", "integer" ]convert => [ "status", "integer" ]convert => [ "responsetime", "float" ]convert => [ "upstreamtime", "float" ]convert => [ "[geoip][coordinates]", "float" ]# 过滤 filebeat 没用的字段,这里过滤的字段要考虑好输出到es的,否则过滤了就没法做判断remove_field => [ "ecs","agent","cloud","@version","input","logs_type","message" ]}# 根据http_user_agent来自动处理区分用户客户端系统与版本useragent {source => "http_user_agent"target => "ua"# 过滤useragent没用的字段remove_field => [ "[ua][minor]","[ua][major]","[ua][build]","[ua][patch]","[ua][os_minor]","[ua][os_major]" ]}#创建索引日期字段ruby{code => "event.set('index_day', (event.get('@timestamp').time.localtime + 0*60*60).strftime('%Y.%m.%d'))"}}   }
filter {if "_grokparsefailure" in [tags] {drop {}}
}output {if [fields][filetype] == "nginx" {elasticsearch {hosts => ["elasticsearch001:9200"]index => "logstash-nginx-log-%{index_day}"}# file {#path => "/home/hadoop/logstash-nginx-log-%{+YYYY.MM.dd}"#path => "/home/hadoop/logstash-nginx-log-%{index_day}"#}}
}

4、在kibana中查看elasticsearch数据

5、在grafana配置elasticsearch数据源

 需要注意的是最新的dashboard需要选择7.10+的elasticsearch,保存数据源后

AKA ES Nginx Logs | Grafana Labs 查看dashboard id:11190

在grafana中导入

完工。

本人喜欢研究新技术,并有丰富的大数据经验,希望和各位小伙伴探讨技术。

grafana监控nginx日志相关推荐

  1. 通过监控Nginx日志来实时屏蔽高频恶意访问的IP

    通过监控Nginx日志来实时屏蔽高频恶意访问的IP 目前在我的VPS上主要通过两种方式来限制ip的访问次数. 通过Nginx的limit_req配置来限制同一ip在一分钟内的访问次数 通过Nginx ...

  2. ELK集群部署(八)之监控nginx日志

    监控nginx日志 103上安装nginx yum install -y nginx启动nginx systemctl start nginx访问 http://192.168.56.103/ 配置n ...

  3. php 监控nginx日志,nginx启用status监控服务器状态的方法详解

    nginx和php-fpm一样内建了一个状态页,对于想了解nginx的状态以及监控nginx非常有帮助. 在Nginx中的stub_status模块主要用于查看Nginx的一些状态信息.本模块默认是不 ...

  4. ELK 6下日志平台监控Nginx日志构建实践

    整体架构 整体架构主要分为 4 个模块,分别提供不同的功能 Filebeat:轻量级数据收集引擎.基于原先 Logstash-fowarder 的源码改造出来.换句话说:Filebeat就是新版的 L ...

  5. php 监控nginx日志文件,Nginx 日志分析及实时监控

    本文档以 Nginx 日志为例,介绍如何使用日志分析服务来分析 Nginx 日志中的各种指标. 许多个人站长选取了 Nginx 作为服务器搭建网站,在对网站访问情况进行分析时,需要对 Nginx 访问 ...

  6. prometheus+grafana监控nginx

    ​在prometheus需要向ngxin中打入探针,通过探针获取ngxin信息,并通过接口输出.下文将讲述如何监控ngxin. 1.下载 为了各位小伙伴方便,这里提供了一波下载地址,如果模板不是特别满 ...

  7. Grafana分析Nginx日志

    配置Groub by -Terms时报错,提示需要设置fielddata=true,报错内容大概如下: "Fielddata is disabled on text fields by de ...

  8. Zabbix4.4 技术解决方案(实战篇) 监控 Nginx 日志 统计WEB网站PV和UV

    PV(Page View)访问量, 即页面浏览量或点击量,衡量网站用户访问的网页数量:在一定统计周期内用户每打开或刷新一个页面就记录1次,多次打开或刷新同一页面则浏览量累计. UV (unique v ...

  9. 【lnmp+ELK+Nginx+GeoIP】超详细新版ELK8.5.0解析收集Nginx日志并实现数据可视化与IP地址地图可视化教程-2022年11月版

    超详细新版ELK8.5.0+lnmp1.9解析收集Nginx日志并实现数据可视化与IP地址地图可视化教程-2022年11月版 前言 1.基础环境和所需要的软件包 1.1服务器配置(仅供参考) 1.2 ...

最新文章

  1. 生信分析-TBtools绘制热图
  2. jdbc批量调用oracle存储过程,oracle学习笔记(二十三)——JDBC调用存储过程以及批量操作...
  3. HR面 - 十大经典提问
  4. 使用TensorFlow,GPU和Docker容器进行深度学习
  5. 斗地主AI算法——第十四章の主动出牌(3)
  6. 单片机广告灯实验总结_温州很强的ly51s单片机程序开发公司
  7. 二、python_base
  8. 104种***清除方法
  9. 实验一 熟悉常用的Linux操作,实验2-熟悉常用的HDFS操作
  10. 解决Selection executes are supported only in the DbVisualizer Personal edition
  11. 券商交易模式下的单产品多券商方案
  12. 《京东话费充值系统架构演进实践》读后感
  13. 【原创】彻底解决2440触摸屏跳点以及抖动问题
  14. ORB-SLAM3相对于ORB-SLAM2有哪些优势?
  15. 羌笛声声胡笳怨,此心长寄天涯远
  16. FreeBSD网站平台建设全过程(一、系统安装)
  17. 无线mesh网络(多跳(multi-hop)网络)
  18. 第三十六章 SQL函数 CURRENT_TIME
  19. python股票数据接口实战:根据不同均线的关系判断买卖点
  20. web应用程序的方法

热门文章

  1. 腾讯Tinker 热修复 Andriod studio 3.0 配置和集成(二)多渠道打包和补丁发布
  2. 云原生趋势下的迁移与容灾思考
  3. 美服刺激战场显示服务器无反,和平精英改端游画面,和平精英改画质无反应?...
  4. 社区团购的“生意经”,有钱就能“念”好吗?
  5. 超详细图解:如何使用 WordPress搭建一个个人博客?
  6. Sqoop-1.4.7-部署与常见案例
  7. 新注册的Linkedin账号如何拓展人脉
  8. 江西学校计算机排名2015年,江西截止2021年共计107所大学,排名前22名是这些院校...
  9. PySpark学习案例——北京空气质量分析
  10. 北京奥特易雨量灯光传感器