docker快速实现ELK的安装和使用

目录

一、ELK功能原理

二、项目功能展示​

三、日志查询展示​

四、ELK安装步骤

1、创建elasticsearch、kibana、filebeat相关data、log、conf目录

2、进入/usr/local/elk目录,并创建一个docker网络

3、启动 elasticsearch容器

4、运行kibana容器

5、启动filebeat容器

6、查看上述三个服务运行状态

7、复制elasticsearch、kibana、filebeat配置文件

8、修改elasticsearch、kibana、filebeat配置文件 

 9、修改完成配置文件后,再次分别修改三个容器服务的启动命令

10、修改elasticsearch系统用户密码 

11、浏览器访问服务

12、配置和使用Kibana


一、ELK功能原理

项目使用过程中,功能的操作,如查询、修改、删除、添加、第三方请求日志等功能的操作过程中,后台会产生日志,实时存入.log日志文件中,filebeat容器根据配置的日志文件路径,及日志文件路径映射关系,监听日志文件内容变动,将项目产生的实时变动日志内容发送到elasticsearch中存储,最后kibana界面从elasticsearch中查询日志变动数据,最后展示在kibana的日志界面中。

二、项目功能展示

三、日志查询展示

四、ELK安装步骤

1、创建elasticsearch、kibana、filebeat相关data、log、conf目录

sudo mkdir -p /usr/local/elk/elasticsearch/config
sudo mkdir -p /usr/local/elk/elasticsearch/data
sudo mkdir -p /usr/local/elk/elasticsearch/logs
sudo mkdir -p /usr/local/elk/kibana/config
sudo mkdir -p /usr/local/elk/kibana/data
sudo mkdir -p /usr/local/elk/kibana/logs
sudo mkdir -p /usr/local/elk/filebeat/config
sudo mkdir -p /usr/local/elk/filebeat/data
sudo mkdir -p /usr/local/elk/filebeat/logs

2、进入/usr/local/elk目录,并创建一个docker网络

进入目录,然后先创建一个名为elk-net的docker网络,当然名字自己可以随意定义

cd /usr/local/elk/ && docker network create elk-net

为什么创建专用 Docker 网络?

  • 更好的网络隔离:创建专用网络可以将 ELK 组件与其他容器和服务隔离开来,避免网络冲突和安全风险。
  • 更简单的服务发现:在同一个 Docker 网络中的容器可以通过容器名称互相通信,而不需要使用 IP 地址。这使得配置更加简单和灵活。
  • 更好的性能:专用网络可以减少网络延迟,提高 ELK 堆栈的性能。
  • 更清晰的管理:专用网络使网络管理更加清晰,便于维护和扩展

3、启动 elasticsearch容器

docker run -d \
--name elasticsearch \
--env cluster.name=es-app-cluster \
--env bootstrap.memory_lock=true \
--env node.name=node-01 \
--env discovery.type=single-node \
--env xpack.security.enabled=true \
--env xpack.security.http.ssl.enabled=false \
--env xpack.security.transport.ssl.enabled=false \
--env ingest.geoip.downloader.enabled=false \
--env ELASTIC_USERNAME=elastic \
--env ELASTIC_PASSWORD=elastic \
--env ES_JAVA_OPTS="-Xms256m -Xmx256m" \
--ulimit memlock=-1:-1 \
--volume /etc/localtime:/etc/localtime:ro \
--volume /etc/timezone:/etc/timezone:ro \
--publish 9200:9200 \
--publish 9300:9300 \
--network elk-net \
--restart always \
--privileged \
docker.elastic.co/elasticsearch/elasticsearch:8.6.2

注意:因为我提前已经下载或elasticsearch镜像,所以比较快,你们首次运行这个命令,下载很慢,耐心等待下载完成并运行容器即可。

参数说明

### `docker run -d`
- **作用**:以后台模式(detached mode)运行容器。
- **解释**:`-d` 参数表示容器在后台运行,不会占用当前终端。

### `--name elasticsearch`
- **作用**:为容器指定一个名称。
- **解释**:`elasticsearch` 是容器的名称,方便后续管理和引用。

