day05-Filebeat扩展

Filebeat对接ES加密集群
#查看集群状态
[09:22:25 root@elk1:~]#curl 10.0.0.91:9200/_cat/nodes -u elastic:123456

在这里插入图片描述

1.编写配置文件
[09:52:06 root@elk3:/etc/filebeat]#vim 12-log-to-es_tls.yamlfilebeat.inputs:
- type: logpaths:- /var/log/nginx/access.log*json.keys_under_root: true# 不采集以".gz"结尾的文件exclude_files: ['\.gz$']output.elasticsearch:hosts: ["http://10.0.0.91:9200","http://10.0.0.92:9200","http://10.0.0.93:9200"] index: "linux-nginx-tls-%{+yyyy.MM.dd}" # 指定连接ES集群的用户名username: elastic# 指定连接ES集群的密码password: "123456"setup.ilm.enabled: false
setup.template.name: "linux-nginx"
setup.template.pattern: "linux-nginx*"
setup.template.overwrite: false
setup.template.settings:index.number_of_shards: 3index.number_of_replicas: 02.启动filebeat实例   
[09:50:36 root@elk3:/etc/filebeat]#rm -rf /var/lib/filebeat/
[09:51:10 root@elk3:/etc/filebeat]#filebeat -e -c 12-log-to-es_tls.yaml3.查看Kibana的WebUI

在这里插入图片描述

