当前位置: 首页 > news >正文

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: filestreamid: third-data-send #id要唯一enabled: truepaths:- /host/var/log/third-data-send/*.log #你的某个项目日志文件路径fields_under_root: truefields:type: third-data-send-apiproject: third-data-sendapp: third-data-send- type: filestreamid: third-data-send-manager #id要唯一enabled: truepaths:- /host/var/log/third-data-send-manager/*.log #你的某个项目日志文件路径fields_under_root: truefields:type: third-data-send-managerproject: third-data-send-managerapp: third-data-send-manageroutput.elasticsearch:hosts: ["http://elasticsearch:9200"]username: elasticpassword: elasticindices:- 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完成。

相关文章:

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

目录 一、ELK功能原理 二、项目功能展示​ 三、日志查询展示​ 四、ELK安装步骤 1、创建elasticsearch、kibana、filebeat相关data、log、conf目录 2、进入/usr/local/elk目录,并创建一个docker网络 3、启动 elasticsearch容器 4、运行kibana容器 5、启动f…...

hbase读写操作后hdfs内存占用太大的问题

hbase读写操作后hdfs内存占用太大的问题 查看内存信息hbase读写操作 查看内存信息 查看本地磁盘的内存信息 df -h查看hdfs上根目录下各个文件的内存大小 hdfs dfs -du -h /查看hdfs上/hbase目录下各个文件的内存大小 hdfs dfs -du -h /hbase查看hdfs上/hbase/oldWALs目录下…...

解决vue2中更新列表数据,页面dom没有重新渲染的问题

在 Vue 2 中,直接修改数组的某个项可能不会触发视图的更新。这是因为 Vue 不能检测到数组的索引变化或对象属性的直接赋值。为了确保 Vue 能够正确地响应数据变化,你可以使用以下几种方法: 1. 使用 Vue.set() 使用 Vue.set() 方法可以确保 …...

Go语言错误分类

错误的分类 在 Go 语言中,错误是通过实现 error 接口的类型表示的,但不同场景下的错误可以按性质和用途进行分类。以下是 Go 语言错误的常见分类,以及每类错误的解释和示例: 标准错误类型 标准库中定义了许多常见的错误类型&…...

使用 Ansys Fluent 对气体泄漏检测进行建模

了解使用 Ansys Fluent 仿真气体泄漏和确保安全的前沿技术。 挑战 气体泄漏对人类安全和环境构成重大风险。及早检测气体泄漏可以防止潜在的灾难,包括爆炸、火灾和有毒物质暴露。有效的气体泄漏检测系统对于石油和天然气、化学加工和住宅基础设施等行业至关重要。…...

Pytest-Bdd-Playwright 系列教程(16):标准化JSON报告Gherkin格式命令行报告

Pytest-Bdd-Playwright 系列教程(16):标准化JSON报告&Gherkin格式命令行报告 前言一、创建Feature文件二、创建步骤定义文件三、生成Cucumber格式的JSON报告四、使用Gherkin格式的命令行报告五、将BDD报告集成到Jenkins中总结 前言 在自动…...

lc46全排列——回溯

46. 全排列 - 力扣(LeetCode) 法1:暴力枚举 总共n!种全排列,一一列举出来放入list就行,关键是怎么去枚举呢?那就每次随机取一个,然后删去这个,再从剩下的数组中继续去随机选一个&a…...

软考:工作后再考的性价比分析

引言 在当今的就业市场中,软考(软件设计师、系统分析师等资格考试)是否值得在校学生花费时间和精力去准备?本文将从多个角度深入分析软考在不同阶段的性价比,帮助大家做出明智的选择。 一、软考的价值与局限性 1.1 …...

如何设置 Data Guard 的报警机制?

概述 设置 Data Guard 的报警机制是确保高可用性和及时响应故障的关键步骤。以下是一些常见的方法来配置 Data Guard 的报警机制,包括使用 Oracle Enterprise Manager (OEM)、Data Guard Broker 以及自定义脚本和外部监控工具。 1. 使用 Oracle Enterprise Manage…...

Elastic 8.17:Elasticsearch logsdb 索引模式、Elastic Rerank 等

作者:来自 Elastic Brian Bergholm 今天,我们很高兴地宣布 Elastic 8.17 正式发布! 紧随一个月前发布的 Elastic 8.16 之后,我们将 Elastic 8.17 的重点放在快速跟踪关键功能上,这些功能将带来存储节省和搜索性能优势…...

Please activate LaTeX Workshop sidebar item to render the thumbnail of a PDF

Latex代码中使用pdf图片,无法预览,提示: Please activate LaTeX Workshop sidebar item to render the thumbnail of a PDF 解决办法: 点击左边这个刷新下即可...

