ARTIFACTORY:元数据服务故障排除
相关版本:此信息属于Artifactory版本7.x
元数据是一个用Go语言编写的微服务,与Artifactory 7.x捆绑在一起。它用于存储来自JFrog服务(如Artifactory和Xray)的元数据信息包,并具有自己的配置设置和日志文件。由于Artifactory是用不同的语言(Java)编写的,这可能会产生一些问题。因此,当元数据出现任何问题时,通过查看$ARTIFACTORY_HOME/var/log目录中的以下文件来开始故障排除:
- metadata-service.log
- metadata-request.log
- console.log
您可能遇到的最常见用例之一是Artifactory提供连接字符串(通过system.yaml配置文件)。在启动过程中,Artifactory解析其Java连接字符串和参数,然后将其转换为Go格式。但是,有时会出现此过程失败的边缘情况。以下是其他几个可能出现的常见问题,以及如何解决这些问题的建议,每个错误都可以在metadata-service.log中找到:
如果您的Artifactory实例与外部Oracle DB一起运行,您可能会遇到以下错误:[2014-03-19] [jfmd] [PANIC] [4302998e04479677] [database_bearer.]go:51] [main] -无法初始化数据库(db config: {oracle ARTIFACTORY_TEST/***@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=pepldr00237.co .pep.pvt)(PORT=60003))(CONNECT_DATA=(SERVER=DEDICATED)(SID=stm1d))}): ORA-00000: DPI-1047:无法定位64位oracle客户端库:"指定的模块无法找到"。请参阅https://oracle.github.io/odpi/doc/installation.html#windows获取帮助
连接数据库错误。放弃
.init m.si-fil.com/metadata/services/common。(* databaseBearer)
元数据/服务/共同/ database_bearer.go: 84
m.si-fil.com/metadata/services/common.NewDatabaseBearer
元数据/服务/共同/ database_bearer.go: 49
…
/ database_bearer。: 51 + 0 x2a8
main.main ()
元数据/元数据。: 29 + 0 x435
从系统读取配置时出错。yaml: Type:, Url::无法将db属性设置为应用程序配置:无法解析jdbc Url的连接部分:ldap://uoid.rsv。se: 7389 / ZV3T001 cn = OracleContext, dc = rsv, dc =
例程1[运行]:
这里的连接字符串如下:jdbc: oracle:薄:@ldap: / / mydomain.nex。答:7389 / ZV3T001 cn = OracleContext, dc = rsv, dc =元数据尝试将JDBC连接字符串转换为Go连接字符串,但失败。
解决方法是进入系统内部。在元数据中。数据库部分,添加带有Go:前缀的Go连接字符串,然后添加Go风格的连接字符串而不是JDBC连接字符串。关于如何为Oracle构建连接字符串的详细信息可以在这里找到。例如,如果连接字符串是oracle://user:passw@service_name,则需要将值设置为:oracle://user:passw@service_name。ֿ
2020-03-22T18:25:10.663Z [jfmd] [ERROR] [4104ec4b9d67964e] [database_bearer。]go:51] [main] -无法初始化数据库(db config: {mysql artifactory:***@tcp(adim-mysql.cvooa7fn0wpy.us-west-2.rds.amazonaws.com:3306)/artdb?charset=utf8&tls=true&parseTime=true&clientFoundRows=true}): x509:证书由未知权威签名连接数据库错误。放弃
.init m.si-fil.com/metadata/services/common。(* databaseBearer)
/ src / m.si-fil.com/metadata/services/common/database_bearer.go: 84
m.si-fil.com/metadata/services/common.NewDatabaseBearer
/ src / m.si-fil.com/metadata/services/common/database_bearer.go: 49
main.main
/ src / m.si-fil.com/metadata/metadata.go: 29
runtime.main
/ src /运行/ proc.go: 203
runtime.goexit
/ src /运行/ asm_amd64.s: 1357
这表示缺少SSL/TLS证书。要解决这个问题,在您的Artifactory机器上,您需要在/etc/ssl/certs文件夹中添加适当的证书文件。
共享:
数据库:
司机:org.postgresql.Driver
密码:very_secret_password
类型:postgresql
url: " jdbc: postgresql: / / mydatabase.net: 5432 / artifactory”
用户名:artifactory
元数据:
数据库:
Url: go:user='artifactory'密码='${shared.database. '密码}' dbname=artifactory host=mydatabase.net port=5432 sslmode=disable
当读取Go连接字符串时,${shared.database。Password}将被读取为very_secret_password(文件内容不会改变),very_secret_password将像往常一样被路由器服务加密到物理文件中。您可以在占位符中使用任何配置键,甚至是环境变量。
[jfmd] [INFO] [60ebe5752c965a8d] [database_bearer.]go:84] [main] -连接到(db config: {postgresql user='artifactory' password='***' dbname=artifactory host=127.0.0.1 port=5432 sslmode=disable}) [database]
2020-06-15T07:25:47.214Z [jfmd] [PANIC] [60ebe5752c965a8d] [database_bearer。]go:68] [main] -无法初始化数据库(db config: {postgresql user='artifactory' password='***' dbname=artifactory host=127.0.0.1 port=5432 sslmode=disable}):连接数据库错误
.init m.si-fil.com/metadata/services/common/db。(* databaseBearer)
/ src / m.si-fil.com/metadata/services/common/db/database_bearer.go: 114
m.si-fil.com/metadata/services/common/db.NewDatabaseBearer
/ src / m.si-fil.com/metadata/services/common/db/database_bearer.go: 66
main.main / src / m.si-fil.com/metadata/metadata.go: 38
runtime.main
/ src /运行/ proc.go: 203
runtime.goexit
/ src /运行/ asm_amd64.s: 1373
例程1[运行]:
运行/调试。堆栈(0x38, 0xc000160300, 0xc00032c200)
/ src /运行/调试/堆栈。: 24 + 0 x9d
m.si-fil.com/jfrog-go-commons/pkg/log.(*standardLogger).Panicfc(0xc000554ac0, 0x16058a0, 0xc0004d9bf0, 0x1390d88, 0x32, 0xc00032c200, 0x2, 0x2)
/ src / m.si-fil.com/go-commons/pkg/log/standard_logger.go: 42 + 0 x6a
m.si-fil.com/metadata/services/common/db.NewDatabaseBearer(0x16058a0, 0xc0004d9bf0, 0x16064e0, 0xc000090b90, 0x160a760, 0xc0004e5810, 0x15fd860, 0xc0000bf2e8, 0x15e0aa0, 0xc000554a90,…)
x2d4 / src / m.si-fil.com/metadata/services/common/db/database_bearer.go: 68 + 0
main.main ()
/ src / m.si-fil.com/metadata/metadata.go: 38 + 0 x5b7
(数据库)
出现这种情况是因为连接到PostgreSQL数据库的密码包含反斜杠字符,无法解析。这里有一些可能的解决方案:
- 在不删除密码中的反斜杠字符的情况下创建新密码(注意:此更改也必须在DB端进行)。
- 使用编码字符(而不是“”)提供密码。
- 与上述问题#2的解决方法类似,将Go连接字符串显式地提供给Metadata服务,该服务位于YAML配置文件中。
- 修改JDBC URL如下:
url: jdbc::状态"置疑" / / <你的数据库- dns >: <口>;都= < instan-name >; sendStringParametersAsUnicode = false;数据库名= <数据库名称>
例如:url: jdbc::状态"置疑" / / vtcFxzh@myartifactorydb: 1385;都= ARTIFACTORY; sendStringParametersAsUnicode = false;数据库名= ARTIFACTORY
这是JDBC的另一个版本,它不包含反斜杠,将被元数据服务接受。
- 另一种选择是单独向元数据服务提供MSSQL Go连接字符串(如这里的示例中指定的那样)。
如果您遇到任何没有在这里讨论的问题,请向Jfrog支持部门开一张票,我们将进一步调查。
发布日期:2020年12月28日
最后更新:2020年5月31日
关键词:元数据,数据库
