Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
I
icinga-checks
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
IML Open Source
icinga-checks
Commits
10d5d875
Commit
10d5d875
authored
1 year ago
by
Hahn Axel (hahn)
Browse files
Options
Downloads
Patches
Plain Diff
haproxy_status: add help on -h
parent
a38fc56b
Branches
Branches containing commit
No related tags found
1 merge request
!129
6468-docs-and-harmonize
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
check_haproxy_status
+77
-33
77 additions, 33 deletions
check_haproxy_status
with
77 additions
and
33 deletions
check_haproxy_status
+
77
−
33
View file @
10d5d875
...
...
@@ -16,43 +16,24 @@
# 2020-12-03 v1.4 <axel.hahn@iml.unibe.ch> added support of multiple front- and backends
# 2021-12-14 v1.5 <axel.hahn@iml.unibe.ch> use updated haproxy paser in sourced file
# 2022-04-01 v1.6 <axel.hahn@iml.unibe.ch> use wget default params; shell fixes
# 2022-10-21 v1.7 <axel.hahn@unibe.ch> remove grep: warning: stray \ before white space
# 2022-10-21 v1.7 <axel.hahn@unibe.ch> remove grep: warning: stray \ before white space
# 2023-07-28 v1.8 <axel.hahn@unibe.ch> add help page
# ======================================================================
.
$(
dirname
$0
)
/inc_pluginfunctions
.
$(
dirname
$0
)
/inc_haproxy_cfg.sh
cfgfile
=
/etc/haproxy/haproxy.cfg
export
self_APPVERSION
=
1.8
.
$(
dirname
$0
)
/inc_haproxy_cfg.sh
tmpfile
=
/tmp/check_haproxy_status_
$$
tmpfile2
=
/tmp/check_haproxy_status2_
$$
tmpfileping
=
/tmp/check_haproxy_status3_
$$
# ----------------------------------------------------------------------
# pre checks
# ----------------------------------------------------------------------
ph.require wget
if
[
!
-f
$cfgfile
]
;
then
ph.abort
"UNKNOWN: config file does not exist:
$cfgfile
"
fi
cat
$cfgfile
>
/dev/null
if
[
$?
-ne
0
]
;
then
ph.abort
"UNKNOWN: unable to read ha proxy config
$cfgfile
...
`
ls
-l
$cfgfile
`
"
fi
cat
$cfgfile
|
grep
" mode .*http"
>
/dev/null
if
[
$?
-ne
0
]
;
then
ph.abort
"UNKNOWN: haproxy is not in http mode"
fi
# ----------------------------------------------------------------------
# functions
# ----------------------------------------------------------------------
# find a column number of a given field name in haproxy csv
function
getColnumber
(){
cat
$tmpfile
|
head
-1
|
sed
's#,#\n#g'
|
grep
-n
"^
$1
$"
|
cut
-f
1
-d
':'
...
...
@@ -60,9 +41,9 @@ function getColnumber(){
# get stats data from column [name]
function
getColumn
(){
typeset
-i
local
_iNumber
=
$1
typeset
-i
_iNumber
=
$1
local
_filter
=
$2
test
-z
$_filter
&&
_filter
=
'.*'
test
-z
"
$_filter
"
&&
_filter
=
'.*'
grep
"
$_filter
"
$tmpfile
|
grep
-v
"stats_frontend"
|
cut
-f
2,
$_iNumber
-d
','
}
...
...
@@ -84,6 +65,72 @@ function checkStatus(){
echo
ERROR
fi
}
# show help
function
showHelp
(){
local
_self
;
_self
=
$(
basename
$0
)
cat
<<
EOF
$(
ph.showImlHelpHeader
)
Check HA Proxy statistics on frontend and backend.
It shows if the status is OPEN or UP and show counts of current connectons.
The plugin reads
$HAPROXYcfgfile
to detect the required statistics url and get
csv data.
It requires wget to handle the http request.
Non OK values occur:
UNKNOWN - if
$HAPROXYcfgfile
cannot be read
- haproxy is not in http mode
- the url wasn't detected
- the detected status url doesn't send a response
ERROR - a frontend status is not OPEN
- a backend status is not UP
The plugin sends performance data.
SYNTAX:
$_self
[-h]
OPTIONS:
-h or --help show this help.
EXAMPLE:
$_self
EOF
}
# ----------------------------------------------------------------------
# MAIN
# ----------------------------------------------------------------------
# --- check param -h
case
"
$1
"
in
"--help"
|
"-h"
)
showHelp
exit
0
;;
*
)
esac
ph.require wget
if
[
!
-f
$HAPROXYcfgfile
]
;
then
ph.abort
"UNKNOWN: config file does not exist:
$HAPROXYcfgfile
"
fi
if
!
cat
$HAPROXYcfgfile
>
/dev/null
;
then
ph.abort
"UNKNOWN: unable to read ha proxy config
$HAPROXYcfgfile
...
$(
ls
-l
$HAPROXYcfgfile
)
"
fi
if
!
cat
$HAPROXYcfgfile
|
grep
" mode .*http"
>
/dev/null
;
then
ph.abort
"UNKNOWN: haproxy is not in http mode"
fi
# ----------------------------------------------------------------------
# build url
# ----------------------------------------------------------------------
...
...
@@ -102,7 +149,6 @@ urlmasked=$( echo $url | sed "s#\(://\)\(.*@\)#\1#g" )
# check output
# ----------------------------------------------------------------------
# --- get status page
wget
-T
5
-t
1
--no-check-certificate
-O
$tmpfile
$url
2>/dev/null
if
[
$?
-ne
0
]
;
then
...
...
@@ -145,8 +191,6 @@ ph.status "FRONT: $statusFront - ${iFrontend} (max: ${iMaxConnFront}) .. BACK: $
test
-z
"
$statusExt
"
||
echo
"
${
statusExt
}
"
# echo; echo DEBUG: ; cat $tmpfile
ph.perfadd
"frontend"
"
${
iFrontend
}
"
ph.perfadd
"frontend-max"
"
${
iMaxConnFront
}
"
ph.perfadd
"frontend-free"
"
${
iFrontendFree
}
"
...
...
@@ -162,11 +206,11 @@ ph.perfadd "backend-free" "${iBackendFree}"
getColumn
$colCurrentConnections
|
sed
-n
"2,
$
p"
>
$tmpfile2
while
read
line
do
srv
=
$(
echo
$line
|
cut
-f
1
-d
","
)
val
=
$(
echo
$line
|
cut
-f
2
-d
","
)
label
=
$(
echo
$srv
|
tr
[
:upper:]
[
:lower:]
)
srv
=
$(
echo
$line
|
cut
-f
1
-d
","
)
val
=
$(
echo
$line
|
cut
-f
2
-d
","
)
#
label=$(echo $srv | tr [:upper:] [:lower:])
# echo "${srv} - ${val}"
# echo "${srv} - ${val}"
echo
-n
"
${
srv
}
-
${
val
}
"
# v1.3: if it is a servername then ping to it
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment