使用最新的JFrog产品?hth华体会最新官方网站
JFrog平台用户指南


跳到元数据的末尾
进入元数据的开始

概述

本页面提供用户遇到的常见问题的解决方法。

配置文件夹

在一些情况下,解决方案需要访问Xray内部数据和配置文件。这些文件的位置可以通过运行/ x光信息。

例如:

./xray信息服务器端口:8000 docker挂载文件夹:/home/vagrant/.jfrog/xray
页面内容

x射线不是索引工件

导致 RabbitMQ消息代理可能有问题
决议

检查RabbitMQ事件、索引或持久队列中的消息。你可以通过RabbitMQ控制台访问队列:http://localhost:15672/#/queues

如果您无法访问RabbitMQ界面,您可以尝试使用SSH -L15672:127.0.0.1:15672创建一个SSH隧道root@<机器ip >

导致 x射线已达到配置的磁盘使用限制(默认为80%)
决议 的值可以增加磁盘使用限制maxDiskDataUsage在x光的xray_config.yaml配置文件

x射线无法与Artifactory通信

导致 x射线未配置为不安全模式
决议

中设置以下参数,启用不安全模式x光的xray_config.yaml配置文件

sslInsecure:真

Xray不加载web UI,也不与REST API交互

导致 通常,这可能是由于一个或多个Xray的微服务没有启动
决议

使用Xray sh脚本检查微服务的状态,并确认所有的微服务都已完全启动,例如:

./xray.sh所有状态

或者Docker:

/ xray.sh ps。

Xray的RabbitMQ队列中有大量的消息

导致

一个正常工作的Xray系统的RabbitMQ队列的计数应该是相对水平的(接近0),这将表示并提供最好的性能和最快的结果。

大量的消息云可能发生是由于:

1.一个x射线服务/组件的工作速度不够快,无法处理它的队列

2.在某个组件上发生了一些错误/意外行为,根据相应的RabbitMQ队列搜索日志将提供深入了解


决议

1.临时增加负责适当队列(例如分析)的工作人员的数量,或为机器分配更多的资源;2022世界杯阿根廷预选赛赛程RAM和cpu用于更快的处理,SSD用于更快的磁盘I/O。

2.搜索适当的日志文件(例如x射线-analysis.log),寻找任何[error]或“Caused by”消息作为原因。

x射线正在使用大量的空间,并可能停止索引

导致

这可能是由于其中之一(或两者的结合):

1.$XRAY_DATA位置没有正确配置-因此阻止x射线磁盘采样器检查磁盘空间可用性的正确路径

2.允许的磁盘利用率设置过高

3.应该删除的临时文件(在$XRAY_HOME/data/data/下)正在消耗大量的空间

4.*主要是适用于大规模场景:其他数据库(RabbitMQ/PostgreSQL/MongoDB)占用空间较大


决议

1.在事件组件上启用调试日志记录,以查看检查的路径,期望看到一个日志条目说明:"数据文件夹<位置>,已使用:<%>,已配置阈值<%>。通过改变xrayDataFolder根据xray_config.yaml文件到正确的位置。

2.xray_config.yamlmaxDiskDataUsage标志到一个较低的值。在大规模环境中,特别是在处理大型文件时,将消耗更多的空间(临时)以允许递归索引过程完成。

3.Xray版本1.9在处理由于意外错误(例如与文件损坏有关的错误)导致索引失败的情况方面有了显著改进,并将自动删除这些错误。

也可以检查RabbitMQ的重试队列内容(获取消息)来检查消息并将它们的位置关联到xray_indexer.log*文件下。这将为重试操作提供洞察。

4.配置RabbitMQ数据库(mnesia)和$XRAY_HOME (两者应位于同一坐垫下)到一个大的挂载(通常是1-2TB)

/etc/rabbitmq/rabbitmq-env.conf(默认没有创建):

rabbitmq RABBITMQ_MNESIA_BASE = / home / / mnesia

从RabbitMQ & $XRAY_HOME中分离Mongo和PostgreSQL(可以和/或应该在同一个挂载下配对,但要分开):

Postgres:

  • 检查:Postgresql主数据文件夹的位置可以使用安装程序进行配置

如果要在安装完成后进行移动,是可以跟随的本指南-确保PostgreSQL已停止

蒙戈:

  • 停止Mongo(最好使用Xray .sh stop all命令停止所有x射线服务)
  • 编辑/etc/mongodb.conf,改变
    dbpath = / var / lib / mongo
    走你自己选择的路。

  • 复制你的mongo数据文件夹到一个新位置-确保权限设置为mongod用户(cp命令的-a标志应该负责保留权限)
    Cp -ra /var/lib/mongo /home/myuser/data/mongo

在系统故障事件或磁盘空间耗尽后,x射线无法启动

导致

如果RabbitMQ没有成功启动(使用上面故障排除中的命令),可能是这个原因在意外的系统状态发生后,RabbitMQ遇到数据损坏,导致其消息和/或队列存储丢失完整性。

决议
  • 请注意,这可能会导致队列消息丢失——因此一些已经由Xray的微服务处理的消息将会丢失。与持久化到PostgreSQL(影响图存储和构建的地方)的索引文件相关的数据不会受到影响。
