웹훅 전달 수신

웹훅을 로컬에서 테스트하려면, URL 웹훅 프록시를 사용하여 IBM Storage Insights 의 웹훅을 컴퓨터로 전달할 수 있습니다. Postman, RequestBin,, smee.io 와 같은 타사 도구를 사용하여 웹훅 페이로드를 테스트할 수 있습니다. 이 작업은 smee.io 를 예로 들어 웹훅 프록시 URL 를 제공하고 웹훅을 전달합니다.

중요: 이 페이지에서 제공되는 예제 및 단계는 설명을 위한 것이며 모든 상황에서 정확한 워크플로우를 반영하지 않을 수 있습니다. 특정 유스 케이스의 경우 각 써드파티 도구의 공식 문서 또는 지원 자원을 참조하십시오.

웹훅 프록시 받기 URL

  1. 브라우저에서 https://smee.io/로 이동하십시오.

    smee.io 는 예제일 뿐입니다. 필요에 따라 써드파티 웹훅 테스트 도구를 사용할 수 있습니다.

  2. 새 채널 시작을 클릭하십시오.
  3. URL 의 전체 내용을 Webhook Proxy URL 아래에 복사합니다. 다음과 같은 설정 단계에서 이 URL 를 사용해야 합니다

웹훅 전달

  1. 아직 smee-client를 설치하지 않은 경우 터미널에서 다음 명령을 실행하십시오.
    npm install --global smee-client
  2. smee.io에서 전달된 웹훅을 수신하려면 터미널에서 다음 명령을 실행하십시오. 웹훅 프록시(WEBHOOK_PROXY_URL)를 앞서 언급한 웹훅 프록시 URL 로 대체합니다.
    smee --url WEBHOOK_PROXY_URL --path /webhook --port 3000
    

    WEBHOOK_PROXY_URL 가 웹훅 프록시이고 URL 가 웹훅 주소인 경우, 다음과 같은 출력이 표시되어야 합니다

    Forwarding WEBHOOK_PROXY_URL to http://127.0.0.1:3000/webhook
    Connected WEBHOOK_PROXY_URL
    
    참고: 경로는 /webhook 이고 포트는 3000입니다. 나중에 Webhook 전달을 처리하기 위해 코드를 작성할 때 이 값이 필요합니다.
  3. 웹훅을 테스트하는 동안 이를 계속 실행하십시오. 웹훅 전달을 중지하려면 Ctrl+C를 입력하십시오.

웹훅 작성

IBM Storage Insights에 웹훅을 만듭니다. URL 의 경우, 앞서 설명한 웹훅 프록시 URL 를 사용하십시오. 자세한 내용은 웹훅 만들기를 참조하세요.

웹훅 전달을 처리하기 위한 코드 작성

웹훅 전달을 처리하려면 다음 조치를 수행하는 코드를 작성해야 합니다.
  • 웹훅에 대한 요청을 수신하도록 서버를 초기화하십시오 URL
  • HTTP 의 헤더와 본문을 요청에서 읽습니다
  • 요청에 대한 응답으로 필요한 조치를 수행하십시오.

서버에서 실행할 수 있는 모든 프로그래밍 언어를 사용할 수 있습니다.

다음 예제는 웹훅 전달이 수신될 때 메시지를 인쇄합니다. 그러나 Slack 메시지 전송과 같은 다른 조치를 수행하도록 코드를 수정할 수 있습니다.

JavaScript 예제:

이 예제에서는 Node.js 와 Express 라이브러리를 사용하여 경로를 정의하고 HTTP 요청을 처리합니다. 이 예제를 실행하려면 컴퓨터에 Node.js 버전 12 이상과 npm 버전 6.12.0 이상이 설치되어 있어야 합니다.

설치 종속성

이 예제를 사용하려면 Node.js 프로젝트에 Express 라이브러리를 설치해야 합니다. 예를 들어,
npm install express

코드 작성

다음 컨텐츠를 사용하여 JavaScript 파일을 작성하십시오. 웹 후크가 등록된 이벤트 유형을 처리하도록 코드를 수정하십시오.
const express = require('express');
const app = express();
app.post('/webhook', express.json({
    type: 'application/json'
}), (request, response) => {
    response.status(202).send('Accepted');
    const data = request.body;
    const datastr = JSON.stringify(data)
    console.log(`handled event: ${datastr}`);
});
const port = 3000;
app.listen(port, () => {
    console.log(`Server is running on port ${port}`);
});

코드 테스트

웹훅을 테스트하기 위해 컴퓨터 또는 코드 페이스를 사용하여 로컬 서버 역할을 수행할 수 있습니다. 이러한 단계에 문제가 있는 경우 문제점 해결을 참조하십시오.

  1. 웹훅을 전달하는지 확인하십시오. 더 이상 웹훅을 전달하지 않는 경우 웹훅 전달 의 단계를 다시 수행하십시오.
  2. 별도의 터미널 창에서 다음 명령을 실행하여 컴퓨터 또는 코드 공간에서 로컬 서버를 시작하십시오. FILE_PATH 를 이전 섹션의 코드가 저장된 파일의 경로로 바꾸십시오.
    node FILE_NAME

    Server is running on port 3000라는 출력이 표시되어야 합니다.

  3. 웹훅을 트리거하십시오. IBM Storage Insights 인스턴스에서 웹훅을 만들 때 웹훅 테스트을 클릭하여 테스트 웹훅을 트리거할 수 있습니다.
  4. 웹훅 프록시 URL 로 이동하여 smee.io. 트리거하거나 다시 전달한 이벤트에 해당하는 이벤트를 확인해야 합니다. 이 이벤트는 IBM Storage InsightsURL 페이로드에 웹훅 전달을 성공적으로 보냈습니다.
  5. smee --url WEBHOOK_PROXY_URL --path /webhook --port 3000를 실행한 터미널 창에 POST http://127.0.0.1:3000/webhook - 202와 같은 내용이 표시되어야 합니다. 이 텍스트는 smee가 웹훅을 로컬 서버로 성공적으로 전달했음을 나타냅니다.
  6. node FILE_NAME를 실행한 터미널 창에 전송된 이벤트에 해당하는 메시지가 표시되어야 합니다.
  7. 두 터미널 창 모두에서 Ctrl+C 를 입력하여 로컬 서버를 중지하고 전달된 웹훅에 대한 청취를 중지하십시오.

    이제 로컬에서 코드를 테스트했으므로 프로덕션에서 웹훅을 변경할 수 있습니다. 자세한 정보는 다음 단계를 참조하십시오. 코드 테스트에 문제가 있는 경우 문제점 해결의 단계를 시도하십시오.

문제점 해결

테스트 단계에서 설명하는 예상 결과가 표시되지 않으면 다음 문제점 해결 방법을 시도하십시오.

  • 웹훅이 웹훅 프록시를 사용하고 있는지 확인 URL ( Smee.io URL ). 웹훅 프록시에 대한 자세한 정보는 URL 를 참조하세요. 웹훅 프록시 얻기 URL 를 참조 하세요. 웹훅 설정에 대한 자세한 내용은 웹훅 만들기를 참조하세요.
  • Smee 클라이언트와 로컬 서버가 모두 실행 중인지 확인합니다. 이 프로세스는 두 개의 개별 터미널 창에서 실행됩니다.
  • 서버가 웹훅을 전달하는 곳과 동일한 포트를 수신 중인지 확인합니다 smee.io 가 웹훅을 전달하고 있는 포트와 동일한 포트에서 수신 중인지 확인하세요. 예제에서는 포트 3000을 사용합니다.
  • 웹훅이 전달되는 경로가 smee.io 가 웹훅을 전달하고 있는 경로가 코드에 정의된 경로와 일치하는지 확인하세요. 모든 예제에서는 /webhooks 경로를 사용합니다.
  • Smee 클라이언트를 실행 중인 터미널 창과 로컬 서버에서 오류 메시지가 표시되는지 확인하세요.
  • IBM Storage Insights를 확인하여 웹훅 전송이 트리거되었는지 확인합니다.
  • 웹훅 프록시 확인 URL smee.io. 트리거하거나 다시 전달한 이벤트에 해당하는 이벤트를 확인해야 합니다. 이 이벤트는 IBM Storage InsightsURL 페이로드에 웹훅 전달을 성공적으로 보냈습니다.

다음 단계

이제 Webhook 전달을 처리하기 위해 코드를 작성하는 방법을 알고 있습니다. 또한 컴퓨터를 로컬 서버로 사용하고 웹훅 전달을 통해 로컬 서버에서 IBM Storage Insights 에서 로컬 서버로 smee.io. 코드 테스트를 완료하면 코드를 수정하고 코드를 서버에 배치할 수 있습니다.

코드 수정

이전 코드는 웹훅 전달이 수신될 때 메시지를 인쇄하는 기본 예제입니다. 일부 다른 조치를 수행하도록 코드를 수정할 수 있습니다. 예를 들어, 다음 조치를 수행하도록 코드를 수정할 수 있습니다.
  • Slack에서 메시지 전송
  • ServiceNow 에서 인시던트 열기
  • 외부 프로젝트 관리 도구 업데이트

페이로드 정보

웹훅 연결을 테스트할 때 IBM Storage Insights 또는 경보가 울리면, IBM Storage Insights 설정된 애플리케이션에 페이로드 정보를 전송합니다.

랜섬웨어 위협 경보가 발동될 때의 페이로드 예:
{
  "severity": "critical",
  "deviceType": "flashFamily",
  "subcategory": "SECURITY",
  "creator": "",
  "alert": {
    "source": {
      "deviceModel": "xxx",
      "deviceSerialNumber": "xxxxxxxxxxxxxxxx",
      "deviceType": "FlashSystem xxxx - xxxx",
      "deviceName": "xxxxxxxxxxxx"
    },
    "method": "VOLUME"
  },
  "name": "Ransomware Threat Detection",
  "occurrenceTimeInMs": 1718714498000,
  "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "resourceType": "Storage System",
  "details": [
    {
      "volumeID": "150",
      "status": "online_threat_detected",
      "hosts": "xxxx-xxxxxx",
      "virtualVolumeID": "",
      "uID": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
      "description": "The volume has received an anomalous workload. This anomaly could be the result of a new application configuration where encryption is enabled or a security threat such as ransomware"
    }
  ],
  "tenantUUID": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "alertURL": "https://stag.insights.ibm.com/gui/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx#alerts?id=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&parentType=storageSystem&parentId=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
다른 알림이 발동될 때의 페이로드 예:
{
  "severity": "critical",
  "deviceType": "flashFamily",
  "category": "SECURITY",
  "name": "Write-cache Delay Percentage >= 10.0",
  "occurrenceTimeInMs": 1733320427770,
  "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "tenantUUID": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "deviceName": "tpcflash5200-9"  
  "alertURL": "https://stag.insights.ibm.com/gui/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx#alerts?id=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&parentType=storageSystem&parentId=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
  "Description": "Alert Write-cache Delay Percentage >= 10.0 on ABC was triggered 1 times at Sun 2024- "
}