?Logstash对接ES加密集群
1.启动Logstash实例
[18:23:24 root@elk2:/etc/logstash/conf.d]#vim 15-beats-filter-es.confinput { beats {port => 8888}}  filter {mutate {remove_field => [ "@version","log","tags","agent","ecs","input" ]}
}output { stdout { codec => rubydebug } elasticsearch {hosts => ["10.0.0.91:9200","10.0.0.92:9200","10.0.0.93:9200"]index => "linux-elfk-tls-%{+yyyy.MM.dd}"# 指定用户名user => "elastic"# 指定密码password => "123456"}}[18:25:15 root@elk2:/etc/logstash/conf.d]#logstash -rf 15-beats-filter-es.conf2.启动filebeat实例
[18:25:51 root@elk3:/etc/filebeat]#vim 13-log-to-logstash.yamlfilebeat.inputs:
- type: logpaths:- /var/log/nginx/access.log*json.keys_under_root: trueexclude_files: ['\.gz$']output.logstash:hosts: ["10.0.0.92:8888"][18:26:36 root@elk3:/etc/filebeat]#rm -rf /var/lib/filebeat/
[18:26:48 root@elk3:/etc/filebeat]#filebeat -e -c 13-log-to-logstash.yaml3.kibana查看数据验证
基于kibana实现RBAC实战

创建大索引

在这里插入图片描述

在这里插入图片描述

创建用户dev

在这里插入图片描述

在这里插入图片描述

创建用户ops

在这里插入图片描述

在这里插入图片描述

创建用户1

在这里插入图片描述

创建用户2

在这里插入图片描述

Filestream输入类型采集tomcat的JSON格式日志
1.修改tomcat的配置文件
[11:49:47 root@elk2:~]#vim /hehe/softwares/apache-tomcat-10.1.31/conf/server.xml  
...<!-- 删除原有的hosts文件 --><Host name="tomcat.beijing.com"  appBase="webapps"unpackWARs="true" autoDeploy="true"><Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"prefix="tomcat.beijing.com_access_log" suffix=".json"
pattern="{&quot;clientip&quot;:&quot;%h&quot;,&quot;ClientUser&quot;:&quot;%l&quot;,&quot;authenticated&quot;:&quot;%u&quot;,&quot;AccessTime&quot;:&quot;%t&quot;,&quot;request&quot;:&quot;%r&quot;,&quot;status&quot;:&quot;%s&quot;,&quot;SendBytes&quot;:&quot;%b&quot;,&quot;Query?string&quot;:&quot;%q&quot;,&quot;partner&quot;:&quot;%{Referer}i&quot;,&quot;http_user_agent&quot;:&quot;%{User-Agent}i&quot;}"/></Host>2.重启tomcat服务 
[12:04:39 root@elk2:/etc/filebeat]#/hehe/softwares/apache-tomcat-10.1.31/bin/shutdown.sh [12:04:39 root@elk2:/etc/filebeat]#/hehe/softwares/apache-tomcat-10.1.31/bin/startup.sh 3.访问测试
[09:32:02 root@elk1:~]#curl -H 'host: tomcat.beijing.com' 10.0.0.92:80804.查看日志格式
[14:24:40 root@elk2:/etc/filebeat]#tail -f /hehe/softwares/apache-tomcat-10.1.31/logs/tomcat.beijing.com_access_log.2024-10-31.json 
{"clientip":"10.0.0.91","ClientUser":"-","authenticated":"-","AccessTime":"[31/Oct/2024:14:23:47 +0800]","request":"GET / HTTP/1.1","status":"200","SendBytes":"11239","Query?string":"","partner":"-","http_user_agent":"curl/7.81.0"}5.启动filebeat实例 
[root@elk92 filebeat]# cat 14-filestream-to-es.yaml 
filebeat.inputs:
- type: filestreampaths:- /hehe/softwares/apache-tomcat-10.1.31/logs/tomcat.beijing.com_access_log*.json# 配置解析器parsers:# 对JSON格式进行解析- ndjson:# 将解析的记录放在指定字段,若指定字段为空(""),则表示将解析的字段放在顶级字段中target: ""#target: "linux"# 对指定字段进行解析message_key: messageoutput.elasticsearch:hosts: ["http://10.0.0.91:9200","http://10.0.0.92:9200","http://10.0.0.93:9200"] index: "linux-tomcat-filestream-%{+yyyy.MM.dd}"             username: elasticpassword: "123456"setup.ilm.enabled: false
setup.template.name: "linux-tomcat"
setup.template.pattern: "linux-tomcat*"
setup.template.overwrite: true
setup.template.settings:index.number_of_shards: 5index.number_of_replicas: 0[12:09:04 root@elk2:/etc/filebeat]#rm -rf /var/lib/filebeat/
[12:09:08 root@elk2:/etc/filebeat]#filebeat -e -c  14-filestream-to-es.yaml6.kibana查看数据 

在这里插入图片描述

在这里插入图片描述

Filebeat多行处理
1.创建错误 
[15:08:42 root@elk2:~]#/hehe/softwares/apache-tomcat-10.1.31/bin/shutdown.sh [15:09:41 root@elk2:~]#vim /hehe/softwares/apache-tomcat-10.1.31/conf/server.xml
...
修改配置文件出错即可,启动服务时发现出错了
[15:10:27 root@elk2:~]#/hehe/softwares/apache-tomcat-10.1.31/bin/startup.sh发现报错如下:
[15:10:27 root@elk2:~]# tail -100f /hehe/softwares/apache-tomcat-10.1.31/logs/catalina.out ........................下面的是报错
31-Oct-2024 15:10:39.323 SEVERE [main] org.apache.tomcat.util.digester.Digester.fatalError Parse fatal error at line [151] column [17]org.xml.sax.SAXParseException; systemId: file:/hehe/softwares/apache-tomcat-10.1.31/conf/server.xml; lineNumber: 151; columnNumber: 17; The end-tag for element type "Host" must end with a '>' delimiter.at java.xml/com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:204)at java.xml/com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:178)at java.xml/com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:400)at java.xml/com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:327)at java.xml/com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1465)at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1710)at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2908)at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:635)at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:551)at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:890)at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:826)at java.xml/com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:134)at java.xml/com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1225)at java.xml/com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:643)at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1522)at org.apache.catalina.startup.Catalina.parseServerXml(Catalina.java:603)at org.apache.catalina.startup.Catalina.load(Catalina.java:693)at org.apache.catalina.startup.Catalina.load(Catalina.java:731)at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)at java.base/java.lang.reflect.Method.invoke(Method.java:580)at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:302)at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:472)
31-Oct-2024 15:10:39.326 WARNING [main] org.apache.catalina.startup.Catalina.parseServerXml Unable to load server configuration from [/hehe/softwares/apache-tomcat-10.1.31/conf/server.xml]org.xml.sax.SAXParseException; systemId: file:/hehe/softwares/apache-tomcat-10.1.31/conf/server.xml; lineNumber: 151; columnNumber: 17; The end-tag for element type "Host" must end with a '>' delimiter.at java.xml/com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1252)at java.xml/com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:643)at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1522)at org.apache.catalina.startup.Catalina.parseServerXml(Catalina.java:603)at org.apache.catalina.startup.Catalina.load(Catalina.java:693)at org.apache.catalina.startup.Catalina.load(Catalina.java:731)at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)at java.base/java.lang.reflect.Method.invoke(Method.java:580)at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:302)at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:472)2.filebeat采集错误日志
[15:12:40 root@elk2:/etc/filebeat]#vim 15-filestream-to-es.yamlfilebeat.inputs:
- type: filestreampaths:- /hehe/softwares/apache-tomcat-10.1.31/logs/catalina.out # 配置解析器parsers:# 配置多行匹配- multiline:# 指定多行匹配的类型,有效值: pattern 和 count#   pattern:#    	表示基于正则匹配将多行合并为一个事件(event)。#   count:#		表示基于固定行数合并为一个事件(event)。type: pattern# 当type为pattern时,则需要定义对应的正则表达式pattern: '^\d{2}'# 下面2个选项参考官网示例: #		https://www.elastic.co/guide/en/beats/filebeat/7.17/multiline-examples.html#multilinenegate: truematch: afteroutput.elasticsearch:hosts: ["http://10.0.0.91:9200","http://10.0.0.92:9200","http://10.0.0.93:9200"] index: "linux-tomcat-multiline-%{+yyyy.MM.dd}" username: elasticpassword: "123456"setup.ilm.enabled: false
setup.template.name: "linux-tomcat"
setup.template.pattern: "linux-tomcat*"
setup.template.overwrite: true
setup.template.settings:index.number_of_shards: 5index.number_of_replicas: 0[15:13:41 root@elk2:/etc/filebeat]#rm -rf /var/lib/filebeat/
[15:13:41 root@elk2:/etc/filebeat]# filebeat -e -c 15-filestream-to-es.yaml 

在这里插入图片描述

多行匹配按行数匹配案例

1.源数据准备
[16:56:36 root@elk2:~]#vim /tmp/student.info{"name": "北京","hobby": ["东城区","西城区"]
}
{"name": "河北","hobby": ["石家庄","保定"]
}
{"name": "山东","hobby": ["青岛","淄博"]
}2.编写filebeat配置文件 
[16:57:20 root@elk2:/etc/filebeat]#vim 16-filestream-to-es.yaml 
filebeat.inputs:
- type: filestreampaths:- /tmp/student.info# 配置解析器parsers:- multiline:type: countcount_lines: 4- ndjson:target: ""message_key: messageoutput.elasticsearch:hosts: ["http://10.0.0.91:9200","http://10.0.0.92:9200","http://10.0.0.93:9200"] index: "linux-tomcat-student-%{+yyyy.MM.dd}" username: elasticpassword: "123456"setup.ilm.enabled: false
setup.template.name: "linux-tomcat"
setup.template.pattern: "linux-tomcat*"
setup.template.overwrite: true
setup.template.settings:index.number_of_shards: 5index.number_of_replicas: 0[16:58:35 root@elk2:/etc/filebeat]#rm -rf 15-beats-filter-es.conf
[16:58:39 root@elk2:/etc/filebeat]#filebeat -e -c 16-filestream-to-es.yaml3.kibana查看数据 

在这里插入图片描述

