ARTIFACTORY -元数据服务故障排除
ARTIFACTORY -元数据服务故障排除
相关版本:这个信息与…有关Artifactory版本7.倍
写在去,元数据是microservice与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一起运行,你可能会遇到这个错误:
2020-03-19T18:26:17.366Z [jfmd] [PANIC] [4302998e04479677] [database_持有人。]走:51 ] [main ] – Could not initialize database (db config: {oracle ARTIFACTORY_TEST/***@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=pepldr00237.corp.pep.pvt)(PORT=60003))(CONNECT_DATA=(SERVER=DEDICATED)(SID=stm1d)))}): ORA-00000: DPI-1047: Cannot locate a 64-bit Oracle Client library: "The specified module could not be found". See https://oracle.github.io/odpi/doc/installation.html#windows for help
连接数据库出错。放弃
.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
(数据库)
这意味着有一个缺失Libaio库,该库需要与甲骨文DB.要解决此问题,您需要按照可用的说明安装它在这里.2.属性转换时出错Java数据库连接(JDBC)连接字符串到go样式的连接字符串。例如:
从系统读取配置错误。yaml: Type:, Url:: could not set db properties to application configuration: could not parse jdbc Url 's connect part: ldap://uoid.rsv。se: 7389 / ZV3T001 cn = OracleContext, dc = rsv, dc =
Goroutine 1[运行]:
这里的连接字符串如下:
jdbc: oracle:薄:@ldap: / / mydomain.nex。答:7389 / ZV3T001 cn = OracleContext, dc = rsv, dc =
元数据尝试将JDBC连接字符串转换为Go连接字符串,但失败。
的解决方案是进去你的吗system.yaml而且,在metadata.database部分,添加Go连接字符串走:前缀,然后添加go-style连接字符串而不是JDBC连接字符串。有关如何为Oracle构建连接字符串的详细信息,请参见本文档在这里.例如,如果连接字符串是oracle: / /用户:passw@service_name,则需要将该值设置为: oracle: / /用户:passw@service_name.ֿ
3.这是另一种类型的错误:
2020-03-22T18:25:10.663Z [jfmd] [ERROR] [4104ec4b9d67964e] [database_载体。]走:51 ] [main ] – Could not initialize database (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: certificate signed by unknown authority连接数据库出错。放弃
.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' password='${共享。数据库。密码}' dbname=artifactory host=mydatabase.net port=5432 sslmode=disable
当读取Go连接字符串时,$ {shared.database.password}将被解读为very_secret_password(文件内容不会改变)和very_secret_password将像往常一样由路由器服务加密在物理文件中。您可以在占位符中使用任何配置键,甚至环境变量。
5.MDS (Master Data Services)服务失败,报错如下:
2020-06-15t7:25:47. 196z [jfmd] [INFO] [60ebe5752c965a8d] [database_holder .]走:84 ] [main ] – Connecting to (db config: {postgresql user='artifactory' password='***' dbname=artifactory host=127.0.0.1 port=5432 sslmode=disable}) [database]
2020-06-15t7:25:47. 214z [jfmd] [PANIC] [60ebe5752c965a8d] [database_载体。]走:68 ] [main ] – Could not initialize database (db config: {postgresql user='artifactory' password='***' dbname=artifactory host=127.0.0.1 port=5432 sslmode=disable}): error connecting to database
.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
Goroutine 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连接字符串显式地元数据服务,它在你的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日
关键词:元数据,数据库
