docker搭建ELK+filebeat+springboot项目配置

docker-部署filebeat 前言 filebeat是一个轻量级的日志收集工具,相比logstash,功能更加单一,但是占用的资源较小,下面介绍如何使用docker来部署filebeat。更多信息请参考官方文档。 拉取镜像 docker pull docker.elastic.co/beats/filebeat:7.9.2 运行Filebeat设置 运行Filebeat设置命令将创建索引模式和负载可视化,指示板和机器学习工作。运行这个命令: docker run \ docker.elastic.co/beats/filebeat:7 阅读详情

一、Docker安装-离线

1.1下载 Docker 离线包

链接:https://pan.baidu.com/s/1HTEHMuU3K0k07Ej97CFPRQ?pwd=7734 提取码:7734
–来自百度网盘超级会员V6的分享

在这里可以选择自己需要的版本进行下载:
https://download.docker.com/linux/static/stable/

1.2离线安装工具

https://github.com/Jrohy/docker-install/
按图示下载安装工具:
在这里插入图片描述

链接:https://pan.baidu.com/s/1PYqAU2jOadCWrjjnjtmPOQ?pwd=7734 提取码:7734
–来自百度网盘超级会员V6的分享

1.3安装

将前面下载的以下文件放入服务器的 /root/docker-install 文件夹下:

- [docker-install]
	- docker-20.10.6.tgz
	- install.sh
	- docker.bash

执行安装:

# 进入 docker-install 文件夹
cd docker-install

# 为 docker-install 添加执行权限
chmod +x install.sh

# 安装
./install.sh -f docker-20.10.6.tgz

1.4镜像加速

由于国内网络问题,需要配置加速器来加速。
修改配置文件 /etc/docker/daemon.json

下面命令直接生成文件 daemon.json

cat <<EOF > /etc/docker/daemon.json
{
  "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn",
    "http://hub-mirror.c.163.com"
  ],
  "max-concurrent-downloads": 10,
  "log-driver": "json-file",
  "log-level": "warn",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
    },
  "data-root": "/var/lib/docker"
}
EOF

1.5确认安装结果

docker info

docker run hello-world

ps:在线安装Docker

我们使用 Docker 来运行 Elasticsearch,首先安装 Docker,参考下面笔记:

Docker笔记

二、Docker搭建ES集群

2.1关闭防火墙

后面我们要使用多个端口,为了避免繁琐的开放端口操作,我们关掉防火墙

# 关闭防火墙
systemctl stop firewalld.service

# 禁用防火墙
systemctl disable firewalld.service

2.2下载 Elastic Search 镜像

docker pull elasticsearch:7.9.3

链接:https://pan.baidu.com/s/1s9BCzzE-BmKAbU2IAjLouQ?pwd=7734 提取码:7734
–来自百度网盘超级会员V6的分享

2.3集群部署结构

在这里插入图片描述
在一台服务器上,使用Docker部署三个ES容器组成的集群

2.4准备虚拟网络和挂载目录

# 创建虚拟网络
docker network create es-net

# node1 的挂载目录
mkdir -p -m 777 /var/lib/es/node1/plugins
mkdir -p -m 777 /var/lib/es/node1/data

# node2 的挂载目录
mkdir -p -m 777 /var/lib/es/node2/plugins
mkdir -p -m 777 /var/lib/es/node2/data

# node3 的挂载目录
mkdir -p -m 777 /var/lib/es/node3/plugins
mkdir -p -m 777 /var/lib/es/node3/data

2.5设置 max_map_count

必须修改系统参数 max_map_count,否则 Elasticsearch 无法启动:

在 /etc/sysctl.conf 文件中添加 vm.max_map_count=262144

echo 'vm.max_map_count=262144' >>/etc/sysctl.conf

# 立即生效
sysctl -p

确认参数配置:

cat /etc/sysctl.conf

2.6启动 Elasticsearch 集群

node1:

docker run -d \
  --name=node1 \
  --restart=always \
  --net es-net \
  -p 9200:9200 \
  -p 9300:9300 \
  -v /var/lib/es/node1/plugins:/usr/share/elasticsearch/plugins \
  -v /var/lib/es/node1/data:/usr/share/elasticsearch/data \
  -e node.name=node1 \
  -e node.master=true \
  -e network.host=node1 \
  -e discovery.seed_hosts=node1,node2,node3 \
  -e cluster.initial_master_nodes=node1 \
  -e cluster.name=es-cluster \
  -e "ES_JAVA_OPTS=-Xms256m -Xmx256m" \
  elasticsearch:7.9.3