### `--env cluster.name=es-app-cluster`
- **作用**:设置 Elasticsearch 集群的名称。
- **解释**:`es-app-cluster` 是集群的名称,用于标识和管理多个集群。

### `--env bootstrap.memory_lock=true`
- **作用**:启用内存锁定。
- **解释**:`true` 表示 Elasticsearch 将锁定内存,防止操作系统交换内存到磁盘,从而提高性能。

### `--env node.name=node-01`
- **作用**:设置节点的名称。
- **解释**:`node-01` 是节点的名称,用于标识集群中的不同节点。

### `--env discovery.type=single-node`
- **作用**:设置发现类型为单节点模式。
- **解释**:`single-node` 表示这是一个单节点的 Elasticsearch 实例,适用于开发和测试环境。

### `--env xpack.security.enabled=true`
- **作用**:启用 X-Pack 安全功能。
- **解释**:`true` 表示启用 X-Pack 安全功能,包括用户认证、授权等。

### `--env xpack.security.http.ssl.enabled=false`
- **作用**:禁用 HTTP SSL/TLS 加密。
- **解释**:`false` 表示不启用 HTTP SSL/TLS 加密,适用于内部网络或开发环境。

### `--env xpack.security.transport.ssl.enabled=false`
- **作用**:禁用传输层 SSL/TLS 加密。
- **解释**:`false` 表示不启用传输层 SSL/TLS 加密,适用于内部网络或开发环境。

### `--env ingest.geoip.downloader.enabled=false`
- **作用**:禁用 GeoIP 下载器。
- **解释**:`false` 表示不启用 GeoIP 下载器,减少不必要的资源消耗。

### `--env ELASTIC_USERNAME=elastic`
- **作用**:设置 Elasticsearch 的用户名。
- **解释**:`elastic` 是默认的超级管理员用户名。

### `--env ELASTIC_PASSWORD=elastic`
- **作用**:设置 Elasticsearch 的密码。
- **解释**:`elastic` 是默认的超级管理员密码。在生产环境中,建议使用更复杂的密码。

### `--env ES_JAVA_OPTS="-Xms256m -Xmx256m"`
- **作用**:设置 JVM 的堆内存大小。
- **解释**:`-Xms256m` 设置初始堆内存大小为 256MB,`-Xmx256m` 设置最大堆内存大小为 256MB。

### `--ulimit memlock=-1:-1`
- **作用**:设置内存锁定限制。
- **解释**:`-1:-1` 表示不限制内存锁定,允许 Elasticsearch 锁定所有分配的内存。

### `--volume /etc/localtime:/etc/localtime:ro`
- **作用**:挂载宿主机的 `/etc/localtime` 到容器的 `/etc/localtime`,并且以只读方式挂载。
- **解释**:确保容器使用宿主机的系统时间。

### `--volume /etc/timezone:/etc/timezone:ro`
- **作用**:挂载宿主机的 `/etc/timezone` 到容器的 `/etc/timezone`,并且以只读方式挂载。
- **解释**:确保容器使用宿主机的时区设置。

### `--publish 9200:9200`
- **作用**:将容器的 9200 端口映射到宿主机的 9200 端口。
- **解释**:9200 端口是 Elasticsearch 的 HTTP API 端口。

### `--publish 9300:9300`
- **作用**:将容器的 9300 端口映射到宿主机的 9300 端口。
- **解释**:9300 端口是 Elasticsearch 的传输层通信端口,用于节点间通信。

### `--network elk-net`
- **作用**:将容器连接到指定的 Docker 网络。
- **解释**:`elk-net` 是之前创建的专用 Docker 网络,用于连接 ELK 组件。

### `--restart always`
- **作用**:设置容器的重启策略。
- **解释**:`always` 表示无论容器退出状态如何,都会自动重启容器。

### `--privileged`
- **作用**:赋予容器特权模式。
- **解释**:`--privileged` 表示容器具有几乎所有的内核能力,适用于需要高级权限的场景。

