웹훅 전달 수신
웹훅을 로컬에서 테스트하려면, URL 웹훅 프록시를 사용하여 IBM Storage Insights 의 웹훅을 컴퓨터로 전달할 수 있습니다. Postman, RequestBin,, smee.io 와 같은 타사 도구를 사용하여 웹훅 페이로드를 테스트할 수 있습니다. 이 작업은 smee.io 를 예로 들어 웹훅 프록시 URL 를 제공하고 웹훅을 전달합니다.
웹훅 프록시 받기 URL
- 브라우저에서 https://smee.io/로 이동하십시오.
smee.io 는 예제일 뿐입니다. 필요에 따라 써드파티 웹훅 테스트 도구를 사용할 수 있습니다.
- 새 채널 시작을 클릭하십시오.
- URL 의 전체 내용을 Webhook Proxy URL 아래에 복사합니다. 다음과 같은 설정 단계에서 이 URL 를 사용해야 합니다
웹훅 전달
- 아직 smee-client를 설치하지 않은 경우 터미널에서 다음 명령을 실행하십시오.
npm install --global smee-client - smee.io에서 전달된 웹훅을 수신하려면 터미널에서 다음 명령을 실행하십시오. 웹훅 프록시(WEBHOOK_PROXY_URL)를 앞서 언급한 웹훅 프록시 URL 로 대체합니다.
smee --url WEBHOOK_PROXY_URL --path /webhook --port 3000WEBHOOK_PROXY_URL가 웹훅 프록시이고 URL 가 웹훅 주소인 경우, 다음과 같은 출력이 표시되어야 합니다Forwarding WEBHOOK_PROXY_URL to http://127.0.0.1:3000/webhook Connected WEBHOOK_PROXY_URL참고: 경로는/webhook이고 포트는3000입니다. 나중에 Webhook 전달을 처리하기 위해 코드를 작성할 때 이 값이 필요합니다. - 웹훅을 테스트하는 동안 이를 계속 실행하십시오. 웹훅 전달을 중지하려면 Ctrl+C를 입력하십시오.
웹훅 작성
IBM Storage Insights에 웹훅을 만듭니다. URL 의 경우, 앞서 설명한 웹훅 프록시 URL 를 사용하십시오. 자세한 내용은 웹훅 만들기를 참조하세요.
웹훅 전달을 처리하기 위한 코드 작성
- 웹훅에 대한 요청을 수신하도록 서버를 초기화하십시오 URL
- HTTP 의 헤더와 본문을 요청에서 읽습니다
- 요청에 대한 응답으로 필요한 조치를 수행하십시오.
서버에서 실행할 수 있는 모든 프로그래밍 언어를 사용할 수 있습니다.
다음 예제는 웹훅 전달이 수신될 때 메시지를 인쇄합니다. 그러나 Slack 메시지 전송과 같은 다른 조치를 수행하도록 코드를 수정할 수 있습니다.
JavaScript 예제:
이 예제에서는 Node.js 와 Express 라이브러리를 사용하여 경로를 정의하고 HTTP 요청을 처리합니다. 이 예제를 실행하려면 컴퓨터에 Node.js 버전 12 이상과 npm 버전 6.12.0 이상이 설치되어 있어야 합니다.
설치 종속성
npm install express코드 작성
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}`);
});코드 테스트
웹훅을 테스트하기 위해 컴퓨터 또는 코드 페이스를 사용하여 로컬 서버 역할을 수행할 수 있습니다. 이러한 단계에 문제가 있는 경우 문제점 해결을 참조하십시오.
- 웹훅을 전달하는지 확인하십시오. 더 이상 웹훅을 전달하지 않는 경우 웹훅 전달 의 단계를 다시 수행하십시오.
- 별도의 터미널 창에서 다음 명령을 실행하여 컴퓨터 또는 코드 공간에서 로컬 서버를 시작하십시오. FILE_PATH 를 이전 섹션의 코드가 저장된 파일의 경로로 바꾸십시오.
node FILE_NAMEServer is running on port 3000라는 출력이 표시되어야 합니다. - 웹훅을 트리거하십시오. IBM Storage Insights 인스턴스에서 웹훅을 만들 때 웹훅 테스트을 클릭하여 테스트 웹훅을 트리거할 수 있습니다.
- 웹훅 프록시 URL 로 이동하여 smee.io. 트리거하거나 다시 전달한 이벤트에 해당하는 이벤트를 확인해야 합니다. 이 이벤트는 IBM Storage InsightsURL 페이로드에 웹훅 전달을 성공적으로 보냈습니다.
smee --url WEBHOOK_PROXY_URL --path /webhook --port 3000를 실행한 터미널 창에POST http://127.0.0.1:3000/webhook - 202와 같은 내용이 표시되어야 합니다. 이 텍스트는 smee가 웹훅을 로컬 서버로 성공적으로 전달했음을 나타냅니다.node FILE_NAME를 실행한 터미널 창에 전송된 이벤트에 해당하는 메시지가 표시되어야 합니다.- 두 터미널 창 모두에서 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- "
}