使用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,一经查实,立即删除!

相关文章

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

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

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

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

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

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

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

工服穿戴检测算法 工装穿戴识别算法利用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…

基于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服务器 具体环境配置见上一篇! 准备git仓库 [rootgit ~]# su -…

Leetcode.100 相同的树

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

DNS原理

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

固定资产管理措施怎么写

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

Redis 10 大数据类型

1. which 10 1. redis字符串 2. redis 列表 3. redis哈希表 4. redis集合 5. redis有序集合 6. redis地理空间 7. redis基数统计 8. redis位图 9. redis位域 10. redis流 2. 获取redis常见操作指令 官网英文:https://redis.io/commands 官网中文:https:/…

git difftool对比差异,避免推送不相关内容

问题 在利用git进行版本管理的时候,经常会由于对其他不相关的代码,做了一些小改动,例如删除了一个空行,多了一个缩进等。 为避免将这些不相关的改动也提交到远程,对PR造成不必要的影响,可以利用git diff命…

DolphinDB 携手白鲸开源 WhaleStudio 打造高效敏捷的 DataOps 解决方案

浙江智臾科技有限公司(简称:DolphinDB)和北京白鲸开源科技有限公司(简称:白鲸开源)是在大数据技术领域活跃的两支专业团队。 DolphinDB 专注于为用户提供集高性能存储、复杂分析能力和流处理于一体的实时计…

【区块链 | IPFS】浅谈 | IPFS数据存储原理

IPFS在数据存储方面采用的是分散式的文件存储,区别于HTTP协议的位置寻址,IPFS是基于内容寻址,当文件上传到IPFS节点存储时,节点会对文件进行Merkle DAG(默克尔有向无环图)的格式组织分块存储,在存储完毕后,文件将以Merkle DAG的根哈希数来表示该文件,用户可以从IPFS构…

在腾讯云服务器OpenCLoudOS系统中安装svn(有图详解)

1. 安装svn yum -y install subversion 安装成功: 2. 创建数据根目录及仓库 mkdir -p /usr/local/svn/svnrepository 创建test仓库: svnadmin create /usr/local/svn/test test仓库创建成功: 3. 修改配置test仓库 cd /usr/local/svn/te…

ssm+vue校园活动管理平台源码和论文

ssmvue校园活动管理平台源码和论文090 开发工具:idea 数据库mysql5.7 数据库链接工具:navcat,小海豚等 技术:ssm 摘 要 使用旧方法对校园活动信息进行系统化管理已经不再让人们信赖了,把现在的网络信息技术运用在校园活动信…

【Python自学笔记】Python好用的模块收集(持续更新...)

文章目录 日志模块钉钉机器人命令助手持续更新中,如果您有其他实用好用的模块欢迎留言...日志模块 写代码离不开日志,自定义一个理想的日志对于小白来说可能是一件很反锁的事情,就像我刚学习Python的时候自己写的一个自定义日志,为了解决这个痛点,今天就和大家分享一个可以…

基于硬件隔离增强risc-v调试安全1_问题描述

安全之安全(security)博客目录导读 2023 RISC-V中国峰会 安全相关议题汇总 说明:本文参考RISC-V 2023中国峰会如下议题,版权归原作者所有。

深入理解AMBA总线协议(AXI总结篇)

AXI总线已经是AMBA总线中最常见,使用最频繁的总线,并且没有之一。 可以说AXI总线已经成为了片上总线中最重要的协议,本篇文章打算花一些篇幅,帮大家总结一下AXI总线的学习重点、学习难点,以帮助大家更好更快的掌握AXI…

WevSocket(java基于注解实现)

一、概述 本文基于spring-boot-starter-websocket简单的完成收发信息功能,使用注解形式进行实现。 二、相关配置 spring:2.0.2,jdk:1.8.202,maven:3.3.9 因为spring和maven有版本匹配的要求,请大家注意自己的版本是否匹配 三…

IDEA使用Docker插件

修改Docker配置 1.执行命令vim /usr/lib/systemd/system/docker.service,在ExecStart配置的后面追加 -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock ExecStart/usr/bin/dockerd -H fd:// --containerd/run/containerd/containerd.sock -H tcp://0.0.0.0:…