### `docker.elastic.co/elasticsearch/elasticsearch:8.6.2`
- **作用**:指定要使用的 Docker 镜像。
- **解释**:`docker.elastic.co/elasticsearch/elasticsearch:8.6.2` 是 Elasticsearch 的官方镜像,版本为 8.6.2。

4、运行kibana容器

docker run -d \
--name kibana \
--env ELASTICSEARCH_HOSTS=http://elasticsearch:9200 \
--env ELASTICSEARCH_USERNAME=kibana_system \
--env ELASTICSEARCH_PASSWORD=elastic \
--env XPACK_SECURITY_ENABLED=true \
--env SERVER_NAME=kibana \
--volume /etc/localtime:/etc/localtime:ro \
--volume /etc/timezone:/etc/timezone:ro \
--publish 5601:5601 \
--network elk-net \
--restart always \
--privileged \
docker.elastic.co/kibana/kibana:8.6.2

注意:请耐心等待下载完成并运行即可

参数说明

docker run -d
作用:以后台模式(detached mode)运行容器。
解释:-d 参数表示容器在后台运行,不会占用当前终端。
--name kibana
作用:为容器指定一个名称。
解释:kibana 是容器的名称,方便后续管理和引用。
--env ELASTICSEARCH_HOSTS=http://elasticsearch:9200
作用:设置 Kibana 连接的 Elasticsearch 实例的地址。
解释:http://elasticsearch:9200 表示 Kibana 将连接到名为 elasticsearch 的主机上的 Elasticsearch 服务,端口为 9200。这通常用于 Docker 容器或 Kubernetes 集群中的服务发现。
--env ELASTICSEARCH_USERNAME=kibana_system
作用:设置 Kibana 连接 Elasticsearch 时使用的用户名。
解释:kibana_system 是 Kibana 用于连接 Elasticsearch 的用户名。
--env ELASTICSEARCH_PASSWORD=elastic
作用:设置 Kibana 连接 Elasticsearch 时使用的密码。
解释:elastic 是 Kibana 用于连接 Elasticsearch 的密码。在生产环境中,建议使用更复杂的密码。
--env XPACK_SECURITY_ENABLED=true
作用:启用 X-Pack 安全功能。
解释:true 表示启用 X-Pack 安全功能,包括用户认证、授权等。
--env SERVER_NAME=kibana
作用:设置 Kibana 服务器的名称。
解释:kibana 是 Kibana 服务器的名称,用于标识和管理。
--volume /etc/localtime:/etc/localtime:ro
作用:挂载宿主机的 /etc/localtime 到容器的 /etc/localtime,并且以只读方式挂载。
解释:确保容器使用宿主机的系统时间。
--volume /etc/timezone:/etc/timezone:ro
作用:挂载宿主机的 /etc/timezone 到容器的 /etc/timezone,并且以只读方式挂载。
解释:确保容器使用宿主机的时区设置。
--publish 5601:5601
作用:将容器的 5601 端口映射到宿主机的 5601 端口。
解释:5601 端口是 Kibana 的默认 HTTP 服务端口,用于访问 Kibana 用户界面。
--network elk-net
作用:将容器连接到指定的 Docker 网络。
解释:elk-net 是之前创建的专用 Docker 网络,用于连接 ELK 组件。
--restart always
作用:设置容器的重启策略。
解释:always 表示无论容器退出状态如何,都会自动重启容器。
--privileged
作用:赋予容器特权模式。
解释:--privileged 表示容器具有几乎所有的内核能力,适用于需要高级权限的场景。在大多数情况下,Kibana 不需要特权模式,除非有特殊需求。
docker.elastic.co/kibana/kibana:8.6.2
作用:指定要使用的 Docker 镜像。
解释:docker.elastic.co/kibana/kibana:8.6.2 是 Kibana 的官方镜像,版本为 8.6.2。

5、启动filebeat容器

docker run -d \
--name filebeat \
--volume /etc/localtime:/etc/localtime:ro \
--volume /etc/timezone:/etc/timezone:ro \
--network elk-net \
--restart always \
--privileged \
--user root \
docker.elastic.co/beats/filebeat:8.6.2

