You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

200 lines
5.5 KiB
Markdown

# lql-api
LQL API Client/Server for check_mk
Look at [the LQL Docs](https://checkmk.com/cms_livestatus.html) to see what LQL can do for you.
## Commands the client supports
### localclient - Local LQL Client
```
$ lql-api localclient -h
Local LQL Client
Requires a local lql unix socket.
4 years ago
Examples:
- Fetch first row from the hosts table:
$ lql-api localclient mysite -t hosts -c name -c address -c groups -l 1
- The same with stdin:
$ echo -e "GET hosts\nColumns: name address groups\nLimit: 1" | lql-api localclient mysite
Usage:
lql-api localclient [site] [flags]
Flags:
-c, --columns stringArray Columns to show from the given table, this is required if you give a table!
-d, --debug Enable Debug on stderr
-f, --format string Format one of: python, python3, json, csv, CSV, jsonparsed (default is jsonparsed, I parse json from the server) (default "jsonparsed")
-h, --help help for localclient
-l, --limit int Limit request lines
-s, --socket string Socket on the Server (default "/opt/omd/sites/{site}/tmp/run/live")
-t, --table string Produce a GET request for the given table (default: supply request by stdin)
-u, --user string LQL user to limit this on
```
### localserver: Local LQL Server
```
$ lql-api localserver -h
Local LQL Server
Requires a local lql unix socket.
Usage:
lql-api localserver [site] [flags]
Flags:
-d, --debug Enable Debug on stderr
-h, --help help for localserver
-t, --htpasswd string htpasswd file (default "/opt/omd/sites/{site}/etc/htpasswd")
-l, --listen string Address to listen on (default ":8080")
-x, --max-conns int maximal Client Connections (default 5)
-m, --min-conns int minimal Client Connections (default 2)
-s, --socket string Socket (default "/opt/omd/sites/{site}/tmp/run/live")
```
4 years ago
See the Installing docs for it.
### sshclient: SSH LQL Client
```
$ lql-api sshclient -h
SSH LQL Client
This version connects to the Check_MK Server by SSH.
If you don't provide ssh-keyfile and ssh-password it will use your local agent.
4 years ago
Examples:
- Fetch first row from the hosts table:
$ lql-api sshclient mysite myinternal.host.name -U mysite -t hosts -c name -c address -c groups -l 1
- The same with stdin:
$ echo -e "GET hosts\nColumns: name address groups\nLimit: 1" | lql-api sshclient mysite myinternal.host.name -U mysite
Usage:
lql-api sshclient [site] [server] [flags]
Flags:
-c, --columns stringArray Columns to show from the given table, this is required if you give a table!
-d, --debug Enable Debug on stderr
-f, --format string Format one of: python, python3, json, csv, CSV, jsonparsed (default is jsonparsed, I parse json from the server) (default "jsonparsed")
-h, --help help for sshclient
-l, --limit int Limit request lines
-s, --socket string Socket on the Server (default "/opt/omd/sites/{site}/tmp/run/live")
-k, --ssh-keyfile string Keyfile (default "~/.ssh/id_rsa")
-p, --ssh-password string Password
-U, --ssh-user string SSH User (default "root")
-t, --table string Produce a GET request for the given table (default: supply request by stdin)
-u, --user string LQL user to limit this on
```
### sshserver: SSH LQL Server
```
$ lql-api sshserver -h
SSH LQL Server
This version connects to the Check_MK Server by SSH.
If you don't provide ssh-keyfile and ssh-password it will use your local agent.
4 years ago
Examples:
- With Debug and a single connection:
$ lql-api sshserver mysite myinternal.host.name -d -m 1 -x 1 -U mysite
- Without Debug and maximum 5 connections:
$ lql-api sshserver mysite myinternal.host.name -m 1 -x 5 -U mysite
Usage:
lql-api sshserver [site] [server] [flags]
Flags:
-d, --debug Enable Debug on stderr
-h, --help help for sshserver
-t, --htpasswd string htpasswd file, default: NO authentication
-l, --listen string Address to listen on (default ":8080")
-x, --max-conns int maximal Client Connections (default 5)
-m, --min-conns int minimal Client Connections (default 2)
-s, --socket string Socket on the Server (default "/opt/omd/sites/{site}/tmp/run/live")
-k, --ssh-keyfile string Keyfile (default "~/.ssh/id_rsa")
-p, --ssh-password string Password
-U, --ssh-user string SSH User (default "root")
```
### Version
Prints the version
## OpenAPI 3.0 Support in sshserver and localserver
This support's OpenAPI 3.0 use the url http://localhost:8080/openapi.json and browse it over an OpenAPI browser.
## Build a debian package
if you use gvm
```bash
gvm use system; make debian; gvm use go1.15.1
```
else
```bash
make debian
```
## Installing the **localserver**
First install the package, replace "site" with your real site.
```bash
dpkg -i <package>
apt install -f
```
Next create /etc/lql-api/`site`, with the following contents:
```bash
LISTEN="localhost:8080"
ARGS=""
```
Now you can start the lql-api
```bash
systemctl start lql-api@<site>
```
Next create an apache proxy for it in /etc/apache2/conf-available/zzzz_`site`_lql-api.conf
```apache
<IfModule mod_proxy_http.c>
<Proxy http://127.0.0.1:8080/>
Order allow,deny
allow from all
</Proxy>
<Location /<site>/lql-api/>
ProxyPass http://127.0.0.1:8080/ retry=0 timeout=120
ProxyPassReverse http://127.0.0.1:8080/
</Location>
</IfModule>
```
## License
MIT - Copyright 2020 by Webmeisterei GmbH