cloud02:elk

author author     2022-10-21     459

关键词:

ELK 是什么?
? ELK 其实并不是一款软件,而是一整套解决方案,是
三个软件产品的首字母缩写
– Elasticsearch:负责日志检索和储存
– Logstash:负责日志的收集和分析、处理
– Kibana:负责日志的可视化
– 这三款软件都是开源软件,通常是配合使用,而且又
先后归于 Elastic.co 公司名下,故被简称为 ELK

ELK 能做什么?
? ELK组件在海量日志系统的运维中,可用于解决:
– 分布式日志数据集中式查询和管理
– 系统监控,包含系统硬件和应用各个组件的监控
– 故障排查
– 安全信息和事件管理
– 报表功能

Elasticsearch部分

? ElasticSearch 是一个基于 Lucene 的搜索服务器。
它提供了一个分布式多用户能力的全文搜索引擎,基
于 RESTful API 的 web 接口。
? Elasticsearch是用Java开发的,并作为Apache许可
条款下的开放源码发布,是当前流行的企业级搜索引
擎。设计用于云计算中,能够达到实时搜索,稳定,
可靠,快速,安装使用方便

主要特点
– 实时分析
– 分布式实时文件存储,并将每一个字段都编入索引
– 文档导向,所有的对象全部是文档
– 高可用性,易扩展,支持集群(Cluster)、分片和复
制(Shards 和 Replicas)
– 接口友好,支持 JSON

ES 没有什么?
? Elasticsearch 没有典型意义的事务.
? Elasticsearch 是一种面向文档的数据库。
? Elasticsearch 没有提供授权和认证特性

相关概念:
– Node: 装有一个 ES 服务器的节点。
– Cluster: 有多个Node组成的集群
– Document: 一个可被搜素的基础信息单元
– Index: 拥有相似特征的文档的集合 #库
– Type: 一个索引中可以定义一种或多种类型 #表
– Filed: 是 ES 的最小单位,相当于数据的某一列
– Shards: 索引的分片,每一个分片就是一个 Shard
– Replicas: 索引的拷贝

S 与关系型数据库的对比
– 在 ES 中,文档归属于一种 类型 (type) ,而这些类型
存在于索引 (index) 中,类比传统关系型数据库
– DB -> Databases -> Tables -> Rows -> Columns
– 关系型
数据库



– ES -> Indices -> Types -> Documents -> Fields
– ES
索引
类型
文档
域(字段)

Elasticsearch部分
? 安装第一台 ES 服务器
– 设置主机名称和 ip 对应关系
– 解决依赖关系
– 安装软件包
– 修改配置文件
– 启动服务
– 检查服务

步骤 1,设置 ip 与主机名称对应关系
– 配置 /etc/hosts

192.168.4.11 node1
? 步骤 2,安装 JDK
– Elasticsearch 要求至少 Java 7
– 一般推荐使用 OpenJDK 1.8
– 配置好安装源以后,我们先解决依赖关系
yum install -y java-1.8.0-openjdk

步骤 3
– 安装 ES
rpm –ivh elasticsearch-2.3.4-1.noarch
? 步骤 4
– 修改配置文件
– elasticsearch.yml
network.host: 0.0.0.0

步骤 5
– 启动服务,设置自启动
systemctl enable elasticsearch
systemctl start elasticsearch
– 验证:
netstat –ltunp
– 能够看到 9200,9300 被监听

通过浏览器或 curl 访问 9200 端口
curl http://192.168.4.11:9200/

ES 集群配置

– ES 集群配置也很简单,只需要对配置文件做少量的修
改即可,其他步骤和单机完全一致
– ES 集群配置文件
cluster.name: my-es
node.name: node1
network.host: 0.0.0.0
discovery.zen.ping.unicast.hosts: ["node1", "node2",
"node3"]

ES 集群配置