环境变量说明:
在这里插入图片描述参考 https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-network.html

node2:

docker run -d \
  --name=node2 \
  --restart=always \
  --net es-net \
  -p 9201:9200 \
  -p 9301:9300 \
  -v /var/lib/es/node2/plugins:/usr/share/elasticsearch/plugins \
  -v /var/lib/es/node2/data:/usr/share/elasticsearch/data \
  -e node.name=node2 \
  -e node.master=true \
  -e network.host=node2 \
  -e discovery.seed_hosts=node1,node2,node3 \
  -e cluster.initial_master_nodes=node1 \
  -e cluster.name=es-cluster \
  -e "ES_JAVA_OPTS=-Xms256m -Xmx256m" \
  elasticsearch:7.9.3

node3:

docker run -d \
  --name=node3 \
  --restart=always \
  --net es-net \
  -p 9202:9200 \
  -p 9302:9300 \
  -v /var/lib/es/node3/plugins:/usr/share/elasticsearch/plugins \
  -v /var/lib/es/node3/data:/usr/share/elasticsearch/data \
  -e node.name=node3 \
  -e node.master=true \
  -e network.host=node3 \
  -e discovery.seed_hosts=node1,node2,node3 \
  -e cluster.initial_master_nodes=node1 \
  -e cluster.name=es-cluster \
  -e "ES_JAVA_OPTS=-Xms256m -Xmx256m" \
  elasticsearch:7.9.3

2.7查看启动结果结果

http://192.168.128.136:9200
在这里插入图片描述
http://192.168.128.136:9200/_cat/nodes
在这里插入图片描述

2.8chrome浏览器插件:elasticsearch-head

elasticsearch-head 项目提供了一个直观的界面,可以很方便地查看集群、分片、数据等等。elasticsearch-head最简单的安装方式是作为 chrome 浏览器插件进行安装。

  1. 在 elasticsearch-head 项目仓库中下载 chrome 浏览器插件
    https://github.com/mobz/elasticsearch-head/raw/master/crx/es-head.crx
  2. 将文件后缀改为 zip
  3. 解压缩
  4. 在 chrome 浏览器中选择“更多工具”–“扩展程序”
  5. 在“扩展程序”中确认开启了“开发者模式”
  6. 点击“加载已解压的扩展程序”
  7. 选择前面解压的插件目录
  8. 在浏览器中点击 elasticsearch-head 插件打开 head 界面,并连接
    在这里插入图片描述

2.9Elasticsearch安装IK中文分词器

从 ik 分词器项目仓库中下载 ik 分词器安装包,下载的版本需要与 Elasticsearch 版本匹配:
https://github.com/medcl/elasticsearch-analysis-ik

链接:https://pan.baidu.com/s/11omvwfDly4_HU-z8ESCkeQ?pwd=7734 提取码:7734
–来自百度网盘超级会员V6的分享

下载 elasticsearch-analysis-ik-7.9.3.zip 复制到 /root/ 目录下

在三个节点上安装 ik 分词器

cd ~/

# 复制 ik 分词器到三个 es 容器
docker cp elasticsearch-analysis-ik-7.9.3.zip node1:/root/
docker cp elasticsearch-analysis-ik-7.9.3.zip node2:/root/
docker cp elasticsearch-analysis-ik-7.9.3.zip node3:/root/

# 在 node1 中安装 ik 分词器
docker exec -it node1 elasticsearch-plugin install file:///root/elasticsearch-analysis-ik-7.9.3.zip

# 在 node2 中安装 ik 分词器
docker exec -it node2 elasticsearch-plugin install file:///root/elasticsearch-analysis-ik-7.9.3.zip

# 在 node3 中安装 ik 分词器
docker exec -it node3 elasticsearch-plugin install file:///root/elasticsearch-analysis-ik-7.9.3.zip

# 重启三个 es 容器
docker restart node1 node2 node3

查看安装结果
在浏览器中访问 http://192.168.128.136:9200/_cat/plugins
在这里插入图片描述

如果插件不可用,可以卸载后重新安装:


docker exec -it node2 elasticsearch-plugin remove analysis-ik

