INNORIX
전송 빌더전송 파인더개발자리소스고객사
무료 시작하기
INNORIX

LET FILES
MOVE THEMSELVES

INNORIX는 모든 시스템과 환경에서 파일 이동과 자동화를 제공하는 엔터프라이즈 파일 인프라 기업입니다.
5,000개 이상의 기업 및 공공기관에서 사용하고 있습니다.

시작하기

  • 필요한 전송 만들기
  • 필요한 전송 찾기

주요 전송

  • 팀 업무 폴더 동기화
  • 고객에게 대용량 파일 전송
  • 여러 시스템 파일 탐색
  • FTP·SFTP·SCP·rsync 전환
  • 앱에 파일 전송 추가
  • 웹 업로드·다운로드 적용
  • AI·데이터 워크플로 구축
  • 모든 전송 둘러보기→

개발자

  • 개발자 센터
  • 구현 예제
  • API 빠른 시작
  • 개발자 가이드
  • API 레퍼런스
  • GitHub

리소스

  • 리소스 센터
  • 제품 가이드
  • 외부 서비스 연동
  • 배포 및 관리
  • 도움말 센터

고객사

  • 정부
  • 공공부문
  • 제조
  • 엔지니어링
  • 금융
  • 유통
  • IT/통신
  • 미디어
  • 의료
  • 교육

플랜

  • 가격 및 플랜

회사

INNORIX 소개

Exabyter를 찾고 계신가요?

이제 INNORIX Platform에 통합되었습니다

기타 INNORIX 제품

Al.bert — 스마트 교통 AI

글로벌 오피스

  • 미국 뉴욕
  • 대한민국 서울
  • 베트남 호찌민
  • 오피스 위치 보기→

(C)2026 INNORIX. All rights reserved.

  • 보안
  • 상태
  • 이용약관
  • 개인정보 처리방침
  • 쿠키 정책
  1. 개발자
  2. 개발자 가이드
  3. Grafana에서 파일 전송 상태 대시보드 만들기

Grafana에서 파일 전송 상태 대시보드 만들기

전송량, 진행률, 완료, 실패와 재시도 지표를 Grafana에서 확인합니다.

IT 엔지니어개발자
배포 및 관리
Exabyter
  • 개발자 가이드
  • AI 모델 파일을 여러 엣지 장비에 배포하기
  • Azure Blob에서 사내 서버로 파일 전달하기
  • CI/CD 빌드 결과물을 여러 서버에 배포하기
  • Datadog으로 파일 전송 실패와 복구 알림 받기
  • FTP 배치 작업을 관리형 파일 흐름으로 전환하기
  • Google Cloud Storage에서 Amazon S3로 직접 전송하기
  • Grafana에서 파일 전송 상태 대시보드 만들기
  • Kubernetes에서 오브젝트 스토리지로 결과 파일 보내기
  • Git으로 관리하기 어려운 파일을 자동 전달하기
  • 수신 파일을 Microsoft Defender로 검사하고 후속 처리하기
  • rsync 작업을 관리형 파일 흐름으로 전환하기

시작하기#

기본 개념#

여러 파일 전송 Flow의 실행 상태를 하나의 대시보드에서 확인하기

파일 전송 환경에서는 하나의 Flow만 실행되는 것이 아니라, 서버 간 전송, 클라우드 스토리지 이동, 자동 수집과 배포 등 여러 작업이 동시에 실행될 수 있습니다.

각 작업의 결과는 Runs에서 개별적으로 확인할 수 있지만, 전체 운영 현황을 확인하려면 여러 실행 결과를 하나씩 비교해야 할 수 있습니다.

Grafana 대시보드를 활용하면 전송 작업에서 발생하는 주요 상태와 지표를 시간 흐름에 따라 함께 확인할 수 있습니다.

┌──────────────────────────────────────────────────────┐
│                   File Transfer                     │
│                                                      │
│  Flow A ──┐                                         │
│  Flow B ──┼──▶ Run / Transfer Metrics               │
│  Flow C ──┘                 │                        │
└─────────────────────────────┼────────────────────────┘
                              │
                              ▼
                     Monitoring Data
                              │
                              ▼
┌──────────────────────────────────────────────────────┐
│                       Grafana                        │
│                                                      │
│  Total Transfer │ Progress │ Completed │ Failed     │
│                                                      │
│  Retry Count    │ Transfer Trend │ Flow Status      │
└──────────────────────────────────────────────────────┘

grafana-file-transfer-dashboard_1

이렇게 하면 개별 전송 작업을 따로 확인하는 대신 전체 전송 현황 → 특정 Flow 상태 → 개별 Run 확인으로 이어지는 운영 흐름을 구성할 수 있습니다.

대시보드 구성#

전송량과 상태 지표를 목적에 맞게 나누어 확인하기

Grafana 대시보드에서는 모든 정보를 하나의 패널에 표시하기보다, 운영 중 확인해야 하는 항목을 역할에 따라 나누어 구성할 수 있습니다.

예를 들어 현재 전송 상태는 상단에서 빠르게 확인하고, 시간에 따른 전송량 변화와 실패 추이는 별도의 패널에서 확인할 수 있습니다.

대시보드의 구성 예시는 다음과 같습니다.

대시보드 영역 확인 지표 활용
현재 상태 진행 중인 Run, 전체 진행률 현재 전송 상황 확인
전송량 파일 수, 전체 전송 용량 처리 규모와 변화 확인
완료 현황 완료된 Run 수 정상 처리 결과 확인
실패 현황 실패한 Run 수 문제 발생 여부 확인
재시도 Retry 횟수와 상태 복구 작업 확인
추이 분석 시간별 전송량과 상태 변화 반복 패턴 확인
Flow 비교 Flow별 성공·실패 결과 특정 작업 상태 비교

grafana-file-transfer-dashboard_2

이처럼 현재 상태와 누적 결과, 시간별 변화를 구분하면 운영자가 확인하려는 상황에 따라 필요한 정보를 빠르게 찾을 수 있습니다.

운영 흐름#

대시보드에서 전체 상태를 확인한 뒤 필요한 Run으로 이동하기

Grafana는 전체 전송 환경의 상태를 빠르게 확인하는 화면으로 활용하고, 문제가 발견된 경우에는 해당 Flow와 Run의 상세 정보로 이동해 실제 전송 결과를 확인할 수 있습니다.

전체 흐름은 다음과 같이 구성할 수 있습니다.

Grafana Dashboard
        │
        ├── Transfer Volume
        │
        ├── Completed
        │
        ├── Failed
        │
        └── Retrying
                │
                ▼
          Flow Identification
                │
                ▼
             Run Details
                │
                ▼
        Source / Target Check

예를 들어 대시보드에서 특정 시간대에 실패 건수가 증가한 것을 확인하면, 해당 Flow를 찾고 Run 상세 정보에서 Source와 Target, 파일별 처리 결과를 확인할 수 있습니다.

이렇게 하면 전체 현황 확인은 Grafana에서, 실제 파일 전송 결과와 원인 확인은 Run 상세 화면에서 이어서 관리할 수 있습니다.

IT 엔지니어#

지표 연결#

파일 전송 실행 결과를 모니터링 데이터로 연결하기

먼저 파일 전송 Flow에서 확인할 수 있는 실행 정보와 상태 변화를 모니터링 지표로 전달합니다.

전송량과 파일 수뿐만 아니라 완료, 실패, 재시도와 같은 상태 변화를 함께 연결하면 단순한 사용량 확인을 넘어 파일 전송 환경의 운영 상태를 함께 확인할 수 있습니다.

Transfer Flow
      │
      ▼
     Run
      │
      ├── Total Files
      ├── Total Size
      ├── Progress
      ├── Status
      └── Retry
              │
              ▼
        Metrics / Events
              │
              ▼
           Grafana

grafana-file-transfer-dashboard_3

전송 환경에서는 다음과 같은 지표를 중심으로 구성할 수 있습니다.

지표 확인 내용
Transfer Volume 일정 기간 동안 처리된 전체 전송량
File Count 전송된 파일 수
Progress 현재 실행 중인 작업의 진행률
Completed 정상적으로 완료된 작업 수
Failed 실패하거나 추가 확인이 필요한 작업 수
Retrying 재시도 중인 작업과 횟수
Duration 전송 작업에 걸린 시간

