前言
本文章主要是实现 elasticsearch logstash kibana v7.9.1 黄金组合采集nginx日志(access.log error.log),并可视化展示。
此外,本文章是我一个开源项目的一部分,所以请阅读本文的各位开发者给我的开源点点 star,绝对值!
https://gitee.com/daitougege/GinSkeleton
本文在我的项目最早的发布日期是2020-09-21,距离官方的v7.9.1系列版本发布不到20天,很可能我们是对接这个版本的全网首篇文章。
正文部分:
原始地址:https://gitee.com/daitougege/GinSkeleton/blob/master/docs/elk_log.md
以下操作流程摘自我的项目文档:
1.项目日志的顶级解决方案(ELK)
1.
ELK
全称为Elasticsearch
、Logstash
、Kibana
, 该产品近年在提供快速搜索领域异军突起,但是今天我们要介绍的是该套产品的另一杀手锏:日志统一管理、统计、分析.
2.ELK
支持分布式管理日志,您只需要搭建elk
服务器,所有项目的日志(例如:nginx
的access
日志、error
日志、应用项目运行日志)都可以对接到elk
服务器,由专门的人员负责数据监控,统计、分析.
3.ELK
日志推送结构图:
2.三个核心角色介绍
elasticsearch:
倒排索引驱动的数据库,通俗地说,就是数据存储时,按照分词器提取关键词,给关键词创建索引,然后将索引和数据一起存储,最终当你查询关键词的时候,首先定位索引,然后根据索引快速获取结果,返回给用户。
logstash:
负责数据的采集、加工处理、输出,我们只需要设置好相关参数,按照指定时间频率,抓取日志文件,支持分布式部署,一台项目服务器需要部署一个客户端,然后将数据推送至elasticsearch存.
kibana:
数据可视化管理面板,支持数据本身的展示(文本展示)、图形化展示、统计、分析等.
3.本次我们要对接的日志清单
1.nginx 的 access.log.
2.nginx 的 error.log.
3.任何项目的运行日志,按照行业标准提供了 info 、 warn 、error 、fatal 等不同级别日志. 数据格式要求为 json
4.进入对接环节
1.后续所有方案基于docker.
2.考虑到有部分人员可能没有安装 elk 黄金套餐,我们简要地介绍一下安装步骤,如果已经安装,那么相关参数请自行配置.
3.特别提醒:本次我们是基于 elk 最新版本(v7.9.1),距离我写本文档的时间(2020-09-21)发布仅仅16天, 和之前的版本细节差异都比较大, 和网上已有的资料差距也很大(很有可能v7.9.1的全套对接、配置我们都是全网首发), 如果您不是很熟悉该套产品,那么请按照本文档 100% 操作,否则有很多"惊喜".
4.1 nginx 修改日志格式
4.1.1 例如我的nginx配置文件路径:
/usr/local/nginx/conf/nginx.conf
#以下代码段需要放置在http段
http {
include mime.types;
default_type application/octet-stream;
#默认的日志格式
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
# 将日志格式修改为 json 格式,方便对接到 elk ,修改日志格式对 nginx 没有任何影响,只会使日志阅读更加人性化
log_format json '{"created_at":"$time_iso8601",'
'"remote_addr":"$remote_addr",'
'"method":"$request_method",'