Ceph使用---dashboard启用及Prometheus监控

一、Ceph dashboard介绍

Ceph dashboard 是通过一个 web 界面, 对已经运行的 ceph 集群进行状态查看及功能配置等功能, 早期 ceph 使用的是第三方的 dashboard 组件。

如:Calamari

Calamari 对外提供了十分漂亮的 Web 管理和监控界面, 以及一套改进的 REST API 接口(不同于 Ceph 自身的 REST API) , 在一定程度上简化了 Ceph 的管理。 最初 Calamari 是作为Inktank 公司的 Ceph 企业级商业产品来销售, 红帽 2015 年收购 Inktank 后为了更好地推动 Ceph 的发展, 对外宣布 Calamari 开源
https://github.com/ceph/calamari
优点:

  • 管理功能好
  • 界面友好
  • 可以利用它来部署 Ceph 和监控 Ceph

缺点:

  • 非官方
  • 依赖 OpenStack 某些包

VSM

Virtual Storage Manager (VSM)是 Intel 公司研发并且开源的一款 Ceph 集群管理和监控软件, 简化了一些 Ceph 集群部署的一些步骤, 可以简单的通过 WEB 页面来操作。
https://github.com/intel/virtual-storage-manager
优点:

  • 易部署
  • 轻量级
  • 灵活(可以自定义开发功能)

缺点:

  • 监控选项少
  • 缺乏 Ceph 管理功能

Inkscope

Inkscope 是一个 Ceph 的管理和监控系统, 依赖于 Ceph 提供的 API, 使用 MongoDB来存储实时的监控数据和历史信息。
https://github.com/inkscope/inkscope
优点:

  • 易部署
  • 轻量级
  • 灵活(可以自定义开发功能)

缺点:

  • 监控选项少
  • 缺乏 Ceph 管理功能

Ceph-Dash

Ceph-Dash 是用 Python 开发的一个 Ceph 的监控面板, 用来监控 Ceph 的运行状态。同时提供 REST API 来访问状态数据。
http://cephdash.crapworks.de/
优点:

  • 易部署
  • 轻量级
  • 灵活(可以自定义开发功能)

缺点:

  • 功能相对简单

二、启用dashboard 插件

https://docs.ceph.com/en/mimic/mgr/
https://docs.ceph.com/en/latest/mgr/dashboard/
https://packages.debian.org/unstable/ceph-mgr-dashboard #15 版本有依赖需要单独解决Ceph mgr 是一个多插件(模块化)的组件, 其组件可以单独的启用或关闭。

以下为在ceph-deploy 服务器操作:
新版本需要安装 dashboard, 而且必须安装在 mgr 节点, 否则报错如下:

The following packages have unmet dependencies:
ceph-mgr-dashboard : Depends: ceph-mgr (= 15.2.13-1~bpo10+1) but it is not going to
be installed
E: Unable to correct problems, you have held broken packages.

在ceph-mgr1节点安装ceph-dashboard插件

[root@ceph-mgr1 ~]# apt-cache madison ceph-mgr-dashboard
ceph-mgr-dashboard | 16.2.10-1focal | https://mirrors.tuna.tsinghua.edu.cn/ceph/debian-pacific focal/main amd64 Packages
ceph-mgr-dashboard | 15.2.16-0ubuntu0.20.04.1 | https://mirrors.tuna.tsinghua.edu.cn/ubuntu focal-updates/universe amd64 Packages
ceph-mgr-dashboard | 15.2.12-0ubuntu0.20.04.1 | https://mirrors.tuna.tsinghua.edu.cn/ubuntu focal-security/universe amd64 Packages
ceph-mgr-dashboard | 15.2.1-0ubuntu1 | https://mirrors.tuna.tsinghua.edu.cn/ubuntu focal/universe amd64 Packages
[root@ceph-mgr1 ~]# apt install ceph-mgr-dashboard

启用dashboard

cephadmin@ceph-deploy:~/ceph-cluster$ ceph mgr module -h  #查看帮助
cephadmin@ceph-deploy:~/ceph-cluster$ ceph mgr module ls  #16.2.10新版本模块太多,大概3200行左右