이렇게 구성하면 파일 전송의 처리 규모와 현재 상태, 반복되는 실패 여부를 서로 다른 지표로 분리해 확인할 수 있습니다.

화면 설계#

현재 상태와 시간별 변화를 구분해 대시보드 구성하기

대시보드는 모든 지표를 동일한 방식으로 표시하기보다, 정보의 성격에 따라 적합한 화면으로 나누어 구성할 수 있습니다.

예를 들어 현재 완료·실패 건수는 숫자 중심으로 확인하고, 시간에 따른 전송량 변화는 추이 그래프로 확인할 수 있습니다.

┌───────────────────────────────────────────────────┐
│               FILE TRANSFER OVERVIEW              │
├─────────────┬─────────────┬──────────┬────────────┤
│ In Progress │ Completed   │ Failed   │ Retrying   │
│     12      │    248      │    3     │     2      │
├───────────────────────────────────────────────────┤
│                                                   │
│              Transfer Volume Trend                │
│                                                   │
│        ╱╲        ╱╲                               │
│   ╱───╱  ╲──╱╲──╱  ╲────                          │
│                                                   │
├───────────────────────────┬───────────────────────┤
│ Flow Status               │ Retry / Failure Trend │
│                           │                       │
│ Flow A  Completed         │ ↑ Failure             │
│ Flow B  Running           │ → Retry               │
│ Flow C  Failed            │ ↓ Recovery            │
└───────────────────────────┴───────────────────────┘

grafana-file-transfer-dashboard_4

예를 들어 다음과 같이 나눌 수 있습니다.

  • 상단 요약 영역: 현재 진행, 완료, 실패, 재시도 상태

  • 전송량 영역: 시간별 파일 수와 전송 용량 변화

  • Flow 상태 영역: 작업별 현재 실행 결과

  • 실패 추이 영역: 일정 기간 동안 발생한 실패 변화

  • 재시도 영역: 복구 작업과 Retry 결과

이처럼 대시보드의 역할을 나누면 한 화면에서 모든 세부 정보를 읽는 대신 현재 상황을 먼저 파악한 뒤 필요한 지표를 중심으로 상세 상태를 확인할 수 있습니다.

전송량 분석#

시간대와 Flow별 전송량을 비교해 처리 흐름 확인하기

파일 전송량은 단순히 전체 용량만 확인하는 것보다 시간대와 Flow별로 나누어 보면 실제 처리 패턴을 확인하는 데 도움이 됩니다.

예를 들어 매일 새벽에 백업 파일이 집중적으로 전송되거나, 특정 업무 시간에 대량 파일 전송이 반복되는 흐름을 확인할 수 있습니다.

                    Transfer Volume
                           │
        ┌──────────────────┼──────────────────┐
        ▼                  ▼                  ▼
     Time Range         Flow Name          Target
        │                  │                  │
        ▼                  ▼                  ▼
    Hour / Day       Backup Flow         Amazon S3
                     Report Flow         File Server
                     Media Flow          Cloud Storage

grafana-file-transfer-dashboard_5

전송량을 분석할 때는 다음 기준을 함께 활용할 수 있습니다.

분류 기준 확인 목적
시간 특정 시간대의 전송 집중 여부 확인
Flow 작업별 처리량 비교
Source 파일 생성 환경별 전송 규모 확인
Target 스토리지별 저장량 확인
파일 수 다수의 소형 파일 처리량 확인
전체 용량 대용량 파일 전송 규모 확인

이를 통해 전체 전송량만 확인하는 대신 어떤 작업이 언제, 어느 환경으로 많은 파일을 전송하는지 구분해 확인할 수 있습니다.

상태 추적#

완료·실패·재시도 결과를 시간 흐름에 따라 확인하기

전송량이 정상적으로 유지되더라도 특정 Flow에서 실패가 반복될 수 있습니다.

따라서 처리 규모와 실행 결과를 함께 확인하면, 단순히 얼마나 많은 파일이 이동했는지뿐 아니라 실제 전송 환경이 안정적으로 동작하고 있는지도 함께 확인할 수 있습니다.

                    Run Status
                        │
       ┌────────────────┼────────────────┐
       ▼                ▼                ▼
   Completed          Failed          Retrying
       │                │                │
       ▼                ▼                ▼
   Success Count    Failure Count    Retry Count
       │                │                │
       └────────────────┼────────────────┘
                        ▼
                  Grafana Dashboard
                        │
                        ▼
                Status Trend Analysis

