ELK日志分析系统+ELFK(Filebeat)

news2024/11/27 15:42:00

本章结构:

1、ELK日志分析系统简介

2、Elasticsearch介绍(简称ES)

3、Logstash介绍

4、Kibana介绍

5、实验,ELK部署

一、ELK日志分析系统简介

ELK平台是一套完整的日志集中处理解决方案,将 ElasticSearch、Logstash 和 Kiabana 三个开源工具配合使用。 可以提高安全性,集中存放日志,完成更强大的用户对日志的查询、排序、统计需求。

缺点:对日志的分析困难

日志处理步骤:

1、将日志进行集中化管理 

2、将日志格式化(Logstash)并输入到ES

3、对格式化后的数据进行索引和存储(ES对存储数据的类型进行分类) 

4、前端数据的展示(Kibana)

总结:logstash作为日志搜集器,从数据源采集数据,并对数据进行过滤,格式化处理,然后交由Elasticsearch存储,kibana对日志进行可视化处理。

二、Elasticsearch

提供一个分布式多用户能力的全文搜索引擎

1、Elasticsearch核心概念

接近时实(NRT)

  • 搜索速度非常的快,轻微的延迟。

集群(cluster)

  • 将一个或多个节点组织在一起,组成一个cluster集群。
  • 集群有一个唯一标志的名字,默认Elasticasearch,每个节点基于集群名字加入到集群中,且在集群中使用自己的名字来身份标识。

节点(node)

  • 每一个节点就是一台单台服务器。

索引(index)

  • 一个索引由一个名字来标识(必须全部是小写字母),并且当我们要多对应这个索引中的文档进行索引、更新、删除的时候,都要使用到这个名字。

类型(type)

  • 在一个索引中,你可以定义一个或多种类型。
  • 比如:当我们存储一个购物平台的数据时,可以定义一个用户数据类型,产品数据类型等。

文档(document)

  • 一个文档是一个可被索引的基础信息单元

2、分片和副本

什么是分片?

  • 索引存储的数据可能超过单个节点的硬件限制。
  • 为了解决这个问题,ES提供了将索引分成多个分片的功能,当在创建索引时,可以定义想要的分片数量,每一个分片就是一个全功能独立的索引。

为什么要分片?

  • 水平分割扩展,增大存储量
  • 分布式并跨越分片操作, 提高性能和吞吐量

什么是副本?

  • 为了健壮性,高可用性,可以故障切换。
  • es将分片复制一份或多份放在不同的节点主机上,称为分片副本。

为什么要副本?

  • 高可用性,以应对分片或者节点故障,出于这个原因,分片副本要在不同的节点上。
  • 性能加强,增强吞吐量,搜索可以并行在所有副本上执行

3、es和传统数据库的区别

①结构名称不同

  • 关系型数据库:数据库–>表–>行—>列

  • Elasticsearch:索引—>类型—>文档---->字段

②ES分布式,传统数据库遍历式索引

  • ES支持分片和复制,从而方便水平分割和扩展,复制保证可es的高可用与高吞吐。

  • 在es中,当你创建一个索引(数据库)的时候,你可以指定你想要的分片的数量,每个分片本身也是一个功能完善并且独立的索引(数据库),索引可以被防止到集群中的任何节点上。

分片的优点

1、允许你水平分割/扩展你的内容容量

2、允许你在分片之上进行分布式的,并行的操作,进而提高性能/吞吐量

3、分片的分布,它的文档怎么聚合回搜索请求,完全有Elasticsearch管理

③ES采用倒排索引,传统数据库采用B+树索引

  • 正排索引:id---->values
  • 倒排索引:values—>id

④ES没有用户验证和权限控制

⑤ES没有事务的概念,不支持回滚,误删不能恢复

⑥ES免费,完全开源,传统的数据库部分免费

二、Logstash概述

  • 一款强大的数据处理工具
  • 可实现数据传输、格式处理、格式化输出
  • 数据输入、数据加工(过滤、改写等)以及数据输出

由三个组件组成:Input、Output、Filter Plugin

  • Input:获取日志
  • Output:输出日志
  • Filter Plugin:过滤日志、格式处理

1、Log Stash主要组件

Shipper(日志收集):负责监控本地日志文件的变化,及时把日志文件的最新内容收集起来。通常远程代理端(agent)只需要运行这个组件即可
Indexer(日志存储):负责接收日志并写入到本地文件
Broker(日志Hub):负责连接多个Shipper和多个Indexer
Search and Storage:允许对事件进行搜索和存储
Web Interface:基于Web的展示界面
 

三、Kibana 概述

  • 一个针对Elastcsearch的开源分析及可视化平台
  • 搜索、查看存储在ES 索引中的数据
  • 通过各种图标进行高级数据分析及展示

1、Kibana主要功能

①Elasticsearch无缝之集成

  • kibana架构为ES 定制,可以将任意结构和非结构加入到ES索引。

②整合数据

  • 更好的对ES 数据进行分析处理 。能够处理海量数据,智能的分析数据。

③让更多团队成员收益

④接口灵活,分享容易

  • 使用Kibana可以更加方便地创建、保存、分享数据,并将可视化数据快速交流。

⑤配置简单

  • 自带web服务器,快速启动运行

⑥可视化多数据源

  • Kibana可以非常方便地把来自Logstash、ES-Hadoop、Beats或第三方技术的数据整合到Elasticsearch,支持的第三方技术包括Apache flume、 Fluentd 等。

⑦简单数据导出

  • Kibana可以方便地导出感兴趣的数据,与其它数据集合并融合后快速建模分析,发现新结果。

四、ELK的优点

1、处理方式灵活:Elasticsearch是全文索引,具有强大的搜索能力

2、配置相对简单,Kibana的配置非常简单,Eslasticsearch则全部使用Json接口,配置也不复杂,Logstash的配置使用模块的方式,配置也相对简单。

3、检索性高,ELK架构通常可以达到百亿数据的查询秒级响应

4、集群线性扩展,Elasticsearch本身没有单点的挂念,自动默认集群模式,Elasticsearch和Logstash都可以

5、灵活扩展

6、页面美观。
 

五、部署ELK日志分析系统

部署环境

主机名ip地址主要软件系统
node1192.168.88.10ElasticSearh、Kibanacentos7.5
node2192.168.88.20ElasticSearhcentos7.5
apache192.168.88.30Logstash、Apachecentos7.5

ELK Elasticsearch 集群部署(在Node1、Node2节点上操作)

1.环境准备

#更改主机名、配置域名解析、查看Java环境
Node1节点:hostnamectl set-hostname node1
Node2节点:hostnamectl set-hostname node2

vim /etc/hosts
192.168.88.10 node1 
192.168.88.20 node2   

注:版本问题
java -version                                        #如果没有安装,yum -y install java
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-b12)
OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)

建议使用jdk

2.部署 Elasticsearch 软件

(1)安装elasticsearch—rpm包

#上传elasticsearch-5.5.0.rpm到/opt目录下
cd /opt
rpm -ivh elasticsearch-5.5.0.rpm 

(2)加载系统服务

systemctl daemon-reload    
systemctl enable elasticsearch.service

(3)修改elasticsearch主配置文件

cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak
vim /etc/elasticsearch/elasticsearch.yml

--17--取消注释,指定集群名字
cluster.name: my-elk-cluster

--23--取消注释,指定节点名字:Node1节点为node1,Node2节点为node2
node.name: node1

--33--取消注释,指定数据存放路径
path.data: /data/elk_data

--37--取消注释,指定日志存放路径
path.logs: /var/log/elasticsearch/

--43--取消注释,改为在启动的时候不锁定内存
bootstrap.memory_lock: false

--55--取消注释,设置监听地址,0.0.0.0代表所有地址
network.host: 0.0.0.0

--59--取消注释,ES 服务的默认监听端口为9200
http.port: 9200

--68--取消注释,集群发现通过单播实现,指定要发现的节点 node1、node2
discovery.zen.ping.unicast.hosts: ["node1", "node2"

grep -v "^#" /etc/elasticsearch/elasticsearch.yml

检查修改是否正确

(4)创建数据存放路径并授权

mkdir -p /data/elk_data
chown elasticsearch:elasticsearch /data/elk_data/

(5)启动elasticsearch是否成功开启

systemctl start elasticsearch.service
netstat -antp | grep 9200

(6)查看节点信息

浏览器访问  http://192.168.88.10:9200  、 http://192.168.88.20:9200 查看节点 Node1、Node2 的信息。

浏览器访问 http://192.168.88.10:9200/_cluster/health?pretty  、 http://192.168.88.20:9200/_cluster/health?pretty查看群集的健康情况,可以看到 status 值为 green(绿色), 表示节点健康运行。

浏览器访问 http://192.168.88.10:9200/_cluster/state?pretty  检查群集状态信息。

#使用上述方式查看群集的状态对用户并不友好,可以通过安装 Elasticsearch-head 插件,可以更方便地管理群集。

3.安装 Elasticsearch-head 插件

Elasticsearch 在 5.0 版本后,Elasticsearch-head 插件需要作为独立服务进行安装,需要使用npm工具(NodeJS的包管理工具)安装。
安装 Elasticsearch-head 需要提前安装好依赖软件 node 和 phantomjs。
node:是一个基于 Chrome V8 引擎的 JavaScript 运行环境。
phantomjs:是一个基于 webkit 的JavaScriptAPI,可以理解为一个隐形的浏览器,任何基于 webkit 浏览器做的事情,它都可以做到。
 

(1)编译安装 node

#上传软件包 node-v8.2.1.tar.gz 到/opt
yum install gcc gcc-c++ make -y

(2)安装 phantomjs(前端的框架)

#上传软件包 phantomjs-2.1.1-linux-x86_64.tar.bz2 到/opt/

(3)安装 Elasticsearch-head 数据可视化工具

#上传软件包 elasticsearch-head.tar.gz 到/opt

(4)修改 Elasticsearch 主配置文件

vim /etc/elasticsearch/elasticsearch.yml

--末尾添加以下内容--
http.cors.enabled: true                #开启跨域访问支持,默认为 false
http.cors.allow-origin: "*"            #指定跨域访问允许的域名地址为所有

(5)启动 elasticsearch-head 服务

#必须在解压后的 elasticsearch-head 目录下启动服务,进程会读取该目录下的 gruntfile.js 文件,否则可能启动失败。
cd /usr/local/src/elasticsearch-head/
npm run start &

> elasticsearch-head@0.0.0 start /usr/local/src/elasticsearch-head
> grunt server

Running "connect:server" (connect) task
Waiting forever...
Started connect web server on http://localhost:9100

#elasticsearch-head 监听的端口是 9100
netstat -natp |grep 9100

#elasticsearch-head 监听的端口是 9100

6)通过 Elasticsearch-head 查看 Elasticsearch 信息

通过浏览器访问 http://192.168.88.10:9100/ 地址并连接群集。如果看到群集健康值为 green 绿色,代表群集很健康。

(7)插入索引

#通过命令插入一个测试索引,索引为 index-demo,类型为 test。

curl -X PUT 'localhost:9200/index-demo1/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello world"}'

可以在网页中查看到数据

浏览器访问 http://192.168.88.10:9100/ 查看索引信息,可以看见索引默认被分片5个,并且有一个副本。
点击“数据浏览”,会发现在node1上创建的索引为 index-demo1,类型为 test 的相关信息。

ELK Logstash 部署(在 Apache 节点上操作)

 ELK Logstash 部署(在 Apache 节点上操作)        Logstash 一般部署在需要监控其日志的服务器。在本案例中,Logstash 部署在 Apache 服务器上,用于收集 Apache 服务器的日志信息并发送到 Elasticsearch。

1.更改主机名

hostnamectl set-hostname apache

2.安装Apahce服务(httpd)

yum -y install httpd
systemctl start httpd

3.安装Java环境

yum -y install java
java -version

4.安装logstash

#上传软件包 logstash-5.5.1.rpm 到/opt目录下
cd /opt
rpm -ivh logstash-5.5.1.rpm                           
systemctl start logstash.service                      
systemctl enable logstash.service

ln -s /usr/share/logstash/bin/logstash /usr/local/bin/

5.测试 Logstash

Logstash 命令常用选项:
-f:通过这个选项可以指定 Logstash 的配置文件,根据配置文件配置 Logstash 的输入和输出流。
-e:从命令行中获取,输入、输出后面跟着字符串,该字符串可以被当作 Logstash 的配置(如果是空,则默认使用 stdin 作为输入,stdout 作为输出)。
-t:测试配置文件是否正确,然后退出。

定义输入和输出流:
#输入采用标准输入,输出采用标准输出(类似管道)
logstash -e 'input { stdin{} } output { stdout{} }'

www.baidu.com                                        #键入内容(标准输入)
2020-12-22T03:58:47.799Z node1 www.baidu.com        #输出结果(标准输出)
www.sina.com.cn                                        #键入内容(标准输入)
2017-12-22T03:59:02.908Z node1 www.sina.com.cn        #输出结果(标准输出)

//执行 ctrl+c 退出

#使用 rubydebug 输出详细格式显示,codec 为一种编解码器

logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug } }'

www.baidu.com                                        #键入内容(标准输入)
{
    "@timestamp" => 2020-12-22T02:15:39.136Z,        #输出结果(处理后的结果)
      "@version" => "1",
          "host" => "apache",
       "message" => "www.baidu.com"
}

#使用 Logstash 将信息写入 Elasticsearch 中

logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["192.168.88.10:9200"] } }'

             输入                输出            对接
......
www.baidu.com                                        #键入内容(标准输入)
www.sina.com.cn                                        #键入内容(标准输入)
www.google.com                                        #键入内容(标准输入)
                                          

//结果不在标准输出显示,而是发送至 Elasticsearch 中,可浏览器访问 http://192.168.88.10:9100/ 查看索引信息和数据浏览。
 

6.定义 logstash配置文件

Logstash 配置文件基本由三部分组成:input、output 以及 filter(可选,根据需要选择使用)。
input:表示从数据源采集数据,常见的数据源如Kafka、日志文件等
filter:表示数据处理层,包括对数据进行格式化处理、数据类型转换、数据过滤等,支持正则表达式
output:表示将Logstash收集的数据经由过滤器处理之后输出到Elasticsearch。

#格式如下:
input {...}
filter {...}
output {...}

#在每个部分中,也可以指定多个访问方式。例如,若要指定两个日志来源文件,则格式如下:

input {
    file { path =>"/var/log/messages" type =>"syslog"}
    file { path =>"/var/log/httpd/access.log" type =>"apache"}
}

#修改 Logstash 配置文件,让其收集系统日志/var/log/messages,并将其输出到 elasticsearch 中。

chmod +r /var/log/messages                    #让 Logstash 可以读取日志

vim /etc/logstash/conf.d/system.conf
input {
    file{
        path =>"/var/log/messages"                        #指定要收集的日志的位置
        type =>"system"                                    #自定义日志类型标识
        start_position =>"beginning"                    #表示从开始处收集
    }
}
output {
    elasticsearch {                                        #输出到 elasticsearch
        hosts => ["192.168.88.10:9200"]                    #指定 elasticsearch 服务器的地址和端口
        index =>"system-%{+YYYY.MM.dd}"                    #指定输出到 elasticsearch 的索引格式
    }
}


systemctl restart logstash 

浏览器访问 http://192.168.88.10:9100/ 查看索引信息

ELK Kiabana 部署(在 Node1 节点上操作)

1.安装 Kiabana

#上传软件包 kibana-5.5.1-x86_64.rpm 到/opt目录
cd /opt
rpm -ivh kibana-5.5.1-x86_64.rpm

2.设置 Kibana 的主配置文件

vim /etc/kibana/kibana.yml
--2--取消注释,Kiabana 服务的默认监听端口为5601
server.port: 5601
--7--取消注释,设置 Kiabana 的监听地址,0.0.0.0代表所有地址
server.host: "0.0.0.0"
--21--取消注释,设置和 Elasticsearch 建立连接的地址和端口
elasticsearch.url: "http://192.168.88.10:9200" 
--30--取消注释,设置在 elasticsearch 中添加.kibana索引
kibana.index: ".kibana"

3.启动 Kibana 服务

systemctl start kibana.service
systemctl enable kibana.service

netstat -natp | grep 5601

4.验证 Kibana

浏览器访问 http://192.168.88.10:5601
第一次登录需要添加一个 Elasticsearch 索引:
Index name or pattern
//输入:system-*            #在索引名中输入之前配置的 Output 前缀“system”

单击 “create” 按钮创建,单击 “Discover” 按钮可查看图表信息及日志信息。
数据展示可以分类显示,在“Available Fields”中的“host”,然后单击 “add”按钮,可以看到按照“host”筛选后的结果

5.将 Apache 服务器的日志(访问的、错误的)添加到 Elasticsearch 并通过 Kibana 显示

vim /etc/logstash/conf.d/apache_log.conf
input {
    file{
        path => "/etc/httpd/logs/access_log"
        type => "access"
        start_position => "beginning"
    }
    file{
        path => "/etc/httpd/logs/error_log"
        type => "error"
        start_position => "beginning"
    }
}
output {
    if [type] == "access" {
        elasticsearch {
            hosts => ["192.168.88.10:9200"]
            index => "apache_access-%{+YYYY.MM.dd}"
        }
    }
    if [type] == "error" {
        elasticsearch {
            hosts => ["192.168.88.10:9200"]
            index => "apache_error-%{+YYYY.MM.dd}"
        }
    }
}

浏览器访问 http://192.168.88.10:9100 查看索引是否创建

浏览器访问 http://192.168.88.10:5601 登录 Kibana,单击“Create Index Pattern”按钮添加索引, 在索引名中输入之前配置的 Output 前缀 apache_access-*,并单击“Create”按钮。在用相同的方法添加 apache_error-*索引。
选择“Discover”选项卡,在中间下拉列表中选择刚添加的 apache_access-* 、apache_error-* 索引, 可以查看相应的图表及日志信息。

Filebeat+ELK 部署

---------------------- Filebeat+ELK 部署 ----------------------
Node1节点(2C/4G):node1/192.168.88.10                    Elasticsearch  Kibana
Node2节点(2C/4G):node2/192.168.88.20                    Elasticsearch
Apache节点:apache/192.168.88.30                        Logstash  Apache
Filebeat节点:filebeat/192.168.88.40                    Filebeat

在 Node1 节点上操作

1.安装 Filebeat,在 Node1 节点上操作

#上传软件包 filebeat-6.2.4-linux-x86_64.tar.gz 到/opt目录
tar zxvf filebeat-6.2.4-linux-x86_64.tar.gz
mv filebeat-6.2.4-linux-x86_64/ /usr/local/filebeat

2.设置 filebeat 的主配置文件

vim filebeat.yml

filebeat.prospectors:
- type: log         #指定 log 类型,从日志文件中读取消息
  enabled: true
  paths:
    - /var/log/messages       #指定监控的日志文件
    - /var/log/*.log
  fields:           #可以使用 fields 配置选项设置一些参数字段添加到 output 中
    service_name: filebeat
    log_type: log
    service_id: 192.168.88.40

--------------Elasticsearch output-------------------
(全部注释掉)

----------------Logstash output---------------------
output.logstash:
  hosts: ["192.168.88.30:5044"]      #指定 logstash 的 IP 和端口

#启动 filebeat
./filebeat -e -c filebeat.yml

3.在 Logstash 组件所在节点上新建一个 Logstash 配置文件

cd /etc/logstash/conf.d

vim logstash.conf

input {
    beats {
        port => "5044"
    }
}
output {
    elasticsearch {
        hosts => ["192.168.88.10:9200"]
        index => "%{[fields][service_name]}-%{+YYYY.MM.dd}"
    }
    stdout {
        codec => rubydebug
    }
}

#启动 logstash
logstash -f logstash.conf

5.浏览器访问 http://192.168.88.10:5601 登录 Kibana

单击“Create Index Pattern”按钮添加索引“filebeat-*”,单击 “create” 按钮创建,单击 “Discover” 按钮可查看图表信息及日志信息。

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

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

相关文章

Ubuntu修改静态IP、网关和DNS的方法总结

Ubuntu修改静态IP、网关和DNS的方法总结 ubuntu系统(其他debian的衍生版本好像也可以)修改静态IP有以下几种方法。(搜索总结,可能也不太对) /etc/netplan (use) Ubuntu 18.04开始可以使用netplan配置网络&#xff0…

2.4GHz、DA14530-00000FX2射频收发器/LSM6DSOTR 6 轴运动传感器/SKY66423-11射频前端 860MHz 至 930MHz

一、2.4GHz、DA14530-00000FX2射频收发器 IC DA14530是一款超低功耗蓝牙5.1 SoC。它集成了2.4 GHz CMOS收发器和ARMCortex-M0微控制器,具有48 kB RAM和32 kB一次性可编程(OTP)存储器。无线电收发器、基带处理器和合格的Bluetooth低功耗堆栈完…

Android13适配-Google官方照片视频选择器

官方照片选择器 图 1. 照片选择器提供了一个直观的界面,便于与您的应用分享照片。 照片选择器的界面可供浏览和搜索,并按日期降序向用户显示其媒体库中的文件。如隐私保护最佳实践 Codelab 中所示,照片选择器为用户提供了一种安全的内置授权…

代码随想录算法训练营day56|583. 两个字符串的删除操作|72. 编辑距离

583. 两个字符串的删除操作 力扣题目链接 给定两个单词 word1 和 word2,找到使得 word1 和 word2 相同所需的最小步数,每步可以删除任意一个字符串中的一个字符。 示例: 输入: “sea”, “eat” 输出: 2 解释: 第一步将"sea"变…

Android StateFlow初探

Android StateFlow初探 前言: 最近在学习StateFlow,感觉很好用,也很神奇,于是记录了一下. 1.简介: StateFlow 是一个状态容器式可观察数据流,可以向其收集器发出当前状态更新和新状态更新。还可通过其 …

【计算机毕业设计】基于SpringBoot+Vue的小区物业管理系统的设计与实现

博主主页:一季春秋博主简介:专注Java技术领域和毕业设计项目实战、Java、微信小程序、安卓等技术开发,远程调试部署、代码讲解、文档指导、ppt制作等技术指导。主要内容:毕业设计(Java项目、小程序等)、简历模板、学习资料、面试题…

【C++面向对象侯捷】6.复习Complex类的实现过程

2.考虑数据 3.考虑函数 3.1 考虑构造函数(赋初值,初始化操作) 3.2 考虑成员函数 3.3 后面添加的,friend 友元函数 4. 考虑 成员函数 实现 5. 考虑 全局函数(非成员函数) 【这里考虑为什么不设计为成员…

第七章 查找 四、分块查找

一、给每个区间分块,再建立索引表,表内数为块内最大值 二、使用顺序查找数 先在索引表内找对应区域,在通过此索引映射到对应区间,进行顺序查找。 三、查找效率分析(ASL) 查找7时,先顺序查找索…

Java Semaphore使用例子和流程

目录 Semaphore例子代码和输出semaphore.acquire();semaphore.release(); Semaphore semaphore : 英[ˈseməfɔː(r)] 美[ˈseməfɔːr] n. 旗语; 信号标; v. 打旗语; (用其他类似的信号系统)发信号; [例句]Semaphore was widely used at sea, before the advent of electr…

坚鹏:中国邮储银行金融科技前沿技术发展与应用场景第3期培训

中国邮政储蓄银行金融科技前沿技术发展与应用场景第3期培训圆满结束 中国邮政储蓄银行拥有优良的资产质量和显著的成长潜力,是中国领先的大型零售银行。2016年9月在香港联交所挂牌上市,2019年12月在上交所挂牌上市。中国邮政储蓄银行拥有近4万个营业网点…

计算机中找不到d3dcompiler47.dll怎么解决,实用解决方法推荐

d3dcompiler_47.dll是一个动态链接库文件,它是DirectX的一个组件。DirectX是一套用于处理多媒体数据的API,包括游戏和视频播放等。d3dcompiler_47.dll主要负责编译和链接顶点着色器、几何着色器和像素着色器等,以生成可执行文件。当DirectX无…

【Redis】深入探索 Redis 主从结构的创建、配置及其底层原理

文章目录 前言一、对 Redis 主从结构的认识1.1 什么是主从结构1.2 主从结构解决的问题 二、主从结构创建2.1 配置并建立从节点2.2.1 从节点配置文件2.2.2 启动并连接 Redis 主从节点2.2.3 SLAVEOF 命令2.2.4 断开主从关系 2.2 查看主从节点的信息2.2.1 INFO REPLICATION 命令2.…

2023年度教育部人文社会科学研究一般项目评审结果,已公布!

【SciencePub学术】 9月15日,教育部社科司公示了2023年度教育部人文社会科学研究一般项目评审结果,共3482项。 其中,规划基金、青年基金、自筹经费项目共3029项通过专家评审;西部和边疆地区项目200项,新疆项目20项&a…

typescript高级类型-类型兼容性

4.2类型兼容性 两种类型系统:1StructuralType System (结构化类型系统)2 NominalType System (标明类型系统)。 TS 采用的是结构化类型系统,也叫做 ducktyping (鸭子类型…?什么???你不明白什么叫鸭子类型? 伟大的鲁迅先生说过如果一个东西,看起来是鸭子,叫起来…

如何下载安装 SAP HANA Studio

什么是SAP HANA Studio SAP HANA Studio 是一个基于 Eclipse 的集成开发环境(IDE),用于以 GUI 工具的形式开发和管理 SAP HANA 数据库。 SAP HANA Studio 在客户端/开发人员计算机上运行,​​并连接到 SAP HANA 服务器。 SAP HA…

上位机通过Modbus转Profinet网关与CGV300变频器通讯案例

上位机通过Modbus转Profinet网关(XD-MDPN100)与CGV300变频器通讯的案例可以实现两个不同的通信协议之间的互联互通。在这个案例中,上位机通过Modbus协议与Profinet网关进行通信,然后通过Profinet协议与CGV300变频器进行通信。 通过…

C++中的转换构造函数

在 C/C++ 中,不同的数据类型之间可以相互转换。无需用户指明如何转换的称为自动类型转换(隐式类型转换),需要用户显式地指明如何转换的称为强制类型转换。 自动类型转换示例: int a = 6;a = 7.5 + a; 编译器对 7.5 是作为 double 类型处理的,在求解表达式时,先将 a 转换…

Python Opencv实践 - 视频目标追踪MeanShift

参考资料: opencv/python标定时用到的几个函数意义_criteria opencv_是三水不是泗水的博客-CSDN博客 pythonOpenCV笔记(二十六):视频追踪(meanshift、Camshift)_cv2.meanshift_ReadyGo!!!的博客-CSDN博客…

9月19日作业

完成文本编辑器的保存工作-代码: void Widget::on_pushButton_4_clicked() {//创建保存文件对话框QString filename QFileDialog::getSaveFileName(this,"保存文件","./","All(*.*);;Text files (*.txt)");//创建一个文件对象&…

java框架-Spring-IOC

文章目录 一、组件注册包扫描组件注解0)、 ComponentScans1)、 RestController2)、 Srevice3)、 Rerpository4)、Component 导入第三方包里的组件1)、Configuration1)、Bean1)、Cond…