docker exec -it node3 elasticsearch-plugin remove analysis-ik ```

ik分词测试
ik分词器提供两种分词器: ik_max_word 和 ik_smart

ik_max_word: 会将文本做最细粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,中华人民,中华,华人,人民共和国,人民,人,民,共和国,共和,和,国国,国歌”,会穷尽各种可能的组合,适合 Term Query;

ik_smart: 会做最粗粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,国歌”,适合 Phrase 查询。

ik_max_word 分词测试
使用 head 执行下面测试:
向 http://192.168.128.136:9200/_analyze 路径提交 POST 请求,并在协议体中提交 Json 数据:

{
  "analyzer":"ik_max_word",
  "text":"中华人民共和国国歌"
}

在这里插入图片描述
ik_smart 分词测试
使用 head 执行下面测试:
向 http://192.168.128.136:9200/_analyze 路径提交 POST 请求,并在协议体中提交 Json 数据:

{
  "analyzer":"ik_smart",
  "text":"中华人民共和国国歌"
}

在这里插入图片描述

三、Docker搭建Kibana

3.1下载 Kibana 镜像

docker pull kibana:7.9.3

3.2启动 Kibana 容器

docker run \
-d \
--name kibana \
--net es-net \
-p 5601:5601 \
-e ELASTICSEARCH_HOSTS='["http://node1:9200","http://node2:9200","http://node3:9200"]' \
--restart=always \
kibana:7.9.3

Kibana汉化:

docker exec -it kibana bash

echo -e "\ni18n.locale: \"zh-CN\"">>/usr/share/kibana/config/kibana.yml

exit

docker restart kibana

启动后,浏览器访问 Kibana,进入 Dev Tools:
http://192.168.128.136:5601/
在这里插入图片描述

四、Docker搭建Logstash和使用方法

4.1下载Logstash镜像

docker pull logstash:7.9.3

4.2建立文件夹,给data文件夹777权限

[root@centos7964 /var/lib/elk/logstash]# ll
总用量 0
drwxrwxrwx. 2 root root 47 5月  14 09:59 config
drwxrwxrwx. 4 root root 69 5月  14 10:11 data
drwxrwxrwx. 2 root root 27 5月  15 09:33 pipeline

只需要建logstash.yml、pipelines.yml、logstash.conf文件

[root@centos7964 /var/lib/elk/logstash]# tree
.
├── config
│   ├── jvm.options
│   ├── logstash.yml
│   └── pipelines.yml
├── data
│   ├── dead_letter_queue
│   ├── queue
│   └── uuid
└── pipeline
    └── logstash.conf

5 directories, 5 files

4.3只需要建logstash.yml、pipelines.yml、logstash.conf文件

内容分别为

path.logs: /usr/share/logstash/logs
config.test_and_exit: false
config.reload.automatic: false
http.host: "0.0.0.0" 
xpack.monitoring.elasticsearch.hosts: [ "http://192.168.133.100:9200" ]
# This file is where you define your pipelines. You can define multiple.
# # For more information on multiple pipelines, see the documentation:
# #   https://www.elastic.co/guide/en/logstash/current/multiple-pipelines.html
#
- pipeline.id: main
  path.config: "/usr/share/logstash/pipeline/logstash.conf"
input {
  tcp {
    mode => "server"
    host => "0.0.0.0"
    port => 5044
    codec => json_lines
  }
}
filter{
}
output {
    elasticsearch {
      hosts => ["192.168.128.136:9200"]
      index => "elk_logstash"
    }
    if [appname] == "Saledev" {
        elasticsearch {
            hosts => "192.168.128.136:9200"
            index => "saledevlog_%{+YYYY.MM.dd}"
        }
    }
    if [appname] == "Qualitydev" {
        elasticsearch {
            hosts => "192.168.128.136:9200"
            index => "qualitydevlog_%{+YYYY.MM.dd}"
        }
    }
    if [appname] == "Purchasedev" {
        elasticsearch {
            hosts => "192.168.128.136:9200"
            index => "purchasedevlog_%{+YYYY.MM.dd}"
        }
    }
    if [appname] == "MESdev" {
        elasticsearch {
            hosts => "192.168.128.136:9200"
            index => "mesdevlog_%{+YYYY.MM.dd}"
        }
    }
    stdout { codec => rubydebug }
}

4.4创建容器

docker run -it \
--name logstash \
--restart=always \
--privileged \
-p 5044:5044 \
-p 9600:9600 \
--net es-net \
-v /etc/localtime:/etc/localtime \
-v /var/lib/elk/logstash/config:/usr/share/logstash/config \
-v /var/lib/elk/logstash/pipeline:/usr/share/logstash/pipeline \
-v /var/lib/elk/logstash/data:/usr/share/logstash/data \
-d logstash:7.9.3

查看日志是否启动成功,没报错就可以

4.5SpringBoot整合logstash

引入依赖

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

配置spring-logback.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 -->
<!-- scan:当此属性设置为true时,配置文档如果发生改变,将会被重新加载,默认值为true -->
<!-- scanPeriod:设置监测配置文档是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。
                 当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
<!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
<configuration scan="true" scanPeriod="10 seconds">
    <property name="log.path" value="./logs"/>
    <springProperty scope="context" name="env" source="spring.profiles.active"/>
    <springProperty scope="context" name="appName" source="spring.application.name"/>
    <property name="console.log.pattern"
              value="%red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{36}%n) - %msg%n"/>
    <property name="log.pattern" value="%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n"/>

    <!-- 控制台输出 -->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${console.log.pattern}</pattern>
            <charset>utf-8</charset>
        </encoder>
    </appender>

    <!-- 控制台输出 -->
    <appender name="file_console" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/sys-console.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志文件名格式 -->
            <fileNamePattern>${log.path}/sys-console.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- 日志最大 1天 -->
            <maxHistory>1</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${log.pattern}</pattern>
            <charset>utf-8</charset>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <!-- 过滤的级别 -->
            <level>INFO</level>
        </filter>
    </appender>

    <!-- 系统日志输出 -->
    <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/sys-info.log</file>
        <!-- 循环政策:基于时间创建日志文件 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志文件名格式 -->
            <fileNamePattern>${log.path}/sys-info.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- 日志最大的历史 60天 -->
            <maxHistory>60</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 过滤的级别 -->
            <level>INFO</level>
            <!-- 匹配时的操作:接收(记录) -->
            <onMatch>ACCEPT</onMatch>
            <!-- 不匹配时的操作:拒绝(不记录) -->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/sys-error.log</file>
        <!-- 循环政策:基于时间创建日志文件 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志文件名格式 -->
            <fileNamePattern>${log.path}/sys-error.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- 日志最大的历史 60天 -->
            <maxHistory>60</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 过滤的级别 -->
            <level>ERROR</level>
            <!-- 匹配时的操作:接收(记录) -->
            <onMatch>ACCEPT</onMatch>
            <!-- 不匹配时的操作:拒绝(不记录) -->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!-- info异步输出 -->
    <appender name="async_info" class="ch.qos.logback.classic.AsyncAppender">
        <!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
        <discardingThreshold>0</discardingThreshold>
        <!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
        <queueSize>512</queueSize>
        <!-- 添加附加的appender,最多只能添加一个 -->
        <appender-ref ref="file_info"/>
    </appender>

    <!-- error异步输出 -->
    <appender name="async_error" class="ch.qos.logback.classic.AsyncAppender">
        <!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
        <discardingThreshold>0</discardingThreshold>
        <!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
        <queueSize>512</queueSize>
        <!-- 添加附加的appender,最多只能添加一个 -->
        <appender-ref ref="file_error"/>
    </appender>

    <!--LOGSTASH config -->
    <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <destination>192.168.128.136:5044</destination>
        <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder">
            <!--自定义时间戳格式, 默认是yyyy-MM-dd'T'HH:mm:ss.SSS<-->
            <timestampPattern>yyyy-MM-dd HH:mm:ss</timestampPattern>
            <customFields>{"appname":"${appName}${env}"}</customFields>
        </encoder>
    </appender>

    <!--系统操作日志-->
    <root level="info">
        <appender-ref ref="console" />
        <appender-ref ref="async_info" />
        <appender-ref ref="async_error" />
        <appender-ref ref="file_console" />
        <appender-ref ref="LOGSTASH"/>
    </root>

</configuration>

主要配置ip地址和端口

4.6使日志插入logstash

只需要使用lombok依赖的@Slf4j注解,把要放入日志的东西加进去即可

package com.wnhz.smart.es.controller;

import com.wnhz.smart.common.http.ResponseResult;
import com.wnhz.smart.es.doc.BookTabDoc;
import com.wnhz.smart.es.service.IBookTabDocService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * @author Hao
 * @date 2023-12-06 10:40
 */
@RestController
@RequestMapping("/api/query")
@Slf4j
public class QueryController {
    @Autowired
    private IBookTabDocService iBookTabDocService;

    @GetMapping("/test")
    public ResponseResult<List<BookTabDoc>> test() {
        List<BookTabDoc> allBooks = iBookTabDocService.getAllBooks();
        log.debug("从es中查询到的所有数据:{}", allBooks.subList(0, 1000));
        return ResponseResult.ok(allBooks.subList(0, 3));
    }
}

这样所有的数据就会自动插入logstash

4.7配置kibana

进入http://192.168.128.136:5601/app/management(原网页点击Stack Management),点击index Patterns创建匹配模式,输入logstash.conf文件中的index后面的名字,这里是elk_logstash
在这里插入图片描述
查询方法:message 内容
日志的条数查询错误解决
当日志的条数太多会出现下面的错误警告

The length [1417761] of field [message] in doc[20]/index[elk_logstash] exceeds the
[index.highlight.max_analyzed_offset] limit [1000000]. To avoid this
error, set the query parameter [max_analyzed_offset] to a value less
than index setting [1000000] and this will tolerate long field values
by truncating them.

解决方法

解决方案,使用任意一个可以put http值和参数的工具,对目标主机上部署的es进行put命令配置:
!!!注意是put请求,请求地址和body参数分别为:

 http://localhost:9200/_all/_settings?preserve_existing=true
{
  "index.highlight.max_analyzed_offset" : "999999999"
}

返回结果这样就是成功了

{
"acknowledged": true
}

五、Docker搭建Filebeat和使用方法

5.1下载Filebeat镜像

docker pull elastic/filebeat:7.9.3

5.2临时启动镜像

docker run -d --name=filebeat elastic/filebeat:7.9.3

5.3拷贝数据文件

docker cp filebeat:/usr/share/filebeat /var/lib/elk/
chmod 777 -R /var/lib/elk/filebeat
chmod go-w /var/lib/elk/filebeat/filebeat.yml

5.4编辑配置文件

# 收集系统日志
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/messages

filebeat.config:
  modules:
    path: ${path.config}/modules.d/*.yml
    reload.enabled: false

processors:
- add_cloud_metadata: ~
- add_docker_metadata: ~

output.elasticsearch:
  hosts: '192.168.31.196:9200'
  indices:
    - index: "filebeat-%{+yyyy.MM.dd}"

5.5以新的方式启动

docker rm -f filebeat
docker run -d \
  --name=filebeat \
  --user=root \
  --restart=always \
  --net es-net \
  -v /var/lib/elk/filebeat:/usr/share/filebeat \
  -v /var/lib/elk/logdemo:/var/log/messages \
  elastic/filebeat:7.9.3

等待30秒,查看日志是否有错误

docker logs -f filebeat

5.6查看日志

访问elasticsearch head

http://192.168.128.136:9200/

在这里插入图片描述

ELK整合实战,filebeat和logstash采集SpringBoot项目日志发送至ES 但此时,我们并没有开启并配置Logstash,所以FileBeat是无法连接到Logstash的。默认字段经过date插件处理后,会输出到@timestamp字段,所以,我们可以通过修改target属性来重新定义输出字段。例如:时间、日志级别、哪个类打印的日志、日志具体内容。在Logstash中可以配置过滤器Filter对采集到的数据进行过滤处理,Logstash中有大量的插件可以供我们使用。但注意,要在index中使用时间格式化,filter的输出必须包含 @timestamp字段,否则将无法解析日期。 阅读详情

相关推荐

springboot + logback + filebeat + elk 实现分布式日志中心

前言:本文主要介绍docker搭建elk分布式日志平台,利用filebeat监听logback日志文件,传输到elk中,最终在kibana渲染展示。 主要思路:filebeat监听日志文件的变化,传输到logstash,logstash通过分析提取,将日志信息推送到elasticsearch指定索引中,最终kibana从elasticsearch索引中查询并展示日志信息。 一、docker搭建elk日志平台(v7.6.1) 1.1、准备镜像 docker pull docker.elastic.

iMChenJiaMing的博客 4596

Beats:在 Docker 里运行 Filebeat

Docker是一套平台即服务(PaaS)产品,它使用操作系统级虚拟化来以称为容器的软件包交付软件。容器彼此隔离,并将它们自己的软件,库和配置文件捆绑在一起; 他们可以通过定义明确的渠道相互交流。所有容器都由单个操作系统内核运行,因此比虚拟机更轻便。在目前的很多IT的架构中,Docker的使用越来越普及。这很好,但是一旦有多个容器散布在多个节点上,就需要找到一种方法来跟踪其运行状况,存储,CPU和内...

Elastic 中国社区官方博客 9009

ELK + Filebeat + Kafka 分布式日志管理平台搭建

在部署的过程中可能会遇到各种情况,此时根据日志说明都可以百度处理(如部署的过程中不能分配内存的问题)。如果完成后如果数据显示不了,可以先到根据工作流程到各个节点查询数据是否存储和传输成功。如查询filebeat是否成功把数据传输到了kafka,可以进入kafka容器当中使用kafka中如下命令查询:查看日志filebeat中的数据是否正常在kafka中存储。

2301_82242204的博客 1130

Springboot/Springcloud整合ELK平台,(Filebeat方式)日志采集及管理(Elasticsearch+Logstash+Filebeat+Kibana)

前言 最近在搞一套完整的云原生框架,详见 spring-cloud-alibaba专栏,目前已经整合的log4j2,但是想要一套可以实时观察日志的系统,就想到了ELK,然后上一篇文章是socket异步发送给logstash,logstash再输出到elasticsearch索引库中。 logstash是java应用,解析日志是非的消耗cpu和内存,logstash安装在应用部署的机器上显得非常的笨重。最常见的做法是用filebeat部署在应用的机器上,logstash单独部署,然后由filebeat将日志输

weixin_43627706的博客 8742

别再手动查日志了!用ELK+FileBeat搞定Spring Boot应用监控(Docker Compose一键部署)

本文详细介绍了如何使用ELK+FileBeat+Docker Compose构建生产级日志监控系统,解决微服务架构下的日志分散性、海量性、多样性和实时性挑战。通过一键部署方案和Spring Boot日志采集最佳实践,实现从日志采集到可视化分析的完整闭环,大幅提升运维效率。

weixin_30514745的博客 408

Filebeat7.17收集SpringBoot应用k8s容器日志

Filebeat+Kafka2.8+ELK7.17收集SpringBoot应用k8s容器日志 应用场景:springboot应用通过Deployment方式部署到k8s集群中,收集springboot应用日志。 关键实现点:在filebeat配置文件中,通过template+condition方式,对k8s namespace进行过滤;根据namespace将采集的日志发送到kafka的不同topic;通过processors:script对采集的kubernetes信息进行聚合。

xiongmao0304的博客 1993

ELK+Filebeat+SpringBoot搭建日志分析系统

ELK安装与启动 ElasticSearch安装 使用Docker进行安装 执行以下命令: docker run \ --name elasticsearch \ -p 9200:9200 -p 9300:9300 \ -e "discovery.type=single-node" \ -e ES_JAVA_OPTS="-Xms64m -Xmx2048m" \ -d elasticsearch:7.14.0 将容器内的配置文件拷贝到本地 拷贝的命令: docker cp 容器名:容器中要拷贝的文件名及其

zhowyunfat的博客 3622

从零学ELK系列(一):为什么要跟我学从零学ELK系列

【前言】 网上写ELK日志收集系统,项目集成ELK,Docker,本地安装虚拟机这些孤立技术点文章汗牛充栋;但是很少有文章能即生动又能结合场景的从零一步一步搭建一套生产级日志收集系统并将生产项目集成日志收集系统的方案; 机缘巧合,本人负责研究公司ELK日志收集系统,并成功将其引入到公司生产级项目中;经过多个版本的迭代升级优化目前已处于稳定状态。 【从零学EL...

通往精英的成长之路 7982

Springboot + docker + ELK +Filebeat实现日志收集与展示

文章目录1、ELKB架构2、本机环境3、ELKB环境搭建3.1、创建自定义网络3.2、elasticsearch环境配置3.2.1、创建elasticsearch目录3.2.2、配置elasticsearch.yml文件3.3、Kibana环境配置3.3.1、创建kibana目录3.3.2、kibana.yml文件配置3.4、Logstash配置3.4.1、Logstash目录创建3.4.2、logstash.yml和logstash.conf文件配置3.5、Filebeat配置3.5.1、Filebeat

皮卡丘的情绪 7374

深入解析Android SoundTrigger架构:从HIDL到AIDL的演进与实践

本文深入解析Android SoundTrigger架构,从HIDL到AIDL的演进与实践。SoundTrigger是Android系统中低功耗语音唤醒的关键技术,通过分层设计和硬件协同实现高效语音识别。文章详细介绍了核心组件、HIDL与AIDL的对比及优化技巧,帮助开发者掌握语音模型优化和功耗管理。

brown的博客 230

【零基础教程】HEC-RAS 1D/2D全流程模拟指南|从水动力到水质建模一次搞定!

HEC-RAS由美国陆军工程兵团水文研究中心研制,具有完整的一二维耦合的水动力及水环境模拟功能,也具有闸、涵洞、桥梁以及泵站等水利构筑物的模拟能力;同时也可以与HEC研制的水文模型(HMS)、洪水淹没风险和损失分析软件(FDA)等耦合,是免费软件中使用最方便、应用最广泛的软件之一。2.HEC-RAS与HEC-HMS的耦合(不详细讲HEC-HMS)3.淹没风险分析软件HEC-FDA与HEC-RAS耦合。案例十八:HEC-RAS与HEC-HMS的耦合。案例十九:HEC-RAS与HEC-FDA的耦合。

weixin_48230888的博客 872

docker-compose搭建ELK+filebeat(7.6.2)读取springboot项目日志

分布式搜索引擎。具有高可伸缩、高可靠、易管理等特点。可以用于全文检索、结构化检索和分析,并能将这三者结合起来。Elasticsearch 是用Java 基于 Lucene 开发,现在使用最广的开源搜索引擎之一,Wikipedia 、StackOverflow、Github 等都基于它来构建自己的搜索引擎。在elasticsearch中,所有节点的数据是均等的。

m0_68705273的博客 948

C# Code-Behind 技术全面解析

Code-Behind 是 ASP.NET Web Forms 中的一种技术模式,通过将用户界面标记(.aspx文件)与程序逻辑代码(.aspx.cs文件)分离,实现表现层与逻辑层的解耦。其核心思想是前端展示与后台逻辑的物理文件分离,通过ASP.NET编译器将两者合并编译成一个Page类并执行。Code-Behind 的优势包括较好的代码组织、较高的开发效率,尤其适合快速开发数据驱动应用。然而,与现代开发模式如ASP.NET MVC、ASP.NET Core和Blazor相比,Code-Behind 在可维

记录学习的过程 957

springBoot+Docker集成ELK

springBoot+Docker集成ELK一、elk 简介二、elk的安装三、创建springboot工程配置 pom.xml文件启动类 SpringbootElkApplicationlogback-spring.xml四、配置 pattern 一、elk 简介 时下最流行的ELK,日志分析系统,是由三部分组成:Logstash、ElasticSearch、Kibana。这三者是核心组件,并非全部。 Elasticsearch是实时全文搜索和分析引擎,提供搜集、分析、存储数据三大功能;是一套开放REST

weixin_44930692的博客 1683

生信实战:用bcftools玩转VCF文件处理(从压缩到注释全流程)

本文详细介绍了使用bcftools处理VCF文件的全流程实战指南。从数据准备、压缩索引、信息提取、质量统计到核心的变异过滤与功能注释,手把手教你高效管理基因组变异数据。重点阐述了如何利用bcftools进行VCF文件注释,整合外部数据库信息,为变异位点添加关键的生物学标签,是生物信息学数据分析的必备技能。

rgv23456789的博客 342

RTC温度补偿:如何让时间分秒不差?

RTC(实时时钟)温度补偿技术通过"检测温度→计算误差→动态调整频率"的闭环机制,解决振荡器频率随温度变化导致的时间误差问题。核心步骤包括:1)高精度温度检测;2)基于温度-频率误差模型计算偏差;3)通过硬件(可编程电容/DAC)或软件方式调整振荡频率。该技术需突破温度检测精度、误差模型拟合、频率调整分辨率等关键点,根据不同应用场景(消费电子±5ppm至军工±0.1ppm)选择匹配方案。典型实现如STM32的分段线性补偿算法,可将工业级RTC精度提升至±2ppm以内。

上市公司前技术负责人,20 年软硬件深耕 + 百人研发团队管理经验,名校理工科背景加持。从技术攻坚到团队掌舵,沉淀海量项目实战与管理心得,专注分享软硬件干货、疑难问题解决方案,既是靠谱知识传播者,也盼链接优质项目共成长。 1229

ELK+fileBeat搭建springboot日志系统 docker-compose方式

这里详细讲解fileBeat的搭建docker-compose方式,以docker容器名称为索引动态创建到ES,此方式收集的是所有docker容器的日志,和项目中配置的日志文件输出没多大关系,将自己都项目A和B和C等等,以容器化方式部署即可动态以部署的容器名称为索引创建收集至ES。其中ELK的docker-compose方式搭建参考上篇文章。一定要user“root”加这个,不然启动报错权限不够。配置文件的格式一定要严格检查,否则可能会报错。......

wzwwzwwww的博客 1020

Oracle19c-集群节点重新添加

Oracle RAC集群在极端情况下,如硬件、主机,集群软件损坏,导致集群节点永久无法使用,需要对集群节点进行修复,删除节点集群信息并重新加入集群,以恢复集群原有的架构。 本文主要讲述一套两节点的Oracle19c RAC集群,节点一orcl01由于主机异常无法正常启动,在对主机进行重装之后,需要将orcl01节点重新加入集群的操作步骤。环境信息: 操作系统:Linux 7 RAC集群:19C 主机节点:orcl0...

sinat_36757755的博客 2352

Spring Boot + Filebeat + ELK日志在线查看

本文介绍了使用Spring Boot 3.x与ELK 8.x实现日志在线展示的完整方案。主要内容包括:ELK日志收集的必要性分析,整体架构流程图解(Spring Boot→Filebeat→Logstash→Elasticsearch→Kibana),详细配置指南(logback-spring.xml日志输出、filebeat.yml日志采集、logstash.conf日志清洗),以及Docker部署方式。该方案适用于微服务环境下的日志监控、异常分析和实时可视化展示,通过JSON格式日志和结构化处理实现高效

qq_39251691的博客 1059

【驱动适配】高通sa522平台tac5x1x驱动适配全指南

本手册详细介绍了TAC5301-Q1音频编解码器在高通sa525平台Linux系统下的驱动适配流程。主要内容包括:1)TAC5301-Q1核心特性(车载级音频Codec、关键接口和功能);2)驱动适配依赖(高通声卡驱动、ALSA SoC框架等);3)I2S协议原理及主从模式说明;4)硬件准备与检查要点;5)完整的驱动移植步骤(代码移植、Kconfig/Makefile修改、设备树配置)。该手册适用于嵌入式音频开发工程师快速完成TAC5301-Q1芯片的驱动移植与验证工作。

嵌入式博哥的博客 304

数学建模学习(5):最全概率分析之图表绘制详解,内容比较多,建议收藏

(1) 绘制正整数频率使用 tabulate(X) (2)

全栈川川 4593

ELK7==docker-compose部署filebeat和ELK=filebeat收集springboot日志,logstash过滤后存入ES,kibana从ES读取数据并可视化显示

使用一台linuxdocker compose部署一主一从ELK 需要准备的文件如下 上述文件的存放位置为/www 具体位置见下图 [root@elk107 www]# tree . ├── docker-elk.yml ├── docker-filebeat.yml ├── elasticsearch │   ├── master │   │   ├── conf │   │   │ &nbs

hebian1994的博客 1729

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

【运维笔记】docker + elasticsearch + kibana + logstash + filebeat + springboot 实现多模块日志收集系统(详细步骤版)

Centos7.5 docker-24.0.6 + elasticsearch-7.4.0 + kibana-7.4.0 + logstash-7.4.0 + filebeat-7.4.0 + springboot 实现多模块日志收集。

seesun2012的专栏 626

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

ELK 日志采集系统搭建

ELK 日志采集系统搭建 一般我们需要进行日志分析场景:直接在日志文件中 grep、awk 就可以获得自己想要的信息。但在规模较大的场景中,此方法效率低下,面临问题包括日志量太大如何归档、文本搜索太慢怎么办、如何多维度查询。需要集中化的日志管理,所有服务器上的日志收集汇总。 常见解决思路是建立集中式日志收集系统,将所有节点上的日志统一收集,管理,访问。一般大型系统是一个分布式部署的架构,不同的服务模块部署在不同的服务器上,问题出现时,大部分情况需要根据问题暴露的关键信息,定位到具体的服务器和服务模块,构

Jack Li 的博客 1227

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

上一篇: SAP如何发布webservice
下一篇: docker搭建sentry
十二夜岚风
博客等级 码龄7年 60粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值