check-patroni/doc/make_readme.sh

136 lines
3.2 KiB
Bash
Raw Normal View History

#!/bin/bash
if ! command -v check_patroni &>/dev/null; then
echo "check_partroni must be installed to generate the documentation"
exit 1
fi
README="../README.md"
function readme(){
echo "$1" >> $README
}
function helpme(){
readme
2021-08-13 11:13:33 +02:00
readme '```'
check_patroni $1 --help >> $README
2021-08-13 11:13:33 +02:00
readme '```'
readme
}
2021-08-13 11:13:33 +02:00
cat << '_EOF_' > $README
# check_patroni
_EOF_
helpme
2021-08-13 11:13:33 +02:00
cat << '_EOF_' >> $README
2022-02-07 11:03:12 +01:00
## Install
2021-08-13 12:12:08 +02:00
2022-02-07 11:03:12 +01:00
Installation from the git repository:
2021-08-13 12:12:08 +02:00
```
2022-02-07 11:09:46 +01:00
$ git clone https://github.com/dalibo/check_patroni
2021-08-13 12:12:08 +02:00
```
2022-02-07 11:03:12 +01:00
Change the branch if necessary. Then create a dedicated environment,
install dependencies and then check_patroni from the repo:
```
2022-02-07 11:03:12 +01:00
$ cd check_patroni
$ python3 -m venv .venv
$ . .venv/bin/activate
(.venv) $ pip3 install .
(.venv) $ pip3 install .[dev] # for dev purposes
(.venv) $ pip3 install .[test] # for testing purposes
(.venv) $ check_patroni
```
2022-02-07 11:03:12 +01:00
To quit this env and destroy it:
```
$ deactivate
$ rm -r .venv
```
Links:
* [pip & centos 7](https://linuxize.com/post/how-to-install-pip-on-centos-7/)
* [pip & debian10](https://linuxize.com/post/how-to-install-pip-on-debian-10/)
2022-02-07 11:03:12 +01:00
## Config file
2021-08-13 11:13:33 +02:00
All global and service specific parameters can be specified via a config file has follows:
```
[options]
endpoints = https://10.20.199.3:8008, https://10.20.199.4:8008,https://10.20.199.5:8008
cert_file = ./ssl/benoit-dalibo-cert.pem
key_file = ./ssl/benoit-dalibo-key.pem
ca_file = ./ssl/CA-cert.pem
timeout = 0
[options.node_is_replica]
lag=100
```
2022-02-07 11:03:12 +01:00
## Thresholds
The format for the threshold parameters is "[@][start:][end]".
* "start:" may be omitted if start==0
* "~:" means that start is negative infinity
* If `end` is omitted, infinity is assumed
* To invert the match condition, prefix the range expression with "@".
2022-02-07 11:03:12 +01:00
A match is found when: start <= VALUE <= end
2022-02-07 11:03:12 +01:00
For example, the followinf command will raise:
2021-12-31 11:30:17 +01:00
* a warning if there is less than 1 nodes, wich can be translated to outside of range [2;+INF[
* a critical if there are no nodes, wich can be translated to outside of range [1;+INF[
```
2021-12-31 11:30:17 +01:00
check_patroni -e https://10.20.199.3:8008 cluster_has_replica --warning 2: --critical 1:
```
2021-08-13 11:13:33 +02:00
_EOF_
readme
2022-02-07 11:03:12 +01:00
readme "## Cluster services"
readme
readme "### cluster_config_has_changed"
helpme cluster_config_has_changed
readme "### cluster_has_leader"
helpme cluster_has_leader
readme "### cluster_has_replica"
helpme cluster_has_replica
readme "### cluster_is_in_maintenance"
helpme cluster_is_in_maintenance
readme "### cluster_node_count"
helpme cluster_node_count
2022-02-07 11:03:12 +01:00
readme "## Node services"
readme
readme "### node_is_alive"
helpme node_is_alive
readme "### node_is_pending_restart"
helpme node_is_pending_restart
readme "### node_is_primary"
helpme node_is_primary
readme "### node_is_replica"
helpme node_is_replica
readme "### node_patroni_version"
helpme node_patroni_version
readme "### node_tl_has_changed"
helpme node_tl_has_changed
cat << _EOF_ >> $README
_EOF_
2021-12-31 16:17:21 +01:00
cat << '_EOF_' >> $README
## test
The pytests are in `./test` and use a moker to provide a json response instead
of having to call the patroni API.
A vagrant file is available to create a icinga / opm / grafana stack and
install check_patroni. You can then add a server to the supervision and
watch the graphs in grafana. It's in `./test/vagrant`.
_EOF_