ElasticSearch的JVM调优
1.ES集群的堆内存配置
推荐设置为物理内存的一半,但是不能超过32GB。2.查看默认的JVM
[17:35:21 root@elk1:~]#free -htotal        used        free      shared  buff/cache   available
Mem:           3.8Gi       2.9Gi       100Mi       1.0Mi       818Mi       669Mi
Swap:          3.8Gi       0.0Ki       3.8Gi[17:35:49 root@elk1:~]#ps -ef | egrep "Xmx|Xms"
....................-Xms1938m -Xmx1938m.................3.修改所有节点的ES配置
vim /etc/elasticsearch/jvm.options
...
-Xms256m  
-Xmx256m4.重启ES服务(所有节点)
systemctl restart elasticsearch.service 5.验证是否修改成功(所有节点)
[17:39:27 root@elk1:~]#ps -ef | egrep "Xmx|Xms"
................... -Xms256m -Xmx256m..................[17:39:12 root@elk1:~]#free -htotal        used        free      shared  buff/cache   available
Mem:           3.8Gi       1.0Gi       1.9Gi       1.0Mi       882Mi       2.6Gi
Swap:          3.8Gi       0.0Ki       3.8Gi6.所有节点重复上述步骤验证:
[root@elk92 filebeat]# curl -u elastic:123456 10.0.0.91:9200/_cat/nodes
10.0.0.92 68 43 15 0.79 0.38 0.14 cdfhilmrstw * elk92
10.0.0.91 73 59 83 1.19 0.35 0.12 cdfhilmrstw - elk91
10.0.0.93 58 51 28 0.57 0.23 0.08 cdfhilmrstw - elk93
Zookeeper集群搭建

单点搭建

1.下载zookeeper
[19:14:52 root@elk1:~]#wget https://dlcdn.apache.org/zookeeper/zookeeper-3.8.4/apache-zookeeper-3.8.4-bin.tar.gz[19:14:52 root@elk1:~]# wget http://192.168.13.253/Resources/ElasticStack/softwares/apache-zookeeper-3.8.4-bin.tar.gz2.解压软件包
[19:14:52 root@elk1:~]#mkdir -pv /hehe/softwares[19:14:52 root@elk1:~]# tar xf apache-zookeeper-3.8.4-bin.tar.gz -C /hehe/softwares3.准备配置文件
[19:15:23 root@elk1:~]#cp /hehe/softwares/apache-zookeeper-3.8.4-bin/conf/zoo{_sample,}.cfg [19:15:50 root@elk1:~]#ll /hehe/softwares/apache-zookeeper-3.8.4-bin/conf/zoo{_sample,}.cfg
-rw-r--r-- 1 root root 1183 Oct 31 19:15 /hehe/softwares/apache-zookeeper-3.8.4-bin/conf/zoo.cfg
-rw-r--r-- 1 elk  elk  1183 Feb 13  2024 /hehe/softwares/apache-zookeeper-3.8.4-bin/conf/zoo_sample.cfg4.添加环境变量
[19:15:51 root@elk1:~]#vim /etc/profile.d/zk.sh 
#!/bin/bashexport JAVA_HOME=/usr/share/elasticsearch/jdk
export ZK_HOME=/hehe/softwares/apache-zookeeper-3.8.4-bin
export PATH=$PATH:${ZK_HOME}/bin:$JAVA_HOME/bin
[19:16:54 root@elk1:~]#source /etc/profile.d/zk.sh5.启动zookeeper单点 
[19:16:59 root@elk1:~]#zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /hehe/softwares/apache-zookeeper-3.8.4-bin/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED6.查看服务状态
[19:17:17 root@elk1:~]#zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /hehe/softwares/apache-zookeeper-3.8.4-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: standalone7.连接本地的zookeeper服务
[19:17:28 root@elk1:~]#zkCli.sh 
...
[zk: localhost:2181(CONNECTED) 0] 
[zk: localhost:2181(CONNECTED) 0] ls /
[zookeeper]
[zk: localhost:2181(CONNECTED) 1] [19:17:28 root@elk1:~]# zkCli.sh -server 10.0.0.91:2181
...
[zk: 10.0.0.91:2181(CONNECTED) 0] 
[zk: 10.0.0.91:2181(CONNECTED) 0] ls /
[zookeeper]
[zk: 10.0.0.91:2181(CONNECTED) 1] 

集群搭建