HiveQL命令(一)- 数据库操作

文章目录 前言一、数据库操作1. 创建数据库1.1 语法及解释1.2 创建数据库示例 2. 查看数据库2.1 查看所有数据库2.2 查看数据库信息2.2.1 语法及解释2.2.2 查看数据库信息示例 3. 切换数据库3.1 语法3.2 示例 4. 修改数据库4.1 语法4.2 示例 5. 删除数据库5.1 语法及解释5.2 示…...

【esp32s3】esp-dl模型部署demo

一个单片机部署手写数字识别的demo 源码: # 别跑,给我star git clone https://gitee.com/Shine_Zhang/esp32s3_dl_helloworld.git功能: 网页绘制28x28手写数字,串口输入设备,串口打印输出10个数字的概率值&#xff0…...

Zemax 中的 LED 阵列模型

LED 阵列的光学特性 LED 阵列由多个发光二极管 (LED) 组成,这些二极管以特定模式或配置排列,以实现均匀照明、更高强度或特定照明特性。这些阵列广泛用于显示器、照明系统、光通信和传感等应用。 LED 阵列的光学特性对于了解它如…...

123213124

📢博客主页:https://blog.csdn.net/2301_779549673 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 📢本文由 JohnKi 原创,首发于 CSDN🙉 📢未来很长&#…...

游戏引擎学习第42天

仓库: https://gitee.com/mrxiao_com/2d_game 简介 目前我们正在研究的内容是如何构建一个基本的游戏引擎。我们将深入了解游戏开发的每一个环节,从最基础的技术实现到高级的游戏编程。 角色移动代码 我们主要讨论的是角色的移动代码。我一直希望能够使用一些基…...

elasticsearch设置密码访问

1 用户认证介绍 默认ES是没有设置用户认证访问的,所以每次访问时,直接调相关API就能查询和写入数据。现在做一个认证,只有通过认证的用户才能访问和操作ES。 2 开启加密设置 1.生成证书文件 /usr/share/elasticsearch/bin/elasticsearch-…...

阿里云-通义灵码:测试与实例展示

目录 一.引子 二.例子 三.优点 四.其他优点 五.总结 一.引子 在软件开发的广袤天地中,阿里云通义灵码宛如一座蕴藏无尽智慧的宝库,等待着开发者们去深入挖掘和探索。当我们跨越了入门的门槛,真正开始使用通义灵码进行代码生成和开发工作…...

开发者指南--RecyclerView显示数据列表和网格

一、RecyclerView的优势 RecyclerView 的最大优势在于,它对大型列表来说非常高效: 默认情况下,RecyclerView 仅会处理或绘制当前显示在屏幕上的项。例如,如果您的列表包含一千个元素,但只有 10 个元素可见&#xff0…...

Ajax--实现检测用户名是否存在功能

目录 (一)什么是Ajax (二)同步交互与异步交互 (三)AJAX常见应用情景 (四)AJAX的优缺点 (五)使用jQuery实现AJAX 1.使用JQuery中的ajax方法实现步骤&#xf…...

操作系统(5)进程

一、定义与特点 定义:进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。 特点: 动态性:进程是动态创建的,有它自身的生命周期,…...

力扣9. 回文数

给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。 回文数 是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 例如,121 是回文,而…...

1_linux系统网络性能如何优化——几种开源网络协议栈比较

之前合集《计算机网络从入门到放弃》第一阶段算是已经完成了。都是理论,没有实操,让“程序猿”很难受,操作性不如 Modbus发送的报文何时等到应答和 tcp通信测试报告单1——connect和send。开始是想看linux内核网络协议栈的源码,然…...

C#—BitArray点阵列

C#—BitArray点阵列 在 C# 中,BitArray 类用来管理一个紧凑型的位值数组,数组中的值均为布尔类型,其中 true(1)表示此位为开启,false(0)表示此位为关闭。 当需要存储位&#xff08…...

特工找密码(蓝桥杯)

本来这题想用枚举暴力解的,但是运行总是超时,数值范围太大了~,所以该题不能用枚举进行暴力。 转换成二进制,我们判断一下其规律 注意:按位与是都为1时其值才为1,所以当x和y按位与的结果为2时,其…...

微信小程序--创建一个日历组件

微信小程序–创建一个日历组件 可以创建一个日历组件&#xff0c;来展示当前月份的日期&#xff0c;并支持切换月份的功能。 一、目录结构 /pages/calendarcalendar.wxmlcalendar.scsscalendar.jscalendar.json二、calendar.wxml <view class"calendar"><…...

A6919 基于java+SSM+mysql的区域物流管理系统设计与实现