grafana-file-transfer-dashboard_6

예를 들어 실패 건수와 재시도 건수가 동시에 증가하는 경우에는 네트워크나 Source·Target 환경의 상태를 추가로 확인할 수 있습니다.

반대로 실패 이후 재시도 작업이 완료 상태로 전환되면, 일시적인 문제가 발생했지만 정상적으로 복구되었는지 확인할 수 있습니다.

이처럼 실패 건수만 따로 보는 것이 아니라 실패 → 재시도 → 완료로 이어지는 상태 변화를 함께 확인할 수 있습니다.

Flow 비교#

여러 전송 작업의 상태를 같은 기준으로 비교하기

하나의 Grafana 대시보드에서 여러 Flow를 함께 확인하면 특정 작업의 상태를 다른 전송 작업과 비교할 수 있습니다.

예를 들어 대부분의 Flow가 정상적으로 완료되고 있지만 특정 Target으로 전송하는 작업에서만 실패가 반복된다면 해당 환경을 중심으로 추가 확인할 수 있습니다.

┌──────────────────────────────────────────────┐
│                 Flow Status                  │
├────────────────┬────────────┬───────────────┤
│ Flow           │ Transfer   │ Current State │
├────────────────┼────────────┼───────────────┤
│ Backup         │ 1.2 TB     │ Completed     │
│ Daily Report   │ 48 GB      │ Completed     │
│ Media Upload   │ 860 GB     │ Retrying      │
│ Archive        │ 2.4 TB     │ Failed        │
└────────────────┴────────────┴───────────────┘

grafana-file-transfer-dashboard_7

Flow별 상태를 비교할 때는 다음 항목을 기준으로 확인할 수 있습니다.

확인 기준 활용
전송량 특정 작업의 처리 규모 비교
완료율 정상 처리 상태 확인
실패 수 반복적인 문제 발생 여부 확인
재시도 수 자동 복구 작업 확인
실행 시간 예상보다 오래 걸리는 작업 확인
Target 특정 저장 환경의 문제 여부 확인

이를 통해 특정 Run을 직접 찾기 전에 전체 Flow 중 추가 확인이 필요한 작업을 먼저 식별할 수 있습니다.

문제 확인#

대시보드에서 이상 상태를 찾고 Run 상세 정보로 이어가기

Grafana 대시보드에서 실패 증가나 전송량 변화와 같은 이상 상태가 확인되면, 해당 작업의 Flow와 Run 상세 정보를 통해 실제 전송 결과를 확인할 수 있습니다.

문제 확인 흐름은 상황에 따라 다음과 같이 이어집니다.

Dashboard Check
      │
      ▼
Metric Change
      │
      ├── Transfer Volume Increase
      │
      ├── Failed Count Increase
      │
      └── Retry Repeated
                │
                ▼
           Identify Flow
                │
                ▼
            Check Run
                │
         ┌──────┼──────┐
         ▼      ▼      ▼
      Source  Files   Target
         │      │      │
         └──────┼──────┘
                ▼
          Environment Check

grafana-file-transfer-dashboard_8

Run 상세 정보에서는 실제 파일 전송이 어느 구간에서 추가 확인이 필요한지 확인할 수 있습니다.

예를 들어 Source에서 파일을 읽지 못한 경우에는 파일 경로와 연결 상태를 확인하고, Target 저장에 실패한 경우에는 대상 스토리지의 연결과 접근 범위를 점검할 수 있습니다.

운영 관리#

전체 전송 현황과 개별 실행 결과를 연결해 운영하기

Grafana는 여러 파일 전송 작업의 전체 상태와 시간별 변화를 확인하는 화면으로 활용할 수 있습니다.

문제가 확인되면 해당 Flow와 Run의 상세 정보로 이동해 실제 처리 결과를 확인하고 필요한 경우 재시도를 진행할 수 있습니다.

전체 운영 흐름은 다음과 같이 구성할 수 있습니다.

┌─────────────────┐
│ Grafana         │
│ Dashboard       │
└────────┬────────┘
         │
         │ Overall Status
         ▼