检查以下RabbitMQ文件诊断原因:

/var/log/rabbitmq/startup_log

/var/log/rabbitmq/startup_err

这些日志文件在诊断RabbitMQ相关问题时特别有用。

  • 典型的命令包括美元的头美元的尾巴将大大有助于排除这些故障。
下面是指示a的常见错误bad_match错误(摘录):


BOOT FAILED ===========错误描述:{could_not_start,rabbit, {{badmatch, {Error, {{badmatch, {Error, {not_a_dets_file, "/var/lib/rabbitmq/mnesia/rabbit@/recovery.dets"}}},…


在这种情况下,删除下面路径下的RabbitMQ队列相关文件会有所帮助:

/var/lib/rabbitmq/mnesia/ <用户名> @ < id > / recovery.dets

然后尝试重新启动Xray的微服务,使用:

./xray.sh重启所有


  • 有时候,仅仅重启RabbitMQ就足够了(比如使用$ service RabbitMQ -server restart)

如果这没有帮助的话,进行去除队列消息存储董事:


/var/lib/rabbitmq/mnesia/ <用户名> @ < id > /msg_store_transient
/var/lib/rabbitmq/mnesia/ <用户名> @ < id > / msg_store_persistent
/var/lib/rabbitmq/mnesia/ <用户名> @ < id > /队列

再次,重启Xray的微服务,并使用web UI访问Xray。

x射线不能发送电子邮件通知

导致 x射线未配置为在不安全模式下与电子邮件服务器一起工作
决议

启用不安全模式中的以下参数x光的xray_config.yaml配置文件

sslInsecure真正的

x射线在其日志文件中没有提供足够的信息

导致 默认情况下,Xray配置为INFO级日志记录。
决议

对于要分析的每个日志文件,将日志级别设置为DEBUG。每个x射线服务的日志级别设置在下面的对应配置文件中/var/opt/jfrog/xray/data/config(用于Linux安装)。例如,在分析器服务调试级别中设置analysis_log4go_config.xml,而索引器服务调试级别设置为indexer_log4go_config.xml所有其他x射线服务也是如此。

x射线数据库迁移失败,需要重试

导致

升级完成后,Xray正在进行迁移。当迁移开始时,它会创建一个锁定机制,以便在执行迁移时阻止对数据库的外部操作。

如果迁移失败,锁将保留,锁定x射线,但可以重试,并在下次运行时成功。

决议

快速总结一下我们将要采取的步骤:

1.检查迁移失败的原因和原因。这是可选的,尽管不是强制性的,但对未来的避税很有用。

2.删除锁,以便重新尝试迁移。


以下是需要采取的步骤:

1.停止所有x射线服务:

Non-Docker

$ ./xray.sh停止所有

码头工人:

$ ./xray.sh stop


2.仅启动MongoDB和PostgreSQL:

Non-Docker:

启动postgresql-9.5

$ service mongod start

码头工人:

$ docker start xray_mongodb_1

$ docker start xray_postgres_1


3.执行操作MongoDB的一面:

a.连接MongoDB:

Non-Docker:

$ mongo -u x射线-p password——authenticationDatabase x射线

码头工人:

$ docker exec -它xray_mongodb_1 bash

在Docker bash shell中连接到MongoDB:

$ mongo -u x射线-p password——authenticationDatabase x射线


b.切换到x射线DB:

$ use x射线

c找到当前DB迁移的状态,包括失败的迁移(对理解DB模式迁移版本很重要):

美元db.db_migrations_running.find ({}) .pretty ()

e.将输出复制到一边以供研究:

美元db.db_migrations.find ({}) .sort({“版本”:1}).limit (1)


输出的示例(对4这样做。分析步骤如下):

{"_id": ObjectId("5a4bd9be95e701000100c37b"), "version": NumberLong(27)}

*上面的行将告诉我们正在运行的迁移的ID


f。使用以下命令移除所有迁移锁:

美元db.db_migrations_running.deleteMany ({})


在这一点上,你可以跳到步骤5。


4.用于分析和接触时JFrog支持时,需要收集以下信息:

数据库只有状态信息:

MongoDB。,复制两个命令的输出(在上面的步骤3中提供):

美元的。db.db_migrations_running.find ({}) .pretty ()

b。美元db.db_migrations.find ({}) .sort({“版本”:1}).limit (1)

b。PostgreSQL,收集以下信息PostgreSQL数据库:

连接到PostgreSQL数据库:

Non-Docker:

$ PSQL xraydb x射线

码头工人:

$ docker exec -it xray_postgres_1 /bin/bash

$ PSQL xraydb x射线


*如果/当提示输入密码时,输入x光

xraydb是数据库的名称,x光是用户名


    1. 运行以下查询(注意使用';'最后,如果没有它,它将无法执行):

$ SELECT * FROM schema_migrations;

*将输出复制到一边


b.输入:

美元\问


c.迁移时间段的Xray Services日志:

xray_server.log

xray_persist.log

xray_event.log


5.重新启动所有x射线服务。这将触发迁移重新运行。



  • 没有标签