– 集群中的所有节点要相互能够 ping 通,要在所有集群
机器上配置 /etc/hosts 中的主机名与 ip 对应关系
– 集群中所有机器都要安装 java 环境
– cluster.name 集群名称配置要求完全一致
– node.name 为当前节点标识,应配置本机的主机名
– discovery 为集群节点机器,不需要全部配置
– 配置完成以后启动所有节点服务(有可能会有一定的
延时,需要等待几十秒)

ES 集群配置
– 验证集群,使用 ES 内置字段 _cluster/health

curl http://192.168.4.11:9200/_cluster/health?pretty

"cluster_name" : "my-es",
"status" : "green",
...... ...... ......
"number_of_nodes" : 5,
"number_of_data_nodes" : 5,
...... ...... ......
"task_max_waiting_in_queue_millis" : 0,
"active_shards_percent_as_number" : 100.0

ES 集群验证
– 返回字段解析

– status“ : ”green“ 集群状态,绿色为正常,黄色表
示有问题但不是很严重,红色表示严重故障
– “number_of_nodes” : 5, 表示集群中节点的数量
– "number_of_data_nodes" : 5,
– ...... ...... ......
– "task_max_waiting_in_queue_millis" : 0,
– "active_shards_percent_as_number" : 100.0

ES 常用插件
? head 插件:

– 它展现ES集群的拓扑结构,并且可以通过它来进行索
引(Index)和节点(Node)级别的操作
– 它提供一组针对集群的查询API,并将结果以json和表
格形式返回
– 它提供一些快捷菜单,用以展现集群的各种状态

ES 常用插件
? kopf 插件
– 是一个ElasticSearch的管理工具
– 它提供了对ES集群操作的API
? bigdesk 插件
– 是elasticsearch的一个集群监控工具
– 可以通过它来查看es集群的各种状态,如:cpu、内存
使用情况,索引数据、搜索情况,http连接数等

ES 插件安装、查看
– 查看安装的插件
/usr/share/elasticsearch/bin/plugin list
– 安装插件
/usr/share/elasticsearch/bin/plugin install
ftp://192.168.4.254/head.zip
/usr/share/elasticsearch/bin/plugin install
file:///tmp/kopf.zip
– 这里必须使用 url 的方式进行安装,如果文件在本地,
我们也需要使用 file:// 的方式指定路径,例如文件在
/tmp/xxx 下面,我们要写成 file:///tmp/xxx 删除使
用 remove 指令

访问地址
http://192.168.4.1:9200/_plugin/head/
http://192.168.4.1:9200/_plugin/kopf/#!/cluster
http://192.168.4.1:9200/_plugin/bigdesk/#nodes


HTTP 与 RESTful API

curl 参数

-A 修改请求agent ,告诉浏览器版本等
-X 设置请求方法
-i 显示返回头信息

ES RESTful API 部分
? Elasticsearch提供了一系列RESTful的API
– 检查集群、节点、索引的健康度、状态和统计
– 管理集群、节点、索引的数据及元数据
– 对索引进行CRUD操作及查询操作
– 执行其他高级操作如分页、排序、过滤等
? POST 或 PUT 数据使用 json 格式

? json

– JSON的全称是”JavaScript Object Notation”,意
思是JavaScript对象表示法,它是一种基于文本,独立
于语言的轻量级数据交换格式。
– json 传输的就是一个字符串
– python 中对应的 字符串,列表,字典都可以转换成
对应的 json 格式

? Rest API 的简单使用
– _cat API 查询集群状态,节点信息

– v 参数显示详细信息
http://192.168.4.15:9200/_cat/health?v
– help 显示帮助信息
http://192.168.4.15:9200/_cat/health?help

? Rest API 的简单使用
– nodes 查询节点状态信息
http://192.168.4.15:9200/_cat/nodes?v
– 索引信息
http://192.168.4.15:9200/_cat/indices?v

? HTTP Methods 和 RESTful API 设计

