ELK搭建以及使用教程(多pipiline)

1、环境准备

服务器:Centos7

Jdk版本:1.8

Es版本:7.12.1

kibana版本:7.12.1

logstash版本:7.12.1

IP地址安装软件
192.168.50.211Es,Kibana,logstash

2、安装docker

安装步骤参考:https://blog.csdn.net/weixin_38405770/article/details/87979242

3、安装es

# 创建容器网络 elk-net
docker network create elk-net
# docker 安装 es 
docker run -d \--name es \-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \-e "discovery.type=single-node" \-v es-data:/usr/share/elasticsearch/data \-v es-plugins:/usr/share/elasticsearch/plugins \--privileged \--network elk-net \-p 9200:9200 \-p 9300:9300 \
elasticsearch:7.12.1# 开通端口
sudo iptables -A INPUT -p tcp --dport 9200 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 9300 -j ACCEPT

命令解释:

-e "cluster.name=es-docker-cluster":设置集群名称
-e "http.host=0.0.0.0":监听的地址,可以外网访问
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m":内存大小
-e "discovery.type=single-node":非集群模式
-v es-data:/usr/share/elasticsearch/data:挂载逻辑卷,绑定es的数据目录
-v es-logs:/usr/share/elasticsearch/logs:挂载逻辑卷,绑定es的日志目录
-v es-plugins:/usr/share/elasticsearch/plugins:挂载逻辑卷,绑定es的插件目录
--privileged:授予逻辑卷访问权
--network elk-net :加入一个名为es-net的网络中
-p 9200:9200:端口映射配置

在浏览器中输入:http://192.168.50.211:9200 (按照自己的ip访问)即可看到elasticsearch的响应结果:

在这里插入图片描述

4、安装kibana

# docker 安装 kibana
docker run -d \
--name kibana \
-e ELASTICSEARCH_HOSTS=http://es:9200 \
-e "I18N_LOCALE=zh-CN" \
--network=elk-net \
-p 5601:5601  \
kibana:7.12.1
# 开通端口
sudo iptables -A INPUT -p tcp --dport 5601 -j ACCEPT
--network elk-net :加入一个名为es-net的网络中,与elasticsearch在同一个网络中
-e ELASTICSEARCH_HOSTS=http://es:9200":设置elasticsearch的地址,因为kibana已经与elasticsearch在一个网络,因此可以用容器名直接访问elasticsearch
-p 5601:5601:端口映射配置

在浏览器中输入:http://192.168.50.211:5601 (按照自己的ip访问)即可看到安装成功的结果:

在这里插入图片描述

5、安装Logstash

5.1 安装Logstash
# docker 安装 Logstash
docker run -d \
-p 5044:5044 -p 5045:5045 -p 9600:9600 \
--name logstash --network=elk-net logstash:7.12.1
# 开通端口
sudo iptables -A INPUT -p tcp --dport 5044 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 5045 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 9600 -j ACCEPT
-p 5044:5044 -p 5045:5045 # 为演示多管道开通的两个端口
5.2 设置ES的地址

创建完容器之后,需要在容器修改一些配置

#进入容器
docker exec -it logstash /bin/bash

找到config目录中的logstatsh.yml文件

在这里插入图片描述

修改里面的内容,设置es服务的地址,如下

http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.hosts: [ "http://192.168.50.211:9200" ] #设置跟es的服务地址
5.3 设置logstash收集日志的输入和输出
#进入容器
docker exec -it logstash /bin/bash

在pipline目录中创建两个文件 logstash-demo.conf,logstash-test.conf

在这里插入图片描述

logstash-demo.conf 内容如下:

