mirror of
https://github.com/FlipsideCrypto/near-models.git
synced 2026-02-06 11:47:00 +00:00
add slack alert monitor
This commit is contained in:
parent
955cd826f4
commit
0fa6069b4e
7
.github/workflows/dbt_docs_update.yml
vendored
7
.github/workflows/dbt_docs_update.yml
vendored
@ -71,3 +71,10 @@ jobs:
|
|||||||
- name: push changes to docs
|
- name: push changes to docs
|
||||||
run: |
|
run: |
|
||||||
git push -f --set-upstream origin docs
|
git push -f --set-upstream origin docs
|
||||||
|
|
||||||
|
notify-failure:
|
||||||
|
needs: [scheduled_run]
|
||||||
|
if: failure()
|
||||||
|
uses: ./.github/workflows/slack_notify.yml
|
||||||
|
secrets:
|
||||||
|
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
|
||||||
|
|||||||
7
.github/workflows/dbt_run_adhoc.yml
vendored
7
.github/workflows/dbt_run_adhoc.yml
vendored
@ -64,3 +64,10 @@ jobs:
|
|||||||
- name: Run DBT Jobs
|
- name: Run DBT Jobs
|
||||||
run: |
|
run: |
|
||||||
${{ inputs.dbt_command }}
|
${{ inputs.dbt_command }}
|
||||||
|
|
||||||
|
notify-failure:
|
||||||
|
needs: [run_dbt_jobs]
|
||||||
|
if: failure()
|
||||||
|
uses: ./.github/workflows/slack_notify.yml
|
||||||
|
secrets:
|
||||||
|
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
|
||||||
|
|||||||
7
.github/workflows/dbt_run_deployment.yml
vendored
7
.github/workflows/dbt_run_deployment.yml
vendored
@ -69,3 +69,10 @@ jobs:
|
|||||||
path: |
|
path: |
|
||||||
logs
|
logs
|
||||||
target
|
target
|
||||||
|
|
||||||
|
notify-failure:
|
||||||
|
needs: [dbt]
|
||||||
|
if: failure()
|
||||||
|
uses: ./.github/workflows/slack_notify.yml
|
||||||
|
secrets:
|
||||||
|
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
|
||||||
|
|||||||
7
.github/workflows/dbt_run_dev_refresh.yml
vendored
7
.github/workflows/dbt_run_dev_refresh.yml
vendored
@ -51,3 +51,10 @@ jobs:
|
|||||||
path: |
|
path: |
|
||||||
logs
|
logs
|
||||||
target
|
target
|
||||||
|
|
||||||
|
notify-failure:
|
||||||
|
needs: [dbt]
|
||||||
|
if: failure()
|
||||||
|
uses: ./.github/workflows/slack_notify.yml
|
||||||
|
secrets:
|
||||||
|
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
|
||||||
|
|||||||
@ -4,7 +4,7 @@ run-name: dbt_run_full_observability
|
|||||||
on:
|
on:
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
schedule:
|
schedule:
|
||||||
# Runs “At 00:00 on day-of-month 1.” (see https://crontab.guru)
|
# Runs "At 00:00 on day-of-month 1." (see https://crontab.guru)
|
||||||
- cron: "0 0 1 * *"
|
- cron: "0 0 1 * *"
|
||||||
|
|
||||||
env:
|
env:
|
||||||
@ -45,3 +45,10 @@ jobs:
|
|||||||
- name: Run DBT Jobs
|
- name: Run DBT Jobs
|
||||||
run: |
|
run: |
|
||||||
dbt run --threads 2 --vars '{"OBSERV_FULL_TEST":True}' -m tag:observability
|
dbt run --threads 2 --vars '{"OBSERV_FULL_TEST":True}' -m tag:observability
|
||||||
|
|
||||||
|
notify-failure:
|
||||||
|
needs: [run_dbt_jobs]
|
||||||
|
if: failure()
|
||||||
|
uses: ./.github/workflows/slack_notify.yml
|
||||||
|
secrets:
|
||||||
|
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
|
||||||
|
|||||||
7
.github/workflows/dbt_run_observability.yml
vendored
7
.github/workflows/dbt_run_observability.yml
vendored
@ -45,3 +45,10 @@ jobs:
|
|||||||
- name: Run DBT Jobs
|
- name: Run DBT Jobs
|
||||||
run: |
|
run: |
|
||||||
dbt run --threads 2 --vars '{"OBSERV_FULL_TEST":False}' -m tag:observability
|
dbt run --threads 2 --vars '{"OBSERV_FULL_TEST":False}' -m tag:observability
|
||||||
|
|
||||||
|
notify-failure:
|
||||||
|
needs: [run_dbt_jobs]
|
||||||
|
if: failure()
|
||||||
|
uses: ./.github/workflows/slack_notify.yml
|
||||||
|
secrets:
|
||||||
|
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
|
||||||
|
|||||||
7
.github/workflows/dbt_run_scheduled_core.yml
vendored
7
.github/workflows/dbt_run_scheduled_core.yml
vendored
@ -51,3 +51,10 @@ jobs:
|
|||||||
path: |
|
path: |
|
||||||
logs
|
logs
|
||||||
target
|
target
|
||||||
|
|
||||||
|
notify-failure:
|
||||||
|
needs: [dbt]
|
||||||
|
if: failure()
|
||||||
|
uses: ./.github/workflows/slack_notify.yml
|
||||||
|
secrets:
|
||||||
|
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
|
||||||
|
|||||||
@ -51,3 +51,10 @@ jobs:
|
|||||||
path: |
|
path: |
|
||||||
logs
|
logs
|
||||||
target
|
target
|
||||||
|
|
||||||
|
notify-failure:
|
||||||
|
needs: [dbt]
|
||||||
|
if: failure()
|
||||||
|
uses: ./.github/workflows/slack_notify.yml
|
||||||
|
secrets:
|
||||||
|
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
|
||||||
|
|||||||
@ -51,3 +51,10 @@ jobs:
|
|||||||
path: |
|
path: |
|
||||||
logs
|
logs
|
||||||
target
|
target
|
||||||
|
|
||||||
|
notify-failure:
|
||||||
|
needs: [dbt]
|
||||||
|
if: failure()
|
||||||
|
uses: ./.github/workflows/slack_notify.yml
|
||||||
|
secrets:
|
||||||
|
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
|
||||||
|
|||||||
@ -51,3 +51,10 @@ jobs:
|
|||||||
path: |
|
path: |
|
||||||
logs
|
logs
|
||||||
target
|
target
|
||||||
|
|
||||||
|
notify-failure:
|
||||||
|
needs: [dbt]
|
||||||
|
if: failure()
|
||||||
|
uses: ./.github/workflows/slack_notify.yml
|
||||||
|
secrets:
|
||||||
|
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
|
||||||
|
|||||||
@ -51,3 +51,10 @@ jobs:
|
|||||||
path: |
|
path: |
|
||||||
logs
|
logs
|
||||||
target
|
target
|
||||||
|
|
||||||
|
notify-failure:
|
||||||
|
needs: [dbt]
|
||||||
|
if: failure()
|
||||||
|
uses: ./.github/workflows/slack_notify.yml
|
||||||
|
secrets:
|
||||||
|
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
|
||||||
|
|||||||
@ -51,3 +51,10 @@ jobs:
|
|||||||
path: |
|
path: |
|
||||||
logs
|
logs
|
||||||
target
|
target
|
||||||
|
|
||||||
|
notify-failure:
|
||||||
|
needs: [dbt]
|
||||||
|
if: failure()
|
||||||
|
uses: ./.github/workflows/slack_notify.yml
|
||||||
|
secrets:
|
||||||
|
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
|
||||||
|
|||||||
7
.github/workflows/dbt_test.yml
vendored
7
.github/workflows/dbt_test.yml
vendored
@ -49,3 +49,10 @@ jobs:
|
|||||||
- name: Log test results
|
- name: Log test results
|
||||||
run: |
|
run: |
|
||||||
python python_scripts/test_alert/dbt_test_alert.py
|
python python_scripts/test_alert/dbt_test_alert.py
|
||||||
|
|
||||||
|
notify-failure:
|
||||||
|
needs: [run_dbt_jobs]
|
||||||
|
if: failure()
|
||||||
|
uses: ./.github/workflows/slack_notify.yml
|
||||||
|
secrets:
|
||||||
|
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
|
||||||
|
|||||||
27
.github/workflows/slack_notify.yml
vendored
Normal file
27
.github/workflows/slack_notify.yml
vendored
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
name: Slack Notification
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
secrets:
|
||||||
|
SLACK_WEBHOOK_URL:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
notify:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
environment: workflow_prod
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Set up Python
|
||||||
|
uses: actions/setup-python@v4
|
||||||
|
with:
|
||||||
|
python-version: "3.10"
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: pip install requests
|
||||||
|
|
||||||
|
- name: Send Slack notification
|
||||||
|
run: python python/slack_alert.py
|
||||||
|
env:
|
||||||
|
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
|
||||||
74
python/slack_alert.py
Normal file
74
python/slack_alert.py
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
import requests
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
|
def create_message():
|
||||||
|
"""Creates a simple failure notification message with repo, workflow name, and URL"""
|
||||||
|
|
||||||
|
# Get GitHub environment variables
|
||||||
|
repository = os.environ.get('GITHUB_REPOSITORY', 'Unknown repository')
|
||||||
|
repo_name = repository.split('/')[-1] if '/' in repository else repository
|
||||||
|
workflow_name = os.environ.get('GITHUB_WORKFLOW', 'Unknown workflow')
|
||||||
|
run_id = os.environ.get('GITHUB_RUN_ID', '')
|
||||||
|
server_url = os.environ.get('GITHUB_SERVER_URL', 'https://github.com')
|
||||||
|
|
||||||
|
# Build the workflow URL
|
||||||
|
workflow_url = f"{server_url}/{repository}/actions/runs/{run_id}"
|
||||||
|
|
||||||
|
message_body = {
|
||||||
|
"text": f"Failure in {repo_name}",
|
||||||
|
"attachments": [
|
||||||
|
{
|
||||||
|
"color": "#f44336", # Red color for failures
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"title": "Repository",
|
||||||
|
"value": repository,
|
||||||
|
"short": True
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Workflow",
|
||||||
|
"value": workflow_name,
|
||||||
|
"short": True
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"actions": [
|
||||||
|
{
|
||||||
|
"type": "button",
|
||||||
|
"text": "View Workflow Run",
|
||||||
|
"style": "primary",
|
||||||
|
"url": workflow_url
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"footer": "GitHub Actions"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
return message_body
|
||||||
|
|
||||||
|
def send_alert(webhook_url):
|
||||||
|
"""Sends a failure notification to Slack"""
|
||||||
|
|
||||||
|
message = create_message()
|
||||||
|
|
||||||
|
try:
|
||||||
|
response = requests.post(webhook_url, json=message)
|
||||||
|
|
||||||
|
if response.status_code == 200:
|
||||||
|
print("Successfully sent Slack notification")
|
||||||
|
else:
|
||||||
|
print(f"Failed to send Slack notification: {response.status_code} {response.text}")
|
||||||
|
sys.exit(1)
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Error sending Slack notification: {str(e)}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
webhook_url = os.environ.get("SLACK_WEBHOOK_URL")
|
||||||
|
|
||||||
|
if not webhook_url:
|
||||||
|
print("ERROR: SLACK_WEBHOOK_URL environment variable is required")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
send_alert(webhook_url)
|
||||||
Loading…
Reference in New Issue
Block a user