┌─────────────────┐
│ Flow            │
│ Identification  │
└────────┬────────┘
         │
         ▼
┌─────────────────┐
│ Run Details     │
└────────┬────────┘
         │
    ┌────┴─────┐
    ▼          ▼
Normal       Issue
    │          │
    │          ▼
    │    Environment Check
    │          │
    │          ▼
    │        Retry
    │          │
    └──────────┘
         │
         ▼
   Updated Metrics
         │
         ▼
 Grafana Dashboard

grafana-file-transfer-dashboard_9

이 레시피를 적용하면 파일 전송 실행 → 전송량·진행률·상태 지표 수집 → Grafana 대시보드 구성 → Flow별 상태 비교 → 실패와 재시도 추이 확인 → Run 상세 확인 → 재실행 결과 반영까지 하나의 운영 흐름으로 구성할 수 있습니다.

이를 통해 개별 파일 전송 작업을 반복적으로 확인하는 대신, 전송량과 완료·실패·재시도 상태를 Grafana에서 종합적으로 확인하고 전체 파일 전송 환경의 변화와 문제 발생 흐름을 함께 관리할 수 있습니다.

개발자#

전송 이력을 조회·집계해 Grafana가 읽을 지표로 노출하기

전송 목록·이력 API를 기간·상태로 조회해 상태별 건수를 집계합니다. 이 지표를 Grafana의 JSON 계열 데이터소스로 노출합니다. 시작 전에 다음 항목을 준비합니다.

준비물 내용
INNORIX 인증 INNORIX_ACCESS_TOKEN (Authorization: Bearer)
조회 기간·상태 집계할 기간(startDate·endDate)과 상태 필터(statusFilter)
Grafana 데이터소스 JSON API·Infinity 등 HTTP JSON을 읽는 데이터소스
런타임 Python 3 + requests · Java 17+ · Node.js 18+ · .NET 8+

Python·Node.js는 REST를 직접 호출하는 최소 api() 헬퍼를 API 호출 레시피의 것을 재사용합니다. Java·C#은 번들 소스의 InnorixClient와 Json(C#은 J) 헬퍼를 사용합니다. 상태 코드(2=완료, 4=오류, 9=부분 완료 등)는 무결성 검증·중단 후 재개 레시피의 상태 표를 참고합니다.

전송 이력을 상태별로 집계#

기간·상태로 이력을 조회하고 커서로 전체를 순회하며 상태별 건수를 집계합니다. 결과를 Grafana가 읽을 JSON으로 반환합니다.

def transfer_metrics(start_date, end_date, limit=200):
    counts = {}   # status -> count
    cursor = None
    while True:
        params = {"startDate": start_date, "endDate": end_date, "limit": limit}
        if cursor:
            params["cursor"] = cursor
        page = api("GET", "/api/transfer-history", params=params) or {}

        for row in (page.get("data") or []):
            status = row.get("status")
            counts[status] = counts.get(status, 0) + 1

        cursor = (page.get("pagination") or {}).get("nextCursor")
        if not cursor:
            break

    # metric shape read by the Grafana JSON datasource
    return {
        "completed": counts.get(2, 0),
        "error": counts.get(4, 0),
        "partial": counts.get(9, 0),
        "total": sum(counts.values()),
    }


