Redian新闻
>
前后端如何对接elk,你应该知道

前后端如何对接elk,你应该知道

公众号新闻

总结自己在配合研发,对接前后端的ELK日志配置举例

ELK介绍

日志系统ELK(ElasticSearch、Logstash、Kibana)搭建的,其架构是Filebeat收集日志传输到Logstash,Logstash解析日志然后将日志存储到Elasticsearch中,最后通过Kibana查询展示日志

ES(nosql非关数据库):存储功能和索引

Logstash(收集日志):到应用服务器上拿取log,并进行格式转换后输出到es中

通过input功能来收集/采集log

filter过滤器:格式化数据

output输出:日志输出到es数据库内

Kibana(展示工具):将es内的数据在浏览器展示出来,通过UI界面展示(可以根据自己的需求对日志进行处理,方便查阅读取)

1、ElasticSearch:是一个分布式的搜索和分析引擎,可以用于全文检索、结构化检索和分析,并能将这三者结合起来。Elasticsearch 基于 Lucene 开发,现在是使用最广的开源搜索引擎之一。

2、Logstash:简单来说就是一根具备实时数据传输能力的管道,负责将数据信息从管道的输入端传输到管道的输出端,与此同时这根管道还可以让你根据自己的需求在中间加上滤网,Logstash提供了很多功能强大的滤网以满足你的各种应用场景。

3、Kibana:是一个开源的分析与可视化平台,设计出来用于和Elasticsearch一起使用的。你可以用kibana搜索、查看、交互存放在Elasticsearch索引里的数据,使用各种不同的图标、表格、地图等,kibana能够很轻易的展示高级数据分析与可视化。

springboot配置ELK

pom.xml依赖

要想将logback与Logstash整合,必须引入logstash-logback-encoder包。

<!-- logback 推送日志文件到logstash -->        <dependency>    <groupId>net.logstash.logback</groupId>    <artifactId>logstash-logback-encoder</artifactId>    <version>6.0</version></dependency>

在resources下新建logback-spring.xml文件

<?xml version="1.0" encoding="UTF-8"?><configuration>   <springProperty scope="context" name="application" source="spring.application.name"/>   <springProperty scope="context" name="host" source="logstash.host"/>   <springProperty scope="context" name="port" source="logstash.port"/>   <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">      <destination>${host}:${port}</destination>      <encoder charset="UTF-8" class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">         <providers>            <pattern>               <pattern>                  <!--输出日志可自定义,可根据自己需要配置-->                  {                  <!--es索引名称 -->                  "indexname":"${application}",                  <!--应用名称 -->                  "appname":"${application}",                  <!--打印时间 -->                  "timestamp": "%d{yyyy-MM-dd HH:mm:ss.SSS}",                  <!--线程名称 -->                  "thread": "%thread",                  <!--日志级别 -->                  "level": "%level",                  <!--日志名称 -->                  "logger_name": "%logger",                  "traceId": "%X{traceId}",                  <!--日志信息 -->                  "message": "%msg",                  <!--日志堆栈 -->                  "stack_trace": "%exception"                  }               </pattern>            </pattern>         </providers>      </encoder>   </appender>   <include resource="org/springframework/boot/logging/logback/defaults.xml"/>   <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">      <filter class="ch.qos.logback.classic.filter.ThresholdFilter">         <level>INFO</level>      </filter>      <encoder>         <pattern>%date [%thread]-[%X{traceId}] %-5level [%logger{50}] %file:%line - %msg%n</pattern>         <charset>UTF-8</charset>      </encoder>   </appender>   <root level="info">      <appender-ref ref="LOGSTASH"/>      <appender-ref ref="CONSOLE"/>      <!--<appender-ref ref="FILE_INFO"/>-->      <!--<appender-ref ref="FILE_ERROR"/>-->   </root></configuration>

application.yml文件添加配置

#logback对接logstash的日志配置文件logstash:  host: 10.136.0.51  port: 5000

vue挂载nginx日志

前端挂载日志举例

dockerfile

测试环境


# fielbeat收集日志VOLUME ["/var/log/nginx"]WORKDIR /appADD https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.15.1-linux-x86_64.tar.gz /app
RUN tar -zxvf filebeat-7.15.1-linux-x86_64.tar.gzRUN rm -rf filebeat-7.15.1-linux-x86_64.tar.gzCOPY filebeat_test.yml /app/filebeat-7.15.1-linux-x86_64COPY run.sh /app/filebeat-7.15.1-linux-x86_64WORKDIR /app/filebeat-7.15.1-linux-x86_64RUN mv filebeat_test.yml filebeat.ymlRUN chmod -R 777 /app/filebeat-7.15.1-linux-x86_64/run.sh
# 同时运行nginx和filebeat服务ENTRYPOINT ["/app/filebeat-7.15.1-linux-x86_64/run.sh"]

生产环境


# fielbeat收集日志VOLUME ["/var/log/nginx"]WORKDIR /appADD https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.15.1-linux-x86_64.tar.gz /app
RUN tar -zxvf filebeat-7.15.1-linux-x86_64.tar.gzRUN rm -rf filebeat-7.15.1-linux-x86_64.tar.gzCOPY filebeat_prod.yml /app/filebeat-7.15.1-linux-x86_64COPY run.sh /app/filebeat-7.15.1-linux-x86_64WORKDIR /app/filebeat-7.15.1-linux-x86_64RUN mv filebeat_prod.yml filebeat.ymlRUN chmod -R 777 /app/filebeat-7.15.1-linux-x86_64/run.sh
# 同时运行nginx和filebeat服务ENTRYPOINT ["/app/filebeat-7.15.1-linux-x86_64/run.sh"]

配置参考


FROM swr.cn-north-1.myhuaweicloud.com/iss-tpb-dev-zrpiao/nginx:latest


ENV LANG C.UTF-8ENV TZ=Asia/ShanghaiRUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN mkdir -p /app && mkdir -p /config && chmod -R 777 /app
EXPOSE 8090
#将当前文件夹的dist文件复制到容器的/usr/share/nginx/html目录COPY ./dist /app/distCOPY nginx.conf /etc/nginx/nginx.confCOPY ./test /app/dist
# fielbeat收集日志 开始VOLUME ["/var/log/nginx"]WORKDIR /appADD https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.15.1-linux-x86_64.tar.gz /app
RUN tar -zxvf filebeat-7.15.1-linux-x86_64.tar.gzRUN rm -rf filebeat-7.15.1-linux-x86_64.tar.gzCOPY filebeat_test.yml /app/filebeat-7.15.1-linux-x86_64COPY run.sh /app/filebeat-7.15.1-linux-x86_64WORKDIR /app/filebeat-7.15.1-linux-x86_64RUN mv filebeat_test.yml filebeat.ymlRUN chmod -R 777 /app/filebeat-7.15.1-linux-x86_64/run.sh
# 同时运行nginx和filebeat服务ENTRYPOINT ["/app/filebeat-7.15.1-linux-x86_64/run.sh"]

filebeat.yml

测试配置

索引名称修改为具体项目,例如iam-portal-iam-portal-%{+yyyy.MM.dd} 或者archives-portal-iam-portal-%{+yyyy.MM.dd}

filebeat.inputs:  - type: log    paths:      - /var/log/nginx/access.log
setup.ilm.enabled: falsesetup.template.name: "nginx"setup.template.pattern: "nginx-*"
output.elasticsearch: hosts: ["10.136.0.51:9200"] username: "elastic" password: "123456" index: "iam-portal-%{+yyyy.MM.dd}" #索引名称

测试配置

索引文件要修改为具体项目,例如iam-portal-iam-portal-%{+yyyy.MM.dd} 或者archives-portal-iam-portal-%{+yyyy.MM.dd}

filebeat.inputs:  - type: log    paths:      - /var/log/nginx/access.log
setup.ilm.enabled: falsesetup.template.name: "nginx"setup.template.pattern: "nginx-*"
output.elasticsearch: hosts: ["10.136.1.181:9200"] username: "elastic" password: "123456" index: "iam-portal-%{+yyyy.MM.dd}" #索引名称

启动脚本

run.sh

#!/bin/bashset -mnginx -g "daemon off;" &./filebeat -e -c /app/filebeat-7.15.1-linux-x86_64/filebeat.ymlfg %1

Kibana新建索引

ES可以作为日志系统,要比专门去找对应的日志存档效率要高,直接通过搜索KQL或者Lucene(这里指的是Lucene的语法,实际上直接搜索关键词就可以了)。

但是我们在Kinaba上看到的索引(你也可以理解每一份对应的日志)上没有你想要的,你该如何去建立索引去查找日志,具体操作过程如下:

这里假设你的数据都已经添加进去或者是自动收集的,你要做的就是创建一个索引对应起来,能在discover里面能看到就可以。

只有当你的日志记录已经通过logstash存储在ElasticSearch中时,你在kibana中添加索引才能看到具体的日志记录

添加索引

创建索引模式

根据源创建索引

查询

链接:https://blog.51cto.com/u_11555417/9346198

(版权归原作者所有,侵删)

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
可靠、问题少!在美国这10款车你应买二手车前后端都用得上的 Nginx 日常使用经验活动预告|生物医药专精特新企业创新发展对接会:预见2024,共创生物医药新辉煌Keras 3.0正式发布!一统TF/PyTorch/Jax三大后端框架,网友:改变游戏规则彭博投资组合分析工具月报 | 开放式API对接技术与应用由首次上海飞往蒙特利尔的机票票根引起的追忆(下)追星,就该知识追星!CES 2024硅谷高创会VIP酒会成功举办!链接全球顶级人脉圈,对接高端资源及投资机会朱元璋曾经给地主刘德放牛,他当皇帝后如何对待刘德的?关爱加村无美签选手——西捷航空卡尔加里直航首尔,你想知道的应该都在这波士顿冬季限定Citywalk,打卡16件全新艺术互动装置All for one and one for all.The Three Musketeers想入坑「环境科学与工程」,我该知道哪些?工行:近期与多家重点房企对接交流,主要采取一对一等形式中国最新癌症死亡率数据重磅出炉!你应该知道这些!童车及母婴童用品展览会(baby&stroller)确认参展2024新渠道大会&精选品牌对接会如何对投资人进行背景调查?|融资指南远离CITY WALK,你才能发现大巴黎极端天气事件发生时,你应该了解的德州租房者的权利宇宙人(1396期)电推进系统失效美国在轨服务飞行器卫星对接任务失败;俄罗斯货运飞船今日快速再入大气层;滴滴再度致歉事故起因初判直播预告|舒适鹿皮鞋,春季露营 Citywalk,穿它好看不累脚!关于转融通你应该知道的真相!吞吐量提升5倍,联合设计后端系统和前端语言的LLM接口来了深度剖析新质生产力,工厂端如何破局?|今日直播Go 编程语言 - 你应该知道的一切如何对抗阶级滑落?《生化危机》之父三上真司演讲:每个开发者都应该知道的三条经验!文学城里写欧洲文化,艺术的帖子,这才是你应该了解的Redis数据结构内裤其实比袜子还脏?关于内裤这些你该知道……如何对抗买量大佬,Supercell分享:我们要成为流行文化的一部分!中国外交历史故事,每个中国孩子都该知道亵渎义字纪念他什么? ——也写于谢晋诞辰百周年这项面向3-12年级的"拉丁语爬藤小众赛道",想申前30的家庭都应该知道!
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。