grafana监控nginx日志
先展示下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日志相关推荐
- 通过监控Nginx日志来实时屏蔽高频恶意访问的IP
通过监控Nginx日志来实时屏蔽高频恶意访问的IP 目前在我的VPS上主要通过两种方式来限制ip的访问次数. 通过Nginx的limit_req配置来限制同一ip在一分钟内的访问次数 通过Nginx ...
- ELK集群部署(八)之监控nginx日志
监控nginx日志 103上安装nginx yum install -y nginx启动nginx systemctl start nginx访问 http://192.168.56.103/ 配置n ...
- php 监控nginx日志,nginx启用status监控服务器状态的方法详解
nginx和php-fpm一样内建了一个状态页,对于想了解nginx的状态以及监控nginx非常有帮助. 在Nginx中的stub_status模块主要用于查看Nginx的一些状态信息.本模块默认是不 ...
- ELK 6下日志平台监控Nginx日志构建实践
整体架构 整体架构主要分为 4 个模块,分别提供不同的功能 Filebeat:轻量级数据收集引擎.基于原先 Logstash-fowarder 的源码改造出来.换句话说:Filebeat就是新版的 L ...
- php 监控nginx日志文件,Nginx 日志分析及实时监控
本文档以 Nginx 日志为例,介绍如何使用日志分析服务来分析 Nginx 日志中的各种指标. 许多个人站长选取了 Nginx 作为服务器搭建网站,在对网站访问情况进行分析时,需要对 Nginx 访问 ...
- prometheus+grafana监控nginx
在prometheus需要向ngxin中打入探针,通过探针获取ngxin信息,并通过接口输出.下文将讲述如何监控ngxin. 1.下载 为了各位小伙伴方便,这里提供了一波下载地址,如果模板不是特别满 ...
- Grafana分析Nginx日志
配置Groub by -Terms时报错,提示需要设置fielddata=true,报错内容大概如下: "Fielddata is disabled on text fields by de ...
- Zabbix4.4 技术解决方案(实战篇) 监控 Nginx 日志 统计WEB网站PV和UV
PV(Page View)访问量, 即页面浏览量或点击量,衡量网站用户访问的网页数量:在一定统计周期内用户每打开或刷新一个页面就记录1次,多次打开或刷新同一页面则浏览量累计. UV (unique v ...
- 【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 ...
最新文章
- 生信分析-TBtools绘制热图
- jdbc批量调用oracle存储过程,oracle学习笔记(二十三)——JDBC调用存储过程以及批量操作...
- HR面 - 十大经典提问
- 使用TensorFlow,GPU和Docker容器进行深度学习
- 斗地主AI算法——第十四章の主动出牌(3)
- 单片机广告灯实验总结_温州很强的ly51s单片机程序开发公司
- 二、python_base
- 104种***清除方法
- 实验一 熟悉常用的Linux操作,实验2-熟悉常用的HDFS操作
- 解决Selection executes are supported only in the DbVisualizer Personal edition
- 券商交易模式下的单产品多券商方案
- 《京东话费充值系统架构演进实践》读后感
- 【原创】彻底解决2440触摸屏跳点以及抖动问题
- ORB-SLAM3相对于ORB-SLAM2有哪些优势?
- 羌笛声声胡笳怨,此心长寄天涯远
- FreeBSD网站平台建设全过程(一、系统安装)
- 无线mesh网络(多跳(multi-hop)网络)
- 第三十六章 SQL函数 CURRENT_TIME
- python股票数据接口实战:根据不同均线的关系判断买卖点
- web应用程序的方法
热门文章
- 腾讯Tinker 热修复 Andriod studio 3.0 配置和集成(二)多渠道打包和补丁发布
- 云原生趋势下的迁移与容灾思考
- 美服刺激战场显示服务器无反,和平精英改端游画面,和平精英改画质无反应?...
- 社区团购的“生意经”,有钱就能“念”好吗?
- 超详细图解:如何使用 WordPress搭建一个个人博客?
- Sqoop-1.4.7-部署与常见案例
- 新注册的Linkedin账号如何拓展人脉
- 江西学校计算机排名2015年,江西截止2021年共计107所大学,排名前22名是这些院校...
- PySpark学习案例——北京空气质量分析
- 北京奥特易雨量灯光传感器