{
    "always_on_modules": [
        "balancer",
        "crash",
        "devicehealth",
        "orchestrator",
        "pg_autoscaler",
        "progress",
        "rbd_support",
        "status",
        "telemetry",
        "volumes"
    ],
    "enabled_modules": [
        "iostat",
        "nfs",
        "restful"
    ],
    "disabled_modules": [
        {
            "name": "alerts",
            "can_run": true,
            "error_string": "",
            "module_options": {
                "interval": {
                    "name": "interval",
                    "type": "secs",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "60",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "How frequently to reexamine health status",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "log_level": {
                    "name": "log_level",
                    "type": "str",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "",
                    "min": "",
                    "max": "",
                    "enum_allowed": [
                        "",
                        "critical",
                        "debug",
                        "error",
                        "info",
                        "warning"
                    ],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "log_to_cluster": {
                    "name": "log_to_cluster",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "False",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "log_to_cluster_level": {
                    "name": "log_to_cluster_level",
                    "type": "str",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "info",
                    "min": "",
                    "max": "",
                    "enum_allowed": [
                        "",
                        "critical",
                        "debug",
                        "error",
                        "info",
                        "warning"
                    ],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "log_to_file": {
                    "name": "log_to_file",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "False",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "smtp_destination": {
                    "name": "smtp_destination",
                    "type": "str",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "Email address to send alerts to",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "smtp_from_name": {
                    "name": "smtp_from_name",
                    "type": "str",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "Ceph",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "Email From: name",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "smtp_host": {
                    "name": "smtp_host",
                    "type": "str",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "SMTP server",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "smtp_password": {
                    "name": "smtp_password",
                    "type": "str",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "Password to authenticate with",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "smtp_port": {
                    "name": "smtp_port",
                    "type": "int",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "465",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "SMTP port",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "smtp_sender": {
                    "name": "smtp_sender",
                    "type": "str",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "SMTP envelope sender",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "smtp_ssl": {
                    "name": "smtp_ssl",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "True",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "Use SSL to connect to SMTP server",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "smtp_user": {
                    "name": "smtp_user",
                    "type": "str",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "User to authenticate as",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                }
            }
        },
        {
            "name": "cephadm",
            "can_run": false,
            "error_string": "loading remoto library:No module named 'remoto'",
            "module_options": {
                "allow_ptrace": {
                    "name": "allow_ptrace",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "False",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "allow SYS_PTRACE capability on ceph containers",
                    "long_desc": "The SYS_PTRACE capability is needed to attach to a process with gdb or strace.  Enabling this options can allow debugging daemons that encounter problems at runtime.",
                    "tags": [],
                    "see_also": []
                },
                "autotune_interval": {
                    "name": "autotune_interval",
                    "type": "secs",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "600",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "how frequently to autotune daemon memory",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "autotune_memory_target_ratio": {
                    "name": "autotune_memory_target_ratio",
                    "type": "float",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "0.7",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "ratio of total system memory to divide amongst autotuned daemons",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "config_checks_enabled": {
                    "name": "config_checks_enabled",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "False",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "Enable or disable the cephadm configuration analysis",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "config_dashboard": {
                    "name": "config_dashboard",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "True",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "manage configs like API endpoints in Dashboard.",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "container_image_alertmanager": {
                    "name": "container_image_alertmanager",
                    "type": "str",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "quay.io/prometheus/alertmanager:v0.23.0",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "Prometheus container image",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "container_image_base": {
                    "name": "container_image_base",
                    "type": "str",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "quay.io/ceph/ceph",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "Container image name, without the tag",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "container_image_grafana": {
                    "name": "container_image_grafana",
                    "type": "str",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "quay.io/ceph/ceph-grafana:8.3.5",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "Prometheus container image",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "container_image_haproxy": {
                    "name": "container_image_haproxy",
                    "type": "str",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "docker.io/library/haproxy:2.3",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "HAproxy container image",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "container_image_keepalived": {
                    "name": "container_image_keepalived",
                    "type": "str",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "docker.io/arcts/keepalived",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "Keepalived container image",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "container_image_node_exporter": {
                    "name": "container_image_node_exporter",
                    "type": "str",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "quay.io/prometheus/node-exporter:v1.3.1",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "Prometheus container image",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "container_image_prometheus": {
                    "name": "container_image_prometheus",
                    "type": "str",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "quay.io/prometheus/prometheus:v2.33.4",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "Prometheus container image",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "container_image_snmp_gateway": {
                    "name": "container_image_snmp_gateway",
                    "type": "str",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "docker.io/maxwo/snmp-notifier:v1.2.1",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "SNMP Gateway container image",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "container_init": {
                    "name": "container_init",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "True",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "Run podman/docker with `--init`",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "daemon_cache_timeout": {
                    "name": "daemon_cache_timeout",
                    "type": "secs",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "600",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "seconds to cache service (daemon) inventory",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "default_registry": {
                    "name": "default_registry",
                    "type": "str",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "docker.io",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "Search-registry to which we should normalize unqualified image names. This is not the default registry",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "device_cache_timeout": {
                    "name": "device_cache_timeout",
                    "type": "secs",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "1800",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "seconds to cache device inventory",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "device_enhanced_scan": {
                    "name": "device_enhanced_scan",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "False",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "Use libstoragemgmt during device scans",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "facts_cache_timeout": {
                    "name": "facts_cache_timeout",
                    "type": "secs",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "60",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "seconds to cache host facts data",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "host_check_interval": {
                    "name": "host_check_interval",
                    "type": "secs",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "600",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "how frequently to perform a host check",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "log_level": {
                    "name": "log_level",
                    "type": "str",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "",
                    "min": "",
                    "max": "",
                    "enum_allowed": [
                        "",
                        "critical",
                        "debug",
                        "error",
                        "info",
                        "warning"
                    ],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "log_to_cluster": {
                    "name": "log_to_cluster",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "True",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "log to the \"cephadm\" cluster log channel\"",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "log_to_cluster_level": {
                    "name": "log_to_cluster_level",
                    "type": "str",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "info",
                    "min": "",
                    "max": "",
                    "enum_allowed": [
                        "",
                        "critical",
                        "debug",
                        "error",
                        "info",
                        "warning"
                    ],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "log_to_file": {
                    "name": "log_to_file",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "False",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "manage_etc_ceph_ceph_conf": {
                    "name": "manage_etc_ceph_ceph_conf",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "False",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "Manage and own /etc/ceph/ceph.conf on the hosts.",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "manage_etc_ceph_ceph_conf_hosts": {
                    "name": "manage_etc_ceph_ceph_conf_hosts",
                    "type": "str",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "*",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "PlacementSpec describing on which hosts to manage /etc/ceph/ceph.conf",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "max_count_per_host": {
                    "name": "max_count_per_host",
                    "type": "int",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "10",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "max number of daemons per service per host",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "max_osd_draining_count": {
                    "name": "max_osd_draining_count",
                    "type": "int",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "10",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "max number of osds that will be drained simultaneously when osds are removed",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "migration_current": {
                    "name": "migration_current",
                    "type": "int",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "internal - do not modify",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "mode": {
                    "name": "mode",
                    "type": "str",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "root",
                    "min": "",
                    "max": "",
                    "enum_allowed": [
                        "cephadm-package",
                        "root"
                    ],
                    "desc": "mode for remote execution of cephadm",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "prometheus_alerts_path": {
                    "name": "prometheus_alerts_path",
                    "type": "str",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "/etc/prometheus/ceph/ceph_default_alerts.yml",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "location of alerts to include in prometheus deployments",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "registry_insecure": {
                    "name": "registry_insecure",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "False",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "Registry is to be considered insecure (no TLS available). Only for development purposes.",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "registry_password": {
                    "name": "registry_password",
                    "type": "str",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "Custom repository password. Only used for logging into a registry.",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "registry_url": {
                    "name": "registry_url",
                    "type": "str",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "Registry url for login purposes. This is not the default registry",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "registry_username": {
                    "name": "registry_username",
                    "type": "str",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "Custom repository username. Only used for logging into a registry.",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "ssh_config_file": {
                    "name": "ssh_config_file",
                    "type": "str",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "customized SSH config file to connect to managed hosts",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "use_repo_digest": {
                    "name": "use_repo_digest",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "True",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "Automatically convert image tags to image digest. Make sure all daemons use the same image",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "warn_on_failed_host_check": {
                    "name": "warn_on_failed_host_check",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "True",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "raise a health warning if the host check fails",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "warn_on_stray_daemons": {
                    "name": "warn_on_stray_daemons",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "True",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "raise a health warning if daemons are detected that are not managed by cephadm",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "warn_on_stray_hosts": {
                    "name": "warn_on_stray_hosts",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "True",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "raise a health warning if daemons are detected on a host that is not managed by cephadm",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                }
            }
        },
        {
            "name": "dashboard",
            "can_run": true,
            "error_string": "",
            "module_options": {
                "ACCOUNT_LOCKOUT_ATTEMPTS": {
                    "name": "ACCOUNT_LOCKOUT_ATTEMPTS",
                    "type": "int",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "10",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "ALERTMANAGER_API_HOST": {
                    "name": "ALERTMANAGER_API_HOST",
                    "type": "str",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "ALERTMANAGER_API_SSL_VERIFY": {
                    "name": "ALERTMANAGER_API_SSL_VERIFY",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "True",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "AUDIT_API_ENABLED": {
                    "name": "AUDIT_API_ENABLED",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "False",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "AUDIT_API_LOG_PAYLOAD": {
                    "name": "AUDIT_API_LOG_PAYLOAD",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "True",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "ENABLE_BROWSABLE_API": {
                    "name": "ENABLE_BROWSABLE_API",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "True",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "FEATURE_TOGGLE_CEPHFS": {
                    "name": "FEATURE_TOGGLE_CEPHFS",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "True",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "FEATURE_TOGGLE_ISCSI": {
                    "name": "FEATURE_TOGGLE_ISCSI",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "True",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "FEATURE_TOGGLE_MIRRORING": {
                    "name": "FEATURE_TOGGLE_MIRRORING",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "True",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "FEATURE_TOGGLE_NFS": {
                    "name": "FEATURE_TOGGLE_NFS",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "True",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "FEATURE_TOGGLE_RBD": {
                    "name": "FEATURE_TOGGLE_RBD",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "True",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "FEATURE_TOGGLE_RGW": {
                    "name": "FEATURE_TOGGLE_RGW",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "True",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "GANESHA_CLUSTERS_RADOS_POOL_NAMESPACE": {
                    "name": "GANESHA_CLUSTERS_RADOS_POOL_NAMESPACE",
                    "type": "str",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "GRAFANA_API_PASSWORD": {
                    "name": "GRAFANA_API_PASSWORD",
                    "type": "str",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "admin",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "GRAFANA_API_SSL_VERIFY": {
                    "name": "GRAFANA_API_SSL_VERIFY",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "True",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "GRAFANA_API_URL": {
                    "name": "GRAFANA_API_URL",
                    "type": "str",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "GRAFANA_API_USERNAME": {
                    "name": "GRAFANA_API_USERNAME",
                    "type": "str",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "admin",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "GRAFANA_FRONTEND_API_URL": {
                    "name": "GRAFANA_FRONTEND_API_URL",
                    "type": "str",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "GRAFANA_UPDATE_DASHBOARDS": {
                    "name": "GRAFANA_UPDATE_DASHBOARDS",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "False",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "ISCSI_API_SSL_VERIFICATION": {
                    "name": "ISCSI_API_SSL_VERIFICATION",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "True",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "PROMETHEUS_API_HOST": {
                    "name": "PROMETHEUS_API_HOST",
                    "type": "str",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "PROMETHEUS_API_SSL_VERIFY": {
                    "name": "PROMETHEUS_API_SSL_VERIFY",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "True",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "PWD_POLICY_CHECK_COMPLEXITY_ENABLED": {
                    "name": "PWD_POLICY_CHECK_COMPLEXITY_ENABLED",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "False",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "PWD_POLICY_CHECK_EXCLUSION_LIST_ENABLED": {
                    "name": "PWD_POLICY_CHECK_EXCLUSION_LIST_ENABLED",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "False",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "PWD_POLICY_CHECK_LENGTH_ENABLED": {
                    "name": "PWD_POLICY_CHECK_LENGTH_ENABLED",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "True",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "PWD_POLICY_CHECK_OLDPWD_ENABLED": {
                    "name": "PWD_POLICY_CHECK_OLDPWD_ENABLED",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "True",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "PWD_POLICY_CHECK_REPETITIVE_CHARS_ENABLED": {
                    "name": "PWD_POLICY_CHECK_REPETITIVE_CHARS_ENABLED",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "False",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "PWD_POLICY_CHECK_SEQUENTIAL_CHARS_ENABLED": {
                    "name": "PWD_POLICY_CHECK_SEQUENTIAL_CHARS_ENABLED",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "False",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "PWD_POLICY_CHECK_USERNAME_ENABLED": {
                    "name": "PWD_POLICY_CHECK_USERNAME_ENABLED",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "False",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "PWD_POLICY_ENABLED": {
                    "name": "PWD_POLICY_ENABLED",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "True",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "PWD_POLICY_EXCLUSION_LIST": {
                    "name": "PWD_POLICY_EXCLUSION_LIST",
                    "type": "str",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "osd,host,dashboard,pool,block,nfs,ceph,monitors,gateway,logs,crush,maps",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "PWD_POLICY_MIN_COMPLEXITY": {
                    "name": "PWD_POLICY_MIN_COMPLEXITY",
                    "type": "int",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "10",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "PWD_POLICY_MIN_LENGTH": {
                    "name": "PWD_POLICY_MIN_LENGTH",
                    "type": "int",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "8",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "REST_REQUESTS_TIMEOUT": {
                    "name": "REST_REQUESTS_TIMEOUT",
                    "type": "int",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "45",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "RGW_API_ACCESS_KEY": {
                    "name": "RGW_API_ACCESS_KEY",
                    "type": "str",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "RGW_API_ADMIN_RESOURCE": {
                    "name": "RGW_API_ADMIN_RESOURCE",
                    "type": "str",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "admin",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "RGW_API_SECRET_KEY": {
                    "name": "RGW_API_SECRET_KEY",
                    "type": "str",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "RGW_API_SSL_VERIFY": {
                    "name": "RGW_API_SSL_VERIFY",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "True",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "USER_PWD_EXPIRATION_SPAN": {
                    "name": "USER_PWD_EXPIRATION_SPAN",
                    "type": "int",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "0",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "USER_PWD_EXPIRATION_WARNING_1": {
                    "name": "USER_PWD_EXPIRATION_WARNING_1",
                    "type": "int",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "10",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "USER_PWD_EXPIRATION_WARNING_2": {
                    "name": "USER_PWD_EXPIRATION_WARNING_2",
                    "type": "int",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "5",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "crt_file": {
                    "name": "crt_file",
                    "type": "str",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "debug": {
                    "name": "debug",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "False",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "Enable/disable debug options",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "jwt_token_ttl": {
                    "name": "jwt_token_ttl",
                    "type": "int",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "28800",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "key_file": {
                    "name": "key_file",
                    "type": "str",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "log_level": {
                    "name": "log_level",
                    "type": "str",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "",
                    "min": "",
                    "max": "",
                    "enum_allowed": [
                        "",
                        "critical",
                        "debug",
                        "error",
                        "info",
                        "warning"
                    ],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "log_to_cluster": {
                    "name": "log_to_cluster",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "False",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "log_to_cluster_level": {
                    "name": "log_to_cluster_level",
                    "type": "str",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "info",
                    "min": "",
                    "max": "",
                    "enum_allowed": [
                        "",
                        "critical",
                        "debug",
                        "error",
                        "info",
                        "warning"
                    ],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "log_to_file": {
                    "name": "log_to_file",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "False",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "motd": {
                    "name": "motd",
                    "type": "str",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "The message of the day",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "server_addr": {
                    "name": "server_addr",
                    "type": "str",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "::",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "server_port": {
                    "name": "server_port",
                    "type": "int",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "8080",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "ssl": {
                    "name": "ssl",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "True",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "ssl_server_port": {
                    "name": "ssl_server_port",
                    "type": "int",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "8443",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "standby_behaviour": {
                    "name": "standby_behaviour",
                    "type": "str",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "redirect",
                    "min": "",
                    "max": "",
                    "enum_allowed": [
                        "error",
                        "redirect"
                    ],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "standby_error_status_code": {
                    "name": "standby_error_status_code",
                    "type": "int",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "500",
                    "min": "400",
                    "max": "599",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "url_prefix": {
                    "name": "url_prefix",
                    "type": "str",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                }
            }
        },
        {
            "name": "influx",
            "can_run": false,
            "error_string": "influxdb python module not found",
            "module_options": {
                "batch_size": {
                    "name": "batch_size",
                    "type": "str",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "5000",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "database": {
                    "name": "database",
                    "type": "str",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "ceph",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "hostname": {
                    "name": "hostname",
                    "type": "str",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "None",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "interval": {
                    "name": "interval",
                    "type": "str",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "30",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "log_level": {
                    "name": "log_level",
                    "type": "str",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "",
                    "min": "",
                    "max": "",
                    "enum_allowed": [
                        "",
                        "critical",
                        "debug",
                        "error",
                        "info",
                        "warning"
                    ],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "log_to_cluster": {
                    "name": "log_to_cluster",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "False",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "log_to_cluster_level": {
                    "name": "log_to_cluster_level",
                    "type": "str",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "info",
                    "min": "",
                    "max": "",
                    "enum_allowed": [
                        "",
                        "critical",
                        "debug",
                        "error",
                        "info",
                        "warning"
                    ],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "log_to_file": {
                    "name": "log_to_file",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "False",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "password": {
                    "name": "password",
                    "type": "str",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "None",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "port": {
                    "name": "port",
                    "type": "str",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "8086",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "ssl": {
                    "name": "ssl",
                    "type": "str",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "false",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "threads": {
                    "name": "threads",
                    "type": "str",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "5",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "username": {
                    "name": "username",
                    "type": "str",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "None",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "verify_ssl": {
                    "name": "verify_ssl",
                    "type": "str",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "true",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                }
            }
        },
        {
            "name": "insights",
            "can_run": true,
            "error_string": "",
            "module_options": {
                "log_level": {
                    "name": "log_level",
                    "type": "str",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "",
                    "min": "",
                    "max": "",
                    "enum_allowed": [
                        "",
                        "critical",
                        "debug",
                        "error",
                        "info",
                        "warning"
                    ],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "log_to_cluster": {
                    "name": "log_to_cluster",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "False",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "log_to_cluster_level": {
                    "name": "log_to_cluster_level",
                    "type": "str",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "info",
                    "min": "",
                    "max": "",
                    "enum_allowed": [
                        "",
                        "critical",
                        "debug",
                        "error",
                        "info",
                        "warning"
                    ],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "log_to_file": {
                    "name": "log_to_file",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "False",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                }
            }
        },
        {
            "name": "localpool",
            "can_run": true,
            "error_string": "",
            "module_options": {
                "failure_domain": {
                    "name": "failure_domain",
                    "type": "str",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "host",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "failure domain for any created local pool",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "log_level": {
                    "name": "log_level",
                    "type": "str",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "",
                    "min": "",
                    "max": "",
                    "enum_allowed": [
                        "",
                        "critical",
                        "debug",
                        "error",
                        "info",
                        "warning"
                    ],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "log_to_cluster": {
                    "name": "log_to_cluster",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "False",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "log_to_cluster_level": {
                    "name": "log_to_cluster_level",
                    "type": "str",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "info",
                    "min": "",
                    "max": "",
                    "enum_allowed": [
                        "",
                        "critical",
                        "debug",
                        "error",
                        "info",
                        "warning"
                    ],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "log_to_file": {
                    "name": "log_to_file",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "False",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "min_size": {
                    "name": "min_size",
                    "type": "int",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "default min_size for any created local pool",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "num_rep": {
                    "name": "num_rep",
                    "type": "int",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "3",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "default replica count for any created local pool",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "pg_num": {
                    "name": "pg_num",
                    "type": "int",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "128",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "default pg_num for any created local pool",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "prefix": {
                    "name": "prefix",
                    "type": "str",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "name prefix for any created local pool",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "subtree": {
                    "name": "subtree",
                    "type": "str",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "rack",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "CRUSH level for which to create a local pool",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                }
            }
        },
        {
            "name": "mirroring",
            "can_run": true,
            "error_string": "",
            "module_options": {
                "log_level": {
                    "name": "log_level",
                    "type": "str",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "",
                    "min": "",
                    "max": "",
                    "enum_allowed": [
                        "",
                        "critical",
                        "debug",
                        "error",
                        "info",
                        "warning"
                    ],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "log_to_cluster": {
                    "name": "log_to_cluster",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "False",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "log_to_cluster_level": {
                    "name": "log_to_cluster_level",
                    "type": "str",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "info",
                    "min": "",
                    "max": "",
                    "enum_allowed": [
                        "",
                        "critical",
                        "debug",
                        "error",
                        "info",
                        "warning"
                    ],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "log_to_file": {
                    "name": "log_to_file",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "False",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                }
            }
        },
        {
            "name": "osd_support",
            "can_run": true,
            "error_string": "",
            "module_options": {
                "log_level": {
                    "name": "log_level",
                    "type": "str",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "",
                    "min": "",
                    "max": "",
                    "enum_allowed": [
                        "",
                        "critical",
                        "debug",
                        "error",
                        "info",
                        "warning"
                    ],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "log_to_cluster": {
                    "name": "log_to_cluster",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "False",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "log_to_cluster_level": {
                    "name": "log_to_cluster_level",
                    "type": "str",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "info",
                    "min": "",
                    "max": "",
                    "enum_allowed": [
                        "",
                        "critical",
                        "debug",
                        "error",
                        "info",
                        "warning"
                    ],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "log_to_file": {
                    "name": "log_to_file",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "False",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                }
            }
        },
        {
            "name": "prometheus",
            "can_run": true,
            "error_string": "",
            "module_options": {
                "cache": {
                    "name": "cache",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "True",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "log_level": {
                    "name": "log_level",
                    "type": "str",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "",
                    "min": "",
                    "max": "",
                    "enum_allowed": [
                        "",
                        "critical",
                        "debug",
                        "error",
                        "info",
                        "warning"
                    ],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "log_to_cluster": {
                    "name": "log_to_cluster",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "False",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "log_to_cluster_level": {
                    "name": "log_to_cluster_level",
                    "type": "str",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "info",
                    "min": "",
                    "max": "",
                    "enum_allowed": [
                        "",
                        "critical",
                        "debug",
                        "error",
                        "info",
                        "warning"
                    ],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "log_to_file": {
                    "name": "log_to_file",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "False",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "rbd_stats_pools": {
                    "name": "rbd_stats_pools",
                    "type": "str",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "rbd_stats_pools_refresh_interval": {
                    "name": "rbd_stats_pools_refresh_interval",
                    "type": "int",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "300",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "scrape_interval": {
                    "name": "scrape_interval",
                    "type": "float",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "15.0",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "server_addr": {
                    "name": "server_addr",
                    "type": "str",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "server_port": {
                    "name": "server_port",
                    "type": "int",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "9283",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "the port on which the module listens for HTTP requests",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "stale_cache_strategy": {
                    "name": "stale_cache_strategy",
                    "type": "str",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "log",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "standby_behaviour": {
                    "name": "standby_behaviour",
                    "type": "str",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "default",
                    "min": "",
                    "max": "",
                    "enum_allowed": [
                        "default",
                        "error"
                    ],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "standby_error_status_code": {
                    "name": "standby_error_status_code",
                    "type": "int",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "500",
                    "min": "400",
                    "max": "599",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                }
            }
        },
        {
            "name": "selftest",
            "can_run": true,
            "error_string": "",
            "module_options": {
                "log_level": {
                    "name": "log_level",
                    "type": "str",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "",
                    "min": "",
                    "max": "",
                    "enum_allowed": [
                        "",
                        "critical",
                        "debug",
                        "error",
                        "info",
                        "warning"
                    ],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "log_to_cluster": {
                    "name": "log_to_cluster",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "False",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "log_to_cluster_level": {
                    "name": "log_to_cluster_level",
                    "type": "str",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "info",
                    "min": "",
                    "max": "",
                    "enum_allowed": [
                        "",
                        "critical",
                        "debug",
                        "error",
                        "info",
                        "warning"
                    ],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "log_to_file": {
                    "name": "log_to_file",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "False",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "roption1": {
                    "name": "roption1",
                    "type": "str",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "roption2": {
                    "name": "roption2",
                    "type": "str",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "xyz",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "rwoption1": {
                    "name": "rwoption1",
                    "type": "str",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "rwoption2": {
                    "name": "rwoption2",
                    "type": "int",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "rwoption3": {
                    "name": "rwoption3",
                    "type": "float",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "rwoption4": {
                    "name": "rwoption4",
                    "type": "str",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "rwoption5": {
                    "name": "rwoption5",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "rwoption6": {
                    "name": "rwoption6",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "True",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "testkey": {
                    "name": "testkey",
                    "type": "str",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "testlkey": {
                    "name": "testlkey",
                    "type": "str",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "testnewline": {
                    "name": "testnewline",
                    "type": "str",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                }
            }
        },
        {
            "name": "snap_schedule",
            "can_run": true,
            "error_string": "",
            "module_options": {
                "allow_m_granularity": {
                    "name": "allow_m_granularity",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "False",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "allow minute scheduled snapshots",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "dump_on_update": {
                    "name": "dump_on_update",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "False",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "dump database to debug log on update",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "log_level": {
                    "name": "log_level",
                    "type": "str",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "",
                    "min": "",
                    "max": "",
                    "enum_allowed": [
                        "",
                        "critical",
                        "debug",
                        "error",
                        "info",
                        "warning"
                    ],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "log_to_cluster": {
                    "name": "log_to_cluster",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "False",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "log_to_cluster_level": {
                    "name": "log_to_cluster_level",
                    "type": "str",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "info",
                    "min": "",
                    "max": "",
                    "enum_allowed": [
                        "",
                        "critical",
                        "debug",
                        "error",
                        "info",
                        "warning"
                    ],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "log_to_file": {
                    "name": "log_to_file",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "False",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                }
            }
        },
        {
            "name": "stats",
            "can_run": true,
            "error_string": "",
            "module_options": {
                "log_level": {
                    "name": "log_level",
                    "type": "str",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "",
                    "min": "",
                    "max": "",
                    "enum_allowed": [
                        "",
                        "critical",
                        "debug",
                        "error",
                        "info",
                        "warning"
                    ],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "log_to_cluster": {
                    "name": "log_to_cluster",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "False",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "log_to_cluster_level": {
                    "name": "log_to_cluster_level",
                    "type": "str",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "info",
                    "min": "",
                    "max": "",
                    "enum_allowed": [
                        "",
                        "critical",
                        "debug",
                        "error",
                        "info",
                        "warning"
                    ],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "log_to_file": {
                    "name": "log_to_file",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "False",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                }
            }
        },
        {
            "name": "telegraf",
            "can_run": true,
            "error_string": "",
            "module_options": {
                "address": {
                    "name": "address",
                    "type": "str",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "unixgram:///tmp/telegraf.sock",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "interval": {
                    "name": "interval",
                    "type": "secs",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "15",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "log_level": {
                    "name": "log_level",
                    "type": "str",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "",
                    "min": "",
                    "max": "",
                    "enum_allowed": [
                        "",
                        "critical",
                        "debug",
                        "error",
                        "info",
                        "warning"
                    ],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "log_to_cluster": {
                    "name": "log_to_cluster",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "False",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "log_to_cluster_level": {
                    "name": "log_to_cluster_level",
                    "type": "str",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "info",
                    "min": "",
                    "max": "",
                    "enum_allowed": [
                        "",
                        "critical",
                        "debug",
                        "error",
                        "info",
                        "warning"
                    ],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "log_to_file": {
                    "name": "log_to_file",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "False",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                }
            }
        },
        {
            "name": "test_orchestrator",
            "can_run": true,
            "error_string": "",
            "module_options": {
                "log_level": {
                    "name": "log_level",
                    "type": "str",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "",
                    "min": "",
                    "max": "",
                    "enum_allowed": [
                        "",
                        "critical",
                        "debug",
                        "error",
                        "info",
                        "warning"
                    ],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "log_to_cluster": {
                    "name": "log_to_cluster",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "False",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "log_to_cluster_level": {
                    "name": "log_to_cluster_level",
                    "type": "str",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "info",
                    "min": "",
                    "max": "",
                    "enum_allowed": [
                        "",
                        "critical",
                        "debug",
                        "error",
                        "info",
                        "warning"
                    ],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "log_to_file": {
                    "name": "log_to_file",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "False",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                }
            }
        },
        {
            "name": "zabbix",
            "can_run": true,
            "error_string": "",
            "module_options": {
                "discovery_interval": {
                    "name": "discovery_interval",
                    "type": "str",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "100",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "identifier": {
                    "name": "identifier",
                    "type": "str",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "interval": {
                    "name": "interval",
                    "type": "secs",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "60",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "log_level": {
                    "name": "log_level",
                    "type": "str",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "",
                    "min": "",
                    "max": "",
                    "enum_allowed": [
                        "",
                        "critical",
                        "debug",
                        "error",
                        "info",
                        "warning"
                    ],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "log_to_cluster": {
                    "name": "log_to_cluster",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "False",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "log_to_cluster_level": {
                    "name": "log_to_cluster_level",
                    "type": "str",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "info",
                    "min": "",
                    "max": "",
                    "enum_allowed": [
                        "",
                        "critical",
                        "debug",
                        "error",
                        "info",
                        "warning"
                    ],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "log_to_file": {
                    "name": "log_to_file",
                    "type": "bool",
                    "level": "advanced",
                    "flags": 1,
                    "default_value": "False",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "zabbix_host": {
                    "name": "zabbix_host",
                    "type": "str",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "None",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "zabbix_port": {
                    "name": "zabbix_port",
                    "type": "int",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "10051",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                },
                "zabbix_sender": {
                    "name": "zabbix_sender",
                    "type": "str",
                    "level": "advanced",
                    "flags": 0,
                    "default_value": "/usr/bin/zabbix_sender",
                    "min": "",
                    "max": "",
                    "enum_allowed": [],
                    "desc": "",
                    "long_desc": "",
                    "tags": [],
                    "see_also": []
                }
            }
        }
    ]
}
View Code

cephadmin@ceph-deploy:~/ceph-cluster$ ceph mgr module enable dashboard
cephadmin@ceph-deploy:~/ceph-cluster$

注:模块启用后还不能直接访问, 需要配置关闭 SSL 或启用 SSL 及指定监听地址。

启用 dashboard 模块

Ceph dashboard mgr 节点进行开启设置, 并且可以配置开启或者关闭 SSL, 如下:

cephadmin@ceph-deploy:~/ceph-cluster$ ceph config set mgr mgr/dashboard/ssl false #关闭SSL
cephadmin@ceph-deploy:~/ceph-cluster$ 
cephadmin@ceph-deploy:~/ceph-cluster$ ceph config set mgr mgr/dashboard/ceph-mgr1/server_addr 172.16.88.111 #指定dashboard监听地址
cephadmin@ceph-deploy:~/ceph-cluster$ 
cephadmin@ceph-deploy:~/ceph-cluster$ ceph config set mgr mgr/dashboard/ceph-mgr1/server_port 9009 #指定dashboard监听端口
cephadmin@ceph-deploy:~/ceph-cluster$ 
cephadmin@ceph-deploy:~/ceph-cluster$ ceph mgr services
{}
cephadmin@ceph-deploy:~/ceph-cluster$ ceph mgr services #查看ceph-mgr dashboard监听端口
{
    "dashboard": "http://172.16.88.111:9009/"
}
cephadmin@ceph-deploy:~/ceph-cluster$ 
cephadmin@ceph-deploy:~/ceph-cluster$ ceph -s  #检查ceph集群健康状态
  cluster:
    id:     8dc32c41-121c-49df-9554-dfb7deb8c975
    health: HEALTH_OK
 
  services:
    mon: 3 daemons, quorum ceph-mon1,ceph-mon2,ceph-mon3 (age 33h)
    mgr: ceph-mgr1(active, since 7m), standbys: ceph-mgr2
    mds: 2/2 daemons up, 2 standby
    osd: 9 osds: 9 up (since 33h), 9 in (since 7d)
    rgw: 2 daemons active (2 hosts, 1 zones)
 
  data:
    volumes: 1/1 healthy
    pools:   13 pools, 433 pgs
    objects: 843 objects, 1.8 GiB
    usage:   6.2 GiB used, 894 GiB / 900 GiB avail
    pgs:     433 active+clean
 
  io:
    client:   29 KiB/s rd, 0 B/s wr, 28 op/s rd, 19 op/s wr
 
cephadmin@ceph-deploy:~/ceph-cluster$ 
[root@ceph-mgr1 ~]# netstat -tnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 172.16.88.111:6805      0.0.0.0:*               LISTEN      22005/ceph-mgr      
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      666/systemd-resolve 
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1144/sshd: /usr/sbi 
tcp        0      0 0.0.0.0:40825           0.0.0.0:*               LISTEN      790/rpc.statd       
tcp        0      0 127.0.0.1:6010          0.0.0.0:*               LISTEN      21235/sshd: root@pt 
tcp        0      0 127.0.0.1:6011          0.0.0.0:*               LISTEN      22259/sshd: root@pt 
tcp        0      0 0.0.0.0:9443            0.0.0.0:*               LISTEN      7627/radosgw        
tcp        0      0 0.0.0.0:9900            0.0.0.0:*               LISTEN      7627/radosgw        
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/init              
tcp        0      0 172.16.88.111:6800      0.0.0.0:*               LISTEN      7187/ceph-mds       
tcp        0      0 172.16.88.111:9009      0.0.0.0:*               LISTEN      22005/ceph-mgr      
tcp        0      0 172.16.88.111:6801      0.0.0.0:*               LISTEN      7187/ceph-mds       
tcp        0      0 127.0.0.1:42225         0.0.0.0:*               LISTEN      777/containerd      
tcp        0      0 172.16.88.111:6802      0.0.0.0:*               LISTEN      855/ceph-mds        
tcp        0      0 172.16.88.111:6803      0.0.0.0:*               LISTEN      855/ceph-mds        
tcp        0      0 172.16.88.111:6804      0.0.0.0:*               LISTEN      22005/ceph-mgr      
tcp6       0      0 :::22                   :::*                    LISTEN      1144/sshd: /usr/sbi 
tcp6       0      0 ::1:6010                :::*                    LISTEN      21235/sshd: root@pt 
tcp6       0      0 ::1:6011                :::*                    LISTEN      22259/sshd: root@pt 
tcp6       0      0 :::37979                :::*                    LISTEN      790/rpc.statd       
tcp6       0      0 :::2049                 :::*                    LISTEN      887/ganesha.nfsd    
tcp6       0      0 :::111                  :::*                    LISTEN      1/init              
tcp6       0      0 :::8080                 :::*                    LISTEN      21994/ceph-mgr      
[root@ceph-mgr1 ~]# 

如果出现"Module 'dashboard' has failed: OSError("Port 8080 not free on '::'")"

cephadmin@ceph-deploy:~/ceph-cluster$ ceph -s
  cluster:
    id:     8dc32c41-121c-49df-9554-dfb7deb8c975
    health: HEALTH_ERR
            Module 'dashboard' has failed: OSError("Port 8080 not free on '::'")
 
  services:
    mon: 3 daemons, quorum ceph-mon1,ceph-mon2,ceph-mon3 (age 33h)
    mgr: ceph-mgr1(active, since 9m), standbys: ceph-mgr2
    mds: 2/2 daemons up, 2 standby
    osd: 9 osds: 9 up (since 33h), 9 in (since 7d)
    rgw: 2 daemons active (2 hosts, 1 zones)
 
  data:
    volumes: 1/1 healthy
    pools:   13 pools, 433 pgs
    objects: 843 objects, 1.8 GiB
    usage:   6.2 GiB used, 894 GiB / 900 GiB avail
    pgs:     433 active+clean
 
cephadmin@ceph-deploy:~/ceph-cluster$ ceph health detail 
HEALTH_ERR Module 'dashboard' has failed: OSError("Port 8080 not free on '::'")
[ERR] MGR_MODULE_ERROR: Module 'dashboard' has failed: OSError("Port 8080 not free on '::'")
    Module 'dashboard' has failed: OSError("Port 8080 not free on '::'")
cephadmin@ceph-deploy:~/ceph-cluster$ 

解决办法:

重启mgr服务
[root@ceph-mgr1 ~]# systemctl restart ceph-mgr@ceph-mgr1.service
或者 [root@ceph
-mgr1 ~]# systemctl restart ceph-mgr.target

再次设置dashboard监听地址与端口 cephadmin@ceph
-deploy:~/ceph-cluster$ ceph config set mgr mgr/dashboard/ssl false cephadmin@ceph-deploy:~/ceph-cluster$ cephadmin@ceph-deploy:~/ceph-cluster$ ceph config set mgr mgr/dashboard/ceph-mgr1/server_addr 172.16.88.111 cephadmin@ceph-deploy:~/ceph-cluster$ cephadmin@ceph-deploy:~/ceph-cluster$ ceph config set mgr mgr/dashboard/ceph-mgr1/server cephadmin@ceph-deploy:~/ceph-cluster$ ceph mgr services { "dashboard": "http://172.16.88.111:9009/" } cephadmin@ceph-deploy:~/ceph-cluster$_port 9009 cephadmin@ceph-deploy:~/ceph-cluster$

设置 dashboard 账户及密码

cephadmin@ceph-deploy:~/ceph-cluster$ touch pass.txt
cephadmin@ceph-deploy:~/ceph-cluster$ echo "12345678" > pass.txt
cephadmin@ceph-deploy:~/ceph-cluster$ ceph dashboard set-login-credentials admin -i pass.txt
******************************************************************
***          WARNING: this command is deprecated.              ***
*** Please use the ac-user-* related commands to manage users. ***
******************************************************************
Username and password updated
cephadmin@ceph-deploy:~/ceph-cluster$

dashboard 验证

ceph-node节点

ceph-osd详情

集群pool详情

cephfs

 radosgw

三、dashboard SSL启用

如果要使用 SSL 访问。 则需要配置签名证书。 证书可以使用 ceph 命令生成, 或是 opessl命令生成。

https://docs.ceph.com/en/latest/mgr/dashboard/

cephadmin@ceph-deploy:~/ceph-cluster$ ceph dashboard create-self-signed-cert #创建证书
Self-signed certificate created
cephadmin@ceph-deploy:~/ceph-cluster$ 
cephadmin@ceph-deploy:~/ceph-cluster$ ceph config set mgr mgr/dashboard/ssl true #开启ssl认证
cephadmin@ceph-deploy:~/ceph-cluster$ 
cephadmin@ceph-deploy:~/ceph-cluster$ ceph mgr services
{
    "dashboard": "http://172.16.88.111:9009/"
}
cephadmin@ceph-deploy:~/ceph-cluster$ 

重启ceph-mgr1服务
[root@ceph-mgr1 ~]# systemctl restart ceph-mgr.target 
cephadmin@ceph-deploy:~/ceph-cluster$ ceph mgr services
{
    "dashboard": "https://172.16.88.111:8443/"
}
cephadmin@ceph-deploy:~/ceph-cluster$

四、通过 prometheus监控ceph集群

[root@ceph-mgr1 ~]# mkdir /apps
[root@ceph-mgr1 ~]# cd /apps/
[root@ceph-mgr1 apps]# ls
[root@ceph-mgr1 apps]# wget https://github.com/prometheus/prometheus/releases/download/v2.39.1/prometheus-2.39.1.linux-amd64.tar.gz
[root@ceph-mgr1 apps]# tar -xf prometheus-2.39.1.linux-amd64.tar.gz
[root@ceph-mgr1 apps]# mv prometheus-2.39.1.linux-amd64 prometheus
[root@ceph-mgr1 prometheus]# vi /etc/systemd/system/prometheus.service
[root@ceph-mgr1 prometheus]# cat /etc/systemd/system/prometheus.service
[Unit]
Description=Prometheus Server
Documentation=https://prometheus.io/docs/introduction/overview/
After=network.target

[Service]
Restart=on-failure
WorkingDirectory=/apps/prometheus/
ExecStart=/apps/prometheus/prometheus --config.file=/apps/prometheus/prometheus.yml

[Install]
WantedBy=multi-user.target
[root@ceph-mgr1 prometheus]# 
[root@ceph-mgr1 prometheus]# systemctl daemon-reload 
[root@ceph-mgr1 prometheus]# systemctl enable --now prometheus.service 

部署 node_exporter
node 节点安装 node_exporter

root@easzlab-deploy:~# ansible 'vm' -m shell -a "mkdir /apps"
root@easzlab-deploy:~# mkdir ceph-prometheus
root@easzlab-deploy:~# cd ceph-prometheus/
root@easzlab-deploy:~/ceph-prometheus# vi /etc/systemd/system/node-exporter.service
[Unit]
Description=Prometheus Node Exporter
After=network.target

[Service]
ExecStart=/apps/node_exporter/node_exporter

[Install]
WantedBy=multi-user.target
root@easzlab-deploy:~/ceph-prometheus#
root@easzlab-deploy:~/ceph-prometheus# wget https://github.com/prometheus/node_exporter/releases/download/v1.4.0/node_exporter-1.4.0.linux-amd64.tar.gz
root@easzlab-deploy:~/ceph-prometheus# mv node_exporter-1.4.0.linux-amd64 node_exporter
root@easzlab-deploy:~# ansible 'vm' -m copy -a "src=/root/ceph-prometheus/node_exporter dest=/apps"
root@easzlab-deploy:~# ansible 'vm' -m copy -a "src=/root/ceph-prometheus/node-exporter.service dest=/etc/systemd/system/"
root@easzlab-deploy:~# ansible 'vm' -m shell -a "systemctl daemon-reload && systemctl enable --now node-exporter.service"

 配置 prometheus server 数据并验证

[root@ceph-mgr1 ~]# vim /apps/prometheus/prometheus.yml 
[root@ceph-mgr1 ~]# cat /apps/prometheus/prometheus.yml 
# my global config
global:
  scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
    - static_configs:
        - targets:
          # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: "prometheus"

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
      - targets: ["localhost:9090"]

  - job_name: 'ceph-node-data'
    static_configs:
      - targets: ['172.16.88.121:9100','172.16.88.122:9100','172.16.88.123:9100']
[root@ceph-mgr1 ~]# 
[root@ceph-mgr1 ~]# cd /apps/prometheus/
[root@ceph-mgr1 prometheus]# ./promtool check prometheus.yml 
promtool: error: expected command but got "prometheus.yml", try --help
[root@ceph-mgr1 prometheus]# ./promtool check config prometheus.yml 
Checking prometheus.yml
 SUCCESS: prometheus.yml is valid prometheus config file syntax

[root@ceph-mgr1 prometheus]# 
[root@ceph-mgr1 prometheus]# systemctl restart prometheus.service

通过 prometheus 监控 ceph 服务:

Ceph manager 内部的模块中包含了 prometheus 的监控模块,并监听在每个 manager 节点的 9283 端口, 该端口用于将采集到的信息通过 http 接口向 prometheus 提供数据。
https://docs.ceph.com/en/mimic/mgr/prometheus/?highlight=prometheus

启用 prometheus 监控模块

[root@ceph-deploy ~]# ceph mgr module enable prometheus
[root@ceph-deploy ~]#

验证 manager 数据

 配置 prometheus 采集数据

[root@ceph-mgr1 prometheus]# vi prometheus.yml 
[root@ceph-mgr1 prometheus]# cat prometheus.yml 
# my global config
global:
  scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
    - static_configs:
        - targets:
          # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: "prometheus"

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
      - targets: ["localhost:9090"]

  - job_name: 'ceph-node-data'
    static_configs:
      - targets: ['172.16.88.121:9100','172.16.88.122:9100','172.16.88.123:9100']

  - job_name: 'ceph-cluster-data'
    static_configs:
      - targets: ['172.16.88.111:9283']    
[root@ceph-mgr1 prometheus]# 
[root@ceph-mgr1 prometheus]#
[root@ceph-mgr1 prometheus]# ./promtool check config prometheus.yml 
Checking prometheus.yml
 SUCCESS: prometheus.yml is valid prometheus config file syntax

[root@ceph-mgr1 prometheus]# systemctl restart prometheus.service 

通过 granfana 显示对 ceph 的集群监控数据及 node 数据

安装略

dpkg -i grafana-enterprise_8.5.6_amd64.deb
systemctl enable --now grafana-server

添加Prometheus-ceph数据源

导入模板:

https://grafana.com/grafana/dashboards/5336 #ceph OSD

https://grafana.com/grafana/dashboards/5342 #ceph pools

https://grafana.com/grafana/dashboards/7056 #ceph cluser

 https://grafana.com/grafana/dashboards/2842

 

posted @ 2022-10-12 15:43  cyh00001  阅读(2300)  评论(0编辑  收藏  举报