– HTTP Methods 也叫 HTTP Verbs, 它们是 HTTP 协议
的一部分, 主要规定了 HTTP 如何请求和操作服务器上
的资源,常见的有GET, POST等
– HTTP Methods 一共有九个,分别是 GET,HEAD,
POST,PUT,DELETE,TRACE,OPTIONS,
CONNECT,PATCH

? HTTP Methods

– 在RESTful API 设计中,常用的有POST,GET,PUT,
PATCH 和 DELETE。分别对应对资源的创建,获取,
修改,部分修改和删除操作。
– 我们默认访问 ES API 的方法是 GET,如果要对数据库
增加、删除、修改数据我们还要使用对应的方法
– GET 查询
– POST 增加
– PUT 更改
– DELETE 删除

? RESTful API 增加
– 创建一个 school 的 (Index) 和一个 students (Type)
– 并增加一条信息
创建索引
curl -XPUT ‘http://192.168.4.11:9200/school/aa/1‘ -d

"settings":
"index":
"number_of_shards":5,
"number+of_replicas":1


增加
curl -XPUT ‘http://192.168.4.11:9200/索引名称/类型名称/id‘ -d ‘JSON‘

增加JSON串
curl -XPUT ‘http://192.168.4.11:9200/school/students/1‘ -d

"nsd1710": "devops",
"js":
"bn": "dd",
"last": "wu"
,
"age": 25

? RESTful API 更改

– 修改 school 下面 students 的第一个文档中的 age 信
息,从 25 修改为 30
curl -XPOST
http://192.168.4.11:9200/school/students/1/_update‘ -d ‘
"doc":
"age": 30

? RESTful API 查询
– 查询刚刚创建的文档信息
curl –XGET ‘http://192.168.4.11:9200/school/students/1
– 只查询 name 和 age
curl -XGET
http://192.168.4.11:9200/school/students/1?_source=nam
e,age‘

? RESTful API 删除
– 删除刚才创建的文档

curl -XDELETE ‘http://192.168.4.14:9200/school/students/1
– 删除 school
curl -XDELETE ‘http://192.168.4.14:9200/school


kibana 安装

? kibana是什么
– 数据可视化平台工具
? 特点:
– 灵活的分析和可视化平台
– 实时总结和流数据的图表
– 为不同的用户显示直观的界面
– 即时分享和嵌入的仪表板

? kibana安装
– kibana 的安装非常简单,我们使用 rpm 方式安装
rpm –ivh kibana-4.5.2-1.x86_64.rpm
– kibana 默认安装在 /opt/kibana 下面,配置文件在
/opt/kibana/config/kibana.yml
– 我们只需要修改少量的配置就可以启动

? kibana.yml 的配置
– server.port: 5601
– server.host: "0.0.0.0"
– elasticsearch.url: "http://192.168.4.13:9200"
– kibana.index: ".kibana"
– kibana.defaultAppId: "discover"
– elasticsearch.pingTimeout: 1500
– elasticsearch.requestTimeout: 30000
– elasticsearch.startupTimeout: 5000

? kibana.yml 的配置
– 除 elasticsearch.url 需要配置为我们 ES 集群的地址之
外,其他保持默认值就可以了
– 设置开机启动
systemctl enable kibana
– 启动服务
systemctl start kibana
– web 访问 kibana
http://192.168.4.20:5601/

数据批量导入
? 使用 _bulk 批量导入数据

– 批量导入数据使用 POST 方式,数据格式为 json,url
编码使用 data-binary
– 导入含有 index 配置的 json 文件
gzip –d logs.jsonl.gz
curl -XPOST ‘http://192.168.4.14:9200/_bulk‘ --data-binarybr/>@logs.jsonl
gzip –d shakespeare.json.gz
curl -XPOST ‘
http://192.168.4.14:9200/_bulk‘ --data-binary
@shakespeare.json

使用 _bulk 批量导入数据
– 导入没有有 index 配置的 json 文件

– 我们需要在 uri 里面制定 index 和 type
gzip –d accounts.json.gz
curl -XPOST
http://192.168.4.14:9200/accounts/act/_bulk?pretty‘ --
data-binary @accounts.json

数据批量查询
? 数据批量查询使用 GET

curl -XGET ‘http://192.168.4.11:9200/_mget?pretty‘ -d ‘
"docs":[

"_index": "accounts",
"_type:": "act",
"_id": 1
,

"_index": "accounts",
"_type:": "act",
"_id": 2
,


"_index": "shakespeare",
"_type:": "scene",
"_id": 1

]

map 映射
? mapping:

– 映射:创建索引的时候,可以预先定义字段的类型及
相关属性。
– 作用:这样会让索引建立得更加的细致和完善。
– 分类:静态映射和动态映射。
– 动态映射:自动根据数据进行相应的映射。
– 静态映射:自定义字段映射数据类型。

kibana 里选择日志
– 支持通配符 *

– 我们这里选择 logstash-*
– 在下面的 Time-field 选择 @timestramp 作为索引
– 然后点 create 按钮


logstash 部分

文档地址
https://github.com/logstash-plugins

logstash 是什么
– logstash是一个数据采集、加工处理以及传输的工具
? logstash 特点:
– 所有类型的数据集中处理
– 不同模式和格式数据的正常化
– 自定义日志格式的迅速扩展
– 为自定义数据源轻松添加插件

? logstash 安装

– Logstash 依赖 java 环境,需要安装 java-1.8.0-
openjdk
– Logstash 没有默认的配置文件,需要手动配置
– logstash 安装在 /opt/logstash 目录下
rpm -ivh logstash-2.3.4-1.noarch.rpm

? logstash 工作结构




– 数据源 ==>
– input ==>
– filter ==>
– output ==>
– ES

logstash 里面的类型
– 布尔值类型: ssl_enable => true

– 字节类型:
bytes => "1MiB"
– 字符串类型: name => "xkops"
– 数值类型: port => 22
– 数组: match => ["datetime","UNIX"]
– 哈希: options => k => "v",k2 => "v2"
– 编码解码: codec => "json"
– 路径: file_path => "/tmp/filename"
– 注释: #

logstash 条件判断
– 等于: ==
– 不等于: !=
– 小于: <
– 大于: >
– 小于等于: <=
– 大于等于: >=
– 匹配正则: =~
– 不匹配正则: !~
– 包含: in
– 不包含: not in
– 与: and
– 或: or
– 非与: nand
– 非或: xor
– 复合表达式: ()
– 取反符合: !()

logstash 的第一个配置文件
– /etc/logstash/logstash.conf

input
stdin

filter
output
stdout

? 启动并验证
– logstash –f logstash.conf

? logstash 插件

– 上页的配置文件使用了 logstash-input-stdin 和
logstash-output-stdout 两个插件,logstash 还有
filter 和 codec 类插件,查看插件的方式是
/opt/logstash/bin/logstash-plugin list

? codec类插件

– 常用的插件:plain、json、json_lines、rubydebug、
multiline等
– 我们还使用刚刚的例子,不过这次我们输入 json 数据
– 我们设置输入源的 codec 是 json,在输入的时候选择
rubydebug

? codec 类插件
input
stdin codec => "json"

filter
output
stdout codec => "rubydebug"

– 我们输入普通数据和 json 对比
– "a": 1, "c": 3, "b": 2

? codec 类插件
– 练习 output 和 input 配置
– 练习 在 input 不指定类型 json 输出结果
– 练习 在 output 不指定 rubydebug 的输出结果
– 同时指定以后的输出结果

? input file 插件

file
start_position => "beginning" #新文件读取从头开始,end为尾开始
sincedb_path => "/var/lib/logstash/sincedb-access" #记录上次读取位置的文件
path => [“/tmp/alog”, “/tmp/blog”] #读取文件的路径
type => ‘filelog‘ #日志文件类型

– sincedb_path 记录读取文件的位置
– start_position 配置第一次读取文件从什么地方开始

? input tcp 和 udp 插件

tcp
host => "0.0.0.0"
port => 8888
type => "tcplog"

udp
host => "192.168.4.16"
port => 9999
type => "udplog"

? tcp & udp
– 使用 shell 脚本,对 tcp 指定端口发送数据

function sendmsg()
if (( $# == 4 )) && [ $1 == "tcp" -o $1 == "udp" ];then
exec 9<>/dev/$1/$2/$3
echo "$4" >&9
exec 9<&-
else
echo "$0 (tcp|udp) ipaddr port msg"
fi

tcp & udp 练习

– 发送 tcp 数据
– sendmsg tcp 192.168.4.10 8888 ‘tcp msg’
– 发送 udp 数据
– sendmsg udp 192.168.4.10 9999 ‘udp msg’

? syslog 插件练习

syslog
host => "192.168.4.10"
port => 514
type => "syslog"

– /etc/rsyslog.conf 配置向远程发送数据
74 local0.info @@192.168.4.10:514 # 2个@@是tcp发送
75 authpriv.info @192.168.4.10:514 #1个@是UPD发送

systemctl restart rsyslog.service
– 写 syslog ,查看状态
logger -p local0.info -t test_logstash ‘test message‘ #local0系统等级向日志文件写入信息

? filter grok插件
– 解析各种非结构化的日志数据插件

– grok 使用正则表达式把非结构化的数据结构化
– 在分组匹配,正则表达式需要根据具体数据结构编写
– 虽然编写困难,但适用性极广
– 几乎可以应用于各类数据
(?<组名>正则表达式)
grok
match => [“message”,“%IP:ip, (?<key>reg)”

grok 正则分组匹配
– 匹配 ip 时间戳 和 请求方法

"(?<ip>(\d+.)3\d+) \S+ \S+
(?<time>.*])\s+\"(?<method>[A-Z]+)"]
– 使用正则宏
%IPORHOST:clientip %HTTPDUSER:ident %USER:auth
[%HTTPDATE:timestamp] \"%WORD:verb
– 最终版本
%COMMONAPACHELOG \"(?<referer>[^\"]+)\"
\"(?<UA>[^\"]+)\"

正则宏路径:
/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-patterns-core-2.0.5/patterns/

input redis 插件

redis
host => ‘redis-server‘
port => ‘6379‘
data_type => ‘list‘
key => ‘lb‘
codec => ‘json‘

– 生产环境往往理由 redis 来做缓冲,这里给出配置

? output ES 插件

if [type] == "weblog"
elasticsearch
hosts => ["192.168.4.15:9200"]
index => "weblog"
flush_size => 2000 #2000时写入
idle_flush_time => 10 #空闲10秒写入

– 调试成功后,把数据写入 ES 集群
? input filebeats 插件

beats
port => 5044
codec => "json"

– 这个插件主要用来接收 beats 类软件发送过来的数据,
由于 logstash 依赖 java 环境,而且占用资源非常大,
我们往往不希望所有集群的机器都部署 java 环境安装
logstash,而使用更轻量的 filebeat 替代

? filebeat 安装与配置
– 使用 rpm 安装 filebeat

rpm -ivh filebeat-1.2.3-x86_64.rpm
– 修改配置文件 /etc/filebeat/filebeat.yml
– 设置开机运行
systemctl enable filebeat
– 开启服务
systemctl start filebeat

? 修改配置文件 /etc/filebeat/filebeat.yml
数据指针文件
/var/lib/filebeat/registry

paths:
15 - /root/logs.jsonl
72 document_type: weblog
183,188 注释
output:
278 logstash:
280 hosts: ["192.168.4.10:5044"]

从 Cloud Run on Google Cloud 访问 Cloud SQL

】从CloudRunonGoogleCloud访问CloudSQL【英文标题】:AccessingCloudSQLfromCloudRunonGoogleCloud【发布时间】:2020-11-0501:30:18【问题描述】:我有一个通过SQLAlchemy访问CloudSQL实例的CloudRun服务。但是,在CloudRun的日志中,我看到了CloudSQLconnectionfai... 查看详情

Cloud Functions、Cloud Firestore、Cloud Storage:如何防范机器人?

】CloudFunctions、CloudFirestore、CloudStorage:如何防范机器人?【英文标题】:CloudFunctions,CloudFirestore,CloudStorage:Howtoprotectagainstbots?【发布时间】:2020-05-1811:27:11【问题描述】:我已经在客户端将ReCAPTCHA用于Android应用程序(当然,我还... 查看详情

问题 spring-cloud-config 和 spring-cloud-bus

】问题spring-cloud-config和spring-cloud-bus【英文标题】:Problemsspring-cloud-configandspring-cloud-bus【发布时间】:2016-09-2907:16:37【问题描述】:我有三个应用程序,一个是spring-cloud-config服务器点,另一个是spring-cloud-config客户端点。我相互... 查看详情

Cloud Function 部署问题以安排每日 Cloud SQL 导出到 Google Cloud Storage

】CloudFunction部署问题以安排每日CloudSQL导出到GoogleCloudStorage【英文标题】:ProblemwithCloudFunctiondeploymenttoscheduledailyCloudSQLexporttoGoogleCloudStorage【发布时间】:2020-03-1709:13:20【问题描述】:我使用这篇文章制作了一个CloudFunction来将Clo... 查看详情

google.cloud.pubsub_v1 和 google.cloud.pubsub 有啥区别?

】google.cloud.pubsub_v1和google.cloud.pubsub有啥区别?【英文标题】:Whatisthedifferencebetweengoogle.cloud.pubsub_v1andgoogle.cloud.pubsub?google.cloud.pubsub_v1和google.cloud.pubsub有什么区别?【发布时间】:2018-06-2005:04:42【问题描述】:我看到两者都在Goo... 查看详情

如何为 Cloud Build 用于 Cloud Run 部署的 Cloud Storage 存储分区指定区域?

】如何为CloudBuild用于CloudRun部署的CloudStorage存储分区指定区域?【英文标题】:HowcanIspecifyaregionfortheCloudStoragebucketsusedbyCloudBuildforaCloudRundeployment?【发布时间】:2020-07-1320:42:35【问题描述】:在将docker容器镜像部署到CloudRun时,我... 查看详情

在 IBM-Cloud-cloud 对象存储中保留啥作为网络鸭连接服务器端点 URL

】在IBM-Cloud-cloud对象存储中保留啥作为网络鸭连接服务器端点URL【英文标题】:WhattokeepasthecyberduckconnectionserverendpointURLinIBM-Cloud-cloudobjectstorage在IBM-Cloud-cloud对象存储中保留什么作为网络鸭连接服务器端点URL【发布时间】:2021-10-0... 查看详情

找不到 org.springframework.cloud:spring-cloud-dependencies:pom

】找不到org.springframework.cloud:spring-cloud-dependencies:pom【英文标题】:Failuretofindorg.springframework.cloud:spring-cloud-dependencies:pom【发布时间】:2019-07-3107:23:57【问题描述】:我一直在尝试设置一个SpringBoot项目,但出现错误。我研究并尝... 查看详情

spring-cloud-config:spring-cloud-config Maven配置错误

】spring-cloud-config:spring-cloud-configMaven配置错误【英文标题】:spring-cloud-config:spring-cloud-configmavenconfigerror【发布时间】:2018-05-3014:08:35【问题描述】:我尝试写一个springcloudconfigserverexample.Mymaven的pomconfig<parent><group 查看详情

通过启用 IAM 登录的 cloud-sql-proxy 从 Cloud Run 连接到 Cloud SQL

】通过启用IAM登录的cloud-sql-proxy从CloudRun连接到CloudSQL【英文标题】:ConnectingtoCloudSQLfromCloudRunviacloud-sql-proxywithIAMloginenabled【发布时间】:2021-12-2914:13:26【问题描述】:我想使用服务帐号从CloudRun连接到CloudSQL实例。该连接过去是... 查看详情

Cloud Tasks + Cloud Functions - 重复执行

】CloudTasks+CloudFunctions-重复执行【英文标题】:CloudTasks+CloudFunctions-duplicateexecutions【发布时间】:2020-05-1116:03:06【问题描述】:我正在同时使用GoogleCloudTasks和CloudFunctions来并行执行许多任务。使用HTTP触发器部署CloudFunction。我正... 查看详情

Firebase Cloud Function 触发 Cloud Messenger

】FirebaseCloudFunction触发CloudMessenger【英文标题】:FirebaseCloudFunctiontriggerCloudMessenger【发布时间】:2020-10-2609:25:20【问题描述】:我的index.js中有这段代码,当我向云Firestore创建数据时触发,其他用户会收到通知。但它不起作用const... 查看详情

如何通过 Cloud Functions 将文件上传到 Cloud Storage 并使用 Firestore 控制对 Cloud Storage 的访问?

】如何通过CloudFunctions将文件上传到CloudStorage并使用Firestore控制对CloudStorage的访问?【英文标题】:HowcanIuploadfilestoCloudStoragethroughCloudFunctionsanduseFirestoretocontrolaccesstoCloudStorage?【发布时间】:2021-04-0712:15:27【问题描述】:我正在... 查看详情

Cloud-init 如何强加通过 cloud init 定义的用户设置?

】Cloud-init如何强加通过cloudinit定义的用户设置?【英文标题】:HowdoesCloud-initimposeusersettings,definedthroughcloudinit?【发布时间】:2022-01-1622:19:16【问题描述】:致所有Cloud-init专家:最近,我一直在尝试使用cloud-init的用户帐户创建和... 查看详情

Google Cloud Spanner 和 Cloud SQL 有啥区别?

】GoogleCloudSpanner和CloudSQL有啥区别?【英文标题】:What\'sthedifferencebetweenGoogleCloudSpannerandCloudSQL?GoogleCloudSpanner和CloudSQL有什么区别?【发布时间】:2020-06-1006:05:17【问题描述】:我是GCP堆栈的新手,所以我对用于存储数据的大量GC... 查看详情

如何使用附加的 Cloud Build Trigger 将当前 Cloud Source Repository 推送到另一个 Cloud Source Repository

】如何使用附加的CloudBuildTrigger将当前CloudSourceRepository推送到另一个CloudSourceRepository【英文标题】:HowtopushcurrentCloudSourceRepositoryusingtheattachedCloudBuildTriggertoanotherCloudSourceRepository【发布时间】:2022-01-1517:03:46【问题描述】:我有这... 查看详情

spring-cloud 和 spring-cloud-gcp 是不是有通用 BOM 文件?

】spring-cloud和spring-cloud-gcp是不是有通用BOM文件?【英文标题】:istherecommonBOMfileforspring-cloudandspring-cloud-gcp?spring-cloud和spring-cloud-gcp是否有通用BOM文件?【发布时间】:2020-06-2510:44:17【问题描述】:目前在我的项目中,我在build.gra... 查看详情

在 `.symlinks/plugins/cloud_firestore/ios` 中找不到 `cloud_firestore` 的 podspec

】在`.symlinks/plugins/cloud_firestore/ios`中找不到`cloud_firestore`的podspec【英文标题】:Nopodspecfoundfor`cloud_firestore`in`.symlinks/plugins/cloud_firestore/ios`【发布时间】:2019-05-2422:21:18【问题描述】:在我的pubspec.yaml文件中添加cloud_firestore依 查看详情