input {tcp {mode => "server"host => "0.0.0.0"  # 允许任意主机发送日志port => 5044codec => json_lines    # 数据格式}
}output {elasticsearch {hosts  => ["http://192.168.50.211:9200"]   # ElasticSearch 的地址和端口index  => "demo"         # 指定索引名,可以根据自己的需求指定命名codec  => "json"}stdout {codec => rubydebug}
}

logstash-test.conf 内容如下:

input {tcp {mode => "server"host => "0.0.0.0"  # 允许任意主机发送日志port => 5045codec => json_lines    # 数据格式}
}output {elasticsearch {hosts  => ["http://192.168.50.211:9200"]   # ElasticSearch 的地址和端口index  => "test"         # 指定索引名,可以根据自己的需求指定命名codec  => "json"}stdout {codec => rubydebug}
}
5.4 配置管道 pipline
#进入容器
docker exec -it logstash /bin/bash

进入config目录下找到 pipline.yml 配置文件

在这里插入图片描述

修改为如下配置:

- pipeline.id: demopath.config: "/usr/share/logstash/pipeline/logstash-demo.conf"
- pipeline.id: testpath.config: "/usr/share/logstash/pipeline/logstash-test.conf"

配置两个pipline只想不通的配置文件,我们记住 demo 端口为 5044; test 端口为 5045

6、应用系统对接logstash

创建两个springboot应用

加入如下依赖:

<dependency><groupId>net.logstash.logback</groupId><artifactId>logstash-logback-encoder</artifactId><version>6.6</version>
</dependency>

配置 logback-spring.xml 该配置应于 application.yml 同级

在这里插入图片描述

注意:这里需要注意下一下 logstash的服务地址和端口!!!

demo 应配置为:192.168.200.211:5044

test 应配置为:192.168.200.211:5045

<?xml version="1.0" encoding="UTF-8"?>
<configuration><include resource="org/springframework/boot/logging/logback/base.xml" /><springProperty scope="context" name="springAppName" source="spring.application.name"/><springProperty scope="context" name="serverPort" source="server.port"/><appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender"><!--logstash的服务地址和端口,可以实际情况设置--><destination>192.168.200.211:5044</destination><!-- 日志输出编码 --><encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"><providers><timestamp><timeZone>UTC</timeZone></timestamp><pattern><pattern>{<!--应用名称 -->"app": "${springAppName}_${serverPort}",<!--打印时间 -->"timestamp": "%d{yyyy-MM-dd HH:mm:ss.SSS}",<!--线程名称 -->"thread": "%thread",<!--日志级别 -->"level": "%level",<!--日志名称 -->"logger_name": "%logger",<!--日志信息 -->"message": "%msg",<!--日志堆栈 -->"stack_trace": "%exception"}</pattern></pattern></providers></encoder></appender><!--定义日志文件的存储地址,使用绝对路径--><property name="LOG_HOME" value="/home/logs"/><!-- 按照每天生成日志文件 --><appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!--日志文件输出的文件名--><fileNamePattern>${LOG_HOME}/${springAppName}-${serverPort}-%d{yyyy-MM-dd}.log</fileNamePattern></rollingPolicy><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern></encoder></appender><root level="INFO"><appender-ref ref="LOGSTASH" /><appender-ref ref="FILE" /><appender-ref ref="CONSOLE" /></root>
</configuration>

在application.yml文件中设置logback配置的目录

logging:config: classpath:logback-spring.xml

分别编写一个定时任务,产生日志数据

package com.example.demo.task;import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;/*** 测试定时任务*/
@Slf4j
@Component
public class TestTask {// 这个变量 如果在 demo 中 值为 demo ;如果在 test 中 值为 test 用来标记日志来源!private static final String APP = "demo";@Scheduled(cron = "0/5 * * * * ?")public void runTask() {log.info("{} 中定时任务 runTask 方法 执行了", APP);}
}

在启动类中开启Scheduled

package com.example.demo;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;@SpringBootApplication
@EnableScheduling
public class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}}

分别启动两个应用,记住启动端口要改一下,不然端口占用起不来!!!

7、ELK基本使用

7.1 查看索引文件

对接项目之后,可以启动项目,产生一些日志数据

然后打开kibana 地址为:http://192.168.50.211:5601/ 根据实际情况修改地址,找到索引管理

在这里插入图片描述

可以查看已创建的日志索引
在这里插入图片描述

在这里插入图片描述

7.2 添加索引模式

如果想用kibana方便的查看日志的数据,可以添加索引模式,如下图:

在这里插入图片描述

输入索引名称然后点击下一步

在这里插入图片描述

选择时间字段后点击创建索引模式即可

在这里插入图片描述

test 应用创建索引模式同上,动手练一下吧。

7.3 检索日志

打开Discover

在这里插入图片描述

在筛选这里选择demo应用

在这里插入图片描述

可以看到有日志输出

切换到test应用查看
在这里插入图片描述

可以看到日志都正常输出了。

至此,elk简单的多pipiline就搭建并应用完成了。

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

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

相关文章

在Node.js中,什么是中间件(middleware)?它们的作用是什么?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

【音视频 | opus】opus编解码库(opus-1.4)详细介绍以及使用——附带解码示例代码

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

第G7周:Semi-Supervised GAN 理论与实战

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客 &#x1f366; 参考文章&#xff1a;365天深度学习训练营-第G7周&#xff1a;Semi-Supervised GAN 理论与实战&#xff08;训练营内部成员可读&#xff09; &#x1f356; 原作者&#xff1a;K同学啊|接…

Centralized Feature Pyramid for Object Detection解读

Centralized Feature Pyramid for Object Detection 问题 主流的特征金字塔集中于层间特征交互&#xff0c;而忽略了层内特征规则。尽管一些方法试图在注意力机制或视觉变换器的帮助下学习紧凑的层内特征表示&#xff0c;但它们忽略了对密集预测任务非常重要的被忽略的角点区…

【论文精读】PlanT: Explainable Planning Transformers via Object-Level Representations

1 基本信息 院校&#xff1a;德国的图宾根大学 网站&#xff1a;https://www.katrinrenz.de/plant 2 论文背景 2.1 现有问题 现在的基于学习的方法使用高精地图和BEV&#xff0c;认为准确的&#xff08;达到像素级的pixel-level&#xff09;场景理解是鲁棒的输出的关键。re…

Java自学第1课:安装JDK+Eclipse

1 引言 在学习前&#xff0c;我想说一句&#xff0c;那就是为什么要学习Java。 每个人的出发点都不同&#xff0c;对于做信息化的工程技术人员来说&#xff0c;java不懂&#xff0c;就没法干项目。 尽管有c和matlab等基础&#xff0c;但java看起来与这些语言都不太一样。 做…

基于单片机的智能饮水机系统

收藏和点赞&#xff0c;您的关注是我创作的动力 文章目录 概要 一、系统设计方案分析2.1 设计功能及性能分析2.2设计方案分析 二、系统的硬件设计3.1 系统设计框图系统软件设计4.1 总体介绍原理图 四、 结论 概要 现在很多学校以及家庭使用的饮水机的功能都是比较单一的&#…

MySQL InnoDB数据存储结构

1. 数据库的存储结构&#xff1a;页 索引结构给我们提供了高效的索引方式&#xff0c;不过索引信息以及数据记录都是保存在文件上的&#xff0c;确切说是存储在页结构中。另一方面&#xff0c;索引是在存储引擎中实现的&#xff0c;MySQL服务器上的存储引擎负责对表中数据的读…

分享68个工作总结PPT,总有一款适合您

分享68个工作总结PPT&#xff0c;总有一款适合您 PPT下载链接&#xff1a;https://pan.baidu.com/s/1juus0gmesBFxJ-5KZgSMdQ?pwd8888 提取码&#xff1a;8888 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 学习知识费力气&#xff0c;收集整理更不易。知识付…

C语言----每日五道选择题Day1

1.第一题 1、指出下列代码的缺陷&#xff08; &#xff09;【多选】 float f[10]; // 假设这里有对f进行初始化的代码 for(int i 0; i < 10;) {if(f[i] 0)break; } A: for(int i 0; i < 10;)这一行写错了 B: f是float型数据直接做相等判断有风险 C: f[i]应该是…

[MICROSAR Adaptive] --- autosar官方文档阅读建议

目前互联网上没有太多的 Adaptive AUTOSAR 的学习资料,官方文档是一个很不错的途径。看过官方文档才发现,目前很多关于 Adaptive AUTOSAR 的文章都是官方文档的简化翻译,不如直接看官方文档更全面深入。 1 Adaptive AUTOSAR 文档官方下载地址 https://www.autosar.org/sta…

微信小程序:实现多个按钮提交表单

效果 核心步骤 通过data-type给不同按钮进行设置&#xff0c;便于很好的区分不同按钮执行不同功能 data-type"" 完整代码 wxml <form action"" bindsubmit"formSubmit"><button style"margin-bottom:5%" data-type"pa…

[黑马程序员SpringBoot2]——运维实用篇

目录&#xff1a; 工程打包与运行打包插件Boot工程快速启动&#xff08;Linux版本&#xff09;临时属性配置文件4级分类自定义配置文件多环境开发(yaml版)多环境开发多文件版&#xff08;yaml版&#xff09;多环境开发多文件版&#xff08;properties版&#xff09;多环境分组…

难题来了:分库分表后,查询太慢了,如何优化?

说在前面&#xff1a; 尼恩社群中&#xff0c;很多小伙伴反馈&#xff0c; Sharding-JDBC 分页查询的速度超级慢&#xff0c; 怎么处理&#xff1f; 反馈这个问题的小伙伴&#xff0c;很多很多。 而且这个问题&#xff0c;也是面试的核心难题。前段时间&#xff0c;有小伙伴…

windows 用vs创建cmake工程并编译opencv应用项目生成exe流程简述

目录 前言一、安装opencv&#xff08;1&#xff09;下载&#xff08;2&#xff09;双击安装&#xff08;3&#xff09;环境变量和system文件夹设置 二、打开vs创建项目三、编辑cpp&#xff0c;.h&#xff0c;cmakelist.txt文件&#xff08;1&#xff09;h文件&#xff08;2&…

【Python从入门到进阶】41、有关requests代理的使用

接上篇《40、requests的基本使用》 上一篇我们介绍了requests库的基本使用&#xff0c;本篇我们来学习requests的代理。 一、引言 在网络爬虫和数据抓取的过程中&#xff0c;我们经常需要发送HTTP请求来获取网页内容或与远程服务器进行通信。然而&#xff0c;在某些情况下&…

通过在Z平面放置零极点的来设计数字滤波器

文章来源地址&#xff1a;https://www.yii666.com/blog/393376.html 通过在Z平面放置零极点的来设计数字滤波器 要求&#xff1a;设计一款高通滤波器&#xff0c;用在音频信号处理过程中&#xff0c;滤掉100Hz以下的信号。 实现方法&#xff1a;通过在Z平面放置零极点的来设…

数据结构与算法【02】—线性表

CSDN系列专栏&#xff1a;数据结构与算法专栏 针对以前写的数据结构与算法系列重写(针对文字描述、图片、错误修复)&#xff0c;改动会比较大&#xff0c;一直到更新完为止 前言 通过前面数据结构与算法基础知识我们知道了数据结构的一些概念和重要性&#xff0c;那么本章总结…

【UE 材质】简单的闪闪发光材质

效果 节点 参考视频&#xff1a; https://www.bilibili.com/video/BV1uK411y737/?vd_source36a3e35639c44bb339f59760641390a8

MySQL(8):聚合函数

聚合函数介绍 聚合函数&#xff1a; 对一组数据进行汇总的函数&#xff0c;输入的是一组数据的集合&#xff0c;输出的是单个值。 聚合函数类型&#xff1a;AVG(),SUM(),MAX(),MIN(),COUNT() AVG / SUM 只适用于数值类型的字段&#xff08;或变量&#xff09; SELECT AVG(…