1.停止单点服务
[19:34:10 root@elk1:~]#zkServer.sh stop
ZooKeeper JMX enabled by default
Using config: /hehe/softwares/apache-zookeeper-3.8.4-bin/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED2.修改zookeeper的配置文件
[19:34:10 root@elk1:~]# vim /hehe/softwares/apache-zookeeper-3.8.4-bin/conf/zoo.cfg 
# 定义最小单元的时间范围tick。
tickTime=2000
# 启动时最长等待tick数量。
initLimit=5
# 数据同步时最长等待的tick时间进行响应ACK
syncLimit=2
# 指定数据目录
dataDir=/hehe/data/zk
# 监听端口
clientPort=2181
# 开启四字命令允许所有的节点访问。
4lw.commands.whitelist=*
# server.ID=A:B:C[:D]
# ID:
#    zk的唯一编号。
# A:
#    zk的主机地址。
# B:
#    leader的选举端口,是谁leader角色,就会监听该端口。
# C: 
#    数据通信端口。
# D:
#    可选配置,指定角色。(leader,follower,observer)
server.91=10.0.0.91:2888:3888
server.92=10.0.0.92:2888:3888
server.93=10.0.0.93:2888:3888## Metrics Providers
#
# https://prometheus.io Metrics Exporter
#metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider
#metricsProvider.httpHost=0.0.0.0
#metricsProvider.httpPort=7000
#metricsProvider.exportJvmInfo=true3.同步zookeeper的程序到其他节点(前提是其他节点有"/hehe/softwares"目录)
[20:09:37 root@elk1:~]# scp -r /hehe/softwares/apache-zookeeper-3.8.4-bin/ 10.0.0.92:/hehe/softwares/[20:09:37 root@elk1:~]# scp -r /hehe/softwares/apache-zookeeper-3.8.4-bin/ 10.0.0.93:/hehe/softwares/[20:09:37 root@elk1:~]# ll /hehe/softwares/
total 12
drwxr-xr-x 3 root root 4096 Oct 31 19:06 ./
drwxr-xr-x 3 root root 4096 Oct 31 19:06 ../
drwxr-xr-x 7 root root 4096 Oct 31 19:10 apache-zookeeper-3.8.4-bin/[19:44:37 root@elk2:~]#ll /hehe/softwares/
total 16
drwxr-xr-x 4 root root 4096 Oct 31 20:09 ./
drwxr-xr-x 3 root root 4096 Oct 28 21:49 ../
drwxr-xr-x 9 root root 4096 Oct 28 21:49 apache-tomcat-10.1.31/
drwxr-xr-x 7 root root 4096 Oct 31 20:09 apache-zookeeper-3.8.4-bin/[20:08:48 root@elk3:~]#ll /hehe/softwares/
total 12
drwxr-xr-x 3 root root 4096 Oct 31 20:10 ./
drwxr-xr-x 3 root root 4096 Oct 31 19:44 ../
drwxr-xr-x 7 root root 4096 Oct 31 20:10 apache-zookeeper-3.8.4-bin/4.准备myid文件
[20:10:19 root@elk1:~]# mkdir -p /hehe/data/zk
[20:10:19 root@elk1:~]# echo 91 > /hehe/data/zk/myid
[20:10:19 root@elk1:~]# more /hehe/data/zk/myid
91[20:11:54 root@elk2:~]#mkdir -p /hehe/data/zk
[20:16:07 root@elk2:~]#echo 92 > /hehe/data/zk/myid
[20:16:07 root@elk2:~]#more /hehe/data/zk/myid
92[20:11:51 root@elk3:~]#mkdir -p /hehe/data/zk
[20:16:54 root@elk3:~]#echo 93 > /hehe/data/zk/myid
[20:16:54 root@elk3:~]#more /hehe/data/zk/myid
935.同步环境变量
[20:15:16 root@elk1:~]#scp /etc/profile.d/zk.sh 10.0.0.92:/etc/profile.d   
[20:17:54 root@elk1:~]#scp /etc/profile.d/zk.sh 10.0.0.93:/etc/profile.d6.所有节点启动zookeeper集群
source /etc/profile.d/zk.sh ; zkServer.sh start7.查看集群的状态
[20:32:56 root@elk1:~]#zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /hehe/softwares/apache-zookeeper-3.8.4-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower[20:32:59 root@elk2:~]#zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /hehe/softwares/apache-zookeeper-3.8.4-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: leader[20:33:41 root@elk3:~]#zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /hehe/softwares/apache-zookeeper-3.8.4-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower8.连接zookeeper集群
[20:33:44 root@elk3:~]# zkCli.sh -server 10.0.0.91:2181,10.0.0.92:2181,10.0.0.93:2181
...
[zk: 10.0.0.91:2181,10.0.0.92:2181,10.0.0.93:2181(CONNECTED) 0] ls /
[zookeeper]
[zk: 10.0.0.91:2181,10.0.0.92:2181,10.0.0.93:2181(CONNECTED) 1] 
Zookeeper的基本使用
1.zookeeper的结构
zookeeper的存储结构和Linux文件系统类似,Linux中有目录和文件的区分,而Linux并不叫文件,而是教zookeeper node,简称"znode"。每个znode有点类似于Linux文件系统中的目录。2.基于znode实现基础管理
#2.1 查看znode列表
[zk: 10.0.0.91:2181,10.0.0.92:2181,10.0.0.93:2181(CONNECTED) 0] ls /
[zookeeper]#2.2 创建znode
格式:create 目录 数据
create /aaa a3#查看目录下的子节点
[zk: 10.0.0.91:2181,10.0.0.92:2181,10.0.0.93:2181(CONNECTED) 7] ls /bbb
[]#2.3查看znode的数据
格式:get 目录
get /aaa#2.4修改数据
格式:set 目录 新数据
set /aaa b3#2.5删除数据
格式:delete 目录(非递归删除,就是没有叶子节点)
delete /aaa(递归删除节点(包含子节点))
deleteall /bbb `---------------------注意事项:--------------------------`
1.谨慎使用deleteall命令,因为它会永久性地删除节点及其所有后代节点。在执行此命令之前,要确保你确实想要删除整个节点树。2.权限问题:如果启用了访问控制列表(ACL),你需要有足够的权限来执行删除操作。否则,删除命令会因为权限不足而失败。
`-------------------------------------------------------`#2.7多级znode管理
create /ccc
create /ccc/xxx/1
create /ccc/xxx/2ls /ccc显示:xxxls /ccc/xxx显示:[1,2]create /ccc/xxx/1/11 10
create /ccc/xxx/2/22 10#结果是不能删除的因为有数据,我们只能删除空路径
delete /ccc/1/112.7 zookeeper的node类型
#有临时的znode,和永久的znode,临时的znode会随着会话的结束,在默认30s内自动删除。#临时创建(不使用默认是永久)
create -e /beijing
create /hebei[zk: 10.0.0.91:2181,10.0.0.92:2181,10.0.0.93:2181(CONNECTED) 4] create -e /beijing
Created /beijing
[zk: 10.0.0.91:2181,10.0.0.92:2181,10.0.0.93:2181(CONNECTED) 5] stat /beijing
cZxid = 0x200000005
ctime = Thu Oct 31 21:23:45 CST 2024
mZxid = 0x200000005
mtime = Thu Oct 31 21:23:45 CST 2024
pZxid = 0x200000005
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x5b00006df96a0000#显示了创建该临时节点的会话 ID。
dataLength = 0
numChildren = 0[zk: 10.0.0.91:2181,10.0.0.92:2181,10.0.0.93:2181(CONNECTED) 1] create /hebei
Created /hebei
[zk: 10.0.0.91:2181,10.0.0.92:2181,10.0.0.93:2181(CONNECTED) 2] ls /
[aaa, bbb, hebei, zookeeper]
[zk: 10.0.0.91:2181,10.0.0.92:2181,10.0.0.93:2181(CONNECTED) 3] stat /hebei
cZxid = 0x200000004#节点创建时的事务 ID
ctime = Thu Oct 31 21:22:53 CST 2024#节点创建时间
mZxid = 0x200000004#节点最后一次修改时的事务 ID,因为这里没有修改过,所以和创建事务 ID 相同。
mtime = Thu Oct 31 21:22:53 CST 2024#节点最后一次修改时间
pZxid = 0x200000004#节点的子节点列表最后一次修改时的事务 ID,由于该节点没有子节点,所以和创建事务 ID 相同
cversion = 0#子节点的版本号
dataVersion = 0#数据的版本号,没有修改过所以为 0
aclVersion = 0#访问控制列表的版本号
ephemeralOwner = 0x0#表示如果是临时节点,这里会显示创建该临时节点的会话 ID,这里为 0 说明不是临时节点。
dataLength = 0#节点数据的长度为 0。
numChildren = 0#该节点的子节点数量为 0

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

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