metrics = transfer_metrics("2026-09-01T00:00:00Z", "2026-09-07T23:59:59Z")
print(metrics)   # e.g. {"completed": 120, "error": 3, "partial": 1, "total": 124}
static Map<String, Integer> transferMetrics(InnorixClient client, String startDate,
        String endDate, int limit) {
    Map<Integer, Integer> counts = new HashMap<>();
    String cursor = null;
    do {
        Map<String, Object> params = Json.newObj("startDate", startDate, "endDate", endDate, "limit", limit);
        if (cursor != null) params.put("cursor", cursor);
        Map<String, Object> page = client.apiObj("GET", "/api/transfer-history", null, params);

        for (Object row : Json.arrOf(page, "data")) {
            Integer status = Json.intOrNull(Json.asObj(row), "status");
            counts.merge(status, 1, Integer::sum);
        }
        Map<String, Object> pg = Json.asObj(page.get("pagination"));
        cursor = pg == null ? null : Json.str(pg, "nextCursor");
    } while (cursor != null);

    int total = counts.values().stream().mapToInt(Integer::intValue).sum();
    return Map.of(
            "completed", counts.getOrDefault(2, 0),
            "error", counts.getOrDefault(4, 0),
            "partial", counts.getOrDefault(9, 0),
            "total", total);
}
async function transferMetrics(startDate, endDate, limit = 200) {
  const counts = {};
  let cursor = null;
  do {
    const params = { startDate, endDate, limit };
    if (cursor) params.cursor = cursor;
    const page = (await api("GET", "/api/transfer-history", null, params)) || {};

    for (const row of page.data || []) counts[row.status] = (counts[row.status] || 0) + 1;
    cursor = (page.pagination || {}).nextCursor;
  } while (cursor);

  const total = Object.values(counts).reduce((a, b) => a + b, 0);
  return {
    completed: counts[2] || 0,
    error: counts[4] || 0,
    partial: counts[9] || 0,
    total,
  };
}

const metrics = await transferMetrics("2026-09-01T00:00:00Z", "2026-09-07T23:59:59Z");
console.log(metrics);
static async Task<Dictionary<string, int>> TransferMetricsAsync(InnorixClient client,
    string startDate, string endDate, int limit = 200)
{
    var counts = new Dictionary<int, int>();
    string cursor = null;
    do
    {
        var pars = new Dictionary<string, object> { ["startDate"] = startDate, ["endDate"] = endDate, ["limit"] = limit };
        if (cursor != null) pars["cursor"] = cursor;
        JsonObject page = await client.ApiObjAsync("GET", "/api/transfer-history", null, pars);

        foreach (JsonNode row in J.ArrOf(page, "data"))
        {
            int? status = J.IntOrNull(row, "status");
            int key = status ?? -1;
            counts[key] = counts.GetValueOrDefault(key) + 1;
        }
        JsonObject pg = J.AsObj(page["pagination"]);
        cursor = pg == null ? null : J.Str(pg, "nextCursor");
    } while (cursor != null);

    int total = counts.Values.Sum();
    return new Dictionary<string, int>
    {
        ["completed"] = counts.GetValueOrDefault(2),
        ["error"] = counts.GetValueOrDefault(4),
        ["partial"] = counts.GetValueOrDefault(9),
        ["total"] = total,
    };
}

Grafana 연결 방식 INNORIX는 Grafana 전용 통합을 제공하지 않으므로, 위 지표를 Grafana가 읽을 수 있게 노출하는 방법을 선택합니다. 가장 간단한 방법은 이 함수를 작은 HTTP 엔드포인트로 감싸고 Grafana의 JSON API·Infinity 데이터소스로 조회하는 것입니다. 데이터소스·패널 구성은 Grafana 쪽 설정입니다.

커서 페이지네이션 /api/transfer-history는 pagination.nextCursor로 페이지를 넘깁니다. 대량 이력은 커서가 없어질 때까지 순회해 전체를 집계합니다. 실시간 진행 지표가 필요하면 GET /api/transfers(활성 목록, statusFilter)를 함께 조회합니다.

구현 결과#

이 레시피를 적용하면 다음 흐름으로 전송 지표를 Grafana에서 확인할 수 있습니다.

전송 이력·활성 목록 API 조회 (기간·상태·커서)
   ↓  상태별 집계 (완료·실패·부분)
지표 JSON 노출
   ↓  Grafana JSON 데이터소스가 조회
Grafana 대시보드 패널

전송 이력을 기간·상태로 집계해 지표로 노출하고, Grafana 데이터소스로 읽어 전송 건수·성공·실패 추이를 대시보드로 확인할 수 있습니다.

이전Google Cloud Storage에서 Amazon S3로 직접 전송하기다음Kubernetes에서 오브젝트 스토리지로 결과 파일 보내기

이 페이지에서

  • 시작하기
  • 기본 개념
  • 대시보드 구성
  • 운영 흐름
  • IT 엔지니어
  • 지표 연결
  • 화면 설계
  • 전송량 분석
  • 상태 추적
  • Flow 비교
  • 문제 확인
  • 운영 관리
  • 개발자
  • 전송 이력을 상태별로 집계
  • 구현 결과