参数说明

docker run -d
作用:以后台模式(detached mode)运行容器。
解释:-d 参数表示容器在后台运行,不会占用当前终端。
--name filebeat
作用:为容器指定一个名称。
解释:filebeat 是容器的名称,方便后续管理和引用。
--volume /etc/localtime:/etc/localtime:ro
作用:挂载宿主机的 /etc/localtime 到容器的 /etc/localtime,并且以只读方式挂载。
解释:确保容器使用宿主机的系统时间。
--volume /etc/timezone:/etc/timezone:ro
作用:挂载宿主机的 /etc/timezone 到容器的 /etc/timezone,并且以只读方式挂载。
解释:确保容器使用宿主机的时区设置。
--network elk-net
作用:将容器连接到指定的 Docker 网络。
解释:elk-net 是之前创建的专用 Docker 网络,用于连接 ELK 组件。这样可以确保 Filebeat 能够与 Elasticsearch 和 Kibana 通信。
--restart always
作用:设置容器的重启策略。
解释:always 表示无论容器退出状态如何,都会自动重启容器。这有助于确保 Filebeat 服务的高可用性。
--privileged
作用:赋予容器特权模式。
解释:--privileged 表示容器具有几乎所有的内核能力,适用于需要高级权限的场景。在大多数情况下,Filebeat 不需要特权模式,除非有特殊需求。
--user root
作用:指定容器以特定用户身份运行。
解释:root 表示容器将以 root 用户身份运行。这通常是出于权限管理的考虑,确保 Filebeat 有足够的权限访问日志文件。
docker.elastic.co/beats/filebeat:8.6.2
作用:指定要使用的 Docker 镜像。
解释:docker.elastic.co/beats/filebeat:8.6.2 是 Filebeat 的官方镜像,版本为 8.6.2。

6、查看上述三个服务运行状态

docker ps  如上图所示,表示三个服务都已正常启动

7、复制elasticsearch、kibana、filebeat配置文件

将elasticsearch、kibana容器内的config、data、logs这三个目录复制到宿主机咱们刚才第一步创建的目录中,具体操作如下

  • elasticsearch容器目录复制到宿主机对应目录

    docker cp elasticsearch:/usr/share/elasticsearch/config /usr/local/elk/elasticsearch/

    docker cp elasticsearch:/usr/share/elasticsearch/data /usr/local/elk/elasticsearch/

    docker cp elasticsearch:/usr/share/elasticsearch/logs /usr/local/elk/elasticsearch/
    我是这三个命令一次性执行的,如下图Successfully,表示复制成功

  • kibana容器目录复制到宿主机对应目录
    docker cp kibana:/usr/share/kibana/config /usr/local/elk/kibana/

    docker cp kibana:/usr/share/kibana/data /usr/local/elk/kibana/

    docker cp kibana:/usr/share/kibana/logs /usr/local/elk/kibana/

  • filebeat容器目录复制到宿主机对应目录
    docker cp filebeat:/usr/share/filebeat/filebeat.yml /usr/local/elk/filebeat/config/
    docker cp filebeat:/usr/share/filebeat/data /usr/local/elk/filebeat/
    docker cp filebeat:/usr/share/filebeat/logs /usr/local/elk/filebeat/

