Container Diagnostic Collection

  • Last update: 2026-10-19
  • Overview

    Version

    FineOps Version
    Functional Change
    V2.39.0/

    Function Introduction

    When FineReport, FineBI, FineDataLink, or FineBI engine-related components fail to start, restart repeatedly, or fail health checks, you (the admin) usually need to collect application logs, container logs, Docker events, and thread dumps separately. This requires logging in to nodes, switching between entry points, and aligning timelines manually, which slows troubleshooting and may miss key evidence. Diagnostic Collection collects, aligns, and packages these materials in one operation.

    This function is recommended in the following scenarios:

    1. A container fails to start or exits immediately after startup, and you need to locate startup errors.

    2. A container restarts repeatedly, and you need to align Docker events with the application log timeline.

    3. Health checks keep failing (in the unhealthy status), and you need thread dumps to determine whether the application is stuck.

    4. You need to submit complete on-site diagnostic materials to technical support or the FanRuan R&D team.

    iconNote:
    This function only exports diagnostic materials and does not generate diagnostic conclusions automatically. For routine performance inspections, use Health Inspection or Deep Inspection.

    Prerequisites

    Before starting diagnostic collection, make sure that the following requirements have been met.

    Check Item
    Requirement
    Project deployment typeFineOps-deployed project
    Platform versionV2.39.0 and later versions
    Target componentFineReport, FineDataLink, FineBI - Application Node, Engine - Metadata Node, or Engine - Calculation Node
    Node statusOPS Agent on the host where the target container resides is running and can communicate with FineOps.
    Account permissionThe account has the operation permission for Component Management of the project.

    Collecting Diagnostics

    This section describes how to start diagnostic collection from Component Management and obtain a diagnostic package that can be submitted to R&D.

    Accessing the Collection Entry

    Perform the following operations to locate the Diagnostic Collection button:

    1. Log in to FineOps and select the target O&M project. Choose Maintenance > Component Management.

    2. Locate the target container in the container list of the component.

    3. Click the expand arrow on the far right of the Operation column for the container, and select Diagnostic Collection from the drop-down menu.

    iconNote:

    The drop-down menu is displayed only for component containers that support diagnostic collection. The entry is still available when the container status is not running.

    Setting the Time Window and Starting Collection

    1. In the Diagnostic Collection pop-up window, use the Start Time control to select a time point before the failure occurred, for example, 2026-10-19 13:53:05.

    • After you select the start time, the system collects data within one hour after the start time. If the duration is less than one hour, data is collected until the current time.

    • Set the start time 5 to 10 minutes before the failure time to include pre-startup logs.

    • A single task covers at most 60 minutes. For longer issues, run collection multiple times.

    2. Check the Latest Container Startup Time shown in the pop-up window to determine whether the selected time window covers the current startup process.

    3. Click Start Collection.

    Downloading and Verifying the Diagnostic Package

    1. Wait until the collection task is complete. The browser automatically downloads a single ZIP file. The file name format is IP address_Container name_Export time.zip, for example, 192.168.101.91_fanruan240727164101_bi7-web_20260826112424.zip.

    2. Decompress the package, open manifest.json, and check whether the status of each material in artifacts is SUCCESS.

    3. If any item is not SUCCESS, troubleshoot based on the reason field and the "Troubleshooting" section. Adjust the time window and collect diagnostics again if needed.

    Diagnostic Package

    After the collection task is complete, the browser automatically downloads a single ZIP file.

    Package Content

    Files are stored at the root level and are not nested in directories or further compressed. The following table describes each file, its source, and its purpose.

    File 
    Content and Purpose
    fanruan.log

    It is the application service log of the fr, bi-web, or fdl container. Logs are cropped by time window and merged with rotated files. This file is not generated for FineBI engine-related components.

    polars.logIt is the application log of the bi-engine-master or bi-engine-worker container, which is collected from Engine directory/logs. The default path is /data/polars/logs.
    catalina.outIt is the Tomcat middleware log, which is used to check errors during container startup and application container errors.
    server.logIt is the non-Tomcat middleware log, such as the TongWeb, BES, or InfoRSuite log. Only one of server.log and catalina.out is generated.
    docker.logIt contains the container's standard output (stdout) and standard error (stderr) logs read through the log API of Docker Engine, used to supplement startup script output and exceptions that are not written to application logs.
    events.jsonIt records Docker events of the container in the time window, such as start, stop, die, restart, health_status, oom, and kill. If no event exists, the content is [].
    thread-dump-yyyyMMdd-HHmmss.txtIt records thread dumps, including up to three historical automatic dumps and one real-time dump.
    manifest.jsonIt records task metadata and collection status of each material, including the taskId, projectId, containerId, startTime, endTime, componentType, and artifacts list.

    Troubleshooting

    After decompressing the diagnostic package, open manifest.json and check whether the status of each material in artifacts is SUCCESS.

    If any item is not SUCCESS, troubleshoot based on the reason field. Adjust the time window and collect diagnostics again if needed.

    1. Does CONTAINER_NOT_RUNNING for the real-time thread dump in manifest.json mean that collection failed?

    No. This status means that the target container was not running during collection, so a new thread dump could not be generated. In this case, focus on historical automatic thread dumps, docker.log, and events.json. If a real-time thread dump is required, collect diagnostics again when the container is running.

    2. Why is fanruan.log or catalina.out missing from the ZIP file?

    Common causes include the following: the candidate file does not exist in the container (for example, when the log directory has been changed); the file exists, but no timestamp can be recognized, and the collection item returns APP_LOG_TIMESTAMP_UNRECOGNIZED; or no log records exist in the selected time window. Check the reason field in manifest.json first, and then verify the container log directory and the selected time window.

    3. Does [] in events.json mean that collection failed?

    No. An empty array means that no persisted Docker events exist for the container in the selected time window. If the event occurred recently, wait for a 60-second reporting cycle and collect diagnostics again. If the status is PERSISTED_EVENT_UNAVAILABLE, the configuration database query failed. Check the connectivity between FineOps and the configuration database.

    4. What should I do if docker.log is missing or the status is DOCKER_LOG_UNAVAILABLE?

    This status means that the system failed to call the log API of Docker Engine. Check whether the Docker service on the target node and OPS Agent are running. After recovery, collect diagnostics again.

    5. Why are there fewer thread dump files than expected?

    Only the latest three automatic thread dumps are retained, and only dumps within the selected time window are exported. In addition, if the jcmd command used to collect thread dumps times out after 30 seconds, exits with a non-zero code, or outputs more than 64 MiB, the system does not include truncated content in the package and records only the failure in manifest.json. 

    6. Can the system collect the wrong thread dump when multiple Java processes exist in a container?

    No. Both real-time and automatic collection first check PID 1. If PID 1 is a Java process, it is used directly. If PID 1 is not a Java process, FineOps collects the thread dump only when it can identify exactly one Java process in the container. Collection is performed through the Docker API in the PID namespace of the target container and is isolated from the host and other project containers.

    Attachment List


    Theme: Project Management
    • Helpful
    • Not helpful
    • Only read

    滑鼠選中內容,快速回饋問題

    滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

    不再提示

    10s後關閉

    Get
    Help
    Online Support
    Professional technical support is provided to quickly help you solve problems.
    Online support is available from 9:00-12:00 and 13:30-17:30 on weekdays.
    Page Feedback
    You can provide suggestions and feedback for the current web page.
    Pre-Sales Consultation
    Business Consultation
    Business: international@fanruan.com
    Support: support@fanruan.com
    Page Feedback
    *Problem Type
    Cannot be empty
    Problem Description
    0/1000
    Cannot be empty

    Submitted successfully

    Network busy