相关文章

Vue全栈开发旅游网项目(3)-Vue路由配置

1. 配置路由 1.1 导入路由工具 文件地址&#xff1a;src\router\index.js import { createRouter, createWebHistory } from vue-router//导入配置路由的工具 import HomeView from ../views/HomeView.vue//导入组件const router createRouter({//创建路由对象history: cre…

代随(136):图论dfs——邻接矩阵

题干&#xff1a; 代码&#xff1a; #include <iostream> #include <vector> using namespace std;vector<vector<int>>res; vector<int>path;void dfs(vector<vector<int>>&graph, int x, int n) {if(x n){res.push_back(pat…

精选录屏软件大赏:满足不同场景需求的录制利器

现在是互联网的世界&#xff0c;所以很多时候学习、工作我们都离不开电脑。在我们通过互联网查看网课、开网络会议的时候是不是会因为速度太快而来不及记录&#xff1f;那我推荐使用一些windows录屏软件来记录所有重点&#xff0c;方便我们后期复盘。 1.FOXIT录屏大师 链接&a…

【python】OpenCV—findContours(4.5)

文章目录 1、功能描述2、原理分析3、代码实现4、效果展示5、完整代码6、参考 1、功能描述 输入图片&#xff0c;计算出图片中的目标到相机间的距离 2、原理分析 用最简单的三角形相似性 已知参数&#xff0c;物体的宽度 W W W&#xff0c;物体到相机的距离 D D D&#xff0…

【华为HCIP实战课程二十八】中间到中间系统协议IS-IS邻居关系排错,网络工程师

一、ISIS邻居关系条件 1、同一层次(比如Level-2路由器不能和Level-1路由器形成邻居关系) 2、同一区域(L1必须同一区域) 3、同一网段 R1和R2之间分别配置如下IP地址和掩码: R1 的接口S1/0/0掩码为/24 R2的接口S1/0/0配置成掩码/28: 此时R1和R2依然可以建立ISIS邻居关系…

文件操作和 IO(一):文件基础知识 文件系统操作 => File类

目录 1. 什么是文件 1.1 概念 1.2 硬盘, 内存, 寄存器之间的区别 1.3 机械硬盘和固态硬盘 2. 文件路径 2.1 绝对路径 2.2 相对路径 3. 文件分类 4. File 类 4.1 属性 4.2 构造方法 4.3 方法 1. 什么是文件 1.1 概念 狭义上的文件: 保存在硬盘上的文件广义的上的文…

Flutter Color 大调整,需适配迁移,颜色不再是 0-255,而是 0-1.0,支持更大色域

在之前的 3.10 里&#xff0c; Flutter 的 Impeller 在 iOS 上支持了 P3 广色域图像渲染&#xff0c;但是当时也仅仅是当具有广色域图像或渐变时&#xff0c;Impeller 才会在 iOS 上显示 P3 的广色域的颜色&#xff0c;而如果你使用的是 Color API&#xff0c;会发现使用的还是…

web自动化测试平台开发之核心执行器

web自动化测试平台开发之核心执行器 一、如何从自动化框架到核心执行器二、核心执行器框架逻辑梳理三、核心执行器利用命令驱动执行 一、如何从自动化框架到核心执行器 脚本:底层用了三个内容:pythonpytestselenium&#xff0c;线性脚本&#xff0c;只是单纯的把功能测试用例转…

Rust 力扣 - 2090. 半径为 k 的子数组平均值

文章目录 题目描述题解思路题解代码题解链接 题目描述 题解思路 半径为 k 的子数组平均值 等价于 子数组长度为2 * k 1的总和 除于 2 * k 1 我们遍历长度为2 * k 1的窗口&#xff0c;我们只需要记录窗口内的平均值即可 题解代码 impl Solution {pub fn get_averages(num…

直接内存、死锁、方法句柄

直接内存 1. 不是虚拟机运行时数据区的一部分&#xff0c;也不是《Java虚拟机规范》中定义的内存区域 2. 直接内存是在Java堆外、直接向系统申请的内存区间 3. 来源于NIO,通过存在堆中的DirectByteBuffer操作Native内存 4. 通常&#xff0c;访问直接内存的速度会优于Java堆&am…

C++《list》

在本篇当中我们将学习STL中的list&#xff0c;在此list就是我们之前在数据结构学习过的链表&#xff0c;在本篇中我们要来了解list当中的成员函数该如何使用&#xff0c;由于list各个函数的接口和之前学习过的vector类型&#xff0c;因此在学习list的使用就较为轻松。在lis篇章…

【牛客刷题实战】二叉树遍历

大家好&#xff0c;我是小卡皮巴拉 文章目录 目录 牛客题目&#xff1a; 二叉树遍历 题目描述 输入描述&#xff1a; 输出描述&#xff1a; 示例1 解题思路 问题理解 算法选择 具体思路 解题要点 完整代码&#xff08;C语言&#xff09; 兄弟们共勉 &#xff01;&…

vmvare启动freebsd操作系统密码忘记了怎么办?

本章教程,主要介绍,通过vmvare安装的freebsd操作系统,密码忘记了,如何重置密码。 一、重启虚拟机 在重启过程中,按键盘中是数字2,进入单用户模式。 二、进入到shell界面 在出现“Enter full pathname of shell or RETURN for /bin/sh:”直接按回车键。 三、输入命令 mou…

【设计模式系列】代理模式(八)

一、什么是代理模式 代理模式&#xff08;Proxy Pattern&#xff09;是一种结构型设计模式&#xff0c;它为其他对象提供一种代理以控制对这个对象的访问。代理模式在不直接访问实际对象的情况下&#xff0c;提供了对目标对象的间接访问。通过引入一个代理对象来间接操作实际对…

WPS查询函数VLOOKUP,匹配寻找值自动带入值

想实现在下表输入物料名称后&#xff0c;把上表中的单位自动带入 那就要用到VLOOKUP函数&#xff0c;获取第2个表第1列的值后去第1个表的第1列匹配&#xff0c;匹配到后得到行数值&#xff0c;把第1个表的第2列赋值给第2个表的第2列。 Vlookup函数参数为Vlookup(查找值&#…

sqoop问题汇总记录

此篇博客仅记录在使用sqoop时遇到的各种问题。持续更新&#xff0c;有问题评论区一起探讨&#xff0c;写得有不足之处见谅。 Oracle_to_hive 1. main ERROR Could not register mbeans java.security.AccessControlException: access denied ("javax.management.MBeanTr…

简单说明vuex

vuex 知识结构配置调用 知识结构 vue用于管理公共数据的仓库 配置 state&#xff1a;所有公共数据的初始状态&#xff08;初始值&#xff09; export default {state: {count: 0,} };mutations&#xff1a;修改state内容的方法&#xff08;必须为同步方法&#xff09; export …

分类算法——决策树 详解

决策树的底层原理 决策树是一种常用的分类和回归算法&#xff0c;其基本原理是通过一系列的简单决策&#xff0c;将数据集划分为多个子集&#xff0c;从而实现分类。决策树的核心思想是通过树形结构表示决策过程&#xff0c;节点代表特征&#xff0c;边代表决策&#xff0c;叶子…

Nature Electronics 用于语音识别的液体声传感器,基于悬浮在载液的钕-铁-硼磁性纳米颗粒

近年来&#xff0c;工程师们开发了一系列越来越复杂的传感器&#xff0c;用于机器人、便携式、可穿戴甚至植入式监测。然后&#xff0c;可以使用最先进的机器学习来分析这些传感器收集的数据&#xff0c;使设备能够识别音频中的特定声音、图像中的对象或其他信息。加州大学洛杉…

NVR批量管理软件/平台EasyNVR多个NVR同时管理支持视频投放在电视墙上

在当今智能化、数字化的时代&#xff0c;视频监控已经成为各行各业不可或缺的一部分&#xff0c;无论是公共安全、交通管理、企业监控还是智慧城市建设&#xff0c;都离不开高效、稳定的视频监控系统的支持。而在这些应用场景中&#xff0c;将监控视频实时投放到大屏幕电视墙上…