Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
A
airflow-dags-hub
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
唐香港
airflow-dags-hub
Commits
3596f295
Commit
3596f295
authored
Sep 18, 2019
by
唐香港
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update alarm_kafka_connect_v2.py
parent
ec4a5494
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
16 additions
and
13 deletions
+16
-13
alarm_kafka_connect_v2.py
dags/kafka/alarm_kafka_connect_v2.py
+16
-13
No files found.
dags/kafka/alarm_kafka_connect_v2.py
View file @
3596f295
...
@@ -24,6 +24,9 @@ SERVICES = [
...
@@ -24,6 +24,9 @@ SERVICES = [
DINGDING
=
'https://oapi.dingtalk.com/robot/send?access_token=dac084248b38ef564c30e7f7d0c3901f3967c8e5ffdb33efe188495d5b058fdd'
DINGDING
=
'https://oapi.dingtalk.com/robot/send?access_token=dac084248b38ef564c30e7f7d0c3901f3967c8e5ffdb33efe188495d5b058fdd'
DING_PATH
=
'/opt/bitnami/airflow/dags/*/script/ding.sh'
DING_PATH
=
'/opt/bitnami/airflow/dags/*/script/ding.sh'
logging
.
basicConfig
(
level
=
logging
.
INFO
)
logger
=
logging
.
getLogger
(
__name__
)
class
TimeoutError
(
Exception
):
class
TimeoutError
(
Exception
):
pass
pass
...
@@ -70,12 +73,12 @@ def failure_callback(context):
...
@@ -70,12 +73,12 @@ def failure_callback(context):
\n
> **For more details, please check the airflow task log.**
\n
> **For more details, please check the airflow task log.**
'''
%
(
context
[
'task_instance'
]
.
task_id
,
context
[
'task_instance'
]
.
dag_id
,
context
[
'task_instance'
]
.
task_id
,
context
[
'exception'
])
'''
%
(
context
[
'task_instance'
]
.
task_id
,
context
[
'task_instance'
]
.
dag_id
,
context
[
'task_instance'
]
.
task_id
,
context
[
'exception'
])
logg
ing
.
error
(
'message :
\n
'
+
message
)
logg
er
.
error
(
'message :
\n
'
+
message
)
cmd
=
" bash "
+
DING_PATH
+
"
\'
%
s
\'
\'
%
s
\'
\'
%
s
\'
"
%
(
title
,
message
,
DINGDING
)
cmd
=
" bash "
+
DING_PATH
+
"
\'
%
s
\'
\'
%
s
\'
\'
%
s
\'
"
%
(
title
,
message
,
DINGDING
)
os
.
system
(
cmd
)
os
.
system
(
cmd
)
def
get_kafka_connectors_status
(
cmd
):
def
get_kafka_connectors_status
(
cmd
):
logg
ing
.
info
(
'exec cmd:'
+
cmd
)
logg
er
.
info
(
'exec cmd:'
+
cmd
)
connectors_dict
=
[]
connectors_dict
=
[]
timeout
=
10
timeout
=
10
...
@@ -83,8 +86,8 @@ def get_kafka_connectors_status(cmd):
...
@@ -83,8 +86,8 @@ def get_kafka_connectors_status(cmd):
(
stdout
,
stderr
)
=
run_command
(
cmd
,
timeout
)
(
stdout
,
stderr
)
=
run_command
(
cmd
,
timeout
)
stdout
=
stdout
.
decode
()
stdout
=
stdout
.
decode
()
stderr
=
stderr
.
decode
()
stderr
=
stderr
.
decode
()
logg
ing
.
info
(
stderr
)
logg
er
.
info
(
stderr
)
logg
ing
.
info
(
stdout
)
logg
er
.
info
(
stdout
)
if
'Could not resolve host'
in
stderr
and
not
stdout
:
if
'Could not resolve host'
in
stderr
and
not
stdout
:
msg
=
'
\n
- **error_msg**: Could not resolve host
%
s'
%
(
cmd
)
msg
=
'
\n
- **error_msg**: Could not resolve host
%
s'
%
(
cmd
)
...
@@ -95,24 +98,24 @@ def get_kafka_connectors_status(cmd):
...
@@ -95,24 +98,24 @@ def get_kafka_connectors_status(cmd):
connectors_dict
=
json
.
loads
(
stdout
)
connectors_dict
=
json
.
loads
(
stdout
)
if
'error_code'
in
connectors_dict
:
if
'error_code'
in
connectors_dict
:
msg
=
'
\n
- **error_code**: '
+
connectors_dict
[
'error_code'
]
+
'**error_msg**: '
+
connectors_dict
[
'message'
]
msg
=
'
\n
- **error_code**: '
+
connectors_dict
[
'error_code'
]
+
'**error_msg**: '
+
connectors_dict
[
'message'
]
logg
ing
.
error
(
msg
)
logg
er
.
error
(
msg
)
raise
Exception
(
msg
)
raise
Exception
(
msg
)
except
TimeoutError
:
except
TimeoutError
:
msg
=
'
\n
- **error_msg**: excute command=(
%
s) timeout after
%
i'
%
(
cmd
,
timeout
)
msg
=
'
\n
- **error_msg**: excute command=(
%
s) timeout after
%
i'
%
(
cmd
,
timeout
)
logg
ing
.
error
(
msg
)
logg
er
.
error
(
msg
)
raise
Exception
(
msg
)
raise
Exception
(
msg
)
logg
ing
.
info
(
str
(
connectors_dict
))
logg
er
.
info
(
str
(
connectors_dict
))
return
connectors_dict
return
connectors_dict
def
judge_connector_status
(
connector_status_dict
,
connector
):
def
judge_connector_status
(
connector_status_dict
,
connector
):
if
'error_code'
in
connector_status_dict
:
if
'error_code'
in
connector_status_dict
:
msg
=
"
\n
- **connector_name**:
%
s, **error_code**:
%
s, **error_msg**:
%
s"
%
(
connector
,
connector_status_dict
[
'error_code'
],
connector_status_dict
[
'message'
])
msg
=
"
\n
- **connector_name**:
%
s, **error_code**:
%
s, **error_msg**:
%
s"
%
(
connector
,
connector_status_dict
[
'error_code'
],
connector_status_dict
[
'message'
])
logg
ing
.
error
(
msg
)
logg
er
.
error
(
msg
)
return
(
False
,
msg
)
return
(
False
,
msg
)
if
'RUNNING'
!=
connector_status_dict
[
'status'
][
'connector'
][
'state'
]:
if
'RUNNING'
!=
connector_status_dict
[
'status'
][
'connector'
][
'state'
]:
msg
=
"
\n
- **connector_name**:
%
s, **is_running**: false"
%
(
connector
)
msg
=
"
\n
- **connector_name**:
%
s, **is_running**: false"
%
(
connector
)
logg
ing
.
error
(
msg
)
logg
er
.
error
(
msg
)
return
(
False
,
msg
)
return
(
False
,
msg
)
tasks_list
=
connector_status_dict
[
'status'
][
'tasks'
]
tasks_list
=
connector_status_dict
[
'status'
][
'tasks'
]
error_tasks
=
0
error_tasks
=
0
...
@@ -123,18 +126,18 @@ def judge_connector_status(connector_status_dict, connector):
...
@@ -123,18 +126,18 @@ def judge_connector_status(connector_status_dict, connector):
all_tasks
=
len
(
tasks_list
)
all_tasks
=
len
(
tasks_list
)
running_tasks
=
all_tasks
-
error_tasks
running_tasks
=
all_tasks
-
error_tasks
msg
=
"
\n
- **connector_name**:
%
s, **is_running**: true, **running_tasks/all_tasks**:
%
s/
%
s"
%
(
connector
,
str
(
running_tasks
),
str
(
all_tasks
)
)
msg
=
"
\n
- **connector_name**:
%
s, **is_running**: true, **running_tasks/all_tasks**:
%
s/
%
s"
%
(
connector
,
str
(
running_tasks
),
str
(
all_tasks
)
)
logg
ing
.
error
(
msg
)
logg
er
.
error
(
msg
)
return
(
False
,
msg
)
return
(
False
,
msg
)
return
(
True
,
str
(
connector_status_dict
))
return
(
True
,
str
(
connector_status_dict
))
def
python_callable
(
**
kwargs
):
def
python_callable
(
**
kwargs
):
logg
ing
.
info
(
'start kafka connect status analyze .'
)
logg
er
.
info
(
'start kafka connect status analyze .'
)
curl
=
'curl '
curl
=
'curl '
kafka_connect_url
=
'http://'
+
kwargs
[
'task_instance'
]
.
task_id
+
':8083/connectors/?expand=status'
kafka_connect_url
=
'http://'
+
kwargs
[
'task_instance'
]
.
task_id
+
':8083/connectors/?expand=status'
connectors_dict
=
get_kafka_connectors_status
(
curl
+
kafka_connect_url
)
connectors_dict
=
get_kafka_connectors_status
(
curl
+
kafka_connect_url
)
logg
ing
.
info
(
'exec cmd: '
+
curl
+
kafka_connect_url
+
' success!'
)
logg
er
.
info
(
'exec cmd: '
+
curl
+
kafka_connect_url
+
' success!'
)
error_msg
=
""
error_msg
=
""
for
connector
in
connectors_dict
:
for
connector
in
connectors_dict
:
...
@@ -143,7 +146,7 @@ def python_callable(**kwargs):
...
@@ -143,7 +146,7 @@ def python_callable(**kwargs):
error_msg
+=
msg
error_msg
+=
msg
if
error_msg
:
if
error_msg
:
raise
Exception
(
error_msg
)
raise
Exception
(
error_msg
)
logg
ing
.
info
(
'kafka connect status ok!'
)
logg
er
.
info
(
'kafka connect status ok!'
)
for
service
in
SERVICES
:
for
service
in
SERVICES
:
task
=
PythonOperator
(
task
=
PythonOperator
(
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment