diff --git a/build/requirements.txt b/build/requirements.txt index 6429761876..849fd90f39 100644 --- a/build/requirements.txt +++ b/build/requirements.txt @@ -1,82 +1,87 @@ aiofiles==23.1.0 ; python_full_version > "3.8.1" and python_version < "3.10" aiohttp==3.7.4 ; python_full_version > "3.8.1" and python_version < "3.10" altair==4.2.2 ; python_full_version > "3.8.1" and python_version < "3.10" -anyio==3.6.2 ; python_full_version > "3.8.1" and python_version < "3.10" +anyio==3.7.1 ; python_full_version > "3.8.1" and python_version < "3.10" appnope==0.1.3 ; python_full_version > "3.8.1" and python_version < "3.10" and platform_system == "Darwin" or python_full_version > "3.8.1" and python_version < "3.10" and sys_platform == "darwin" argon2-cffi-bindings==21.2.0 ; python_full_version > "3.8.1" and python_version < "3.10" argon2-cffi==21.3.0 ; python_full_version > "3.8.1" and python_version < "3.10" -asgiref==3.6.0 ; python_full_version > "3.8.1" and python_version < "3.10" +asgiref==3.7.2 ; python_full_version > "3.8.1" and python_version < "3.10" asttokens==2.2.1 ; python_full_version > "3.8.1" and python_version < "3.10" async-timeout==3.0.1 ; python_full_version > "3.8.1" and python_version < "3.10" asyncssh==2.11.0 ; python_full_version > "3.8.1" and python_version < "3.10" -attrs==22.2.0 ; python_full_version > "3.8.1" and python_version < "3.10" +attrs==23.1.0 ; python_full_version > "3.8.1" and python_version < "3.10" backcall==0.2.0 ; python_full_version > "3.8.1" and python_version < "3.10" -beautifulsoup4==4.12.0 ; python_full_version > "3.8.1" and python_version < "3.10" +beautifulsoup4==4.12.2 ; python_full_version > "3.8.1" and python_version < "3.10" bidict==0.22.1 ; python_full_version > "3.8.1" and python_version < "3.10" bleach==6.0.0 ; python_full_version > "3.8.1" and python_version < "3.10" -blinker==1.5 ; python_full_version > "3.8.1" and python_version < "3.10" -cachetools==5.3.0 ; python_full_version > "3.8.1" and python_version < "3.10" -certifi==2022.12.7 ; python_full_version > "3.8.1" and python_version < "3.10" +blinker==1.6.2 ; python_full_version > "3.8.1" and python_version < "3.10" +cachetools==5.3.1 ; python_full_version > "3.8.1" and python_version < "3.10" +certifi==2023.5.7 ; python_full_version > "3.8.1" and python_version < "3.10" cffi==1.15.1 ; python_full_version > "3.8.1" and python_version < "3.10" chardet==3.0.4 ; python_full_version > "3.8.1" and python_version < "3.10" -charset-normalizer==3.1.0 ; python_full_version > "3.8.1" and python_version < "3.10" -ciscoconfparse==1.7.18 ; python_full_version > "3.8.1" and python_version < "3.10" -click==8.1.3 ; python_full_version > "3.8.1" and python_version < "3.10" +charset-normalizer==3.2.0 ; python_full_version > "3.8.1" and python_version < "3.10" +ciscoconfparse==1.7.24 ; python_full_version > "3.8.1" and python_version < "3.10" +click==8.1.5 ; python_full_version > "3.8.1" and python_version < "3.10" colorama==0.4.6 ; python_full_version > "3.8.1" and python_version < "3.10" +comm==0.1.3 ; python_full_version > "3.8.1" and python_version < "3.10" configargparse==0.15.2 ; python_full_version > "3.8.1" and python_version < "3.10" -contourpy==1.0.7 ; python_full_version > "3.8.1" and python_version < "3.10" -cryptography==40.0.1 ; python_full_version > "3.8.1" and python_version < "3.10" +contourpy==1.1.0 ; python_full_version > "3.8.1" and python_version < "3.10" +cryptography==41.0.2 ; python_full_version > "3.8.1" and python_version < "3.10" cycler==0.11.0 ; python_full_version > "3.8.1" and python_version < "3.10" dateparser==1.1.8 ; python_full_version > "3.8.1" and python_version < "3.10" +debugpy==1.6.7 ; python_full_version > "3.8.1" and python_version < "3.10" decorator==5.1.1 ; python_full_version > "3.8.1" and python_version < "3.10" defusedxml==0.7.1 ; python_full_version > "3.8.1" and python_version < "3.10" deprecat==2.1.1 ; python_full_version > "3.8.1" and python_version < "3.10" -dnspython==2.3.0 ; python_full_version > "3.8.1" and python_version < "3.10" +dnspython==2.4.0 ; python_full_version > "3.8.1" and python_version < "3.10" entrypoints==0.4 ; python_full_version > "3.8.1" and python_version < "3.10" +exceptiongroup==1.1.2 ; python_full_version > "3.8.1" and python_version < "3.10" executing==1.2.0 ; python_full_version > "3.8.1" and python_version < "3.10" faker==4.18.0 ; python_full_version > "3.8.1" and python_version < "3.10" -fastapi==0.95.1 ; python_full_version > "3.8.1" and python_version < "3.10" -fastjsonschema==2.16.3 ; python_full_version > "3.8.1" and python_version < "3.10" -fonttools==4.39.2 ; python_full_version > "3.8.1" and python_version < "3.10" +fastapi==0.95.2 ; python_full_version > "3.8.1" and python_version < "3.10" +fastjsonschema==2.17.1 ; python_full_version > "3.8.1" and python_version < "3.10" +fonttools==4.41.0 ; python_full_version > "3.8.1" and python_version < "3.10" future==0.18.3 ; python_full_version > "3.8.1" and python_version < "3.10" gitdb==4.0.10 ; python_full_version > "3.8.1" and python_version < "3.10" -gitpython==3.1.31 ; python_full_version > "3.8.1" and python_version < "3.10" +gitpython==3.1.32 ; python_full_version > "3.8.1" and python_version < "3.10" graphviz==0.15 ; python_full_version > "3.8.1" and python_version < "3.10" h11==0.14.0 ; python_full_version > "3.8.1" and python_version < "3.10" +httpcore==0.17.3 ; python_full_version > "3.8.1" and python_version < "3.10" idna==3.4 ; python_full_version > "3.8.1" and python_version < "3.10" -importlib-metadata==6.1.0 ; python_full_version > "3.8.1" and python_version < "3.10" -importlib-resources==5.12.0 ; python_full_version > "3.8.1" and python_version < "3.10" +importlib-metadata==6.8.0 ; python_full_version > "3.8.1" and python_version < "3.10" +importlib-resources==6.0.0 ; python_full_version > "3.8.1" and python_version < "3.10" ipaddress==1.0.23 ; python_full_version > "3.8.1" and python_version < "3.10" -ipykernel==5.5.6 ; python_full_version > "3.8.1" and python_version < "3.10" +ipykernel==6.24.0 ; python_full_version > "3.8.1" and python_version < "3.10" ipython-genutils==0.2.0 ; python_full_version > "3.8.1" and python_version < "3.10" ipython==8.12.2 ; python_full_version > "3.8.1" and python_version < "3.10" jedi==0.17.2 ; python_full_version > "3.8.1" and python_version < "3.10" jellyfish==0.10.0 ; python_full_version > "3.8.1" and python_version < "3.10" jinja2==3.1.2 ; python_full_version > "3.8.1" and python_version < "3.10" jsonpath-ng==1.5.3 ; python_full_version > "3.8.1" and python_version < "3.10" -jsonschema==4.17.3 ; python_full_version > "3.8.1" and python_version < "3.10" -jupyter-client==8.1.0 ; python_full_version > "3.8.1" and python_version < "3.10" -jupyter-core==5.3.0 ; python_full_version > "3.8.1" and python_version < "3.10" +jsonschema-specifications==2023.6.1 ; python_full_version > "3.8.1" and python_version < "3.10" +jsonschema==4.18.3 ; python_full_version > "3.8.1" and python_version < "3.10" +jupyter-client==8.3.0 ; python_full_version > "3.8.1" and python_version < "3.10" +jupyter-core==5.3.1 ; python_full_version > "3.8.1" and python_version < "3.10" jupyterlab-pygments==0.2.2 ; python_full_version > "3.8.1" and python_version < "3.10" kiwisolver==1.4.4 ; python_full_version > "3.8.1" and python_version < "3.10" loguru==0.6.0 ; python_full_version > "3.8.1" and python_version < "3.10" -markdown-it-py==2.2.0 ; python_full_version > "3.8.1" and python_version < "3.10" -markupsafe==2.1.2 ; python_full_version > "3.8.1" and python_version < "3.10" +markdown-it-py==3.0.0 ; python_full_version > "3.8.1" and python_version < "3.10" +markupsafe==2.1.3 ; python_full_version > "3.8.1" and python_version < "3.10" matplotlib-inline==0.1.6 ; python_full_version > "3.8.1" and python_version < "3.10" -matplotlib==3.7.1 ; python_full_version > "3.8.1" and python_version < "3.10" +matplotlib==3.7.2 ; python_full_version > "3.8.1" and python_version < "3.10" mdurl==0.1.2 ; python_full_version > "3.8.1" and python_version < "3.10" -mistune==2.0.5 ; python_full_version > "3.8.1" and python_version < "3.10" +mistune==3.0.1 ; python_full_version > "3.8.1" and python_version < "3.10" multidict==6.0.4 ; python_full_version > "3.8.1" and python_version < "3.10" mypy-extensions==1.0.0 ; python_full_version > "3.8.1" and python_version < "3.10" -natsort==8.3.1 ; python_full_version > "3.8.1" and python_version < "3.10" -nbclient==0.7.2 ; python_full_version > "3.8.1" and python_version < "3.10" -nbconvert==7.2.10 ; python_full_version > "3.8.1" and python_version < "3.10" -nbformat==5.8.0 ; python_full_version > "3.8.1" and python_version < "3.10" +natsort==8.4.0 ; python_full_version > "3.8.1" and python_version < "3.10" +nbclient==0.8.0 ; python_full_version > "3.8.1" and python_version < "3.10" +nbconvert==7.6.0 ; python_full_version > "3.8.1" and python_version < "3.10" +nbformat==5.9.1 ; python_full_version > "3.8.1" and python_version < "3.10" nest-asyncio==1.5.6 ; python_full_version > "3.8.1" and python_version < "3.10" netconan==0.11.3 ; python_full_version > "3.8.1" and python_version < "3.10" networkx==2.8.8 ; python_full_version > "3.8.1" and python_version < "3.10" notebook==6.4.12 ; python_full_version > "3.8.1" and python_version < "3.10" -numpy==1.24.2 ; python_full_version > "3.8.1" and python_version < "3.10" +numpy==1.24.4 ; python_full_version > "3.8.1" and python_version < "3.10" packaging==21.3 ; python_full_version > "3.8.1" and python_version < "3.10" pandas==1.5.3 ; python_full_version > "3.8.1" and python_version < "3.10" pandocfilters==1.5.0 ; python_full_version > "3.8.1" and python_version < "3.10" @@ -84,61 +89,62 @@ parso==0.7.1 ; python_full_version > "3.8.1" and python_version < "3.10" passlib==1.7.4 ; python_full_version > "3.8.1" and python_version < "3.10" pexpect==4.8.0 ; python_full_version > "3.8.1" and python_version < "3.10" and sys_platform != "win32" pickleshare==0.7.5 ; python_full_version > "3.8.1" and python_version < "3.10" -pillow==9.4.0 ; python_full_version > "3.8.1" and python_version < "3.10" +pillow==10.0.0 ; python_full_version > "3.8.1" and python_version < "3.10" pkgutil-resolve-name==1.3.10 ; python_full_version > "3.8.1" and python_version < "3.9" -platformdirs==3.2.0 ; python_full_version > "3.8.1" and python_version < "3.10" +platformdirs==3.9.1 ; python_full_version > "3.8.1" and python_version < "3.10" ply==3.11 ; python_full_version > "3.8.1" and python_version < "3.10" -prettytable==3.6.0 ; python_full_version > "3.8.1" and python_version < "3.10" -prometheus-client==0.16.0 ; python_full_version > "3.8.1" and python_version < "3.10" -prompt-toolkit==3.0.38 ; python_full_version > "3.8.1" and python_version < "3.10" +prettytable==3.8.0 ; python_full_version > "3.8.1" and python_version < "3.10" +prometheus-client==0.17.1 ; python_full_version > "3.8.1" and python_version < "3.10" +prompt-toolkit==3.0.39 ; python_full_version > "3.8.1" and python_version < "3.10" protobuf==3.20.3 ; python_full_version > "3.8.1" and python_version < "3.10" -psutil==5.9.4 ; python_full_version > "3.8.1" and python_version < "3.10" +psutil==5.9.5 ; python_full_version > "3.8.1" and python_version < "3.10" ptyprocess==0.7.0 ; python_full_version > "3.8.1" and python_version < "3.10" and os_name != "nt" or python_full_version > "3.8.1" and python_version < "3.10" and sys_platform != "win32" pure-eval==0.2.2 ; python_full_version > "3.8.1" and python_version < "3.10" pyarrow==11.0.0 ; python_full_version > "3.8.1" and python_version < "3.10" pycparser==2.21 ; python_full_version > "3.8.1" and python_version < "3.10" -pydantic==1.10.7 ; python_full_version > "3.8.1" and python_version < "3.10" -pydeck==0.8.0 ; python_full_version > "3.8.1" and python_version < "3.10" -pygments==2.14.0 ; python_full_version > "3.8.1" and python_version < "3.10" +pydantic==1.10.11 ; python_full_version > "3.8.1" and python_version < "3.10" +pydeck==0.8.1b0 ; python_full_version > "3.8.1" and python_version < "3.10" +pygments==2.15.1 ; python_full_version > "3.8.1" and python_version < "3.10" pympler==1.0.1 ; python_full_version > "3.8.1" and python_version < "3.10" pyparsing==2.4.7 ; python_full_version > "3.8.1" and python_version < "3.10" -pyrsistent==0.19.3 ; python_full_version > "3.8.1" and python_version < "3.10" python-dateutil==2.8.2 ; python_full_version > "3.8.1" and python_version < "3.10" python-dotenv==0.19.2 ; python_full_version > "3.8.1" and python_version < "3.10" python-nubia==0.2b5 ; python_full_version > "3.8.1" and python_version < "3.10" -pytz==2023.2 ; python_full_version > "3.8.1" and python_version < "3.10" +pytz==2023.3 ; python_full_version > "3.8.1" and python_version < "3.10" pywin32==306 ; sys_platform == "win32" and platform_python_implementation != "PyPy" and python_full_version > "3.8.1" and python_version < "3.10" -pywinpty==2.0.10 ; python_full_version > "3.8.1" and python_version < "3.10" and os_name == "nt" +pywinpty==2.0.11 ; python_full_version > "3.8.1" and python_version < "3.10" and os_name == "nt" pyyaml==6.0 ; python_full_version > "3.8.1" and python_version < "3.10" -pyzmq==25.0.2 ; python_full_version > "3.8.1" and python_version < "3.10" -regex==2023.3.23 ; python_full_version > "3.8.1" and python_version < "3.10" -requests==2.28.2 ; python_full_version > "3.8.1" and python_version < "3.10" -rich==13.3.3 ; python_full_version > "3.8.1" and python_version < "3.10" -semver==2.13.0 ; python_full_version > "3.8.1" and python_version < "3.10" -send2trash==1.8.0 ; python_full_version > "3.8.1" and python_version < "3.10" -simplejson==3.18.4 ; python_full_version > "3.8.1" and python_version < "3.10" +pyzmq==25.1.0 ; python_full_version > "3.8.1" and python_version < "3.10" +referencing==0.29.1 ; python_full_version > "3.8.1" and python_version < "3.10" +regex==2023.6.3 ; python_full_version > "3.8.1" and python_version < "3.10" +requests==2.31.0 ; python_full_version > "3.8.1" and python_version < "3.10" +rich==13.4.2 ; python_full_version > "3.8.1" and python_version < "3.10" +rpds-py==0.8.10 ; python_full_version > "3.8.1" and python_version < "3.10" +semver==3.0.1 ; python_full_version > "3.8.1" and python_version < "3.10" +send2trash==1.8.2 ; python_full_version > "3.8.1" and python_version < "3.10" +simplejson==3.19.1 ; python_full_version > "3.8.1" and python_version < "3.10" six==1.16.0 ; python_full_version > "3.8.1" and python_version < "3.10" smmap==5.0.0 ; python_full_version > "3.8.1" and python_version < "3.10" sniffio==1.3.0 ; python_full_version > "3.8.1" and python_version < "3.10" -soupsieve==2.4 ; python_full_version > "3.8.1" and python_version < "3.10" +soupsieve==2.4.1 ; python_full_version > "3.8.1" and python_version < "3.10" stack-data==0.6.2 ; python_full_version > "3.8.1" and python_version < "3.10" -starlette==0.26.1 ; python_full_version > "3.8.1" and python_version < "3.10" +starlette==0.27.0 ; python_full_version > "3.8.1" and python_version < "3.10" streamlit-aggrid==0.2.3.post2 ; python_full_version > "3.8.1" and python_version < "3.10" streamlit==1.11.1 ; python_full_version > "3.8.1" and python_version < "3.10" tabulate==0.8.10 ; python_full_version > "3.8.1" and python_version < "3.10" -termcolor==2.2.0 ; python_full_version > "3.8.1" and python_version < "3.10" +termcolor==2.3.0 ; python_full_version > "3.8.1" and python_version < "3.10" terminado==0.17.1 ; python_full_version > "3.8.1" and python_version < "3.10" text-unidecode==1.3 ; python_full_version > "3.8.1" and python_version < "3.10" textfsm==1.1.3 ; python_full_version > "3.8.1" and python_version < "3.10" tinycss2==1.2.1 ; python_full_version > "3.8.1" and python_version < "3.10" toml==0.10.2 ; python_full_version > "3.8.1" and python_version < "3.10" toolz==0.12.0 ; python_full_version > "3.8.1" and python_version < "3.10" -tornado==6.2 ; python_full_version > "3.8.1" and python_version < "3.10" +tornado==6.3.2 ; python_full_version > "3.8.1" and python_version < "3.10" traitlets==5.9.0 ; python_full_version > "3.8.1" and python_version < "3.10" -typing-extensions==4.5.0 ; python_full_version > "3.8.1" and python_version < "3.10" -typing-inspect==0.8.0 ; python_full_version > "3.8.1" and python_version < "3.10" +typing-extensions==4.7.1 ; python_full_version > "3.8.1" and python_version < "3.10" +typing-inspect==0.9.0 ; python_full_version > "3.8.1" and python_version < "3.10" tzlocal==2.1 ; python_full_version > "3.8.1" and python_version < "3.10" -urllib3==1.26.15 ; python_full_version > "3.8.1" and python_version < "3.10" +urllib3==1.26.16 ; python_full_version > "3.8.1" and python_version < "3.10" uvicorn==0.14.0 ; python_full_version > "3.8.1" and python_version < "3.10" uvloop==0.17.0 ; python_full_version > "3.8.1" and python_version < "3.10" validators==0.20.0 ; python_full_version > "3.8.1" and python_version < "3.10" @@ -148,5 +154,5 @@ webencodings==0.5.1 ; python_full_version > "3.8.1" and python_version < "3.10" win32-setctime==1.1.0 ; python_full_version > "3.8.1" and python_version < "3.10" and sys_platform == "win32" wrapt==1.15.0 ; python_full_version > "3.8.1" and python_version < "3.10" xmltodict==0.12.0 ; python_full_version > "3.8.1" and python_version < "3.10" -yarl==1.8.2 ; python_full_version > "3.8.1" and python_version < "3.10" -zipp==3.15.0 ; python_full_version > "3.8.1" and python_version < "3.10" +yarl==1.9.2 ; python_full_version > "3.8.1" and python_version < "3.10" +zipp==3.16.2 ; python_full_version > "3.8.1" and python_version < "3.10" diff --git a/docs/config_file.md b/docs/config_file.md index 32b5f235c3..f8ea913573 100644 --- a/docs/config_file.md +++ b/docs/config_file.md @@ -43,8 +43,8 @@ coalescer: | ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |:-------------------------------- | ------------------- | | data-directory | The directory where the poller stores the data collected from the network | - | yes | | temp-directory | Where SuzieQ stores temporary data | /tmp/.suzieq/ | no | -| rest.rest_certfile | certificate for the REST server | - | no | -| rest.rest_keyfile | keyfile for the REST server | - | no | +| rest.rest-certfile | certificate for the REST server | - | no | +| rest.rest-keyfile | keyfile for the REST server | - | no | | rest.API_KEY | API key for the REST server | - | yes (if using rest) | | rest.address | IP address of the REST server. | 127.0.0.1 | no | | rest.port | port of the REST server | 80 | no | diff --git a/docs/gui.md b/docs/gui.md index 9235ff56b9..a99cc77a09 100644 --- a/docs/gui.md +++ b/docs/gui.md @@ -15,3 +15,121 @@ Some additional arguments are allowed to set up the GUI: - `-p --port`: defines in which port the GUI is going to run. By default is `8501` - `-c --config`: SuzieQ configuration file to use. Check the [Configuration](config_file.md) page to check the default configuration file location. + +## Start a GUI behind an nginx reverse proxy + +This section is an step by step guide on how to set up an [nginx](http://nginx.org/en/docs/) reverse proxy for the SuzieQ GUI. + +### Requirements + +- nginx: [nginx installation guide](http://nginx.org/en/docs/install.html) +- SuzieQ GUI running + +### Configure and start nginx + +Move into the nginx config directory + +``` shell +cd /etc/nginx +``` + +!!! info + Some of the commands below may need `sudo` + +Fill the values into the following template and put it in a file under `/etc/nginx/sites-available/suzieq.conf` + +``` +server { + listen default_server; + listen [::]: default_server; + server_name ; + location / { + proxy_pass ; + } + # streamlit redirects config + location //streamlit-components-demo { + proxy_pass /; + } + location ^~ //static { + proxy_pass /static/; + } + location ^~ //healthz { + proxy_pass /healthz; + } + location ^~ //vendor { + proxy_pass /vendor; + } + location ^~ //component { + proxy_pass /component; + } + + location //stream { + proxy_pass /stream; + proxy_http_version 1.1; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header Host $host; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + proxy_read_timeout 86400; + } +} +``` + +The example below shows a configuration file shows how to create a reverse proxy +to serve a SuzieQ GUI running on `http:localhost:8501` to be mapped to `http:localhost:80/suzieq` + +``` +server { + listen 80 default_server; + listen [::]:80 default_server; + server_name localhost; + location /suzieq { + proxy_pass http://127.0.0.1:8501; + } + # streamlit redirects config + location /suzieq/streamlit-components-demo { + proxy_pass http://127.0.0.1:8501/; + } + location ^~ /suzieq/static { + proxy_pass http://127.0.0.1:8501/static/; + } + location ^~ /suzieq/healthz { + proxy_pass http://127.0.0.1:8501/healthz; + } + location ^~ /suzieq/vendor { + proxy_pass http://127.0.0.1:8501/vendor; + } + location ^~ /suzieq/component { + proxy_pass http://127.0.0.1:8501/component; + } + + location /suzieq/stream { + proxy_pass http://127.0.0.1:8501/stream; + proxy_http_version 1.1; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header Host $host; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + proxy_read_timeout 86400; + } +} +``` + +!!! warning + These examples, do **NOT** provide any security. + Please check the [nginx documentation](http://nginx.org/en/docs/) to know how add security to your nginx server + + +Now copy the configuration from `/etc/nginx/sites-available` to `/etc/nginx/sites-enabled`. +It is recommended to use a symbolic link. + +``` shell +ln -s /etc/nginx/sites-available/suzieq.conf /etc/nginx/sites-enabled/suzieq.conf +``` + +Now restart the nginx service +``` shell +sudo systemctl restart nginx +``` + +You can open you browser and connect to your configured nginx to see the SuzieQ GUI diff --git a/docs/poller.md b/docs/poller.md index abb064f3e1..15d80d6e5c 100644 --- a/docs/poller.md +++ b/docs/poller.md @@ -20,9 +20,13 @@ The inventory file format is covered in the [inventory page](./inventory.md). To monitor the status of the poller, you can look at the log files created (by default) in the `/tmp` directory. All the aspects related to the creation/update of the inventory are logged into `sq-poller-controller.log`, while the each worker logs into `sq-poller-.log` where `x` is the worker id. +!!! warning + If you want to start the poller process as background task, remember to redirect the stdout to `/dev/null` otherwise the poller might crash when it tries to write something on the terminal.
+ `sq-poller -I inventory.yml >/dev/null &` + ## Polling Modes -SuzieQ poller can run in either **continuous mode** or **snapshot mode**. In continuous mode, the poller runs forever, gathering data at the specified period from the supplied inventory file. Alternately, it can run in snapshot mode where it gathers the data just once and stops once it has gathered data from all the nodes in the inventory file. If we cannot gather data from a node, we do not persist in gathering data in the snapshot mode. +SuzieQ poller can run in either **continuous mode** or **snapshot mode**. In continuous mode, the poller runs forever, gathering data at the specified period from the supplied inventory file. Alternately, it can run in snapshot mode where it gathers the data just once and stops once it has gathered data from all the nodes in the inventory file. If we cannot gather data from a node, we do not persist in gathering data in the snapshot mode. The default mode is the continuous mode. To use the snapshot mode, add the option `--run-once=update`. @@ -92,7 +96,7 @@ have production versions of that code. ## Polling Period -When polling in continuous mode, SuzieQ uses the default period specified in the suzieq-cfg.yml [configuration file](./config_file.md) (you can change the default location via the `-c` option when launching the poller). +When polling in continuous mode, SuzieQ uses the default period specified in the suzieq-cfg.yml [configuration file](./config_file.md) (you can change the default location via the `-c` option when launching the poller). Independent of this, you can change the polling period of any individual service by modifying (or adding) the `period: