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

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

10月前

总结自己在配合研发,对接前后端的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

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

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

来源:马哥Linux运维

相关新闻

在这段被下架的视频里,谷歌前CEO说了很多你应该知道的真话关于转融通你应该知道的真相!那些对女性不友好的设计,你知道多少?人人都知道要远离情绪内耗,如何做到?给你4个建议,记得收藏呼吁:这种"超级鱼油"竟然对身体有这惊人的改变!你吃的可能无效!可惜很少有人知道早申录取6000+人、录取率高3倍!这些院校「偏爱中国学生」你知道吗?药你知道丨《中药标准管理专门规定》系列解读(二)新西兰独特手势,走红巴黎奥运!你知道它的含义吗......立秋的传统与习俗你知道多少?萝卜岗火了!你知道什么是萝卜岗吗?你知道阳山水蜜桃什么时候最好吃吗?你知道“勤工俭学”的说法源自哪里?丨Paris Olympics by the Chinese你知道你可能违法违章了吗?在佐治亚州请一定避免此类行为!前25商学院中有哪些被认证STEM MBA你知道吗?Costco礼品卡很超值!但有四大缺陷易被忽略,你知道吗?取代前后端岗,国内又一新兴岗位在崛起!这才是程序员未来5年最好的就业方向!聊一聊:你知道哪些,业内人才知道的秘密?你知道什么专业在英国好找工作吗?北美最美丽的小镇就在亚特兰大,你知道是哪里吗?渡十娘|苹果创始人有多抠门你知道吗取代前后端岗,中国又一新兴岗位在崛起!这才是程序员未来5年最好的就业方向!申请美国签证的七大误区,你知道吗?!你知道吗,穷也是有好处的Indian是印度,Summer是夏天,那​你知道Indian summer是什么意思吗?
logo
联系我们隐私协议©2024 bendi.news
Bendi新闻
Bendi.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Bendi.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。