8、修改elasticsearch、kibana、filebeat配置文件 

  • 修改elasticsearch配置文件
    cd elasticsearch/config/ && rm -rf elasticsearch.yml && vi elasticsearch.yml 
    这个命令回车后输入以下内容后保存
    #elasticsearch 配置文件 elasticsearch.yml内容
    cluster.name: "es-app-cluster"
    # 确保Elasticsearch监听所有接口
    network.host: 0.0.0.0
    node.name: node-01
    path.data: /usr/share/elasticsearch/data
    path.logs: /usr/share/elasticsearch/logs
    http.port: 9200
    discovery.type: single-node
    xpack.security.enabled: true
    bootstrap.memory_lock: true
    # 禁用证书检查
    xpack.security.http.ssl.enabled: false
    xpack.security.transport.ssl.enabled: false
    #GeoIP数据库用于将IP地址映射到地理位置信息,关闭它
    ingest.geoip.downloader.enabled: false
  • 修改kibana配置文件
    cd ../../kibana/config/ && rm -rf kibana.yml && vi kibana.yml
    回车后输入以下内容后保存
    #Kibana 服务监听的网络接口地址
    server.host: "0.0.0.0"
    #Kibana 服务在接收到关闭信号后等待的时间
    server.shutdownTimeout: "10s"
    elasticsearch.hosts: [ "http://elasticsearch:9200" ]
    #启用或禁用 Kibana 监控界面中对 Elasticsearch 容器的监控
    monitoring.ui.container.elasticsearch.enabled: true
    #界面汉化
    i18n.locale: "zh-CN"
    #启用或禁用 Kibana 报告功能的角色管理
    xpack.reporting.roles.enabled: false
  • 修改filebeat配置文件
    cd ../../filebeat/config/ && rm -rf filebeat.yml && vi filebeat.yml
    回车后输入以下内容后保存
    filebeat.inputs:
    - type: filestream
      id: third-data-send #id要唯一
      enabled: true
      paths:
        - /host/var/log/third-data-send/*.log #你的某个项目日志文件路径
      fields_under_root: true
      fields:
        type: third-data-send-api
        project: third-data-send
        app: third-data-send
    
    - type: filestream
      id: third-data-send-manager #id要唯一
      enabled: true
      paths:
        - /host/var/log/third-data-send-manager/*.log #你的某个项目日志文件路径
      fields_under_root: true
      fields:
        type: third-data-send-manager
        project: third-data-send-manager
        app: third-data-send-manager
     
    output.elasticsearch:
      hosts: ["http://elasticsearch:9200"]
      username: elastic
      password: elastic
      indices:
        - index: "third-data-send-api-%{+yyyy.MM.dd}"
          when.equals:
            type: "third-data-send-api"
        - index: "third-data-send-manager-%{+yyyy.MM.dd}"
          when.equals:
            type: "third-data-send-manager"
     
    setup.template.name: "third-data-send"  # 设置模板名称
    setup.template.pattern: "third-data-send-*"  # 设置模板模式
    setup.ilm.enabled: false #如果你不需要自动管理索引生命周期,或者 Elasticsearch 集群没有配置 ILM 策略,建议禁用
     
    setup.kibana:
      host: "kibana:5601"
    

    上面的配置说明一下
    我主要模拟配置两个项目的日志配置

    项目1:配置third-data-send项目日志作为一个模拟项目的日志目录
    项目2:配置third-data-send-manager项目日志作为一个模拟项目的日志目录

    具体配置几个项目日志目录,就写几个类似下图的模块

    type、enabled、fields_under_root固定不变,其他的值自己根据实际情况自定义
    (如果上述配置运行后报错yml文件格式错误,解决思路:需要将文件内容的-type模块整体往右缩进两个字符)

 9、修改完成配置文件后,再次分别修改三个容器服务的启动命令

在我们修改三个容器服务的启动命令之前,先将它们停止并删除

docker stop filebeat kibana elasticsearch
docker rm filebeat kibana elasticsearch
 

修改elasticsearch启动命令,并最终以此命令为最终执行启动容器的命令(多加入了三个volume映射目录),然后执行此命令
docker run -d \
--name elasticsearch \
--env cluster.name=es-app-cluster \
--env bootstrap.memory_lock=true \
--env node.name=node-01 \
--env discovery.type=single-node \
--env xpack.security.enabled=true \
--env xpack.security.http.ssl.enabled=false \
--env xpack.security.transport.ssl.enabled=false \
--env ingest.geoip.downloader.enabled=false \
--env ELASTIC_USERNAME=elastic \
--env ELASTIC_PASSWORD=elastic \
--env ES_JAVA_OPTS="-Xms256m -Xmx256m" \
--ulimit memlock=-1:-1 \
--volume /usr/local/elk/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
--volume /usr/local/elk/elasticsearch/data:/usr/share/elasticsearch/data \
--volume /usr/local/elk/elasticsearch/logs:/usr/share/elasticsearch/logs \
--volume /etc/localtime:/etc/localtime:ro \
--volume /etc/timezone:/etc/timezone:ro \
--publish 9200:9200 \
--publish 9300:9300 \
--network elk-net \
--restart always \
--privileged \
docker.elastic.co/elasticsearch/elasticsearch:8.6.2

 接下来,修改kibana启动命令(多加入了三个volume映射目录)

docker run -d \
--name kibana \
--env ELASTICSEARCH_HOSTS=http://elasticsearch:9200 \
--env ELASTICSEARCH_USERNAME=kibana_system \
--env ELASTICSEARCH_PASSWORD=elastic \
--env XPACK_SECURITY_ENABLED=true \
--env SERVER_NAME=kibana \
--volume /usr/local/elk/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml \
--volume /usr/local/elk/kibana/data:/usr/share/kibana/data \
--volume /usr/local/elk/kibana/logs:/usr/share/kibana/logs \
--volume /etc/localtime:/etc/localtime:ro \
--volume /etc/timezone:/etc/timezone:ro \
--publish 5601:5601 \
--network elk-net \
--restart always \
--privileged \
docker.elastic.co/kibana/kibana:8.6.2

最后,修改filebeat启动容器命令 (多加入了三个volume映射目录,同时为了filebeat有足够的权限,给filebeat容器配置用户为root)

docker run -d \
--name filebeat \
--volume /usr/local/elk/filebeat/config/filebeat.yml:/usr/share/filebeat/filebeat.yml \
--volume /usr/local/elk/filebeat/data:/usr/share/filebeat/data \
--volume /usr/local/elk/filebeat/logs:/usr/share/filebeat/logs \
--volume /usr/workspace/logs/third-data-send:/host/var/log/third-data-send \
--volume /usr/workspace/logs/third-data-send-manager:/host/var/log/third-data-send-manager \
--volume /etc/localtime:/etc/localtime:ro \
--volume /etc/timezone:/etc/timezone:ro \
--network elk-net \
--restart always \
--privileged \
--user root \
docker.elastic.co/beats/filebeat:8.6.2

上述三个服务启动命令修改并成功运行后,查看服务状态
docker ps 

如图所示status都是Up开头则表示启动成功,且正常运行

10、修改elasticsearch系统用户密码 

进入elasticsearch容器

docker exec -it elasticsearch /bin/bash

执行下面的代码
./bin/elasticsearch-setup-passwords interactive

回车后选择“y”后再回车,然后就是漫长的输入密码-确认密码的过程了,要耐心,一直输下去,直至最终结束,在此过程中,为了方便,我所有的用户的密码,我都设置为elastic,你可以设置其它密码也行,密码要求最低6个字符

修改密码结束后exit退出容器

重启服务

docker restart elasticsearch kibana filebeat

11、浏览器访问服务

我的ip是192.168.7.46,

打开浏览器访问http://服务器IP:9200/ 查看elasticsearch状态,提示登录,

 

输入刚才你设定的密码,就可以登录,比如我给elastic用户设定的密码是elastic,然后就可以登录了,登录成功后如下图

然后访问kibana服务

打开浏览器访问http://服务器IP:5601/,注意ip是你的服务器ip,端口就是5601,首次访问页面如下,需要先配置Elastic,我们选择自己手动配置一下,然后配置Elastic服务地址,修改下ip和端口,如我就是配置的是192.168.7.46:9200,访问后提示登录,同上一步一样,我使用elastic用户,密码我设定的elastic,然后登录即可

12、配置和使用Kibana

登录成功进入首页

查看索引

进入索引管理,就能看到我们配置的数据流数据、索引模板数据了

配置kibana,进行日志查看

创建数据视图

然后如上图所示:名称自己可以自定义一个名称,索引模式必须按之前filebeat.yml里配置的索引,格式为:索引-*,正确配置好索引模式后,右边会显示适配的结果,如上图: 您的索引模式匹配 1 个源,third-data-send-api-2024.12.13数据流,最后保存即可。

然后按照此步骤我又创建了third-data-send-manager视图,共两个视图

创建好视图后,左侧菜单Discover进入日志查询界面

进入Discover日志查询界面,可切换不同项目,查看日志

显示区域里的日志内容太乱,我们没必要显示那么多字段,只需显示message即可,如下配置:

添加完成message字段以后,如下图,显示的日志更清晰了

如果日志内容太多,我们想精确查询,可以使用KQL语法进行查询,列如,我想查询message里包含“温湿度”的日志,输入语法为 message:温湿度,如下图

关于更具体的KQL语法,可自行百度学习,此处不再赘述。

关于查询条件,我们可以根据自己的需要自己设置查询时间,刷新频率等

至此,docker安装ELK完成。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Spark】Spark Join类型及Join实现方式

如果觉得这篇文章对您有帮助,别忘了点赞、分享或关注哦!您的一点小小支持,不仅能帮助更多人找到有价值的内容,还能鼓励我持续分享更多精彩的技术文章。感谢您的支持,让我们一起在技术的世界中不断进步! Sp…

从YOLOv5到训练实战:易用性和扩展性的加强

文章目录 前言一、模型介绍二、YOLOv5网络结构1.Input(输入端):智能预处理与优化策略2.Backbone(骨干网络):高效特征提取3.NECK(颈部):特征增强与多尺度融合4.Prediction…

Java爬虫设计:淘宝商品详情接口数据获取

1. 概述 淘宝商品详情接口(如Taobao.item_get)允许开发者通过编程方式,以JSON格式实时获取淘宝商品的详细信息,包括商品标题、价格、销量等。本文档将介绍如何设计一个Java爬虫来获取这些数据。 2. 准备工作 在开始之前&#x…

AIGC 013-CoT用思维链挖掘自回归语言模型的潜在能力

AIGC 013-CoT用思维链挖掘自回归语言模型的潜在能力 文章目录 0 论文工作1 论文方法2 实验结果 0 论文工作 纯自回归式语言模型,本来并不具备优秀推理能力,特别是在数学问题的推理。但是现在的生成模型是能实现一些数学的推理的。研究者认为当模型足够大…

上传文件时获取音视频文件时长和文本文件字数

获取音视频文件时长和文本文件字数 一、获取音视频文件时长二、计算文本文件字数 最近有个需求,要求上传文件时获取音视频文件时长和文本文件字数🐶。 发现这样的冷门资料不多,特做个记录。本文忽略文件上传功能,只封装核心的工具…

ue5.2 数字孪生(11)——Web_UI插件网页通信

Web_UI插件下载安装: https://github.com/tracerinteractive/UnrealEngine/releases 下载对应Ue版本的Web_UI插件以及相关的Json、Http库; 将插件安装到引擎根目录 Ue链接Web: 在项目中启用插件并重启项目; 创建基于Web的用户…

postman可以通的请求,前端通不了(前端添加Content-type,后端收不到请求)

接口完成之后,自己使用postman测试了一下,没有问题; 可是在和小组前端调试接口的时候,他却说访问不了; 信息如下:(我自己写的一个打印请求信息的拦截器) 发现报错信息是: Content type ‘application/x-www-form-urlencoded;charset=UTF-8’ not supported 也就是说…

EFAK kafka可视化管理工具部署使用

简介:EFAK是开源的可视化和管理软件。它允许您查询、可视化、提醒和探索您的指标,无论它们存储在何处。简单来说,它为您提供了将 Kafka 集群数据转换为漂亮的图形和可视化效果的工具。 环境:①操作系统:CentOS7.6&…

MySQL生产环境备份脚本

全量备份脚本,其中BakDir,ZlbakDir,LogFile需要自己创建 #!/bin/bash export LANGen_US.UTF-8# 指定备份目录 BakDir/root/beifen/data/mysqlbak/data/allbak # 指定增量备份目录 ZlbakDir/root/beifen/data/mysqlbak/data/zlbak # 备份日志…

快速搭建express

一、 安装express-generator npm i -g express-generator二、创建项目 express -e 项目名三、安装依赖 npm install四、运行项目 cd 项目名npm start 五、打开网页http://localhost:3000/ 六、实时更新 1、安装nodemon npm i -g nodemon2、修改package.json 改成nodemon …

网络编程 01:计算机网络概述,网络的作用,网络通信的要素,以及网络通信协议与分层模型

一、概述 记录时间 [2024-12-13] 本文讲述网络编程相关知识,例如,什么是计算机网络,网络有什么作用,网络通信的要素是什么,以及网络通信协议与分层模型。 网页编程 / 网络编程区别: 网页编程:J…

亚信安全DeepSecurity完成与超云超融合软件兼容性互认

近日,亚信安全与超云数字技术集团有限公司(以下简称“超云”)联合宣布,亚信安全成功完成与超云超融合软件的产品兼容性互认证。经严格测试,亚信安全云主机安全DeepSecurity与超云FS5000增强型融合系统(简称…

【工业机器视觉】基于深度学习的水表盘读数识别(3-数据标注与转换)

【工业机器视觉】基于深度学习的仪表盘识读(2)-CSDN博客 数据标注 标注扩展 Labelme 和 LabelImg 都是用于创建机器学习和计算机视觉项目所需标注数据的工具。它们都允许用户通过图形界面手动标注图像,但各自有其特点和适用场景。 Labelme…

【硬件测试】基于FPGA的4ASK调制解调通信系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR

目录 1.算法仿真效果 2.算法涉及理论知识概要 3.Verilog核心程序 4.开发板使用说明和如何移植不同的开发板 5.完整算法代码文件获得 1.算法仿真效果 本文是之前写的文章: 《基于FPGA的4ASK调制解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR》 的…

ubuntu20.04复现 Leg-KILO

这里写目录标题 opencv版本问题下载3.2.0源代码进入解压后的目录创建构建目录运行 CMake 配置 配置时指定一个独立的安装目录,例如 /opt/opencv-3.2:出错: 使用多线程编译错误1: stdlib.h: 没有那个文件或目录错误2:er…

kubeadm部署1.20集群版

部署说明 步骤1~4 master和node都需执行步骤 5.1 三台master都执行,步骤 5.2 随便一台机器执行步骤5.3根据需要选择部署etcd;堆叠etcd更简单部署更快,外部etcd部署麻烦方便管理;步骤5.4 根据选择部署的etcd方式选择k8…

【电力负荷预测实例】采用新英格兰2024年最新电力负荷数据的XGBoost电力负荷预测模型

与小编上篇文章介绍的基于BPNN神经网络的电力负荷预测相比较,两种模型的负荷预测方法各有优势,神经网络能够自动提取特征并处理非线性关系,而XGBoost则具有预测精度高、运行速率快和可解释性强的特点。在实际应用中,可以根据具体需…

6_Sass 选择器函数 --[CSS预处理]

Sass 提供了一系列的选择器函数,用于操作和组合CSS选择器。这些函数可以帮助你更灵活地创建样式规则,并且可以减少重复代码。以下是几个常用的选择器函数及其用法: 1. selector-append($selector1, $selector2...) selector-append($select…

List【Redis对象篇】

🏆 作者简介:席万里 ⚡ 个人网站: 文章目录 LIst1.简介2.使用场景3.常用操作1.写操作2.读操作 4.底层实现5.压缩列表的优化1.ZIPLIST结构2.ziplist更新数据3.LISTPACK优化 6.总结(重点) LIst 1.简介 Redis List是一组…

心情追忆- SEO优化提升用户发现率

之前,我独自一人开发了一个名为“心情追忆”的小程序,旨在帮助用户记录日常的心情变化及重要时刻。我从项目的构思、设计、前端(小程序)开发、后端搭建到最终部署。经过一个月的努力,通过群聊分享等方式,用…