Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
蜕变的菜鸟
glances
提交
f4b5153e
G
glances
项目概览
蜕变的菜鸟
/
glances
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
glances
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
f4b5153e
编写于
10月 08, 2019
作者:
N
nicolargo
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Harden Connections plugin
上级
d8713aa1
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
59 addition
and
43 deletion
+59
-43
glances/plugins/glances_connections.py
glances/plugins/glances_connections.py
+59
-43
未找到文件。
glances/plugins/glances_connections.py
浏览文件 @
f4b5153e
...
...
@@ -65,7 +65,10 @@ class Plugin(GlancesPlugin):
# We want to display the stat in the curse interface
self
.
display_curse
=
True
# @TODO the plugin should be enable only for Linux OS
# This plugin is composed if net_connections and nf_conntrack
# Enabled by default
self
.
net_connections_enabled
=
True
self
.
nf_conntrack_enabled
=
True
@
GlancesPlugin
.
_check_decorator
@
GlancesPlugin
.
_log_result_decorator
...
...
@@ -81,30 +84,40 @@ class Plugin(GlancesPlugin):
# Update stats using the PSUtils lib
# Grab network interface stat using the psutil net_connections method
try
:
net_connections
=
psutil
.
net_connections
(
kind
=
"tcp"
)
except
Exception
as
e
:
logger
.
debug
(
'Can not get network connections stats ({})'
.
format
(
e
))
return
self
.
stats
for
s
in
self
.
status_list
:
stats
[
s
]
=
len
([
c
for
c
in
net_connections
if
c
.
status
==
s
])
initiated
=
0
for
s
in
self
.
initiated_states
:
stats
[
s
]
=
len
([
c
for
c
in
net_connections
if
c
.
status
==
s
])
initiated
+=
stats
[
s
]
stats
[
'initiated'
]
=
initiated
terminated
=
0
for
s
in
self
.
initiated_states
:
stats
[
s
]
=
len
([
c
for
c
in
net_connections
if
c
.
status
==
s
])
terminated
+=
stats
[
s
]
stats
[
'terminated'
]
=
terminated
# Grab connections track directly from the /proc file
for
i
in
self
.
conntrack
:
with
open
(
self
.
conntrack
[
i
],
'r'
)
as
f
:
stats
[
i
]
=
float
(
f
.
readline
().
rstrip
(
"
\n
"
))
stats
[
'nf_conntrack_percent'
]
=
stats
[
'nf_conntrack_count'
]
*
100
/
stats
[
'nf_conntrack_max'
]
if
self
.
net_connections_enabled
:
try
:
net_connections
=
psutil
.
net_connections
(
kind
=
"tcp"
)
except
Exception
as
e
:
logger
.
debug
(
'Can not get network connections stats ({})'
.
format
(
e
))
self
.
net_connections_enabled
=
False
self
.
stats
=
stats
return
self
.
stats
for
s
in
self
.
status_list
:
stats
[
s
]
=
len
([
c
for
c
in
net_connections
if
c
.
status
==
s
])
initiated
=
0
for
s
in
self
.
initiated_states
:
stats
[
s
]
=
len
([
c
for
c
in
net_connections
if
c
.
status
==
s
])
initiated
+=
stats
[
s
]
stats
[
'initiated'
]
=
initiated
terminated
=
0
for
s
in
self
.
initiated_states
:
stats
[
s
]
=
len
([
c
for
c
in
net_connections
if
c
.
status
==
s
])
terminated
+=
stats
[
s
]
stats
[
'terminated'
]
=
terminated
if
self
.
nf_conntrack_enabled
:
# Grab connections track directly from the /proc file
for
i
in
self
.
conntrack
:
try
:
with
open
(
self
.
conntrack
[
i
],
'r'
)
as
f
:
stats
[
i
]
=
float
(
f
.
readline
().
rstrip
(
"
\n
"
))
except
IOError
as
e
:
logger
.
debug
(
'Can not get network connections track ({})'
.
format
(
e
))
self
.
nf_conntrack_enabled
=
False
self
.
stats
=
stats
return
self
.
stats
stats
[
'nf_conntrack_percent'
]
=
stats
[
'nf_conntrack_count'
]
*
100
/
stats
[
'nf_conntrack_max'
]
elif
self
.
input_method
==
'snmp'
:
# Update stats using SNMP
...
...
@@ -112,7 +125,6 @@ class Plugin(GlancesPlugin):
# Update the stats
self
.
stats
=
stats
return
self
.
stats
def
update_views
(
self
):
...
...
@@ -123,7 +135,8 @@ class Plugin(GlancesPlugin):
# Add specifics informations
try
:
# Alert and log
self
.
views
[
'nf_conntrack_percent'
][
'decoration'
]
=
self
.
get_alert
(
header
=
'nf_conntrack_percent'
)
if
self
.
nf_conntrack_enabled
:
self
.
views
[
'nf_conntrack_percent'
][
'decoration'
]
=
self
.
get_alert
(
header
=
'nf_conntrack_percent'
)
except
KeyError
:
# try/except mandatory for Windows compatibility (no conntrack stats)
pass
...
...
@@ -140,25 +153,28 @@ class Plugin(GlancesPlugin):
return
ret
# Header
msg
=
'{}'
.
format
(
'TCP CONNECTIONS'
)
ret
.
append
(
self
.
curse_add_line
(
msg
,
"TITLE"
))
if
self
.
net_connections_enabled
or
self
.
nf_conntrack_enabled
:
msg
=
'{}'
.
format
(
'TCP CONNECTIONS'
)
ret
.
append
(
self
.
curse_add_line
(
msg
,
"TITLE"
))
# Connections status
for
s
in
[
psutil
.
CONN_LISTEN
,
'initiated'
,
psutil
.
CONN_ESTABLISHED
,
'terminated'
]:
if
self
.
net_connections_enabled
:
for
s
in
[
psutil
.
CONN_LISTEN
,
'initiated'
,
psutil
.
CONN_ESTABLISHED
,
'terminated'
]:
ret
.
append
(
self
.
curse_new_line
())
msg
=
'{:{width}}'
.
format
(
nativestr
(
s
).
capitalize
(),
width
=
len
(
s
))
ret
.
append
(
self
.
curse_add_line
(
msg
))
msg
=
'{:>{width}}'
.
format
(
self
.
stats
[
s
],
width
=
max_width
-
len
(
s
)
+
2
)
ret
.
append
(
self
.
curse_add_line
(
msg
))
# Connections track
if
self
.
nf_conntrack_enabled
:
s
=
'Tracked'
ret
.
append
(
self
.
curse_new_line
())
msg
=
'{:{width}}'
.
format
(
nativestr
(
s
).
capitalize
(),
width
=
len
(
s
))
ret
.
append
(
self
.
curse_add_line
(
msg
))
msg
=
'{:>{width}}'
.
format
(
self
.
stats
[
s
],
width
=
max_width
-
len
(
s
)
+
2
)
ret
.
append
(
self
.
curse_add_line
(
msg
))
# Connections track
s
=
'Tracked'
ret
.
append
(
self
.
curse_new_line
())
msg
=
'{:{width}}'
.
format
(
nativestr
(
s
).
capitalize
(),
width
=
len
(
s
))
ret
.
append
(
self
.
curse_add_line
(
msg
))
msg
=
'{:>{width}}'
.
format
(
'{:0.0f}/{:0.0f}'
.
format
(
self
.
stats
[
'nf_conntrack_count'
],
self
.
stats
[
'nf_conntrack_max'
]),
width
=
max_width
-
len
(
s
)
+
2
)
ret
.
append
(
self
.
curse_add_line
(
msg
,
self
.
get_views
(
key
=
'nf_conntrack_percent'
,
option
=
'decoration'
)))
msg
=
'{:>{width}}'
.
format
(
'{:0.0f}/{:0.0f}'
.
format
(
self
.
stats
[
'nf_conntrack_count'
],
self
.
stats
[
'nf_conntrack_max'
]),
width
=
max_width
-
len
(
s
)
+
2
)
ret
.
append
(
self
.
curse_add_line
(
msg
,
self
.
get_views
(
key
=
'nf_conntrack_percent'
,
option
=
'decoration'
)))
return
ret
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录