使用ELK收集解析nginx日志和kibana可视化仪表盘

文章目录

  • ELK生产环境配置
    • filebeat 配置
    • logstash 配置
  • kibana仪表盘配置
  • 配置nginx转发ES和kibana
  • ELK设置账号和密码

ELK生产环境配置

ELK收集nginx日志有多种方案,一般比较常见的做法是在生产环境服务器搭建filebeat 收集nginx的文件日志并写入到队列(kafka/redis),然后在另一台机器上消费队列中的日志数据并流转到logstash中进行解析处理,然后再输出到elasticsearch中,再由kibana展示到页面上。

虽然logstash也能直接收集日志,但因为filebeat比logstash更轻量级,不会耗费太多系统资源,因此适合在生产环境机器上部署filebeat

  • 生产环境机器:filebeat ---> redis
  • 日志处理机器:redis ---> logstash ---> elasticsearch ---> kibana

filebeat 配置

# vim filebeat-5.6.9/filebeat.ymlfilebeat.inputs: #用于定义数据原型
- type: log #指定数据的输入类型,这里是log,即日志,是默认值,还可以指定为stdin,即标准输入enabled: true #启用手工配置filebeat,而不是采用模块方式配置filebeatpaths: #用于指定要监控的日志文件,可以指定一个完整路径的文件,也可以是一个模糊匹配格式,如 nginx_*.log- /usr/local/nginx/logs/access.log# tags: ["access"]fields:app: www #表示www项目type: nginx-access #通过type区分哪种日志,这里表示是nginx的access日志fields_under_root: true- type: logpaths:- /usr/local/nginx/logs/error.log# tags: ["error"]fields:app: wap #表示wap项目type: nginx-error #通过type区分哪种日志,这里表示是nginx的error日志fields_under_root: truename: "172.16.213.157" #设置filebeat收集的日志中对应主机的名字,如果配置为空,则使用该服务器的主机名。这里设置为IP,便于区分多台主机的日志信息。output.redis: #输出到redis的配置enabled: true #表明这个模块是否启用hosts: ["192.168.0.1"]port: 6379password: "123456"key: "filebeat"db: 5datatype: listoutput.kafka: #输出到kafka的配置enabled: false #表明这个模块是否启用hosts: ["172.16.213.51:9092", "172.16.213.75:9092", "172.16.213.109:9092"] #指定输出数据到kafka集群上,地址为kafka集群IP加端口号。version: "0.10"topic: '%{[fields][log_topic]}' #指定要发送数据给kafka集群的哪个topic,若指定的topic不存在,则会自动创建此topic。partition.round_robin:reachable_only: trueworker: 2required_acks: 1compression: gzipmax_message_bytes: 10000000
logging.level: debug #定义filebeat的日志输出级别,有critical、error、warning、info、debug五种级别可选,在调试的时候可选择debug模式。

启动filebeat并且不输出内容
nohup ./filebeat -e -c filebeat.yml >/dev/null 2>&1 &

查看redis:

redis-cli -h 192.168.0.1 -p 6379 -a 123456192.168.0.1:6379[5]> llen filebeat
(integer) 101192.168.0.1:6379[5]> lrange filebeat 0 0
1) "{\"@timestamp\":\"2023-08-30T06:21:56.896Z\",\"beat\":{\"hostname\":\"yourhost\",\"name\":\"yourhost\",\"version\":\"5.6.9\"},\"input_type\":\"log\",\"message\":\"{\\\"@timestamp\\\": \\\"2023-08-30T14:21:55+08:00\\\", \\\"remote_addr\\\": \\\"222.128.101.33\\\", \\\"remote_user\\\": \\\"-\\\", \\\"body_bytes_sent\\\": \\\"8637\\\", \\\"request_time\\\": \\\"2.554\\\", \\\"status\\\": \\\"200\\\", \\\"request_uri\\\": \\\"/user/info\\\", \\\"request_method\\\": \\\"POST\\\", \\\"http_referrer\\\": \\\"https://www.test.com/\\\", \\\"http_x_forwarded_for\\\": \\\"-\\\"}\",\"offset\":35407874,\"source\":\"/usr/local/nginx/logs/access.log\",\"type\":\"log\"}"

logstash 配置

下面是一个logstash从redis中读取日志数据并解析输出到ES的完整配置:

# vim logstash-7.17.12/config/logstash-from-redis-to-es.confinput {redis {host => "192.168.0.1"port => 6379password => "123456"db => "5"data_type => "list"key => "filebeat"}
}filter {if [app] == "www" { #如果是www项目(下面还可以再写else if ... ),对应上面filebeat配置信息的fields.appif [type] == "nginx-access" { #如果是nginx的access日志,对应上面filebeat配置信息的fields.typejson { #解析json模块source => "message" #将message中的每个字段解析到一级节点remove_field => ["message","beat"] #经过上面source解析后,移除原本的message字段,避免日志内容冗余;beat字段也没啥用,所以也移除。}geoip { #根据ip地址解析 国家和城市 信息source => "remote_addr" #根据nginx日志的remote_addr字段解析target => "geoip" #解析后的结果放到这个字段中database => "/home/es/soft/GeoLite2-City.mmdb" #解析位置信息的数据库文件所在路径add_field => ["[geoip][coordinates]", "%{[geoip][longitude]}"] #添加字段:经纬度信息add_field => ["[geoip][coordinates]", "%{[geoip][latitude]}"]}mutate { #修改某个字段的数据,比如类型转换convert => ["[geoip][coordinates]", "float"]  }}}
}output {elasticsearch {hosts  => ["http://192.168.0.212:9200","http://192.168.0.213:9200","http://192.168.0.214:9200"]index  => "logstash-%{type}-%{+YYYY.MM.dd}" #这里的 %{type} 是 filebeat配置信息的fields.type 对应的值user => "elastic" #ES账号password => "123456" #ES密码}
}

GeoLite2-City.mmdb 下载地址:https://download.csdn.net/download/rxbook/88274725

启动logstash:nohup ./bin/logstash -f ./config/logstash-from-redis-to-es.conf >/dev/null 2>&1 &

查看kibana收集到的数据:
在这里插入图片描述
在这里插入图片描述

kibana仪表盘配置

kibana dashboard 是一个统计数据展示面板,可以通过不同的维度进行统计和展示。
我这里用kibana7.17.12版本演示,不同版本的kibana界面可能不一样。进入kibana --> Visualize Library --> Create new visualization --> Lens

按时间维度统计请求数量:
在这里插入图片描述

按HTTP code统计请求数量:
在这里插入图片描述
统计所有请求总数:
在这里插入图片描述

统计访问次数最多的url:
在这里插入图片描述
最终效果:
在这里插入图片描述

配置nginx转发ES和kibana

如果需要使用80端口访问ES或kibana页面,可以在nginx中配置代理转发9200或5601端口,配置如下:

server {listen  80;server_name     es.xxxx.com;location / {proxy_pass      http://127.0.0.1:9200;}
}server {listen  80;server_name     kibana.xxxx.com;location / {proxy_pass      http://127.0.0.1:5601;}
}

上面配置后就可以直接通过域名来访问kibana的页面(需要添加hosts)。

ELK设置账号和密码

修改ES的配置文件vi config/elasticsearch.yml 添加如下内容

http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: Authorization
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true

保存后重启ES,然后执行:./bin/elasticsearch-setup-passwords interactive,需要设置以下六种账户的密码elastic、apm_system、kibana、logstash_system、beats_system、remote_monitoring_user
输入y开始设置,六种密码设置完成后,需要再次重启ES。
在这里插入图片描述
然后打开ES的页面,账号:elastic,密码就是你刚才设置的密码。
在这里插入图片描述
设置kibana的密码,vi config/kibana.yml,添加:

elasticsearch.username: "elastic"
elasticsearch.password: "你在es中设置的密码"

然后重新启动kibana,再次访问,需要输入账号和密码。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/60836.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

掌握AI助手的魔法工具:解密Prompt(提示)在AIGC时代的应用「中篇」

文章目录 掌握AI助手的魔法工具:解密Prompt(提示)在AIGC时代的应用「中篇」一、指南原则1: 使用明确和具体的指令原则2: 给模型思考的时间 二、迭代三、总结与提取四、局限与改善五、总结 掌握AI助手的魔法工具:解密Prompt&#x…

Windows下将nginx等可执行文件添加为服务

Windows下将nginx等可执行文件添加为服务 为什么将可执行文件添加为服务?将可执行文件添加为服务的步骤步骤 1:下载和安装 Nginx步骤 2:添加为服务方法一:使用 Windows 自带的 sc 命令方法二:使用 NSSM(Non…

uniapp中使用原生canvas标签绘制视频帧来模拟拍照,拍照后将图绘制在另外一个canvas上编辑画图,这样反复操作

uniapp中使用原生canvas标签绘制视频帧来模拟拍照,拍照后将图绘制在另外一个canvas上编辑画图,这样反复操作会导致ios系统上白屏,canvas2d上下文为null,经查阅找到相关资料 IOS 创建Canvas过多导致getContext(‘2d’) 返回null 总 Canvas 内存…

Programming abstractions in C阅读笔记:p132-p137

《Programming Abstractions In C》学习第53天,p132-p137,3.2小节“strings”总结如下: 一、技术总结 3.2小节介绍了字符串的用法: 1.C语言是没有字符串(string)这种数据类型的,但是实际的场景中又很需要这种数据类…

自身免疫诊断原料——博迈伦

自身免疫诊断原料是指用于自身免疫性疾病诊断的试剂或材料。自身免疫性疾病是指机体免疫系统对自身组织发生异常免疫反应的疾病,如类风湿性关节炎、系统性红斑狼疮、多发性硬化症等。自身免疫诊断原料为这些疾病的早期筛查、诊断和监测提供了重要的工具。 以下是一些…

Python魔术方法

什么是魔术方法? 所有以双下划线__包起来的方法,统称为Magic Method(魔术方法),它是一种的特殊方法,普通方法需要调用,而魔术方法不需要显示调用就可以执行。 魔术方法在类或对象的某些事件出…

wow.js使用和动画只执行一次问题优化

wow.js配合第三方动画库可以让元素出现在屏幕时执行相关的动画 wow.js依赖于animate.css,首先在头部引用animate.css或者animate.min.css。在最底部或引入的css下面引用wow.js或者wow.min.js使用规则直接查看官网:wow.js — Reveal Animations When Scro…

【校招VIP】前端算法考察之排序

考点介绍: 不同的场景中,不同的排序算法执行效率不同。 稳定:冒泡、插入、归并 不稳定:选择、快速、堆排序、希尔排序 『前端算法考察之排序』相关题目及解析内容可点击文章末尾链接查看! 一、考点题目 1、使用js实…

EOCR-SE2/EOCRSE2在数控技术行业的应用

EOCR-SE2电动机保护器是施耐德EOCR系列中一款以低成本、高性能著称的产品,其广泛应用于各种机床设备中。 EOCRSE2-05RS品牌:施耐德,产地:韩国益山工厂,型号:EOCR-SE2,电流范围:3-30A&#xff0…

DQL语句的执行顺序

DQL语句的通用结构如下所示 Select 子段列表 From 表名列表 Where 条件列表 Group By 分组子段列表 Having 分组后条件列表 Order By 排序子段列表 Limit 分页参数在执行DQL语句时会有一定的执行顺序: 首先执行From 表名列表操作然后执行where 条件列表来指定查询…

541. 反转字符串 II

541. 反转字符串 II 给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。 如果剩余字符少于 k 个,则将剩余字符全部反转。 如果剩余字符小于 2k 但大于或等于 k 个&#xff…

工服穿戴检测算法 工装穿戴识别算法

工服穿戴检测算法 工装穿戴识别算法利用yolo网络模型图像识别技术,工服穿戴检测算法 工装穿戴识别算法可以准确地识别现场人员是否穿戴了正确的工装,包括工作服、安全帽等。一旦检测到未穿戴的情况,将立即发出警报并提示相关人员进行整改。Yo…

SpringBoot工具类—基于定时器完成文件清理功能

直接复制粘贴既可!! import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.io.File; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.ZoneOff…

浏览器调起摄像头

浏览器调起摄像头 <template><div class"body">这里什么都没有<video id"videoCamera" class"video"></video><button click"getCompetence" class"btn">打开摄像头</button><butt…

vue管理系统常用命令记录

保留几位小数 //正则let numF (this.countData.hkje * 100) / 1000000sums[index] Number(numF.toString().match(/^\d(?:\.\d{0,4})?/)) 万元; //更正上面的只可以是正数不可以负数&#xff0c;下面的可以是正说或者负数都可以sums[index] Number(numF.toString().matc…

基于jenkins自动化部署PHP环境

实验环境 操作系统 IP地址 主机名 角色 CentOS7.5 192.168.147.141 git git服务器 CentOS7.5 192.168.147.142 Jenkins git客户端 jenkins服务器 CentOS7.5 192.168.147.143 web web服务器 具体环境配置见上一篇&#xff01; 准备git仓库 [rootgit ~]# su -…

Leetcode.100 相同的树

给你两棵二叉树的根节点 p 和 q &#xff0c;编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同&#xff0c;并且节点具有相同的值&#xff0c;则认为它们是相同的。 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 代码如下&#xff1a;…

深圳IT行业供需:蓬勃发展的科技中心

深圳作为中国的科技中心之一&#xff0c;IT行业在这座城市蓬勃发展。本文将探讨深圳IT行业的供需状况&#xff0c;包括就业机会、技能需求以及行业前景展望。 近年来&#xff0c;深圳IT行业迅速发展&#xff0c;成为全球科技创新的重要枢纽之一。随着大量的科技企业和初创公司在…

DNS原理

文章目录 一、域名产生背景域名的树形层次化结构 二、定义三、DNS查询模式递归查询迭代查询 四、主机域名解析工作流程五、H3C配置DNS代理 首先可以看下思维导图&#xff0c;以便更好的理解接下来的内容。 一、域名 产生背景 在互联网中&#xff0c;通过IP地址访问目标主机…

固定资产管理措施怎么写

固定资产管理措施是指企业在进行固定资产管理时所采取的各种措施和方法。以下是一些常见的固定资产管理措施&#xff1a;  建立完善的固定资产管理制度。制定明确的资产采购、使用、维护、报废等流程和标准&#xff0c;确保资产管理的规范性和透明度。  采用先进的资产管理…