的区域物流管理系统的设计与实现 1.摘要2.开发目的和意义3.系统功能设计4.系统界面截图5.源码获取 1.摘要 摘 要 随着当前我国市场经济和计算机互联网技术迅速发展&#xff0c;各行各业的销售和管理都在逐步转向着第三方物流服务&#xff0c;包括中通快递&#xff0c;申通&…...

Python大数据可视化:基于python的电影天堂数据可视化_django+hive

开发语言&#xff1a;Python框架&#xff1a;djangoPython版本&#xff1a;python3.7.7数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat11开发软件&#xff1a;PyCharm 系统展示 管理员登录 管理员功能界面 电影数据 看板展示 我的信息 摘要 电影天堂数据可视化是…...

美畅物联丨JS播放器录像功能:从技术到应用的全面解析

畅联云平台的JS播放器是一款功能十分强大的视频汇聚平台播放工具&#xff0c;它已经具备众多实用功能&#xff0c;像实时播放、历史录像回放、云台控制、倍速播放、录像记录、音频播放、画面放大、全屏展示、截图捕捉等等。这些功能构建起了一个高效、灵活且用户友好的播放环境…...

前端国际化实战:从需求到落地的完整实践

"我们要开拓东南亚市场了&#xff01;"产品经理小王兴奋地告诉我这个消息。作为技术负责人,我立刻意识到这意味着我们需要对整个系统进行国际化改造。说实话,虽然之前也做过一些多语言的项目,但面对一个正在运行的大型系统,国际化改造的挑战还是不小。 回想起上周的…...

MySQL 内置函数

字符串函数 concat(str1, str2, ...) 描述: 这个函数用于连接两个或多个字符串&#xff0c;返回一个新字符串。语法: concat(str1, str2, ...)注意点: 如果任意一个参数是null&#xff0c;则结果为null。可以连接任意数量的字符串。示例: select concat(first name: , first_…...

【Spring】日志类Logger的使用

在Spring框架中&#xff0c;日志记录是一个重要的组成部分&#xff0c;通常使用不同的日志框架来处理应用程序的日志。Spring 本身并直接提供一个名为Logger 的类&#xff0c;而是通过抽象的日志 API 让开发者能够选择和使用不同的日志实现&#xff08;如 Log4j、Logback、SLF4…...

动态高优先权优先进程调度

一、实验目的 目的&#xff1a;了解并掌握动态高优先权优先调度算法的理论&#xff0c;掌握动态优先权的设置方式。 任务&#xff1a;模拟实现动态高优先权优先的调度&#xff08;若数值越大优先权越高&#xff0c;每运行一个时间单位优先权-n&#xff0c;若数值越小优先权越高…...

【Linux SH脚本】LinuxCheck 应急检查信息脚本

LinuxCheck 1.下载地址 【Linux SH脚本】LinuxCheck 应急检查信息脚本 2.简介 LinuxCheck 是一个开源的自动化检查脚本&#xff0c;旨在快速检测 Linux 系统的安全配置和潜在问题。它支持多种发行版&#xff0c;能够扫描并生成详细的报告&#xff0c;涵盖用户管理、权限配置…...

Vue - route路由(router-link、useRoute、useRouter)

为了避免反复在 app.vue 中去修改引入的路径&#xff0c;当用了新的页面&#xff0c;想切换回老页面的时候&#xff0c;都需要去手动改变路径&#xff0c;那么有没有一种可能&#xff0c;可以在一个地方&#xff0c;把这些组件配置好&#xff0c;然后通过不同的路径&#xff0c…...

【HarmonyOS】鸿蒙应用实现手机摇一摇功能

【HarmonyOS】鸿蒙应用实现手机摇一摇功能 一、前言 手机摇一摇功能&#xff0c;是通过获取手机设备&#xff0c;加速度传感器接口&#xff0c;获取其中的数值&#xff0c;进行逻辑判断实现的功能。 在鸿蒙中手机设备传感器ohos.sensor (传感器)的系统API监听有以下&#xf…...

渗透测试工具 -- SQLmap安装教程及使用

随着网络安全问题日益严峻&#xff0c;渗透测试成为了保护信息安全的重要手段。而在渗透测试的众多工具中&#xff0c;SQLmap凭借其强大的自动化SQL注入检测和利用能力&#xff0c;成为了网络安全专家必备的利器。那么&#xff0c;你知道如何高效地使用SQLmap进行漏洞扫描吗&am…...

vue 前端使用fetch实现下载文件跨域

首先配置vite.config.js export default defineConfig({plugins: [vue(),],resolve: {alias: {: /src, // 根据你的项目结构进行设置},},server: {proxy: {/image-proxy: {target: https://你得代理服务器,changeOrigin: true,rewrite: path > path.replace(/^/image-proxy…...

AI与大数据的深度结合:驱动决策的革命性力量

引言&#xff1a;数字时代的决策挑战 在这个信息爆炸的数字时代&#xff0c;数据早已渗透到我们生活的方方面面。全球每天产生的数据量呈指数级增长&#xff0c;无论是用户的消费行为、设备的运行状态&#xff0c;还是社会热点的实时动态&#xff0c;这些信息的规模和复杂性前所…...

搭建C#开发环境

本文记录C#开发环境的搭建过程。 一、Windows系统 二、Ubuntu 运行以下命令安装.NET SDK&#xff0c; sudo add-apt-repository ppa:dotnet/backports sudo apt-get install -y dotnet-sdk-9.0网络资料 Install .NET on Windowshttps://learn.microsoft.com/en-us/dotnet/co…...

Gitlab分支合并及在本地解决冲突

文章目录 问题及解决参考 问题及解决 Gitlab分支合并时碰到了合并冲突的问题&#xff0c;进行了本地解决冲突的操作&#xff0c;并成功进行了合并。 在服务器端的冲突解决比较简单&#xff0c;在此不赘述&#xff0c;这里主要记录下在本地解决冲突的操作。 Gitlab冲突的根本…...

解决 “TypeError: ‘tuple‘ object cannot be interpreted as an integer“ 错误提示

错误背景 这个错误通常出现在期望一个整数时&#xff0c;却传入了一个元组&#xff08;tuple&#xff09;。Python 无法将元组解释为整数&#xff0c;因此会抛出 TypeError。 错误示例 python 复制代码 for i in (1, 2, 3): print(range(i)) 运行时会抛出如下错误&#xff1a;…...

OSPF协议

OSPF介绍 OSPF&#xff08;Open Shortest Path First&#xff0c;开放最短路径优先&#xff09;是一种用于互联网协议网络的链路状态路由协议。它属于内部网关协议&#xff08;IGP&#xff09;&#xff0c;主要用于单一自治系统&#xff08;AS&#xff09;内部的路由选择。在A…...

前端编辑器JSON HTML等,vue2-ace-editor,vue3-ace-editor

与框架无关 vue2-ace-editor有问题&#xff0c;ace拿不到&#xff08;brace&#xff09; 一些组件都是基于ace-builds或者brace包装的 不如直接用下面的&#xff0c;不如直接使用下面的 <template><div ref"editor" class"json-editor"><…...

threejs——无人机概念切割效果

主要技术采用着色器的切割渲染,和之前写的风车可视化的文章不同,这次的切割效果是在着色器的基础上实现的,并新增了很多可调节的变量,兄弟们,走曲儿~ 线上演示地址,点击体验 源码下载地址,点击下载 正文 从图中大概可以看出以下信息,一个由线组成的无人机模型,一个由…...

360极速浏览器不支持看PDF

360安全浏览器采用的是基于IE内核和Chrome内核的双核浏览器。360极速浏览器是源自Chromium开源项目的浏览器&#xff0c;不但完美融合了IE内核引擎&#xff0c;而且实现了双核引擎的无缝切换。因此在速度上&#xff0c;360极速浏览器的极速体验感更佳。 展示自己的时候要在有优…...

Python Turtle 实现动态时钟:十二时辰与星空流星效果

在这篇文章中&#xff0c;我将带你通过 Python 的 turtle 模块构建一个动态可视化时钟程序。这个时钟不仅具备传统的时间显示功能&#xff0c;还融合了中国古代的十二时辰与八卦符号&#xff0c;并通过动态星空、流星效果与昼夜背景切换&#xff0c;为程序增添了观赏性和文化内…...

使用 UniApp 实现简单的个人中心页面

1. 创建 UniApp 项目 首先&#xff0c;确保你已经安装了 HBuilderX 或其他支持 UniApp 的开发工具。然后创建一个新的 UniApp 项目。 # 使用 HBuilderX 创建新项目 # 选择 uni-app 模板 -> 选择 Vue.js 模板 -> 输入项目名称 -> 创建2. 安装依赖 UniApp 内置了一些…...

spring cloud contract http实例

微服务很多时&#xff0c;服务之前相互调用&#xff0c;接口参数的一致性要变得很难维护。 spring cloud contract 提供了测试接口一致性的方法。 一 项目配置 plugins {id "groovy"id "org.springframework.cloud.contract" version "4.0.5"i…...

修改docker源

在/etc/docker/daemon.json文件中写入 { "registry-mirrors": [ "Welcome to nginx!" ] } 执行 systemctl daemon-reload systemctl restart docker docker info能够看到源已经被替换 现在国内能够使用的docker源经过测试只有Welcome to nginx! …...