--- /dev/null
+# Byte-compiled / optimized / DLL files
+__pycache__/
+*.py[cod]
+*$py.class
+
+# C extensions
+*.so
+
+# Distribution / packaging
+.Python
+env/
+build/
+develop-eggs/
+dist/
+downloads/
+eggs/
+.eggs/
+lib/
+lib64/
+parts/
+sdist/
+var/
+wheels/
+*.egg-info/
+.installed.cfg
+*.egg
+
+# PyInstaller
+# Usually these files are written by a python script from a template
+# before PyInstaller builds the exe, so as to inject date/other infos into it.
+*.manifest
+*.spec
+
+# Installer logs
+pip-log.txt
+pip-delete-this-directory.txt
+
+# Unit test / coverage reports
+htmlcov/
+.tox/
+.coverage
+.coverage.*
+.cache
+nosetests.xml
+coverage.xml
+*.cover
+.hypothesis/
+
+# Translations
+*.mo
+*.pot
+
+# Django stuff:
+*.log
+local_settings.py
+
+# Flask stuff:
+instance/
+.webassets-cache
+
+# Scrapy stuff:
+.scrapy
+
+# Sphinx documentation
+docs/_build/
+
+# PyBuilder
+target/
+
+# Jupyter Notebook
+.ipynb_checkpoints
+
+# pyenv
+.python-version
+
+# celery beat schedule file
+celerybeat-schedule
+
+# SageMath parsed files
+*.sage.py
+
+# dotenv
+.env
+
+# virtualenv
+.venv
+venv/
+ENV/
+
+# Spyder project settings
+.spyderproject
+.spyproject
+
+# Rope project settings
+.ropeproject
+
+# mkdocs documentation
+/site
+
+# mypy
+.mypy_cache/
+
+# vim swap files
+*.swp
+
+# Python virtualenv
+virtualenv/
+
+# ansible retry files
+*.retry
--- /dev/null
+# Installation Process
+
+## Objective:
+Run a Grafana instance to provide a monitoring dashboard to a ceph
+cluster.
+
+## Pre-requisites
+### Monitoring host
+- docker and docker-compose (for simplicity)
+- grafana image (official latest 4.3 release from docker hub)
+- graphite image (docker.io/abezhenar/graphite-centos7)
+- clone the cephmetrics repo (docker configuration, dashboards)
+- host that will run the monitor should have passwordless ssh to all the ceph
+nodes
+- the storage for the graphite database should be on SSD/flash if possible
+- needs PyYAML, tested with python 2.7.13
+
+### Ceph Cluster Nodes
+- collectd rpm (5.7 or above)
+
+## Installation Sequence
+Install the monitoring endpoint first, and then apply the collectd configuration
+to each of the ceph nodes.
+
+
+## Setting Up the monitoring endpoint
+On the monitoring host, perform the following steps;
+1. Pull the required docker images (*listed above*)
+2. we need to persist the grafana configuration db and settings, as well as the
+graphite data.
+```markdown
+mkdir -p /opt/docker/grafana/etc
+mkdir -p /opt/docker/grafana/data/plugins
+mkdir -p /opt/docker/graphite
+```
+3. Download the additional status panel plugin
+```markdown
+cd /opt/docker/grafana/data/plugins
+wget https://grafana.com/api/plugins/vonage-status-panel/versions/1.0.4/download
+unzip download
+rm -f download
+```
+4. Copy the seed .ini file for grafana to the containers etc directory, and reset
+the permissions to be compatible with the containers
+```markdown
+cp etc/grafana/grafana.ini /opt/docker/grafana/etc
+chown -R 104:107 /opt/docker/grafana
+chown -R 997 /opt/docker/graphite
+chmod g+w /opt/docker/graphite
+
+```
+5. Edit the docker-compose.yml example (if necessary)
+6. From the directory with the compose file, issue
+```
+docker-compose up -d
+```
+7. check that the containers are running and the endpoints are listening
+7.1 Use ```docker ps```
+7.2 use ```netstat``` and look for the following ports: 3000,80,2003,2004,7002
+7.3 open a browser and connect to graphite - it should be running on port 80 of
+the local machine
+8. Add the graphite instance as a datasource to grafana
+8.1 update setup/add_datasource.json with the IP of the host machine
+8.2 register the graphite instance to grafana as the default data source
+```markdown
+curl -u admin:admin -H "Content-Type: application/json" -X POST http://localhost:3000/api/datasources \
+--data-binary @setup/add_datasource.json
+```
+9. Install the grafana labs pie-chart plugin
+9.1 open a shell session to the grafana instance, and install the plugin
+```markdown
+docker exec -it grafana bash
+grafana-cli plugins install grafana-piechart-panel
+```
+10. the sample dashboards need to be added/edited to reflect the ceph cluster to
+monitor
+10.1 seed dashboards are provided in the dashboards/current directory
+10.2 edit ```dashboard.yml``` with the shortnames of the OSD's and RGW's, plus
+the dns domain name of the environment.
+10.3 run the following command
+```markdown
+python dashUpdater.py
+```
+
+
+### Updating the dashboards
+After adding ceph nodes to the configuration, update the ```dashboard.yml```
+file, and then rerun the ```dashUpdater.py``` script.
+
+
+## Configuration on Each Ceph Node
+You may need to update your SELINUX policy to allow the write_graphite plugin
+to access outbound on port 2003. To test, simply disable SELINUX
+1. install collectd (this will also require libcollectdclient)
+2. create the required directories for the cephmetrics collectors (see known
+issues [2])
+```markdown
+mkdir -p /usr/lib64/collectd/python-plugins/collectors
+```
+3. copy the collectors to the directory created in [2], and cephmetrics.py
+to /usr/lib64/collectd/python-plugins
+4. Setup the collectd plugins
+4.1 Update the write_graphite.conf file to specify the hostname where the
+grafana/graphite environment is (use a hostname not IP - anecdotally I found that
+with an IP the plugin fails to connect to the graphite container port?)
+4.2 copy the example plugin files to the /etc/collectd.d directory (i.e. cpu.conf,
+memory.conf etc)
+5. update the "ClusterName" parameter in the cephmetrics plugin file to match
+ the name of your ceph cluster (default is 'ceph')
+6. copy the example collectd.conf file to the ceph node (or update the existing
+configuration to ensure there is a ```Include "/etc/collectd.d/*.conf"``` entry)
+7. enable collectd
+8. start collectd
+9. check collectd is running without errors
+
+## Known Issues
+1. Following a reboot of an OSD node, the cephmetrics collectd plugin doesn't send disk
+stats. ***Workaround**: Following the reboot of an OSD, restart the collectd service.*
+2. the cephmetrics.py and collectors should be installed through python-setuptools to cut down on
+the installation steps.
+3. SELINUX may block the write_graphite plugin writing outbound on port 2003
+
+
+
+
--- /dev/null
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+ This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+ 0. Additional Definitions.
+
+ As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+ "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+ An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+ A "Combined Work" is a work produced by combining or linking an
+Application with the Library. The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+ The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+ The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+ 1. Exception to Section 3 of the GNU GPL.
+
+ You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+ 2. Conveying Modified Versions.
+
+ If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+ a) under this License, provided that you make a good faith effort to
+ ensure that, in the event an Application does not supply the
+ function or data, the facility still operates, and performs
+ whatever part of its purpose remains meaningful, or
+
+ b) under the GNU GPL, with none of the additional permissions of
+ this License applicable to that copy.
+
+ 3. Object Code Incorporating Material from Library Header Files.
+
+ The object code form of an Application may incorporate material from
+a header file that is part of the Library. You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+ a) Give prominent notice with each copy of the object code that the
+ Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the object code with a copy of the GNU GPL and this license
+ document.
+
+ 4. Combined Works.
+
+ You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+ a) Give prominent notice with each copy of the Combined Work that
+ the Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the Combined Work with a copy of the GNU GPL and this license
+ document.
+
+ c) For a Combined Work that displays copyright notices during
+ execution, include the copyright notice for the Library among
+ these notices, as well as a reference directing the user to the
+ copies of the GNU GPL and this license document.
+
+ d) Do one of the following:
+
+ 0) Convey the Minimal Corresponding Source under the terms of this
+ License, and the Corresponding Application Code in a form
+ suitable for, and under terms that permit, the user to
+ recombine or relink the Application with a modified version of
+ the Linked Version to produce a modified Combined Work, in the
+ manner specified by section 6 of the GNU GPL for conveying
+ Corresponding Source.
+
+ 1) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (a) uses at run time
+ a copy of the Library already present on the user's computer
+ system, and (b) will operate properly with a modified version
+ of the Library that is interface-compatible with the Linked
+ Version.
+
+ e) Provide Installation Information, but only if you would otherwise
+ be required to provide such information under section 6 of the
+ GNU GPL, and only to the extent that such information is
+ necessary to install and execute a modified version of the
+ Combined Work produced by recombining or relinking the
+ Application with a modified version of the Linked Version. (If
+ you use option 4d0, the Installation Information must accompany
+ the Minimal Corresponding Source and Corresponding Application
+ Code. If you use option 4d1, you must provide the Installation
+ Information in the manner specified by section 6 of the GNU GPL
+ for conveying Corresponding Source.)
+
+ 5. Combined Libraries.
+
+ You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+ a) Accompany the combined library with a copy of the same work based
+ on the Library, uncombined with any other library facilities,
+ conveyed under the terms of this License.
+
+ b) Give prominent notice with the combined library that part of it
+ is a work based on the Library, and explaining where to find the
+ accompanying uncombined form of the same work.
+
+ 6. Revised Versions of the GNU Lesser General Public License.
+
+ The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+ If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
--- /dev/null
+On the ceph node install collectd
+- tested with collectd-5.7.0-4.el7ost.x86_64
+
+Interval is set to 10 in collectd.conf
+
+write_graphite plugin configured as follows;
+
+LoadPlugin "write_graphite"
+<Plugin write_graphite>
+ <Node "local">
+ Host "192.168.1.52"
+ Port "2003"
+ Protocol "tcp"
+ LogSendErrors true
+ Prefix "collectd."
+ StoreRates true
+ AlwaysAppendDS false
+ EscapeCharacter "_"
+ PreserveSeparator true
+ SeparateInstances true
+ </Node>
+</Plugin>
+
+5.7 introduces the PreserveSeparator parm, allowing the type instance name to
+contain '.'. At the moment I used .'s in the metric name since the same plugin
+provides all metrics.
+
+Comments welcome!
+
+This is what an entry looks like as seen in influx
+collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.pools._rgw_root.num_bytes_recovered
+ | | \ \ \ \
+ | | \ \ \ \
+ | | | \ \ \
+prefix | hostname | plugin name | type |ceph|metric| metric name
+ name group
+
+In the case of pools, the metric name is prefixed by the pool name
+
+Added cephmetrics.conf to /etc/collectd.d dir
+
+mkdir -p /usr/lib64/collectd/python-plugins
+
+to the plugin dir, I copied
+ - cephmetrics.py
+ - collectors dir
+
+
+Known Issues
+1. Singlestat panels don't track the graph panel values 100% of the time
+
+
+
+
+Container Configuration - pulled from docker.io registry
+- grafana - grafana/grafana (official image)
+- graphite - nickstenning/graphite - https://hub.docker.com/r/nickstenning/graphite/
+
--- /dev/null
+# cephmetrics
+
+Cephmetrics is a tool that allows a user to visually monitor various metrics in a running Ceph cluster.
+
+## Prerequisites
+- RHEL 7 should be running on all hosts
+- A functional ceph cluster running version ceph-osd-10.2.7-27.el7cp.x86_64 or later is already up and running.
+- Another host machine independent of the ceph machines must be available. This host will be used to receive data pushed by the hosts in the Ceph cluster, and will run the dashboard to display that data.
+- A host machine on which to execute `ansible-playbook` to orchestrate the deployment must be available.
+- Passwordless SSH access from the deploy host to the ceph hosts. The username should be the same for all hosts.
+- Passwordless sudo access on the ceph and dashboard hosts
+- All hosts must share the same DNS domain
+
+## Resulting configuration
+
+After running this procedure, you will have the following configuration.
+- The ceph nodes will have `collectd` installed, along with collector plugins from `cephmetrics-collectd`
+- The dashboard host will have `grafana` installed and configured to display various dashboards by querying data received from Ceph nodes via a `graphite-web`, `python-carbon`, and `python-whisper` stack.
+
+## Installation
+
+### Install cephmetrics-ansible
+
+First, decide which machine you want to use to run `ansible-playbook`. If you used [`ceph-ansible`](https://github.com/ceph/ceph-ansible) to set up your cluster, you may want to reuse that same host to take advantage of the inventory file that was created as part of that process.
+
+Once the host is selected, perform the following steps there. This will install a repo which includes the cephmetrics installation code and ansible (version 2.2.3 or later):
+```
+sudo su -
+mkdir ~/cephmetrics
+subscription-manager repos --enable rhel-7-server-optional-rpms --enable rhel-7-server-rhscon-2-installer-rpms
+curl -L -o /etc/yum.repos.d/cephmetrics.repo http://download.ceph.com/cephmetrics/rpm-master/el7/cephmetrics.repo
+yum install cephmetrics-ansible
+```
+
+### Create or edit the inventory file
+
+Next, we need an inventory file. If you are running `ansible-playbook` on a host that previously ran `ceph-ansible`, you may simply modify `/etc/ansible/hosts`; otherwise you may copy `/usr/share/cephmetrics-ansible/inventory.sample` and modify it if you wish.
+
+The inventory file format looks like:
+
+ [ceph-grafana]
+ grafana_host.example.com
+
+ [osds]
+ osd0.example.com
+ osd1.example.com
+ osd2.example.com
+
+ [mons]
+ mon0.example.com
+ mon1.example.com
+ mon2.example.com
+
+ [mdss]
+ mds0.example.com
+
+ [rgws]
+ rgw0.example.com
+
+If you are running `ansible-playbook` on a host mentioned in the inventory file, you will need to append `ansible_connection=local` to each line in the inventory file that mentions that host. An example:
+ ```
+ my_host.example.com ansible_connection=local
+ ```
+Omit the mdss section if no ceph mds nodes are installed. Omit the rgws section if no rgw nodes are installed.
+
+Ansible variables can be set in a `vars.yml` file if necessary. If it is required, make sure to add `-e '@/path/to/vars.yml` to your `ansible-playbook` invocation below. [Click here](./ansible/README.md) for more information.
+
+## Deploy via ansible-playbook
+
+If you are using a `ceph-ansible` host, run these commands:
+```
+cd /usr/share/cephmetrics-ansible
+ansible-playbook -v playbook.yml
+```
+
+Otherwise, run these commands:
+```
+cd /usr/share/cephmetrics-ansible
+ansible-playbook -v -i /path/to/inventory playbook.yml
+```
+
+Note: The reason it is necessary to change directories is so that `ansible-playbook` will use the bundled `ansible.cfg`; there is currently no command-line argument allowing the specification of an arbitrary `.cfg` file.
--- /dev/null
+
+collectd
+- add network and cpu to all deployments
+- define standard easy roll-out conf (use collectd.d for write_graphite, cephmetrics, cpu and network)
+
+Dashboard
+
+
+collectd : cephmetrics
+- add metrics starting message so you know collection is active
+
+Python Modules
+Mon
+-
+
+RGW
+-
+
+
+
+Completed Items
+05/24 RGW: implement the latencies as different metrics to allow summarisation at the db layer
+05/24 MON: add ceph health status (OK/WARN) to output dict
+05/24 Dashboard: Add ceph health text
+05/29 OSD: OSD metrics added, with dashboard updates
\ No newline at end of file
--- /dev/null
+# Deploying cephmetrics with ansible
+
+This set of ansible roles, in combination with `playbook.yml`, provide a way to deploy cephmetrics to monitor a Ceph cluster.
+
+## Prerequisites
+- RHEL 7 is supported with `devel_mode` set to `True` or `False`. Ubuntu 16.04 and CentOS 7 are supported only when `devel_mode` is `True` at this point.
+- Currently only RHEL 7 is supported for all hosts
+- A functional [ceph](https://ceph.com/) cluster. [collectd](https://collectd.org/) will be used to collect metrics
+- A separate host to receive data pushed by hosts in the Ceph cluster, and run the dashboard to display that data.
+- An inventory file describing your cluster.
+- A host on which to execute `ansible-playbook` to orchestrate the deployment. This can be the same as the dashboard host.
+- Passwordless SSH access from the deploy host to the ceph hosts. The username should be the same for all hosts.
+- Passwordless sudo access on the ceph and dashboard hosts
+- All hosts must share the same DNS domain
+
+## Example inventory file
+
+ [ceph-grafana]
+ cephmetrics.example.com
+
+ [osds]
+ osd0.example.com
+ osd1.example.com
+ osd3.example.com
+
+ [mons]
+ mon0.example.com
+ mon1.example.com
+ mon2.example.com
+
+ [mdss]
+ mds0.example.com
+
+ [rgws]
+ rgw0.example.com
+
+Notes:
+- Omit any sections from the inventory file for which your cluster has no hosts.
+- If you are running `ansible-playbook` directly on the dashboard (`ceph-grafana`) host, its inventory entry should look like:
+ ```
+ [ceph-grafana]
+ cephmetrics.example.com ansible_connection=local
+ ```
+
+## Roles
+- [ceph-collectd](./roles/ceph-collectd/): Used for ceph cluster hosts
+- [ceph-graphite](./roles/ceph-graphite/): Used for the dashboard host
+- [ceph-grafana](./roles/ceph-grafana/): Used for the dashboard host
+
+## Variables
+You may override certain variables by creating a `vars.yml` file:
+- `ansible_ssh_user`: The user account use for SSH connections. This may also be set on a per-host basis in the inventory file.
+- `cluster`: The name of the Ceph cluster. Default: ceph
+- `firewalld_zone`: The `firewalld` zone to use when opening ports for Grafana and Carbon. Default: public
+- `devel_mode`: Whether to perform a development-mode deployment vs. a production deployment. Default: true
+- `whisper`: May be used to configure [whisper retention](http://graphite.readthedocs.io/en/latest/config-carbon.html#storage-schemas-conf) settings. Default:
+ ```
+ whisper:
+ retention:
+ - ['10s', '7d']
+ - ['1m', '30d']
+ - ['15m', '5y']
+ ```
+- `update_alerts`: Whether to update the alerts dashboard along with the rest. Removes any user-defined alerts. Default: false
+- `custom_repos`: A list of custom package repositories to enable. Currently supports yum systems only. Format:
+ ```
+ custom_repos:
+ yum:
+ - name: my_repo
+ baseurl: http://example.com/my/repo
+ ```
+
+## Current Limitations
+
+- Currently, metrics are only *displayed* for `osd` and `rgw` hosts.
+- Services are deployed on the dashboard host directly; there is not yet support for a containerized deployment.
+
+## Usage
+If you are not overriding any variables:
+```
+ ansible-playbook -v -i ./inventory
+```
+Or, if you are:
+```
+ ansible-playbook -v -i ./inventory -e '@vars.yml'
+```
--- /dev/null
+[defaults]
+roles_path: ./roles/
+host_key_checking: False
+forks: 50
+
+[ssh_connection]
+pipelining=True
--- /dev/null
+dummy:
+
+#cluster_name: ceph
+
+#containerized: true
+
+# Set the backend options, mgr+prometheus or cephmetrics+graphite
+#backend:
+# metrics: mgr # mgr, cephmetrics
+# storage: prometheus # prometheus, graphite
+
+# Turn on/off devel_mode
+#devel_mode: true
+
+# Set grafana admin user and password
+# You need to change these in the web UI on an already deployed machine, first
+# New deployments work fine
+#grafana:
+# admin_user: admin
+# admin_password: admin
+# You may want to change the default theme to dark
+# default_theme: light
+# If you use email alerting, configure your SMTP connection. If your SMTP Server dos not require authentication, skip smtp_user and smtp_password
+# smtp_enabled: false
+# smtp_host: smtp.mail.example.com:25
+# smtp_user: username
+# smtp_password: password
+# If you like to enable Anonymous login, set auth_anonymous to true
+# auth_anonymous: false
+# You can change this option if you want to keep your custom grafana configuration.
+# The script will still update the grafana config with the other configured options
+# but it won't overwrite your custom options.
+# overwrite_config: true
--- /dev/null
+[ceph-grafana]
+grafana_host.example.com
+
+[osds]
+osd0.example.com
+osd1.example.com
+osd2.example.com
+
+[mons]
+mon0.example.com
+mon1.example.com
+mon2.example.com
+
+[mdss]
+mds0.example.com
+
+[rgws]
+rgw0.example.com
--- /dev/null
+---
+- hosts: all
+ gather_facts: true
+ any_errors_fatal: true
+ tags:
+ - always
+
+- hosts:
+ - mgrs[0]
+ become: true
+ roles:
+ - ceph-mgr
+
+- hosts:
+ - ceph-grafana
+ become: true
+ roles:
+ - ceph-prometheus
+ tags:
+ - prometheus
+
+- hosts:
+ - ceph-grafana
+ become: true
+ roles:
+ - ceph-graphite
+
+- hosts:
+ - ceph-grafana
+ become: true
+ roles:
+ - ceph-grafana
+ tags:
+ - grafana
+
+- hosts:
+ - ceph-grafana
+ # These are roles used by ceph-ansible
+ - mons
+ - agents
+ - osds
+ - mdss
+ - rgws
+ - nfss
+ - restapis
+ - rbdmirrors
+ - clients
+ - mgrs
+ - iscsis
+ # This role is (so far) only used for testing
+ - cluster
+ become: true
+ roles:
+ - ceph-node-exporter
+ tags:
+ - node-exporter
+
+- hosts:
+ # These are roles used by ceph-ansible
+ - mons
+ - agents
+ - osds
+ - mdss
+ - rgws
+ - nfss
+ - restapis
+ - rbdmirrors
+ - clients
+ - mgrs
+ # This role is (so far) only used for testing
+ - cluster
+ become: true
+ roles:
+ - ceph-collectd
+
+- hosts: localhost
+ connection: local
+ gather_facts: false
+ tasks:
+ - name: Print dashboard URL
+ debug:
+ msg: "All done! You may access your dashboard at http://{{ groups['ceph-grafana'][0] }}:3000/ with your pre-defined user and password (admin/admin by default). Note that initially the dashboard will be incomplete; after a few minutes it should have enough data collected to function properly." # noqa 204
--- /dev/null
+---
+- name: purge grafana host
+ hosts:
+ - ceph-grafana
+ become: true
+ tasks:
+ - name: Stop and disable services
+ service:
+ name: "{{ item }}"
+ enabled: no
+ state: stopped
+ with_items:
+ - grafana-server
+ - carbon-cache
+ - httpd
+ failed_when: false
+
+ - name: Remove packages
+ package:
+ name: "{{ item }}"
+ state: absent
+ with_items:
+ - graphite-web
+ - python-carbon
+ - grafana
+ - cephmetrics
+ - prometheus
+
+ - name: Remove files
+ file:
+ dest: "{{ item }}"
+ state: absent
+ with_items:
+ - /var/lib/graphite
+ - /var/lib/graphite-web
+ - /var/lib/grafana
+ - /var/lib/carbon
+ - /etc/grafana/grafana.ini
+ - /etc/carbon/storage-schemas.conf
+ - /etc/httpd/conf.d/graphite-web.conf
+ - /etc/yum.repos.d/cephmetrics.repo
+ - /etc/yum.repos.d/grafana.repo
+ - /tmp/dashboard.yml
+ - /tmp/dashUpdater.py
+ - /tmp/dashboards
+
+ - name: Remove containers
+ docker_container:
+ name: "{{ item }}"
+ state: absent
+ with_items:
+ - grafana-server
+ - prometheus
+
+- name: purge all the hosts
+ hosts:
+ # These are roles used by ceph-ansible
+ - mons
+ - agents
+ - osds
+ - mdss
+ - rgws
+ - nfss
+ - restapis
+ - rbdmirrors
+ - clients
+ - mgrs
+ # This role is (so far) only used for testing
+ - cluster
+ become: true
+ tasks:
+ - name: Stop and disable collectd
+ service:
+ name: collectd
+ enabled: no
+ state: stopped
+ failed_when: false
+
+ - name: Remove packages
+ package:
+ name: "{{ item }}"
+ state: absent
+ with_items:
+ - cephmetrics-collectors
+ - collectd
+ - prometheus-node_exporter
+
+ - name: Remove files
+ file:
+ dest: "{{ item }}"
+ state: absent
+ with_items:
+ - /etc/collectd.d/cephmetrics.conf
+ - /etc/collectd.d/cpu.conf
+ - /etc/collectd.d/memory.conf
+ - /etc/collectd.d/nics.conf
+ - /etc/collectd.d/write_graphite.conf
+ - /etc/collectd.conf
+ - /etc/yum.repos.d/cephmetrics.repo
+ - /usr/lib64/collectd
+ - /usr/local/sbin/node_exporter
--- /dev/null
+---
+defaults:
+ cluster: ceph
+ collector_dependencies:
+ yum:
+ # For the json python module
+ - python-libs
+ # For the rados python module
+ - python-rados
+ # For the ceph_daemon python module
+ - ceph-common
+ # For semodule
+ - make
+ - libsemanage-python
+ - policycoreutils-python
+ - selinux-policy-devel
+ apt:
+ # For the json module, via libpython2.7-stdlib
+ - python2.7
+ # For the rados python module
+ - python-rados
+ # For the ceph_daemon python module
+ - ceph-common
--- /dev/null
+../../../../cephmetrics.py
\ No newline at end of file
--- /dev/null
+../../../../selinux/cephmetrics.te
\ No newline at end of file
--- /dev/null
+../../../../collectors
\ No newline at end of file
--- /dev/null
+../../../../etc
\ No newline at end of file
--- /dev/null
+---
+- name: Restart collectd
+ service:
+ name: collectd
+ enabled: yes
+ state: restarted
--- /dev/null
+---
+dependencies:
+ - role: cephmetrics-common
--- /dev/null
+---
+- name: Ship collectd.conf
+ copy:
+ src: files/etc/collectd.conf
+ dest: "{{ collectd_conf }}"
+ notify: Restart collectd
+
+- name: Set PluginDir in collectd.conf
+ replace:
+ dest: "{{ collectd_conf }}"
+ regexp: 'PluginDir ".*"'
+ replace: 'PluginDir "{{ collectd_dir }}"'
+ notify: Restart collectd
+
+- name: Set Include path in collectd.conf
+ replace:
+ dest: "{{ collectd_conf }}"
+ regexp: 'Include ".*"'
+ replace: 'Include "{{ collectd_conf_d }}/*.conf"'
+ notify: Restart collectd
+
+- name: Ship /etc/collectd.d or /etc/collectd/collectd.conf.d
+ copy:
+ src: files/etc/collectd.d/
+ dest: "{{ collectd_conf_d }}"
+ notify: Restart collectd
+
+- name: Set hostname in write_graphite.conf
+ replace:
+ dest: "{{ collectd_conf_d }}/write_graphite.conf"
+ regexp: 'Host ".*"'
+ replace: "Host \"{{ groups['ceph-grafana'][0] }}\""
+ notify: Restart collectd
+
+- name: Set cluster name in cephmetrics.conf
+ replace:
+ dest: "{{ collectd_conf_d }}/cephmetrics.conf"
+ regexp: 'ClusterName ".*"'
+ replace: 'ClusterName "{{ cluster }}"'
+ notify: Restart collectd
+
+- name: Set EventURL in cephmetrics.conf
+ lineinfile:
+ dest: "{{ collectd_conf_d }}/cephmetrics.conf"
+ regexp: 'EventURL ".*"'
+ insertafter: 'ClusterName ".*"'
+ line: " EventURL \"http://{{ groups['ceph-grafana'][0] }}:{{ graphite.web_port if graphite.service == 'graphite-web' else graphite.api_port }}/events/\"" # noqa 204
+ notify: Restart collectd
+
+- name: Set ModulePath in cephmetrics.conf
+ replace:
+ dest: "{{ collectd_conf_d }}/cephmetrics.conf"
+ regexp: 'ModulePath ".*"'
+ replace: 'ModulePath "{{ collectd_cephmetrics_dir }}"'
+ notify: Restart collectd
--- /dev/null
+---
+- name: Create collectors directory
+ file:
+ name: "{{ collectd_cephmetrics_dir }}/collectors"
+ state: directory
+
+- name: Ship collector plugins
+ copy:
+ src: files/collectors/
+ dest: "{{ collectd_cephmetrics_dir }}/collectors"
+ notify: Restart collectd
+
+- name: Ship cephmetrics.py
+ copy:
+ src: files/cephmetrics.py
+ dest: "{{ collectd_cephmetrics_dir }}"
+ notify: Restart collectd
--- /dev/null
+---
+- name: Install collectd
+ package:
+ name: collectd
+ state: latest
+ when:
+ - devel_mode
+ notify: Restart collectd
+
+- name: Install cephmetrics-collectors
+ package:
+ name: cephmetrics-collectors
+ state: latest
+ when:
+ - ansible_pkg_mgr == "yum"
+ - not devel_mode
+ notify: Restart collectd
+
+- name: Install dependencies for collector plugins
+ package:
+ name: "{{ item }}"
+ state: latest
+ with_items: "{{ collector_dependencies[ansible_pkg_mgr] }}"
+ when:
+ - devel_mode
+ notify: Restart collectd
--- /dev/null
+---
+- include: merge_vars.yml
+ tags:
+ - always
+
+- name: Skip if not configured
+ meta: end_play
+ when: backend.metrics != 'cephmetrics'
+
+- include: setup_repos.yml
+ tags:
+ - packages
+ - repos
+
+- include: install_packages.yml
+ tags:
+ - packages
+
+- include: set_collectd_vars.yml
+ tags:
+ - collectors
+
+- include: install_collectd_plugins.yml
+ when:
+ - devel_mode
+ tags:
+ - collectors
+
+- include: configure_collectd.yml
+ tags:
+ - collectors
+
+- include: selinux.yml
+ when:
+ - ansible_pkg_mgr == "yum"
+ - ansible_selinux.status is defined
+ - ansible_selinux.status == 'enabled'
+ tags:
+ - selinux
+
+- include: start_collectd.yml
+ tags:
+ - services
--- /dev/null
+../../cephmetrics-common/tasks/merge_vars.yml
\ No newline at end of file
--- /dev/null
+---
+- name: Enable collectd_tcp_network_connect SELinux boolean
+ seboolean:
+ name: collectd_tcp_network_connect
+ state: yes
+ persistent: yes
+
+- name: Restore SELinux context of OSD journals
+ shell: "restorecon -R -v /var/lib/ceph/osd/*/{journal,block.wal}"
+ when: "'osds' in group_names"
+ register: restorecon
+ changed_when: restorecon.stdout|length != 0
+ failed_when: restorecon.rc != 0 and restorecon.rc != 255
+
+- include: selinux_module.yml
+ when:
+ - devel_mode
--- /dev/null
+---
+- name: Remove SELinux policy package
+ command: semodule -r cephmetrics
+ failed_when: false
+
+- name: Remove any SELinux-related files
+ file:
+ path: "{{ item }}"
+ state: absent
+ with_items:
+ - /tmp/cephmetrics.fc
+ - /tmp/cephmetrics.if
+ - /tmp/cephmetrics.pp
+ - /tmp/cephmetrics.te
+
+- name: Copy SELinux type enforcement file
+ copy:
+ src: cephmetrics.te
+ dest: /tmp/cephmetrics.te
+
+- name: Build SELinux policy package
+ command: make -f /usr/share/selinux/devel/Makefile cephmetrics.pp
+ args:
+ chdir: /tmp
+
+- name: Load SELinux policy package
+ command: semodule -i /tmp/cephmetrics.pp
+ notify: Restart collectd
--- /dev/null
+---
+- name: Set collectd_dir
+ set_fact:
+ collectd_dir: "/usr/lib{{ '64' if ansible_pkg_mgr == 'yum' else '' }}/collectd"
+
+- name: Set collectd_cephmetrics_dir
+ set_fact:
+ collectd_cephmetrics_dir: "{{ collectd_dir }}/cephmetrics"
+
+- name: Set collectd_conf
+ set_fact:
+ collectd_conf: "/etc/{{ 'collectd/' if ansible_pkg_mgr == 'apt' else '' }}collectd.conf"
+
+- name: Set collectd_conf_d
+ set_fact:
+ collectd_conf_d: "/etc/collectd{{ '/collectd.conf' if ansible_pkg_mgr == 'apt' else '' }}.d"
+
--- /dev/null
+---
+- name: Add collectd repo
+ template:
+ src: collectd.list
+ dest: /etc/apt/sources.list.d/collectd.list
+ when:
+ - ansible_pkg_mgr == 'apt'
+ - devel_mode
+
+- name: Add collectd.org GPG key to apt
+ apt_key:
+ id: 3994D24FB8543576
+ state: present
+ keyserver: ha.pool.sks-keyservers.net
+ when:
+ - ansible_pkg_mgr == 'apt'
+ - devel_mode
+
+- name: Update apt cache
+ apt:
+ update_cache: true
+ when:
+ - ansible_pkg_mgr == 'apt'
+ - devel_mode
--- /dev/null
+---
+- name: Start collectd
+ service:
+ name: collectd
+ enabled: yes
+ state: started
--- /dev/null
+deb http://pkg.ci.collectd.org/deb {{ ansible_distribution_release }} collectd-5.7
--- /dev/null
+import pytest
+
+testinfra_hosts = ['!ceph-grafana']
+
+
+class TestCollectd(object):
+ def maybe_skip(self, host):
+ vars = host.ansible.get_variables()
+ if vars.get('backend', dict()).get('metrics', 'mgr') != 'cephmetrics':
+ pytest.skip()
+
+ def test_service_enabled(self, host):
+ self.maybe_skip(host)
+ assert host.service('collectd').is_enabled
+ assert host.service('collectd').is_running
+
+ def test_logfile_present(self, host):
+ self.maybe_skip(host)
+ assert host.file('/var/log/collectd-cephmetrics.log').is_file
--- /dev/null
+---
+defaults:
+ docker:
+ packages:
+ yum:
+ - docker
+ - docker-python
+ apt:
+ - docker.io
+ - python-docker
+ network_name: cephmetrics
+ service_name: docker
--- /dev/null
+---
+dependencies:
+ - role: cephmetrics-common
--- /dev/null
+---
+- name: Install packages
+ package:
+ name: "{{ item }}"
+ state: latest
+ with_items: "{{ docker.packages[ansible_pkg_mgr] }}"
--- /dev/null
+---
+- include: merge_vars.yml
+ tags:
+ - always
+
+- name: End play if no containers are desired
+ meta: end_play
+ when:
+ - not containerized
+
+- include: sanity.yml
+ tags:
+ - sanity
+
+- include: install_packages.yml
+ tags:
+ - packages
+
+- include: start_services.yml
+ tags:
+ - services
+
+- name: Create a network
+ docker_network:
+ name: "{{ docker.network_name }}"
+ driver: bridge
--- /dev/null
+../../cephmetrics-common/tasks/merge_vars.yml
\ No newline at end of file
--- /dev/null
+---
+ - name: Fail when containerized and classic are combined
+ fail:
+ msg: "Containers are not supported with backend.metrics set to 'cephmetrics'!"
+ when:
+ - backend.metrics == 'cephmetrics'
+ - containerized
--- /dev/null
+---
+- name: Reload systemd
+ systemd:
+ daemon_reload: yes
+ tags:
+ - services
+
+- name: Enable and start services
+ service:
+ name: "{{ docker.service_name }}"
+ state: started
+ enabled: true
--- /dev/null
+import pytest
+
+testinfra_hosts = ['ceph-grafana']
+
+
+class TestDocker(object):
+ def maybe_skip(self, host):
+ vars = host.ansible.get_variables()
+ if vars.get('containerized', False) is False:
+ pytest.skip()
+
+ def test_docker_running(self, host):
+ self.maybe_skip(host)
+ assert host.service('docker').is_enabled
+ assert host.service('docker').is_running
--- /dev/null
+---
+defaults:
+ # graphite defaults are now in the cephmetrics-common role since the
+ # ceph-collectd role needs access to them
+ replace_dashboards: true
+ update_alerts: false
+ grafana:
+ container_name: "grafana/grafana"
+ container_cpu_period: 100000
+ container_cpu_cores: 2
+ # container_memory is in GB
+ container_memory: 4
+ # version currently only applies to containers
+ version: latest
+ uid: 472
+ datasource: Local
+ pull_image: true
+ trust_image_content: false
+ # You need to change these in the web UI on an already deployed machine, first
+ # New deployments work fine
+ admin_user: admin
+ admin_password: admin
+ default_theme: light
+ smtp_enabled: false
+ auth_anonymous: false
+ # You can change this option if you want to keep your custom grafana configuration.
+ # The script will still update the grafana config with the other configured options
+ # but it won't overwrite your custom options.
+ overwrite_config: true
+ plugins:
+ - vonage-status-panel
+ - grafana-piechart-panel
+devel_packages:
+ yum:
+ # unzip is needed to extract the Vonage plugin
+ - unzip
+ - grafana
+ # for dashUpdater.py
+ - PyYAML
+ - python-requests
+ apt:
+ # unzip is needed to extract the Vonage plugin
+ - unzip
+ - grafana
+ # for dashUpdater.py
+ - python-yaml
+ - python-requests
--- /dev/null
+../../../../dashUpdater.py
\ No newline at end of file
--- /dev/null
+../../../../dashboards/
\ No newline at end of file
--- /dev/null
+# This file is managed by ansible, don't make changes here - they will be
+# overwritten.
+[Unit]
+Description=grafana-server
+After=docker.service
+
+[Service]
+EnvironmentFile=-/etc/environment
+ExecStart=/usr/bin/docker start --attach grafana-server
+ExecStop=-/usr/bin/docker stop grafana-server
+Restart=always
+RestartSec=10s
+TimeoutStartSec=120
+TimeoutStopSec=15
+
+[Install]
+WantedBy=multi-user.target
--- /dev/null
+../../../../etc/grafana/grafana.ini
\ No newline at end of file
--- /dev/null
+deb https://packagecloud.io/grafana/stable/debian/ jessie main
--- /dev/null
+---
+- name: Enable service
+ # We use the systemd module here so we can use the daemon_reload feature,
+ # since we're shipping the .service file ourselves
+ systemd:
+ name: grafana-server
+ daemon_reload: true
+ enabled: true
--- /dev/null
+---
+dependencies:
+ - role: cephmetrics-common
--- /dev/null
+---
+- name: Check if notification channel is present
+ uri:
+ url: "http://localhost:3000/api/alert-notifications"
+ method: GET
+ user: "{{ grafana.admin_user }}"
+ password: "{{ grafana.admin_password }}"
+ force_basic_auth: yes
+ status_code: 200
+ register: notifications
+
+- name: Create present_notifications var
+ set_fact:
+ present_notifications: {}
+
+- name: Set present_notifications
+ set_fact:
+ present_notifications: "{{ present_notifications.update({item.name: item.id}) }}{{ present_notifications }}"
+ with_items: "{{ notifications.json }}"
+
+- name: Add notification channel
+ uri:
+ url: "http://localhost:3000/api/alert-notifications"
+ method: POST
+ user: "{{ grafana.admin_user }}"
+ password: "{{ grafana.admin_password }}"
+ force_basic_auth: yes
+ status_code: 200
+ body_format: json
+ body: '{"name": "cephmetrics", "type": "email", "isDefault": false}'
+ when: "'cephmetrics' not in present_notifications"
--- /dev/null
+---
+- name: Check firewalld status
+ shell: "systemctl show firewalld | grep UnitFileState"
+ register: firewalld_status
+ failed_when: false
+ changed_when: false
+ tags:
+ - skip_ansible_lint
+
+- name: Open ports for Grafana
+ firewalld:
+ port: "{{ item }}"
+ zone: "{{ firewalld_zone }}"
+ state: enabled
+ immediate: true
+ permanent: true
+ with_items:
+ - 3000/tcp
+ when: "'enabled' in firewalld_status.stdout"
--- /dev/null
+---
+- name: Make sure grafana is down
+ service:
+ name: grafana-server
+ state: stopped
+
+- name: Wait for grafana to be stopped
+ wait_for:
+ port: 3000
+ state: stopped
+
+- name: Write grafana.ini
+ copy:
+ src: files/grafana.ini
+ dest: /etc/grafana/grafana.ini
+ owner: root
+ group: grafana
+ mode: 0640
+ force: "{{ grafana.overwrite_config }}"
+ tags: [ini]
+
+- name: Set owner on /etc/grafana
+ file:
+ path: /etc/grafana
+ state: directory
+ # This is the UID used by the grafana/grafana container
+ owner: "{{ grafana.uid }}"
+ recurse: true
+ when:
+ - containerized
+ tags: [ini]
+
+- name: Set domain in grafana.ini
+ ini_file:
+ path: /etc/grafana/grafana.ini
+ section: server
+ option: domain
+ value: "{{ ansible_fqdn }}"
+ tags: [ini]
+
+- name: Set admin_user in grafana.ini
+ ini_file:
+ path: /etc/grafana/grafana.ini
+ section: security
+ option: admin_user
+ value: "{{ grafana.admin_user }}"
+ no_log: true
+ tags: [ini]
+
+- name: Set admin_password in grafana.ini
+ ini_file:
+ path: /etc/grafana/grafana.ini
+ section: security
+ option: admin_password
+ value: "{{ grafana.admin_password }}"
+ no_log: true
+ tags: [ini]
+
+- name: Set grafana default_theme grafana.ini
+ ini_file:
+ path: /etc/grafana/grafana.ini
+ section: users
+ option: default_theme
+ value: "{{ grafana.default_theme }}"
+ no_log: true
+ tags: [ini]
+
+- name: Set SMTP configuration in grafana.ini
+ ini_file:
+ path: /etc/grafana/grafana.ini
+ section: smtp
+ option: enabled
+ value: "{{ grafana.smtp_enabled }}"
+ no_log: true
+ tags: [ini]
+
+- name: Set SMTP host in grafana.ini
+ ini_file:
+ path: /etc/grafana/grafana.ini
+ section: smtp
+ option: host
+ value: "{{ grafana.smtp_host }}"
+ no_log: true
+ tags: [ini]
+ when: grafana.smtp_enabled
+
+- name: Set SMTP user in grafana.ini
+ ini_file:
+ path: /etc/grafana/grafana.ini
+ section: smtp
+ option: user
+ value: "{{ grafana.smtp_user }}"
+ no_log: true
+ tags: [ini]
+ when: grafana.smtp_enabled and grafana.smtp_user is defined
+
+- name: Set SMTP password in grafana.ini
+ ini_file:
+ path: /etc/grafana/grafana.ini
+ section: smtp
+ option: password
+ value: "{{ grafana.smtp_password }}"
+ no_log: true
+ tags: [ini]
+ when: grafana.smtp_enabled and grafana.smtp_password is defined
+
+- name: Set anonymous login in grafana.ini
+ ini_file:
+ path: /etc/grafana/grafana.ini
+ section: auth.anonymous
+ option: enabled
+ value: "{{ grafana.auth_anonymous }}"
+ no_log: true
+ tags: [ini]
+ when: grafana.auth_anonymous
+
+- include: grafana_plugins.yml
+ when:
+ - devel_mode
+ - not containerized
+
+- name: Enable and start grafana
+ service:
+ name: grafana-server
+ state: restarted
+ enabled: true
+
+- name: Wait for grafana to start
+ wait_for:
+ port: 3000
+
+- name: Set grafana_data_source
+ set_fact:
+ grafana_data_source: >
+ {
+ "name":"{{ grafana.datasource }}",
+ "type":"graphite",
+ "url":"http://localhost:{{ graphite.web_port if graphite.service == 'graphite-web' else graphite.api_port }}",
+ "access":"proxy",
+ "basicAuth":false,
+ "isDefault":true
+ }
+ when: backend.storage == 'graphite'
+
+- name: Set grafana_data_source
+ set_fact:
+ grafana_data_source: >
+ {
+ "name":"{{ grafana.datasource }}",
+ "type":"prometheus",
+ "url":"http://prometheus:9090",
+ "access":"proxy",
+ "basicAuth":false,
+ "isDefault":true
+ }
+ when: backend.storage == 'prometheus'
+
+- name: Add data source
+ uri:
+ url: http://localhost:3000/api/datasources
+ method: POST
+ user: "{{ grafana.admin_user }}"
+ password: "{{ grafana.admin_password }}"
+ force_basic_auth: yes
+ body_format: json
+ body: "{{ grafana_data_source }}"
+ # If we get a 409 Conflict, it means we're already set up. We'll update
+ # after this.
+ status_code: 200,409
+ register: grafana_data_source_result
+ # If grafana is containerized, it may take a few more seconds to start after
+ # the port is open.
+ until: grafana_data_source_result.status != -1
+ retries: 6
+ delay: 5
+
+- name: Get datasource ID
+ uri:
+ url: "http://localhost:3000/api/datasources/id/{{ grafana.datasource }}"
+ method: GET
+ user: "{{ grafana.admin_user }}"
+ password: "{{ grafana.admin_password }}"
+ force_basic_auth: yes
+ register: grafana_data_source_id
+ when: grafana_data_source_result is defined and grafana_data_source_result.status == 409
+
+- name: Update datasource
+ uri:
+ url: "http://localhost:3000/api/datasources/{{ grafana_data_source_id.json.id }}"
+ method: PUT
+ user: "{{ grafana.admin_user }}"
+ password: "{{ grafana.admin_password }}"
+ force_basic_auth: yes
+ body_format: json
+ body: "{{ grafana_data_source }}"
+ status_code: 200
+ when: grafana_data_source_result is defined and grafana_data_source_result.status == 409
+
+- include: push_dashboards_dashupdater.yml
+ when:
+ - not containerized
+ - backend.metrics == "cephmetrics"
+ - backend.storage == "graphite"
+ tags:
+ - dashboards
+
+- include: push_dashboards.yml
+ when:
+ - backend.metrics == "mgr"
+ - backend.storage == "prometheus"
+ tags:
+ - dashboards
+
+- include: add_notification_channel.yml
+ tags:
+ - notification
--- /dev/null
+---
+- name: Create Grafana plugins directory
+ file:
+ name: /var/lib/grafana/plugins
+ state: directory
+
+- name: Install Grafana plugins
+ command: "grafana-cli plugins install {{ item }}"
+ with_items: "{{ grafana.plugins }}"
+
+- name: Update Grafana plugins
+ command: "grafana-cli plugins update {{ item }}"
+ with_items: "{{ grafana.plugins }}"
+
+- name: Update status-panel for readability within the 'light' theme (older versions)
+ command: "sed -i.bak -e 's/green/rgb(1,167,1)/g' /var/lib/grafana/plugins/vonage-status-panel/dist/css/status_panel.css"
+ tags:
+ - skip_ansible_lint
+
+- name: Update status-panel for readability within the 'light' theme (newer versions)
+ replace:
+ path: "/var/lib/grafana/plugins/vonage-status-panel/dist/status_ctrl.js"
+ regexp: "ok: 'rgba\\(50, 128, 45, 0\\.9\\)',"
+ replace: "ok: 'rgb(1,167,1)',"
+ backup: no
+ failed_when: false
--- /dev/null
+---
+- name: Install packages
+ package:
+ name: "{{ item }}"
+ state: latest
+ with_items: "{{ devel_packages[ansible_pkg_mgr] }}"
+ when: devel_mode
+
+- name: Install cephmetrics
+ package:
+ name: cephmetrics
+ state: latest
+ when: not devel_mode
--- /dev/null
+---
+- include: merge_vars.yml
+ tags:
+ - always
+
+- include: sanity.yml
+ tags:
+ - sanity
+
+- include: setup_container.yml
+ when:
+ - containerized
+
+- include: setup_repos.yml
+ when:
+ - not containerized
+ tags:
+ - packages
+ - repos
+
+- include: install_packages.yml
+ when: not containerized
+ tags:
+ - packages
+
+- include: configure_firewall.yml
+ tags:
+ - firewall
+
+- include: configure_grafana.yml
+ tags:
+ - grafana
+
+- include: start_services.yml
+ tags:
+ - services
--- /dev/null
+../../cephmetrics-common/tasks/merge_vars.yml
\ No newline at end of file
--- /dev/null
+---
+# First, look at our local filesystem for the dashboards we need to push.
+- name: Stat dashboard files
+ delegate_to: localhost
+ stat:
+ path: "{{ item }}"
+ follow: true
+ get_attributes: false
+ get_checksum: false
+ get_md5: false
+ get_mime: false
+ connection: local
+ become: false
+ with_fileglob: "dashboards/{{ backend.metrics }}-{{ backend.storage }}/*.json"
+ register: dashboard_files
+ no_log: true
+
+# Before we do any of the shenanigans further down this file, we need to create
+# an object to popluate with dashboard information
+- name: Create dashboards var
+ set_fact:
+ dashboards: {}
+
+# The below populates the dashboards dict to look like:
+# dashboards:
+# ceph-at-a-glance:
+# body: <entire contents of ceph-at-a-glance.json - as a dict>
+# ... and so on
+- name: Set dashboards var keys
+ set_fact:
+ dashboards: "{% for item in dashboard_files.results %}{{ dashboards.update({item.stat.path.split('/')[-1].split('.')[:-1]|join('.'): {'body': lookup('file', item.stat.path)|from_json }}) }}{% endfor %}{{ dashboards }}" # noqa 204
+ no_log: true
+
+# If the dashboards have been previously deployed, we need the ID so that we
+# can update instead of adding another copy. So first we grab that.
+- name: Get dashboard IDs
+ uri:
+ url: "http://localhost:3000/api/dashboards/db/{{ item }}"
+ method: GET
+ user: "{{ grafana.admin_user }}"
+ password: "{{ grafana.admin_password }}"
+ force_basic_auth: yes
+ status_code: 200,404
+ with_items: "{{ dashboards.keys() }}"
+ register: dashboard_ids
+ no_log: true
+
+# Next, take any IDs we found and set them in each dashboard body.
+# Any dashboards which don't exist on the server will be skipped.
+- name: Add IDs to dashboards var
+ set_fact:
+ dashboards: "{% if item.status == 200 %}{{ dashboards[item.json.meta.slug].body.update({'id': item.json.dashboard.id}) }}{% endif %}{{ dashboards }}"
+ with_items: "{{ dashboard_ids.results }}"
+ no_log: true
+
+# Now we can actually push the dashboards!
+- name: Push updated dashboards
+ uri:
+ url: "http://localhost:3000/api/dashboards/db"
+ method: POST
+ user: "{{ grafana.admin_user }}"
+ password: "{{ grafana.admin_password }}"
+ force_basic_auth: yes
+ status_code: 200
+ body_format: json
+ body: '{"dashboard": {{ dashboards[item].body|to_json }}, "overwrite": true}'
+ with_items: "{{ dashboards.keys() }}"
+
+# We need the home dashboard info for its ID
+- name: Get home dashboard info
+ uri:
+ url: "http://localhost:3000/api/dashboards/db/ceph-at-a-glance"
+ method: GET
+ user: "{{ grafana.admin_user }}"
+ password: "{{ grafana.admin_password }}"
+ force_basic_auth: yes
+ status_code: 200
+ register: dashboard_home
+ no_log: true
+
+- name: Set the org's home dashboard
+ uri:
+ url: "http://localhost:3000/api/{{ item }}/preferences"
+ method: PUT
+ user: "{{ grafana.admin_user }}"
+ password: "{{ grafana.admin_password }}"
+ force_basic_auth: yes
+ status_code: 200
+ body_format: json
+ body: '{"homeDashboardId": {{ dashboard_home.json.dashboard.id }} }'
+ with_items:
+ - user
+ - org
--- /dev/null
+---
+- name: Ship dashboard templates
+ copy:
+ src: files/dashboards/cephmetrics-graphite
+ dest: /tmp/dashboards
+ when:
+ - devel_mode
+
+- name: Ship dashUpdater.py
+ copy:
+ src: files/dashUpdater.py
+ dest: /tmp/dashUpdater.py
+ when:
+ - devel_mode
+
+- name: Write dashboard.yml
+ template:
+ src: dashboard.yml
+ dest: /tmp/dashboard.yml
+ mode: 0600
+
+- name: Set dashupdate_cmd and dashboard_dir
+ set_fact:
+ dashupdate_cmd: "python /tmp/dashUpdater.py"
+ dashboard_dir: "/tmp/dashboards/cephmetrics-graphite"
+ when:
+ - devel_mode
+
+- name: Set dashupdate_cmd and dashboard_dir
+ set_fact:
+ dashupdate_cmd: "/usr/libexec/cephmetrics/dashUpdater.py"
+ dashboard_dir: "/usr/share/cephmetrics/dashboards/cephmetrics-graphite"
+ when:
+ - not devel_mode
+
+- name: Set dashupdate_mode
+ set_fact:
+ dashupdate_mode: "{{ 'refresh' if replace_dashboards else 'update' }}"
+
+- name: Push dashboards to Grafana
+ command: "{{ dashupdate_cmd }} -m {{ dashupdate_mode }} -c /tmp/dashboard.yml -D {{ dashboard_dir }}{{ ' -A' if update_alerts else '' }}"
--- /dev/null
+---
+- name: Fail when hosts are specified by IP address
+ fail:
+ msg: "All hosts must be referred to by an FQDN!"
+ when: item|ipaddr
+ with_items: "{{ groups.all }}"
--- /dev/null
+---
+- name: Include ceph-docker
+ include_role:
+ name: ceph-docker
+ allow_duplicates: false
+ when: containerized
+ tags: docker
+
+- name: Create grafana user
+ user:
+ name: grafana
+ shell: '/bin/false'
+ createhome: false
+ system: true
+
+- name: Create /etc/grafana and /var/lib/grafana
+ file:
+ path: "{{ item }}"
+ state: directory
+ owner: "{{ grafana.uid }}"
+ recurse: true
+ with_items:
+ - /etc/grafana
+ - /var/lib/grafana
+
+- name: Create docker container
+ docker_container:
+ name: grafana-server
+ image: "{{ grafana.container_name }}:{{ grafana.version }}"
+ state: present
+ # restart to allow updates
+ restart: true
+ restart_policy: no
+ published_ports: '3000:3000'
+ detach: true
+ volumes:
+ - "/etc/grafana:/etc/grafana:Z"
+ - "/var/lib/grafana:/var/lib/grafana:Z"
+ networks:
+ - name: "{{ docker.network_name }}"
+ keep_volumes: true
+ pull: "{{ grafana.pull_image }}"
+ trust_image_content: "{{ grafana.trust_image_content }}"
+ cpu_period: "{{ grafana.container_cpu_period }}"
+ # As of ansible-2.5.2, this module doesn't support the equivalent of the
+ # --cpus flag, so we must use period/quota for now
+ cpu_quota: "{{ grafana.container_cpu_period * grafana.container_cpu_cores }}"
+ memory: "{{ grafana.container_memory }}GB"
+ memory_swap: "{{ grafana.container_memory * 2 }}GB"
+ env:
+ GF_INSTALL_PLUGINS: "{{ grafana.plugins|join(',') }}"
+
+- name: Ship systemd service
+ copy:
+ src: grafana-server.service
+ dest: "/etc/systemd/system/"
+ owner: root
+ group: root
+ mode: 0644
+ notify: Enable service
--- /dev/null
+---
+- name: Add Grafana repo
+ template:
+ src: grafana.repo
+ dest: /etc/yum.repos.d/grafana.repo
+ when:
+ - ansible_pkg_mgr == 'yum'
+ - devel_mode
+
+- name: Add grafana repo
+ copy:
+ src: files/grafana.list
+ dest: /etc/apt/sources.list.d/grafana.list
+ when:
+ - ansible_pkg_mgr == "apt"
+ - devel_mode
+
+- name: Add packagecloud GPG key to apt
+ apt_key:
+ # This is the key used by the grafana repo
+ url: https://packagecloud.io/gpg.key
+ id: D59097AB
+ state: present
+ when:
+ - ansible_pkg_mgr == "apt"
+ - devel_mode
+
+- name: Update apt cache
+ apt:
+ update_cache: true
+ when:
+ - ansible_pkg_mgr == 'apt'
+ - devel_mode
--- /dev/null
+---
+- name: Reload systemd
+ systemd:
+ daemon_reload: yes
+ # Even when just calling daemon-reload, ansible < 2.4 requires a name for this call
+ name: grafana-server
+ tags:
+ - packages
+ - services
+
+- name: Enable and start services
+ service:
+ name: grafana-server
+ state: started
+ enabled: true
--- /dev/null
+---
+osd_servers: [{% for fqdn in groups['osds'] | default([]) %}{{ fqdn.split('.')[0] }},{% endfor %}]
+rgw_servers: [{% for fqdn in groups['rgws'] | default([]) %}{{ fqdn.split('.')[0] }},{% endfor %}]
+domain: "{{ ansible_domain }}"
+_dashboards:
+ - alert-status
+ - ceph-at-a-glance
+ - ceph-backend-storage
+ - ceph-cluster
+ - ceph-health
+ - ceph-osd-information
+ - ceph-pools
+ - ceph-rgw-workload
+ - disk-busy-by-server
+ - iops-by-server
+ - iscsi-overview
+ - latency-by-server
+ - network-usage-by-node
+ - osd-node-detail
+_credentials:
+ user: {{ grafana.admin_user }}
+ password: {{ grafana.admin_password }}
+_grafana_port: 3000
+_home_dashboard: ceph-at-a-glance
+_alert_dashboard: alert-status
--- /dev/null
+[grafana]
+name=grafana
+baseurl=https://packagecloud.io/grafana/stable/el/{{ ansible_distribution_major_version }}/$basearch
+repo_gpgcheck=1
+enabled=1
+gpgcheck=1
+gpgkey=https://packagecloud.io/gpg.key https://grafanarel.s3.amazonaws.com/RPM-GPG-KEY-grafana
+sslverify=1
+sslcacert=/etc/pki/tls/certs/ca-bundle.crt
--- /dev/null
+import pytest
+
+testinfra_hosts = ['ceph-grafana']
+
+
+class TestGrafana(object):
+ @pytest.mark.parametrize(
+ "service",
+ ['grafana-server']
+ )
+ def test_service_enabled(self, host, service):
+ """ Are the proper services enabled? """
+ if isinstance(service, dict):
+ service = service[
+ host.ansible('setup')['ansible_facts']['ansible_pkg_mgr']]
+ service = host.service(service)
+ assert service.is_running
+ assert service.is_enabled
+
+ @pytest.mark.parametrize(
+ "proto,iface,port",
+ [
+ ('tcp', '0.0.0.0', '3000'), # grafana
+ ]
+ )
+ def test_ports_open(self, host, proto, iface, port):
+ """ Are the proper ports open? """
+ socket_spec = "%s://%s" % (proto, iface)
+ if iface:
+ socket_spec += ':'
+ socket_spec += port
+ assert host.socket(socket_spec).is_listening
--- /dev/null
+---
+devel_packages:
+ yum:
+ - graphite-web
+ - python-carbon
+ apt:
+ - graphite-web
+ - apache2
+ - libapache2-mod-wsgi
+ - graphite-carbon
--- /dev/null
+---
+- name: Resize whisper databases
+ # xargs -P parallelizes execution; scale it to the number of cores on the system
+ shell: "find /var/lib/carbon/whisper -name '*.wsp' -print0 | xargs -n1 -0 -P {{ ansible_processor_vcpus }} -I {} whisper-resize {} {{ whisper_retention.replace(',', ' ') }}" # noqa 204
+ register: whisper_resize
+ failed_when: "'Traceback' in whisper_resize.stdout"
+ no_log: true
+
+- name: Restart graphite-web
+ service:
+ # graphite-web is served by apache
+ name: "{{ graphite.apache_name[ansible_pkg_mgr] }}"
+ state: restarted
+ enabled: true
+ when:
+ - "{{ graphite.service == 'graphite-web' }}"
+
+- name: Restart graphite-api
+ service:
+ name: graphite-api
+ state: restarted
+ enabled: true
+ when:
+ - "{{ graphite.service == 'graphite-api' }}"
+
+- name: Restart carbon-cache
+ service:
+ name: carbon-cache
+ state: restarted
+ enabled: true
--- /dev/null
+---
+dependencies:
+ - role: cephmetrics-common
--- /dev/null
+---
+- name: Set WHISPER_AUTOFLUSH to True
+ lineinfile:
+ dest: /etc/carbon/carbon.conf
+ regexp: "^WHISPER_AUTOFLUSH = .*"
+ insertafter: "^#.*buffering writes from the kernel.*"
+ line: "WHISPER_AUTOFLUSH = True"
+ notify:
+ - Restart carbon-cache
+
+- name: Fail when the the first whisper retention value is not 10s
+ fail:
+ msg: "The first whisper retention value must be '10s', not '{{ whisper.retention[0][0] }}' in order to match collectd's interval"
+ failed_when: whisper.retention[0][0] != '10s'
+ any_errors_fatal: true
+
+- name: Set whisper_retention
+ set_fact:
+ whisper_retention: "{{ whisper.retention|map('join', ':')|join(',') }}"
+
+- name: Configure retention for collectd stats
+ template:
+ src: storage-schemas.conf
+ dest: /etc/carbon/storage-schemas.conf
+ notify:
+ - Resize whisper databases
+ - Restart carbon-cache
+
+- name: Ensure carbon storage has the right ownership
+ file:
+ path: "{{ carbon.storage_dir[ansible_pkg_mgr] }}"
+ state: directory
+ owner: "{{ carbon.unix_user[ansible_pkg_mgr] }}"
+ group: "{{ carbon.unix_user[ansible_pkg_mgr] }}"
+ recurse: yes
+ notify:
+ - Restart carbon-cache
--- /dev/null
+---
+- name: Check firewalld status
+ shell: "systemctl show firewalld | grep UnitFileState"
+ register: firewalld_status
+ failed_when: false
+ changed_when: false
+ tags:
+ - skip_ansible_lint
+
+- name: Open ports for Carbon
+ firewalld:
+ port: "{{ item }}"
+ zone: "{{ firewalld_zone }}"
+ state: enabled
+ immediate: true
+ permanent: true
+ with_items:
+ - 2003/tcp
+ when: "'enabled' in firewalld_status.stdout"
--- /dev/null
+---
+- include: configure_graphite_web.yml
+ when:
+ - graphite.service == 'graphite-web'
+
+- include: configure_graphite_api.yml
+ when:
+ - graphite.service == 'graphite-api'
--- /dev/null
+---
+- name: Write graphite-api systemd files
+ template:
+ src: "{{ item }}"
+ dest: "/etc/systemd/system/{{ item }}"
+ with_items:
+ - graphite-api.socket
+ - graphite-api.service
+ notify: Restart graphite-api
--- /dev/null
+---
+# Older versions of Django use the 'syncdb' method for DB creation/migration.
+# Newer versions use 'migrate' but still have 'syncdb' available and
+# deprecated. We should be able to auto-discover the correct method.
+- name: Determine how to initialize Django DB
+ command: django-admin --help
+ register: django_cmd
+ no_log: true
+
+- name: Set django_init_method
+ set_fact:
+ django_init_method: "{% if 'migrate' in django_cmd.stdout_lines|map('trim')|list %}migrate{% else %}syncdb{% endif %}"
+
+- name: Create Graphite DB tables
+ command: "/usr/bin/graphite-manage {{ django_init_method }} --noinput"
+ become_user: "{{ graphite.unix_user[ansible_pkg_mgr] }}"
+ register: migrate_cmd
+ failed_when: migrate_cmd.rc != 0 and 'table "django_content_type" already exists' not in migrate_cmd.stderr
+
+- name: Run Graphite migrations if necessary
+ command: /usr/bin/graphite-manage migrate --noinput --fake-initial
+ become_user: "{{ graphite.unix_user[ansible_pkg_mgr] }}"
+ when:
+ - django_init_method == 'migrate'
+ - migrate_cmd.rc != 0
+
+- name: Build Graphite index
+ command: "{{ graphite.build_index[ansible_pkg_mgr] }}"
+ become_user: "{{ graphite.unix_user[ansible_pkg_mgr] }}"
+
+- name: Set or unset port in main apache config
+ lineinfile:
+ dest: "/{{ graphite.apache_conf[ansible_pkg_mgr] }}"
+ regexp: "^Listen .*"
+ line: "Listen 80"
+ insertafter: "^#Listen .*"
+ state: "{{ 'present' if graphite.web_port == '80' else 'absent' }}"
+ notify: Restart graphite-web
+
+# This is done automatically during package install on RPM-based distros
+- name: Copy graphite-web config on Ubuntu
+ copy:
+ src: /usr/share/graphite-web/apache2-graphite.conf
+ dest: "{{ graphite.site_conf[ansible_pkg_mgr] }}"
+ remote_src: yes
+ backup: yes
+ when: ansible_pkg_mgr == "apt"
+ notify: Restart graphite-web
+
+- name: Set port in graphite apache config
+ lineinfile:
+ dest: "{{ graphite.site_conf[ansible_pkg_mgr] }}"
+ regexp: "^Listen .*"
+ line: "Listen {{ graphite.web_port }}"
+ insertbefore: "^<VirtualHost .*"
+ notify: Restart graphite-web
+
+- name: Symlink graphite apache config on Ubuntu
+ file:
+ src: "{{ graphite.site_conf[ansible_pkg_mgr] }}"
+ dest: "/etc/apache2/sites-enabled/graphite-web.conf"
+ state: link
+ force: yes
+ when: ansible_pkg_mgr == "apt"
+ notify: Restart graphite-web
+
+- name: Set VirtualHost port in graphite apache config
+ replace:
+ dest: "{{ graphite.site_conf[ansible_pkg_mgr] }}"
+ regexp: "^<VirtualHost \\*:.+>$"
+ replace: "<VirtualHost *:{{ graphite.web_port }}>"
+ notify: Restart graphite-web
+
+- name: Allow connecting to graphite without auth
+ lineinfile:
+ dest: "{{ graphite.site_conf[ansible_pkg_mgr] }}"
+ line: " Require all granted" # noqa 203
+ insertafter: '<Directory "/usr/share/graphite/">'
+ state: present
+ when: ansible_pkg_mgr == "yum"
+ notify: Restart graphite-web
+
+- name: Get timezone
+ shell: "timedatectl | grep 'Time zone'" # noqa 306
+ register: timezone
+
+- name: Set timezone in local_settings.py
+ lineinfile:
+ dest: "{{ graphite.app_conf[ansible_pkg_mgr] }}"
+ line: "TIME_ZONE = '{{ timezone.stdout.strip().split(' ')[2] }}'"
+ regexp: "^TIME_ZONE = .*"
+ insertafter: '^#TIME_ZONE = .*'
+ state: present
+ notify: Restart graphite-web
--- /dev/null
+---
+- name: Install packages
+ package:
+ name: "{{ item }}"
+ state: latest
+ with_items: "{{ devel_packages[ansible_pkg_mgr] }}"
+ when: devel_mode
--- /dev/null
+---
+- include: merge_vars.yml
+ tags:
+ - always
+
+- name: Skip if not configured
+ meta: end_play
+ when: backend.storage != 'graphite'
+
+- include: install_packages.yml
+ tags:
+ - packages
+
+- include: configure_firewall.yml
+ tags:
+ - firewall
+
+- include: configure_carbon.yml
+ tags:
+ - carbon
+
+- include: configure_graphite.yml
+ tags:
+ - graphite
+
+- name: Reload systemd
+ systemd:
+ daemon_reload: yes
+ # Even when just calling daemon-reload, ansible < 2.4 requires a name for this call
+ name: carbon-cache
+ tags:
+ - packages
+ - services
+
+- include: start_services.yml
+ tags:
+ - services
--- /dev/null
+../../cephmetrics-common/tasks/merge_vars.yml
\ No newline at end of file
--- /dev/null
+---
+- name: Enable and start services
+ service:
+ name: "{{ item }}"
+ state: started
+ enabled: true
+ with_items:
+ - carbon-cache
+ # graphite-web is served by apache
+ - "{{ graphite.apache_name[ansible_pkg_mgr] }}"
--- /dev/null
+[Unit]
+Description=Graphite-API service
+Requires=graphite-api.socket
+
+[Service]
+ExecStart=/usr/bin/gunicorn3 -w2 graphite_api.app:app
+Restart=on-failure
+User={{ graphite.unix_user[ansible_pkg_mgr] }}
+Group={{ graphite.unix_user[ansible_pkg_mgr] }}
+ExecReload=/bin/kill -s HUP $MAINPID
+ExecStop=/bin/kill -s TERM $MAINPID
+PrivateTmp=true
+
+[Install]
+WantedBy=multi-user.target
--- /dev/null
+[Unit]
+Description=graphite-api socket
+
+[Socket]
+ListenStream=/run/graphite-api.sock
+ListenStream=127.0.0.1:{{ graphite.api_port }}
+
+[Install]
+WantedBy=sockets.target
--- /dev/null
+# Schema definitions for Whisper files. Entries are scanned in order,
+# and first match wins. This file is scanned for changes every 60 seconds.
+#
+# [name]
+# pattern = regex
+# retentions = timePerPoint:timeToStore, timePerPoint:timeToStore, ...
+[collectd]
+pattern = ^collectd\.
+retentions = {{ whisper_retention }}
+
+# Carbon's internal metrics. This entry should match what is specified in
+# CARBON_METRIC_PREFIX and CARBON_METRIC_INTERVAL settings
+[carbon]
+pattern = ^carbon\.
+retentions = 60:90d
+
+[default_1min_for_1day]
+pattern = .*
+retentions = 60s:1d
--- /dev/null
+import json
+import os
+import pytest
+
+testinfra_hosts = ['ceph-grafana']
+
+
+class TestGraphite(object):
+ def maybe_skip(self, host):
+ vars = host.ansible.get_variables()
+ if vars.get('backend', dict()).get('storage', 'prometheus') != 'graphite':
+ pytest.skip()
+
+ def get_ceph_hosts(self, host):
+ """
+ Extract a list of FQDNs of Ceph hosts from the Ansible inventory
+ """
+ groups = host.ansible.get_variables()['groups']
+ ceph_groups = ('mdss', 'mgrs', 'mons', 'osds', 'rgws')
+ ceph_hosts = set()
+ for group in ceph_groups:
+ hosts = groups.get(group, list())
+ map(ceph_hosts.add, hosts)
+ return list(ceph_hosts)
+
+ @pytest.mark.parametrize(
+ "service",
+ ['carbon-cache',
+ dict(apt='apache2', yum='httpd')]
+ )
+ def test_service_enabled(self, host, service):
+ """ Are the proper services enabled? """
+ self.maybe_skip(host)
+ if isinstance(service, dict):
+ service = service[
+ host.ansible('setup')['ansible_facts']['ansible_pkg_mgr']]
+ service = host.service(service)
+ assert service.is_running
+ assert service.is_enabled
+
+ @pytest.mark.parametrize(
+ "proto,iface,port",
+ [
+ ('tcp', '0.0.0.0', '2003'), # carbon
+ ('tcp', '0.0.0.0', '2004'), # carbon
+ ('tcp', '0.0.0.0', '8080'), # graphite
+ ]
+ )
+ def test_ports_open(self, host, proto, iface, port):
+ """ Are the proper ports open? """
+ self.maybe_skip(host)
+ socket_spec = "%s://%s" % (proto, iface)
+ if iface:
+ socket_spec += ':'
+ socket_spec += port
+ assert host.socket(socket_spec).is_listening
+
+ def test_whisper_data(self, host):
+ """ Does whisper data exist for each Ceph host? """
+ self.maybe_skip(host)
+ whisper_dirs = [
+ '/var/lib/carbon/whisper',
+ '/var/lib/graphite/whisper',
+ ]
+ for whisper_dir in whisper_dirs:
+ if host.file(whisper_dir).exists:
+ break
+ for ceph_host in self.get_ceph_hosts(host):
+ whisper_subdir = os.path.join(
+ whisper_dir, 'collectd', ceph_host.replace('.', '/')
+ )
+ assert host.file(whisper_subdir).is_directory
+ cpu_metrics = [
+ 'idle.wsp', 'nice.wsp', 'steal.wsp', 'user.wsp',
+ 'interrupt.wsp', 'softirq.wsp', 'system.wsp', 'wait.wsp',
+ ]
+ assert any([
+ host.file(os.path.join(
+ whisper_subdir, 'cpu', 'percent', metric
+ )).is_file for metric in cpu_metrics
+ ])
+
+ def test_metrics_present(self, host):
+ """ Does graphite know about each Ceph host? """
+ self.maybe_skip(host)
+ ceph_hosts = self.get_ceph_hosts(host)
+ out = host.check_output(
+ "curl http://localhost:8080/metrics/find?query=collectd.*")
+ obj = json.loads(out)
+
+ def extract_hostname(fragment):
+ return fragment['text']
+ metric_hosts = set(map(extract_hostname, obj))
+ assert set(map(lambda s: s.split('.')[0], ceph_hosts)).issubset(metric_hosts)
--- /dev/null
+---
+defaults: {}
--- /dev/null
+---
+dependencies:
+ - role: cephmetrics-common
--- /dev/null
+---
+- name: Check firewalld status
+ shell: "systemctl show firewalld | grep UnitFileState"
+ register: firewalld_status
+ failed_when: false
+ changed_when: false
+ tags:
+ - skip_ansible_lint
+
+- name: Open port for the mgr prometheus module
+ firewalld:
+ port: "{{ item }}"
+ zone: "{{ firewalld_zone }}"
+ state: enabled
+ immediate: true
+ permanent: true
+ with_items:
+ - 9283/tcp
+ when: "'enabled' in firewalld_status.stdout"
--- /dev/null
+---
+- include: merge_vars.yml
+ tags:
+ - always
+
+- name: End play if the mgr prometheus module isn't desired
+ meta: end_play
+ when: backend.metrics != 'mgr' or backend.storage != 'prometheus'
+
+- import_tasks: configure_firewall.yml
+ tags:
+ - firewall
+
+- name: Check to see if the mgr is containerized
+ command: "docker inspect {{ item }}"
+ with_items:
+ - "ceph-mgr@{{ ansible_hostname }}"
+ - "ceph-mgr-{{ ansible_hostname }}"
+ register: mgr_container
+ failed_when: false
+
+- name: Choose the correct container name
+ set_fact:
+ container_name: "{% for res in mgr_container.results if res.rc == 0 %}{{ res.item }}{% endfor %}"
+
+- name: Prefix the mgr command with a docker command
+ set_fact:
+ mgr_prefix: "docker exec {{ container_name }}"
+ when: container_name
+
+- name: Enable mgr prometheus module
+ command: "{{ mgr_prefix|default('') }} ceph --cluster {{ cluster_name }} mgr module enable prometheus"
--- /dev/null
+../../cephmetrics-common/tasks/merge_vars.yml
\ No newline at end of file
--- /dev/null
+import json
+import pytest
+
+testinfra_hosts = ['mgrs']
+
+
+class TestMgr(object):
+ def maybe_skip(self, host):
+ vars = host.ansible.get_variables()
+ if vars.get('backend', dict()).get('metrics', 'mgr') != 'mgr':
+ pytest.skip()
+
+ def test_prometheus_module(self, host):
+ self.maybe_skip(host)
+ out = host.check_output("sudo ceph mgr module ls")
+ obj = json.loads(out)
+ assert 'prometheus' in obj['enabled_modules']
+
--- /dev/null
+---
+defaults:
+ node_exporter:
+ arch_map:
+ x86_64: amd64
+ i386: '386'
+ packages:
+ apt:
+ - prometheus-node-exporter
+ yum:
+ - prometheus-node_exporter
+ service_name: node_exporter
--- /dev/null
+---
+- name: Restart service
+ # We use the systemd module here so we can use the daemon_reload feature,
+ # since we're shipping the .service file ourselves
+ systemd:
+ name: "{{ node_exporter.service_name }}"
+ daemon_reload: true
+ enabled: true
+ state: restarted
--- /dev/null
+---
+dependencies:
+ - role: cephmetrics-common
--- /dev/null
+---
+- name: Check firewalld status
+ shell: "systemctl show firewalld | grep UnitFileState"
+ register: firewalld_status
+ failed_when: false
+ changed_when: false
+ tags:
+ - skip_ansible_lint
+
+- name: Open ports for node_exporter
+ firewalld:
+ port: "{{ item }}"
+ zone: "{{ firewalld_zone }}"
+ state: enabled
+ immediate: true
+ permanent: true
+ with_items:
+ - 9100/tcp
+ - 9283/tcp
+ when: "'enabled' in firewalld_status.stdout"
--- /dev/null
+---
+- name: Look for /etc/sysconfig and /etc/default
+ stat:
+ path: "/etc/{{ item }}/"
+ with_items:
+ - sysconfig
+ - default
+ register: stat
+
+- name: Decide whether to use /etc/sysconfig or /etc/default
+ set_fact:
+ sysconfig_dir: "{{ item.item }}"
+ with_items: "{{ stat.results }}"
+ when: item.stat.exists
+
+- name: Ship defaults file
+ template:
+ src: sysconfig
+ dest: "/etc/{{ sysconfig_dir }}/{{ node_exporter.service_name }}"
+ owner: root
+ group: root
+ mode: 0644
+
+- name: Ship systemd service file
+ template:
+ src: node_exporter.service
+ dest: '/etc/systemd/system/{{ node_exporter.service_name }}.service'
+ owner: root
+ group: root
+ mode: 0644
+ notify: "Restart service"
--- /dev/null
+---
+- name: Create user
+ user:
+ name: node_exporter
+ shell: '/bin/false'
+ createhome: false
+ system: true
--- /dev/null
+---
+- name: Ask GitHub about the most recent release
+ # We use local_action here to reduce the amount of times we hit the GitHub
+ # API; without it, a moderately-large cluster could actually cause them to
+ # invoke their API rate limiting!
+ delegate_to: localhost
+ uri:
+ url: https://api.github.com/repos/prometheus/node_exporter/releases/latest
+ return_content: true
+ connection: local
+ become: false
+ run_once: true
+ register: latest_release
+
+- name: Decide which release to look for
+ set_fact:
+ os_string: "linux-{{ node_exporter.arch_map[ansible_architecture]|default(ansible_architecture) }}"
+
+- name: Find the correct release
+ set_fact:
+ release_url: "{{ item.browser_download_url }}"
+ when: os_string in item.name
+ with_items: "{{ latest_release.json.assets }}"
+ no_log: true
+
+- name: Download release
+ get_url:
+ url: "{{ release_url }}"
+ dest: '/tmp/'
+ register: download
+
+- name: Extract tarball
+ unarchive:
+ src: "{{ download.dest }}"
+ remote_src: true
+ dest: "/tmp/"
+
+- name: Copy binary into place
+ copy:
+ src: "{{ download.dest|replace('.tar.gz', '') }}/node_exporter"
+ remote_src: true
+ dest: "/usr/local/sbin/"
+ owner: node_exporter
+ mode: 0744
--- /dev/null
+---
+- name: Install packages
+ package:
+ name: "{{ node_exporter.packages[ansible_pkg_mgr] }}"
+ state: latest
+ notify: "Restart service"
--- /dev/null
+---
+- include: merge_vars.yml
+ tags:
+ - always
+
+- name: End play if the prometheus backend isn't desired
+ meta: end_play
+ when: backend.storage != 'prometheus'
+
+- include: install_packages.yml
+ when:
+ - not devel_mode
+
+- include: create_user.yml
+ when:
+ - devel_mode
+
+- include: download.yml
+ when:
+ - devel_mode
+
+- include: configure_firewall.yml
+
+- include: create_service.yml
+ when:
+ - devel_mode
--- /dev/null
+../../cephmetrics-common/tasks/merge_vars.yml
\ No newline at end of file
--- /dev/null
+[Unit]
+Description=Node Exporter
+
+[Service]
+User=node_exporter
+EnvironmentFile=/etc/{{ sysconfig_dir }}/{{ node_exporter.service_name }}
+ExecStart=/usr/local/sbin/node_exporter $OPTIONS
+
+[Install]
+WantedBy=multi-user.target
--- /dev/null
+{{ defaults.node_exporter.sysconfig|default('') }}
--- /dev/null
+import pytest
+
+testinfra_hosts = ['!ceph-grafana']
+
+
+class TestNodeExporter(object):
+ def maybe_skip(self, host):
+ vars = host.ansible.get_variables()
+ if vars.get('backend', dict()).get('storage', 'prometheus') != 'prometheus':
+ pytest.skip()
+
+ def test_service_enabled(self, host):
+ self.maybe_skip(host)
+ assert host.service('node_exporter').is_enabled
+ assert host.service('node_exporter').is_running
+
+ def test_port_open(self, host):
+ """ Is the node_exporter port open? """
+ self.maybe_skip(host)
+ socket_spec = "tcp://0.0.0.0:9100"
+ assert host.socket(socket_spec).is_listening
--- /dev/null
+---
+defaults:
+ prometheus:
+ container_name: prom/prometheus
+ container_cpu_period: 100000
+ container_cpu_cores: 2
+ # container_memory is in GB
+ container_memory: 4
+ # This is passed directly to the docker_container module. It is only used
+ # for containerized deployments.
+ etc_hosts: {}
+ pull_image: true
+ trust_image_content: false
+ version: latest
+ data_dir: /var/lib/cephmetrics
+ user_id: '65534' # This is the UID used by the prom/prometheus docker image
--- /dev/null
+# This file is managed by ansible, don't make changes here - they will be
+# overwritten.
+[Unit]
+Description=prometheus
+After=docker.service
+
+[Service]
+EnvironmentFile=-/etc/environment
+ExecStart=/usr/bin/docker start --attach prometheus
+ExecStop=-/usr/bin/docker stop prometheus
+Restart=always
+RestartSec=10s
+TimeoutStartSec=120
+TimeoutStopSec=15
+
+[Install]
+WantedBy=multi-user.target
--- /dev/null
+---
+- name: Service handler
+ # We use the systemd module here so we can use the daemon_reload feature,
+ # since we're shipping the .service file ourselves
+ systemd:
+ name: prometheus
+ daemon_reload: true
+ enabled: true
+ state: restarted
--- /dev/null
+---
+dependencies:
+ - role: cephmetrics-common
--- /dev/null
+---
+- name: Check firewalld status
+ shell: "systemctl show firewalld | grep UnitFileState"
+ register: firewalld_status
+ failed_when: false
+ changed_when: false
+ tags:
+ - skip_ansible_lint
+
+- name: Open port for prometheus
+ firewalld:
+ port: "{{ item }}"
+ zone: "{{ firewalld_zone }}"
+ state: enabled
+ immediate: true
+ permanent: true
+ with_items:
+ - 9090/tcp
+ when: "'enabled' in firewalld_status.stdout"
--- /dev/null
+---
+- name: Install prometheus
+ package:
+ name: prometheus
+ state: latest
+ notify: Service handler
--- /dev/null
+---
+- include: merge_vars.yml
+ tags:
+ - always
+
+- name: End play if the prometheus backend isn't desired
+ meta: end_play
+ when: backend.metrics != 'mgr' or backend.storage != 'prometheus'
+
+- import_tasks: configure_firewall.yml
+ tags:
+ - firewall
+
+- name: Create prometheus data directory
+ file:
+ path: "{{ prometheus.data_dir }}"
+ state: directory
+ owner: "{{ prometheus.user_id }}"
+
+- name: Write config file
+ template:
+ src: prometheus.yml
+ dest: "{{ prometheus.data_dir }}/"
+ owner: "{{ prometheus.user_id }}"
+ notify: Service handler
+
+- include: setup_container.yml
+ when: containerized
+
+- import_tasks: install_packages.yml
+ when: not containerized
--- /dev/null
+../../cephmetrics-common/tasks/merge_vars.yml
\ No newline at end of file
--- /dev/null
+---
+- name: Include ceph-docker
+ include_role:
+ name: ceph-docker
+ allow_duplicates: false
+ when: containerized
+ tags: docker
+
+- name: Start docker container
+ docker_container:
+ name: prometheus
+ image: "{{ prometheus.container_name }}:{{ prometheus.version }}"
+ command: "--config.file=/prometheus/prometheus.yml"
+ restart_policy: no
+ published_ports: '9090:9090'
+ detach: true
+ volumes:
+ - "{{ prometheus.data_dir }}:/prometheus:Z"
+ networks:
+ - name: "{{ docker.network_name }}"
+ etc_hosts: "{{ prometheus.etc_hosts }}"
+ user: "{{ prometheus.user_id }}"
+ keep_volumes: true
+ pull: "{{ prometheus.pull_image }}"
+ trust_image_content: "{{ prometheus.trust_image_content }}"
+ cpu_period: "{{ prometheus.container_cpu_period }}"
+ # As of ansible-2.5.2, this module doesn't support the equivalent of the
+ # --cpus flag, so we must use period/quota for now
+ cpu_quota: "{{ prometheus.container_cpu_period * prometheus.container_cpu_cores }}"
+ #memory: 0
+ #memory_swap: 0
+ memory: "{{ prometheus.container_memory }}GB"
+ memory_swap: "{{ prometheus.container_memory * 2 }}GB"
+ notify: Service handler
+
+- name: Ship systemd service
+ copy:
+ src: prometheus.service
+ dest: "/etc/systemd/system/"
+ owner: root
+ group: root
+ mode: 0644
+ notify: Service handler
--- /dev/null
+global:
+ scrape_interval: 15s
+ evaluation_interval: 15s
+
+scrape_configs:
+ - job_name: 'prometheus'
+ static_configs:
+ - targets: ['localhost:9090']
+ - job_name: 'ceph'
+ honor_labels: true
+ static_configs:
+{% for host in groups['mgrs'] %}
+ - targets: ['{{ host }}:9283']
+ labels:
+ instance: 'ceph_cluster'
+{% endfor %}
+ - job_name: 'node'
+ static_configs:
+{% for host in (groups['all'] | difference(groups['ceph-grafana'])) %}
+ - targets: ['{{ host }}:9100']
+ labels:
+ instance: "{{ hostvars[host]['ansible_nodename'] }}"
+{% endfor %}
+ - job_name: 'cephmetrics'
+ static_configs:
+{% for host in groups['ceph-grafana'] %}
+ - targets: ['{{ host }}:9100']
+ labels:
+ instance: "{{ hostvars[host]['ansible_nodename'] }}"
+{% endfor %}
+{% if 'iscsis' in groups %}
+ - job_name: 'iscsi-gws'
+ static_configs:
+{% for host in groups['iscsis'] %}
+ - targets: ['{{ host }}:9287']
+ labels:
+ instance: "{{ hostvars[host]['ansible_nodename'] }}"
+{% endfor %}
+{% endif %}
--- /dev/null
+import pytest
+
+testinfra_hosts = ['ceph-grafana']
+
+
+class TestPrometheus(object):
+ def maybe_skip(self, host):
+ vars = host.ansible.get_variables()
+ if vars.get('backend', dict()).get('storage', 'prometheus') != 'prometheus':
+ pytest.skip()
+
+ def test_port_open(self, host):
+ """ Is the prometheus port open? """
+ self.maybe_skip(host)
+ socket_spec = "tcp://0.0.0.0:9090"
+ assert host.socket(socket_spec).is_listening
--- /dev/null
+---
+defaults:
+ cluster_name: ceph
+ containerized: true
+ backend:
+ metrics: mgr # mgr, cephmetrics
+ storage: prometheus # prometheus, graphite
+ devel_mode: true
+ graphite:
+ service: graphite-web
+ web_port: "{{ graphite_port | default('8080') }}"
+ api_port: 8888
+ # The unix account running the graphite-web process
+ unix_user:
+ yum: apache
+ apt: _graphite
+ build_index:
+ yum: '/usr/bin/graphite-build-index'
+ apt: '/usr/bin/graphite-build-search-index'
+ apache_name:
+ yum: 'httpd'
+ apt: 'apache2'
+ apache_conf:
+ yum: '/etc/httpd/conf/httpd.conf'
+ apt: '/etc/apache2/apache2.conf'
+ site_conf:
+ yum: '/etc/httpd/conf.d/graphite-web.conf'
+ apt: '/etc/apache2/sites-available/graphite-web.conf'
+ app_conf:
+ yum: '/etc/graphite-web/local_settings.py'
+ apt: '/etc/graphite/local_settings.py'
+ carbon:
+ unix_user:
+ yum: carbon
+ apt: _graphite
+ storage_dir:
+ yum: /var/lib/carbon
+ apt: /var/lib/graphite
+ whisper:
+ retention:
+ - ['10s', '7d']
+ - ['1m', '30d']
+ - ['15m', '5y']
+ # The firewalld zone that carbon and grafana will use
+ firewalld_zone: public
--- /dev/null
+[cephmetrics]
+name=cephmetrics packages for \$basearch
+baseurl=https://chacra.ceph.com/r/cephmetrics/master/HEAD/rhel/7/flavors/default/\$basearch
+enabled=1
+gpgcheck=0
+type=rpm-md
+
+[cephmetrics-noarch]
+name=cephmetrics noarch packages
+baseurl=https://chacra.ceph.com/r/cephmetrics/master/HEAD/rhel/7/flavors/default/noarch
+enabled=1
+gpgcheck=0
+type=rpm-md
+
+[cephmetrics-source]
+name=cephmetrics source packages
+baseurl=https://chacra.ceph.com/r/cephmetrics/master/HEAD/rhel/7/flavors/default/SRPMS
+enabled=1
+gpgcheck=0
+type=rpm-md
--- /dev/null
+---
+- include: merge_vars.yml
+ tags:
+ - always
+
+- include: setup_repos.yml
+ tags:
+ - packages
+ - repos
--- /dev/null
+---
+- name: Combine default settings and user-defined variables
+ set_fact: {"{{ item }}": "{% if vars[item] is not defined %}{{ defaults[item] }}{% elif vars[item] is mapping %}{{ defaults[item]|combine(vars[item]|default({})) }}{% else %}{{ vars[item] }}{% endif %}"} # noqa 204
+ with_items: "{{ defaults.keys() }}"
+ no_log: true
--- /dev/null
+---
+- name: Enable EPEL
+ yum:
+ name: "https://dl.fedoraproject.org/pub/epel/epel-release-latest-{{ ansible_distribution_major_version }}.noarch.rpm"
+ state: present
+ when:
+ - ansible_pkg_mgr == "yum"
+ - devel_mode
+
+- name: Add custom repos
+ template:
+ src: cephmetrics-custom.repo
+ dest: /etc/yum.repos.d/cephmetrics-custom.repo
+ when:
+ - ansible_pkg_mgr == "yum"
+ - custom_repos is defined
+
+- name: Remove custom repos
+ file:
+ path: /etc/yum.repos.d/cephmetrics-custom.repo
+ state: absent
+ when:
+ - ansible_pkg_mgr == "yum"
+ - custom_repos is not defined
+
+- name: Update apt cache
+ apt:
+ update_cache: true
+ when:
+ - ansible_pkg_mgr == 'apt'
+ - devel_mode
--- /dev/null
+{% for repo in custom_repos.yum %}
+[{{ repo.name }}]
+name={{ repo.name }}
+baseurl={{ repo.baseurl }}
+enabled={{ repo.enabled|default('1') }}
+gpgcheck={{ repo.gpgcheck|default('0') }}
+type={{ repo.type|default('rpm-md') }}
+
+{% endfor %}
--- /dev/null
+#!/usr/bin/env python
+
+import os
+import logging
+import collectd
+
+from collectors.mon import Mon
+from collectors.rgw import RGW
+from collectors.osd import OSDs
+from collectors.iscsi import ISCSIGateway
+from collectors.common import flatten_dict, get_hostname
+
+
+PLUGIN_NAME = 'cephmetrics'
+
+
+class Ceph(object):
+
+ roles = {
+ "mon": "Mon",
+ "rgw": "RGW",
+ "osd": "OSDs",
+ "iscsi": "ISCSIGateway"
+ }
+
+ def __init__(self):
+ self.cluster_name = None
+ self.event_url = None
+ self.host_name = get_hostname()
+
+ self.mon = None
+ self.rgw = None
+ self.osd = None
+ self.iscsi = None
+
+ def probe(self):
+ """
+ set up which collector(s) to use
+ """
+
+ if Mon.probe():
+ self.mon = Mon(self, self.cluster_name)
+
+ if RGW.probe():
+ self.rgw = RGW(self, self.cluster_name)
+
+ if OSDs.probe():
+ self.osd = OSDs(self, self.cluster_name)
+
+ if ISCSIGateway.probe():
+ self.iscsi = ISCSIGateway(self, self.cluster_name)
+
+ def get_stats(self):
+
+ stats = {}
+
+ if self.mon:
+ stats['mon'] = self.mon.get_stats()
+
+ if self.rgw:
+ stats['rgw'] = self.rgw.get_stats()
+
+ if self.osd:
+ stats['osd'] = self.osd.get_stats()
+
+ if self.iscsi:
+ stats['iscsi'] = self.iscsi.get_stats()
+
+ return stats
+
+
+def write_stats(role_metrics, stats):
+
+ flat_stats = flatten_dict(stats, '.')
+
+ for key_name in flat_stats:
+ attr_name = key_name.split('.')[-1]
+
+ # TODO: this needs some more think time, since the key from the name
+ # is not the key of the all_metrics dict
+ if attr_name in role_metrics:
+ attr_type = role_metrics[attr_name][1] # gauge / derive etc
+ else:
+ # assign a default
+ attr_type = 'gauge'
+
+ attr_value = flat_stats[key_name]
+
+ val = collectd.Values(plugin=PLUGIN_NAME, type=attr_type)
+ instance_name = "{}.{}".format(CEPH.cluster_name,
+ key_name)
+ val.type_instance = instance_name
+ val.values = [attr_value]
+ val.dispatch()
+
+
+def configure_callback(conf):
+
+ valid_log_levels = ['debug', 'info']
+
+ global CEPH
+ module_parms = {node.key: node.values[0] for node in conf.children}
+
+ log_level = module_parms.get('LogLevel', 'debug')
+ if log_level not in valid_log_levels:
+ collectd.error("cephmetrics: LogLevel specified is invalid - must"
+ " be :{}".format(' or '.join(valid_log_levels)))
+
+ if 'EventURL' in module_parms:
+ CEPH.event_url = module_parms['EventURL']
+ collectd.info("cephmetrics: Event messages enabled for target "
+ "{}".format(CEPH.event_url))
+ else:
+ collectd.warning("cephmetrics: EventURL missing - health events "
+ "will not be reported")
+
+ if 'ClusterName' in module_parms:
+ cluster_name = module_parms['ClusterName']
+ # cluster name is all we need to get started
+ if not os.path.exists('/etc/ceph/{}.conf'.format(cluster_name)):
+ collectd.error("Clustername given ('{}') not found in "
+ "/etc/ceph".format(module_parms['ClusterName']))
+
+ # let's assume the conf file is OK to use
+ CEPH.cluster_name = cluster_name
+
+ setup_module_logging(log_level)
+
+ CEPH.probe()
+
+ collectd.info("{}: Roles detected - "
+ "mon:{} osd:{} rgw:{} "
+ "iscsi:{}".format(__name__,
+ isinstance(CEPH.mon, Mon),
+ isinstance(CEPH.osd, OSDs),
+ isinstance(CEPH.rgw, RGW),
+ isinstance(CEPH.iscsi, ISCSIGateway)))
+ else:
+ collectd.error("cephmetrics: ClusterName is required")
+
+
+def setup_module_logging(log_level):
+
+ level = {"debug": logging.DEBUG,
+ "info": logging.INFO}
+
+ logging.getLogger('cephmetrics')
+ logging.basicConfig(filename='/var/log/collectd-cephmetrics.log',
+ format='%(asctime)s - %(levelname)-7s - '
+ '[%(filename)s:%(lineno)s:%(funcName)s() - '
+ '%(message)s',
+ filemode='w',
+ level=level.get(log_level))
+
+
+def read_callback():
+
+ stats = CEPH.get_stats()
+
+ for role in Ceph.roles:
+ if role in stats:
+ collector = getattr(CEPH, role)
+
+ write_stats(collector.all_metrics, stats[role])
+
+ error_handler(collector)
+
+
+def error_handler(collector):
+ if not collector.error:
+ return
+
+ # detected an error, let's flag it to the collectd log
+ msg_text = ",".join(collector.error_msgs)
+
+ collectd.error("cephmetrics error: {} - {}".format(collector._name,
+ msg_text))
+
+ # reset the collector instance's error tracking
+ collector.error = False
+ del collector.error_msgs[:]
+
+
+if __name__ == '__main__':
+
+ # run interactively or maybe test the code
+
+ pass
+
+else:
+
+ CEPH = Ceph()
+
+ collectd.register_config(configure_callback)
+ collectd.register_read(read_callback)
--- /dev/null
+%define debug_package %{nil}
+
+%{!?_selinux_policy_version: %global _selinux_policy_version %(sed -e 's,.*selinux-policy-\\([^/]*\\)/.*,\\1,' /usr/share/selinux/devel/policyhelp 2>/dev/null)}
+
+Name: cephmetrics
+Version: @VERSION@
+Release: @RELEASE@%{?dist}
+Summary: Monitoring service for Ceph clusters
+
+License: GPLv3
+URL: https://github.com/ceph/cephmetrics
+Source0: cephmetrics-@VERSION@.zip
+
+%description
+The monitoring service with web frontend for Ceph storage clusters providing several statistical data graphed by grafana.
+
+%package ansible
+Summary: Monitoring service for Ceph clusters deployment tool
+Requires: ceph-ansible
+Requires: PyYAML
+Requires: python-requests
+Requires: python-netaddr
+Obsoletes: cephmetrics-grafana-plugins < %{version}-%{release}
+Obsoletes: cephmetrics-collectors < %{version}-%{release}
+Obsoletes: cephmetrics < %{version}-%{release}
+%description ansible
+The monitoring service with web frontend for Ceph storage clusters providing several statistical data graphed by grafana. This package contains a set of ansible playbooks to deploy a cephmetrics server.
+
+%prep
+%setup -q
+# Disable devel_mode in the rpms
+patch -p1 < patches/0001-ansible-Disable-devel_mode.patch
+
+
+%build
+# Change the devel_mode defaults
+sed -i -e 's/devel_mode: true/devel_mode: false/' ansible/roles/*/defaults/main.yml
+
+# Change the prometheus container location/version
+sed -i -e 's|container_name: .*$|container_name: registry.access.redhat.com/openshift3/prometheus|' ansible/roles/ceph-prometheus/defaults/main.yml
+sed -i -e 's|version: .*$|version: v3.9|' ansible/roles/ceph-prometheus/defaults/main.yml
+
+# Change the grafana container location/version
+sed -i -e 's|container_name: .*$|container_name: registry.access.redhat.com/rhceph/rhceph-3-dashboard-rhel7|' ansible/roles/ceph-grafana/defaults/main.yml
+sed -i -e 's|version: .*$|version: 3|' ansible/roles/ceph-grafana/defaults/main.yml
+
+# Change the service_name for node_exporter
+sed -i -e 's|service_name: .*|service_name: prometheus-node-exporter|' ansible/roles/ceph-node-exporter/defaults/main.yml
+
+%install
+# Install ansible playbooks
+install -d %{buildroot}%{_datadir}
+cp -L -r ansible %{buildroot}%{_datadir}/cephmetrics-ansible
+exit 0
+
+
+%files ansible
+%{_datadir}/cephmetrics-ansible
+%doc dashboard.yml
+%doc etc/grafana
+%doc LICENSE
+%doc README
+
+%changelog
--- /dev/null
+#!/usr/bin/env python
+
+import json
+import time
+import logging
+import os
+
+from ceph_daemon import admin_socket
+from collectors.common import os_cmd, cmd_exists
+
+
+class BaseCollector(object):
+
+ class_to_cmd = {
+ "Mon": "ceph-mon",
+ "RGW": "radosgw",
+ "OSDs": "ceph-osd",
+ "ISCSIGateway": "gwcli"
+ }
+
+ def __init__(self, parent, cluster_name, admin_socket=None):
+ self._name = self.__class__.__name__
+ self._parent = parent
+ self.cluster_name = cluster_name
+ self.admin_socket = admin_socket
+ self.version = self.get_version()
+ self.error = False
+ self.error_msgs = []
+
+ self.logger = logging.getLogger('cephmetrics')
+
+ self.logger.info("ceph version for {}: {}".format(self._name,
+ self.version))
+
+ def _admin_socket(self, cmds=None, socket_path=None):
+
+ adm_socket = self.admin_socket if not socket_path else socket_path
+
+ if not cmds:
+ cmds = ['perf', 'dump']
+
+ start = time.time()
+
+ if os.path.exists(adm_socket):
+ try:
+ response = admin_socket(adm_socket, cmds,
+ format='json')
+ except RuntimeError as e:
+ self.logger.error("admin_socket error: {}".format(e.message))
+ self.error = True
+ self.error_msgs = [e.message]
+ resp = {}
+ else:
+ resp = json.loads(response)
+ else:
+ resp = {}
+
+ end = time.time()
+
+ self.logger.debug("admin_socket call '{}' : "
+ "{:.3f}s".format(' '.join(cmds),
+ (end - start)))
+
+ return resp
+
+ def get_version(self):
+ """
+ Although the version number is v.r.m based, this isn't a float so it
+ can't be stored as a number, so the version returned is just the
+ vesion.release components (i.e. looks like a float!)
+ :return: (float) version number (v.r format)
+ """
+ # version command returns output like this
+ # ceph version 10.2.2-15.el7cp (60cd52496ca02bdde9c2f4191e617f75166d87b6)
+
+ cmd = BaseCollector.class_to_cmd.get(self._name, 'ceph')
+ vers_output = os_cmd('{} -v'.format(cmd))
+ if vers_output:
+ return float('.'.join(vers_output.split()[2].split('.')[:2]))
+ else:
+ return 0
+
+ @classmethod
+ def probe(cls):
+ """
+ Look for the relevant binary to signify a specific ceph role
+ :return: (bool) showing whether the binary was found or not
+ """
+
+ return cmd_exists(BaseCollector.class_to_cmd.get(cls.__name__))
+
+ def get_stats(self):
+
+ return {}
--- /dev/null
+#!/usr/bin/env python
+
+
+import socket
+import os
+import subprocess
+
+
+def cmd_exists(command):
+ return any(
+ os.access(os.path.join(path, command), os.X_OK)
+ for path in os.environ["PATH"].split(os.pathsep)
+ )
+
+
+def os_cmd(command):
+ """
+ Issue a command to the OS and return the output. NB. check_output default
+ is shell=False
+ :param command: (str) OS command
+ :return: (str) command response (lines terminated with \n)
+ """
+ cmd_list = command.split(' ')
+ if cmd_exists(cmd_list[0]):
+ cmd_output = subprocess.check_output(cmd_list,
+ stderr=subprocess.STDOUT).rstrip()
+ return cmd_output
+ else:
+ return ''
+
+
+def get_hostname():
+ return socket.gethostname().split('.')[0]
+
+
+def get_names():
+ return [get_hostname()]
+
+
+def add_dicts(dict1, dict2):
+ """
+ Add dictionary values together
+ :param dict1:
+ :param dict2:
+ :return: dict with matching fields sum'd together
+ """
+ return {key: dict1.get(key, 0) + dict2.get(key, 0)
+ for key in set(dict1).union(dict2)}
+
+
+def merge_dicts(dict1, dict2):
+ """
+ merges two dicts together to form a single dict. when dict keys overlap
+ the value in the 2nd dict takes precedence
+ :param dict1:
+ :param dict2:
+ :return: combined dict
+ """
+
+ new = dict1.copy()
+ new.update(dict2)
+
+ return new
+
+
+def flatten_dict(data, separator='.', prefix=''):
+ """
+ flatten a dict, so it is just simple key/value pairs
+ :param data: (dict)
+ :param separator: (str) char to use when combining keys
+ :param prefix: key prefix
+ :return:
+ """
+ return {prefix + separator + k if prefix else k: v
+ for kk, vv in data.items()
+ for k, v in flatten_dict(vv, separator, kk).items()
+ } if isinstance(data, dict) else {prefix: data}
+
+
+def todict(obj):
+ """
+ convert an object to a dict representation
+ :param obj: (object) object to examine, to extract variables/values from
+ :return: (dict) representation of the given object
+ """
+ data = {}
+ for key, value in obj.__dict__.iteritems():
+
+ if key.startswith('_'):
+ continue
+
+ try:
+ data[key] = todict(value)
+ except AttributeError:
+ data[key] = value
+
+ return data
+
+
+def fread(file_name=None):
+ """
+ Simple read function for files of a single value
+ :param file_name: (str) file name to read
+ :return: (str) contents of the file, or null string for non-existent file
+ """
+ if os.path.exists(file_name):
+ with open(file_name, 'r') as f:
+ setting = f.read().rstrip()
+ return setting
+ else:
+ return ''
+
+
+def freadlines(file_name=None):
+ """
+ simple readlines function to return all records of a given file
+ :param file_name: (str) file name to read
+ :return: (list) contents of the file, empty if file doesn't exist
+ """
+
+ if os.path.exists(file_name):
+ with open(file_name, 'r') as f:
+ data = f.readlines()
+ return data
+ else:
+ return []
+
+
+
+class IOstat(object):
+ raw_metrics = [
+ "_reads",
+ "_reads_mrgd",
+ "_sectors_read",
+ "_read_ms",
+ "_writes",
+ "_writes_mrgd",
+ "_sectors_written",
+ "_write_ms",
+ "_current_io",
+ "_ms_active_io",
+ "_ms_active_io_w"
+ ]
+
+ sector_size = 512
+
+ metrics = {
+ "iops": ("iops", "gauge"),
+ "r_iops": ("r_iops", "gauge"),
+ "w_iops": ("w_iops", "gauge"),
+ "bytes_per_sec": ("bytes_per_sec", "gauge"),
+ "r_bytes_per_sec": ("r_bytes_per_sec", "gauge"),
+ "w_bytes_per_sec": ("w_bytes_per_sec", "gauge"),
+ "util": ("util", "gauge"),
+ "await": ("await", "gauge"),
+ "r_await": ("r_await", "gauge"),
+ "w_await": ("w_await", "gauge"),
+ }
+
+ def __init__(self):
+ self._previous = []
+ self._current = []
+
+ # Seed the metrics we're interested in
+ for ctr in IOstat.metrics.keys():
+ setattr(self, ctr, 0)
+
+ def __str__(self):
+ s = '\n- IOstat object:\n'
+ for key in sorted(vars(self)):
+ s += '\t{} ... {}\n'.format(key, getattr(self, key))
+ return s
+
+ def _calc_raw_delta(self):
+ if not self._previous:
+ # nothing to compute yet
+ for ptr in range(len(IOstat.raw_metrics)):
+ key = IOstat.raw_metrics[ptr]
+ setattr(self, key, 0)
+ else:
+ for ptr in range(len(IOstat.raw_metrics)):
+ key = IOstat.raw_metrics[ptr]
+ setattr(self, key, (int(self._current[ptr]) -
+ int(self._previous[ptr])))
+
+ def compute(self, sample_interval):
+ """
+ Calculate the iostats for this device
+ """
+
+ self._calc_raw_delta()
+
+ if sample_interval > 0:
+ interval_ms = sample_interval * 1000
+ total_io = self._reads + self._writes
+ self.util = float(self._ms_active_io) / interval_ms * 100
+ self.iops = int(total_io) / sample_interval
+ self.r_iops = int(self._reads) / sample_interval
+ self.w_iops = int(self._writes) / sample_interval
+ self.await = float(
+ self._write_ms + self._read_ms) / total_io if total_io > 0 else 0
+ self.w_await = float(
+ self._write_ms) / self._writes if self._writes > 0 else 0
+ self.r_await = float(
+ self._read_ms) / self._reads if self._reads > 0 else 0
+ self.r_bytes_per_sec = (float(
+ self._sectors_read * IOstat.sector_size)) / sample_interval
+ self.w_bytes_per_sec = (float(
+ self._sectors_written * IOstat.sector_size)) / sample_interval
+ self.bytes_per_sec = self.r_bytes_per_sec + self.w_bytes_per_sec
+
+
+class Disk(object):
+
+ metrics = {
+ "rotational": ("rotational", "gauge"),
+ "disk_size": ("disk_size", "gauge"),
+ "osd_id": ("osd_id", "gauge")
+ }
+
+ osd_types = {"filestore": 0,
+ "bluestore": 1}
+
+ def __init__(self, device_name, path_name=None, osd_id=None,
+ in_osd_type="filestore", encrypted=0):
+
+ self._name = device_name
+ self._path_name = path_name
+ self._base_dev = Disk.get_base_dev(device_name)
+ self.osd_id = osd_id
+
+ self.rotational = self._get_rota()
+ self.disk_size = self._get_size()
+ self.perf = IOstat()
+ self.encrypted = encrypted
+ self.osd_type = Disk.osd_types[in_osd_type]
+
+ def _get_size(self):
+ size = fread("/sys/block/{}/size".format(self._base_dev))
+ if size.isdigit():
+ size = int(size) * 512
+ else:
+ size = 0
+ return size
+
+ def _get_rota(self):
+ rota = fread("/sys/block/{}/queue/rotational".format(self._base_dev))
+ if rota.isdigit():
+ # 0 = flash/nvme/ssd, 1 = HDD
+ return rota
+ else:
+ # default to a HDD response
+ return 1
+
+ @staticmethod
+ def get_base_dev(dev_name):
+
+ # for intelcas devices, just use the device name as is
+ if dev_name.startswith('intelcas'):
+ device = dev_name
+ elif dev_name.startswith('nvme'):
+ if 'p' in dev_name:
+ device = dev_name[:(dev_name.index('p'))]
+ else:
+ device = dev_name
+ else:
+ # default strip any numeric ie. sdaa1 -> sdaa
+ device = filter(lambda ch: ch.isalpha(), dev_name)
+
+ return device
+
--- /dev/null
+#!/usr/bin/env python2
+
+# requires python-rtslib_fb for LIO interaction
+#
+# NB. the rtslib_fb module is dynamically loaded by the ISCSIGateway
+# class instantiation. This prevents import errors within the generic parent
+# module cephmetrics
+#
+import os
+import sys
+import time
+
+from collectors.base import BaseCollector
+from collectors.common import fread
+
+
+class Client(object):
+
+ def __init__(self, iqn):
+ self.iqn = iqn
+ self.name = iqn.replace('.', '-')
+ self.luns = {}
+ self.lun_count = 0
+ self._cycle = 0
+
+ def dump(self):
+ client_dump = {}
+ lun_info = {}
+ client_dump[self.name] = {"luns": {},
+ "lun_count": self.lun_count}
+ for lun_name in self.luns:
+ lun = self.luns[lun_name]
+ lun_info.update(lun.dump())
+
+ return {self.name: {"luns": lun_info,
+ "lun_count": len(lun_info)}
+ }
+
+
+class LUN(object):
+
+ def __init__(self, client, tpg_lun):
+ self._path = tpg_lun.storage_object.path
+ self._tpg_lun = tpg_lun
+ self._name = tpg_lun.storage_object.name
+ self._display_name = tpg_lun.storage_object.name.replace('.', "-")
+ self._so = tpg_lun.storage_object
+ self._client = client
+ self._cycle = 0
+ self.size = 0
+ self.iops = 0
+ self.read_bytes_per_sec = 0
+ self.write_bytes_per_sec = 0
+ self.total_bytes_per_sec = 0
+ self.active_path = 0
+
+ def refresh(self, cycle_id):
+ self._cycle = cycle_id
+ self.size = self._so.size
+ stats_path = os.path.join(self._path, 'statistics/scsi_lu')
+ self.iops = int(fread(os.path.join(stats_path, "num_cmds")))
+ read_mb = float(fread(os.path.join(stats_path, "read_mbytes")))
+ write_mb = float(fread(os.path.join(stats_path, "write_mbytes")))
+ self.read_bytes_per_sec = int(read_mb * 1024 ** 2)
+ self.write_bytes_per_sec = int(write_mb * 1024 ** 2)
+ self.total_bytes_per_sec = self.read_bytes_per_sec + \
+ self.write_bytes_per_sec
+
+ if self._tpg_lun.alua_tg_pt_gp_name == 'ao':
+ self.active_path = 1
+ else:
+ self.active_path = 0
+
+ def dump(self):
+ return {self._display_name: {k: getattr(self, k) for k in self.__dict__
+ if not k.startswith("_")}}
+
+
+class ISCSIGateway(BaseCollector):
+ """
+ created on a host that has a /sys/kernel/config/target/iscsi dir
+ i.e. there is an iscsi gateway here!
+ """
+
+ all_metrics = {
+ "lun_count": ("lun_count", "gauge"),
+ "client_count": ("client_count", "gauge"),
+ "tpg_count": ("tpg_count", "gauge"),
+ "sessions": ("sessions", "gauge"),
+ "capacity": ("capacity", "gauge"),
+ "iops": ("iops", "derive"),
+ "read_bytes_per_sec": ("read_bytes_per_sec", "derive"),
+ "write_bytes_per_sec": ("write_bytes_per_sec", "derive"),
+ "total_bytes_per_sec": ("total_bytes_per_sec", "derive")
+ }
+
+ def __init__(self, *args, **kwargs):
+ BaseCollector.__init__(self, *args, **kwargs)
+
+ # Since the module can be imported by a parent class but not
+ # instantiated, the rtslib import is deferred until the first instance
+ # of the the class is created. This keeps the parent module simple
+ # and more importantly generic
+ if 'rtslib_fb.root' not in sys.modules.keys():
+
+ try:
+ from rtslib_fb.root import RTSRoot
+ except ImportError:
+ raise
+
+ self._root = RTSRoot()
+
+ self.clients = {}
+ self.cycle = 0
+
+ self.iops = 0
+ self.read_bytes_per_sec = 0
+ self.write_bytes_per_sec = 0
+ self.total_bytes_per_sec = 0
+
+ def refresh(self):
+ """
+ populate the instance by exploring rtslib
+ """
+
+ self.iops = 0
+ self.read_bytes_per_sec = 0
+ self.write_bytes_per_sec = 0
+ self.total_bytes_per_sec = 0
+
+ if self.cycle == 10:
+ self.cycle = 0
+ else:
+ self.cycle += 1
+
+ for node_acl in self._root.node_acls:
+
+ client_name = node_acl.node_wwn
+
+ if client_name not in self.clients:
+ new_client = Client(client_name)
+ self.clients[client_name] = new_client
+
+ client = self.clients[client_name]
+ client.lun_count = 0
+ client._cycle = self.cycle
+
+ for lun in node_acl.mapped_luns:
+ client.lun_count += 1
+ tpg_lun = lun.tpg_lun
+ lun_name = tpg_lun.storage_object.name
+ if lun_name not in client.luns:
+ lun = LUN(client, tpg_lun)
+ client.luns[lun._name] = lun
+ else:
+ lun = client.luns[lun_name]
+
+ lun.refresh(self.cycle)
+
+ self.iops += lun.iops
+ self.read_bytes_per_sec += lun.read_bytes_per_sec
+ self.write_bytes_per_sec += lun.write_bytes_per_sec
+ self.total_bytes_per_sec = self.read_bytes_per_sec + \
+ self.write_bytes_per_sec
+
+ def prune(self):
+ """
+ drop child objects held by the instance, that are no longer in the
+ iSCSI config i.e. don't report on old information
+ """
+
+ for client_name in self.clients:
+ client = self.clients[client_name]
+
+ for lun_name in client.luns:
+ lun = client.luns[lun_name]
+ if lun._cycle != self.cycle:
+ # drop the lun entry
+ self.logger.debug("pruning LUN '{}'".format(lun_name))
+
+ del client.luns[lun_name]
+
+ if client._cycle != self.cycle:
+ # drop the client entry
+ self.logger.debug("pruning client '{}'".format(client_name))
+ del self.clients[client_name]
+
+ def dump(self):
+
+ gw_stats = {}
+ client_stats = {}
+
+ for metric in ISCSIGateway.all_metrics:
+ gw_stats[metric] = getattr(self, metric)
+
+ for client_name in self.clients:
+ client = self.clients[client_name]
+ client_stats.update(client.dump())
+
+ return {"iscsi": {
+ "ceph_version": self.version,
+ "gw_name": {self.gateway_name: 0},
+ "gw_stats": gw_stats,
+ "gw_clients": client_stats
+ }
+ }
+
+ def _get_so(self):
+ return [so for so in self._root.storage_objects]
+
+ def _get_node_acls(self):
+ return [node for node in self._root.node_acls]
+
+ @property
+ def tpg_count(self):
+ return len([tpg for tpg in self._root.tpgs])
+
+ @property
+ def lun_count(self):
+ return len(self._get_so())
+
+ @property
+ def sessions(self):
+ return len([session for session in self._root.sessions])
+
+ @property
+ def gateway_name(self):
+ # Only the 1st gateway is considered/supported
+ gw_iqn = [gw.wwn for gw in self._root.targets][0]
+ return gw_iqn.replace('.', '-')
+
+ @property
+ def client_count(self):
+ return len(self._get_node_acls())
+
+ @property
+ def capacity(self):
+ return sum([so.size for so in self._get_so()])
+
+ def get_stats(self):
+
+ start = time.time()
+
+ # populate gateway instance with the latest configuration from rtslib
+ stats = {}
+ if os.path.exists('/sys/kernel/config/target/iscsi'):
+ self.refresh()
+
+ # Overtime they'll be churn in client and disks so we need to drop
+ # any entries from prior runs that are no longer seen in the iscsi
+ # configuration with the prune method
+ self.prune()
+ stats = self.dump()
+ else:
+ msg = "iSCSI Gateway is not active on this host"
+ self.logger.warning(msg)
+ self.error = True
+ self.error_msgs = [msg]
+ stats = {"iscsi": {
+ "ceph_version": self.version
+ }
+ }
+
+ end = time.time()
+
+ self.logger.info("LIO stats took {}s".format(end - start))
+
+ return stats
+
--- /dev/null
+#!/usr/bin/env python
+
+import rados
+import rbd
+import json
+import threading
+import time
+import logging
+import requests
+
+from collectors.base import BaseCollector
+from collectors.common import merge_dicts, get_hostname, get_names
+
+
+class CephState(object):
+
+ def __init__(self, status=None, summary_list=[]):
+ self.status = status
+
+ # create a list of health issues, ignoring the warning that Luminous
+ # issues
+ summary_data = [health_issue.get('summary', '')
+ for health_issue in summary_list]
+ self.summary = [health_desc for health_desc in summary_data
+ if 'update your health monitoring' not in health_desc]
+
+ def update(self, state_object):
+ self.status = state_object.status
+ self.summary = state_object.summary
+
+ @property
+ def status_items(self):
+ """
+ The summary text will track pgs objects during recovery or backfill
+ operations, so every status could be different from the last as these
+ counts change. this function removes the int(s) from the status text
+ to reduce the frequency that a status check would generate an event
+ :return: items (set) unique set of status items
+ """
+ priority_errors = ['mons', 'osds', 'flag(s)']
+
+ items = set()
+ for summary_text in self.summary:
+ if any(prio_field in summary_text
+ for prio_field in priority_errors):
+ # priority health messages kept as is
+ items.add(summary_text)
+ else:
+ # other messages get their 'counts' removed
+ new_text = filter(lambda x: not x.isdigit(), summary_text)
+ items.add(new_text)
+
+ return items
+
+ @property
+ def status_str(self):
+ return "{} : {}".format(self.status,
+ ','.join(self.summary))
+
+
+class RBDScanner(threading.Thread):
+
+ def __init__(self, cluster_name, pool_name):
+ self.cluster_name = cluster_name
+ self.pool_name = pool_name
+ self.num_rbds = 0
+ self.logger = logging.getLogger('cephmetrics')
+
+ threading.Thread.__init__(self)
+
+ def run(self):
+ rbd_images = []
+ conf_file = "/etc/ceph/{}.conf".format(self.cluster_name)
+ self.logger.debug("scan of '{}' starting".format(self.pool_name))
+ with rados.Rados(conffile=conf_file) as cluster:
+ with cluster.open_ioctx(self.pool_name) as ioctx:
+ rbd_inst = rbd.RBD()
+ self.logger.debug("listing rbd's in {}".format(self.pool_name))
+ rbd_images = rbd_inst.list(ioctx)
+
+ self.logger.info("pool scan complete for '{}'".format(self.pool_name))
+ self.num_rbds = len(rbd_images)
+
+
+class Mon(BaseCollector):
+
+ health = {
+ "HEALTH_OK": 0,
+ "HEALTH_WARN": 4,
+ "HEALTH_ERR": 8
+ }
+
+ osd_state = {
+ "up": 0,
+ "down": 1
+ }
+
+ # metrics are declared, where each element has a description and collectd
+ # data type. The description is used to ensure the names sent by collectd
+ # remain the same even if the source name changes in ceph.
+ cluster_metrics = {
+ "num_mon": ("num_mon", "gauge"),
+ "num_mon_quorum": ("num_mon_quorum", "gauge"),
+ "num_rbds": ("num_rbds", "gauge"),
+ "num_osd_hosts": ("num_osd_hosts", "gauge"),
+ "num_osd": ("num_osd", "gauge"),
+ "num_osd_up": ("num_osd_up", "gauge"),
+ "num_osd_in": ("num_osd_in", "gauge"),
+ "osd_epoch": ("osd_epoch", "gauge"),
+ "osd_bytes": ("osd_bytes", "gauge"),
+ "osd_bytes_used": ("osd_bytes_used", "gauge"),
+ "osd_bytes_avail": ("osd_bytes_avail", "gauge"),
+ "num_pool": ("num_pool", "gauge"),
+ "num_pg": ("num_pg", "gauge"),
+ "num_pg_active_clean": ("num_pg_active_clean", "gauge"),
+ "num_pg_active": ("num_pg_active", "gauge"),
+ "num_pg_peering": ("num_pg_peering", "gauge"),
+ "num_object": ("num_object", "gauge"),
+ "num_object_degraded": ("num_object_degraded", "gauge"),
+ "num_object_misplaced": ("num_object_misplaced", "gauge"),
+ "num_object_unfound": ("num_object_unfound", "gauge"),
+ "num_bytes": ("num_bytes", "gauge"),
+ "num_mds_up": ("num_mds_up", "gauge"),
+ "num_mds_in": ("num_mds_in", "gauge"),
+ "num_mds_failed": ("num_mds_failed", "gauge"),
+ "mds_epoch": ("mds_epoch", "gauge"),
+ "health": ("health", "gauge")
+ }
+
+ pool_client_metrics = {
+ 'bytes_sec': ("bytes_sec", "gauge"),
+ 'op_per_sec': ("op_per_sec", "gauge"),
+ 'read_bytes_sec': ("read_bytes_sec", "gauge"),
+ 'write_op_per_sec': ("write_op_per_sec", "gauge"),
+ 'write_bytes_sec': ("write_bytes_sec", "gauge"),
+ 'read_op_per_sec': ("read_op_per_sec", "gauge")
+ }
+
+ pool_recovery_metrics = {
+ "recovering_objects_per_sec": ("recovering_objects_per_sec", "gauge"),
+ "recovering_bytes_per_sec": ("recovering_bytes_per_sec", "gauge"),
+ "recovering_keys_per_sec": ("recovering_keys_per_sec", "gauge"),
+ "num_objects_recovered": ("num_objects_recovered", "gauge"),
+ "num_bytes_recovered": ("num_bytes_recovered", "gauge"),
+ "num_keys_recovered": ("num_keys_recovered", "gauge")
+ }
+
+ mon_states = {
+ "mon_status": ("mon_status", "gauge")
+ }
+
+ all_metrics = merge_dicts(pool_recovery_metrics, pool_client_metrics)
+ all_metrics = merge_dicts(all_metrics, cluster_metrics)
+ all_metrics = merge_dicts(all_metrics, mon_states)
+
+ def __init__(self, *args, **kwargs):
+ BaseCollector.__init__(self, *args, **kwargs)
+
+ self.admin_socket = ('/var/run/ceph/{}-mon.'
+ '{}.asok'.format(self.cluster_name,
+ get_hostname()))
+
+ self.last_state = CephState()
+
+ self.ip_names = get_names()
+
+ if self.version < 12:
+ self.get_mon_health = self._mon_health
+ else:
+ self.get_mon_health = self._mon_health_new
+
+
+
+ if self._parent:
+ self.logger.debug("Event URL is : "
+ "{}".format(self._parent.event_url))
+
+ def _mon_command(self, cmd_request):
+ """ Issue a command to the monitor """
+
+ buf_s = '{}'
+ conf_file = "/etc/ceph/{}.conf".format(self.cluster_name)
+
+ start = time.time()
+ with rados.Rados(conffile=conf_file) as cluster:
+ cmd = {'prefix': cmd_request, 'format': 'json'}
+ rc, buf_s, out = cluster.mon_command(json.dumps(cmd), b'')
+ end = time.time()
+
+ self.logger.debug("_mon_command call '{}' :"
+ " {:.3f}s".format(cmd_request,
+ (end - start)))
+
+ return json.loads(buf_s)
+
+ @staticmethod
+ def get_feature_state(summary_data, pg_states):
+ """
+ Look at the summary list to determine the state of RADOS features
+ :param summary_data: (list) summary data from a ceph health command
+ :return: (dict) dict indexed by feature
+ 0 Inactive, 1 Active, 2 Disabled
+ """
+ feature_lookup = {"noscrub": "scrub",
+ "nodeep-scrub": "deep_scrub",
+ "norecover": "recovery",
+ "nobackfill": "backfill",
+ "norebalance": "rebalance",
+ "noout": "out",
+ "nodown": "down"}
+
+ # Start with all features inactive i.e. enabled
+ feature_state = {feature_lookup.get(key): 0 for key in feature_lookup}
+
+ for summary in summary_data:
+ summary_desc = summary.get('summary')
+ if "flag(s) set" in summary_desc:
+ flags = summary_desc.replace(' flag(s) set', '').split(',')
+ for disabled_feature in flags:
+ if disabled_feature in feature_lookup:
+ feature = feature_lookup.get(disabled_feature)
+ feature_state[feature] = 2 # feature disabled
+
+ # Now use the current pg state names to determine whether a feature is
+ # active - if not it stays set to '0', which means inactive
+ pg_state_names = [pg_state.get('name') for pg_state in pg_states]
+ for pg_state in pg_state_names:
+ states = pg_state.split('+')
+ if 'recovering' in states:
+ feature_state['recovery'] = 1 # Active
+ continue
+ if 'backfilling' in states:
+ feature_state['backfill'] = 1
+ continue
+ if 'deep' in states:
+ feature_state['deep_scrub'] = 1
+ continue
+ if 'scrubbing' in states:
+ feature_state['scrub'] = 1
+
+ return feature_state
+
+ @classmethod
+ def check_stuck_pgs(cls, summary_list):
+ bad_pg_words = ['pgs', 'stuck', 'inactive']
+ stuck_pgs = 0
+ for summary_data in summary_list:
+ if summary_data.get('severity') != 'HEALTH_ERR':
+ continue
+ if all(trigger in summary_data.get('summary')
+ for trigger in bad_pg_words):
+ stuck_pgs = int(summary_data.get('summary').split()[0])
+
+ return stuck_pgs
+
+ def _mon_health_new(self, cluster_data):
+
+ cluster, health_data = self._mon_health_common(cluster_data)
+
+ mon_status_output = self._mon_command('mon_status')
+ quorum_list = mon_status_output.get('quorum')
+ mon_list = mon_status_output.get('monmap').get('mons')
+ mon_status = {}
+ for mon in mon_list:
+ state = 0 if mon.get('rank') in quorum_list else 4
+ mon_status[mon.get('name')] = state
+
+ cluster['mon_status'] = mon_status
+
+ self.manage_event(health_data.get('status'),
+ health_data.get('summary', []),
+ mon_status)
+
+ return cluster
+
+ def _mon_health_common(self, cluster_data):
+
+ # for v12 (Luminous and beyond) add the following setting to
+ # ceph.conf "mon_health_preluminous_compat=true"
+ # this will provide the same output as pre-luminous
+
+ health_data = {}
+ cluster = {}
+
+ pg_data = self._mon_command("pg stat")
+ health_data = self._mon_command("health")
+ health_text = health_data.get('status',
+ health_data.get('overall_status', ''))
+
+ cluster = {Mon.cluster_metrics[k][0]: cluster_data[k]
+ for k in cluster_data}
+
+ health_num = Mon.health.get(health_text, 16)
+
+ cluster['health'] = health_num
+
+ pg_states = pg_data.get('num_pg_by_state') # list of dict name,num
+ health_summary = health_data.get('summary', []) # list of issues
+ cluster['num_pgs_stuck'] = Mon.check_stuck_pgs(health_summary)
+ cluster['features'] = Mon.get_feature_state(health_summary,
+ pg_states)
+
+ self.logger.debug(
+ 'Features:{}'.format(json.dumps(cluster['features'])))
+
+ return cluster, health_data
+
+ def get_cluster_state(self):
+ return self._admin_socket().get('cluster', {})
+
+ def _mon_health(self, cluster_data):
+
+ cluster, health_data = self._mon_health_common(cluster_data)
+
+ services = health_data.get('health').get('health_services')
+ mon_status = {}
+ for svc in services:
+ if 'mons' in svc:
+ # Each monitor will have a numeric value denoting health
+ mon_status = {mon.get('name'): Mon.health.get(mon.get('health'))
+ for mon in svc.get('mons')}
+
+ cluster['mon_status'] = mon_status
+
+ self.manage_event(health_data.get('overall_status'),
+ health_data.get('summary', []),
+ mon_status)
+
+ return cluster
+
+ def manage_event(self, health_text, health_summary, mon_status):
+
+ if not self._parent:
+ # invoked without a parent, as part of system tests
+ return
+ elif not self._parent.event_url:
+ # event generation skipped
+ return
+
+ candidates = [mon_name for mon_name in sorted(mon_status)
+ if mon_status.get(mon_name) == 0]
+
+ if candidates:
+ sender = candidates[0]
+ if sender not in self.ip_names:
+ # only one mon should send, so if that's not us do nothing
+ return
+ else:
+ # no suitable mon to send the alert
+ self.logger.error("Unable to send ANY event - no valid mon "
+ "found")
+ return
+
+ # If we're here, the current host is suitable to send an event so lets
+ # look deeper to see if we need to
+
+ current_state = CephState(health_text, health_summary)
+ self.logger.debug("health:{}".format(current_state.status))
+ self.logger.debug("health:{}".format(current_state.summary))
+ send_it = False
+
+ if health_text != self.last_state.status:
+ # Overall health has changed, so just send the current state!
+ send_it = True
+ else:
+ # look deeper - only send if the list of issues is different
+ if health_text == 'HEALTH_OK':
+ # nothing to do, nothing to send
+ pass
+ else:
+ if self.last_state.status_items != current_state.status_items:
+ send_it = True
+
+ self.last_state.update(current_state)
+
+ if send_it:
+ tag = 'health_ok' if current_state.status == 'HEALTH_OK' \
+ else 'health_alert'
+
+ self.logger.info("sending cluster status to "
+ "{}".format(self._parent.event_url))
+ self.logger.debug(current_state.status_str)
+
+ rc = Mon.post_event(self._parent.event_url,
+ tag,
+ current_state.status_str)
+
+ if rc != 200:
+ self.error = True
+ self.error_msgs = ['POST request to {} failed ({}) - '
+ 'firewall?'.format(self._parent.event_url,
+ rc)]
+ self.logger.warning("Unable to send event - graphite response "
+ "{}".format(rc))
+
+ else:
+ # no real change to report
+ pass
+
+ @staticmethod
+ def post_event(url, tag_name, event_message):
+
+ headers = {"Content-Type": "application/json"}
+
+ try:
+ r = requests.post(url,
+ headers=headers,
+ data='{{"what":"Ceph Health",'
+ '"tags":"{}",'
+ '"data":"{}"}}'.format(tag_name,
+ event_message))
+ except requests.ConnectionError:
+ # if we hit this, the endpoint wasn't there (graphite web was not
+ # accessible) so identify that issue as a server error (500)
+ return 500
+
+ else:
+ return r.status_code
+
+ @classmethod
+ def _seed(cls, metrics):
+ return {metrics[key][0]: 0 for key in metrics}
+
+ def display_names(self, metric_format, metrics):
+ """
+ convert the keys to the static descriptions
+ :return:
+ """
+ return {metric_format[k][0]: metrics[k]
+ for k in metrics} if metrics else {}
+
+ def _get_df_stats(self):
+ """ get 'ceph df' stats from rados """
+ raw_stats = self._mon_command('df')
+ for pool in raw_stats['pools']:
+ pool['name'] = pool['name'].replace('.', '_')
+ return raw_stats
+
+ def _get_pool_stats(self):
+ """ get pool stats from rados """
+
+ raw_stats = self._mon_command('osd pool stats')
+ pool_stats = {}
+
+ # process each pool
+ for pool in raw_stats:
+
+ pool_name = pool['pool_name'].replace('.', '_')
+ client_io = self.display_names(Mon.pool_client_metrics,
+ pool.get('client_io_rate'))
+ recovery = self.display_names(Mon.pool_recovery_metrics,
+ pool.get('recovery_rate'))
+
+ pool_md = {}
+ if client_io:
+
+ # Add pool level aggregation
+ client_io['bytes_sec'] = client_io.get('read_bytes_sec', 0) + \
+ client_io.get('write_bytes_sec', 0)
+ client_io["op_per_sec"] = client_io.get('read_op_per_sec', 0)+ \
+ client_io.get('write_op_per_sec', 0)
+ pool_md = client_io
+
+ else:
+ pool_md = Mon._seed(Mon.pool_client_metrics)
+
+ if recovery:
+ pool_md = merge_dicts(pool_md, recovery)
+ else:
+ pool_md = merge_dicts(pool_md, Mon._seed(
+ Mon.pool_recovery_metrics))
+
+ pool_stats[pool_name] = pool_md
+
+ return pool_stats
+
+ def _get_osd_states(self):
+
+ self.logger.debug("fetching osd states from the local mon")
+ raw = self._mon_command('osd dump')
+ osd_hosts = set()
+ osds = {}
+ for osd in raw.get('osds'):
+ cluster_addr = osd.get('cluster_addr').split(':')[0]
+ osd_hosts.add(cluster_addr)
+
+ # NB. The key for the osds dict must be a string as the dict is
+ # flattened when the metric name is derived in the parent collectd
+ # module. If it is not converted, you get a TypeError
+ osds[str(osd.get('osd'))] = {"up": osd.get('up'),
+ "in": osd.get('in')}
+
+ return len(osd_hosts), osds
+
+ @staticmethod
+ def _select_pools(pools, mons):
+ """
+ determine the pools this mon should scan based on it's name. We select
+ pools from the an offset into the pool list, and then repeat at an
+ interval set by # mons in the configuration. This splits up the pools
+ we have, so each mon looks at a discrete set of pools instead of all
+ mons performing all scans.
+ :param pools: (list) rados pool names
+ :param mons: (list) monitor names from ceph health
+ :return: (list) of pools this monitor should scan. empty list if the
+ monitor name mismatches - so no scans done
+ """
+
+ pools_to_scan = []
+
+ try:
+ freq = mons.index(get_hostname())
+ except ValueError:
+ # this host's name is not in the monitor list?
+ # twilight zone moment
+ pass
+ else:
+
+ pools_to_scan = [pools[ptr]
+ for ptr in xrange(freq, len(pools), len(mons))]
+
+ return pools_to_scan
+
+ def get_rbd_pools(self):
+ """
+ Look at the rados pools to filter out pools that would normally not
+ be associated with rbd images
+ :return: (list) of pools that may contain rbd images
+ """
+ skip_pools = ('default.rgw', '.rgw.')
+
+ start = time.time()
+ conf_file = "/etc/ceph/{}.conf".format(self.cluster_name)
+ with rados.Rados(conffile=conf_file) as cluster:
+ rados_pools = sorted(cluster.list_pools())
+ end = time.time()
+
+ self.logger.debug('lspools took {:.3f}s'.format(end - start))
+
+ filtered_pools = [pool for pool in rados_pools
+ if not pool.startswith(skip_pools)]
+
+ return filtered_pools
+
+ def _get_rbds(self, monitors):
+ """
+ Scan a subset of the rados pools for rbd images. Each mon collector
+ will scan a subset of the pools to distribute the load using the
+ RBSScanner class
+ :param monitors: (dict) monitor names and states
+ :return total_rbs: (int) total rbd images found across pools
+ """
+
+ pool_list = self.get_rbd_pools()
+ mon_list = sorted(monitors.keys())
+ my_pools = Mon._select_pools(pool_list, mon_list)
+ self.logger.debug("Pools to be scanned on this mon"
+ " : {}".format(','.join(my_pools)))
+ threads = []
+
+ start = time.time()
+
+ for pool in my_pools:
+ thread = RBDScanner(self.cluster_name, pool)
+ thread.start()
+ threads.append(thread)
+
+ # wait for all threads to complete
+ for thread in threads:
+ thread.join(1)
+
+ end = time.time()
+ self.logger.debug("rbd scans {:.3f}s".format((end - start)))
+
+ total_rbds = sum([thread.num_rbds for thread in threads])
+ self.logger.debug("total rbds found : {}".format(total_rbds))
+
+ for thread in threads:
+ del thread
+
+ return total_rbds
+
+ def get_stats(self):
+ """
+ method associated with the plugin callback to gather the metrics
+ :return: (dict) metadata describing the state of the mon/osd's etc
+ """
+
+ start = time.time()
+
+ # Attempt to read the admin socket for cluster data
+ cluster_data = self.get_cluster_state()
+
+ if cluster_data:
+
+ # read from the admin socket was OK, so process the data
+ cluster_state = self.get_mon_health(cluster_data)
+ pool_stats = self._get_pool_stats()
+ df_stats = self._get_df_stats()
+ for df_obj in df_stats['pools']:
+ pool_name = df_obj['name']
+ pool_stats[pool_name] = merge_dicts(
+ pool_stats[pool_name], df_obj['stats'])
+ num_osd_hosts, osd_states = self._get_osd_states()
+
+ cluster_state['num_osd_hosts'] = num_osd_hosts
+ cluster_state['num_rbds'] = self._get_rbds(cluster_state['mon_status'])
+
+ all_stats = merge_dicts(cluster_state, {"pools": pool_stats,
+ "osd_state": osd_states})
+ else:
+ # problem reading from the admin socket, record it in cephmetrics
+ # log and set the object's error flag so it can be picked up at the
+ # layer above the Mon instance (Ceph instance -> collectd log)
+ all_stats = {}
+ self.error = True
+ msg = 'MON socket is not available...is ceph-mon active?'
+ self.error_msgs = [msg]
+ self.logger.warning(msg)
+
+ all_stats['ceph_version'] = self.version
+
+ end = time.time()
+ self.logger.info("mon get_stats call : {:.3f}s".format((end - start)))
+
+ return {
+ "mon": all_stats
+ }
+
--- /dev/null
+#!/usr/bin/env python
+
+import os
+import time
+import math
+
+from collectors.base import BaseCollector
+from collectors.common import (todict, fread, freadlines, merge_dicts,
+ IOstat, Disk)
+
+
+class OSDstats(object):
+
+ osd_capacity = {
+ "stat_bytes": ("stat_bytes", "gauge"),
+ "stat_bytes_used": ("stat_bytes_used", "gauge"),
+ "stat_bytes_avail": ("stat_bytes_avail", "gauge")
+ }
+
+ perf_metrics = {
+ "filestore": {
+ "journal_latency",
+ "commitcycle_latency",
+ "apply_latency",
+ "queue_transaction_latency_avg"
+ },
+ "bluestore": {
+ "submit_lat",
+ "throttle_lat",
+ "state_aio_wait_lat",
+ "kv_flush_lat",
+ "kv_commit_lat"
+ }
+ }
+
+ def __init__(self, osd_type='filestore'):
+ self._current = {}
+ self._previous = {}
+ self._osd_type = osd_type
+ self.osd_type = Disk.osd_types[osd_type]
+ self.osd_percent_used = 0
+
+ def update(self, stats):
+ """
+ update the objects attributes based on the 'stats' dict
+ :param stats: (dict) containing performance ('filestore' or 'bluestore')
+ and capacity info ('osd')
+ :return: None
+ """
+
+ if self._current:
+ self._previous = self._current
+ self._current = stats[self._osd_type]
+ else:
+ self._current = stats[self._osd_type]
+
+ for attr in OSDstats.perf_metrics[self._osd_type]:
+
+ if attr not in self._current:
+ # skip if the attribute needed isn't available
+ # eg. early versions of bluestore didn't have a 'stable'
+ # set of perf counters
+ continue
+
+ if self._previous:
+ d_sum = self._current[attr].get('sum') - \
+ self._previous[attr].get('sum')
+ d_avgcount = self._current[attr].get('avgcount') - \
+ self._previous[attr].get('avgcount')
+
+ if d_sum == 0 or d_avgcount == 0:
+ val = 0
+ else:
+ val = float(d_sum) / d_avgcount
+ else:
+ # no previous value, so set to 0
+ val = 0
+
+ setattr(self, attr, val)
+
+ for attr in stats['osd']:
+ setattr(self, attr, stats['osd'].get(attr))
+
+ self.osd_percent_used = math.ceil((float(self.stat_bytes_used) /
+ self.stat_bytes) * 100)
+
+
+class OSDs(BaseCollector):
+
+ all_metrics = merge_dicts(Disk.metrics, IOstat.metrics)
+ supported_object_stores = ['filestore', 'bluestore']
+
+ def __init__(self, *args, **kwargs):
+ BaseCollector.__init__(self, *args, **kwargs)
+ self.timestamp = int(time.time())
+
+ self.osd = {} # dict of disk objects, each disk contains osd_id
+ self.jrnl = {} # dict of journal devices (if not collocated)
+ self.osd_id_list = []
+ self.dev_lookup = {} # dict dev_name -> osd | jrnl
+ self.osd_count = 0
+
+ def __repr__(self):
+
+ s = ''
+ for disk in self.osd:
+ s += "{}\n".format(disk)
+ dev = self.osd[disk]
+
+ for var in vars(dev):
+ if not var.startswith('_'):
+ s += "{} ... {}\n".format(var, getattr(dev, var))
+ return s
+
+ def _fetch_osd_stats(self, osd_id, osd_type='filestore'):
+
+ # NB: osd stats are cumulative
+
+ stats = {}
+ osd_socket_name = '/var/run/ceph/{}-osd.{}.asok'.format(self.cluster_name,
+ osd_id)
+
+ if not os.path.exists(osd_socket_name):
+ # all OSD's should expose an admin socket, so if it's missing
+ # the osd hasn't initialized properly or it's gone down
+ msg = "Socket file missing for OSD {}".format(osd_id)
+ self.logger.error(msg)
+ self.error = True
+ self.error_msg = msg
+ return
+
+ self.logger.debug("fetching osd stats for osd {}".format(osd_id))
+ resp = self._admin_socket(socket_path=osd_socket_name)
+
+ perf_stats = resp.get(osd_type)
+
+ stats[osd_type] = {key_name: perf_stats.get(key_name)
+ for key_name in OSDstats.perf_metrics[osd_type]}
+
+ osd_stats = resp.get('osd')
+
+ # Add disk usage stats
+ stats['osd'] = {key_name: osd_stats.get(key_name)
+ for key_name in OSDstats.osd_capacity.keys()}
+
+ return stats
+
+ @staticmethod
+ def get_osd_type(osd_path):
+
+ osd_type_fname = os.path.join(osd_path, 'type')
+ if os.path.exists(osd_type_fname):
+ return fread(osd_type_fname)
+ else:
+ if os.path.exists(os.path.join(osd_path, 'journal')):
+ return "filestore"
+ else:
+ raise ValueError("Unrecognised OSD type")
+
+ def _dev_to_osd(self):
+ """
+ Look at the system to determine which disks are acting as OSD's
+ """
+
+ # the logic here uses the mount points to determine which OSD's are
+ # in the system. The encryption state is determine just by the use
+ # devicemapper (i.e. /dev/mapper prefixed devices) - since at this time
+ # this is all dm is used for.
+
+ osd_indicators = {'var', 'lib', 'osd'}
+
+ for mnt in freadlines('/proc/mounts'):
+ items = mnt.split(' ')
+ dev_path, path_name = items[:2]
+ if path_name.startswith('/var/lib'):
+ # take a close look since this is where ceph osds usually
+ # get mounted
+ dirs = set(path_name.split('/'))
+ if dirs.issuperset(osd_indicators):
+
+ # get the osd_id from the name is the most simple way
+ # to get the id, due to naming conventions. If this fails
+ # though, plan 'b' is the whoami file
+ osd_id = path_name.split('-')[-1]
+ if not osd_id.isdigit():
+ osd_id = fread(os.path.join(path_name, 'whoami'))
+
+ if osd_id not in self.osd:
+ osd_type = OSDs.get_osd_type(path_name)
+ self.osd[osd_id] = OSDstats(osd_type=osd_type)
+ self.osd_id_list.append(osd_id)
+
+ osd_type = self.osd[osd_id]._osd_type
+ if osd_type == 'filestore':
+ if dev_path.startswith('/dev/mapper'):
+ encrypted = 1
+ uuid = dev_path.split('/')[-1]
+ partuuid = '/dev/disk/by-partuuid/{}'.format(uuid)
+ dev_path = os.path.realpath(partuuid)
+ osd_device = dev_path.split('/')[-1]
+ else:
+ encrypted = 0
+ osd_device = dev_path.split('/')[-1]
+
+ elif osd_type == 'bluestore':
+ block_link = os.path.join(path_name, 'block')
+ osd_path = os.path.realpath(block_link)
+ osd_device = osd_path.split('/')[-1]
+ encrypted = 0
+ else:
+ raise ValueError("Unknown OSD type encountered")
+
+ # if the osd_id hasn't been seem neither has the
+ # disk
+ self.osd[osd_device] = Disk(osd_device,
+ path_name=path_name,
+ osd_id=osd_id,
+ in_osd_type=osd_type,
+ encrypted=encrypted)
+ self.dev_lookup[osd_device] = 'osd'
+ self.osd_count += 1
+
+ if osd_type == 'filestore':
+ journal_link = os.path.join(path_name, 'journal')
+ else:
+ journal_link = os.path.join(path_name, 'block.wal')
+
+ if os.path.exists(journal_link):
+ link_tgt = os.readlink(journal_link)
+ if link_tgt.startswith('/dev/mapper'):
+ encrypted = 1
+ else:
+ encrypted = 0
+
+ partuuid_path = os.path.join('/dev/disk/by-partuuid',
+ link_tgt.split('/')[-1])
+ jrnl_path = os.path.realpath(partuuid_path)
+ jrnl_dev = jrnl_path.split('/')[-1]
+
+ if jrnl_dev not in self.osd:
+ self.jrnl[jrnl_dev] = Disk(jrnl_dev,
+ osd_id=osd_id,
+ in_osd_type=osd_type,
+ encrypted=encrypted)
+
+ self.dev_lookup[jrnl_dev] = 'jrnl'
+
+ else:
+ # No journal or WAL link..?
+ pass
+
+ def _stats_lookup(self):
+ """
+ Grab the disk stats from /proc/diskstats, and the key osd perf dump
+ counters
+ """
+
+ now = time.time()
+ interval = int(now) - self.timestamp
+ self.timestamp = int(now)
+
+ # Fetch diskstats from the OS
+ for perf_entry in freadlines('/proc/diskstats'):
+
+ field = perf_entry.split()
+ dev_name = field[2]
+
+ device = None
+ if self.dev_lookup.get(dev_name, None) == 'osd':
+ device = self.osd[dev_name]
+ elif self.dev_lookup.get(dev_name, None) == 'jrnl':
+ device = self.jrnl[dev_name]
+
+ if device:
+ new_stats = field[3:]
+
+ if device.perf._current:
+ device.perf._previous = device.perf._current
+ device.perf._current = new_stats
+ else:
+ device.perf._current = new_stats
+
+ device.perf.compute(interval)
+
+ end = time.time()
+ self.logger.debug("OS disk stats calculated in "
+ "{:.4f}s".format(end-now))
+
+ # fetch stats from each osd daemon
+ osd_stats_start = time.time()
+ for osd_id in self.osd_id_list:
+
+ osd_type = self.osd[osd_id]._osd_type
+
+ if osd_type in OSDs.supported_object_stores:
+
+ osd_stats = self._fetch_osd_stats(osd_id, osd_type)
+ if osd_stats:
+ osd_device = self.osd[osd_id]
+ osd_device.update(osd_stats)
+ else:
+ self.logger.warning("OSD stats for osd.{} not "
+ "available".format(osd_id))
+
+ else:
+ self.logger.warning("Unknown OSD type encountered for "
+ "osd.{}".format(osd_id))
+
+ osd_stats_end = time.time()
+ self.logger.debug("OSD perf dump stats collected for {} OSDs "
+ "in {:.3f}s".format(len(self.osd_id_list),
+ (osd_stats_end - osd_stats_start)))
+
+ @staticmethod
+ def _dump_devs(device_dict):
+
+ dumped = {}
+
+ for dev_name in sorted(device_dict):
+ device = device_dict[dev_name]
+ dumped[dev_name] = todict(device)
+
+ return dumped
+
+ def dump(self):
+ """
+ dump the osd object(s) to a dict. The object *must* not have references
+ to other objects - if this rule is broken cephmetrics caller will fail
+ when parsing the dict
+
+ :return: (dict) dictionary representation of this OSDs on this host
+ """
+
+ osds = OSDs._dump_devs(self.osd)
+ osds['ceph_version'] = self.version
+ osds['num_osds'] = self.osd_count
+
+ return {
+ "osd": osds,
+ "jrnl": OSDs._dump_devs(self.jrnl)
+ }
+
+ def get_stats(self):
+
+ start = time.time()
+
+ self._dev_to_osd()
+ self._stats_lookup()
+
+ end = time.time()
+
+ self.logger.info("osd get_stats call "
+ ": {:.3f}s".format((end - start)))
+
+ return self.dump()
--- /dev/null
+#!/usr/bin/env python
+
+import time
+import glob
+
+from collectors.base import BaseCollector
+from collectors.common import get_hostname, merge_dicts
+
+
+class RGW(BaseCollector):
+
+ simple_metrics = {
+ "req": ("requests", "derive"),
+ "failed_req": ("requests_failed", "derive"),
+ "get": ("gets", "derive"),
+ "get_b": ("get_bytes", "derive"),
+ "put": ("puts", "derive"),
+ "put_b": ("put_bytes", "derive"),
+ "qlen": ("qlen", "derive"),
+ "qactive": ("requests_active", "derive")
+ }
+
+ int_latencies = [
+ "get_initial_lat",
+ "put_initial_lat"
+ ]
+
+ latencies = {
+ "get_initial_lat_sum": ("get_initial_lat_sum", "derive"),
+ "get_initial_lat_avgcount": ("get_initial_lat_avgcount", "derive"),
+ "put_initial_lat_sum": ("put_initial_lat_sum", "derive"),
+ "put_initial_lat_avgcount": ("put_initial_lat_avgcount", "derive")
+ }
+
+ all_metrics = merge_dicts(simple_metrics, latencies)
+
+ def __init__(self, *args, **kwargs):
+ BaseCollector.__init__(self, *args, **kwargs)
+
+ self.host_name = get_hostname()
+
+ def _get_rgw_data(self):
+
+ rgw_sockets = glob.glob('/var/run/ceph/{}-client.rgw.'
+ '{}.*asok'.format(self.cluster_name,
+ self.host_name))
+ if rgw_sockets:
+
+ if len(rgw_sockets) > 1:
+ self.logger.warning("multiple rgw sockets found - "
+ "data sent from {}".format(rgw_sockets[0]))
+
+ response = self._admin_socket(socket_path=rgw_sockets[0])
+
+ if response:
+ key_name = 'client.rgw.{}'.format(self.host_name)
+ return response.get(key_name)
+ else:
+ # admin_socket call failed
+ return {}
+ else:
+ # no socket found on the host, nothing to send to caller
+ return {}
+
+ @staticmethod
+ def stats_filter(stats):
+ # pick out the simple metrics
+
+ filtered = {key: stats[key] for key in RGW.simple_metrics}
+
+ for key in RGW.int_latencies:
+ for _attr in stats[key]:
+ new_key = "{}_{}".format(key, _attr)
+ filtered[new_key] = stats[key].get(_attr)
+
+ return filtered
+
+ def get_stats(self):
+
+ start = time.time()
+
+ raw_stats = self._get_rgw_data()
+ if raw_stats:
+ stats = RGW.stats_filter(raw_stats)
+ else:
+ stats = {}
+ self.error = True
+ msg = 'RGW socket not available...radosgw running?'
+ self.error_msgs = [msg]
+ self.logger.warning(msg)
+
+ stats['ceph_version'] = self.version
+
+ end = time.time()
+
+ self.logger.info("RGW get_stats : {:.3f}s".format((end - start)))
+
+ return {
+ "rgw": stats
+ }
--- /dev/null
+#!/usr/bin/env python2
+
+import os
+import sys
+import logging
+import json
+import yaml
+from requests import get, post, put
+import argparse
+import socket
+
+__author__ = 'Paul Cuzner'
+__version__ = '2.0'
+
+HEADERS = {"Accept": "application/json",
+ "Content-Type": "application/json"
+ }
+
+# variables that need to be updated for the local environment must be defined
+# to grafana as 'custom', for the updater to work
+
+
+class Config(object):
+ pass
+
+
+class DashBoardException(Exception):
+ pass
+
+
+def get_options():
+ """
+ Process runtime options
+
+ """
+ # Set up the runtime overrides
+ parser = argparse.ArgumentParser(prog='dashmgr',
+ description='Manage Ceph Monitoring '
+ 'dashboards in Grafana')
+ parser.add_argument('-A', '--update-alerts', action='store_true',
+ default=False)
+ parser.add_argument('-c', '--config-file', type=str,
+ help='path of the config file to use',
+ default=os.path.join(os.getcwd(), 'dashboard.yml'))
+ parser.add_argument('-D', '--dashboard-dir', type=str,
+ help='path to the directory containing dashboards',
+ default=os.path.join(
+ os.getcwd(), 'dashboards/cephmetrics-graphite'))
+ parser.add_argument('-m', '--mode', type=str,
+ help='run mode',
+ choices=['update', 'refresh'],
+ default='update')
+ parser.add_argument('-d', '--debug', action='store_true',
+ default=False,
+ help='run with additional debug')
+ parser.add_argument('-v', '--version', action='version',
+ version='%(prog)s - {}'.format(__version__))
+
+ return parser.parse_args()
+
+
+def fread(file_name=None):
+ with open(file_name) as f:
+ f_data = f.read()
+ return f_data
+
+
+def port_open(port, host='localhost'):
+ """
+ Check a given port is accessible
+ :param port: (int) port number to check
+ :param host: (str)hostname to check, default is localhost
+ :return: (bool) true if the port is accessible
+ """
+ socket.setdefaulttimeout(1)
+
+ sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ try:
+ sock.connect_ex((host, port))
+ sock.shutdown(socket.SHUT_RDWR)
+ sock.close()
+ return True
+ except socket.error:
+ return False
+
+
+def get_config(file_name):
+ """
+ read a given file, and attempt to load as yaml
+ :return (Config) config object instance
+ """
+ if os.path.exists(file_name):
+ config_data = fread(file_name)
+ try:
+ yaml_config = yaml.load(config_data)
+ except:
+ return None
+ else:
+ cfg = Config()
+ cfg.grafana_host = yaml_config.get('_grafana_host', 'localhost')
+ cfg.dashboards = yaml_config.get('_dashboards', [])
+ cfg.auth = yaml_config.get('_credentials', {"user": 'admin',
+ "password": "admin"})
+ cfg.grafana_credentials = (cfg.auth.get('user'),
+ cfg.auth.get('password'))
+ cfg.grafana_port = yaml_config.get('_grafana_port', 3000)
+ cfg.home_dashboard = yaml_config.get('_home_dashboard',
+ 'ceph-at-a-glance')
+ cfg.alert_dashboard = yaml_config.get('_alert_dashboard',
+ 'alert-status')
+ cfg.domain = yaml_config.get('domain', '')
+ cfg.yaml = yaml_config
+ return cfg
+
+ else:
+ return None
+
+
+def update_dashboard(dashboard_json, vars_to_update):
+ updates_made = 0
+ templating = dashboard_json['dashboard'].get('templating')
+ template_names = []
+ for l in templating.get('list'):
+ template_name = l.get('name')
+ if template_name in vars_to_update:
+
+ logger.debug("\tprocessing variable '{}'".format(template_name))
+ logger.debug("\tbefore")
+ logger.debug("\t{}".format(l))
+ template_names.append(template_name)
+ replacement_vars = vars_to_update.get(template_name)
+
+ if isinstance(replacement_vars, str):
+ replacement_vars = [replacement_vars]
+
+ l['query'] = ','.join(replacement_vars)
+ num_new_items = len(replacement_vars)
+ if num_new_items == 1:
+ l['current'] = {"text": replacement_vars[0],
+ "value": replacement_vars[0]}
+ l['options'] = [{"text": replacement_vars[0],
+ "selected": True,
+ "value": replacement_vars[0]}]
+ else:
+ l['current'] = {"text": "All",
+ "selected": True,
+ "value": "$__all"}
+ l['options'] = [{"text": "All",
+ "selected": True,
+ "value": "$__all"}]
+ for item in replacement_vars:
+ l['options'].append({"text": item,
+ "selected": False,
+ "value": item})
+
+ logger.debug("\tafter")
+ logger.debug("\t{}".format(l))
+ updates_made += 1
+
+ logger.info("- {} templating variables updated "
+ ": {}".format(updates_made,
+ ','.join(template_names)))
+ return dashboard_json
+
+
+def load_dashboard(dashboard_dir, dashboard_name):
+
+ sample_dashboard = os.path.join(dashboard_dir,
+ "{}.json".format(dashboard_name))
+ if os.path.exists(sample_dashboard):
+ # load it in
+ dashboard_data = fread(sample_dashboard)
+
+ # if domain has not been given, we need to remove it from the queries
+ if not config.domain:
+ dashboard_data = dashboard_data.replace('$domain.', '')
+
+ try:
+ dashjson = json.loads(dashboard_data)
+ except:
+ raise DashBoardException("Invalid json in {} "
+ "dashboard".format(dashboard_name))
+ else:
+ logger.debug("- {} sample loaded from {}".format(dashboard_name,
+ dashboard_dir))
+ del dashjson['meta']
+ dashjson['overwrite'] = True
+
+ # 'id' must be null for this to be a create, if it is anything
+ # else grafana will attempt an update, which will fail
+ # with a 404
+ dashjson['dashboard']['id'] = None
+ return dashjson
+ else:
+ logger.warning("- sample not available for {}, "
+ "skipping".format(dashboard_name))
+ return {}
+
+
+def get_dashboard(dashboard_name):
+
+ resp = get("http://{}:{}/api/dashboards/"
+ "db/{}".format(config.grafana_host,
+ config.grafana_port,
+ dashboard_name),
+ auth=config.grafana_credentials)
+
+ if resp.status_code == 404:
+ logger.info("- dashboard not found in Grafana")
+ return resp.status_code, {}
+
+ elif resp.status_code == 200:
+ logger.debug("- fetch of {} from Grafana "
+ "successful".format(dashboard_name))
+ return resp.status_code, resp.json()
+ else:
+ raise DashBoardException("Unknown problem fetching dashboard")
+
+
+def put_dashboard(dashjson):
+ upload_str = json.dumps(dashjson)
+ resp = post("http://{}:{}/api/dashboards/"
+ "db".format(config.grafana_host,
+ config.grafana_port),
+ headers=HEADERS,
+ auth=config.grafana_credentials,
+ data=upload_str)
+
+ return resp.status_code
+
+
+def star_dashboard(dashboard_id):
+
+ resp = post('http://{}:{}/api/user/stars/'
+ 'dashboard/{}'.format(config.grafana_host,
+ config.grafana_port,
+ dashboard_id),
+ headers=HEADERS,
+ auth=config.grafana_credentials)
+
+ if resp.status_code == 200:
+ logger.debug("- dashboard starred successfully")
+ else:
+ logger.warning("- starring dashboard with id {} "
+ "failed : {}".format(dashboard_id,
+ resp.status_code))
+ return resp.status_code
+
+def set_home_dashboard(home_dashboard):
+ # Ideally we should just check the json returned from an org query...but
+ # 4.3 of grafana doesn't return the home dashboard or theme settings!
+
+ logger.debug("- checking '{}' is starred".format(home_dashboard))
+
+ http_rc, dashjson = get_dashboard(home_dashboard)
+ if http_rc == 200 and dashjson:
+
+ dash_id = dashjson.get('dashboard').get('id')
+ is_starred = dashjson.get('meta').get('isStarred')
+ if not is_starred:
+ # star it
+ http_rc = star_dashboard(dash_id)
+ is_starred = True if http_rc == 200 else False
+
+ if is_starred:
+ # update the org's home dashboard
+ resp = put('http://{}:{}/api/org/'
+ 'preferences'.format(config.grafana_host,
+ config.grafana_port),
+ headers=HEADERS,
+ auth=config.grafana_credentials,
+ data=json.dumps({"name": "Main Org.",
+ "theme": "light",
+ "homeDashboardId": dash_id}))
+
+ if resp.status_code == 200:
+ logger.info("- setting home dashboard complete")
+ else:
+ logger.error("- setting home dashboard failed")
+
+ return resp.status_code
+
+ else:
+ logger.error("- unable to access dashboard {}".format(home_dashboard))
+
+ return http_rc
+
+
+def setup_logging():
+
+ logger = logging.getLogger('dashUpdater')
+ logger.setLevel(logging.DEBUG)
+
+ stream_handler = logging.StreamHandler(stream=sys.stdout)
+ if opts.debug:
+ stream_handler.setLevel(logging.DEBUG)
+ else:
+ stream_handler.setLevel(logging.INFO)
+
+ logger.addHandler(stream_handler)
+
+ return logger
+
+
+def get_notification_id(channel_name):
+ """
+ Check whether the given notification channel has been defined to Grafana
+ :param (str) notification channel name
+ :return: (int) id of the channel, or 0 for doesn't exist
+ """
+
+ resp = get("http://{}:{}/api/"
+ "alert-notifications".format(config.grafana_host,
+ config.grafana_port),
+ auth=config.grafana_credentials)
+
+ if resp.status_code == 200:
+ notifications = resp.json() # list if dicts returned by Grafana
+
+ # convert the list into a dict for lookup purposes
+ channels = {channel.get('name'): channel.get('id')
+ for channel in notifications}
+ if channel_name in channels:
+ return channels[channel_name]
+ else:
+ return 0
+ else:
+ raise DashBoardException("Unable to get nofification channels from"
+ " Grafana")
+
+
+def define_notification(channel_name):
+ """
+ Add a given "seed" notification channel to Grafana using http post
+ :param channel_name: (str) channel name
+ :return: (int) http response code from post operation
+ (dict) response json object
+ """
+
+ seed_channel = json.dumps({"name": channel_name,
+ "type": "email",
+ "isDefault": False
+ })
+
+ resp = post('http://{}:{}/api/'
+ 'alert-notifications'.format(config.grafana_host,
+ config.grafana_port),
+ headers=HEADERS,
+ auth=config.grafana_credentials,
+ data=seed_channel)
+
+ return resp.status_code, resp.json()
+
+
+def main():
+
+ rc = 0
+
+ if port_open(config.grafana_port, config.grafana_host):
+ logger.debug("Connection to Grafana is ok")
+ else:
+ logger.error("Unable to contact Grafana - does the config file "
+ "specify a valid host/ip address for Grafana?")
+ return 16
+
+ if config.dashboards:
+ vars_to_update = {k: config.yaml[k] for k in config.yaml
+ if not k.startswith('_')}
+ if 'domain' not in vars_to_update:
+ vars_to_update['domain'] = config.domain
+
+ else:
+ logger.error("Config file doesn't contain dashboards! Unable "
+ "to continue")
+ return 16
+
+ dashboards_updated = 0
+ logger.debug("Templates to update: {}".format(vars_to_update))
+
+ for dashname in config.dashboards:
+ logger.info("\nProcessing dashboard {}".format(dashname))
+
+ http_rc, dashjson = get_dashboard(dashname)
+ if (dashname == config.alert_dashboard and http_rc == 200 and not
+ opts.update_alerts):
+ logger.info("- existing alert dashboard found, update bypassed")
+ continue
+
+ if opts.mode == 'update':
+
+ if http_rc == 200:
+ # the dashboard is already loaded, so we'll use the existing
+ # definition
+ logger.debug("- existing dashboard will be updated")
+ else:
+ # get of dashboard failed, so just load it
+ dashjson = load_dashboard(opts.dashboard_dir, dashname)
+
+ if dashjson:
+ logger.info("- dashboard loaded from sample")
+ else:
+ logger.warning("- sample not available, skipping")
+ rc = max(rc, 4)
+ continue
+
+ logger.info("- dashboard retrieved")
+
+ elif opts.mode == 'refresh':
+
+ dashjson = load_dashboard(opts.dashboard_dir, dashname)
+
+ if not dashjson:
+ logger.warning("- sample not available, skipping")
+ rc = max(rc, 4)
+ continue
+
+ if dashname == config.alert_dashboard:
+ # if processing is here, this is 1st run so the alert_dashboard
+ # is new to grafana
+ channel_id = get_notification_id("cephmetrics")
+ if channel_id:
+ logger.info("- notification channel already in place")
+ else:
+ http_rc, resp_json = define_notification("cephmetrics")
+ if http_rc == 200:
+ channel_id = resp_json['id']
+ logger.info("- notification channel added :"
+ "{}".format(channel_id))
+ else:
+ raise DashBoardException("Problem adding notification "
+ "channel ({})".format(http_rc))
+
+ dash_str = json.dumps(dashjson)
+ dash_str = dash_str.replace('"notifications": []',
+ '"notifications": [{{ "id":'
+ ' {0} }}]'.format(channel_id))
+ if config.domain:
+ logger.debug("- queries updated, replacing $domain with "
+ "'{}'".format(config.domain))
+ dash_str = dash_str.replace('.$domain',
+ ".{}".format(config.domain))
+ else:
+ logger.debug("- queries updated, replacing $domain with NULL")
+ dash_str = dash_str.replace('.$domain',
+ '')
+
+ dashjson = json.loads(dash_str)
+
+ else:
+ # Normal dashboard processing
+ templating = dashjson['dashboard'].get('templating')
+ if templating:
+ dashjson = update_dashboard(dashjson, vars_to_update)
+ else:
+ logger.info('- templating not defined in {}, '
+ 'skipping'.format(dashname))
+ rc = max(rc, 4)
+
+ http_rc = put_dashboard(dashjson)
+
+ if http_rc == 200:
+ logger.info("- dashboard update successful")
+ dashboards_updated += 1
+
+ if dashname == config.home_dashboard:
+ # ensure the home dashboard is defined
+ http_rc = set_home_dashboard(dashname)
+
+ if http_rc != 200:
+ logger.warning("- Unable to set the home dashboard")
+ rc = max(rc, 12)
+
+ else:
+ logger.error("- dashboard {} update failed ({})".format(dashname,
+ http_rc))
+ rc = max(rc, 8)
+
+ return rc
+
+
+if __name__ == '__main__':
+
+ opts = get_options()
+
+ config = get_config(opts.config_file)
+
+ if config:
+
+ logger = setup_logging()
+
+ rc = main()
+
+ sys.exit(rc)
+
+ else:
+
+ print("Invalid config file detected, unable to start")
+ sys.exit(16)
--- /dev/null
+---
+##########################################################
+# Change these settings to reflect your ceph environment #
+##########################################################
+osd_servers:
+ - obj-osd-1
+ - obj-osd-2
+ - obj-osd-3
+
+rgw_servers:
+ - obj-rgw-1
+
+#iscsi_gateways:
+# - rh7-gw1
+# - rh7-gw2
+
+domain: storage.lab
+
+###########################################################################
+# This section defines the internal variables (denoted by the '_' prefix) #
+# that govern how dashUpdater.py runs. Normally you'd leave these alone #
+###########################################################################
+_dashboards:
+ - alert-status
+ - ceph-at-a-glance
+ - ceph-backend-storage
+ - ceph-cluster
+ - ceph-health
+ - ceph-osd-information
+ - ceph-pools
+ - ceph-rgw-workload
+ - disk-busy-by-server
+ - iops-by-server
+ - iscsi-overview
+ - latency-by-server
+ - network-usage-by-node
+ - osd-node-detail
+
+_home_dashboard: ceph-at-a-glance
+_alert_dashboard: alert-status
+
+_credentials:
+ user: admin@localhost
+ password: admin
+
+_grafana_port: 3000
+
--- /dev/null
+<svg version="1.1" viewBox="0.0 0.0 960.0 720.0" fill="none" stroke="none" stroke-linecap="square" stroke-miterlimit="10" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg"><clipPath id="p.0"><path d="m0 0l960.0 0l0 720.0l-960.0 0l0 -720.0z" clip-rule="nonzero"/></clipPath><g clip-path="url(#p.0)"><path fill="#000000" fill-opacity="0.0" d="m0 0l960.0 0l0 720.0l-960.0 0z" fill-rule="evenodd"/><path fill="#6aa84f" d="m172.52493 190.4042l138.61417 0l0 42.204712l-138.61417 0z" fill-rule="evenodd"/><path stroke="#38761d" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m172.52493 190.4042l138.61417 0l0 42.204712l-138.61417 0z" fill-rule="evenodd"/><path fill="#ffffff" d="m193.06041 211.92656l5.125 -13.359375l1.90625 0l5.46875 13.359375l-2.015625 0l-1.546875 -4.046875l-5.59375 0l-1.46875 4.046875l-1.875 0zm3.859375 -5.484375l4.53125 0l-1.40625 -3.703125q-0.625 -1.6875 -0.9375 -2.765625q-0.265625 1.28125 -0.71875 2.546875l-1.46875 3.921875zm13.427948 4.015625l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm13.100983 0.28125q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm15.840271 -0.375l0 -1.578125l5.65625 0l0 4.953125q-1.296875 1.046875 -2.6875 1.578125q-1.375 0.515625 -2.84375 0.515625q-1.96875 0 -3.578125 -0.84375q-1.609375 -0.84375 -2.421875 -2.4375q-0.8125 -1.59375 -0.8125 -3.5625q0 -1.953125 0.8125 -3.640625q0.8125 -1.6875 2.34375 -2.5q1.53125 -0.828125 3.515625 -0.828125q1.453125 0 2.625 0.46875q1.171875 0.46875 1.828125 1.3125q0.671875 0.828125 1.015625 2.171875l-1.59375 0.4375q-0.296875 -1.015625 -0.75 -1.59375q-0.4375 -0.59375 -1.265625 -0.9375q-0.828125 -0.34375 -1.84375 -0.34375q-1.203125 0 -2.09375 0.375q-0.890625 0.359375 -1.4375 0.96875q-0.53125 0.59375 -0.828125 1.3125q-0.515625 1.234375 -0.515625 2.6875q0 1.78125 0.609375 2.984375q0.625 1.203125 1.796875 1.796875q1.171875 0.578125 2.5 0.578125q1.140625 0 2.234375 -0.4375q1.09375 -0.453125 1.65625 -0.953125l0 -2.484375l-3.921875 0zm8.011429 5.234375l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0zm10.504211 -1.1875q-0.921875 0.765625 -1.7656403 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.9843903 -0.234375 2.9218903 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.8750153 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.2500153 0 2.0156403 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.6718903 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.6718903 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm4.203827 4.859375l0 -9.671875l1.46875 0l0 1.375q1.0625 -1.59375 3.078125 -1.59375q0.875 0 1.609375 0.3125q0.734375 0.3125 1.09375 0.828125q0.375 0.5 0.515625 1.203125q0.09375 0.453125 0.09375 1.59375l0 5.953125l-1.640625 0l0 -5.890625q0 -1.0 -0.203125 -1.484375q-0.1875 -0.5 -0.671875 -0.796875q-0.484375 -0.296875 -1.140625 -0.296875q-1.046875 0 -1.8125 0.671875q-0.75 0.65625 -0.75 2.515625l0 5.28125l-1.640625 0zm16.688232 -3.546875l1.609375 0.21875q-0.265625 1.65625 -1.359375 2.609375q-1.078125 0.9375 -2.671875 0.9375q-1.984375 0 -3.1875 -1.296875q-1.203125 -1.296875 -1.203125 -3.71875q0 -1.578125 0.515625 -2.75q0.515625 -1.171875 1.578125 -1.75q1.0625 -0.59375 2.3125 -0.59375q1.578125 0 2.578125 0.796875q1.0 0.796875 1.28125 2.265625l-1.59375 0.234375q-0.234375 -0.96875 -0.8125 -1.453125q-0.578125 -0.5 -1.390625 -0.5q-1.234375 0 -2.015625 0.890625q-0.78125 0.890625 -0.78125 2.8125q0 1.953125 0.75 2.84375q0.75 0.875 1.953125 0.875q0.96875 0 1.609375 -0.59375q0.65625 -0.59375 0.828125 -1.828125zm9.640625 0.4375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625z" fill-rule="nonzero"/><path fill="#ffffff" d="m186.40169 223.77782q0 -0.671875 0.21875 -1.15625q0.21875 -0.484375 0.578125 -0.796875q0.375 -0.328125 0.875 -0.484375q0.5 -0.15625 1.0625 -0.15625q0.359375 0 0.71875 0.046875q0.359375 0.046875 0.765625 0.171875l-0.203125 0.765625q-0.359375 -0.125 -0.65625 -0.15625q-0.28125 -0.046875 -0.578125 -0.046875q-0.390625 0 -0.734375 0.109375q-0.328125 0.09375 -0.59375 0.3125q-0.25 0.21875 -0.40625 0.5625q-0.140625 0.34375 -0.140625 0.828125q0 0.46875 0.140625 0.8125q0.140625 0.328125 0.390625 0.546875q0.25 0.21875 0.59375 0.328125q0.359375 0.109375 0.78125 0.109375q0.34375 0 0.65625 -0.03125q0.328125 -0.046875 0.6875 -0.171875l0.140625 0.734375q-0.375 0.140625 -0.765625 0.203125q-0.375 0.0625 -0.828125 0.0625q-0.59375 0 -1.09375 -0.171875q-0.5 -0.171875 -0.859375 -0.484375q-0.34375 -0.328125 -0.546875 -0.8125q-0.203125 -0.484375 -0.203125 -1.125zm7.578186 -2.59375q1.0 0 1.53125 0.625q0.546875 0.625 0.546875 1.890625l0 0.3125l-3.53125 0q0.046875 0.765625 0.5 1.171875q0.453125 0.390625 1.28125 0.390625q0.46875 0 0.796875 -0.078125q0.328125 -0.078125 0.5 -0.15625l0.109375 0.75q-0.15625 0.078125 -0.578125 0.171875q-0.40625 0.109375 -0.921875 0.109375q-0.640625 0 -1.125 -0.203125q-0.484375 -0.203125 -0.8125 -0.53125q-0.3125 -0.34375 -0.484375 -0.8125q-0.15625 -0.484375 -0.15625 -1.046875q0 -0.65625 0.203125 -1.140625q0.203125 -0.5 0.53125 -0.8125q0.328125 -0.3125 0.75 -0.46875q0.421875 -0.171875 0.859375 -0.171875zm1.1875 2.109375q0 -0.625 -0.328125 -0.984375q-0.328125 -0.375 -0.875 -0.375q-0.3125 0 -0.5625 0.125q-0.25 0.109375 -0.4375 0.296875q-0.171875 0.1875 -0.28125 0.4375q-0.109375 0.25 -0.140625 0.5l2.625 0zm5.375061 0.484375q0 -0.859375 -0.40625 -1.328125q-0.40625 -0.46875 -1.0625 -0.46875q-0.359375 0 -0.5625 0.03125q-0.203125 0.03125 -0.328125 0.0625l0 3.125q0.15625 0.140625 0.4375 0.265625q0.28125 0.109375 0.59375 0.109375q0.359375 0 0.609375 -0.140625q0.25 -0.140625 0.40625 -0.375q0.15625 -0.234375 0.234375 -0.5625q0.078125 -0.328125 0.078125 -0.71875zm0.90625 0q0 0.578125 -0.15625 1.046875q-0.140625 0.46875 -0.40625 0.8125q-0.265625 0.34375 -0.671875 0.546875q-0.390625 0.1875 -0.890625 0.1875q-0.390625 0 -0.6875 -0.109375q-0.296875 -0.09375 -0.453125 -0.203125l0 1.953125l-0.890625 0l0 -6.5625q0.296875 -0.078125 0.75 -0.15625q0.453125 -0.09375 1.03125 -0.09375q0.53125 0 0.96875 0.1875q0.4375 0.171875 0.75 0.515625q0.3125 0.328125 0.484375 0.8125q0.171875 0.46875 0.171875 1.0625zm1.171936 2.46875l0 -7.234375l0.890625 -0.15625l0 2.515625q0.21875 -0.078125 0.484375 -0.125q0.265625 -0.046875 0.515625 -0.046875q0.5625 0 0.9375 0.171875q0.390625 0.15625 0.609375 0.453125q0.21875 0.296875 0.3125 0.71875q0.109375 0.40625 0.109375 0.90625l0 2.796875l-0.875 0l0 -2.59375q0 -0.921875 -0.265625 -1.296875q-0.25 -0.375 -0.90625 -0.375q-0.28125 0 -0.546875 0.0625q-0.25 0.046875 -0.375 0.09375l0 4.109375l-0.890625 0zm6.062561 -3.125l2.359375 0l0 0.828125l-2.359375 0l0 -0.828125zm6.562561 2.5q0.328125 0 0.578125 -0.015625q0.265625 -0.03125 0.4375 -0.0625l0 -1.46875q-0.171875 -0.0625 -0.40625 -0.09375q-0.234375 -0.03125 -0.5 -0.03125q-0.25 0 -0.484375 0.046875q-0.234375 0.03125 -0.421875 0.125q-0.171875 0.09375 -0.296875 0.25q-0.109375 0.15625 -0.109375 0.390625q0 0.484375 0.3125 0.671875q0.328125 0.1875 0.890625 0.1875zm-0.09375 -4.4375q0.5625 0 0.9375 0.140625q0.375 0.140625 0.609375 0.390625q0.234375 0.234375 0.328125 0.59375q0.109375 0.34375 0.109375 0.765625l0 3.09375q-0.3125 0.046875 -0.828125 0.125q-0.5 0.078125 -1.03125 0.078125q-0.40625 0 -0.796875 -0.078125q-0.375 -0.0625 -0.671875 -0.234375q-0.296875 -0.1875 -0.484375 -0.484375q-0.171875 -0.3125 -0.171875 -0.796875q0 -0.421875 0.171875 -0.71875q0.1875 -0.296875 0.484375 -0.46875q0.296875 -0.1875 0.671875 -0.265625q0.375 -0.078125 0.765625 -0.078125q0.515625 0 1.015625 0.109375l0 -0.25q0 -0.21875 -0.046875 -0.421875q-0.046875 -0.203125 -0.1875 -0.375q-0.125 -0.171875 -0.359375 -0.265625q-0.21875 -0.109375 -0.578125 -0.109375q-0.46875 0 -0.8125 0.0625q-0.328125 0.0625 -0.515625 0.125l-0.109375 -0.71875q0.1875 -0.09375 0.609375 -0.15625q0.421875 -0.0625 0.890625 -0.0625zm5.296936 0.125l2.078125 0l0 0.734375l-2.078125 0l0 2.296875q0 0.375 0.046875 0.609375q0.0625 0.234375 0.171875 0.375q0.125 0.140625 0.3125 0.203125q0.203125 0.046875 0.484375 0.046875q0.375 0 0.609375 -0.0625q0.234375 -0.0625 0.453125 -0.171875l0.125 0.75q-0.15625 0.0625 -0.484375 0.171875q-0.3125 0.109375 -0.796875 0.109375q-0.546875 0 -0.90625 -0.125q-0.34375 -0.140625 -0.546875 -0.390625q-0.203125 -0.265625 -0.28125 -0.640625q-0.0625 -0.375 -0.0625 -0.875l0 -2.296875l-1.046875 0l0 -0.734375l1.046875 0l0 -1.390625l0.875 -0.15625l0 1.546875zm4.218811 1.8125l2.359375 0l0 0.828125l-2.359375 0l0 -0.828125zm6.562561 2.5q0.328125 0 0.578125 -0.015625q0.265625 -0.03125 0.4375 -0.0625l0 -1.46875q-0.171875 -0.0625 -0.40625 -0.09375q-0.234375 -0.03125 -0.5 -0.03125q-0.25 0 -0.484375 0.046875q-0.234375 0.03125 -0.421875 0.125q-0.171875 0.09375 -0.296875 0.25q-0.109375 0.15625 -0.109375 0.390625q0 0.484375 0.3125 0.671875q0.328125 0.1875 0.890625 0.1875zm-0.09375 -4.4375q0.5625 0 0.9375 0.140625q0.375 0.140625 0.609375 0.390625q0.234375 0.234375 0.328125 0.59375q0.109375 0.34375 0.109375 0.765625l0 3.09375q-0.3125 0.046875 -0.828125 0.125q-0.5 0.078125 -1.03125 0.078125q-0.40625 0 -0.796875 -0.078125q-0.375 -0.0625 -0.671875 -0.234375q-0.296875 -0.1875 -0.484375 -0.484375q-0.171875 -0.3125 -0.171875 -0.796875q0 -0.421875 0.171875 -0.71875q0.1875 -0.296875 0.484375 -0.46875q0.296875 -0.1875 0.671875 -0.265625q0.375 -0.078125 0.765625 -0.078125q0.515625 0 1.015625 0.109375l0 -0.25q0 -0.21875 -0.046875 -0.421875q-0.046875 -0.203125 -0.1875 -0.375q-0.125 -0.171875 -0.359375 -0.265625q-0.21875 -0.109375 -0.578125 -0.109375q-0.46875 0 -0.8125 0.0625q-0.328125 0.0625 -0.515625 0.125l-0.109375 -0.71875q0.1875 -0.09375 0.609375 -0.15625q0.421875 -0.0625 0.890625 -0.0625zm4.187561 1.9375l2.359375 0l0 0.828125l-2.359375 0l0 -0.828125zm7.531311 2.671875q-0.15625 0.078125 -0.46875 0.171875q-0.296875 0.09375 -0.703125 0.09375q-0.4375 0 -0.8125 -0.140625q-0.375 -0.140625 -0.671875 -0.4375q-0.28125 -0.296875 -0.453125 -0.734375q-0.15625 -0.453125 -0.15625 -1.078125q0 -0.546875 0.15625 -1.0q0.15625 -0.453125 0.453125 -0.78125q0.296875 -0.328125 0.71875 -0.515625q0.421875 -0.1875 0.96875 -0.1875q0.640625 0 1.09375 0.09375q0.453125 0.09375 0.765625 0.171875l0 4.40625q0 1.15625 -0.59375 1.671875q-0.578125 0.515625 -1.75 0.515625q-0.46875 0 -0.859375 -0.078125q-0.390625 -0.078125 -0.6875 -0.1875l0.15625 -0.78125q0.28125 0.125 0.625 0.1875q0.359375 0.078125 0.796875 0.078125q0.765625 0 1.09375 -0.3125q0.328125 -0.296875 0.328125 -0.984375l0 -0.171875zm0 -3.71875q-0.125 -0.03125 -0.359375 -0.0625q-0.21875 -0.046875 -0.59375 -0.046875q-0.6875 0 -1.046875 0.46875q-0.359375 0.46875 -0.359375 1.25q0 0.421875 0.09375 0.734375q0.109375 0.296875 0.28125 0.5q0.1875 0.1875 0.40625 0.28125q0.21875 0.09375 0.484375 0.09375q0.328125 0 0.609375 -0.09375q0.296875 -0.109375 0.484375 -0.234375l0 -2.890625zm5.250061 4.296875q-0.46875 0 -0.78125 -0.125q-0.3125 -0.140625 -0.5 -0.390625q-0.171875 -0.265625 -0.25 -0.640625q-0.078125 -0.375 -0.078125 -0.875l0 -4.671875l-1.421875 0l0 -0.75l2.296875 0l0 5.421875q0 0.375 0.046875 0.609375q0.046875 0.234375 0.140625 0.375q0.109375 0.140625 0.25 0.203125q0.15625 0.046875 0.359375 0.046875q0.3125 0 0.578125 -0.078125q0.265625 -0.078125 0.421875 -0.15625l0.125 0.75q-0.0625 0.03125 -0.1875 0.078125q-0.109375 0.046875 -0.28125 0.078125q-0.15625 0.046875 -0.34375 0.078125q-0.1875 0.046875 -0.375 0.046875zm4.437561 -0.75q0.328125 0 0.578125 -0.015625q0.265625 -0.03125 0.4375 -0.0625l0 -1.46875q-0.171875 -0.0625 -0.40625 -0.09375q-0.234375 -0.03125 -0.5 -0.03125q-0.25 0 -0.484375 0.046875q-0.234375 0.03125 -0.421875 0.125q-0.171875 0.09375 -0.296875 0.25q-0.109375 0.15625 -0.109375 0.390625q0 0.484375 0.3125 0.671875q0.328125 0.1875 0.890625 0.1875zm-0.09375 -4.4375q0.5625 0 0.9375 0.140625q0.375 0.140625 0.609375 0.390625q0.234375 0.234375 0.328125 0.59375q0.109375 0.34375 0.109375 0.765625l0 3.09375q-0.3125 0.046875 -0.828125 0.125q-0.5 0.078125 -1.03125 0.078125q-0.40625 0 -0.796875 -0.078125q-0.375 -0.0625 -0.671875 -0.234375q-0.296875 -0.1875 -0.484375 -0.484375q-0.171875 -0.3125 -0.171875 -0.796875q0 -0.421875 0.171875 -0.71875q0.1875 -0.296875 0.484375 -0.46875q0.296875 -0.1875 0.671875 -0.265625q0.375 -0.078125 0.765625 -0.078125q0.515625 0 1.015625 0.109375l0 -0.25q0 -0.21875 -0.046875 -0.421875q-0.046875 -0.203125 -0.1875 -0.375q-0.125 -0.171875 -0.359375 -0.265625q-0.21875 -0.109375 -0.578125 -0.109375q-0.46875 0 -0.8125 0.0625q-0.328125 0.0625 -0.515625 0.125l-0.109375 -0.71875q0.1875 -0.09375 0.609375 -0.15625q0.421875 -0.0625 0.890625 -0.0625zm3.453186 0.25q0.48439026 -0.109375 0.95314026 -0.171875q0.484375 -0.0625 0.890625 -0.0625q1.0 0 1.5 0.515625q0.515625 0.5 0.515625 1.625l0 2.90625l-0.875 0l0 -2.734375q0 -0.484375 -0.09375 -0.78125q-0.078125 -0.296875 -0.234375 -0.453125q-0.15625 -0.171875 -0.375 -0.234375q-0.21875 -0.0625 -0.46875 -0.0625q-0.21875 0 -0.46875 0.03125q-0.234375 0.015625 -0.453125 0.0625l0 4.171875l-0.89064026 0l0 -4.8125zm5.0938263 2.34375q0 -0.671875 0.21875 -1.15625q0.21875 -0.484375 0.578125 -0.796875q0.375 -0.328125 0.875 -0.484375q0.5 -0.15625 1.0625 -0.15625q0.359375 0 0.71875 0.046875q0.359375 0.046875 0.765625 0.171875l-0.203125 0.765625q-0.359375 -0.125 -0.65625 -0.15625q-0.28125 -0.046875 -0.578125 -0.046875q-0.390625 0 -0.734375 0.109375q-0.328125 0.09375 -0.59375 0.3125q-0.25 0.21875 -0.40625 0.5625q-0.140625 0.34375 -0.140625 0.828125q0 0.46875 0.140625 0.8125q0.140625 0.328125 0.390625 0.546875q0.25 0.21875 0.59375 0.328125q0.359375 0.109375 0.78125 0.109375q0.34375 0 0.65625 -0.03125q0.328125 -0.046875 0.6875 -0.171875l0.140625 0.734375q-0.375 0.140625 -0.765625 0.203125q-0.375 0.0625 -0.828125 0.0625q-0.59375 0 -1.09375 -0.171875q-0.5 -0.171875 -0.859375 -0.484375q-0.34375 -0.328125 -0.546875 -0.8125q-0.203125 -0.484375 -0.203125 -1.125zm7.578186 -2.59375q1.0 0 1.53125 0.625q0.546875 0.625 0.546875 1.890625l0 0.3125l-3.53125 0q0.046875 0.765625 0.5 1.171875q0.453125 0.390625 1.28125 0.390625q0.46875 0 0.796875 -0.078125q0.328125 -0.078125 0.5 -0.15625l0.109375 0.75q-0.15625 0.078125 -0.578125 0.171875q-0.40625 0.109375 -0.921875 0.109375q-0.640625 0 -1.125 -0.203125q-0.484375 -0.203125 -0.8125 -0.53125q-0.3125 -0.34375 -0.484375 -0.8125q-0.15625 -0.484375 -0.15625 -1.046875q0 -0.65625 0.203125 -1.140625q0.203125 -0.5 0.53125 -0.8125q0.328125 -0.3125 0.75 -0.46875q0.421875 -0.171875 0.859375 -0.171875zm1.1875 2.109375q0 -0.625 -0.328125 -0.984375q-0.328125 -0.375 -0.875 -0.375q-0.3125 0 -0.5625 0.125q-0.25 0.109375 -0.4375 0.296875q-0.171875 0.1875 -0.28125 0.4375q-0.109375 0.25 -0.140625 0.5l2.625 0zm4.828186 2.265625q0 0.328125 -0.21875 0.578125q-0.203125 0.234375 -0.5625 0.234375q-0.359375 0 -0.578125 -0.234375q-0.203125 -0.25 -0.203125 -0.578125q0 -0.328125 0.203125 -0.5625q0.21875 -0.25 0.578125 -0.25q0.359375 0 0.5625 0.25q0.21875 0.234375 0.21875 0.5625zm5.156311 -5.03125q-0.28125 0 -0.484375 -0.1875q-0.203125 -0.1875 -0.203125 -0.515625q0 -0.328125 0.203125 -0.515625q0.203125 -0.203125 0.484375 -0.203125q0.28125 0 0.484375 0.203125q0.203125 0.1875 0.203125 0.515625q0 0.328125 -0.203125 0.515625q-0.203125 0.1875 -0.484375 0.1875zm-2.0625 1.515625l0 -0.734375l2.875 0l0 4.890625q0 0.5 -0.15625 0.859375q-0.140625 0.359375 -0.375 0.578125q-0.234375 0.234375 -0.546875 0.328125q-0.3125 0.09375 -0.671875 0.09375q-0.40625 0 -0.8125 -0.09375q-0.40625 -0.078125 -0.78125 -0.265625l0.265625 -0.734375q0.28125 0.125 0.59375 0.203125q0.328125 0.09375 0.625 0.09375q0.4375 0 0.703125 -0.21875q0.28125 -0.203125 0.28125 -0.84375l0 -4.15625l-2.0 0zm7.843811 2.96875q0 -0.265625 -0.21875 -0.4375q-0.21875 -0.171875 -0.546875 -0.296875q-0.3125 -0.125 -0.703125 -0.25q-0.375 -0.125 -0.703125 -0.296875q-0.328125 -0.1875 -0.546875 -0.453125q-0.21875 -0.265625 -0.21875 -0.703125q0 -0.59375 0.484375 -0.984375q0.484375 -0.40625 1.515625 -0.40625q0.40625 0 0.84375 0.0625q0.4375 0.0625 0.734375 0.15625l-0.15625 0.78125q-0.078125 -0.046875 -0.234375 -0.09375q-0.140625 -0.046875 -0.34375 -0.078125q-0.1875 -0.03125 -0.40625 -0.046875q-0.21875 -0.03125 -0.421875 -0.03125q-1.15625 0 -1.15625 0.625q0 0.21875 0.21875 0.375q0.21875 0.15625 0.546875 0.28125q0.34375 0.125 0.71875 0.265625q0.390625 0.140625 0.71875 0.328125q0.328125 0.1875 0.546875 0.46875q0.21875 0.265625 0.21875 0.671875q0 0.671875 -0.53125 1.046875q-0.515625 0.375 -1.640625 0.375q-0.515625 0 -0.9375 -0.09375q-0.421875 -0.078125 -0.8125 -0.25l0.171875 -0.796875q0.375 0.15625 0.78125 0.28125q0.40625 0.109375 0.875 0.109375q1.203125 0 1.203125 -0.609375zm6.500061 -1.234375q0 0.578125 -0.171875 1.0625q-0.15625 0.46875 -0.46875 0.8125q-0.296875 0.34375 -0.71875 0.53125q-0.40625 0.1875 -0.890625 0.1875q-0.484375 0 -0.890625 -0.1875q-0.40625 -0.1875 -0.71875 -0.53125q-0.296875 -0.34375 -0.46875 -0.8125q-0.15625 -0.484375 -0.15625 -1.0625q0 -0.59375 0.15625 -1.0625q0.171875 -0.484375 0.46875 -0.8125q0.3125 -0.34375 0.71875 -0.53125q0.40625 -0.1875 0.890625 -0.1875q0.484375 0 0.890625 0.1875q0.421875 0.1875 0.71875 0.53125q0.3125 0.328125 0.46875 0.8125q0.171875 0.46875 0.171875 1.0625zm-0.90625 0q0 -0.84375 -0.375 -1.328125q-0.359375 -0.484375 -0.96875 -0.484375q-0.609375 0 -0.96875 0.484375q-0.359375 0.484375 -0.359375 1.328125q0 0.828125 0.359375 1.3125q0.359375 0.484375 0.96875 0.484375q0.609375 0 0.96875 -0.484375q0.375 -0.484375 0.375 -1.3125zm2.078186 -2.34375q0.484375 -0.109375 0.953125 -0.171875q0.484375 -0.0625 0.890625 -0.0625q1.0 0 1.5 0.515625q0.515625 0.5 0.515625 1.625l0 2.90625l-0.875 0l0 -2.734375q0 -0.484375 -0.09375 -0.78125q-0.078125 -0.296875 -0.234375 -0.453125q-0.15625 -0.171875 -0.375 -0.234375q-0.21875 -0.0625 -0.46875 -0.0625q-0.21875 0 -0.46875 0.03125q-0.234375 0.015625 -0.453125 0.0625l0 4.171875l-0.890625 0l0 -4.8125z" fill-rule="nonzero"/><path fill="#6aa84f" d="m365.3832 262.4042l178.04721 0l0 42.204712l-178.04721 0z" fill-rule="evenodd"/><path stroke="#38761d" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m365.3832 262.4042l178.04721 0l0 42.204712l-178.04721 0z" fill-rule="evenodd"/><path fill="#ffffff" d="m432.51035 283.92654l0 -13.359375l5.046875 0q1.328125 0 2.03125 0.125q0.96875 0.171875 1.640625 0.640625q0.671875 0.453125 1.078125 1.28125q0.40625 0.828125 0.40625 1.828125q0 1.703125 -1.09375 2.890625q-1.078125 1.171875 -3.921875 1.171875l-3.421875 0l0 5.421875l-1.765625 0zm1.765625 -7.0l3.453125 0q1.71875 0 2.4375 -0.640625q0.71875 -0.640625 0.71875 -1.796875q0 -0.84375 -0.421875 -1.4375q-0.421875 -0.59375 -1.125 -0.78125q-0.4375 -0.125 -1.640625 -0.125l-3.421875 0l0 4.78125zm9.865448 2.15625q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm8.688232 0q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm9.250702 4.84375l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0zm3.5354614 -2.890625l1.625 -0.25q0.125 0.96875 0.75 1.5q0.625 0.515625 1.75 0.515625q1.125 0 1.671875 -0.453125q0.546875 -0.46875 0.546875 -1.09375q0 -0.546875 -0.484375 -0.875q-0.328125 -0.21875 -1.671875 -0.546875q-1.8125 -0.46875 -2.515625 -0.796875q-0.6875 -0.328125 -1.046875 -0.90625q-0.359375 -0.59375 -0.359375 -1.3125q0 -0.640625 0.296875 -1.1875q0.296875 -0.5625 0.8125 -0.921875q0.375 -0.28125 1.03125 -0.46875q0.671875 -0.203125 1.421875 -0.203125q1.140625 0 2.0 0.328125q0.859375 0.328125 1.265625 0.890625q0.421875 0.5625 0.578125 1.5l-1.609375 0.21875q-0.109375 -0.75 -0.640625 -1.171875q-0.515625 -0.421875 -1.46875 -0.421875q-1.140625 0 -1.625 0.375q-0.46875 0.375 -0.46875 0.875q0 0.3125 0.1875 0.578125q0.203125 0.265625 0.640625 0.4375q0.234375 0.09375 1.4375 0.421875q1.75 0.453125 2.4375 0.75q0.6875 0.296875 1.078125 0.859375q0.390625 0.5625 0.390625 1.40625q0 0.828125 -0.484375 1.546875q-0.46875 0.71875 -1.375 1.125q-0.90625 0.390625 -2.046875 0.390625q-1.875 0 -2.875 -0.78125q-0.984375 -0.78125 -1.25 -2.328125z" fill-rule="nonzero"/><path fill="#ffffff" d="m414.96106 295.7778q0 -0.671875 0.21875 -1.15625q0.21875 -0.484375 0.578125 -0.796875q0.375 -0.328125 0.875 -0.484375q0.5 -0.15625 1.0625 -0.15625q0.359375 0 0.71875 0.046875q0.359375 0.046875 0.765625 0.171875l-0.203125 0.765625q-0.359375 -0.125 -0.65625 -0.15625q-0.28125 -0.046875 -0.578125 -0.046875q-0.390625 0 -0.734375 0.109375q-0.328125 0.09375 -0.59375 0.3125q-0.25 0.21875 -0.40625 0.5625q-0.140625 0.34375 -0.140625 0.828125q0 0.46875 0.140625 0.8125q0.140625 0.328125 0.390625 0.546875q0.25 0.21875 0.59375 0.328125q0.359375 0.109375 0.78125 0.109375q0.34375 0 0.65625 -0.03125q0.328125 -0.046875 0.6875 -0.171875l0.140625 0.734375q-0.375 0.140625 -0.765625 0.203125q-0.375 0.0625 -0.828125 0.0625q-0.59375 0 -1.09375 -0.171875q-0.5 -0.171875 -0.859375 -0.484375q-0.34375 -0.328125 -0.546875 -0.8125q-0.203125 -0.484375 -0.203125 -1.125zm7.578186 -2.59375q1.0 0 1.53125 0.625q0.546875 0.625 0.546875 1.890625l0 0.3125l-3.53125 0q0.046875 0.765625 0.5 1.171875q0.453125 0.390625 1.28125 0.390625q0.46875 0 0.796875 -0.078125q0.328125 -0.078125 0.5 -0.15625l0.109375 0.75q-0.15625 0.078125 -0.578125 0.171875q-0.40625 0.109375 -0.921875 0.109375q-0.640625 0 -1.125 -0.203125q-0.484375 -0.203125 -0.8125 -0.53125q-0.3125 -0.34375 -0.484375 -0.8125q-0.15625 -0.484375 -0.15625 -1.046875q0 -0.65625 0.203125 -1.140625q0.203125 -0.5 0.53125 -0.8125q0.328125 -0.3125 0.75 -0.46875q0.421875 -0.171875 0.859375 -0.171875zm1.1875 2.109375q0 -0.625 -0.328125 -0.984375q-0.328125 -0.375 -0.875 -0.375q-0.3125 0 -0.5625 0.125q-0.25 0.109375 -0.4375 0.296875q-0.171875 0.1875 -0.28125 0.4375q-0.109375 0.25 -0.140625 0.5l2.625 0zm5.375061 0.484375q0 -0.859375 -0.40625 -1.328125q-0.40625 -0.46875 -1.0625 -0.46875q-0.359375 0 -0.5625 0.03125q-0.203125 0.03125 -0.328125 0.0625l0 3.125q0.15625 0.140625 0.4375 0.265625q0.28125 0.109375 0.59375 0.109375q0.359375 0 0.609375 -0.140625q0.25 -0.140625 0.40625 -0.375q0.15625 -0.234375 0.234375 -0.5625q0.078125 -0.328125 0.078125 -0.71875zm0.90625 0q0 0.578125 -0.15625 1.046875q-0.140625 0.46875 -0.40625 0.8125q-0.265625 0.34375 -0.671875 0.546875q-0.390625 0.1875 -0.890625 0.1875q-0.390625 0 -0.6875 -0.109375q-0.296875 -0.09375 -0.453125 -0.203125l0 1.953125l-0.890625 0l0 -6.5625q0.296875 -0.078125 0.75 -0.15625q0.453125 -0.09375 1.03125 -0.09375q0.53125 0 0.96875 0.1875q0.4375 0.171875 0.75 0.515625q0.3125 0.328125 0.484375 0.8125q0.171875 0.46875 0.171875 1.0625zm1.171936 2.46875l0 -7.234375l0.890625 -0.15625l0 2.515625q0.21875 -0.078125 0.484375 -0.125q0.265625 -0.046875 0.515625 -0.046875q0.5625 0 0.9375 0.171875q0.390625 0.15625 0.609375 0.453125q0.21875 0.296875 0.3125 0.71875q0.109375 0.40625 0.109375 0.90625l0 2.796875l-0.875 0l0 -2.59375q0 -0.921875 -0.265625 -1.296875q-0.25 -0.375 -0.90625 -0.375q-0.28125 0 -0.546875 0.0625q-0.25 0.046875 -0.375 0.09375l0 4.109375l-0.890625 0zm6.062561 -3.125l2.359375 0l0 0.828125l-2.359375 0l0 -0.828125zm7.843811 0.65625q0 -0.859375 -0.40625 -1.328125q-0.40625 -0.46875 -1.0625 -0.46875q-0.359375 0 -0.5625 0.03125q-0.203125 0.03125 -0.328125 0.0625l0 3.125q0.15625 0.140625 0.4375 0.265625q0.28125 0.109375 0.59375 0.109375q0.359375 0 0.609375 -0.140625q0.25 -0.140625 0.40625 -0.375q0.15625 -0.234375 0.234375 -0.5625q0.078125 -0.328125 0.078125 -0.71875zm0.90625 0q0 0.578125 -0.15625 1.046875q-0.140625 0.46875 -0.40625 0.8125q-0.265625 0.34375 -0.671875 0.546875q-0.390625 0.1875 -0.890625 0.1875q-0.390625 0 -0.6875 -0.109375q-0.296875 -0.09375 -0.453125 -0.203125l0 1.953125l-0.890625 0l0 -6.5625q0.296875 -0.078125 0.75 -0.15625q0.453125 -0.09375 1.03125 -0.09375q0.53125 0 0.96875 0.1875q0.4375 0.171875 0.75 0.515625q0.3125 0.328125 0.484375 0.8125q0.171875 0.46875 0.171875 1.0625zm5.328186 0q0 0.578125 -0.171875 1.0625q-0.15625 0.46875 -0.46875 0.8125q-0.296875 0.34375 -0.71875 0.53125q-0.40625 0.1875 -0.890625 0.1875q-0.484375 0 -0.890625 -0.1875q-0.40625 -0.1875 -0.71875 -0.53125q-0.296875 -0.34375 -0.46875 -0.8125q-0.15625 -0.484375 -0.15625 -1.0625q0 -0.59375 0.15625 -1.0625q0.171875 -0.484375 0.46875 -0.8125q0.3125 -0.34375 0.71875 -0.53125q0.40625 -0.1875 0.890625 -0.1875q0.484375 0 0.890625 0.1875q0.421875 0.1875 0.71875 0.53125q0.3125 0.328125 0.46875 0.8125q0.171875 0.46875 0.171875 1.0625zm-0.90625 0q0 -0.84375 -0.375 -1.328125q-0.359375 -0.484375 -0.96875 -0.484375q-0.609375 0 -0.96875 0.484375q-0.359375 0.484375 -0.359375 1.328125q0 0.828125 0.359375 1.3125q0.359375 0.484375 0.96875 0.484375q0.609375 0 0.96875 -0.484375q0.375 -0.484375 0.375 -1.3125zm6.234436 0q0 0.578125 -0.171875 1.0625q-0.15625 0.46875 -0.46875 0.8125q-0.296875 0.34375 -0.71875 0.53125q-0.40625 0.1875 -0.890625 0.1875q-0.484375 0 -0.890625 -0.1875q-0.40625 -0.1875 -0.71875 -0.53125q-0.296875 -0.34375 -0.46875 -0.8125q-0.15625 -0.484375 -0.15625 -1.0625q0 -0.59375 0.15625 -1.0625q0.171875 -0.484375 0.46875 -0.8125q0.3125 -0.34375 0.71875 -0.53125q0.40625 -0.1875 0.890625 -0.1875q0.484375 0 0.890625 0.1875q0.421875 0.1875 0.71875 0.53125q0.3125 0.328125 0.46875 0.8125q0.171875 0.46875 0.171875 1.0625zm-0.90625 0q0 -0.84375 -0.375 -1.328125q-0.359375 -0.484375 -0.96875 -0.484375q-0.609375 0 -0.96875 0.484375q-0.359375 0.484375 -0.359375 1.328125q0 0.828125 0.359375 1.3125q0.359375 0.484375 0.96875 0.484375q0.609375 0 0.96875 -0.484375q0.375 -0.484375 0.375 -1.3125zm4.937561 2.59375q-0.46875 0 -0.78125 -0.125q-0.3125 -0.140625 -0.5 -0.390625q-0.171875 -0.265625 -0.25 -0.640625q-0.078125 -0.375 -0.078125 -0.875l0 -4.671875l-1.421875 0l0 -0.75l2.296875 0l0 5.421875q0 0.375 0.046875 0.609375q0.046875 0.234375 0.140625 0.375q0.109375 0.140625 0.25 0.203125q0.15625 0.046875 0.359375 0.046875q0.3125 0 0.578125 -0.078125q0.265625 -0.078125 0.421875 -0.15625l0.125 0.75q-0.0625 0.03125 -0.1875 0.078125q-0.109375 0.046875 -0.28125 0.078125q-0.15625 0.046875 -0.34375 0.078125q-0.1875 0.046875 -0.375 0.046875zm5.453186 -1.359375q0 -0.265625 -0.21875 -0.4375q-0.21875 -0.171875 -0.546875 -0.296875q-0.3125 -0.125 -0.703125 -0.25q-0.375 -0.125 -0.703125 -0.296875q-0.328125 -0.1875 -0.546875 -0.453125q-0.21875 -0.265625 -0.21875 -0.703125q0 -0.59375 0.484375 -0.984375q0.484375 -0.40625 1.515625 -0.40625q0.40625 0 0.84375 0.0625q0.4375 0.0625 0.734375 0.15625l-0.15625 0.78125q-0.078125 -0.046875 -0.234375 -0.09375q-0.140625 -0.046875 -0.34375 -0.078125q-0.1875 -0.03125 -0.40625 -0.046875q-0.21875 -0.03125 -0.421875 -0.03125q-1.15625 0 -1.15625 0.625q0 0.21875 0.21875 0.375q0.21875 0.15625 0.546875 0.28125q0.34375 0.125 0.71875 0.265625q0.390625 0.140625 0.71875 0.328125q0.328125 0.1875 0.546875 0.46875q0.21875 0.265625 0.21875 0.671875q0 0.671875 -0.53125 1.046875q-0.515625 0.375 -1.640625 0.375q-0.515625 0 -0.9375 -0.09375q-0.421875 -0.078125 -0.8125 -0.25l0.171875 -0.796875q0.375 0.15625 0.78125 0.28125q0.40625 0.109375 0.875 0.109375q1.203125 0 1.203125 -0.609375zm5.046936 0.546875q0 0.328125 -0.21875 0.578125q-0.203125 0.234375 -0.5625 0.234375q-0.359375 0 -0.578125 -0.234375q-0.203125 -0.25 -0.203125 -0.578125q0 -0.328125 0.203125 -0.5625q0.21875 -0.25 0.578125 -0.25q0.359375 0 0.5625 0.25q0.21875 0.234375 0.21875 0.5625zm5.156311 -5.03125q-0.28125 0 -0.484375 -0.1875q-0.203125 -0.1875 -0.203125 -0.515625q0 -0.328125 0.203125 -0.515625q0.203125 -0.203125 0.484375 -0.203125q0.28125 0 0.484375 0.203125q0.203125 0.1875 0.203125 0.515625q0 0.328125 -0.203125 0.515625q-0.203125 0.1875 -0.484375 0.1875zm-2.0625 1.515625l0 -0.734375l2.875 0l0 4.890625q0 0.5 -0.15625 0.859375q-0.140625 0.359375 -0.375 0.578125q-0.234375 0.234375 -0.546875 0.328125q-0.3125 0.09375 -0.671875 0.09375q-0.40625 0 -0.8125 -0.09375q-0.40625 -0.078125 -0.78125 -0.265625l0.265625 -0.734375q0.28125 0.125 0.59375 0.203125q0.328125 0.09375 0.625 0.09375q0.4375 0 0.703125 -0.21875q0.28125 -0.203125 0.28125 -0.84375l0 -4.15625l-2.0 0zm7.843811 2.96875q0 -0.265625 -0.21875 -0.4375q-0.21875 -0.171875 -0.546875 -0.296875q-0.3125 -0.125 -0.703125 -0.25q-0.375 -0.125 -0.703125 -0.296875q-0.328125 -0.1875 -0.546875 -0.453125q-0.21875 -0.265625 -0.21875 -0.703125q0 -0.59375 0.484375 -0.984375q0.484375 -0.40625 1.515625 -0.40625q0.40625 0 0.84375 0.0625q0.4375 0.0625 0.734375 0.15625l-0.15625 0.78125q-0.078125 -0.046875 -0.234375 -0.09375q-0.140625 -0.046875 -0.34375 -0.078125q-0.1875 -0.03125 -0.40625 -0.046875q-0.21875 -0.03125 -0.421875 -0.03125q-1.15625 0 -1.15625 0.625q0 0.21875 0.21875 0.375q0.21875 0.15625 0.546875 0.28125q0.34375 0.125 0.71875 0.265625q0.390625 0.140625 0.71875 0.328125q0.328125 0.1875 0.546875 0.46875q0.21875 0.265625 0.21875 0.671875q0 0.671875 -0.53125 1.046875q-0.515625 0.375 -1.640625 0.375q-0.515625 0 -0.9375 -0.09375q-0.421875 -0.078125 -0.8125 -0.25l0.171875 -0.796875q0.375 0.15625 0.78125 0.28125q0.40625 0.109375 0.875 0.109375q1.203125 0 1.203125 -0.609375zm6.500061 -1.234375q0 0.578125 -0.171875 1.0625q-0.15625 0.46875 -0.46875 0.8125q-0.296875 0.34375 -0.71875 0.53125q-0.40625 0.1875 -0.890625 0.1875q-0.484375 0 -0.890625 -0.1875q-0.40625 -0.1875 -0.71875 -0.53125q-0.296875 -0.34375 -0.46875 -0.8125q-0.15625 -0.484375 -0.15625 -1.0625q0 -0.59375 0.15625 -1.0625q0.171875 -0.484375 0.46875 -0.8125q0.3125 -0.34375 0.71875 -0.53125q0.40625 -0.1875 0.890625 -0.1875q0.484375 0 0.890625 0.1875q0.421875 0.1875 0.71875 0.53125q0.3125 0.328125 0.46875 0.8125q0.171875 0.46875 0.171875 1.0625zm-0.90625 0q0 -0.84375 -0.375 -1.328125q-0.359375 -0.484375 -0.96875 -0.484375q-0.609375 0 -0.96875 0.484375q-0.359375 0.484375 -0.359375 1.328125q0 0.828125 0.359375 1.3125q0.359375 0.484375 0.96875 0.484375q0.609375 0 0.96875 -0.484375q0.375 -0.484375 0.375 -1.3125zm2.078186 -2.34375q0.484375 -0.109375 0.953125 -0.171875q0.484375 -0.0625 0.890625 -0.0625q1.0 0 1.5 0.515625q0.515625 0.5 0.515625 1.625l0 2.90625l-0.875 0l0 -2.734375q0 -0.484375 -0.09375 -0.78125q-0.078125 -0.296875 -0.234375 -0.453125q-0.15625 -0.171875 -0.375 -0.234375q-0.21875 -0.0625 -0.46875 -0.0625q-0.21875 0 -0.46875 0.03125q-0.234375 0.015625 -0.453125 0.0625l0 4.171875l-0.890625 0l0 -4.8125z" fill-rule="nonzero"/><path fill="#6aa84f" d="m365.3832 324.14435l178.04721 0l0 42.204742l-178.04721 0z" fill-rule="evenodd"/><path stroke="#38761d" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m365.3832 324.14435l178.04721 0l0 42.204742l-178.04721 0z" fill-rule="evenodd"/><path fill="#ffffff" d="m419.46484 345.66672l0 -13.359375l5.015625 0q1.53125 0 2.453125 0.40625q0.921875 0.40625 1.4375 1.25q0.53125 0.84375 0.53125 1.765625q0 0.859375 -0.46875 1.625q-0.453125 0.75 -1.390625 1.203125q1.203125 0.359375 1.859375 1.21875q0.65625 0.859375 0.65625 2.015625q0 0.9375 -0.40625 1.75q-0.390625 0.796875 -0.984375 1.234375q-0.578125 0.4375 -1.453125 0.671875q-0.875 0.21875 -2.15625 0.21875l-5.09375 0zm1.78125 -7.75l2.875 0q1.1875 0 1.6875 -0.140625q0.671875 -0.203125 1.015625 -0.671875q0.34375 -0.46875 0.34375 -1.171875q0 -0.65625 -0.328125 -1.15625q-0.3125 -0.515625 -0.90625 -0.703125q-0.59375 -0.1875 -2.03125 -0.1875l-2.65625 0l0 4.03125zm0 6.171875l3.3125 0q0.859375 0 1.203125 -0.0625q0.609375 -0.109375 1.015625 -0.359375q0.421875 -0.265625 0.6875 -0.75q0.265625 -0.484375 0.265625 -1.125q0 -0.75 -0.390625 -1.296875q-0.375 -0.546875 -1.0625 -0.765625q-0.671875 -0.234375 -1.953125 -0.234375l-3.078125 0l0 4.59375zm16.849823 0.390625q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm10.516357 1.3125l1.609375 0.21875q-0.265625 1.65625 -1.359375 2.609375q-1.078125 0.9375 -2.671875 0.9375q-1.984375 0 -3.1875 -1.296875q-1.203125 -1.296875 -1.203125 -3.71875q0 -1.578125 0.515625 -2.75q0.515625 -1.171875 1.578125 -1.75q1.0625 -0.59375 2.3125 -0.59375q1.578125 0 2.578125 0.796875q1.0 0.796875 1.28125 2.265625l-1.59375 0.234375q-0.234375 -0.96875 -0.8125 -1.453125q-0.578125 -0.5 -1.390625 -0.5q-1.234375 0 -2.015625 0.890625q-0.78125 0.890625 -0.78125 2.8125q0 1.953125 0.75 2.84375q0.75 0.875 1.953125 0.875q0.96875 0 1.609375 -0.59375q0.65625 -0.59375 0.828125 -1.828125zm3.015625 3.546875l0 -13.359375l1.640625 0l0 7.625l3.890625 -3.9375l2.109375 0l-3.6875 3.59375l4.0625 6.078125l-2.015625 0l-3.203125 -4.953125l-1.15625 1.125l0 3.828125l-1.640625 0zm15.953125 -3.109375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.141327 5.765625l0 -9.671875l1.46875 0l0 1.375q1.0625 -1.59375 3.078125 -1.59375q0.875 0 1.609375 0.3125q0.734375 0.3125 1.09375 0.828125q0.375 0.5 0.515625 1.203125q0.09375 0.453125 0.09375 1.59375l0 5.953125l-1.640625 0l0 -5.890625q0 -1.0 -0.203125 -1.484375q-0.1875 -0.5 -0.671875 -0.796875q-0.484375 -0.296875 -1.140625 -0.296875q-1.046875 0 -1.8125 0.671875q-0.75 0.65625 -0.75 2.515625l0 5.28125l-1.640625 0zm16.641357 0l0 -1.21875q-0.90625 1.4375 -2.703125 1.4375q-1.15625 0 -2.125 -0.640625q-0.96875 -0.640625 -1.5 -1.78125q-0.53125 -1.140625 -0.53125 -2.625q0 -1.453125 0.484375 -2.625q0.484375 -1.1875 1.4375 -1.8125q0.96875 -0.625 2.171875 -0.625q0.875 0 1.546875 0.375q0.6875 0.359375 1.109375 0.953125l0 -4.796875l1.640625 0l0 13.359375l-1.53125 0zm-5.171875 -4.828125q0 1.859375 0.78125 2.78125q0.78125 0.921875 1.84375 0.921875q1.078125 0 1.828125 -0.875q0.75 -0.890625 0.75 -2.6875q0 -1.984375 -0.765625 -2.90625q-0.765625 -0.9375 -1.890625 -0.9375q-1.078125 0 -1.8125 0.890625q-0.734375 0.890625 -0.734375 2.8125z" fill-rule="nonzero"/><path fill="#ffffff" d="m388.32013 357.51797q0 -0.671875 0.21875 -1.15625q0.21875 -0.484375 0.578125 -0.796875q0.375 -0.328125 0.875 -0.484375q0.5 -0.15625 1.0625 -0.15625q0.359375 0 0.71875 0.046875q0.359375 0.046875 0.765625 0.171875l-0.203125 0.765625q-0.359375 -0.125 -0.65625 -0.15625q-0.28125 -0.046875 -0.578125 -0.046875q-0.390625 0 -0.734375 0.109375q-0.328125 0.09375 -0.59375 0.3125q-0.25 0.21875 -0.40625 0.5625q-0.140625 0.34375 -0.140625 0.828125q0 0.46875 0.140625 0.8125q0.140625 0.328125 0.390625 0.546875q0.25 0.21875 0.59375 0.328125q0.359375 0.109375 0.78125 0.109375q0.34375 0 0.65625 -0.03125q0.328125 -0.046875 0.6875 -0.171875l0.140625 0.734375q-0.375 0.140625 -0.765625 0.203125q-0.375 0.0625 -0.828125 0.0625q-0.59375 0 -1.09375 -0.171875q-0.5 -0.171875 -0.859375 -0.484375q-0.34375 -0.328125 -0.546875 -0.8125q-0.203125 -0.484375 -0.203125 -1.125zm7.578186 -2.59375q1.0 0 1.53125 0.625q0.546875 0.625 0.546875 1.890625l0 0.3125l-3.53125 0q0.046875 0.765625 0.5 1.171875q0.453125 0.390625 1.28125 0.390625q0.46875 0 0.796875 -0.078125q0.328125 -0.078125 0.5 -0.15625l0.109375 0.75q-0.15625 0.078125 -0.578125 0.171875q-0.40625 0.109375 -0.921875 0.109375q-0.640625 0 -1.125 -0.203125q-0.484375 -0.203125 -0.8125 -0.53125q-0.3125 -0.34375 -0.484375 -0.8125q-0.15625 -0.484375 -0.15625 -1.046875q0 -0.65625 0.203125 -1.140625q0.203125 -0.5 0.53125 -0.8125q0.328125 -0.3125 0.75 -0.46875q0.421875 -0.171875 0.859375 -0.171875zm1.1875 2.109375q0 -0.625 -0.328125 -0.984375q-0.328125 -0.375 -0.875 -0.375q-0.3125 0 -0.5625 0.125q-0.25 0.109375 -0.4375 0.296875q-0.171875 0.1875 -0.28125 0.4375q-0.109375 0.25 -0.140625 0.5l2.625 0zm5.375061 0.484375q0 -0.859375 -0.40625 -1.328125q-0.40625 -0.46875 -1.0625 -0.46875q-0.359375 0 -0.5625 0.03125q-0.203125 0.03125 -0.328125 0.0625l0 3.125q0.15625 0.140625 0.4375 0.265625q0.28125 0.109375 0.59375 0.109375q0.359375 0 0.609375 -0.140625q0.25 -0.140625 0.40625 -0.375q0.15625 -0.234375 0.234375 -0.5625q0.078125 -0.328125 0.078125 -0.71875zm0.90625 0q0 0.578125 -0.15625 1.046875q-0.140625 0.46875 -0.40625 0.8125q-0.265625 0.34375 -0.671875 0.546875q-0.390625 0.1875 -0.890625 0.1875q-0.390625 0 -0.6875 -0.109375q-0.296875 -0.09375 -0.453125 -0.203125l0 1.953125l-0.890625 0l0 -6.5625q0.296875 -0.078125 0.75 -0.15625q0.453125 -0.09375 1.03125 -0.09375q0.53125 0 0.96875 0.1875q0.4375 0.171875 0.75 0.515625q0.3125 0.328125 0.484375 0.8125q0.171875 0.46875 0.171875 1.0625zm1.171936 2.46875l0 -7.234375l0.890625 -0.15625l0 2.515625q0.21875 -0.078125 0.484375 -0.125q0.265625 -0.046875 0.515625 -0.046875q0.5625 0 0.9375 0.171875q0.390625 0.15625 0.609375 0.453125q0.21875 0.296875 0.3125 0.71875q0.109375 0.40625 0.109375 0.90625l0 2.796875l-0.875 0l0 -2.59375q0 -0.921875 -0.265625 -1.296875q-0.25 -0.375 -0.90625 -0.375q-0.28125 0 -0.546875 0.0625q-0.25 0.046875 -0.375 0.09375l0 4.109375l-0.890625 0zm6.062561 -3.125l2.359375 0l0 0.828125l-2.359375 0l0 -0.828125zm5.484436 -1.640625q0.15625 -0.09375 0.453125 -0.1875q0.3125 -0.109375 0.6875 -0.109375q0.5 0 0.890625 0.203125q0.40625 0.1875 0.671875 0.53125q0.265625 0.328125 0.40625 0.8125q0.15625 0.46875 0.15625 1.046875q0 0.59375 -0.171875 1.078125q-0.171875 0.46875 -0.484375 0.8125q-0.3125 0.328125 -0.75 0.515625q-0.4375 0.1875 -0.96875 0.1875q-0.578125 0 -1.046875 -0.09375q-0.453125 -0.078125 -0.734375 -0.171875l0 -7.09375l0.890625 -0.15625l0 2.625zm0 4.0q0.203125 0.046875 0.40625 0.078125q0.203125 0.03125 0.375 0.03125q0.75 0 1.15625 -0.453125q0.421875 -0.453125 0.421875 -1.359375q0 -0.390625 -0.078125 -0.71875q-0.078125 -0.34375 -0.234375 -0.578125q-0.15625 -0.234375 -0.40625 -0.375q-0.25 -0.140625 -0.609375 -0.140625q-0.3125 0 -0.59375 0.125q-0.28125 0.125 -0.4375 0.25l0 3.140625zm6.406311 0.140625q0.328125 0 0.578125 -0.015625q0.265625 -0.03125 0.4375 -0.0625l0 -1.46875q-0.171875 -0.0625 -0.40625 -0.09375q-0.234375 -0.03125 -0.5 -0.03125q-0.25 0 -0.484375 0.046875q-0.234375 0.03125 -0.421875 0.125q-0.171875 0.09375 -0.296875 0.25q-0.109375 0.15625 -0.109375 0.390625q0 0.484375 0.3125 0.671875q0.328125 0.1875 0.890625 0.1875zm-0.09375 -4.4375q0.5625 0 0.9375 0.140625q0.375 0.140625 0.609375 0.390625q0.234375 0.234375 0.328125 0.59375q0.109375 0.34375 0.109375 0.765625l0 3.09375q-0.3125 0.046875 -0.828125 0.125q-0.5 0.078125 -1.03125 0.078125q-0.40625 0 -0.796875 -0.078125q-0.375 -0.0625 -0.671875 -0.234375q-0.296875 -0.1875 -0.484375 -0.484375q-0.171875 -0.3125 -0.171875 -0.796875q0 -0.421875 0.171875 -0.71875q0.1875 -0.296875 0.484375 -0.46875q0.296875 -0.1875 0.671875 -0.265625q0.375 -0.078125 0.765625 -0.078125q0.515625 0 1.015625 0.109375l0 -0.25q0 -0.21875 -0.046875 -0.421875q-0.046875 -0.203125 -0.1875 -0.375q-0.125 -0.171875 -0.359375 -0.265625q-0.21875 -0.109375 -0.578125 -0.109375q-0.46875 0 -0.8125 0.0625q-0.328125 0.0625 -0.515625 0.125l-0.109375 -0.71875q0.1875 -0.09375 0.609375 -0.15625q0.421875 -0.0625 0.890625 -0.0625zm3.218811 2.59375q0 -0.671875 0.21875 -1.15625q0.21875 -0.484375 0.578125 -0.796875q0.375 -0.328125 0.875 -0.484375q0.5 -0.15625 1.0625 -0.15625q0.359375 0 0.71875 0.046875q0.359375 0.046875 0.765625 0.171875l-0.203125 0.765625q-0.359375 -0.125 -0.65625 -0.15625q-0.28125 -0.046875 -0.578125 -0.046875q-0.390625 0 -0.734375 0.109375q-0.328125 0.09375 -0.59375 0.3125q-0.25 0.21875 -0.40625 0.5625q-0.140625 0.34375 -0.140625 0.828125q0 0.46875 0.140625 0.8125q0.140625 0.328125 0.390625 0.546875q0.25 0.21875 0.59375 0.328125q0.359375 0.109375 0.78125 0.109375q0.34375 0 0.65625 -0.03125q0.328125 -0.046875 0.6875 -0.171875l0.140625 0.734375q-0.375 0.140625 -0.765625 0.203125q-0.375 0.0625 -0.828125 0.0625q-0.59375 0 -1.09375 -0.171875q-0.5 -0.171875 -0.859375 -0.484375q-0.34375 -0.328125 -0.546875 -0.8125q-0.203125 -0.484375 -0.203125 -1.125zm7.343811 -0.25q0.296875 0.21875 0.65625 0.546875q0.359375 0.3125 0.71875 0.6875q0.359375 0.375 0.671875 0.765625q0.328125 0.390625 0.515625 0.71875l-1.046875 0q-0.203125 -0.328125 -0.5 -0.671875q-0.296875 -0.34375 -0.640625 -0.65625q-0.328125 -0.328125 -0.671875 -0.59375q-0.328125 -0.265625 -0.59375 -0.453125l0 2.375l-0.890625 0l0 -7.234375l0.890625 -0.15625l0 4.515625q0.59375 -0.515625 1.171875 -1.015625q0.59375 -0.515625 1.0625 -1.046875l1.03125 0q-0.46875 0.53125 -1.109375 1.109375q-0.640625 0.578125 -1.265625 1.109375zm5.562561 -2.34375q1.0 0 1.53125 0.625q0.546875 0.625 0.546875 1.890625l0 0.3125l-3.53125 0q0.046875 0.765625 0.5 1.171875q0.453125 0.390625 1.28125 0.390625q0.46875 0 0.796875 -0.078125q0.328125 -0.078125 0.5 -0.15625l0.109375 0.75q-0.15625 0.078125 -0.578125 0.171875q-0.40625 0.109375 -0.921875 0.109375q-0.640625 0 -1.125 -0.203125q-0.484375 -0.203125 -0.8125 -0.53125q-0.3125 -0.34375 -0.484375 -0.8125q-0.15625 -0.484375 -0.15625 -1.046875q0 -0.65625 0.203125 -1.140625q0.203125 -0.5 0.53125 -0.8125q0.328125 -0.3125 0.75 -0.46875q0.421875 -0.171875 0.859375 -0.171875zm1.1875 2.109375q0 -0.625 -0.328125 -0.984375q-0.328125 -0.375 -0.875 -0.375q-0.3125 0 -0.5625 0.125q-0.25 0.109375 -0.4375 0.296875q-0.171875 0.1875 -0.28125 0.4375q-0.109375 0.25 -0.140625 0.5l2.625 0zm2.125061 -1.859375q0.484375 -0.109375 0.953125 -0.171875q0.484375 -0.0625 0.890625 -0.0625q1.0 0 1.5 0.515625q0.515625 0.5 0.515625 1.625l0 2.90625l-0.875 0l0 -2.734375q0 -0.484375 -0.09375 -0.78125q-0.078125 -0.296875 -0.234375 -0.453125q-0.15625 -0.171875 -0.375 -0.234375q-0.21875 -0.0625 -0.46875 -0.0625q-0.21875 0 -0.46875 0.03125q-0.234375 0.015625 -0.453125 0.0625l0 4.171875l-0.890625 0l0 -4.8125zm8.265686 0.90625q-0.15625 -0.125 -0.4375 -0.25q-0.28125 -0.125 -0.59375 -0.125q-0.359375 0 -0.609375 0.140625q-0.25 0.140625 -0.40625 0.375q-0.15625 0.234375 -0.234375 0.578125q-0.078125 0.328125 -0.078125 0.71875q0 0.859375 0.40625 1.328125q0.40625 0.46875 1.0625 0.46875q0.328125 0 0.546875 -0.03125q0.234375 -0.03125 0.34375 -0.0625l0 -3.140625zm0 -3.328125l0.890625 -0.15625l0 7.25q-0.296875 0.09375 -0.75 0.171875q-0.4375 0.09375 -1.03125 0.09375q-0.53125 0 -0.96875 -0.1875q-0.4375 -0.1875 -0.75 -0.515625q-0.3125 -0.34375 -0.484375 -0.8125q-0.171875 -0.484375 -0.171875 -1.078125q0 -0.578125 0.140625 -1.046875q0.15625 -0.484375 0.421875 -0.8125q0.28125 -0.34375 0.671875 -0.53125q0.390625 -0.203125 0.890625 -0.203125q0.390625 0 0.6875 0.09375q0.296875 0.09375 0.453125 0.203125l0 -2.46875zm3.125061 4.109375l2.359375 0l0 0.828125l-2.359375 0l0 -0.828125zm7.578186 1.890625q0 -0.265625 -0.21875 -0.4375q-0.21875 -0.171875 -0.546875 -0.296875q-0.3125 -0.125 -0.703125 -0.25q-0.375 -0.125 -0.703125 -0.296875q-0.328125 -0.1875 -0.546875 -0.453125q-0.21875 -0.265625 -0.21875 -0.703125q0 -0.59375 0.484375 -0.984375q0.484375 -0.40625 1.515625 -0.40625q0.40625 0 0.84375 0.0625q0.4375 0.0625 0.734375 0.15625l-0.15625 0.78125q-0.078125 -0.046875 -0.234375 -0.09375q-0.140625 -0.046875 -0.34375 -0.078125q-0.1875 -0.03125 -0.40625 -0.046875q-0.21875 -0.03125 -0.421875 -0.03125q-1.15625 0 -1.15625 0.625q0 0.21875 0.21875 0.375q0.21875 0.15625 0.546875 0.28125q0.34375 0.125 0.71875 0.265625q0.390625 0.140625 0.71875 0.328125q0.328125 0.1875 0.546875 0.46875q0.21875 0.265625 0.21875 0.671875q0 0.671875 -0.53125 1.046875q-0.515625 0.375 -1.640625 0.375q-0.515625 0 -0.9375 -0.09375q-0.421875 -0.078125 -0.8125 -0.25l0.171875 -0.796875q0.375 0.15625 0.78125 0.28125q0.40625 0.109375 0.875 0.109375q1.203125 0 1.203125 -0.609375zm4.187561 -3.703125l2.078125 0l0 0.734375l-2.078125 0l0 2.296875q0 0.375 0.046875 0.609375q0.0625 0.234375 0.171875 0.375q0.125 0.140625 0.3125 0.203125q0.203125 0.046875 0.484375 0.046875q0.375 0 0.609375 -0.0625q0.234375 -0.0625 0.453125 -0.171875l0.125 0.75q-0.15625 0.0625 -0.484375 0.171875q-0.3125 0.109375 -0.796875 0.109375q-0.546875 0 -0.90625 -0.125q-0.34375 -0.140625 -0.546875 -0.390625q-0.203125 -0.265625 -0.28125 -0.640625q-0.0625 -0.375 -0.0625 -0.875l0 -2.296875l-1.046875 0l0 -0.734375l1.046875 0l0 -1.390625l0.875 -0.15625l0 1.546875zm7.640686 2.46875q0 0.578125 -0.171875 1.0625q-0.15625 0.46875 -0.46875 0.8125q-0.296875 0.34375 -0.71875 0.53125q-0.40625 0.1875 -0.890625 0.1875q-0.484375 0 -0.890625 -0.1875q-0.40625 -0.1875 -0.71875 -0.53125q-0.296875 -0.34375 -0.46875 -0.8125q-0.15625 -0.484375 -0.15625 -1.0625q0 -0.59375 0.15625 -1.0625q0.171875 -0.484375 0.46875 -0.8125q0.3125 -0.34375 0.71875 -0.53125q0.40625 -0.1875 0.890625 -0.1875q0.484375 0 0.890625 0.1875q0.421875 0.1875 0.71875 0.53125q0.3125 0.328125 0.46875 0.8125q0.171875 0.46875 0.171875 1.0625zm-0.90625 0q0 -0.84375 -0.375 -1.328125q-0.359375 -0.484375 -0.96875 -0.484375q-0.609375 0 -0.96875 0.484375q-0.359375 0.484375 -0.359375 1.328125q0 0.828125 0.359375 1.3125q0.359375 0.484375 0.96875 0.484375q0.609375 0 0.96875 -0.484375q0.375 -0.484375 0.375 -1.3125zm2.468811 2.46875l0 -4.671875q1.09375 -0.375 2.1875 -0.375q0.34375 0 0.65625 0.03125q0.3125 0.015625 0.6875 0.109375l-0.171875 0.765625q-0.328125 -0.09375 -0.59375 -0.109375q-0.265625 -0.03125 -0.578125 -0.03125q-0.640625 0 -1.3125 0.171875l0 4.109375l-0.875 0zm6.906311 -0.625q0.328125 0 0.578125 -0.015625q0.265625 -0.03125 0.4375 -0.0625l0 -1.46875q-0.171875 -0.0625 -0.40625 -0.09375q-0.234375 -0.03125 -0.5 -0.03125q-0.25 0 -0.484375 0.046875q-0.234375 0.03125 -0.421875 0.125q-0.171875 0.09375 -0.296875 0.25q-0.109375 0.15625 -0.109375 0.390625q0 0.484375 0.3125 0.671875q0.328125 0.1875 0.890625 0.1875zm-0.09375 -4.4375q0.5625 0 0.9375 0.140625q0.375 0.140625 0.609375 0.390625q0.234375 0.234375 0.328125 0.59375q0.109375 0.34375 0.109375 0.765625l0 3.09375q-0.3125 0.046875 -0.828125 0.125q-0.5 0.078125 -1.03125 0.078125q-0.40625 0 -0.796875 -0.078125q-0.375 -0.0625 -0.671875 -0.234375q-0.296875 -0.1875 -0.484375 -0.484375q-0.171875 -0.3125 -0.171875 -0.796875q0 -0.421875 0.171875 -0.71875q0.1875 -0.296875 0.484375 -0.46875q0.296875 -0.1875 0.671875 -0.265625q0.375 -0.078125 0.765625 -0.078125q0.515625 0 1.015625 0.109375l0 -0.25q0 -0.21875 -0.046875 -0.421875q-0.046875 -0.203125 -0.1875 -0.375q-0.125 -0.171875 -0.359375 -0.265625q-0.21875 -0.109375 -0.578125 -0.109375q-0.46875 0 -0.8125 0.0625q-0.328125 0.0625 -0.515625 0.125l-0.109375 -0.71875q0.1875 -0.09375 0.609375 -0.15625q0.421875 -0.0625 0.890625 -0.0625zm6.390686 4.609375q-0.15625 0.078125 -0.46875 0.171875q-0.296875 0.09375 -0.703125 0.09375q-0.4375 0 -0.8125 -0.140625q-0.375 -0.140625 -0.671875 -0.4375q-0.28125 -0.296875 -0.453125 -0.734375q-0.15625 -0.453125 -0.15625 -1.078125q0 -0.546875 0.15625 -1.0q0.15625 -0.453125 0.453125 -0.78125q0.296875 -0.328125 0.71875 -0.515625q0.421875 -0.1875 0.96875 -0.1875q0.640625 0 1.09375 0.09375q0.453125 0.09375 0.765625 0.171875l0 4.40625q0 1.15625 -0.59375 1.671875q-0.578125 0.515625 -1.75 0.515625q-0.46875 0 -0.859375 -0.078125q-0.390625 -0.078125 -0.6875 -0.1875l0.15625 -0.78125q0.28125 0.125 0.625 0.1875q0.359375 0.078125 0.796875 0.078125q0.765625 0 1.09375 -0.3125q0.328125 -0.296875 0.328125 -0.984375l0 -0.171875zm0 -3.71875q-0.125 -0.03125 -0.359375 -0.0625q-0.21875 -0.046875 -0.59375 -0.046875q-0.6875 0 -1.046875 0.46875q-0.359375 0.46875 -0.359375 1.25q0 0.421875 0.09375 0.734375q0.109375 0.296875 0.28125 0.5q0.1875 0.1875 0.40625 0.28125q0.21875 0.09375 0.484375 0.09375q0.328125 0 0.609375 -0.09375q0.296875 -0.109375 0.484375 -0.234375l0 -2.890625zm4.406311 -0.890625q1.0 0 1.53125 0.625q0.546875 0.625 0.546875 1.890625l0 0.3125l-3.53125 0q0.046875 0.765625 0.5 1.171875q0.453125 0.390625 1.28125 0.390625q0.46875 0 0.796875 -0.078125q0.328125 -0.078125 0.5 -0.15625l0.109375 0.75q-0.15625 0.078125 -0.578125 0.171875q-0.40625 0.109375 -0.921875 0.109375q-0.640625 0 -1.125 -0.203125q-0.484375 -0.203125 -0.8125 -0.53125q-0.3125 -0.34375 -0.484375 -0.8125q-0.15625 -0.484375 -0.15625 -1.046875q0 -0.65625 0.203125 -1.140625q0.203125 -0.5 0.53125 -0.8125q0.328125 -0.3125 0.75 -0.46875q0.421875 -0.171875 0.859375 -0.171875zm1.1875 2.109375q0 -0.625 -0.328125 -0.984375q-0.328125 -0.375 -0.875 -0.375q-0.3125 0 -0.5625 0.125q-0.25 0.109375 -0.4375 0.296875q-0.171875 0.1875 -0.28125 0.4375q-0.109375 0.25 -0.140625 0.5l2.625 0zm4.828186 2.265625q0 0.328125 -0.21875 0.578125q-0.203125 0.234375 -0.5625 0.234375q-0.359375 0 -0.578125 -0.234375q-0.203125 -0.25 -0.203125 -0.578125q0 -0.328125 0.203125 -0.5625q0.21875 -0.25 0.578125 -0.25q0.359375 0 0.5625 0.25q0.21875 0.234375 0.21875 0.5625zm5.156311 -5.03125q-0.28125 0 -0.484375 -0.1875q-0.203125 -0.1875 -0.203125 -0.515625q0 -0.328125 0.203125 -0.515625q0.203125 -0.203125 0.484375 -0.203125q0.28125 0 0.484375 0.203125q0.203125 0.1875 0.203125 0.515625q0 0.328125 -0.203125 0.515625q-0.203125 0.1875 -0.484375 0.1875zm-2.0625 1.515625l0 -0.734375l2.875 0l0 4.890625q0 0.5 -0.15625 0.859375q-0.140625 0.359375 -0.375 0.578125q-0.234375 0.234375 -0.546875 0.328125q-0.3125 0.09375 -0.671875 0.09375q-0.40625 0 -0.8125 -0.09375q-0.40625 -0.078125 -0.78125 -0.265625l0.265625 -0.734375q0.28125 0.125 0.59375 0.203125q0.328125 0.09375 0.625 0.09375q0.4375 0 0.703125 -0.21875q0.28125 -0.203125 0.28125 -0.84375l0 -4.15625l-2.0 0zm7.843811 2.96875q0 -0.265625 -0.21875 -0.4375q-0.21875 -0.171875 -0.546875 -0.296875q-0.3125 -0.125 -0.703125 -0.25q-0.375 -0.125 -0.703125 -0.296875q-0.328125 -0.1875 -0.546875 -0.453125q-0.21875 -0.265625 -0.21875 -0.703125q0 -0.59375 0.484375 -0.984375q0.484375 -0.40625 1.515625 -0.40625q0.40625 0 0.84375 0.0625q0.4375 0.0625 0.734375 0.15625l-0.15625 0.78125q-0.078125 -0.046875 -0.234375 -0.09375q-0.140625 -0.046875 -0.34375 -0.078125q-0.1875 -0.03125 -0.40625 -0.046875q-0.21875 -0.03125 -0.421875 -0.03125q-1.15625 0 -1.15625 0.625q0 0.21875 0.21875 0.375q0.21875 0.15625 0.546875 0.28125q0.34375 0.125 0.71875 0.265625q0.390625 0.140625 0.71875 0.328125q0.328125 0.1875 0.546875 0.46875q0.21875 0.265625 0.21875 0.671875q0 0.671875 -0.53125 1.046875q-0.515625 0.375 -1.640625 0.375q-0.515625 0 -0.9375 -0.09375q-0.421875 -0.078125 -0.8125 -0.25l0.171875 -0.796875q0.375 0.15625 0.78125 0.28125q0.40625 0.109375 0.875 0.109375q1.203125 0 1.203125 -0.609375zm6.500061 -1.234375q0 0.578125 -0.171875 1.0625q-0.15625 0.46875 -0.46875 0.8125q-0.296875 0.34375 -0.71875 0.53125q-0.40625 0.1875 -0.890625 0.1875q-0.484375 0 -0.890625 -0.1875q-0.40625 -0.1875 -0.71875 -0.53125q-0.296875 -0.34375 -0.46875 -0.8125q-0.15625 -0.484375 -0.15625 -1.0625q0 -0.59375 0.15625 -1.0625q0.171875 -0.484375 0.46875 -0.8125q0.3125 -0.34375 0.71875 -0.53125q0.40625 -0.1875 0.890625 -0.1875q0.484375 0 0.890625 0.1875q0.421875 0.1875 0.71875 0.53125q0.3125 0.328125 0.46875 0.8125q0.171875 0.46875 0.171875 1.0625zm-0.90625 0q0 -0.84375 -0.375 -1.328125q-0.359375 -0.484375 -0.96875 -0.484375q-0.609375 0 -0.96875 0.484375q-0.359375 0.484375 -0.359375 1.328125q0 0.828125 0.359375 1.3125q0.359375 0.484375 0.96875 0.484375q0.609375 0 0.96875 -0.484375q0.375 -0.484375 0.375 -1.3125zm2.078186 -2.34375q0.484375 -0.109375 0.953125 -0.171875q0.484375 -0.0625 0.890625 -0.0625q1.0 0 1.5 0.515625q0.515625 0.5 0.515625 1.625l0 2.90625l-0.875 0l0 -2.734375q0 -0.484375 -0.09375 -0.78125q-0.078125 -0.296875 -0.234375 -0.453125q-0.15625 -0.171875 -0.375 -0.234375q-0.21875 -0.0625 -0.46875 -0.0625q-0.21875 0 -0.46875 0.03125q-0.234375 0.015625 -0.453125 0.0625l0 4.171875l-0.890625 0l0 -4.8125z" fill-rule="nonzero"/><path fill="#6aa84f" d="m365.3832 385.27298l178.04721 0l0 42.204712l-178.04721 0z" fill-rule="evenodd"/><path stroke="#38761d" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m365.3832 385.27298l178.04721 0l0 42.204712l-178.04721 0z" fill-rule="evenodd"/><path fill="#ffffff" d="m397.18665 402.49844l1.65625 -0.140625q0.125 1.0 0.546875 1.640625q0.4375 0.640625 1.34375 1.046875q0.921875 0.390625 2.0625 0.390625q1.0 0 1.78125 -0.296875q0.78125 -0.296875 1.15625 -0.8125q0.375 -0.53125 0.375 -1.15625q0 -0.625 -0.375 -1.09375q-0.359375 -0.46875 -1.1875 -0.796875q-0.546875 -0.203125 -2.390625 -0.640625q-1.828125 -0.453125 -2.5625 -0.84375q-0.96875 -0.5 -1.4375 -1.234375q-0.46875 -0.75 -0.46875 -1.671875q0 -1.0 0.578125 -1.875q0.578125 -0.890625 1.671875 -1.34375q1.109375 -0.453125 2.453125 -0.453125q1.484375 0 2.609375 0.484375q1.140625 0.46875 1.75 1.40625q0.609375 0.921875 0.65625 2.09375l-1.6875 0.125q-0.140625 -1.265625 -0.9375 -1.90625q-0.78125 -0.65625 -2.3125 -0.65625q-1.609375 0 -2.34375 0.59375q-0.734375 0.59375 -0.734375 1.421875q0 0.71875 0.53125 1.171875q0.5 0.46875 2.65625 0.96875q2.15625 0.484375 2.953125 0.84375q1.171875 0.53125 1.71875 1.359375q0.5625 0.828125 0.5625 1.90625q0 1.0625 -0.609375 2.015625q-0.609375 0.9375 -1.75 1.46875q-1.140625 0.515625 -2.578125 0.515625q-1.8125 0 -3.046875 -0.53125q-1.21875 -0.53125 -1.921875 -1.59375q-0.6875 -1.0625 -0.71875 -2.40625zm12.381073 0.765625l1.640625 -0.21875q0.28125 1.40625 0.953125 2.015625q0.6875 0.609375 1.65625 0.609375q1.15625 0 1.953125 -0.796875q0.796875 -0.796875 0.796875 -1.984375q0 -1.125 -0.734375 -1.859375q-0.734375 -0.734375 -1.875 -0.734375q-0.46875 0 -1.15625 0.171875l0.1875 -1.4375q0.15625 0.015625 0.265625 0.015625q1.046875 0 1.875 -0.546875q0.84375 -0.546875 0.84375 -1.671875q0 -0.90625 -0.609375 -1.5q-0.609375 -0.59375 -1.578125 -0.59375q-0.953125 0 -1.59375 0.609375q-0.640625 0.59375 -0.8125 1.796875l-1.640625 -0.296875q0.296875 -1.640625 1.359375 -2.546875q1.0625 -0.90625 2.65625 -0.90625q1.09375 0 2.0 0.46875q0.921875 0.46875 1.40625 1.28125q0.5 0.8125 0.5 1.71875q0 0.859375 -0.46875 1.578125q-0.46875 0.703125 -1.375 1.125q1.1875 0.28125 1.84375 1.140625q0.65625 0.859375 0.65625 2.15625q0 1.734375 -1.28125 2.953125q-1.265625 1.21875 -3.21875 1.21875q-1.765625 0 -2.921875 -1.046875q-1.15625 -1.046875 -1.328125 -2.71875zm18.543396 3.53125l-3.53125 -13.359375l1.8125 0l2.03125 8.765625q0.328125 1.375 0.5625 2.71875q0.5 -2.140625 0.59375 -2.46875l2.546875 -9.015625l2.125 0l1.921875 6.765625q0.71875 2.515625 1.03125 4.71875q0.265625 -1.265625 0.671875 -2.890625l2.09375 -8.59375l1.78125 0l-3.671875 13.359375l-1.703125 0l-2.8125 -10.171875q-0.359375 -1.28125 -0.421875 -1.5625q-0.203125 0.90625 -0.390625 1.5625l-2.828125 10.171875l-1.8125 0zm14.468018 -4.84375q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm9.281982 4.84375l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm6.228302 0l0 -13.359375l1.640625 0l0 7.625l3.890625 -3.9375l2.109375 0l-3.6875 3.59375l4.0625 6.078125l-2.015625 0l-3.203125 -4.953125l-1.15625 1.125l0 3.828125l-1.640625 0zm9.28125 0l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0zm3.582306 -4.84375q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm15.610107 3.65625q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm10.469452 4.859375l0 -1.21875q-0.90625 1.4375 -2.703125 1.4375q-1.15625 0 -2.125 -0.640625q-0.96875 -0.640625 -1.5 -1.78125q-0.53125 -1.140625 -0.53125 -2.625q0 -1.453125 0.484375 -2.625q0.484375 -1.1875 1.4375 -1.8125q0.96875 -0.625 2.171875 -0.625q0.875 0 1.546875 0.375q0.6875 0.359375 1.109375 0.953125l0 -4.796875l1.640625 0l0 13.359375l-1.53125 0zm-5.171875 -4.828125q0 1.859375 0.78125 2.78125q0.78125 0.921875 1.84375 0.921875q1.078125 0 1.828125 -0.875q0.75 -0.890625 0.75 -2.6875q0 -1.984375 -0.765625 -2.90625q-0.765625 -0.9375 -1.890625 -0.9375q-1.078125 0 -1.8125 0.890625q-0.734375 0.890625 -0.734375 2.8125zm8.625732 1.9375l1.625 -0.25q0.125 0.96875 0.75 1.5q0.625 0.515625 1.75 0.515625q1.125 0 1.671875 -0.453125q0.546875 -0.46875 0.546875 -1.09375q0 -0.546875 -0.484375 -0.875q-0.328125 -0.21875 -1.671875 -0.546875q-1.8125 -0.46875 -2.515625 -0.796875q-0.6875 -0.328125 -1.046875 -0.90625q-0.359375 -0.59375 -0.359375 -1.3125q0 -0.640625 0.296875 -1.1875q0.296875 -0.5625 0.8125 -0.921875q0.375 -0.28125 1.03125 -0.46875q0.671875 -0.203125 1.421875 -0.203125q1.140625 0 2.0 0.328125q0.859375 0.328125 1.265625 0.890625q0.421875 0.5625 0.578125 1.5l-1.609375 0.21875q-0.109375 -0.75 -0.640625 -1.171875q-0.515625 -0.421875 -1.46875 -0.421875q-1.140625 0 -1.625 0.375q-0.46875 0.375 -0.46875 0.875q0 0.3125 0.1875 0.578125q0.203125 0.265625 0.640625 0.4375q0.234375 0.09375 1.4375 0.421875q1.75 0.453125 2.4375 0.75q0.6875 0.296875 1.078125 0.859375q0.390625 0.5625 0.390625 1.40625q0 0.828125 -0.484375 1.546875q-0.46875 0.71875 -1.375 1.125q-0.90625 0.390625 -2.046875 0.390625q-1.875 0 -2.875 -0.78125q-0.984375 -0.78125 -1.25 -2.328125z" fill-rule="nonzero"/><path fill="#ffffff" d="m396.3124 418.64658q0 -0.671875 0.21875 -1.15625q0.21875 -0.484375 0.578125 -0.796875q0.375 -0.328125 0.875 -0.484375q0.5 -0.15625 1.0625 -0.15625q0.359375 0 0.71875 0.046875q0.359375 0.046875 0.765625 0.171875l-0.203125 0.765625q-0.359375 -0.125 -0.65625 -0.15625q-0.28125 -0.046875 -0.578125 -0.046875q-0.390625 0 -0.734375 0.109375q-0.328125 0.09375 -0.59375 0.3125q-0.25 0.21875 -0.40625 0.5625q-0.140625 0.34375 -0.140625 0.828125q0 0.46875 0.140625 0.8125q0.140625 0.328125 0.390625 0.546875q0.25 0.21875 0.59375 0.328125q0.359375 0.109375 0.78125 0.109375q0.34375 0 0.65625 -0.03125q0.328125 -0.046875 0.6875 -0.171875l0.140625 0.734375q-0.375 0.140625 -0.765625 0.203125q-0.375 0.0625 -0.828125 0.0625q-0.59375 0 -1.09375 -0.171875q-0.5 -0.171875 -0.859375 -0.484375q-0.34375 -0.328125 -0.546875 -0.8125q-0.203125 -0.484375 -0.203125 -1.125zm7.578186 -2.59375q1.0 0 1.53125 0.625q0.546875 0.625 0.546875 1.890625l0 0.3125l-3.53125 0q0.046875 0.765625 0.5 1.171875q0.453125 0.390625 1.28125 0.390625q0.46875 0 0.796875 -0.078125q0.328125 -0.078125 0.5 -0.15625l0.109375 0.75q-0.15625 0.078125 -0.578125 0.171875q-0.40625 0.109375 -0.921875 0.109375q-0.640625 0 -1.125 -0.203125q-0.484375 -0.203125 -0.8125 -0.53125q-0.3125 -0.34375 -0.484375 -0.8125q-0.15625 -0.484375 -0.15625 -1.046875q0 -0.65625 0.203125 -1.140625q0.203125 -0.5 0.53125 -0.8125q0.328125 -0.3125 0.75 -0.46875q0.421875 -0.171875 0.859375 -0.171875zm1.1875 2.109375q0 -0.625 -0.328125 -0.984375q-0.328125 -0.375 -0.875 -0.375q-0.3125 0 -0.5625 0.125q-0.25 0.109375 -0.4375 0.296875q-0.171875 0.1875 -0.28125 0.4375q-0.109375 0.25 -0.140625 0.5l2.625 0zm5.375061 0.484375q0 -0.859375 -0.40625 -1.328125q-0.40625 -0.46875 -1.0625 -0.46875q-0.359375 0 -0.5625 0.03125q-0.203125 0.03125 -0.328125 0.0625l0 3.125q0.15625 0.140625 0.4375 0.265625q0.28125 0.109375 0.59375 0.109375q0.359375 0 0.609375 -0.140625q0.25 -0.140625 0.40625 -0.375q0.15625 -0.234375 0.234375 -0.5625q0.078125 -0.328125 0.078125 -0.71875zm0.90625 0q0 0.578125 -0.15625 1.046875q-0.140625 0.46875 -0.40625 0.8125q-0.265625 0.34375 -0.671875 0.546875q-0.390625 0.1875 -0.890625 0.1875q-0.390625 0 -0.6875 -0.109375q-0.296875 -0.09375 -0.453125 -0.203125l0 1.953125l-0.890625 0l0 -6.5625q0.296875 -0.078125 0.75 -0.15625q0.453125 -0.09375 1.03125 -0.09375q0.53125 0 0.96875 0.1875q0.4375 0.171875 0.75 0.515625q0.3125 0.328125 0.484375 0.8125q0.171875 0.46875 0.171875 1.0625zm1.171936 2.46875l0 -7.234375l0.890625 -0.15625l0 2.515625q0.21875 -0.078125 0.484375 -0.125q0.265625 -0.046875 0.515625 -0.046875q0.5625 0 0.9375 0.171875q0.390625 0.15625 0.609375 0.453125q0.21875 0.296875 0.3125 0.71875q0.109375 0.40625 0.109375 0.90625l0 2.796875l-0.875 0l0 -2.59375q0 -0.921875 -0.265625 -1.296875q-0.25 -0.375 -0.90625 -0.375q-0.28125 0 -0.546875 0.0625q-0.25 0.046875 -0.375 0.09375l0 4.109375l-0.890625 0zm6.062561 -3.125l2.359375 0l0 0.828125l-2.359375 0l0 -0.828125zm4.984436 3.125l0 -4.671875q1.09375 -0.375 2.1875 -0.375q0.34375 0 0.65625 0.03125q0.3125 0.015625 0.6875 0.109375l-0.171875 0.765625q-0.328125 -0.09375 -0.59375 -0.109375q-0.265625 -0.03125 -0.578125 -0.03125q-0.640625 0 -1.3125 0.171875l0 4.109375l-0.875 0zm7.875061 -0.453125q-0.15625 0.078125 -0.46875 0.171875q-0.296875 0.09375 -0.703125 0.09375q-0.4375 0 -0.8125 -0.140625q-0.375 -0.140625 -0.671875 -0.4375q-0.28125 -0.296875 -0.453125 -0.734375q-0.15625 -0.453125 -0.15625 -1.078125q0 -0.546875 0.15625 -1.0q0.15625 -0.453125 0.453125 -0.78125q0.296875 -0.328125 0.71875 -0.515625q0.421875 -0.1875 0.96875 -0.1875q0.640625 0 1.09375 0.09375q0.453125 0.09375 0.765625 0.171875l0 4.40625q0 1.15625 -0.59375 1.671875q-0.578125 0.515625 -1.75 0.515625q-0.46875 0 -0.859375 -0.078125q-0.390625 -0.078125 -0.6875 -0.1875l0.15625 -0.78125q0.28125 0.125 0.625 0.1875q0.359375 0.078125 0.796875 0.078125q0.765625 0 1.09375 -0.3125q0.328125 -0.296875 0.328125 -0.984375l0 -0.171875zm0 -3.71875q-0.125 -0.03125 -0.359375 -0.0625q-0.21875 -0.046875 -0.59375 -0.046875q-0.6875 0 -1.046875 0.46875q-0.359375 0.46875 -0.359375 1.25q0 0.421875 0.09375 0.734375q0.109375 0.296875 0.28125 0.5q0.1875 0.1875 0.40625 0.28125q0.21875 0.09375 0.484375 0.09375q0.328125 0 0.609375 -0.09375q0.296875 -0.109375 0.484375 -0.234375l0 -2.890625zm5.296936 4.171875q-0.15625 -0.359375 -0.28125 -0.65625q-0.109375 -0.296875 -0.234375 -0.59375q-0.109375 -0.3125 -0.21875 -0.625q-0.109375 -0.328125 -0.25 -0.75q-0.15625 0.421875 -0.28125 0.75q-0.109375 0.3125 -0.21875 0.625q-0.109375 0.296875 -0.234375 0.59375q-0.125 0.296875 -0.28125 0.65625l-0.671875 0q-0.296875 -1.3125 -0.5 -2.59375q-0.1875 -1.28125 -0.28125 -2.34375l0.828125 0q0.03125 0.40625 0.0625 0.8125q0.046875 0.390625 0.09375 0.828125q0.0625 0.4375 0.125 0.953125q0.078125 0.515625 0.15625 1.15625q0.171875 -0.4375 0.28125 -0.75q0.125 -0.328125 0.21875 -0.609375q0.09375 -0.28125 0.1875 -0.578125q0.09375 -0.3125 0.203125 -0.671875l0.65625 0q0.109375 0.359375 0.1875 0.671875q0.09375 0.296875 0.1875 0.578125q0.09375 0.28125 0.203125 0.609375q0.109375 0.3125 0.265625 0.734375q0.09375 -0.59375 0.171875 -1.09375q0.078125 -0.5 0.125 -0.9375q0.046875 -0.4375 0.09375 -0.84375q0.046875 -0.421875 0.078125 -0.859375l0.796875 0q-0.046875 0.53125 -0.125 1.140625q-0.078125 0.59375 -0.1875 1.234375q-0.109375 0.640625 -0.234375 1.296875q-0.125 0.65625 -0.265625 1.265625l-0.65625 0zm3.156311 -3.125l2.359375 0l0 0.828125l-2.359375 0l0 -0.828125zm7.500061 3.125q-0.15625 -0.359375 -0.28125 -0.65625q-0.109375 -0.296875 -0.234375 -0.59375q-0.109375 -0.3125 -0.21875 -0.625q-0.109375 -0.328125 -0.25 -0.75q-0.15625 0.421875 -0.28125 0.75q-0.109375 0.3125 -0.21875 0.625q-0.109375 0.296875 -0.234375 0.59375q-0.125 0.296875 -0.28125 0.65625l-0.671875 0q-0.296875 -1.3125 -0.5 -2.59375q-0.1875 -1.28125 -0.28125 -2.34375l0.828125 0q0.03125 0.40625 0.0625 0.8125q0.046875 0.390625 0.09375 0.828125q0.0625 0.4375 0.125 0.953125q0.078125 0.515625 0.15625 1.15625q0.171875 -0.4375 0.28125 -0.75q0.125 -0.328125 0.21875 -0.609375q0.09375 -0.28125 0.1875 -0.578125q0.09375 -0.3125 0.203125 -0.671875l0.65625 0q0.109375 0.359375 0.1875 0.671875q0.09375 0.296875 0.1875 0.578125q0.09375 0.28125 0.203125 0.609375q0.109375 0.3125 0.265625 0.734375q0.09375 -0.59375 0.171875 -1.09375q0.078125 -0.5 0.125 -0.9375q0.046875 -0.4375 0.09375 -0.84375q0.046875 -0.421875 0.078125 -0.859375l0.796875 0q-0.046875 0.53125 -0.125 1.140625q-0.078125 0.59375 -0.1875 1.234375q-0.109375 0.640625 -0.234375 1.296875q-0.125 0.65625 -0.265625 1.265625l-0.65625 0zm6.578186 -2.46875q0 0.578125 -0.171875 1.0625q-0.15625 0.46875 -0.46875 0.8125q-0.296875 0.34375 -0.71875 0.53125q-0.40625 0.1875 -0.890625 0.1875q-0.484375 0 -0.890625 -0.1875q-0.40625 -0.1875 -0.71875 -0.53125q-0.296875 -0.34375 -0.46875 -0.8125q-0.15625 -0.484375 -0.15625 -1.0625q0 -0.59375 0.15625 -1.0625q0.171875 -0.484375 0.46875 -0.8125q0.3125 -0.34375 0.71875 -0.53125q0.40625 -0.1875 0.890625 -0.1875q0.484375 0 0.890625 0.1875q0.421875 0.1875 0.71875 0.53125q0.3125 0.328125 0.46875 0.8125q0.171875 0.46875 0.171875 1.0625zm-0.90625 0q0 -0.84375 -0.375 -1.328125q-0.359375 -0.484375 -0.96875 -0.484375q-0.609375 0 -0.96875 0.484375q-0.359375 0.484375 -0.359375 1.328125q0 0.828125 0.359375 1.3125q0.359375 0.484375 0.96875 0.484375q0.609375 0 0.96875 -0.484375q0.375 -0.484375 0.375 -1.3125zm2.468811 2.46875l0 -4.671875q1.09375 -0.375 2.1875 -0.375q0.34375 0 0.65625 0.03125q0.3125 0.015625 0.6875 0.109375l-0.171875 0.765625q-0.328125 -0.09375 -0.59375 -0.109375q-0.265625 -0.03125 -0.578125 -0.03125q-0.640625 0 -1.3125 0.171875l0 4.109375l-0.875 0zm6.718811 -2.71875q0.296875 0.21875 0.65625 0.546875q0.359375 0.3125 0.71875 0.6875q0.359375 0.375 0.671875 0.765625q0.328125 0.390625 0.515625 0.71875l-1.046875 0q-0.203125 -0.328125 -0.5 -0.671875q-0.296875 -0.34375 -0.640625 -0.65625q-0.328125 -0.328125 -0.671875 -0.59375q-0.328125 -0.265625 -0.59375 -0.453125l0 2.375l-0.890625 0l0 -7.234375l0.890625 -0.15625l0 4.515625q0.59375 -0.515625 1.171875 -1.015625q0.59375 -0.515625 1.0625 -1.046875l1.03125 0q-0.46875 0.53125 -1.109375 1.109375q-0.640625 0.578125 -1.265625 1.109375zm6.406311 2.84375q-0.46875 0 -0.78125 -0.125q-0.3125 -0.140625 -0.5 -0.390625q-0.171875 -0.265625 -0.25 -0.640625q-0.078125 -0.375 -0.078125 -0.875l0 -4.671875l-1.421875 0l0 -0.75l2.296875 0l0 5.421875q0 0.375 0.046875 0.609375q0.046875 0.234375 0.140625 0.375q0.109375 0.140625 0.25 0.203125q0.15625 0.046875 0.359375 0.046875q0.3125 0 0.578125 -0.078125q0.265625 -0.078125 0.421875 -0.15625l0.125 0.75q-0.0625 0.03125 -0.1875 0.078125q-0.109375 0.046875 -0.28125 0.078125q-0.15625 0.046875 -0.34375 0.078125q-0.1875 0.046875 -0.375 0.046875zm6.625061 -2.59375q0 0.578125 -0.171875 1.0625q-0.15625 0.46875 -0.46875 0.8125q-0.296875 0.34375 -0.71875 0.53125q-0.40625 0.1875 -0.890625 0.1875q-0.484375 0 -0.890625 -0.1875q-0.40625 -0.1875 -0.71875 -0.53125q-0.296875 -0.34375 -0.46875 -0.8125q-0.15625 -0.484375 -0.15625 -1.0625q0 -0.59375 0.15625 -1.0625q0.171875 -0.484375 0.46875 -0.8125q0.3125 -0.34375 0.71875 -0.53125q0.40625 -0.1875 0.890625 -0.1875q0.484375 0 0.890625 0.1875q0.421875 0.1875 0.71875 0.53125q0.3125 0.328125 0.46875 0.8125q0.171875 0.46875 0.171875 1.0625zm-0.90625 0q0 -0.84375 -0.375 -1.328125q-0.359375 -0.484375 -0.96875 -0.484375q-0.609375 0 -0.96875 0.484375q-0.359375 0.484375 -0.359375 1.328125q0 0.828125 0.359375 1.3125q0.359375 0.484375 0.96875 0.484375q0.609375 0 0.96875 -0.484375q0.375 -0.484375 0.375 -1.3125zm4.046936 1.84375q0.328125 0 0.578125 -0.015625q0.265625 -0.03125 0.4375 -0.0625l0 -1.46875q-0.171875 -0.0625 -0.40625 -0.09375q-0.234375 -0.03125 -0.5 -0.03125q-0.25 0 -0.484375 0.046875q-0.234375 0.03125 -0.421875 0.125q-0.171875 0.09375 -0.296875 0.25q-0.109375 0.15625 -0.109375 0.390625q0 0.484375 0.3125 0.671875q0.328125 0.1875 0.890625 0.1875zm-0.09375 -4.4375q0.5625 0 0.9375 0.140625q0.375 0.140625 0.609375 0.390625q0.234375 0.234375 0.328125 0.59375q0.109375 0.34375 0.109375 0.765625l0 3.09375q-0.3125 0.046875 -0.828125 0.125q-0.5 0.078125 -1.03125 0.078125q-0.40625 0 -0.796875 -0.078125q-0.375 -0.0625 -0.671875 -0.234375q-0.296875 -0.1875 -0.484375 -0.484375q-0.171875 -0.3125 -0.171875 -0.796875q0 -0.421875 0.171875 -0.71875q0.1875 -0.296875 0.484375 -0.46875q0.296875 -0.1875 0.671875 -0.265625q0.375 -0.078125 0.765625 -0.078125q0.515625 0 1.015625 0.109375l0 -0.25q0 -0.21875 -0.046875 -0.421875q-0.046875 -0.203125 -0.1875 -0.375q-0.125 -0.171875 -0.359375 -0.265625q-0.21875 -0.109375 -0.578125 -0.109375q-0.46875 0 -0.8125 0.0625q-0.328125 0.0625 -0.515625 0.125l-0.109375 -0.71875q0.1875 -0.09375 0.609375 -0.15625q0.421875 -0.0625 0.890625 -0.0625zm6.390686 1.15625q-0.15625 -0.125 -0.4375 -0.25q-0.28125 -0.125 -0.59375 -0.125q-0.359375 0 -0.609375 0.140625q-0.25 0.140625 -0.40625 0.375q-0.15625 0.234375 -0.234375 0.578125q-0.078125 0.328125 -0.078125 0.71875q0 0.859375 0.40625 1.328125q0.40625 0.46875 1.0625 0.46875q0.328125 0 0.546875 -0.03125q0.234375 -0.03125 0.34375 -0.0625l0 -3.140625zm0 -3.328125l0.890625 -0.15625l0 7.25q-0.296875 0.09375 -0.75 0.171875q-0.4375 0.09375 -1.03125 0.09375q-0.53125 0 -0.96875 -0.1875q-0.4375 -0.1875 -0.75 -0.515625q-0.3125 -0.34375 -0.484375 -0.8125q-0.171875 -0.484375 -0.171875 -1.078125q0 -0.578125 0.140625 -1.046875q0.15625 -0.484375 0.421875 -0.8125q0.28125 -0.34375 0.671875 -0.53125q0.390625 -0.203125 0.890625 -0.203125q0.390625 0 0.6875 0.09375q0.296875 0.09375 0.453125 0.203125l0 -2.46875zm5.093811 6.546875q0 0.328125 -0.21875 0.578125q-0.203125 0.234375 -0.5625 0.234375q-0.359375 0 -0.578125 -0.234375q-0.203125 -0.25 -0.203125 -0.578125q0 -0.328125 0.203125 -0.5625q0.21875 -0.25 0.578125 -0.25q0.359375 0 0.5625 0.25q0.21875 0.234375 0.21875 0.5625zm5.156311 -5.03125q-0.28125 0 -0.484375 -0.1875q-0.203125 -0.1875 -0.203125 -0.515625q0 -0.328125 0.203125 -0.515625q0.203125 -0.203125 0.484375 -0.203125q0.28125 0 0.484375 0.203125q0.203125 0.1875 0.203125 0.515625q0 0.328125 -0.203125 0.515625q-0.203125 0.1875 -0.484375 0.1875zm-2.0625 1.515625l0 -0.734375l2.875 0l0 4.890625q0 0.5 -0.15625 0.859375q-0.140625 0.359375 -0.375 0.578125q-0.234375 0.234375 -0.546875 0.328125q-0.3125 0.09375 -0.671875 0.09375q-0.40625 0 -0.8125 -0.09375q-0.40625 -0.078125 -0.78125 -0.265625l0.265625 -0.734375q0.28125 0.125 0.59375 0.203125q0.328125 0.09375 0.625 0.09375q0.4375 0 0.703125 -0.21875q0.28125 -0.203125 0.28125 -0.84375l0 -4.15625l-2.0 0zm7.843811 2.96875q0 -0.265625 -0.21875 -0.4375q-0.21875 -0.171875 -0.546875 -0.296875q-0.3125 -0.125 -0.703125 -0.25q-0.375 -0.125 -0.703125 -0.296875q-0.328125 -0.1875 -0.546875 -0.453125q-0.21875 -0.265625 -0.21875 -0.703125q0 -0.59375 0.484375 -0.984375q0.484375 -0.40625 1.515625 -0.40625q0.40625 0 0.84375 0.0625q0.4375 0.0625 0.734375 0.15625l-0.15625 0.78125q-0.078125 -0.046875 -0.234375 -0.09375q-0.140625 -0.046875 -0.34375 -0.078125q-0.1875 -0.03125 -0.40625 -0.046875q-0.21875 -0.03125 -0.421875 -0.03125q-1.15625 0 -1.15625 0.625q0 0.21875 0.21875 0.375q0.21875 0.15625 0.546875 0.28125q0.34375 0.125 0.71875 0.265625q0.390625 0.140625 0.71875 0.328125q0.328125 0.1875 0.546875 0.46875q0.21875 0.265625 0.21875 0.671875q0 0.671875 -0.53125 1.046875q-0.515625 0.375 -1.640625 0.375q-0.515625 0 -0.9375 -0.09375q-0.421875 -0.078125 -0.8125 -0.25l0.171875 -0.796875q0.375 0.15625 0.78125 0.28125q0.40625 0.109375 0.875 0.109375q1.203125 0 1.203125 -0.609375zm6.500061 -1.234375q0 0.578125 -0.171875 1.0625q-0.15625 0.46875 -0.46875 0.8125q-0.296875 0.34375 -0.71875 0.53125q-0.40625 0.1875 -0.890625 0.1875q-0.484375 0 -0.890625 -0.1875q-0.40625 -0.1875 -0.71875 -0.53125q-0.296875 -0.34375 -0.46875 -0.8125q-0.15625 -0.484375 -0.15625 -1.0625q0 -0.59375 0.15625 -1.0625q0.171875 -0.484375 0.46875 -0.8125q0.3125 -0.34375 0.71875 -0.53125q0.40625 -0.1875 0.890625 -0.1875q0.484375 0 0.890625 0.1875q0.421875 0.1875 0.71875 0.53125q0.3125 0.328125 0.46875 0.8125q0.171875 0.46875 0.171875 1.0625zm-0.90625 0q0 -0.84375 -0.375 -1.328125q-0.359375 -0.484375 -0.96875 -0.484375q-0.609375 0 -0.96875 0.484375q-0.359375 0.484375 -0.359375 1.328125q0 0.828125 0.359375 1.3125q0.359375 0.484375 0.96875 0.484375q0.609375 0 0.96875 -0.484375q0.375 -0.484375 0.375 -1.3125zm2.078186 -2.34375q0.484375 -0.109375 0.953125 -0.171875q0.484375 -0.0625 0.890625 -0.0625q1.0 0 1.5 0.515625q0.5155945 0.5 0.5155945 1.625l0 2.90625l-0.8749695 0l0 -2.734375q0 -0.484375 -0.09375 -0.78125q-0.078125 -0.296875 -0.234375 -0.453125q-0.15625 -0.171875 -0.375 -0.234375q-0.21875 -0.0625 -0.46875 -0.0625q-0.21875 0 -0.46875 0.03125q-0.234375 0.015625 -0.453125 0.0625l0 4.171875l-0.890625 0l0 -4.8125z" fill-rule="nonzero"/><path fill="#6aa84f" d="m365.3832 450.70734l178.04721 0l0 42.204742l-178.04721 0z" fill-rule="evenodd"/><path stroke="#38761d" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m365.3832 450.70734l178.04721 0l0 42.204742l-178.04721 0z" fill-rule="evenodd"/><path fill="#ffffff" d="m398.2749 472.2297l0 -13.359375l1.8125 0l7.015625 10.484375l0 -10.484375l1.6875 0l0 13.359375l-1.8125 0l-7.015625 -10.5l0 10.5l-1.6875 0zm19.91043 -3.109375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm12.719482 4.296875l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm3.3864136 1.46875l-2.96875 -9.671875l1.703125 0l1.53125 5.578125l0.578125 2.078125q0.046875 -0.15625 0.5 -2.0l1.546875 -5.65625l1.6875 0l1.4375 5.609375l0.484375 1.84375l0.5625 -1.859375l1.65625 -5.59375l1.59375 0l-3.03125 9.671875l-1.703125 0l-1.53125 -5.796875l-0.375 -1.640625l-1.953125 7.4375l-1.71875 0zm11.082336 -4.84375q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm9.281952 4.84375l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm6.228302 0l0 -13.359375l1.640625 0l0 7.625l3.890625 -3.9375l2.109375 0l-3.6875 3.59375l4.0625 6.078125l-2.015625 0l-3.203125 -4.953125l-1.15625 1.125l0 3.828125l-1.640625 0zm14.636444 0l0 -13.359375l1.78125 0l0 11.78125l6.5625 0l0 1.578125l-8.34375 0zm9.641327 -4.84375q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm15.610107 3.65625q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm10.469452 4.859375l0 -1.21875q-0.90625 1.4375 -2.703125 1.4375q-1.15625 0 -2.125 -0.640625q-0.96875 -0.640625 -1.5 -1.78125q-0.53125 -1.140625 -0.53125 -2.625q0 -1.453125 0.484375 -2.625q0.484375 -1.1875 1.4375 -1.8125q0.96875 -0.625 2.171875 -0.625q0.875 0 1.546875 0.375q0.6875 0.359375 1.109375 0.953125l0 -4.796875l1.640625 0l0 13.359375l-1.53125 0zm-5.171875 -4.828125q0 1.859375 0.78125 2.78125q0.78125 0.921875 1.84375 0.921875q1.078125 0 1.828125 -0.875q0.75 -0.890625 0.75 -2.6875q0 -1.984375 -0.765625 -2.90625q-0.765625 -0.9375 -1.890625 -0.9375q-1.078125 0 -1.8125 0.890625q-0.734375 0.890625 -0.734375 2.8125z" fill-rule="nonzero"/><path fill="#ffffff" d="m385.8904 481.7372q0.484375 -0.109375 0.953125 -0.171875q0.484375 -0.0625 0.890625 -0.0625q1.0 0 1.5 0.515625q0.515625 0.5 0.515625 1.625l0 2.90625l-0.875 0l0 -2.734375q0 -0.484375 -0.09375 -0.78125q-0.078125 -0.296875 -0.234375 -0.453125q-0.15625 -0.171875 -0.375 -0.234375q-0.21875 -0.0625 -0.46875 -0.0625q-0.21875 0 -0.46875 0.03125q-0.234375 0.015625 -0.453125 0.0625l0 4.171875l-0.890625 0l0 -4.8125zm7.343811 -0.25q1.0 0 1.53125 0.625q0.546875 0.625 0.546875 1.890625l0 0.3125l-3.53125 0q0.046875 0.765625 0.5 1.171875q0.453125 0.390625 1.28125 0.390625q0.46875 0 0.796875 -0.078125q0.328125 -0.078125 0.5 -0.15625l0.109375 0.75q-0.15625 0.078125 -0.578125 0.171875q-0.40625 0.109375 -0.921875 0.109375q-0.640625 0 -1.125 -0.203125q-0.484375 -0.203125 -0.8125 -0.53125q-0.3125 -0.34375 -0.484375 -0.8125q-0.15625 -0.484375 -0.15625 -1.046875q0 -0.65625 0.203125 -1.140625q0.203125 -0.5 0.53125 -0.8125q0.328125 -0.3125 0.75 -0.46875q0.421875 -0.171875 0.859375 -0.171875zm1.1875 2.109375q0 -0.625 -0.328125 -0.984375q-0.328125 -0.375 -0.875 -0.375q-0.3125 0 -0.5625 0.125q-0.25 0.109375 -0.4375 0.296875q-0.171875 0.1875 -0.28125 0.4375q-0.109375 0.25 -0.140625 0.5l2.625 0zm3.968811 -1.984375l2.078125 0l0 0.734375l-2.078125 0l0 2.296875q0 0.375 0.046875 0.609375q0.0625 0.234375 0.171875 0.375q0.125 0.140625 0.3125 0.203125q0.203125 0.046875 0.484375 0.046875q0.375 0 0.609375 -0.0625q0.234375 -0.0625 0.453125 -0.171875l0.125 0.75q-0.15625 0.0625 -0.484375 0.171875q-0.3125 0.109375 -0.796875 0.109375q-0.546875 0 -0.90625 -0.125q-0.34375 -0.140625 -0.546875 -0.390625q-0.203125 -0.265625 -0.28125 -0.640625q-0.0625 -0.375 -0.0625 -0.875l0 -2.296875l-1.046875 0l0 -0.734375l1.046875 0l0 -1.390625l0.875 -0.15625l0 1.546875zm6.390686 4.9375q-0.15625 -0.359375 -0.28125 -0.65625q-0.109375 -0.296875 -0.234375 -0.59375q-0.109375 -0.3125 -0.21875 -0.625q-0.109375 -0.328125 -0.25 -0.75q-0.15625 0.421875 -0.28125 0.75q-0.109375 0.3125 -0.21875 0.625q-0.109375 0.296875 -0.234375 0.59375q-0.125 0.296875 -0.28125 0.65625l-0.671875 0q-0.296875 -1.3125 -0.5 -2.59375q-0.1875 -1.28125 -0.28125 -2.34375l0.828125 0q0.03125 0.40625 0.0625 0.8125q0.046875 0.390625 0.09375 0.828125q0.0625 0.4375 0.125 0.953125q0.078125 0.515625 0.15625 1.15625q0.171875 -0.4375 0.28125 -0.75q0.125 -0.328125 0.21875 -0.609375q0.09375 -0.28125 0.1875 -0.578125q0.09375 -0.3125 0.203125 -0.671875l0.65625 0q0.109375 0.359375 0.1875 0.671875q0.09375 0.296875 0.1875 0.578125q0.09375 0.28125 0.203125 0.609375q0.109375 0.3125 0.265625 0.734375q0.09375 -0.59375 0.171875 -1.09375q0.078125 -0.5 0.125 -0.9375q0.046875 -0.4375 0.09375 -0.84375q0.046875 -0.421875 0.078125 -0.859375l0.796875 0q-0.046875 0.53125 -0.125 1.140625q-0.078125 0.59375 -0.1875 1.234375q-0.109375 0.640625 -0.234375 1.296875q-0.125 0.65625 -0.265625 1.265625l-0.65625 0zm6.578186 -2.46875q0 0.578125 -0.171875 1.0625q-0.15625 0.46875 -0.46875 0.8125q-0.296875 0.34375 -0.71875 0.53125q-0.40625 0.1875 -0.890625 0.1875q-0.484375 0 -0.890625 -0.1875q-0.40625 -0.1875 -0.71875 -0.53125q-0.296875 -0.34375 -0.46875 -0.8125q-0.15625 -0.484375 -0.15625 -1.0625q0 -0.59375 0.15625 -1.0625q0.171875 -0.484375 0.46875 -0.8125q0.3125 -0.34375 0.71875 -0.53125q0.40625 -0.1875 0.890625 -0.1875q0.484375 0 0.890625 0.1875q0.421875 0.1875 0.71875 0.53125q0.3125 0.328125 0.46875 0.8125q0.171875 0.46875 0.171875 1.0625zm-0.90625 0q0 -0.84375 -0.375 -1.328125q-0.359375 -0.484375 -0.96875 -0.484375q-0.609375 0 -0.96875 0.484375q-0.359375 0.484375 -0.359375 1.328125q0 0.828125 0.359375 1.3125q0.359375 0.484375 0.96875 0.484375q0.609375 0 0.96875 -0.484375q0.375 -0.484375 0.375 -1.3125zm2.468811 2.46875l0 -4.671875q1.09375 -0.375 2.1875 -0.375q0.34375 0 0.65625 0.03125q0.3125 0.015625 0.6875 0.109375l-0.171875 0.765625q-0.328125 -0.09375 -0.59375 -0.109375q-0.265625 -0.03125 -0.578125 -0.03125q-0.640625 0 -1.3125 0.171875l0 4.109375l-0.875 0zm6.718811 -2.71875q0.296875 0.21875 0.65625 0.546875q0.359375 0.3125 0.71875 0.6875q0.359375 0.375 0.671875 0.765625q0.328125 0.390625 0.515625 0.71875l-1.046875 0q-0.203125 -0.328125 -0.5 -0.671875q-0.296875 -0.34375 -0.640625 -0.65625q-0.328125 -0.328125 -0.671875 -0.59375q-0.328125 -0.265625 -0.59375 -0.453125l0 2.375l-0.890625 0l0 -7.234375l0.890625 -0.15625l0 4.515625q0.59375 -0.515625 1.171875 -1.015625q0.59375 -0.515625 1.0625 -1.046875l1.03125 0q-0.46875 0.53125 -1.109375 1.109375q-0.640625 0.578125 -1.265625 1.109375zm4.281311 -0.40625l2.359375 0l0 0.828125l-2.359375 0l0 -0.828125zm8.421936 2.984375q-0.296875 0.078125 -0.78125 0.15625q-0.46875 0.09375 -1.09375 0.09375q-0.578125 0 -0.953125 -0.15625q-0.359375 -0.171875 -0.59375 -0.46875q-0.234375 -0.3125 -0.34375 -0.71875q-0.09375 -0.421875 -0.09375 -0.921875l0 -2.78125l0.875 0l0 2.578125q0 0.921875 0.265625 1.3125q0.28125 0.375 0.921875 0.375q0.140625 0 0.28125 0q0.140625 -0.015625 0.265625 -0.03125q0.140625 -0.015625 0.234375 -0.03125q0.09375 -0.015625 0.125 -0.03125l0 -4.171875l0.890625 0l0 4.796875zm4.484436 -1.09375q0 -0.265625 -0.21875 -0.4375q-0.21875 -0.171875 -0.546875 -0.296875q-0.3125 -0.125 -0.703125 -0.25q-0.375 -0.125 -0.703125 -0.296875q-0.328125 -0.1875 -0.546875 -0.453125q-0.21875 -0.265625 -0.21875 -0.703125q0 -0.59375 0.484375 -0.984375q0.484375 -0.40625 1.515625 -0.40625q0.40625 0 0.84375 0.0625q0.4375 0.0625 0.734375 0.15625l-0.15625 0.78125q-0.078125 -0.046875 -0.234375 -0.09375q-0.140625 -0.046875 -0.34375 -0.078125q-0.1875 -0.03125 -0.40625 -0.046875q-0.21875 -0.03125 -0.421875 -0.03125q-1.15625 0 -1.15625 0.625q0 0.21875 0.21875 0.375q0.21875 0.15625 0.546875 0.28125q0.34375 0.125 0.71875 0.265625q0.390625 0.140625 0.71875 0.328125q0.328125 0.1875 0.546875 0.46875q0.21875 0.265625 0.21875 0.671875q0 0.671875 -0.53125 1.046875q-0.515625 0.375 -1.640625 0.375q-0.515625 0 -0.9375 -0.09375q-0.421875 -0.078125 -0.8125 -0.25l0.171875 -0.796875q0.375 0.15625 0.78125 0.28125q0.40625 0.109375 0.875 0.109375q1.203125 0 1.203125 -0.609375zm4.312561 0.609375q0.328125 0 0.578125 -0.015625q0.265625 -0.03125 0.4375 -0.0625l0 -1.46875q-0.171875 -0.0625 -0.40625 -0.09375q-0.234375 -0.03125 -0.5 -0.03125q-0.25 0 -0.484375 0.046875q-0.234375 0.03125 -0.421875 0.125q-0.171875 0.09375 -0.296875 0.25q-0.109375 0.15625 -0.109375 0.390625q0 0.484375 0.3125 0.671875q0.328125 0.1875 0.890625 0.1875zm-0.09375 -4.4375q0.5625 0 0.9375 0.140625q0.375 0.140625 0.609375 0.390625q0.234375 0.234375 0.328125 0.59375q0.109375 0.34375 0.109375 0.765625l0 3.09375q-0.3125 0.046875 -0.828125 0.125q-0.5 0.078125 -1.03125 0.078125q-0.40625 0 -0.796875 -0.078125q-0.375 -0.0625 -0.671875 -0.234375q-0.296875 -0.1875 -0.484375 -0.484375q-0.171875 -0.3125 -0.171875 -0.796875q0 -0.421875 0.171875 -0.71875q0.1875 -0.296875 0.484375 -0.46875q0.296875 -0.1875 0.671875 -0.265625q0.375 -0.078125 0.765625 -0.078125q0.515625 0 1.015625 0.109375l0 -0.25q0 -0.21875 -0.046875 -0.421875q-0.046875 -0.203125 -0.1875 -0.375q-0.125 -0.171875 -0.359375 -0.265625q-0.21875 -0.109375 -0.578125 -0.109375q-0.46875 0 -0.8125 0.0625q-0.328125 0.0625 -0.515625 0.125l-0.109375 -0.71875q0.1875 -0.09375 0.609375 -0.15625q0.421875 -0.0625 0.890625 -0.0625zm6.390686 4.609375q-0.15625 0.078125 -0.46875 0.171875q-0.296875 0.09375 -0.703125 0.09375q-0.4375 0 -0.8125 -0.140625q-0.375 -0.140625 -0.671875 -0.4375q-0.28125 -0.296875 -0.453125 -0.734375q-0.15625 -0.453125 -0.15625 -1.078125q0 -0.546875 0.15625 -1.0q0.15625 -0.453125 0.453125 -0.78125q0.296875 -0.328125 0.71875 -0.515625q0.421875 -0.1875 0.96875 -0.1875q0.640625 0 1.09375 0.09375q0.453125 0.09375 0.765625 0.171875l0 4.40625q0 1.15625 -0.59375 1.671875q-0.578125 0.515625 -1.75 0.515625q-0.46875 0 -0.859375 -0.078125q-0.390625 -0.078125 -0.6875 -0.1875l0.15625 -0.78125q0.28125 0.125 0.625 0.1875q0.359375 0.078125 0.796875 0.078125q0.765625 0 1.09375 -0.3125q0.328125 -0.296875 0.328125 -0.984375l0 -0.171875zm0 -3.71875q-0.125 -0.03125 -0.359375 -0.0625q-0.21875 -0.046875 -0.59375 -0.046875q-0.6875 0 -1.046875 0.46875q-0.359375 0.46875 -0.359375 1.25q0 0.421875 0.09375 0.734375q0.109375 0.296875 0.28125 0.5q0.1875 0.1875 0.40625 0.28125q0.21875 0.09375 0.484375 0.09375q0.328125 0 0.609375 -0.09375q0.296875 -0.109375 0.484375 -0.234375l0 -2.890625zm4.406311 -0.890625q1.0 0 1.53125 0.625q0.546875 0.625 0.546875 1.890625l0 0.3125l-3.53125 0q0.046875 0.765625 0.5 1.171875q0.453125 0.390625 1.28125 0.390625q0.46875 0 0.796875 -0.078125q0.328125 -0.078125 0.5 -0.15625l0.109375 0.75q-0.15625 0.078125 -0.578125 0.171875q-0.40625 0.109375 -0.921875 0.109375q-0.640625 0 -1.125 -0.203125q-0.484375 -0.203125 -0.8125 -0.53125q-0.3125 -0.34375 -0.484375 -0.8125q-0.15625 -0.484375 -0.15625 -1.046875q0 -0.65625 0.203125 -1.140625q0.203125 -0.5 0.53125 -0.8125q0.328125 -0.3125 0.75 -0.46875q0.421875 -0.171875 0.859375 -0.171875zm1.1875 2.109375q0 -0.625 -0.328125 -0.984375q-0.328125 -0.375 -0.875 -0.375q-0.3125 0 -0.5625 0.125q-0.25 0.109375 -0.4375 0.296875q-0.171875 0.1875 -0.28125 0.4375q-0.109375 0.25 -0.140625 0.5l2.625 0zm2.859436 -0.171875l2.359375 0l0 0.828125l-2.359375 0l0 -0.828125zm5.484436 -1.640625q0.15625 -0.09375 0.453125 -0.1875q0.3125 -0.109375 0.6875 -0.109375q0.5 0 0.890625 0.203125q0.40625 0.1875 0.671875 0.53125q0.265625 0.328125 0.40625 0.8125q0.15625 0.46875 0.15625 1.046875q0 0.59375 -0.171875 1.078125q-0.171875 0.46875 -0.484375 0.8125q-0.3125 0.328125 -0.75 0.515625q-0.4375 0.1875 -0.96875 0.1875q-0.578125 0 -1.046875 -0.09375q-0.453125 -0.078125 -0.734375 -0.171875l0 -7.09375l0.890625 -0.15625l0 2.625zm0 4.0q0.203125 0.046875 0.40625 0.078125q0.203125 0.03125 0.375 0.03125q0.75 0 1.15625 -0.453125q0.421875 -0.453125 0.421875 -1.359375q0 -0.390625 -0.078125 -0.71875q-0.078125 -0.34375 -0.234375 -0.578125q-0.15625 -0.234375 -0.40625 -0.375q-0.25 -0.140625 -0.609375 -0.140625q-0.3125 0 -0.59375 0.125q-0.28125 0.125 -0.4375 0.25l0 3.140625zm4.234436 1.6875q0.09375 0.0625 0.265625 0.09375q0.171875 0.03125 0.328125 0.03125q0.515625 0 0.8125 -0.234375q0.296875 -0.21875 0.546875 -0.75q-0.609375 -1.125 -1.125 -2.421875q-0.515625 -1.296875 -0.859375 -2.578125l0.953125 0q0.109375 0.421875 0.25 0.921875q0.140625 0.484375 0.328125 1.015625q0.1875 0.515625 0.390625 1.046875q0.203125 0.53125 0.4375 1.0q0.171875 -0.484375 0.3125 -0.953125q0.15625 -0.484375 0.28125 -0.96875q0.140625 -0.5 0.265625 -1.0q0.125 -0.5 0.265625 -1.0625l0.90625 0q-0.328125 1.375 -0.75 2.6875q-0.421875 1.296875 -0.90625 2.40625q-0.1875 0.421875 -0.390625 0.71875q-0.203125 0.3125 -0.453125 0.515625q-0.25 0.203125 -0.5625 0.296875q-0.296875 0.109375 -0.6875 0.109375q-0.203125 0 -0.453125 -0.0625q-0.234375 -0.046875 -0.3125 -0.09375l0.15625 -0.71875zm6.265686 -4.046875l2.359375 0l0 0.828125l-2.359375 0l0 -0.828125zm4.593811 -1.6875q0.484375 -0.109375 0.953125 -0.171875q0.484375 -0.0625 0.890625 -0.0625q1.0 0 1.5 0.515625q0.515625 0.5 0.515625 1.625l0 2.90625l-0.875 0l0 -2.734375q0 -0.484375 -0.09375 -0.78125q-0.078125 -0.296875 -0.234375 -0.453125q-0.15625 -0.171875 -0.375 -0.234375q-0.21875 -0.0625 -0.46875 -0.0625q-0.21875 0 -0.46875 0.03125q-0.234375 0.015625 -0.453125 0.0625l0 4.171875l-0.890625 0l0 -4.8125zm9.484436 2.34375q0 0.578125 -0.171875 1.0625q-0.15625 0.46875 -0.46875 0.8125q-0.296875 0.34375 -0.71875 0.53125q-0.40625 0.1875 -0.890625 0.1875q-0.484375 0 -0.890625 -0.1875q-0.40625 -0.1875 -0.71875 -0.53125q-0.296875 -0.34375 -0.46875 -0.8125q-0.15625 -0.484375 -0.15625 -1.0625q0 -0.59375 0.15625 -1.0625q0.171875 -0.484375 0.46875 -0.8125q0.3125 -0.34375 0.71875 -0.53125q0.40625 -0.1875 0.890625 -0.1875q0.484375 0 0.890625 0.1875q0.421875 0.1875 0.71875 0.53125q0.3125 0.328125 0.46875 0.8125q0.171875 0.46875 0.171875 1.0625zm-0.90625 0q0 -0.84375 -0.375 -1.328125q-0.359375 -0.484375 -0.96875 -0.484375q-0.609375 0 -0.96875 0.484375q-0.359375 0.484375 -0.359375 1.328125q0 0.828125 0.359375 1.3125q0.359375 0.484375 0.96875 0.484375q0.609375 0 0.96875 -0.484375q0.375 -0.484375 0.375 -1.3125zm5.015686 -1.4375q-0.15625 -0.125 -0.4375 -0.25q-0.28125 -0.125 -0.59375 -0.125q-0.359375 0 -0.609375 0.140625q-0.25 0.140625 -0.40625 0.375q-0.15625 0.234375 -0.234375 0.578125q-0.078125 0.328125 -0.078125 0.71875q0 0.859375 0.40625 1.328125q0.40625 0.46875 1.0625 0.46875q0.328125 0 0.546875 -0.03125q0.234375 -0.03125 0.34375 -0.0625l0 -3.140625zm0 -3.328125l0.890625 -0.15625l0 7.25q-0.296875 0.09375 -0.75 0.171875q-0.4375 0.09375 -1.03125 0.09375q-0.53125 0 -0.96875 -0.1875q-0.4375 -0.1875 -0.75 -0.515625q-0.3125 -0.34375 -0.484375 -0.8125q-0.171875 -0.484375 -0.171875 -1.078125q0 -0.578125 0.140625 -1.046875q0.15625 -0.484375 0.421875 -0.8125q0.28125 -0.34375 0.671875 -0.53125q0.390625 -0.203125 0.890625 -0.203125q0.390625 0 0.6875 0.09375q0.296875 0.09375 0.453125 0.203125l0 -2.46875zm4.406311 2.171875q1.0 0 1.53125 0.625q0.546875 0.625 0.546875 1.890625l0 0.3125l-3.53125 0q0.046875 0.765625 0.5 1.171875q0.453125 0.390625 1.28125 0.390625q0.46875 0 0.796875 -0.078125q0.328125 -0.078125 0.5 -0.15625l0.109375 0.75q-0.15625 0.078125 -0.578125 0.171875q-0.40625 0.109375 -0.921875 0.109375q-0.640625 0 -1.125 -0.203125q-0.484375 -0.203125 -0.8125 -0.53125q-0.3125 -0.34375 -0.484375 -0.8125q-0.15625 -0.484375 -0.15625 -1.046875q0 -0.65625 0.203125 -1.140625q0.203125 -0.5 0.53125 -0.8125q0.328125 -0.3125 0.75 -0.46875q0.421875 -0.171875 0.859375 -0.171875zm1.1875 2.109375q0 -0.625 -0.328125 -0.984375q-0.328125 -0.375 -0.875 -0.375q-0.3125 0 -0.5625 0.125q-0.25 0.109375 -0.4375 0.296875q-0.171875 0.1875 -0.28125 0.4375q-0.109375 0.25 -0.140625 0.5l2.625 0zm4.828186 2.265625q0 0.328125 -0.21875 0.578125q-0.203125 0.234375 -0.5625 0.234375q-0.359375 0 -0.578125 -0.234375q-0.203125 -0.25 -0.203125 -0.578125q0 -0.328125 0.203125 -0.5625q0.21875 -0.25 0.578125 -0.25q0.359375 0 0.5625 0.25q0.21875 0.234375 0.21875 0.5625zm5.156311 -5.03125q-0.28125 0 -0.484375 -0.1875q-0.203125 -0.1875 -0.203125 -0.515625q0 -0.328125 0.203125 -0.515625q0.203125 -0.203125 0.484375 -0.203125q0.28125 0 0.484375 0.203125q0.203125 0.1875 0.203125 0.515625q0 0.328125 -0.203125 0.515625q-0.203125 0.1875 -0.484375 0.1875zm-2.0625 1.515625l0 -0.734375l2.875 0l0 4.890625q0 0.5 -0.15625 0.859375q-0.140625 0.359375 -0.375 0.578125q-0.234375 0.234375 -0.546875 0.328125q-0.3125 0.09375 -0.671875 0.09375q-0.40625 0 -0.8125 -0.09375q-0.40625 -0.078125 -0.78125 -0.265625l0.265625 -0.734375q0.28125 0.125 0.59375 0.203125q0.328125 0.09375 0.625 0.09375q0.4375 0 0.703125 -0.21875q0.28125 -0.203125 0.28125 -0.84375l0 -4.15625l-2.0 0zm7.843811 2.96875q0 -0.265625 -0.21875 -0.4375q-0.21875 -0.171875 -0.546875 -0.296875q-0.3125 -0.125 -0.703125 -0.25q-0.375 -0.125 -0.703125 -0.296875q-0.328125 -0.1875 -0.546875 -0.453125q-0.21875 -0.265625 -0.21875 -0.703125q0 -0.59375 0.484375 -0.984375q0.484375 -0.40625 1.515625 -0.40625q0.40625 0 0.84375 0.0625q0.4375 0.0625 0.7343445 0.15625l-0.15621948 0.78125q-0.078125 -0.046875 -0.234375 -0.09375q-0.140625 -0.046875 -0.34375 -0.078125q-0.1875 -0.03125 -0.40625 -0.046875q-0.21875 -0.03125 -0.421875 -0.03125q-1.15625 0 -1.15625 0.625q0 0.21875 0.21875 0.375q0.21875 0.15625 0.546875 0.28125q0.34375 0.125 0.71875 0.265625q0.390625 0.140625 0.71875 0.328125q0.328125 0.1875 0.5468445 0.46875q0.21875 0.265625 0.21875 0.671875q0 0.671875 -0.5312195 1.046875q-0.515625 0.375 -1.640625 0.375q-0.515625 0 -0.9375 -0.09375q-0.421875 -0.078125 -0.8125 -0.25l0.171875 -0.796875q0.375 0.15625 0.78125 0.28125q0.40625 0.109375 0.875 0.109375q1.203125 0 1.203125 -0.609375zm6.5000305 -1.234375q0 0.578125 -0.171875 1.0625q-0.15625 0.46875 -0.46875 0.8125q-0.296875 0.34375 -0.71875 0.53125q-0.40625 0.1875 -0.890625 0.1875q-0.484375 0 -0.890625 -0.1875q-0.40625 -0.1875 -0.71875 -0.53125q-0.296875 -0.34375 -0.46875 -0.8125q-0.15625 -0.484375 -0.15625 -1.0625q0 -0.59375 0.15625 -1.0625q0.171875 -0.484375 0.46875 -0.8125q0.3125 -0.34375 0.71875 -0.53125q0.40625 -0.1875 0.890625 -0.1875q0.484375 0 0.890625 0.1875q0.421875 0.1875 0.71875 0.53125q0.3125 0.328125 0.46875 0.8125q0.171875 0.46875 0.171875 1.0625zm-0.90625 0q0 -0.84375 -0.375 -1.328125q-0.359375 -0.484375 -0.96875 -0.484375q-0.609375 0 -0.96875 0.484375q-0.359375 0.484375 -0.359375 1.328125q0 0.828125 0.359375 1.3125q0.359375 0.484375 0.96875 0.484375q0.609375 0 0.96875 -0.484375q0.375 -0.484375 0.375 -1.3125zm2.078186 -2.34375q0.484375 -0.109375 0.953125 -0.171875q0.484375 -0.0625 0.890625 -0.0625q1.0 0 1.5 0.515625q0.515625 0.5 0.515625 1.625l0 2.90625l-0.875 0l0 -2.734375q0 -0.484375 -0.09375 -0.78125q-0.078125 -0.296875 -0.234375 -0.453125q-0.15625 -0.171875 -0.375 -0.234375q-0.21875 -0.0625 -0.46875 -0.0625q-0.21875 0 -0.46875 0.03125q-0.234375 0.015625 -0.453125 0.0625l0 4.171875l-0.890625 0l0 -4.8125z" fill-rule="nonzero"/><path fill="#6aa84f" d="m365.3832 516.1417l178.04721 0l0 42.204712l-178.04721 0z" fill-rule="evenodd"/><path stroke="#38761d" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m365.3832 516.1417l178.04721 0l0 42.204712l-178.04721 0z" fill-rule="evenodd"/><path fill="#ffffff" d="m417.67825 532.97656l1.765625 0.453125q-0.5625 2.171875 -2.0 3.328125q-1.4375 1.140625 -3.53125 1.140625q-2.15625 0 -3.515625 -0.875q-1.34375 -0.890625 -2.0625 -2.546875q-0.703125 -1.671875 -0.703125 -3.59375q0 -2.078125 0.796875 -3.625q0.796875 -1.5625 2.265625 -2.359375q1.484375 -0.8125 3.25 -0.8125q2.0 0 3.359375 1.015625q1.375 1.015625 1.90625 2.875l-1.734375 0.40625q-0.46875 -1.453125 -1.359375 -2.109375q-0.875 -0.671875 -2.203125 -0.671875q-1.546875 0 -2.578125 0.734375q-1.03125 0.734375 -1.453125 1.984375q-0.421875 1.234375 -0.421875 2.5625q0 1.703125 0.5 2.96875q0.5 1.265625 1.546875 1.90625q1.046875 0.625 2.265625 0.625q1.484375 0 2.515625 -0.859375q1.03125 -0.859375 1.390625 -2.546875zm3.691681 4.6875l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0zm10.519836 0l0 -1.421875q-1.125 1.640625 -3.0625 1.640625q-0.859375 0 -1.609375 -0.328125q-0.734375 -0.328125 -1.09375 -0.828125q-0.359375 -0.5 -0.5 -1.21875q-0.109375 -0.46875 -0.109375 -1.53125l0 -5.984375l1.640625 0l0 5.359375q0 1.28125 0.109375 1.734375q0.15625 0.640625 0.65625 1.015625q0.5 0.375 1.234375 0.375q0.734375 0 1.375 -0.375q0.65625 -0.390625 0.921875 -1.03125q0.265625 -0.65625 0.265625 -1.890625l0 -5.1875l1.640625 0l0 9.671875l-1.46875 0zm3.391327 -2.890625l1.625 -0.25q0.125 0.96875 0.75 1.5q0.625 0.515625 1.75 0.515625q1.125 0 1.671875 -0.453125q0.546875 -0.46875 0.546875 -1.09375q0 -0.546875 -0.484375 -0.875q-0.328125 -0.21875 -1.671875 -0.546875q-1.8125 -0.46875 -2.515625 -0.796875q-0.6875 -0.328125 -1.046875 -0.90625q-0.359375 -0.59375 -0.359375 -1.3125q0 -0.640625 0.296875 -1.1875q0.296875 -0.5625 0.8125 -0.921875q0.375 -0.28125 1.03125 -0.46875q0.671875 -0.203125 1.421875 -0.203125q1.140625 0 2.0 0.328125q0.859375 0.328125 1.265625 0.890625q0.421875 0.5625 0.578125 1.5l-1.609375 0.21875q-0.109375 -0.75 -0.640625 -1.171875q-0.515625 -0.421875 -1.46875 -0.421875q-1.140625 0 -1.625 0.375q-0.46875 0.375 -0.46875 0.875q0 0.3125 0.1875 0.578125q0.203125 0.265625 0.640625 0.4375q0.234375 0.09375 1.4375 0.421875q1.75 0.453125 2.4375 0.75q0.6875 0.296875 1.078125 0.859375q0.390625 0.5625 0.390625 1.40625q0 0.828125 -0.484375 1.546875q-0.46875 0.71875 -1.375 1.125q-0.90625 0.390625 -2.046875 0.390625q-1.875 0 -2.875 -0.78125q-0.984375 -0.78125 -1.25 -2.328125zm13.5625 1.421875l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm8.230194 -1.640625l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.125702 5.765625l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm11.911621 0l0 -13.359375l1.765625 0l0 13.359375l-1.765625 0zm4.6832886 0l0 -9.671875l1.46875 0l0 1.375q1.0625 -1.59375 3.078125 -1.59375q0.875 0 1.609375 0.3125q0.734375 0.3125 1.09375 0.828125q0.375 0.5 0.515625 1.203125q0.09375 0.453125 0.09375 1.59375l0 5.953125l-1.640625 0l0 -5.890625q0 -1.0 -0.203125 -1.484375q-0.1875 -0.5 -0.671875 -0.796875q-0.484375 -0.296875 -1.140625 -0.296875q-1.046875 0 -1.8125 0.671875q-0.75 0.65625 -0.75 2.515625l0 5.28125l-1.640625 0zm10.766357 0l0 -8.40625l-1.453125 0l0 -1.265625l1.453125 0l0 -1.03125q0 -0.96875 0.171875 -1.453125q0.234375 -0.640625 0.828125 -1.03125q0.59375 -0.390625 1.671875 -0.390625q0.6875 0 1.53125 0.15625l-0.25 1.4375q-0.5 -0.09375 -0.953125 -0.09375q-0.75 0 -1.0625 0.328125q-0.3125 0.3125 -0.3125 1.1875l0 0.890625l1.890625 0l0 1.265625l-1.890625 0l0 8.40625l-1.625 0zm4.1832886 -4.84375q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625z" fill-rule="nonzero"/><path fill="#ffffff" d="m409.63287 549.5153q0 -0.671875 0.21875 -1.15625q0.21875 -0.484375 0.578125 -0.796875q0.375 -0.328125 0.875 -0.484375q0.5 -0.15625 1.0625 -0.15625q0.359375 0 0.71875 0.046875q0.359375 0.046875 0.765625 0.171875l-0.203125 0.765625q-0.359375 -0.125 -0.65625 -0.15625q-0.28125 -0.046875 -0.578125 -0.046875q-0.390625 0 -0.734375 0.109375q-0.328125 0.09375 -0.59375 0.3125q-0.25 0.21875 -0.40625 0.5625q-0.140625 0.34375 -0.140625 0.828125q0 0.46875 0.140625 0.8125q0.140625 0.328125 0.390625 0.546875q0.25 0.21875 0.59375 0.328125q0.359375 0.109375 0.78125 0.109375q0.34375 0 0.65625 -0.03125q0.328125 -0.046875 0.6875 -0.171875l0.140625 0.734375q-0.375 0.140625 -0.765625 0.203125q-0.375 0.0625 -0.828125 0.0625q-0.59375 0 -1.09375 -0.171875q-0.5 -0.171875 -0.859375 -0.484375q-0.34375 -0.328125 -0.546875 -0.8125q-0.203125 -0.484375 -0.203125 -1.125zm7.578186 -2.59375q1.0 0 1.53125 0.625q0.546875 0.625 0.546875 1.890625l0 0.3125l-3.53125 0q0.046875 0.765625 0.5 1.171875q0.453125 0.390625 1.28125 0.390625q0.46875 0 0.796875 -0.078125q0.328125 -0.078125 0.5 -0.15625l0.109375 0.75q-0.15625 0.078125 -0.578125 0.171875q-0.40625 0.109375 -0.921875 0.109375q-0.640625 0 -1.125 -0.203125q-0.484375 -0.203125 -0.8125 -0.53125q-0.3125 -0.34375 -0.484375 -0.8125q-0.15625 -0.484375 -0.15625 -1.046875q0 -0.65625 0.203125 -1.140625q0.203125 -0.5 0.53125 -0.8125q0.328125 -0.3125 0.75 -0.46875q0.421875 -0.171875 0.859375 -0.171875zm1.1875 2.109375q0 -0.625 -0.328125 -0.984375q-0.328125 -0.375 -0.875 -0.375q-0.3125 0 -0.5625 0.125q-0.25 0.109375 -0.4375 0.296875q-0.171875 0.1875 -0.28125 0.4375q-0.109375 0.25 -0.140625 0.5l2.625 0zm5.375061 0.484375q0 -0.859375 -0.40625 -1.328125q-0.40625 -0.46875 -1.0625 -0.46875q-0.359375 0 -0.5625 0.03125q-0.203125 0.03125 -0.328125 0.0625l0 3.125q0.15625 0.140625 0.4375 0.265625q0.28125 0.109375 0.59375 0.109375q0.359375 0 0.609375 -0.140625q0.25 -0.140625 0.40625 -0.375q0.15625 -0.234375 0.234375 -0.5625q0.078125 -0.328125 0.078125 -0.71875zm0.90625 0q0 0.578125 -0.15625 1.046875q-0.140625 0.46875 -0.40625 0.8125q-0.265625 0.34375 -0.671875 0.546875q-0.390625 0.1875 -0.890625 0.1875q-0.390625 0 -0.6875 -0.109375q-0.296875 -0.09375 -0.453125 -0.203125l0 1.953125l-0.890625 0l0 -6.5625q0.296875 -0.078125 0.75 -0.15625q0.453125 -0.09375 1.03125 -0.09375q0.53125 0 0.96875 0.1875q0.4375 0.171875 0.75 0.515625q0.3125 0.328125 0.484375 0.8125q0.171875 0.46875 0.171875 1.0625zm1.171936 2.46875l0 -7.234375l0.890625 -0.15625l0 2.515625q0.21875 -0.078125 0.484375 -0.125q0.265625 -0.046875 0.515625 -0.046875q0.5625 0 0.9375 0.171875q0.390625 0.15625 0.609375 0.453125q0.21875 0.296875 0.3125 0.71875q0.109375 0.40625 0.109375 0.90625l0 2.796875l-0.875 0l0 -2.59375q0 -0.921875 -0.265625 -1.296875q-0.25 -0.375 -0.90625 -0.375q-0.28125 0 -0.546875 0.0625q-0.25 0.046875 -0.375 0.09375l0 4.109375l-0.890625 0zm6.062561 -3.125l2.359375 0l0 0.828125l-2.359375 0l0 -0.828125zm4.359436 0.65625q0 -0.671875 0.21875 -1.15625q0.21875 -0.484375 0.578125 -0.796875q0.375 -0.328125 0.875 -0.484375q0.5 -0.15625 1.0625 -0.15625q0.359375 0 0.71875 0.046875q0.359375 0.046875 0.765625 0.171875l-0.203125 0.765625q-0.359375 -0.125 -0.65625 -0.15625q-0.28125 -0.046875 -0.578125 -0.046875q-0.390625 0 -0.734375 0.109375q-0.328125 0.09375 -0.59375 0.3125q-0.25 0.21875 -0.40625 0.5625q-0.140625 0.34375 -0.140625 0.828125q0 0.46875 0.140625 0.8125q0.140625 0.328125 0.390625 0.546875q0.25 0.21875 0.59375 0.328125q0.359375 0.109375 0.78125 0.109375q0.34375 0 0.65625 -0.03125q0.328125 -0.046875 0.6875 -0.171875l0.140625 0.734375q-0.375 0.140625 -0.765625 0.203125q-0.375 0.0625 -0.828125 0.0625q-0.59375 0 -1.09375 -0.171875q-0.5 -0.171875 -0.859375 -0.484375q-0.34375 -0.328125 -0.546875 -0.8125q-0.203125 -0.484375 -0.203125 -1.125zm8.421936 2.59375q-0.46875 0 -0.78125 -0.125q-0.3125 -0.140625 -0.5 -0.390625q-0.171875 -0.265625 -0.25 -0.640625q-0.078125 -0.375 -0.078125 -0.875l0 -4.671875l-1.421875 0l0 -0.75l2.296875 0l0 5.421875q0 0.375 0.046875 0.609375q0.046875 0.234375 0.140625 0.375q0.109375 0.140625 0.25 0.203125q0.15625 0.046875 0.359375 0.046875q0.3125 0 0.578125 -0.078125q0.265625 -0.078125 0.421875 -0.15625l0.125 0.75q-0.0625 0.03125 -0.1875 0.078125q-0.109375 0.046875 -0.28125 0.078125q-0.15625 0.046875 -0.34375 0.078125q-0.1875 0.046875 -0.375 0.046875zm6.296936 -0.265625q-0.296875 0.078125 -0.78125 0.15625q-0.46875 0.09375 -1.09375 0.09375q-0.578125 0 -0.953125 -0.15625q-0.359375 -0.171875 -0.59375 -0.46875q-0.234375 -0.3125 -0.34375 -0.71875q-0.09375 -0.421875 -0.09375 -0.921875l0 -2.78125l0.875 0l0 2.578125q0 0.921875 0.265625 1.3125q0.28125 0.375 0.921875 0.375q0.140625 0 0.28125 0q0.140625 -0.015625 0.265625 -0.03125q0.140625 -0.015625 0.234375 -0.03125q0.09375 -0.015625 0.125 -0.03125l0 -4.171875l0.890625 0l0 4.796875zm4.484436 -1.09375q0 -0.265625 -0.21875 -0.4375q-0.21875 -0.171875 -0.546875 -0.296875q-0.3125 -0.125 -0.703125 -0.25q-0.375 -0.125 -0.703125 -0.296875q-0.328125 -0.1875 -0.546875 -0.453125q-0.21875 -0.265625 -0.21875 -0.703125q0 -0.59375 0.484375 -0.984375q0.484375 -0.40625 1.515625 -0.40625q0.40625 0 0.84375 0.0625q0.4375 0.0625 0.734375 0.15625l-0.15625 0.78125q-0.078125 -0.046875 -0.234375 -0.09375q-0.140625 -0.046875 -0.34375 -0.078125q-0.1875 -0.03125 -0.40625 -0.046875q-0.21875 -0.03125 -0.421875 -0.03125q-1.15625 0 -1.15625 0.625q0 0.21875 0.21875 0.375q0.21875 0.15625 0.546875 0.28125q0.34375 0.125 0.71875 0.265625q0.390625 0.140625 0.71875 0.328125q0.328125 0.1875 0.546875 0.46875q0.21875 0.265625 0.21875 0.671875q0 0.671875 -0.53125 1.046875q-0.515625 0.375 -1.640625 0.375q-0.515625 0 -0.9375 -0.09375q-0.421875 -0.078125 -0.8125 -0.25l0.171875 -0.796875q0.375 0.15625 0.78125 0.28125q0.40625 0.109375 0.875 0.109375q1.203125 0 1.203125 -0.609375zm4.187561 -3.703125l2.078125 0l0 0.734375l-2.078125 0l0 2.296875q0 0.375 0.046875 0.609375q0.0625 0.234375 0.171875 0.375q0.125 0.140625 0.3125 0.203125q0.203125 0.046875 0.484375 0.046875q0.375 0 0.609375 -0.0625q0.234375 -0.0625 0.453125 -0.171875l0.125 0.75q-0.15625 0.0625 -0.484375 0.171875q-0.3125 0.109375 -0.796875 0.109375q-0.546875 0 -0.90625 -0.125q-0.34375 -0.140625 -0.546875 -0.390625q-0.203125 -0.265625 -0.28125 -0.640625q-0.0625 -0.375 -0.0625 -0.875l0 -2.296875l-1.046875 0l0 -0.734375l1.046875 0l0 -1.390625l0.875 -0.15625l0 1.546875zm5.500061 -0.125q1.0 0 1.53125 0.625q0.546875 0.625 0.546875 1.890625l0 0.3125l-3.53125 0q0.046875 0.765625 0.5 1.171875q0.453125 0.390625 1.28125 0.390625q0.46875 0 0.796875 -0.078125q0.328125 -0.078125 0.5 -0.15625l0.109375 0.75q-0.15625 0.078125 -0.578125 0.171875q-0.40625 0.109375 -0.921875 0.109375q-0.640625 0 -1.125 -0.203125q-0.484375 -0.203125 -0.8125 -0.53125q-0.3125 -0.34375 -0.484375 -0.8125q-0.15625 -0.484375 -0.15625 -1.046875q0 -0.65625 0.203125 -1.140625q0.203125 -0.5 0.53125 -0.8125q0.328125 -0.3125 0.75 -0.46875q0.421875 -0.171875 0.859375 -0.171875zm1.1875 2.109375q0 -0.625 -0.328125 -0.984375q-0.328125 -0.375 -0.875 -0.375q-0.3125 0 -0.5625 0.125q-0.25 0.109375 -0.4375 0.296875q-0.171875 0.1875 -0.28125 0.4375q-0.109375 0.25 -0.140625 0.5l2.625 0zm2.515686 2.953125l0 -4.671875q1.09375 -0.375 2.1875 -0.375q0.34375 0 0.65625 0.03125q0.3125 0.015625 0.6875 0.109375l-0.171875 0.765625q-0.328125 -0.09375 -0.59375 -0.109375q-0.265625 -0.03125 -0.578125 -0.03125q-0.640625 0 -1.3125 0.171875l0 4.109375l-0.875 0zm7.640686 -0.6875q0 0.328125 -0.21875 0.578125q-0.203125 0.234375 -0.5625 0.234375q-0.359375 0 -0.578125 -0.234375q-0.203125 -0.25 -0.203125 -0.578125q0 -0.328125 0.203125 -0.5625q0.21875 -0.25 0.578125 -0.25q0.359375 0 0.5625 0.25q0.21875 0.234375 0.21875 0.5625zm5.156311 -5.03125q-0.28125 0 -0.484375 -0.1875q-0.203125 -0.1875 -0.203125 -0.515625q0 -0.328125 0.203125 -0.515625q0.203125 -0.203125 0.484375 -0.203125q0.28125 0 0.484375 0.203125q0.203125 0.1875 0.203125 0.515625q0 0.328125 -0.203125 0.515625q-0.203125 0.1875 -0.484375 0.1875zm-2.0625 1.515625l0 -0.734375l2.875 0l0 4.890625q0 0.5 -0.15625 0.859375q-0.140625 0.359375 -0.375 0.578125q-0.234375 0.234375 -0.546875 0.328125q-0.3125 0.09375 -0.671875 0.09375q-0.40625 0 -0.8125 -0.09375q-0.40625 -0.078125 -0.78125 -0.265625l0.265625 -0.734375q0.28125 0.125 0.59375 0.203125q0.328125 0.09375 0.625 0.09375q0.4375 0 0.703125 -0.21875q0.28125 -0.203125 0.28125 -0.84375l0 -4.15625l-2.0 0zm7.843811 2.96875q0 -0.265625 -0.21875 -0.4375q-0.21875 -0.171875 -0.546875 -0.296875q-0.3125 -0.125 -0.703125 -0.25q-0.375 -0.125 -0.703125 -0.296875q-0.328125 -0.1875 -0.546875 -0.453125q-0.21875 -0.265625 -0.21875 -0.703125q0 -0.59375 0.484375 -0.984375q0.484375 -0.40625 1.515625 -0.40625q0.40625 0 0.84375 0.0625q0.4375 0.0625 0.734375 0.15625l-0.15625 0.78125q-0.078125 -0.046875 -0.234375 -0.09375q-0.140625 -0.046875 -0.34375 -0.078125q-0.1875 -0.03125 -0.40625 -0.046875q-0.21875 -0.03125 -0.421875 -0.03125q-1.15625 0 -1.15625 0.625q0 0.21875 0.21875 0.375q0.21875 0.15625 0.546875 0.28125q0.34375 0.125 0.71875 0.265625q0.390625 0.140625 0.71875 0.328125q0.328125 0.1875 0.546875 0.46875q0.21875 0.265625 0.21875 0.671875q0 0.671875 -0.53125 1.046875q-0.515625 0.375 -1.640625 0.375q-0.515625 0 -0.9375 -0.09375q-0.421875 -0.078125 -0.8125 -0.25l0.171875 -0.796875q0.375 0.15625 0.78125 0.28125q0.40625 0.109375 0.875 0.109375q1.203125 0 1.203125 -0.609375zm6.500061 -1.234375q0 0.578125 -0.171875 1.0625q-0.15625 0.46875 -0.46875 0.8125q-0.296875 0.34375 -0.71875 0.53125q-0.40625 0.1875 -0.890625 0.1875q-0.484375 0 -0.890625 -0.1875q-0.40625 -0.1875 -0.71875 -0.53125q-0.296875 -0.34375 -0.46875 -0.8125q-0.15625 -0.484375 -0.15625 -1.0625q0 -0.59375 0.15625 -1.0625q0.171875 -0.484375 0.46875 -0.8125q0.3125 -0.34375 0.71875 -0.53125q0.40625 -0.1875 0.890625 -0.1875q0.484375 0 0.890625 0.1875q0.421875 0.1875 0.71875 0.53125q0.3125 0.328125 0.46875 0.8125q0.171875 0.46875 0.171875 1.0625zm-0.90625 0q0 -0.84375 -0.375 -1.328125q-0.359375 -0.484375 -0.96875 -0.484375q-0.609375 0 -0.96875 0.484375q-0.359375 0.484375 -0.359375 1.328125q0 0.828125 0.359375 1.3125q0.359375 0.484375 0.96875 0.484375q0.609375 0 0.96875 -0.484375q0.375 -0.484375 0.375 -1.3125zm2.078186 -2.34375q0.484375 -0.109375 0.953125 -0.171875q0.484375 -0.0625 0.890625 -0.0625q1.0 0 1.5 0.515625q0.515625 0.5 0.515625 1.625l0 2.90625l-0.875 0l0 -2.734375q0 -0.484375 -0.09375 -0.78125q-0.078125 -0.296875 -0.234375 -0.453125q-0.15625 -0.171875 -0.375 -0.234375q-0.21875 -0.0625 -0.46875 -0.0625q-0.21875 0 -0.46875 0.03125q-0.234375 0.015625 -0.453125 0.0625l0 4.171875l-0.890625 0l0 -4.8125z" fill-rule="nonzero"/><path fill="#6aa84f" d="m595.77167 172.9917l163.93701 0l0 48.6929l-163.93701 0z" fill-rule="evenodd"/><path stroke="#38761d" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m595.77167 172.9917l163.93701 0l0 48.6929l-163.93701 0z" fill-rule="evenodd"/><path fill="#ffffff" d="m663.06537 187.63815l0 -9.546875l1.25 0l0 9.546875l-1.25 0zm3.093628 -4.640625q0 -2.375 1.28125 -3.71875q1.28125 -1.34375 3.296875 -1.34375q1.3125 0 2.375 0.625q1.0625 0.625 1.609375 1.765625q0.5625 1.125 0.5625 2.5625q0 1.4375 -0.59375 2.59375q-0.578125 1.140625 -1.65625 1.734375q-1.0625 0.578125 -2.3125 0.578125q-1.34375 0 -2.40625 -0.640625q-1.0625 -0.65625 -1.609375 -1.78125q-0.546875 -1.125 -0.546875 -2.375zm1.3125 0.015625q0 1.71875 0.921875 2.71875q0.921875 0.984375 2.328125 0.984375q1.421875 0 2.34375 -1.0q0.921875 -1.0 0.921875 -2.84375q0 -1.15625 -0.40625 -2.03125q-0.390625 -0.875 -1.15625 -1.34375q-0.75 -0.484375 -1.6875 -0.484375q-1.34375 0 -2.3125 0.921875q-0.953125 0.921875 -0.953125 3.078125zm9.44519 4.625l0 -9.546875l3.59375 0q0.953125 0 1.453125 0.09375q0.703125 0.125 1.171875 0.453125q0.484375 0.328125 0.765625 0.921875q0.296875 0.59375 0.296875 1.296875q0 1.21875 -0.78125 2.0625q-0.765625 0.84375 -2.796875 0.84375l-2.4375 0l0 3.875l-1.265625 0zm1.265625 -5.0l2.453125 0q1.234375 0 1.75 -0.453125q0.515625 -0.46875 0.515625 -1.28125q0 -0.609375 -0.3125 -1.03125q-0.296875 -0.421875 -0.796875 -0.5625q-0.3125 -0.09375 -1.171875 -0.09375l-2.4375 0l0 3.421875zm7.1866455 1.9375l1.203125 -0.109375q0.078125 0.71875 0.390625 1.1875q0.3125 0.453125 0.953125 0.734375q0.65625 0.28125 1.46875 0.28125q0.71875 0 1.265625 -0.21875q0.5625 -0.21875 0.828125 -0.578125q0.265625 -0.375 0.265625 -0.828125q0 -0.453125 -0.265625 -0.78125q-0.25 -0.328125 -0.84375 -0.5625q-0.390625 -0.15625 -1.703125 -0.46875q-1.3125 -0.3125 -1.84375 -0.59375q-0.671875 -0.359375 -1.015625 -0.890625q-0.328125 -0.53125 -0.328125 -1.1875q0 -0.71875 0.40625 -1.34375q0.40625 -0.625 1.1875 -0.953125q0.796875 -0.328125 1.765625 -0.328125q1.046875 0 1.859375 0.34375q0.8125 0.34375 1.25 1.015625q0.4375 0.65625 0.46875 1.484375l-1.203125 0.09375q-0.109375 -0.90625 -0.671875 -1.359375q-0.5625 -0.46875 -1.65625 -0.46875q-1.140625 0 -1.671875 0.421875q-0.515625 0.421875 -0.515625 1.015625q0 0.515625 0.359375 0.84375q0.375 0.328125 1.90625 0.6875q1.546875 0.34375 2.109375 0.59375q0.84375 0.390625 1.234375 0.984375q0.390625 0.578125 0.390625 1.359375q0 0.75 -0.4375 1.4375q-0.421875 0.671875 -1.25 1.046875q-0.8125 0.359375 -1.828125 0.359375q-1.296875 0 -2.171875 -0.375q-0.875 -0.375 -1.375 -1.125q-0.5 -0.765625 -0.53125 -1.71875z" fill-rule="nonzero"/><path fill="#ffffff" d="m651.1758 203.63815l-1.078125 0l0 -9.546875l1.171875 0l0 3.40625q0.734375 -0.921875 1.890625 -0.921875q0.640625 0 1.203125 0.265625q0.578125 0.25 0.9375 0.71875q0.375 0.453125 0.578125 1.109375q0.203125 0.65625 0.203125 1.40625q0 1.78125 -0.875 2.75q-0.875 0.96875 -2.109375 0.96875q-1.21875 0 -1.921875 -1.015625l0 0.859375zm0 -3.5q0 1.234375 0.328125 1.78125q0.5625 0.90625 1.5 0.90625q0.765625 0 1.328125 -0.65625q0.5625 -0.671875 0.5625 -2.0q0 -1.34375 -0.546875 -1.984375q-0.53125 -0.65625 -1.296875 -0.65625q-0.765625 0 -1.328125 0.671875q-0.546875 0.671875 -0.546875 1.9375zm6.2874756 6.15625l-0.125 -1.09375q0.375 0.109375 0.65625 0.109375q0.390625 0 0.625 -0.140625q0.234375 -0.125 0.390625 -0.359375q0.109375 -0.171875 0.359375 -0.875q0.03125 -0.09375 0.109375 -0.28125l-2.625 -6.921875l1.265625 0l1.4375 4.0q0.28125 0.765625 0.5 1.59375q0.203125 -0.796875 0.46875 -1.578125l1.484375 -4.015625l1.171875 0l-2.625 7.015625q-0.421875 1.140625 -0.65625 1.578125q-0.3125 0.578125 -0.71875 0.84375q-0.40625 0.28125 -0.96875 0.28125q-0.328125 0 -0.75 -0.15625zm10.13269 -5.71875l1.203125 -0.109375q0.078125 0.71875 0.390625 1.1875q0.3125 0.453125 0.953125 0.734375q0.65625 0.28125 1.46875 0.28125q0.71875 0 1.265625 -0.21875q0.5625 -0.21875 0.828125 -0.578125q0.265625 -0.375 0.265625 -0.828125q0 -0.453125 -0.265625 -0.78125q-0.25 -0.328125 -0.84375 -0.5625q-0.390625 -0.15625 -1.703125 -0.46875q-1.3125 -0.3125 -1.84375 -0.59375q-0.671875 -0.359375 -1.015625 -0.890625q-0.328125 -0.53125 -0.328125 -1.1875q0 -0.71875 0.40625 -1.34375q0.40625 -0.625 1.1875 -0.953125q0.796875 -0.328125 1.765625 -0.328125q1.046875 0 1.859375 0.34375q0.8125 0.34375 1.25 1.015625q0.4375 0.65625 0.46875 1.484375l-1.203125 0.09375q-0.109375 -0.90625 -0.671875 -1.359375q-0.5625 -0.46875 -1.65625 -0.46875q-1.140625 0 -1.671875 0.421875q-0.515625 0.421875 -0.515625 1.015625q0 0.515625 0.359375 0.84375q0.375 0.328125 1.90625 0.6875q1.546875 0.34375 2.109375 0.59375q0.84375 0.390625 1.234375 0.984375q0.390625 0.578125 0.390625 1.359375q0 0.75 -0.4375 1.4375q-0.421875 0.671875 -1.25 1.046875q-0.8125 0.359375 -1.828125 0.359375q-1.296875 0 -2.171875 -0.375q-0.875 -0.375 -1.375 -1.125q-0.5 -0.765625 -0.53125 -1.71875zm13.905334 0.84375l1.203125 0.140625q-0.28125 1.0625 -1.0625 1.65625q-0.765625 0.578125 -1.96875 0.578125q-1.515625 0 -2.40625 -0.9375q-0.890625 -0.9375 -0.890625 -2.609375q0 -1.75 0.890625 -2.703125q0.90625 -0.96875 2.34375 -0.96875q1.390625 0 2.265625 0.9375q0.875 0.9375 0.875 2.65625q0 0.109375 0 0.3125l-5.15625 0q0.0625 1.140625 0.640625 1.75q0.578125 0.59375 1.4375 0.59375q0.65625 0 1.109375 -0.328125q0.453125 -0.34375 0.71875 -1.078125zm-3.84375 -1.90625l3.859375 0q-0.078125 -0.859375 -0.4375 -1.296875q-0.5625 -0.6875 -1.453125 -0.6875q-0.8125 0 -1.359375 0.546875q-0.546875 0.53125 -0.609375 1.4375zm6.5062256 4.125l0 -6.90625l1.0625 0l0 1.046875q0.40625 -0.734375 0.734375 -0.96875q0.34375 -0.234375 0.765625 -0.234375q0.59375 0 1.203125 0.375l-0.40625 1.078125q-0.4375 -0.25 -0.859375 -0.25q-0.390625 0 -0.703125 0.234375q-0.296875 0.234375 -0.421875 0.640625q-0.203125 0.625 -0.203125 1.359375l0 3.625l-1.171875 0zm6.3759155 0l-2.625 -6.90625l1.234375 0l1.484375 4.140625q0.234375 0.65625 0.4375 1.390625q0.15625 -0.546875 0.4375 -1.3125l1.53125 -4.21875l1.21875 0l-2.625 6.90625l-1.09375 0zm9.4765625 -2.21875l1.203125 0.140625q-0.28125 1.0625 -1.0625 1.65625q-0.765625 0.578125 -1.96875 0.578125q-1.515625 0 -2.40625 -0.9375q-0.890625 -0.9375 -0.890625 -2.609375q0 -1.75 0.890625 -2.703125q0.90625 -0.96875 2.34375 -0.96875q1.390625 0 2.265625 0.9375q0.875 0.9375 0.875 2.65625q0 0.109375 0 0.3125l-5.15625 0q0.0625 1.140625 0.640625 1.75q0.578125 0.59375 1.4375 0.59375q0.65625 0 1.109375 -0.328125q0.453125 -0.34375 0.71875 -1.078125zm-3.84375 -1.90625l3.859375 0q-0.078125 -0.859375 -0.4375 -1.296875q-0.5625 -0.6875 -1.453125 -0.6875q-0.8125 0 -1.359375 0.546875q-0.546875 0.53125 -0.609375 1.4375zm6.5062256 4.125l0 -6.90625l1.0625 0l0 1.046875q0.40625 -0.734375 0.734375 -0.96875q0.34375 -0.234375 0.765625 -0.234375q0.59375 0 1.203125 0.375l-0.40625 1.078125q-0.4375 -0.25 -0.859375 -0.25q-0.390625 0 -0.703125 0.234375q-0.296875 0.234375 -0.421875 0.640625q-0.203125 0.625 -0.203125 1.359375l0 3.625l-1.171875 0z" fill-rule="nonzero"/><path fill="#ffffff" d="m629.35675 211.3594q-0.28125 0 -0.484375 -0.1875q-0.203125 -0.1875 -0.203125 -0.515625q0 -0.328125 0.203125 -0.515625q0.203125 -0.203125 0.484375 -0.203125q0.28125 0 0.46875 0.203125q0.203125 0.1875 0.203125 0.515625q0 0.328125 -0.203125 0.515625q-0.1875 0.1875 -0.46875 0.1875zm-0.234375 1.515625l-1.421875 0l0 -0.734375l2.296875 0l0 3.03125q0 0.734375 0.203125 0.984375q0.203125 0.25 0.609375 0.25q0.3125 0 0.5625 -0.078125q0.265625 -0.078125 0.421875 -0.15625l0.125 0.75q-0.0625 0.03125 -0.1875 0.078125q-0.109375 0.046875 -0.265625 0.078125q-0.15625 0.046875 -0.34375 0.078125q-0.1875 0.046875 -0.390625 0.046875q-0.46875 0 -0.78125 -0.125q-0.296875 -0.140625 -0.484375 -0.390625q-0.1875 -0.265625 -0.265625 -0.640625q-0.078125 -0.375 -0.078125 -0.875l0 -2.296875zm8.234436 1.734375q0 0.578125 -0.171875 1.0625q-0.15625 0.46875 -0.46875 0.8125q-0.296875 0.34375 -0.71875 0.53125q-0.40625 0.1875 -0.890625 0.1875q-0.484375 0 -0.890625 -0.1875q-0.40625 -0.1875 -0.71875 -0.53125q-0.296875 -0.34375 -0.46875 -0.8125q-0.15625 -0.484375 -0.15625 -1.0625q0 -0.59375 0.15625 -1.0625q0.171875 -0.484375 0.46875 -0.8125q0.3125 -0.34375 0.71875 -0.53125q0.40625 -0.1875 0.890625 -0.1875q0.484375 0 0.890625 0.1875q0.421875 0.1875 0.71875 0.53125q0.3125 0.328125 0.46875 0.8125q0.171875 0.46875 0.171875 1.0625zm-0.90625 0q0 -0.84375 -0.375 -1.328125q-0.359375 -0.484375 -0.96875 -0.484375q-0.609375 0 -0.96875 0.484375q-0.359375 0.484375 -0.359375 1.328125q0 0.828125 0.359375 1.3125q0.359375 0.484375 0.96875 0.484375q0.609375 0 0.96875 -0.484375q0.375 -0.484375 0.375 -1.3125zm5.328186 0q0 -0.859375 -0.40625 -1.328125q-0.40625 -0.46875 -1.0625 -0.46875q-0.359375 0 -0.5625 0.03125q-0.203125 0.03125 -0.328125 0.0625l0 3.125q0.15625 0.140625 0.4375 0.265625q0.28125 0.109375 0.59375 0.109375q0.359375 0 0.609375 -0.140625q0.25 -0.140625 0.40625 -0.375q0.15625 -0.234375 0.234375 -0.5625q0.078125 -0.328125 0.078125 -0.71875zm0.90625 0q0 0.578125 -0.15625 1.046875q-0.140625 0.46875 -0.40625 0.8125q-0.265625 0.34375 -0.671875 0.546875q-0.390625 0.1875 -0.890625 0.1875q-0.390625 0 -0.6875 -0.109375q-0.296875 -0.09375 -0.453125 -0.203125l0 1.953125l-0.890625 0l0 -6.5625q0.296875 -0.078125 0.75 -0.15625q0.453125 -0.09375 1.03125 -0.09375q0.53125 0 0.96875 0.1875q0.4375 0.171875 0.75 0.515625q0.3125 0.328125 0.484375 0.8125q0.171875 0.46875 0.171875 1.0625zm4.156311 1.234375q0 -0.265625 -0.21875 -0.4375q-0.21875 -0.171875 -0.546875 -0.296875q-0.3125 -0.125 -0.703125 -0.25q-0.375 -0.125 -0.703125 -0.296875q-0.328125 -0.1875 -0.546875 -0.453125q-0.21875 -0.265625 -0.21875 -0.703125q0 -0.59375 0.484375 -0.984375q0.484375 -0.40625 1.515625 -0.40625q0.40625 0 0.84375 0.0625q0.4375 0.0625 0.734375 0.15625l-0.15625 0.78125q-0.078125 -0.046875 -0.234375 -0.09375q-0.140625 -0.046875 -0.34375 -0.078125q-0.1875 -0.03125 -0.40625 -0.046875q-0.21875 -0.03125 -0.421875 -0.03125q-1.15625 0 -1.15625 0.625q0 0.21875 0.21875 0.375q0.21875 0.15625 0.546875 0.28125q0.34375 0.125 0.71875 0.265625q0.390625 0.140625 0.71875 0.328125q0.328125 0.1875 0.546875 0.46875q0.21875 0.265625 0.21875 0.671875q0 0.671875 -0.53125 1.046875q-0.515625 0.375 -1.640625 0.375q-0.515625 0 -0.9375 -0.09375q-0.421875 -0.078125 -0.8125 -0.25l0.171875 -0.796875q0.375 0.15625 0.78125 0.28125q0.40625 0.109375 0.875 0.109375q1.203125 0 1.203125 -0.609375zm3.078186 -1.890625l2.359375 0l0 0.828125l-2.359375 0l0 -0.828125zm5.484436 -1.640625q0.15625 -0.09375 0.453125 -0.1875q0.3125 -0.109375 0.6875 -0.109375q0.5 0 0.890625 0.203125q0.40625 0.1875 0.671875 0.53125q0.265625 0.328125 0.40625 0.8125q0.15625 0.46875 0.15625 1.046875q0 0.59375 -0.171875 1.078125q-0.171875 0.46875 -0.484375 0.8125q-0.3125 0.328125 -0.75 0.515625q-0.4375 0.1875 -0.96875 0.1875q-0.578125 0 -1.046875 -0.09375q-0.453125 -0.078125 -0.734375 -0.171875l0 -7.09375l0.890625 -0.15625l0 2.625zm0 4.0q0.203125 0.046875 0.40625 0.078125q0.203125 0.03125 0.375 0.03125q0.75 0 1.15625 -0.453125q0.421875 -0.453125 0.421875 -1.359375q0 -0.390625 -0.078125 -0.71875q-0.078125 -0.34375 -0.234375 -0.578125q-0.15625 -0.234375 -0.40625 -0.375q-0.25 -0.140625 -0.609375 -0.140625q-0.3125 0 -0.59375 0.125q-0.28125 0.125 -0.4375 0.25l0 3.140625zm4.234436 1.6875q0.09375 0.0625 0.265625 0.09375q0.171875 0.03125 0.328125 0.03125q0.515625 0 0.8125 -0.234375q0.296875 -0.21875 0.546875 -0.75q-0.609375 -1.125 -1.125 -2.421875q-0.515625 -1.296875 -0.859375 -2.578125l0.953125 0q0.109375 0.421875 0.25 0.921875q0.140625 0.484375 0.328125 1.015625q0.1875 0.515625 0.390625 1.046875q0.203125 0.53125 0.4375 1.0q0.171875 -0.484375 0.3125 -0.953125q0.15625 -0.484375 0.28125 -0.96875q0.140625 -0.5 0.265625 -1.0q0.125 -0.5 0.265625 -1.0625l0.90625 0q-0.328125 1.375 -0.75 2.6875q-0.421875 1.296875 -0.90625 2.40625q-0.1875 0.421875 -0.390625 0.71875q-0.203125 0.3125 -0.453125 0.515625q-0.25 0.203125 -0.5625 0.296875q-0.296875 0.109375 -0.6875 0.109375q-0.203125 0 -0.453125 -0.0625q-0.234375 -0.046875 -0.3125 -0.09375l0.15625 -0.71875zm6.265686 -4.046875l2.359375 0l0 0.828125l-2.359375 0l0 -0.828125zm7.578186 1.890625q0 -0.265625 -0.21875 -0.4375q-0.21875 -0.171875 -0.546875 -0.296875q-0.3125 -0.125 -0.703125 -0.25q-0.375 -0.125 -0.703125 -0.296875q-0.328125 -0.1875 -0.546875 -0.453125q-0.21875 -0.265625 -0.21875 -0.703125q0 -0.59375 0.484375 -0.984375q0.484375 -0.40625 1.515625 -0.40625q0.40625 0 0.84375 0.0625q0.4375 0.0625 0.734375 0.15625l-0.15625 0.78125q-0.078125 -0.046875 -0.234375 -0.09375q-0.140625 -0.046875 -0.34375 -0.078125q-0.1875 -0.03125 -0.40625 -0.046875q-0.21875 -0.03125 -0.421875 -0.03125q-1.15625 0 -1.15625 0.625q0 0.21875 0.21875 0.375q0.21875 0.15625 0.546875 0.28125q0.34375 0.125 0.71875 0.265625q0.390625 0.140625 0.71875 0.328125q0.328125 0.1875 0.546875 0.46875q0.21875 0.265625 0.21875 0.671875q0 0.671875 -0.53125 1.046875q-0.515625 0.375 -1.640625 0.375q-0.515625 0 -0.9375 -0.09375q-0.421875 -0.078125 -0.8125 -0.25l0.171875 -0.796875q0.375 0.15625 0.78125 0.28125q0.40625 0.109375 0.875 0.109375q1.203125 0 1.203125 -0.609375zm4.359436 -3.828125q1.0 0 1.53125 0.625q0.546875 0.625 0.546875 1.890625l0 0.3125l-3.53125 0q0.046875 0.765625 0.5 1.171875q0.453125 0.390625 1.28125 0.390625q0.46875 0 0.796875 -0.078125q0.328125 -0.078125 0.5 -0.15625l0.109375 0.75q-0.15625 0.078125 -0.578125 0.171875q-0.40625 0.109375 -0.921875 0.109375q-0.640625 0 -1.125 -0.203125q-0.484375 -0.203125 -0.8125 -0.53125q-0.3125 -0.34375 -0.484375 -0.8125q-0.15625 -0.484375 -0.15625 -1.046875q0 -0.65625 0.203125 -1.140625q0.203125 -0.5 0.53125 -0.8125q0.328125 -0.3125 0.75 -0.46875q0.421875 -0.171875 0.859375 -0.171875zm1.1875 2.109375q0 -0.625 -0.328125 -0.984375q-0.328125 -0.375 -0.875 -0.375q-0.3125 0 -0.5625 0.125q-0.25 0.109375 -0.4375 0.296875q-0.171875 0.1875 -0.28125 0.4375q-0.109375 0.25 -0.140625 0.5l2.625 0zm2.515686 2.953125l0 -4.671875q1.09375 -0.375 2.1875 -0.375q0.34375 0 0.65625 0.03125q0.3125 0.015625 0.6875 0.109375l-0.171875 0.765625q-0.328125 -0.09375 -0.59375 -0.109375q-0.265625 -0.03125 -0.578125 -0.03125q-0.640625 0 -1.3125 0.171875l0 4.109375l-0.875 0zm9.203186 -4.9375q-0.203125 0.6875 -0.453125 1.359375q-0.234375 0.65625 -0.5 1.296875q-0.25 0.625 -0.515625 1.203125q-0.265625 0.578125 -0.515625 1.078125l-0.796875 0q-0.5 -1.0 -1.015625 -2.28125q-0.5 -1.28125 -0.90625 -2.65625l0.96875 0q0.125 0.46875 0.28125 0.984375q0.171875 0.515625 0.34375 1.046875q0.1875 0.515625 0.375 1.0q0.1875 0.484375 0.375 0.875q0.171875 -0.390625 0.375 -0.875q0.203125 -0.484375 0.390625 -1.0q0.1875 -0.53125 0.359375 -1.046875q0.1875 -0.515625 0.3125 -0.984375l0.921875 0zm3.078186 -0.125q1.0 0 1.53125 0.625q0.546875 0.625 0.546875 1.890625l0 0.3125l-3.53125 0q0.046875 0.765625 0.5 1.171875q0.453125 0.390625 1.28125 0.390625q0.46875 0 0.796875 -0.078125q0.328125 -0.078125 0.5 -0.15625l0.109375 0.75q-0.15625 0.078125 -0.578125 0.171875q-0.40625 0.109375 -0.921875 0.109375q-0.640625 0 -1.125 -0.203125q-0.484375 -0.203125 -0.8125 -0.53125q-0.3125 -0.34375 -0.484375 -0.8125q-0.15625 -0.484375 -0.15625 -1.046875q0 -0.65625 0.203125 -1.140625q0.203125 -0.5 0.53125 -0.8125q0.328125 -0.3125 0.75 -0.46875q0.421875 -0.171875 0.859375 -0.171875zm1.1875 2.109375q0 -0.625 -0.328125 -0.984375q-0.328125 -0.375 -0.875 -0.375q-0.3125 0 -0.5625 0.125q-0.25 0.109375 -0.4375 0.296875q-0.171875 0.1875 -0.28125 0.4375q-0.109375 0.25 -0.140625 0.5l2.625 0zm2.515686 2.953125l0 -4.671875q1.09375 -0.375 2.1875 -0.375q0.34375 0 0.65625 0.03125q0.3125 0.015625 0.6875 0.109375l-0.171875 0.765625q-0.328125 -0.09375 -0.59375 -0.109375q-0.265625 -0.03125 -0.578125 -0.03125q-0.640625 0 -1.3125 0.171875l0 4.109375l-0.875 0zm7.640686 -0.6875q0 0.328125 -0.21875 0.578125q-0.203125 0.234375 -0.5625 0.234375q-0.359375 0 -0.578125 -0.234375q-0.203125 -0.25 -0.203125 -0.578125q0 -0.328125 0.203125 -0.5625q0.21875 -0.25 0.578125 -0.25q0.359375 0 0.5625 0.25q0.21875 0.234375 0.21875 0.5625zm5.156311 -5.03125q-0.28125 0 -0.484375 -0.1875q-0.203125 -0.1875 -0.203125 -0.515625q0 -0.328125 0.203125 -0.515625q0.203125 -0.203125 0.484375 -0.203125q0.28125 0 0.484375 0.203125q0.203125 0.1875 0.203125 0.515625q0 0.328125 -0.203125 0.515625q-0.203125 0.1875 -0.484375 0.1875zm-2.0625 1.515625l0 -0.734375l2.875 0l0 4.890625q0 0.5 -0.15625 0.859375q-0.140625 0.359375 -0.375 0.578125q-0.234375 0.234375 -0.546875 0.328125q-0.3125 0.09375 -0.671875 0.09375q-0.40625 0 -0.8125 -0.09375q-0.40625 -0.078125 -0.78125 -0.265625l0.265625 -0.734375q0.28125 0.125 0.59375 0.203125q0.328125 0.09375 0.625 0.09375q0.4375 0 0.703125 -0.21875q0.28125 -0.203125 0.28125 -0.84375l0 -4.15625l-2.0 0zm7.843811 2.96875q0 -0.265625 -0.21875 -0.4375q-0.21875 -0.171875 -0.546875 -0.296875q-0.3125 -0.125 -0.703125 -0.25q-0.375 -0.125 -0.703125 -0.296875q-0.328125 -0.1875 -0.546875 -0.453125q-0.21875 -0.265625 -0.21875 -0.703125q0 -0.59375 0.484375 -0.984375q0.484375 -0.40625 1.515625 -0.40625q0.40625 0 0.84375 0.0625q0.4375 0.0625 0.734375 0.15625l-0.15625 0.78125q-0.078125 -0.046875 -0.234375 -0.09375q-0.140625 -0.046875 -0.34375 -0.078125q-0.1875 -0.03125 -0.40625 -0.046875q-0.21875 -0.03125 -0.421875 -0.03125q-1.15625 0 -1.15625 0.625q0 0.21875 0.21875 0.375q0.21875 0.15625 0.546875 0.28125q0.34375 0.125 0.71875 0.265625q0.390625 0.140625 0.71875 0.328125q0.328125 0.1875 0.546875 0.46875q0.21875 0.265625 0.21875 0.671875q0 0.671875 -0.53125 1.046875q-0.515625 0.375 -1.640625 0.375q-0.515625 0 -0.9375 -0.09375q-0.421875 -0.078125 -0.8125 -0.25l0.171875 -0.796875q0.375 0.15625 0.78125 0.28125q0.40625 0.109375 0.875 0.109375q1.203125 0 1.203125 -0.609375zm6.500061 -1.234375q0 0.578125 -0.171875 1.0625q-0.15625 0.46875 -0.46875 0.8125q-0.296875 0.34375 -0.71875 0.53125q-0.40625 0.1875 -0.890625 0.1875q-0.484375 0 -0.890625 -0.1875q-0.40625 -0.1875 -0.71875 -0.53125q-0.296875 -0.34375 -0.46875 -0.8125q-0.15625 -0.484375 -0.15625 -1.0625q0 -0.59375 0.15625 -1.0625q0.171875 -0.484375 0.46875 -0.8125q0.3125 -0.34375 0.71875 -0.53125q0.40625 -0.1875 0.890625 -0.1875q0.484375 0 0.890625 0.1875q0.421875 0.1875 0.71875 0.53125q0.3125 0.328125 0.46875 0.8125q0.171875 0.46875 0.171875 1.0625zm-0.90625 0q0 -0.84375 -0.375 -1.328125q-0.359375 -0.484375 -0.96875 -0.484375q-0.609375 0 -0.96875 0.484375q-0.359375 0.484375 -0.359375 1.328125q0 0.828125 0.359375 1.3125q0.359375 0.484375 0.96875 0.484375q0.609375 0 0.96875 -0.484375q0.375 -0.484375 0.375 -1.3125zm2.078186 -2.34375q0.484375 -0.109375 0.953125 -0.171875q0.484375 -0.0625 0.890625 -0.0625q1.0 0 1.5 0.515625q0.515625 0.5 0.515625 1.625l0 2.90625l-0.875 0l0 -2.734375q0 -0.484375 -0.09375 -0.78125q-0.078125 -0.296875 -0.234375 -0.453125q-0.15625 -0.171875 -0.375 -0.234375q-0.21875 -0.0625 -0.46875 -0.0625q-0.21875 0 -0.46875 0.03125q-0.234375 0.015625 -0.453125 0.0625l0 4.171875l-0.890625 0l0 -4.8125z" fill-rule="nonzero"/><path fill="#6aa84f" d="m595.77167 108.30265l163.93701 0l0 48.69291l-163.93701 0z" fill-rule="evenodd"/><path stroke="#38761d" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m595.77167 108.30265l163.93701 0l0 48.69291l-163.93701 0z" fill-rule="evenodd"/><path fill="#ffffff" d="m649.1476 122.949104l0 -9.546875l3.28125 0q1.109375 0 1.703125 0.140625q0.8125 0.1875 1.390625 0.6875q0.765625 0.640625 1.140625 1.640625q0.375 0.984375 0.375 2.25q0 1.09375 -0.265625 1.9375q-0.25 0.828125 -0.65625 1.390625q-0.390625 0.546875 -0.859375 0.859375q-0.46875 0.3125 -1.140625 0.484375q-0.65625 0.15625 -1.53125 0.15625l-3.4375 0zm1.265625 -1.125l2.03125 0q0.9375 0 1.46875 -0.171875q0.546875 -0.1875 0.875 -0.5q0.4375 -0.453125 0.6875 -1.203125q0.25 -0.765625 0.25 -1.84375q0 -1.5 -0.5 -2.296875q-0.484375 -0.8125 -1.1875 -1.078125q-0.5 -0.203125 -1.625 -0.203125l-2.0 0l0 7.296875zm8.218872 -7.0625l0 -1.359375l1.171875 0l0 1.359375l-1.171875 0zm0 8.1875l0 -6.90625l1.171875 0l0 6.90625l-1.171875 0zm2.4767456 -2.0625l1.15625 -0.1875q0.109375 0.703125 0.546875 1.078125q0.453125 0.359375 1.25 0.359375q0.8125 0 1.203125 -0.328125q0.390625 -0.328125 0.390625 -0.765625q0 -0.390625 -0.359375 -0.625q-0.234375 -0.15625 -1.1875 -0.390625q-1.296875 -0.328125 -1.796875 -0.5625q-0.484375 -0.25 -0.75 -0.65625q-0.25 -0.421875 -0.25 -0.9375q0 -0.453125 0.203125 -0.84375q0.21875 -0.40625 0.578125 -0.671875q0.28125 -0.1875 0.75 -0.328125q0.46875 -0.140625 1.015625 -0.140625q0.8125 0 1.421875 0.234375q0.609375 0.234375 0.90625 0.640625q0.296875 0.390625 0.40625 1.0625l-1.140625 0.15625q-0.078125 -0.53125 -0.453125 -0.828125q-0.375 -0.3125 -1.0625 -0.3125q-0.8125 0 -1.15625 0.265625q-0.34375 0.265625 -0.34375 0.625q0 0.234375 0.140625 0.421875q0.15625 0.1875 0.453125 0.3125q0.171875 0.0625 1.03125 0.296875q1.25 0.328125 1.734375 0.546875q0.5 0.203125 0.78125 0.609375q0.28125 0.40625 0.28125 1.0q0 0.59375 -0.34375 1.109375q-0.34375 0.515625 -1.0 0.796875q-0.640625 0.28125 -1.453125 0.28125q-1.34375 0 -2.046875 -0.5625q-0.703125 -0.5625 -0.90625 -1.65625zm7.1484375 2.0625l0 -9.546875l1.171875 0l0 5.453125l2.765625 -2.8125l1.515625 0l-2.640625 2.5625l2.90625 4.34375l-1.4375 0l-2.28125 -3.53125l-0.828125 0.796875l0 2.734375l-1.171875 0zm10.445129 0l0 -9.546875l3.59375 0q1.09375 0 1.75 0.296875q0.65625 0.28125 1.03125 0.890625q0.375 0.609375 0.375 1.265625q0 0.609375 -0.34375 1.15625q-0.328125 0.53125 -0.984375 0.859375q0.859375 0.25 1.328125 0.875q0.46875 0.609375 0.46875 1.4375q0 0.671875 -0.296875 1.25q-0.28125 0.578125 -0.703125 0.890625q-0.40625 0.3125 -1.03125 0.46875q-0.625 0.15625 -1.546875 0.15625l-3.640625 0zm1.265625 -5.53125l2.0625 0q0.84375 0 1.203125 -0.109375q0.484375 -0.140625 0.71875 -0.46875q0.25 -0.34375 0.25 -0.84375q0 -0.46875 -0.234375 -0.828125q-0.21875 -0.359375 -0.640625 -0.5q-0.421875 -0.140625 -1.453125 -0.140625l-1.90625 0l0 2.890625zm0 4.40625l2.375 0q0.609375 0 0.859375 -0.046875q0.4375 -0.078125 0.734375 -0.25q0.296875 -0.1875 0.484375 -0.53125q0.1875 -0.359375 0.1875 -0.8125q0 -0.53125 -0.28125 -0.921875q-0.265625 -0.40625 -0.75 -0.5625q-0.484375 -0.15625 -1.40625 -0.15625l-2.203125 0l0 3.28125zm12.0616455 1.125l0 -1.015625q-0.8125 1.171875 -2.1875 1.171875q-0.609375 0 -1.140625 -0.234375q-0.53125 -0.234375 -0.796875 -0.578125q-0.25 -0.359375 -0.359375 -0.875q-0.0625 -0.34375 -0.0625 -1.09375l0 -4.28125l1.171875 0l0 3.828125q0 0.921875 0.0625 1.234375q0.109375 0.46875 0.46875 0.734375q0.359375 0.25 0.890625 0.25q0.515625 0 0.984375 -0.265625q0.46875 -0.265625 0.65625 -0.734375q0.1875 -0.46875 0.1875 -1.34375l0 -3.703125l1.171875 0l0 6.90625l-1.046875 0zm2.4124756 -2.0625l1.15625 -0.1875q0.109375 0.703125 0.546875 1.078125q0.453125 0.359375 1.25 0.359375q0.8125 0 1.203125 -0.328125q0.390625 -0.328125 0.390625 -0.765625q0 -0.390625 -0.359375 -0.625q-0.234375 -0.15625 -1.1875 -0.390625q-1.296875 -0.328125 -1.796875 -0.5625q-0.484375 -0.25 -0.75 -0.65625q-0.25 -0.421875 -0.25 -0.9375q0 -0.453125 0.203125 -0.84375q0.21875 -0.40625 0.578125 -0.671875q0.28125 -0.1875 0.75 -0.328125q0.46875 -0.140625 1.015625 -0.140625q0.8125 0 1.421875 0.234375q0.609375 0.234375 0.90625 0.640625q0.296875 0.390625 0.40625 1.0625l-1.140625 0.15625q-0.078125 -0.53125 -0.453125 -0.828125q-0.375 -0.3125 -1.0625 -0.3125q-0.8125 0 -1.15625 0.265625q-0.34375 0.265625 -0.34375 0.625q0 0.234375 0.140625 0.421875q0.15625 0.1875 0.453125 0.3125q0.171875 0.0625 1.03125 0.296875q1.25 0.328125 1.734375 0.546875q0.5 0.203125 0.78125 0.609375q0.28125 0.40625 0.28125 1.0q0 0.59375 -0.34375 1.109375q-0.34375 0.515625 -1.0 0.796875q-0.640625 0.28125 -1.453125 0.28125q-1.34375 0 -2.046875 -0.5625q-0.703125 -0.5625 -0.90625 -1.65625zm7.0859375 4.71875l-0.125 -1.09375q0.375 0.109375 0.65625 0.109375q0.390625 0 0.625 -0.140625q0.234375 -0.125 0.390625 -0.359375q0.109375 -0.171875 0.359375 -0.875q0.03125 -0.09375 0.109375 -0.28125l-2.625 -6.921875l1.265625 0l1.4375 4.0q0.28125 0.765625 0.5 1.59375q0.203125 -0.796875 0.46875 -1.578125l1.484375 -4.015625l1.171875 0l-2.625 7.015625q-0.421875 1.140625 -0.65625 1.578125q-0.3125 0.578125 -0.71875 0.84375q-0.40625 0.28125 -0.96875 0.28125q-0.328125 0 -0.75 -0.15625z" fill-rule="nonzero"/><path fill="#ffffff" d="m651.1758 138.9491l-1.078125 0l0 -9.546875l1.171875 0l0 3.40625q0.734375 -0.921875 1.890625 -0.921875q0.640625 0 1.203125 0.265625q0.578125 0.25 0.9375 0.71875q0.375 0.453125 0.578125 1.109375q0.203125 0.65625 0.203125 1.40625q0 1.78125 -0.875 2.75q-0.875 0.96875 -2.109375 0.96875q-1.21875 0 -1.921875 -1.015625l0 0.859375zm0 -3.5q0 1.234375 0.328125 1.78125q0.5625 0.90625 1.5 0.90625q0.765625 0 1.328125 -0.65625q0.5625 -0.671875 0.5625 -2.0q0 -1.34375 -0.546875 -1.984375q-0.53125 -0.65625 -1.296875 -0.65625q-0.765625 0 -1.328125 0.671875q-0.546875 0.671875 -0.546875 1.9375zm6.2874756 6.15625l-0.125 -1.09375q0.375 0.109375 0.65625 0.109375q0.390625 0 0.625 -0.140625q0.234375 -0.125 0.390625 -0.359375q0.109375 -0.171875 0.359375 -0.875q0.03125 -0.09375 0.109375 -0.28125l-2.625 -6.921875l1.265625 0l1.4375 4.0q0.28125 0.765625 0.5 1.59375q0.203125 -0.796875 0.46875 -1.578125l1.484375 -4.015625l1.171875 0l-2.625 7.015625q-0.421875 1.140625 -0.65625 1.578125q-0.3125 0.578125 -0.71875 0.84375q-0.40625 0.28125 -0.96875 0.28125q-0.328125 0 -0.75 -0.15625zm10.13269 -5.71875l1.203125 -0.109375q0.078125 0.71875 0.390625 1.1875q0.3125 0.453125 0.953125 0.734375q0.65625 0.28125 1.46875 0.28125q0.71875 0 1.265625 -0.21875q0.5625 -0.21875 0.828125 -0.578125q0.265625 -0.375 0.265625 -0.828125q0 -0.453125 -0.265625 -0.78125q-0.25 -0.328125 -0.84375 -0.5625q-0.390625 -0.15625 -1.703125 -0.46875q-1.3125 -0.3125 -1.84375 -0.59375q-0.671875 -0.359375 -1.015625 -0.890625q-0.328125 -0.53125 -0.328125 -1.1875q0 -0.71875 0.40625 -1.34375q0.40625 -0.625 1.1875 -0.953125q0.796875 -0.328125 1.765625 -0.328125q1.046875 0 1.859375 0.34375q0.8125 0.34375 1.25 1.015625q0.4375 0.65625 0.46875 1.484375l-1.203125 0.09375q-0.109375 -0.90625 -0.671875 -1.359375q-0.5625 -0.46875 -1.65625 -0.46875q-1.140625 0 -1.671875 0.421875q-0.515625 0.421875 -0.515625 1.015625q0 0.515625 0.359375 0.84375q0.375 0.328125 1.90625 0.6875q1.546875 0.34375 2.109375 0.59375q0.84375 0.390625 1.234375 0.984375q0.390625 0.578125 0.390625 1.359375q0 0.75 -0.4375 1.4375q-0.421875 0.671875 -1.25 1.046875q-0.8125 0.359375 -1.828125 0.359375q-1.296875 0 -2.171875 -0.375q-0.875 -0.375 -1.375 -1.125q-0.5 -0.765625 -0.53125 -1.71875zm13.905334 0.84375l1.203125 0.140625q-0.28125 1.0625 -1.0625 1.65625q-0.765625 0.578125 -1.96875 0.578125q-1.515625 0 -2.40625 -0.9375q-0.890625 -0.9375 -0.890625 -2.609375q0 -1.75 0.890625 -2.703125q0.90625 -0.96875 2.34375 -0.96875q1.390625 0 2.265625 0.9375q0.875 0.9375 0.875 2.65625q0 0.109375 0 0.3125l-5.15625 0q0.0625 1.140625 0.640625 1.75q0.578125 0.59375 1.4375 0.59375q0.65625 0 1.109375 -0.328125q0.453125 -0.34375 0.71875 -1.078125zm-3.84375 -1.90625l3.859375 0q-0.078125 -0.859375 -0.4375 -1.296875q-0.5625 -0.6875 -1.453125 -0.6875q-0.8125 0 -1.359375 0.546875q-0.546875 0.53125 -0.609375 1.4375zm6.5062256 4.125l0 -6.90625l1.0625 0l0 1.046875q0.40625 -0.734375 0.734375 -0.96875q0.34375 -0.234375 0.765625 -0.234375q0.59375 0 1.203125 0.375l-0.40625 1.078125q-0.4375 -0.25 -0.859375 -0.25q-0.390625 0 -0.703125 0.234375q-0.296875 0.234375 -0.421875 0.640625q-0.203125 0.625 -0.203125 1.359375l0 3.625l-1.171875 0zm6.3759155 0l-2.625 -6.90625l1.234375 0l1.484375 4.140625q0.234375 0.65625 0.4375 1.390625q0.15625 -0.546875 0.4375 -1.3125l1.53125 -4.21875l1.21875 0l-2.625 6.90625l-1.09375 0zm9.4765625 -2.21875l1.203125 0.140625q-0.28125 1.0625 -1.0625 1.65625q-0.765625 0.578125 -1.96875 0.578125q-1.515625 0 -2.40625 -0.9375q-0.890625 -0.9375 -0.890625 -2.609375q0 -1.75 0.890625 -2.703125q0.90625 -0.96875 2.34375 -0.96875q1.390625 0 2.265625 0.9375q0.875 0.9375 0.875 2.65625q0 0.109375 0 0.3125l-5.15625 0q0.0625 1.140625 0.640625 1.75q0.578125 0.59375 1.4375 0.59375q0.65625 0 1.109375 -0.328125q0.453125 -0.34375 0.71875 -1.078125zm-3.84375 -1.90625l3.859375 0q-0.078125 -0.859375 -0.4375 -1.296875q-0.5625 -0.6875 -1.453125 -0.6875q-0.8125 0 -1.359375 0.546875q-0.546875 0.53125 -0.609375 1.4375zm6.5062256 4.125l0 -6.90625l1.0625 0l0 1.046875q0.40625 -0.734375 0.734375 -0.96875q0.34375 -0.234375 0.765625 -0.234375q0.59375 0 1.203125 0.375l-0.40625 1.078125q-0.4375 -0.25 -0.859375 -0.25q-0.390625 0 -0.703125 0.234375q-0.296875 0.234375 -0.421875 0.640625q-0.203125 0.625 -0.203125 1.359375l0 3.625l-1.171875 0z" fill-rule="nonzero"/><path fill="#ffffff" d="m617.48944 148.48285q-0.15625 -0.125 -0.4375 -0.25q-0.28125 -0.125 -0.59375 -0.125q-0.359375 0 -0.609375 0.140625q-0.25 0.140625 -0.40625 0.375q-0.15625 0.234375 -0.234375 0.578125q-0.078125 0.328125 -0.078125 0.71875q0 0.859375 0.40625 1.328125q0.40625 0.46875 1.0625 0.46875q0.328125 0 0.546875 -0.03125q0.234375 -0.03125 0.34375 -0.0625l0 -3.140625zm0 -3.328125l0.890625 -0.15625l0 7.25q-0.296875 0.09375 -0.75 0.171875q-0.4375 0.09375 -1.03125 0.09375q-0.53125 0 -0.96875 -0.1875q-0.4375 -0.1875 -0.75 -0.515625q-0.3125 -0.34375 -0.484375 -0.8125q-0.171875 -0.484375 -0.171875 -1.078125q0 -0.578125 0.140625 -1.046875q0.15625 -0.484375 0.421875 -0.8125q0.28125 -0.34375 0.671875 -0.53125q0.390625 -0.203125 0.890625 -0.203125q0.390625 0 0.6875 0.09375q0.296875 0.09375 0.453125 0.203125l0 -2.46875zm3.875061 1.515625q-0.28125 0 -0.484375 -0.1875q-0.203125 -0.1875 -0.203125 -0.515625q0 -0.328125 0.203125 -0.515625q0.203125 -0.203125 0.484375 -0.203125q0.28125 0 0.46875 0.203125q0.203125 0.1875 0.203125 0.515625q0 0.328125 -0.203125 0.515625q-0.1875 0.1875 -0.46875 0.1875zm-0.234375 1.515625l-1.421875 0l0 -0.734375l2.296875 0l0 3.03125q0 0.734375 0.203125 0.984375q0.203125 0.25 0.609375 0.25q0.3125 0 0.5625 -0.078125q0.265625 -0.078125 0.421875 -0.15625l0.125 0.75q-0.0625 0.03125 -0.1875 0.078125q-0.109375 0.046875 -0.265625 0.078125q-0.15625 0.046875 -0.34375 0.078125q-0.1875 0.046875 -0.390625 0.046875q-0.46875 0 -0.78125 -0.125q-0.296875 -0.140625 -0.484375 -0.390625q-0.1875 -0.265625 -0.265625 -0.640625q-0.078125 -0.375 -0.078125 -0.875l0 -2.296875zm7.062561 2.96875q0 -0.265625 -0.21875 -0.4375q-0.21875 -0.171875 -0.546875 -0.296875q-0.3125 -0.125 -0.703125 -0.25q-0.375 -0.125 -0.703125 -0.296875q-0.328125 -0.1875 -0.546875 -0.453125q-0.21875 -0.265625 -0.21875 -0.703125q0 -0.59375 0.484375 -0.984375q0.484375 -0.40625 1.515625 -0.40625q0.40625 0 0.84375 0.0625q0.4375 0.0625 0.734375 0.15625l-0.15625 0.78125q-0.078125 -0.046875 -0.234375 -0.09375q-0.140625 -0.046875 -0.34375 -0.078125q-0.1875 -0.03125 -0.40625 -0.046875q-0.21875 -0.03125 -0.421875 -0.03125q-1.15625 0 -1.15625 0.625q0 0.21875 0.21875 0.375q0.21875 0.15625 0.546875 0.28125q0.34375 0.125 0.71875 0.265625q0.390625 0.140625 0.71875 0.328125q0.328125 0.1875 0.546875 0.46875q0.21875 0.265625 0.21875 0.671875q0 0.671875 -0.53125 1.046875q-0.515625 0.375 -1.640625 0.375q-0.515625 0 -0.9375 -0.09375q-0.421875 -0.078125 -0.8125 -0.25l0.171875 -0.796875q0.375 0.15625 0.78125 0.28125q0.40625 0.109375 0.875 0.109375q1.203125 0 1.203125 -0.609375zm4.125061 -1.484375q0.296875 0.21875 0.65625 0.546875q0.359375 0.3125 0.71875 0.6875q0.359375 0.375 0.671875 0.765625q0.328125 0.390625 0.515625 0.71875l-1.046875 0q-0.203125 -0.328125 -0.5 -0.671875q-0.296875 -0.34375 -0.640625 -0.65625q-0.328125 -0.328125 -0.671875 -0.59375q-0.328125 -0.265625 -0.59375 -0.453125l0 2.375l-0.890625 0l0 -7.234375l0.890625 -0.15625l0 4.515625q0.59375 -0.515625 1.171875 -1.015625q0.59375 -0.515625 1.0625 -1.046875l1.03125 0q-0.46875 0.53125 -1.109375 1.109375q-0.640625 0.578125 -1.265625 1.109375zm4.281311 -0.40625l2.359375 0l0 0.828125l-2.359375 0l0 -0.828125zm5.484436 -1.640625q0.15625 -0.09375 0.453125 -0.1875q0.3125 -0.109375 0.6875 -0.109375q0.5 0 0.890625 0.203125q0.40625 0.1875 0.671875 0.53125q0.265625 0.328125 0.40625 0.8125q0.15625 0.46875 0.15625 1.046875q0 0.59375 -0.171875 1.078125q-0.171875 0.46875 -0.484375 0.8125q-0.3125 0.328125 -0.75 0.515625q-0.4375 0.1875 -0.96875 0.1875q-0.578125 0 -1.046875 -0.09375q-0.453125 -0.078125 -0.734375 -0.171875l0 -7.09375l0.890625 -0.15625l0 2.625zm0 4.0q0.203125 0.046875 0.40625 0.078125q0.203125 0.03125 0.375 0.03125q0.75 0 1.15625 -0.453125q0.421875 -0.453125 0.421875 -1.359375q0 -0.390625 -0.078125 -0.71875q-0.078125 -0.34375 -0.234375 -0.578125q-0.15625 -0.234375 -0.40625 -0.375q-0.25 -0.140625 -0.609375 -0.140625q-0.3125 0 -0.59375 0.125q-0.28125 0.125 -0.4375 0.25l0 3.140625zm8.265686 0.625q-0.296875 0.078125 -0.78125 0.15625q-0.46875 0.09375 -1.09375 0.09375q-0.578125 0 -0.953125 -0.15625q-0.359375 -0.171875 -0.59375 -0.46875q-0.234375 -0.3125 -0.34375 -0.71875q-0.09375 -0.421875 -0.09375 -0.921875l0 -2.78125l0.875 0l0 2.578125q0 0.921875 0.265625 1.3125q0.28125 0.375 0.921875 0.375q0.140625 0 0.28125 0q0.140625 -0.015625 0.265625 -0.03125q0.140625 -0.015625 0.234375 -0.03125q0.09375 -0.015625 0.125 -0.03125l0 -4.171875l0.890625 0l0 4.796875zm4.484436 -1.09375q0 -0.265625 -0.21875 -0.4375q-0.21875 -0.171875 -0.546875 -0.296875q-0.3125 -0.125 -0.703125 -0.25q-0.375 -0.125 -0.703125 -0.296875q-0.328125 -0.1875 -0.546875 -0.453125q-0.21875 -0.265625 -0.21875 -0.703125q0 -0.59375 0.484375 -0.984375q0.484375 -0.40625 1.515625 -0.40625q0.40625 0 0.84375 0.0625q0.4375 0.0625 0.734375 0.15625l-0.15625 0.78125q-0.078125 -0.046875 -0.234375 -0.09375q-0.140625 -0.046875 -0.34375 -0.078125q-0.1875 -0.03125 -0.40625 -0.046875q-0.21875 -0.03125 -0.421875 -0.03125q-1.15625 0 -1.15625 0.625q0 0.21875 0.21875 0.375q0.21875 0.15625 0.546875 0.28125q0.34375 0.125 0.71875 0.265625q0.390625 0.140625 0.71875 0.328125q0.328125 0.1875 0.546875 0.46875q0.21875 0.265625 0.21875 0.671875q0 0.671875 -0.53125 1.046875q-0.515625 0.375 -1.640625 0.375q-0.515625 0 -0.9375 -0.09375q-0.421875 -0.078125 -0.8125 -0.25l0.171875 -0.796875q0.375 0.15625 0.78125 0.28125q0.40625 0.109375 0.875 0.109375q1.203125 0 1.203125 -0.609375zm2.140686 2.15625q0.09375 0.0625 0.265625 0.09375q0.171875 0.03125 0.328125 0.03125q0.515625 0 0.8125 -0.234375q0.296875 -0.21875 0.546875 -0.75q-0.609375 -1.125 -1.125 -2.421875q-0.515625 -1.296875 -0.859375 -2.578125l0.953125 0q0.109375 0.421875 0.25 0.921875q0.140625 0.484375 0.328125 1.015625q0.1875 0.515625 0.390625 1.046875q0.203125 0.53125 0.4375 1.0q0.171875 -0.484375 0.3125 -0.953125q0.15625 -0.484375 0.28125 -0.96875q0.140625 -0.5 0.265625 -1.0q0.125 -0.5 0.265625 -1.0625l0.90625 0q-0.328125 1.375 -0.75 2.6875q-0.421875 1.296875 -0.90625 2.40625q-0.1875 0.421875 -0.390625 0.71875q-0.203125 0.3125 -0.453125 0.515625q-0.25 0.203125 -0.5625 0.296875q-0.296875 0.109375 -0.6875 0.109375q-0.203125 0 -0.453125 -0.0625q-0.234375 -0.046875 -0.3125 -0.09375l0.15625 -0.71875zm6.265686 -4.046875l2.359375 0l0 0.828125l-2.359375 0l0 -0.828125zm5.484436 -1.640625q0.15625 -0.09375 0.453125 -0.1875q0.3125 -0.109375 0.6875 -0.109375q0.5 0 0.890625 0.203125q0.40625 0.1875 0.671875 0.53125q0.265625 0.328125 0.40625 0.8125q0.15625 0.46875 0.15625 1.046875q0 0.59375 -0.171875 1.078125q-0.171875 0.46875 -0.484375 0.8125q-0.3125 0.328125 -0.75 0.515625q-0.4375 0.1875 -0.96875 0.1875q-0.578125 0 -1.046875 -0.09375q-0.453125 -0.078125 -0.734375 -0.171875l0 -7.09375l0.890625 -0.15625l0 2.625zm0 4.0q0.203125 0.046875 0.40625 0.078125q0.203125 0.03125 0.375 0.03125q0.75 0 1.15625 -0.453125q0.421875 -0.453125 0.421875 -1.359375q0 -0.390625 -0.078125 -0.71875q-0.078125 -0.34375 -0.234375 -0.578125q-0.15625 -0.234375 -0.40625 -0.375q-0.25 -0.140625 -0.609375 -0.140625q-0.3125 0 -0.59375 0.125q-0.28125 0.125 -0.4375 0.25l0 3.140625zm4.234436 1.6875q0.09375 0.0625 0.265625 0.09375q0.171875 0.03125 0.328125 0.03125q0.515625 0 0.8125 -0.234375q0.296875 -0.21875 0.546875 -0.75q-0.609375 -1.125 -1.125 -2.421875q-0.515625 -1.296875 -0.859375 -2.578125l0.953125 0q0.109375 0.421875 0.25 0.921875q0.140625 0.484375 0.328125 1.015625q0.1875 0.515625 0.390625 1.046875q0.203125 0.53125 0.4375 1.0q0.171875 -0.484375 0.3125 -0.953125q0.15625 -0.484375 0.28125 -0.96875q0.140625 -0.5 0.265625 -1.0q0.125 -0.5 0.265625 -1.0625l0.90625 0q-0.328125 1.375 -0.75 2.6875q-0.421875 1.296875 -0.90625 2.40625q-0.1875 0.421875 -0.390625 0.71875q-0.203125 0.3125 -0.453125 0.515625q-0.25 0.203125 -0.5625 0.296875q-0.296875 0.109375 -0.6875 0.109375q-0.203125 0 -0.453125 -0.0625q-0.234375 -0.046875 -0.3125 -0.09375l0.15625 -0.71875zm6.265686 -4.046875l2.359375 0l0 0.828125l-2.359375 0l0 -0.828125zm7.578186 1.890625q0 -0.265625 -0.21875 -0.4375q-0.21875 -0.171875 -0.546875 -0.296875q-0.3125 -0.125 -0.703125 -0.25q-0.375 -0.125 -0.703125 -0.296875q-0.328125 -0.1875 -0.546875 -0.453125q-0.21875 -0.265625 -0.21875 -0.703125q0 -0.59375 0.484375 -0.984375q0.484375 -0.40625 1.515625 -0.40625q0.40625 0 0.84375 0.0625q0.4375 0.0625 0.734375 0.15625l-0.15625 0.78125q-0.078125 -0.046875 -0.234375 -0.09375q-0.140625 -0.046875 -0.34375 -0.078125q-0.1875 -0.03125 -0.40625 -0.046875q-0.21875 -0.03125 -0.421875 -0.03125q-1.15625 0 -1.15625 0.625q0 0.21875 0.21875 0.375q0.21875 0.15625 0.546875 0.28125q0.34375 0.125 0.71875 0.265625q0.390625 0.140625 0.71875 0.328125q0.328125 0.1875 0.546875 0.46875q0.21875 0.265625 0.21875 0.671875q0 0.671875 -0.53125 1.046875q-0.515625 0.375 -1.640625 0.375q-0.515625 0 -0.9375 -0.09375q-0.421875 -0.078125 -0.8125 -0.25l0.171875 -0.796875q0.375 0.15625 0.78125 0.28125q0.40625 0.109375 0.875 0.109375q1.203125 0 1.203125 -0.609375zm4.359436 -3.828125q1.0 0 1.53125 0.625q0.546875 0.625 0.546875 1.890625l0 0.3125l-3.53125 0q0.046875 0.765625 0.5 1.171875q0.453125 0.390625 1.28125 0.390625q0.46875 0 0.796875 -0.078125q0.328125 -0.078125 0.5 -0.15625l0.109375 0.75q-0.15625 0.078125 -0.578125 0.171875q-0.40625 0.109375 -0.921875 0.109375q-0.640625 0 -1.125 -0.203125q-0.484375 -0.203125 -0.8125 -0.53125q-0.3125 -0.34375 -0.484375 -0.8125q-0.15625 -0.484375 -0.15625 -1.046875q0 -0.65625 0.203125 -1.140625q0.203125 -0.5 0.53125 -0.8125q0.328125 -0.3125 0.75 -0.46875q0.421875 -0.171875 0.859375 -0.171875zm1.1875 2.109375q0 -0.625 -0.328125 -0.984375q-0.328125 -0.375 -0.875 -0.375q-0.3125 0 -0.5625 0.125q-0.25 0.109375 -0.4375 0.296875q-0.171875 0.1875 -0.28125 0.4375q-0.109375 0.25 -0.140625 0.5l2.625 0zm2.515686 2.953125l0 -4.671875q1.09375 -0.375 2.1875 -0.375q0.34375 0 0.65625 0.03125q0.3125 0.015625 0.6875 0.109375l-0.171875 0.765625q-0.328125 -0.09375 -0.59375 -0.109375q-0.265625 -0.03125 -0.578125 -0.03125q-0.640625 0 -1.3125 0.171875l0 4.109375l-0.875 0zm9.203186 -4.9375q-0.203125 0.6875 -0.453125 1.359375q-0.234375 0.65625 -0.5 1.296875q-0.25 0.625 -0.515625 1.203125q-0.265625 0.578125 -0.515625 1.078125l-0.796875 0q-0.5 -1.0 -1.015625 -2.28125q-0.5 -1.28125 -0.90625 -2.65625l0.96875 0q0.125 0.46875 0.28125 0.984375q0.171875 0.515625 0.34375 1.046875q0.1875 0.515625 0.375 1.0q0.1875 0.484375 0.375 0.875q0.171875 -0.390625 0.375 -0.875q0.203125 -0.484375 0.390625 -1.0q0.1875 -0.53125 0.359375 -1.046875q0.1875 -0.515625 0.3125 -0.984375l0.921875 0zm3.078186 -0.125q1.0 0 1.53125 0.625q0.546875 0.625 0.546875 1.890625l0 0.3125l-3.53125 0q0.046875 0.765625 0.5 1.171875q0.453125 0.390625 1.28125 0.390625q0.46875 0 0.796875 -0.078125q0.328125 -0.078125 0.5 -0.15625l0.109375 0.75q-0.15625 0.078125 -0.578125 0.171875q-0.40625 0.109375 -0.921875 0.109375q-0.640625 0 -1.125 -0.203125q-0.484375 -0.203125 -0.8125 -0.53125q-0.3125 -0.34375 -0.484375 -0.8125q-0.15625 -0.484375 -0.15625 -1.046875q0 -0.65625 0.203125 -1.140625q0.203125 -0.5 0.53125 -0.8125q0.328125 -0.3125 0.75 -0.46875q0.421875 -0.171875 0.859375 -0.171875zm1.1875 2.109375q0 -0.625 -0.328125 -0.984375q-0.328125 -0.375 -0.875 -0.375q-0.3125 0 -0.5625 0.125q-0.25 0.109375 -0.4375 0.296875q-0.171875 0.1875 -0.28125 0.4375q-0.109375 0.25 -0.140625 0.5l2.625 0zm2.515686 2.953125l0 -4.671875q1.09375 -0.375 2.1875 -0.375q0.34375 0 0.65625 0.03125q0.3125 0.015625 0.6875 0.109375l-0.171875 0.765625q-0.328125 -0.09375 -0.59375 -0.109375q-0.265625 -0.03125 -0.578125 -0.03125q-0.640625 0 -1.3125 0.171875l0 4.109375l-0.875 0zm7.640686 -0.6875q0 0.328125 -0.21875 0.578125q-0.203125 0.234375 -0.5625 0.234375q-0.359375 0 -0.578125 -0.234375q-0.203125 -0.25 -0.203125 -0.578125q0 -0.328125 0.203125 -0.5625q0.21875 -0.25 0.578125 -0.25q0.359375 0 0.5625 0.25q0.21875 0.234375 0.21875 0.5625zm5.156311 -5.03125q-0.28125 0 -0.484375 -0.1875q-0.203125 -0.1875 -0.203125 -0.515625q0 -0.328125 0.203125 -0.515625q0.203125 -0.203125 0.484375 -0.203125q0.28125 0 0.484375 0.203125q0.203125 0.1875 0.203125 0.515625q0 0.328125 -0.203125 0.515625q-0.203125 0.1875 -0.484375 0.1875zm-2.0625 1.515625l0 -0.734375l2.875 0l0 4.890625q0 0.5 -0.15625 0.859375q-0.140625 0.359375 -0.375 0.578125q-0.234375 0.234375 -0.546875 0.328125q-0.3125 0.09375 -0.671875 0.09375q-0.40625 0 -0.8125 -0.09375q-0.40625 -0.078125 -0.78125 -0.265625l0.265625 -0.734375q0.28125 0.125 0.59375 0.203125q0.328125 0.09375 0.625 0.09375q0.4375 0 0.703125 -0.21875q0.28125 -0.203125 0.28125 -0.84375l0 -4.15625l-2.0 0zm7.843811 2.96875q0 -0.265625 -0.21875 -0.4375q-0.21875 -0.171875 -0.546875 -0.296875q-0.3125 -0.125 -0.703125 -0.25q-0.375 -0.125 -0.703125 -0.296875q-0.328125 -0.1875 -0.546875 -0.453125q-0.21875 -0.265625 -0.21875 -0.703125q0 -0.59375 0.484375 -0.984375q0.484375 -0.40625 1.515625 -0.40625q0.40625 0 0.84375 0.0625q0.4375 0.0625 0.734375 0.15625l-0.15625 0.78125q-0.078125 -0.046875 -0.234375 -0.09375q-0.140625 -0.046875 -0.34375 -0.078125q-0.1875 -0.03125 -0.40625 -0.046875q-0.21875 -0.03125 -0.421875 -0.03125q-1.15625 0 -1.15625 0.625q0 0.21875 0.21875 0.375q0.21875 0.15625 0.546875 0.28125q0.34375 0.125 0.71875 0.265625q0.390625 0.140625 0.71875 0.328125q0.328125 0.1875 0.546875 0.46875q0.21875 0.265625 0.21875 0.671875q0 0.671875 -0.53125 1.046875q-0.515625 0.375 -1.640625 0.375q-0.515625 0 -0.9375 -0.09375q-0.421875 -0.078125 -0.8125 -0.25l0.171875 -0.796875q0.375 0.15625 0.78125 0.28125q0.40625 0.109375 0.875 0.109375q1.203125 0 1.203125 -0.609375zm6.500061 -1.234375q0 0.578125 -0.171875 1.0625q-0.15625 0.46875 -0.46875 0.8125q-0.296875 0.34375 -0.71875 0.53125q-0.40625 0.1875 -0.890625 0.1875q-0.484375 0 -0.890625 -0.1875q-0.40625 -0.1875 -0.71875 -0.53125q-0.296875 -0.34375 -0.46875 -0.8125q-0.15625 -0.484375 -0.15625 -1.0625q0 -0.59375 0.15625 -1.0625q0.171875 -0.484375 0.46875 -0.8125q0.3125 -0.34375 0.71875 -0.53125q0.40625 -0.1875 0.890625 -0.1875q0.484375 0 0.890625 0.1875q0.421875 0.1875 0.71875 0.53125q0.3125 0.328125 0.46875 0.8125q0.171875 0.46875 0.171875 1.0625zm-0.90625 0q0 -0.84375 -0.375 -1.328125q-0.359375 -0.484375 -0.96875 -0.484375q-0.609375 0 -0.96875 0.484375q-0.359375 0.484375 -0.359375 1.328125q0 0.828125 0.359375 1.3125q0.359375 0.484375 0.96875 0.484375q0.609375 0 0.96875 -0.484375q0.375 -0.484375 0.375 -1.3125zm2.078186 -2.34375q0.484375 -0.109375 0.953125 -0.171875q0.484375 -0.0625 0.890625 -0.0625q1.0 0 1.5 0.515625q0.515625 0.5 0.515625 1.625l0 2.90625l-0.875 0l0 -2.734375q0 -0.484375 -0.09375 -0.78125q-0.078125 -0.296875 -0.234375 -0.453125q-0.15625 -0.171875 -0.375 -0.234375q-0.21875 -0.0625 -0.46875 -0.0625q-0.21875 0 -0.46875 0.03125q-0.234375 0.015625 -0.453125 0.0625l0 4.171875l-0.890625 0l0 -4.8125z" fill-rule="nonzero"/><path fill="#6aa84f" d="m595.77167 46.333332l163.93701 0l0 48.692913l-163.93701 0z" fill-rule="evenodd"/><path stroke="#38761d" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m595.77167 46.333332l163.93701 0l0 48.692913l-163.93701 0z" fill-rule="evenodd"/><path fill="#ffffff" d="m640.62225 60.97979l0 -9.546875l3.28125 0q1.109375 0 1.703125 0.140625q0.8125 0.1875 1.390625 0.6875q0.765625 0.640625 1.140625 1.640625q0.375 0.984375 0.375 2.25q0 1.09375 -0.265625 1.9375q-0.25 0.828125 -0.65625 1.390625q-0.390625 0.546875 -0.859375 0.859375q-0.46875 0.3125 -1.140625 0.484375q-0.65625 0.15625 -1.53125 0.15625l-3.4375 0zm1.265625 -1.125l2.03125 0q0.9375 0 1.46875 -0.171875q0.546875 -0.1875 0.875 -0.5q0.4375 -0.453125 0.6875 -1.203125q0.25 -0.765625 0.25 -1.84375q0 -1.5 -0.5 -2.296875q-0.484375 -0.8125 -1.1875 -1.078125q-0.5 -0.203125 -1.625 -0.203125l-2.0 0l0 7.296875zm8.218872 -7.0625l0 -1.359375l1.171875 0l0 1.359375l-1.171875 0zm0 8.1875l0 -6.90625l1.171875 0l0 6.90625l-1.171875 0zm2.4767456 -2.0625l1.15625 -0.1875q0.109375 0.703125 0.546875 1.078125q0.453125 0.359375 1.25 0.359375q0.8125 0 1.203125 -0.328125q0.390625 -0.328125 0.390625 -0.765625q0 -0.390625 -0.359375 -0.625q-0.234375 -0.15625 -1.1875 -0.390625q-1.296875 -0.328125 -1.796875 -0.5625q-0.484375 -0.25 -0.75 -0.65625q-0.25 -0.421875 -0.25 -0.9375q0 -0.453125 0.203125 -0.84375q0.21875 -0.40625 0.578125 -0.671875q0.28125 -0.1875 0.75 -0.328125q0.46875 -0.140625 1.015625 -0.140625q0.8125 0 1.421875 0.234375q0.609375 0.234375 0.90625 0.640625q0.296875 0.390625 0.40625 1.0625l-1.140625 0.15625q-0.078125 -0.53125 -0.453125 -0.828125q-0.375 -0.3125 -1.0625 -0.3125q-0.8125 0 -1.15625 0.265625q-0.34375 0.265625 -0.34375 0.625q0 0.234375 0.140625 0.421875q0.15625 0.1875 0.453125 0.3125q0.171875 0.0625 1.03125 0.296875q1.25 0.328125 1.734375 0.546875q0.5 0.203125 0.78125 0.609375q0.28125 0.40625 0.28125 1.0q0 0.59375 -0.34375 1.109375q-0.34375 0.515625 -1.0 0.796875q-0.640625 0.28125 -1.453125 0.28125q-1.34375 0 -2.046875 -0.5625q-0.703125 -0.5625 -0.90625 -1.65625zm7.1484375 2.0625l0 -9.546875l1.171875 0l0 5.453125l2.765625 -2.8125l1.515625 0l-2.640625 2.5625l2.90625 4.34375l-1.4375 0l-2.28125 -3.53125l-0.828125 0.796875l0 2.734375l-1.171875 0zm10.445129 0l0 -9.546875l1.265625 0l0 8.421875l4.703125 0l0 1.125l-5.96875 0zm11.834351 -0.859375q-0.65625 0.5625 -1.265625 0.796875q-0.59375 0.21875 -1.28125 0.21875q-1.140625 0 -1.75 -0.546875q-0.609375 -0.5625 -0.609375 -1.4375q0 -0.5 0.21875 -0.921875q0.234375 -0.421875 0.609375 -0.671875q0.375 -0.25 0.84375 -0.390625q0.34375 -0.078125 1.046875 -0.171875q1.421875 -0.171875 2.09375 -0.40625q0 -0.234375 0 -0.296875q0 -0.71875 -0.328125 -1.015625q-0.453125 -0.390625 -1.34375 -0.390625q-0.8125 0 -1.21875 0.296875q-0.390625 0.28125 -0.578125 1.015625l-1.140625 -0.15625q0.15625 -0.734375 0.515625 -1.1875q0.359375 -0.453125 1.03125 -0.6875q0.671875 -0.25 1.5625 -0.25q0.890625 0 1.4375 0.203125q0.5625 0.203125 0.8125 0.53125q0.265625 0.3125 0.375 0.796875q0.046875 0.296875 0.046875 1.078125l0 1.5625q0 1.625 0.078125 2.0625q0.078125 0.4375 0.296875 0.828125l-1.21875 0q-0.1875 -0.359375 -0.234375 -0.859375zm-0.09375 -2.609375q-0.640625 0.265625 -1.921875 0.4375q-0.71875 0.109375 -1.015625 0.25q-0.296875 0.125 -0.46875 0.375q-0.15625 0.25 -0.15625 0.546875q0 0.46875 0.34375 0.78125q0.359375 0.3125 1.046875 0.3125q0.671875 0 1.203125 -0.296875q0.53125 -0.296875 0.78125 -0.8125q0.1875 -0.390625 0.1875 -1.171875l0 -0.421875zm5.5531006 2.421875l0.171875 1.03125q-0.5 0.109375 -0.890625 0.109375q-0.640625 0 -1.0 -0.203125q-0.34375 -0.203125 -0.484375 -0.53125q-0.140625 -0.328125 -0.140625 -1.390625l0 -3.96875l-0.859375 0l0 -0.90625l0.859375 0l0 -1.71875l1.171875 -0.703125l0 2.421875l1.171875 0l0 0.90625l-1.171875 0l0 4.046875q0 0.5 0.046875 0.640625q0.0625 0.140625 0.203125 0.234375q0.140625 0.078125 0.40625 0.078125q0.203125 0 0.515625 -0.046875zm5.874878 -1.171875l1.203125 0.140625q-0.28125 1.0625 -1.0625 1.65625q-0.765625 0.578125 -1.96875 0.578125q-1.515625 0 -2.40625 -0.9375q-0.890625 -0.9375 -0.890625 -2.609375q0 -1.75 0.890625 -2.703125q0.90625 -0.96875 2.34375 -0.96875q1.390625 0 2.265625 0.9375q0.875 0.9375 0.875 2.65625q0 0.109375 0 0.3125l-5.15625 0q0.0625 1.140625 0.640625 1.75q0.578125 0.59375 1.4375 0.59375q0.65625 0 1.109375 -0.328125q0.453125 -0.34375 0.71875 -1.078125zm-3.84375 -1.90625l3.859375 0q-0.078125 -0.859375 -0.4375 -1.296875q-0.5625 -0.6875 -1.453125 -0.6875q-0.8125 0 -1.359375 0.546875q-0.546875 0.53125 -0.609375 1.4375zm6.5218506 4.125l0 -6.90625l1.0625 0l0 0.984375q0.75 -1.140625 2.1875 -1.140625q0.625 0 1.15625 0.21875q0.53125 0.21875 0.78125 0.59375q0.265625 0.359375 0.375 0.859375q0.0625 0.328125 0.0625 1.140625l0 4.25l-1.171875 0l0 -4.203125q0 -0.71875 -0.140625 -1.0625q-0.140625 -0.359375 -0.484375 -0.5625q-0.34375 -0.21875 -0.8125 -0.21875q-0.75 0 -1.296875 0.46875q-0.546875 0.46875 -0.546875 1.796875l0 3.78125l-1.171875 0zm11.928101 -2.53125l1.15625 0.15625q-0.1875 1.1875 -0.96875 1.859375q-0.78125 0.671875 -1.921875 0.671875q-1.40625 0 -2.28125 -0.921875q-0.859375 -0.9375 -0.859375 -2.65625q0 -1.125 0.375 -1.96875q0.375 -0.84375 1.125 -1.25q0.765625 -0.421875 1.65625 -0.421875q1.125 0 1.84375 0.578125q0.71875 0.5625 0.921875 1.609375l-1.140625 0.171875q-0.171875 -0.703125 -0.59375 -1.046875q-0.40625 -0.359375 -0.984375 -0.359375q-0.890625 0 -1.453125 0.640625q-0.546875 0.640625 -0.546875 2.0q0 1.40625 0.53125 2.03125q0.546875 0.625 1.40625 0.625q0.6875 0 1.140625 -0.421875q0.46875 -0.421875 0.59375 -1.296875zm2.1015625 5.1875l-0.125 -1.09375q0.375 0.109375 0.65625 0.109375q0.390625 0 0.625 -0.140625q0.234375 -0.125 0.390625 -0.359375q0.109375 -0.171875 0.359375 -0.875q0.03125 -0.09375 0.109375 -0.28125l-2.625 -6.921875l1.265625 0l1.4375 4.0q0.28125 0.765625 0.5 1.59375q0.203125 -0.796875 0.46875 -1.578125l1.484375 -4.015625l1.171875 0l-2.625 7.015625q-0.421875 1.140625 -0.65625 1.578125q-0.3125 0.578125 -0.71875 0.84375q-0.40625 0.28125 -0.96875 0.28125q-0.328125 0 -0.75 -0.15625z" fill-rule="nonzero"/><path fill="#ffffff" d="m651.1758 76.97979l-1.078125 0l0 -9.546875l1.171875 0l0 3.40625q0.734375 -0.921875 1.890625 -0.921875q0.640625 0 1.203125 0.265625q0.578125 0.25 0.9375 0.71875q0.375 0.453125 0.578125 1.109375q0.203125 0.65625 0.203125 1.40625q0 1.78125 -0.875 2.75q-0.875 0.96875 -2.109375 0.96875q-1.21875 0 -1.921875 -1.015625l0 0.859375zm0 -3.5q0 1.234375 0.328125 1.78125q0.5625 0.90625 1.5 0.90625q0.765625 0 1.328125 -0.65625q0.5625 -0.671875 0.5625 -2.0q0 -1.34375 -0.546875 -1.984375q-0.53125 -0.65625 -1.296875 -0.65625q-0.765625 0 -1.328125 0.671875q-0.546875 0.671875 -0.546875 1.9375zm6.2874756 6.15625l-0.125 -1.09375q0.375 0.109375 0.65625 0.109375q0.390625 0 0.625 -0.140625q0.234375 -0.125 0.390625 -0.359375q0.109375 -0.171875 0.359375 -0.875q0.03125 -0.09375 0.109375 -0.28125l-2.625 -6.921875l1.265625 0l1.4375 4.0q0.28125 0.765625 0.5 1.59375q0.203125 -0.796875 0.46875 -1.578125l1.484375 -4.015625l1.171875 0l-2.625 7.015625q-0.421875 1.140625 -0.65625 1.578125q-0.3125 0.578125 -0.71875 0.84375q-0.40625 0.28125 -0.96875 0.28125q-0.328125 0 -0.75 -0.15625zm10.13269 -5.71875l1.203125 -0.109375q0.078125 0.71875 0.390625 1.1875q0.3125 0.453125 0.953125 0.734375q0.65625 0.28125 1.46875 0.28125q0.71875 0 1.265625 -0.21875q0.5625 -0.21875 0.828125 -0.578125q0.265625 -0.375 0.265625 -0.828125q0 -0.453125 -0.265625 -0.78125q-0.25 -0.328125 -0.84375 -0.5625q-0.390625 -0.15625 -1.703125 -0.46875q-1.3125 -0.3125 -1.84375 -0.59375q-0.671875 -0.359375 -1.015625 -0.890625q-0.328125 -0.53125 -0.328125 -1.1875q0 -0.71875 0.40625 -1.34375q0.40625 -0.625 1.1875 -0.953125q0.796875 -0.328125 1.765625 -0.328125q1.046875 0 1.859375 0.34375q0.8125 0.34375 1.25 1.015625q0.4375 0.65625 0.46875 1.484375l-1.203125 0.09375q-0.109375 -0.90625 -0.671875 -1.359375q-0.5625 -0.46875 -1.65625 -0.46875q-1.140625 0 -1.671875 0.421875q-0.515625 0.421875 -0.515625 1.015625q0 0.515625 0.359375 0.84375q0.375 0.328125 1.90625 0.6875q1.546875 0.34375 2.109375 0.59375q0.84375 0.390625 1.234375 0.984375q0.390625 0.578125 0.390625 1.359375q0 0.75 -0.4375 1.4375q-0.421875 0.671875 -1.25 1.046875q-0.8125 0.359375 -1.828125 0.359375q-1.296875 0 -2.171875 -0.375q-0.875 -0.375 -1.375 -1.125q-0.5 -0.765625 -0.53125 -1.71875zm13.905334 0.84375l1.203125 0.140625q-0.28125 1.0625 -1.0625 1.65625q-0.765625 0.578125 -1.96875 0.578125q-1.515625 0 -2.40625 -0.9375q-0.890625 -0.9375 -0.890625 -2.609375q0 -1.75 0.890625 -2.703125q0.90625 -0.96875 2.34375 -0.96875q1.390625 0 2.265625 0.9375q0.875 0.9375 0.875 2.65625q0 0.109375 0 0.3125l-5.15625 0q0.0625 1.140625 0.640625 1.75q0.578125 0.59375 1.4375 0.59375q0.65625 0 1.109375 -0.328125q0.453125 -0.34375 0.71875 -1.078125zm-3.84375 -1.90625l3.859375 0q-0.078125 -0.859375 -0.4375 -1.296875q-0.5625 -0.6875 -1.453125 -0.6875q-0.8125 0 -1.359375 0.546875q-0.546875 0.53125 -0.609375 1.4375zm6.5062256 4.125l0 -6.90625l1.0625 0l0 1.046875q0.40625 -0.734375 0.734375 -0.96875q0.34375 -0.234375 0.765625 -0.234375q0.59375 0 1.203125 0.375l-0.40625 1.078125q-0.4375 -0.25 -0.859375 -0.25q-0.390625 0 -0.703125 0.234375q-0.296875 0.234375 -0.421875 0.640625q-0.203125 0.625 -0.203125 1.359375l0 3.625l-1.171875 0zm6.3759155 0l-2.625 -6.90625l1.234375 0l1.484375 4.140625q0.234375 0.65625 0.4375 1.390625q0.15625 -0.546875 0.4375 -1.3125l1.53125 -4.21875l1.21875 0l-2.625 6.90625l-1.09375 0zm9.4765625 -2.21875l1.203125 0.140625q-0.28125 1.0625 -1.0625 1.65625q-0.765625 0.578125 -1.96875 0.578125q-1.515625 0 -2.40625 -0.9375q-0.890625 -0.9375 -0.890625 -2.609375q0 -1.75 0.890625 -2.703125q0.90625 -0.96875 2.34375 -0.96875q1.390625 0 2.265625 0.9375q0.875 0.9375 0.875 2.65625q0 0.109375 0 0.3125l-5.15625 0q0.0625 1.140625 0.640625 1.75q0.578125 0.59375 1.4375 0.59375q0.65625 0 1.109375 -0.328125q0.453125 -0.34375 0.71875 -1.078125zm-3.84375 -1.90625l3.859375 0q-0.078125 -0.859375 -0.4375 -1.296875q-0.5625 -0.6875 -1.453125 -0.6875q-0.8125 0 -1.359375 0.546875q-0.546875 0.53125 -0.609375 1.4375zm6.5062256 4.125l0 -6.90625l1.0625 0l0 1.046875q0.40625 -0.734375 0.734375 -0.96875q0.34375 -0.234375 0.765625 -0.234375q0.59375 0 1.203125 0.375l-0.40625 1.078125q-0.4375 -0.25 -0.859375 -0.25q-0.390625 0 -0.703125 0.234375q-0.296875 0.234375 -0.421875 0.640625q-0.203125 0.625 -0.203125 1.359375l0 3.625l-1.171875 0z" fill-rule="nonzero"/><path fill="#ffffff" d="m622.7395 90.54479q-0.46875 0 -0.78125 -0.125q-0.3125 -0.140625 -0.5 -0.390625q-0.171875 -0.265625 -0.25 -0.640625q-0.078125 -0.375 -0.078125 -0.875l0 -4.671875l-1.421875 0l0 -0.75l2.296875 0l0 5.421875q0 0.375 0.046875 0.609375q0.046875 0.234375 0.140625 0.375q0.109375 0.140625 0.25 0.203125q0.15625 0.046875 0.359375 0.046875q0.3125 0 0.578125 -0.078125q0.265625 -0.078125 0.421875 -0.15625l0.125 0.75q-0.0625 0.03125 -0.1875 0.078125q-0.109375 0.046875 -0.28125 0.078125q-0.15625 0.046875 -0.34375 0.078125q-0.1875 0.046875 -0.375 0.046875zm4.437561 -0.75q0.328125 0 0.578125 -0.015625q0.265625 -0.03125 0.4375 -0.0625l0 -1.46875q-0.171875 -0.0625 -0.40625 -0.09375q-0.234375 -0.03125 -0.5 -0.03125q-0.25 0 -0.484375 0.046875q-0.234375 0.03125 -0.421875 0.125q-0.171875 0.09375 -0.296875 0.25q-0.109375 0.15625 -0.109375 0.390625q0 0.484375 0.3125 0.671875q0.328125 0.1875 0.890625 0.1875zm-0.09375 -4.4375q0.5625 0 0.9375 0.140625q0.375 0.140625 0.609375 0.390625q0.234375 0.234375 0.328125 0.59375q0.109375 0.34375 0.109375 0.765625l0 3.09375q-0.3125 0.046875 -0.828125 0.125q-0.5 0.078125 -1.03125 0.078125q-0.40625 0 -0.796875 -0.078125q-0.375 -0.0625 -0.671875 -0.234375q-0.296875 -0.1875 -0.484375 -0.484375q-0.171875 -0.3125 -0.171875 -0.796875q0 -0.421875 0.171875 -0.71875q0.1875 -0.296875 0.484375 -0.46875q0.296875 -0.1875 0.671875 -0.265625q0.375 -0.078125 0.765625 -0.078125q0.515625 0 1.015625 0.109375l0 -0.25q0 -0.21875 -0.046875 -0.421875q-0.046875 -0.203125 -0.1875 -0.375q-0.125 -0.171875 -0.359375 -0.265625q-0.21875 -0.109375 -0.578125 -0.109375q-0.46875 0 -0.8125 0.0625q-0.328125 0.0625 -0.515625 0.125l-0.109375 -0.71875q0.1875 -0.09375 0.609375 -0.15625q0.421875 -0.0625 0.890625 -0.0625zm5.296936 0.125l2.078125 0l0 0.734375l-2.078125 0l0 2.296875q0 0.375 0.046875 0.609375q0.0625 0.234375 0.171875 0.375q0.125 0.140625 0.3125 0.203125q0.203125 0.046875 0.484375 0.046875q0.375 0 0.609375 -0.0625q0.234375 -0.0625 0.453125 -0.171875l0.125 0.75q-0.15625 0.0625 -0.484375 0.171875q-0.3125 0.109375 -0.796875 0.109375q-0.546875 0 -0.90625 -0.125q-0.34375 -0.140625 -0.546875 -0.390625q-0.203125 -0.265625 -0.28125 -0.640625q-0.0625 -0.375 -0.0625 -0.875l0 -2.296875l-1.046875 0l0 -0.734375l1.046875 0l0 -1.390625l0.875 -0.15625l0 1.546875zm5.500061 -0.125q1.0 0 1.53125 0.625q0.546875 0.625 0.546875 1.890625l0 0.3125l-3.53125 0q0.046875 0.765625 0.5 1.171875q0.453125 0.390625 1.28125 0.390625q0.46875 0 0.796875 -0.078125q0.328125 -0.078125 0.5 -0.15625l0.109375 0.75q-0.15625 0.078125 -0.578125 0.171875q-0.40625 0.109375 -0.921875 0.109375q-0.640625 0 -1.125 -0.203125q-0.484375 -0.203125 -0.8125 -0.53125q-0.3125 -0.34375 -0.484375 -0.8125q-0.15625 -0.484375 -0.15625 -1.046875q0 -0.65625 0.203125 -1.140625q0.203125 -0.5 0.53125 -0.8125q0.328125 -0.3125 0.75 -0.46875q0.421875 -0.171875 0.859375 -0.171875zm1.1875 2.109375q0 -0.625 -0.328125 -0.984375q-0.328125 -0.375 -0.875 -0.375q-0.3125 0 -0.5625 0.125q-0.25 0.109375 -0.4375 0.296875q-0.171875 0.1875 -0.28125 0.4375q-0.109375 0.25 -0.140625 0.5l2.625 0zm2.125061 -1.859375q0.484375 -0.109375 0.953125 -0.171875q0.484375 -0.0625 0.890625 -0.0625q1.0 0 1.5 0.515625q0.515625 0.5 0.515625 1.625l0 2.90625l-0.875 0l0 -2.734375q0 -0.484375 -0.09375 -0.78125q-0.078125 -0.296875 -0.234375 -0.453125q-0.15625 -0.171875 -0.375 -0.234375q-0.21875 -0.0625 -0.46875 -0.0625q-0.21875 0 -0.46875 0.03125q-0.234375 0.015625 -0.453125 0.0625l0 4.171875l-0.890625 0l0 -4.8125zm5.093811 2.34375q0 -0.671875 0.21875 -1.15625q0.21875 -0.484375 0.578125 -0.796875q0.375 -0.328125 0.875 -0.484375q0.5 -0.15625 1.0625 -0.15625q0.359375 0 0.71875 0.046875q0.359375 0.046875 0.765625 0.171875l-0.203125 0.765625q-0.359375 -0.125 -0.65625 -0.15625q-0.28125 -0.046875 -0.578125 -0.046875q-0.390625 0 -0.734375 0.109375q-0.328125 0.09375 -0.59375 0.3125q-0.25 0.21875 -0.40625 0.5625q-0.140625 0.34375 -0.140625 0.828125q0 0.46875 0.140625 0.8125q0.140625 0.328125 0.390625 0.546875q0.25 0.21875 0.59375 0.328125q0.359375 0.109375 0.78125 0.109375q0.34375 0 0.65625 -0.03125q0.328125 -0.046875 0.6875 -0.171875l0.140625 0.734375q-0.375 0.140625 -0.765625 0.203125q-0.375 0.0625 -0.828125 0.0625q-0.59375 0 -1.09375 -0.171875q-0.5 -0.171875 -0.859375 -0.484375q-0.34375 -0.328125 -0.546875 -0.8125q-0.203125 -0.484375 -0.203125 -1.125zm5.359436 3.390625q0.09375 0.0625 0.265625 0.09375q0.171875 0.03125 0.328125 0.03125q0.515625 0 0.8125 -0.234375q0.296875 -0.21875 0.546875 -0.75q-0.609375 -1.125 -1.125 -2.421875q-0.515625 -1.296875 -0.859375 -2.578125l0.953125 0q0.109375 0.421875 0.25 0.921875q0.140625 0.484375 0.328125 1.015625q0.1875 0.515625 0.390625 1.046875q0.203125 0.53125 0.4375 1.0q0.171875 -0.484375 0.3125 -0.953125q0.15625 -0.484375 0.28125 -0.96875q0.140625 -0.5 0.265625 -1.0q0.125 -0.5 0.265625 -1.0625l0.90625 0q-0.328125 1.375 -0.75 2.6875q-0.421875 1.296875 -0.90625 2.40625q-0.1875 0.421875 -0.390625 0.71875q-0.203125 0.3125 -0.453125 0.515625q-0.25 0.203125 -0.5625 0.296875q-0.296875 0.109375 -0.6875 0.109375q-0.203125 0 -0.453125 -0.0625q-0.234375 -0.046875 -0.3125 -0.09375l0.15625 -0.71875zm6.265686 -4.046875l2.359375 0l0 0.828125l-2.359375 0l0 -0.828125zm5.484436 -1.640625q0.15625 -0.09375 0.453125 -0.1875q0.3125 -0.109375 0.6875 -0.109375q0.5 0 0.890625 0.203125q0.40625 0.1875 0.671875 0.53125q0.265625 0.328125 0.40625 0.8125q0.15625 0.46875 0.15625 1.046875q0 0.59375 -0.171875 1.078125q-0.171875 0.46875 -0.484375 0.8125q-0.3125 0.328125 -0.75 0.515625q-0.4375 0.1875 -0.96875 0.1875q-0.578125 0 -1.046875 -0.09375q-0.453125 -0.078125 -0.734375 -0.171875l0 -7.09375l0.890625 -0.15625l0 2.625zm0 4.0q0.203125 0.046875 0.40625 0.078125q0.203125 0.03125 0.375 0.03125q0.75 0 1.15625 -0.453125q0.421875 -0.453125 0.421875 -1.359375q0 -0.390625 -0.078125 -0.71875q-0.078125 -0.34375 -0.234375 -0.578125q-0.15625 -0.234375 -0.40625 -0.375q-0.25 -0.140625 -0.609375 -0.140625q-0.3125 0 -0.59375 0.125q-0.28125 0.125 -0.4375 0.25l0 3.140625zm4.234436 1.6875q0.09375 0.0625 0.265625 0.09375q0.171875 0.03125 0.328125 0.03125q0.515625 0 0.8125 -0.234375q0.296875 -0.21875 0.546875 -0.75q-0.609375 -1.125 -1.125 -2.421875q-0.515625 -1.296875 -0.859375 -2.578125l0.953125 0q0.109375 0.421875 0.25 0.921875q0.140625 0.484375 0.328125 1.015625q0.1875 0.515625 0.390625 1.046875q0.203125 0.53125 0.4375 1.0q0.171875 -0.484375 0.3125 -0.953125q0.15625 -0.484375 0.28125 -0.96875q0.140625 -0.5 0.265625 -1.0q0.125 -0.5 0.265625 -1.0625l0.90625 0q-0.328125 1.375 -0.75 2.6875q-0.421875 1.296875 -0.90625 2.40625q-0.1875 0.421875 -0.390625 0.71875q-0.203125 0.3125 -0.453125 0.515625q-0.25 0.203125 -0.5625 0.296875q-0.296875 0.109375 -0.6875 0.109375q-0.203125 0 -0.453125 -0.0625q-0.234375 -0.046875 -0.3125 -0.09375l0.15625 -0.71875zm6.265686 -4.046875l2.359375 0l0 0.828125l-2.359375 0l0 -0.828125zm7.578186 1.890625q0 -0.265625 -0.21875 -0.4375q-0.21875 -0.171875 -0.546875 -0.296875q-0.3125 -0.125 -0.703125 -0.25q-0.375 -0.125 -0.703125 -0.296875q-0.328125 -0.1875 -0.546875 -0.453125q-0.21875 -0.265625 -0.21875 -0.703125q0 -0.59375 0.484375 -0.984375q0.484375 -0.40625 1.515625 -0.40625q0.40625 0 0.84375 0.0625q0.4375 0.0625 0.734375 0.15625l-0.15625 0.78125q-0.078125 -0.046875 -0.234375 -0.09375q-0.140625 -0.046875 -0.34375 -0.078125q-0.1875 -0.03125 -0.40625 -0.046875q-0.21875 -0.03125 -0.421875 -0.03125q-1.15625 0 -1.15625 0.625q0 0.21875 0.21875 0.375q0.21875 0.15625 0.546875 0.28125q0.34375 0.125 0.71875 0.265625q0.390625 0.140625 0.71875 0.328125q0.328125 0.1875 0.546875 0.46875q0.21875 0.265625 0.21875 0.671875q0 0.671875 -0.53125 1.046875q-0.515625 0.375 -1.640625 0.375q-0.515625 0 -0.9375 -0.09375q-0.421875 -0.078125 -0.8125 -0.25l0.171875 -0.796875q0.375 0.15625 0.78125 0.28125q0.40625 0.109375 0.875 0.109375q1.203125 0 1.203125 -0.609375zm4.359436 -3.828125q1.0 0 1.53125 0.625q0.546875 0.625 0.546875 1.890625l0 0.3125l-3.53125 0q0.046875 0.765625 0.5 1.171875q0.453125 0.390625 1.28125 0.390625q0.46875 0 0.796875 -0.078125q0.328125 -0.078125 0.5 -0.15625l0.109375 0.75q-0.15625 0.078125 -0.578125 0.171875q-0.40625 0.109375 -0.921875 0.109375q-0.640625 0 -1.125 -0.203125q-0.484375 -0.203125 -0.8125 -0.53125q-0.3125 -0.34375 -0.484375 -0.8125q-0.15625 -0.484375 -0.15625 -1.046875q0 -0.65625 0.203125 -1.140625q0.203125 -0.5 0.53125 -0.8125q0.328125 -0.3125 0.75 -0.46875q0.421875 -0.171875 0.859375 -0.171875zm1.1875 2.109375q0 -0.625 -0.328125 -0.984375q-0.328125 -0.375 -0.875 -0.375q-0.3125 0 -0.5625 0.125q-0.25 0.109375 -0.4375 0.296875q-0.171875 0.1875 -0.28125 0.4375q-0.109375 0.25 -0.140625 0.5l2.625 0zm2.515686 2.953125l0 -4.671875q1.09375 -0.375 2.1875 -0.375q0.34375 0 0.65625 0.03125q0.3125 0.015625 0.6875 0.109375l-0.171875 0.765625q-0.328125 -0.09375 -0.59375 -0.109375q-0.265625 -0.03125 -0.578125 -0.03125q-0.640625 0 -1.3125 0.171875l0 4.109375l-0.875 0zm9.203186 -4.9375q-0.203125 0.6875 -0.453125 1.359375q-0.234375 0.65625 -0.5 1.296875q-0.25 0.625 -0.515625 1.203125q-0.265625 0.578125 -0.515625 1.078125l-0.796875 0q-0.5 -1.0 -1.015625 -2.28125q-0.5 -1.28125 -0.90625 -2.65625l0.96875 0q0.125 0.46875 0.28125 0.984375q0.171875 0.515625 0.34375 1.046875q0.1875 0.515625 0.375 1.0q0.1875 0.484375 0.375 0.875q0.171875 -0.390625 0.375 -0.875q0.203125 -0.484375 0.390625 -1.0q0.1875 -0.53125 0.359375 -1.046875q0.1875 -0.515625 0.3125 -0.984375l0.921875 0zm3.078186 -0.125q1.0 0 1.53125 0.625q0.546875 0.625 0.546875 1.890625l0 0.3125l-3.53125 0q0.046875 0.765625 0.5 1.171875q0.453125 0.390625 1.28125 0.390625q0.46875 0 0.796875 -0.078125q0.328125 -0.078125 0.5 -0.15625l0.109375 0.75q-0.15625 0.078125 -0.578125 0.171875q-0.40625 0.109375 -0.921875 0.109375q-0.640625 0 -1.125 -0.203125q-0.484375 -0.203125 -0.8125 -0.53125q-0.3125 -0.34375 -0.484375 -0.8125q-0.15625 -0.484375 -0.15625 -1.046875q0 -0.65625 0.203125 -1.140625q0.203125 -0.5 0.53125 -0.8125q0.328125 -0.3125 0.75 -0.46875q0.421875 -0.171875 0.859375 -0.171875zm1.1875 2.109375q0 -0.625 -0.328125 -0.984375q-0.328125 -0.375 -0.875 -0.375q-0.3125 0 -0.5625 0.125q-0.25 0.109375 -0.4375 0.296875q-0.171875 0.1875 -0.28125 0.4375q-0.109375 0.25 -0.140625 0.5l2.625 0zm2.515686 2.953125l0 -4.671875q1.09375 -0.375 2.1875 -0.375q0.34375 0 0.65625 0.03125q0.3125 0.015625 0.6875 0.109375l-0.171875 0.765625q-0.328125 -0.09375 -0.59375 -0.109375q-0.265625 -0.03125 -0.578125 -0.03125q-0.640625 0 -1.3125 0.171875l0 4.109375l-0.875 0zm7.640686 -0.6875q0 0.328125 -0.21875 0.578125q-0.203125 0.234375 -0.5625 0.234375q-0.359375 0 -0.578125 -0.234375q-0.203125 -0.25 -0.203125 -0.578125q0 -0.328125 0.203125 -0.5625q0.21875 -0.25 0.578125 -0.25q0.359375 0 0.5625 0.25q0.21875 0.234375 0.21875 0.5625zm5.156311 -5.03125q-0.28125 0 -0.484375 -0.1875q-0.203125 -0.1875 -0.203125 -0.515625q0 -0.328125 0.203125 -0.515625q0.203125 -0.203125 0.484375 -0.203125q0.28125 0 0.484375 0.203125q0.203125 0.1875 0.203125 0.515625q0 0.328125 -0.203125 0.515625q-0.203125 0.1875 -0.484375 0.1875zm-2.0625 1.515625l0 -0.734375l2.875 0l0 4.890625q0 0.5 -0.15625 0.859375q-0.140625 0.359375 -0.375 0.578125q-0.234375 0.234375 -0.546875 0.328125q-0.3125 0.09375 -0.671875 0.09375q-0.40625 0 -0.8125 -0.09375q-0.40625 -0.078125 -0.78125 -0.265625l0.265625 -0.734375q0.28125 0.125 0.59375 0.203125q0.328125 0.09375 0.625 0.09375q0.4375 0 0.703125 -0.21875q0.28125 -0.203125 0.28125 -0.84375l0 -4.15625l-2.0 0zm7.843811 2.96875q0 -0.265625 -0.21875 -0.4375q-0.21875 -0.171875 -0.546875 -0.296875q-0.3125 -0.125 -0.703125 -0.25q-0.375 -0.125 -0.703125 -0.296875q-0.328125 -0.1875 -0.546875 -0.453125q-0.21875 -0.265625 -0.21875 -0.703125q0 -0.59375 0.484375 -0.984375q0.484375 -0.40625 1.515625 -0.40625q0.40625 0 0.84375 0.0625q0.4375 0.0625 0.734375 0.15625l-0.15625 0.78125q-0.078125 -0.046875 -0.234375 -0.09375q-0.140625 -0.046875 -0.34375 -0.078125q-0.1875 -0.03125 -0.40625 -0.046875q-0.21875 -0.03125 -0.421875 -0.03125q-1.15625 0 -1.15625 0.625q0 0.21875 0.21875 0.375q0.21875 0.15625 0.546875 0.28125q0.34375 0.125 0.71875 0.265625q0.390625 0.140625 0.71875 0.328125q0.328125 0.1875 0.546875 0.46875q0.21875 0.265625 0.21875 0.671875q0 0.671875 -0.53125 1.046875q-0.515625 0.375 -1.640625 0.375q-0.515625 0 -0.9375 -0.09375q-0.421875 -0.078125 -0.8125 -0.25l0.171875 -0.796875q0.375 0.15625 0.78125 0.28125q0.40625 0.109375 0.875 0.109375q1.203125 0 1.203125 -0.609375zm6.500061 -1.234375q0 0.578125 -0.171875 1.0625q-0.15625 0.46875 -0.46875 0.8125q-0.296875 0.34375 -0.71875 0.53125q-0.40625 0.1875 -0.890625 0.1875q-0.484375 0 -0.890625 -0.1875q-0.40625 -0.1875 -0.71875 -0.53125q-0.296875 -0.34375 -0.46875 -0.8125q-0.15625 -0.484375 -0.15625 -1.0625q0 -0.59375 0.15625 -1.0625q0.171875 -0.484375 0.46875 -0.8125q0.3125 -0.34375 0.71875 -0.53125q0.40625 -0.1875 0.890625 -0.1875q0.484375 0 0.890625 0.1875q0.421875 0.1875 0.71875 0.53125q0.3125 0.328125 0.46875 0.8125q0.171875 0.46875 0.171875 1.0625zm-0.90625 0q0 -0.84375 -0.375 -1.328125q-0.359375 -0.484375 -0.96875 -0.484375q-0.609375 0 -0.96875 0.484375q-0.359375 0.484375 -0.359375 1.328125q0 0.828125 0.359375 1.3125q0.359375 0.484375 0.96875 0.484375q0.609375 0 0.96875 -0.484375q0.375 -0.484375 0.375 -1.3125zm2.078186 -2.34375q0.484375 -0.109375 0.953125 -0.171875q0.484375 -0.0625 0.890625 -0.0625q1.0 0 1.5 0.515625q0.515625 0.5 0.515625 1.625l0 2.90625l-0.875 0l0 -2.734375q0 -0.484375 -0.09375 -0.78125q-0.078125 -0.296875 -0.234375 -0.453125q-0.15625 -0.171875 -0.375 -0.234375q-0.21875 -0.0625 -0.46875 -0.0625q-0.21875 0 -0.46875 0.03125q-0.234375 0.015625 -0.453125 0.0625l0 4.171875l-0.890625 0l0 -4.8125z" fill-rule="nonzero"/><path fill="#6aa84f" d="m803.77167 44.036747l138.61414 0l0 42.204723l-138.61414 0z" fill-rule="evenodd"/><path stroke="#38761d" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m803.77167 44.036747l138.61414 0l0 42.204723l-138.61414 0z" fill-rule="evenodd"/><path fill="#ffffff" d="m819.2744 58.79848q0 -2.375 1.28125 -3.71875q1.28125 -1.34375 3.296875 -1.34375q1.3125 0 2.375 0.625q1.0625 0.625 1.609375 1.765625q0.5625 1.125 0.5625 2.5625q0 1.4375 -0.59375 2.59375q-0.578125 1.140625 -1.65625 1.734375q-1.0625 0.578125 -2.3125 0.578125q-1.34375 0 -2.40625 -0.640625q-1.0625 -0.65625 -1.609375 -1.78125q-0.546875 -1.125 -0.546875 -2.375zm1.3125 0.015625q0 1.71875 0.921875 2.71875q0.921875 0.984375 2.328125 0.984375q1.421875 0 2.34375 -1.0q0.921875 -1.0 0.921875 -2.84375q0 -1.15625 -0.40625 -2.03125q-0.390625 -0.875 -1.15625 -1.34375q-0.75 -0.484375 -1.6875 -0.484375q-1.34375 0 -2.3125 0.921875q-0.953125 0.921875 -0.953125 3.078125zm9.00769 1.5625l1.203125 -0.109375q0.078125 0.71875 0.390625 1.1875q0.3125 0.453125 0.953125 0.734375q0.65625 0.28125 1.46875 0.28125q0.71875 0 1.265625 -0.21875q0.5625 -0.21875 0.828125 -0.578125q0.265625 -0.375 0.265625 -0.828125q0 -0.453125 -0.265625 -0.78125q-0.25 -0.328125 -0.84375 -0.5625q-0.390625 -0.15625 -1.703125 -0.46875q-1.3125 -0.3125 -1.84375 -0.59375q-0.671875 -0.359375 -1.015625 -0.890625q-0.328125 -0.53125 -0.328125 -1.1875q0 -0.71875 0.40625 -1.34375q0.40625 -0.625 1.1875 -0.953125q0.796875 -0.328125 1.765625 -0.328125q1.046875 0 1.859375 0.34375q0.8125 0.34375 1.25 1.015625q0.4375 0.65625 0.46875 1.484375l-1.203125 0.09375q-0.109375 -0.90625 -0.671875 -1.359375q-0.5625 -0.46875 -1.65625 -0.46875q-1.140625 0 -1.671875 0.421875q-0.515625 0.421875 -0.515625 1.015625q0 0.515625 0.359375 0.84375q0.375 0.328125 1.90625 0.6875q1.546875 0.34375 2.109375 0.59375q0.84375 0.390625 1.234375 0.984375q0.390625 0.578125 0.390625 1.359375q0 0.75 -0.4375 1.4375q-0.421875 0.671875 -1.25 1.046875q-0.8125 0.359375 -1.828125 0.359375q-1.296875 0 -2.171875 -0.375q-0.875 -0.375 -1.375 -1.125q-0.5 -0.765625 -0.53125 -1.71875zm9.3272705 3.0625l0 -9.546875l3.28125 0q1.109375 0 1.703125 0.140625q0.8125 0.1875 1.390625 0.6875q0.765625 0.640625 1.140625 1.640625q0.375 0.984375 0.375 2.25q0 1.09375 -0.265625 1.9375q-0.25 0.828125 -0.65625 1.390625q-0.390625 0.546875 -0.859375 0.859375q-0.46875 0.3125 -1.140625 0.484375q-0.65625 0.15625 -1.53125 0.15625l-3.4375 0zm1.265625 -1.125l2.03125 0q0.9375 0 1.46875 -0.171875q0.546875 -0.1875 0.875 -0.5q0.4375 -0.453125 0.6875 -1.203125q0.25 -0.765625 0.25 -1.84375q0 -1.5 -0.5 -2.296875q-0.484375 -0.8125 -1.1875 -1.078125q-0.5 -0.203125 -1.625 -0.203125l-2.0 0l0 7.296875zm12.046875 1.125l0 -9.546875l1.296875 0l5.015625 7.5l0 -7.5l1.203125 0l0 9.546875l-1.296875 0l-5.015625 -7.5l0 7.5l-1.203125 0zm9.047058 -3.453125q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm11.131226 3.453125l0 -0.875q-0.65625 1.03125 -1.9375 1.03125q-0.8125 0 -1.515625 -0.453125q-0.6875 -0.453125 -1.078125 -1.265625q-0.375 -0.828125 -0.375 -1.890625q0 -1.03125 0.34375 -1.875q0.34375 -0.84375 1.03125 -1.28125q0.703125 -0.453125 1.546875 -0.453125q0.625 0 1.109375 0.265625q0.5 0.25 0.796875 0.671875l0 -3.421875l1.171875 0l0 9.546875l-1.09375 0zm-3.703125 -3.453125q0 1.328125 0.5625 1.984375q0.5625 0.65625 1.328125 0.65625q0.765625 0 1.296875 -0.625q0.53125 -0.625 0.53125 -1.90625q0 -1.421875 -0.546875 -2.078125q-0.546875 -0.671875 -1.34375 -0.671875q-0.78125 0 -1.3125 0.640625q-0.515625 0.625 -0.515625 2.0zm11.365601 1.234375l1.203125 0.140625q-0.28125 1.0625 -1.0625 1.65625q-0.765625 0.578125 -1.96875 0.578125q-1.515625 0 -2.40625 -0.9375q-0.890625 -0.9375 -0.890625 -2.609375q0 -1.75 0.890625 -2.703125q0.90625 -0.96875 2.34375 -0.96875q1.390625 0 2.265625 0.9375q0.875 0.9375 0.875 2.65625q0 0.109375 0 0.3125l-5.15625 0q0.0625 1.140625 0.640625 1.75q0.578125 0.59375 1.4375 0.59375q0.65625 0 1.109375 -0.328125q0.453125 -0.34375 0.71875 -1.078125zm-3.84375 -1.90625l3.859375 0q-0.078125 -0.859375 -0.4375 -1.296875q-0.5625 -0.6875 -1.453125 -0.6875q-0.8125 0 -1.359375 0.546875q-0.546875 0.53125 -0.609375 1.4375zm10.3811035 4.125l0 -9.546875l3.28125 0q1.109375 0 1.703125 0.140625q0.8125 0.1875 1.390625 0.6875q0.765625 0.640625 1.140625 1.640625q0.375 0.984375 0.375 2.25q0 1.09375 -0.265625 1.9375q-0.25 0.828125 -0.65625 1.390625q-0.390625 0.546875 -0.859375 0.859375q-0.46875 0.3125 -1.140625 0.484375q-0.65625 0.15625 -1.53125 0.15625l-3.4375 0zm1.265625 -1.125l2.03125 0q0.9375 0 1.46875 -0.171875q0.546875 -0.1875 0.875 -0.5q0.4375 -0.453125 0.6875 -1.203125q0.25 -0.765625 0.25 -1.84375q0 -1.5 -0.5 -2.296875q-0.484375 -0.8125 -1.1875 -1.078125q-0.5 -0.203125 -1.625 -0.203125l-2.0 0l0 7.296875zm12.937622 -1.09375l1.203125 0.140625q-0.28125 1.0625 -1.0625 1.65625q-0.765625 0.578125 -1.96875 0.578125q-1.515625 0 -2.40625 -0.9375q-0.890625 -0.9375 -0.890625 -2.609375q0 -1.75 0.890625 -2.703125q0.90625 -0.96875 2.34375 -0.96875q1.390625 0 2.265625 0.9375q0.875 0.9375 0.875 2.65625q0 0.109375 0 0.3125l-5.15625 0q0.0625 1.140625 0.640625 1.75q0.578125 0.59375 1.4375 0.59375q0.65625 0 1.109375 -0.328125q0.453125 -0.34375 0.71875 -1.078125zm-3.84375 -1.90625l3.859375 0q-0.078125 -0.859375 -0.4375 -1.296875q-0.5625 -0.6875 -1.453125 -0.6875q-0.8125 0 -1.359375 0.546875q-0.546875 0.53125 -0.609375 1.4375zm9.084351 3.078125l0.171875 1.03125q-0.5 0.109375 -0.890625 0.109375q-0.640625 0 -1.0 -0.203125q-0.34375 -0.203125 -0.484375 -0.53125q-0.140625 -0.328125 -0.140625 -1.390625l0 -3.96875l-0.859375 0l0 -0.90625l0.859375 0l0 -1.71875l1.171875 -0.703125l0 2.421875l1.171875 0l0 0.90625l-1.171875 0l0 4.046875q0 0.5 0.046875 0.640625q0.0625 0.140625 0.203125 0.234375q0.140625 0.078125 0.40625 0.078125q0.203125 0 0.515625 -0.046875zm5.656128 0.1875q-0.65625 0.5625 -1.265625 0.796875q-0.59375 0.21875 -1.28125 0.21875q-1.140625 0 -1.75 -0.546875q-0.609375 -0.5625 -0.609375 -1.4375q0 -0.5 0.21875 -0.921875q0.234375 -0.421875 0.609375 -0.671875q0.375 -0.25 0.84375 -0.390625q0.34375 -0.078125 1.046875 -0.171875q1.421875 -0.171875 2.09375 -0.40625q0 -0.234375 0 -0.296875q0 -0.71875 -0.328125 -1.015625q-0.453125 -0.390625 -1.34375 -0.390625q-0.8125 0 -1.21875 0.296875q-0.390625 0.28125 -0.578125 1.015625l-1.140625 -0.15625q0.15625 -0.734375 0.515625 -1.1875q0.359375 -0.453125 1.03125 -0.6875q0.671875 -0.25 1.5625 -0.25q0.890625 0 1.4375 0.203125q0.5625 0.203125 0.8125 0.53125q0.265625 0.3125 0.375 0.796875q0.046875 0.296875 0.046875 1.078125l0 1.5625q0 1.625 0.078125 2.0625q0.078125 0.4375 0.296875 0.828125l-1.21875 0q-0.1875 -0.359375 -0.234375 -0.859375zm-0.09375 -2.609375q-0.640625 0.265625 -1.921875 0.4375q-0.71875 0.109375 -1.015625 0.25q-0.296875 0.125 -0.46875 0.375q-0.15625 0.25 -0.15625 0.546875q0 0.46875 0.34375 0.78125q0.359375 0.3125 1.046875 0.3125q0.671875 0 1.203125 -0.296875q0.53125 -0.296875 0.78125 -0.8125q0.1875 -0.390625 0.1875 -1.171875l0 -0.421875zm3.0062256 -4.71875l0 -1.359375l1.171875 0l0 1.359375l-1.171875 0zm0 8.1875l0 -6.90625l1.171875 0l0 6.90625l-1.171875 0zm2.9298096 0l0 -9.546875l1.171875 0l0 9.546875l-1.171875 0zm2.5079956 -2.0625l1.15625 -0.1875q0.109375 0.703125 0.546875 1.078125q0.453125 0.359375 1.25 0.359375q0.8125 0 1.203125 -0.328125q0.390625 -0.328125 0.390625 -0.765625q0 -0.390625 -0.359375 -0.625q-0.234375 -0.15625 -1.1875 -0.390625q-1.296875 -0.328125 -1.796875 -0.5625q-0.484375 -0.25 -0.75 -0.65625q-0.25 -0.421875 -0.25 -0.9375q0 -0.453125 0.203125 -0.84375q0.21875 -0.40625 0.578125 -0.671875q0.28125 -0.1875 0.75 -0.328125q0.46875 -0.140625 1.015625 -0.140625q0.8125 0 1.421875 0.234375q0.609375 0.234375 0.90625 0.640625q0.296875 0.390625 0.40625 1.0625l-1.140625 0.15625q-0.078125 -0.53125 -0.453125 -0.828125q-0.375 -0.3125 -1.0625 -0.3125q-0.8125 0 -1.15625 0.265625q-0.34375 0.265625 -0.34375 0.625q0 0.234375 0.140625 0.421875q0.15625 0.1875 0.453125 0.3125q0.171875 0.0625 1.03125 0.296875q1.25 0.328125 1.734375 0.546875q0.5 0.203125 0.78125 0.609375q0.28125 0.40625 0.28125 1.0q0 0.59375 -0.34375 1.109375q-0.34375 0.515625 -1.0 0.796875q-0.640625 0.28125 -1.453125 0.28125q-1.34375 0 -2.046875 -0.5625q-0.703125 -0.5625 -0.90625 -1.65625z" fill-rule="nonzero"/><path fill="#ffffff" d="m824.7031 74.410355q0 0.578125 -0.171875 1.0625q-0.15625 0.46875 -0.46875 0.8125q-0.296875 0.34375 -0.71875 0.53125q-0.40625 0.1875 -0.890625 0.1875q-0.484375 0 -0.890625 -0.1875q-0.40625 -0.1875 -0.71875 -0.53125q-0.296875 -0.34375 -0.46875 -0.8125q-0.15625 -0.484375 -0.15625 -1.0625q0 -0.59375 0.15625 -1.0625q0.171875 -0.484375 0.46875 -0.8125q0.3125 -0.34375 0.71875 -0.53125q0.40625 -0.1875 0.890625 -0.1875q0.484375 0 0.890625 0.1875q0.421875 0.1875 0.71875 0.53125q0.3125 0.328125 0.46875 0.8125q0.171875 0.46875 0.171875 1.0625zm-0.90625 0q0 -0.84375 -0.375 -1.328125q-0.359375 -0.484375 -0.96875 -0.484375q-0.609375 0 -0.96875 0.484375q-0.359375 0.484375 -0.359375 1.328125q0 0.828125 0.359375 1.3125q0.359375 0.484375 0.96875 0.484375q0.609375 0 0.96875 -0.484375q0.375 -0.484375 0.375 -1.3125zm5.062561 1.234375q0 -0.265625 -0.21875 -0.4375q-0.21875 -0.171875 -0.546875 -0.296875q-0.3125 -0.125 -0.703125 -0.25q-0.375 -0.125 -0.703125 -0.296875q-0.328125 -0.1875 -0.546875 -0.453125q-0.21875 -0.265625 -0.21875 -0.703125q0 -0.59375 0.484375 -0.984375q0.484375 -0.40625 1.515625 -0.40625q0.40625 0 0.84375 0.0625q0.4375 0.0625 0.734375 0.15625l-0.15625 0.78125q-0.078125 -0.046875 -0.234375 -0.09375q-0.140625 -0.046875 -0.34375 -0.078125q-0.1875 -0.03125 -0.40625 -0.046875q-0.21875 -0.03125 -0.421875 -0.03125q-1.15625 0 -1.15625 0.625q0 0.21875 0.21875 0.375q0.21875 0.15625 0.546875 0.28125q0.34375 0.125 0.71875 0.265625q0.390625 0.140625 0.71875 0.328125q0.328125 0.1875 0.546875 0.46875q0.21875 0.265625 0.21875 0.671875q0 0.671875 -0.53125 1.046875q-0.515625 0.375 -1.640625 0.375q-0.515625 0 -0.9375 -0.09375q-0.421875 -0.078125 -0.8125 -0.25l0.171875 -0.796875q0.375 0.15625 0.78125 0.28125q0.40625 0.109375 0.875 0.109375q1.203125 0 1.203125 -0.609375zm5.281311 -2.671875q-0.15625 -0.125 -0.4375 -0.25q-0.28125 -0.125 -0.59375 -0.125q-0.359375 0 -0.609375 0.140625q-0.25 0.140625 -0.40625 0.375q-0.15625 0.234375 -0.234375 0.578125q-0.078125 0.328125 -0.078125 0.71875q0 0.859375 0.40625 1.328125q0.40625 0.46875 1.0625 0.46875q0.328125 0 0.546875 -0.03125q0.234375 -0.03125 0.34375 -0.0625l0 -3.140625zm0 -3.328125l0.890625 -0.15625l0 7.25q-0.296875 0.09375 -0.75 0.171875q-0.4375 0.09375 -1.03125 0.09375q-0.53125 0 -0.96875 -0.1875q-0.4375 -0.1875 -0.75 -0.515625q-0.3125 -0.34375 -0.484375 -0.8125q-0.171875 -0.484375 -0.171875 -1.078125q0 -0.578125 0.140625 -1.046875q0.15625 -0.484375 0.421875 -0.8125q0.28125 -0.34375 0.671875 -0.53125q0.390625 -0.203125 0.890625 -0.203125q0.390625 0 0.6875 0.09375q0.296875 0.09375 0.453125 0.203125l0 -2.46875zm3.125061 4.109375l2.359375 0l0 0.828125l-2.359375 0l0 -0.828125zm4.593811 -1.6875q0.484375 -0.109375 0.953125 -0.171875q0.484375 -0.0625 0.890625 -0.0625q1.0 0 1.5 0.515625q0.515625 0.5 0.515625 1.625l0 2.90625l-0.875 0l0 -2.734375q0 -0.484375 -0.09375 -0.78125q-0.078125 -0.296875 -0.234375 -0.453125q-0.15625 -0.171875 -0.375 -0.234375q-0.21875 -0.0625 -0.46875 -0.0625q-0.21875 0 -0.46875 0.03125q-0.234375 0.015625 -0.453125 0.0625l0 4.171875l-0.890625 0l0 -4.8125zm9.484436 2.34375q0 0.578125 -0.171875 1.0625q-0.15625 0.46875 -0.46875 0.8125q-0.296875 0.34375 -0.71875 0.53125q-0.40625 0.1875 -0.890625 0.1875q-0.484375 0 -0.890625 -0.1875q-0.40625 -0.1875 -0.71875 -0.53125q-0.296875 -0.34375 -0.46875 -0.8125q-0.15625 -0.484375 -0.15625 -1.0625q0 -0.59375 0.15625 -1.0625q0.171875 -0.484375 0.46875 -0.8125q0.3125 -0.34375 0.71875 -0.53125q0.40625 -0.1875 0.890625 -0.1875q0.484375 0 0.890625 0.1875q0.421875 0.1875 0.71875 0.53125q0.3125 0.328125 0.46875 0.8125q0.171875 0.46875 0.171875 1.0625zm-0.90625 0q0 -0.84375 -0.375 -1.328125q-0.359375 -0.484375 -0.96875 -0.484375q-0.609375 0 -0.96875 0.484375q-0.359375 0.484375 -0.359375 1.328125q0 0.828125 0.359375 1.3125q0.359375 0.484375 0.96875 0.484375q0.609375 0 0.96875 -0.484375q0.375 -0.484375 0.375 -1.3125zm5.015686 -1.4375q-0.15625 -0.125 -0.4375 -0.25q-0.28125 -0.125 -0.59375 -0.125q-0.359375 0 -0.609375 0.140625q-0.25 0.140625 -0.40625 0.375q-0.15625 0.234375 -0.234375 0.578125q-0.078125 0.328125 -0.078125 0.71875q0 0.859375 0.40625 1.328125q0.40625 0.46875 1.0625 0.46875q0.328125 0 0.546875 -0.03125q0.234375 -0.03125 0.34375 -0.0625l0 -3.140625zm0 -3.328125l0.890625 -0.15625l0 7.25q-0.296875 0.09375 -0.75 0.171875q-0.4375 0.09375 -1.03125 0.09375q-0.53125 0 -0.96875 -0.1875q-0.4375 -0.1875 -0.75 -0.515625q-0.3125 -0.34375 -0.484375 -0.8125q-0.171875 -0.484375 -0.171875 -1.078125q0 -0.578125 0.140625 -1.046875q0.15625 -0.484375 0.421875 -0.8125q0.28125 -0.34375 0.671875 -0.53125q0.390625 -0.203125 0.890625 -0.203125q0.390625 0 0.6875 0.09375q0.296875 0.09375 0.453125 0.203125l0 -2.46875zm4.406311 2.171875q1.0 0 1.53125 0.625q0.546875 0.625 0.546875 1.890625l0 0.3125l-3.53125 0q0.046875 0.765625 0.5 1.171875q0.453125 0.390625 1.28125 0.390625q0.46875 0 0.796875 -0.078125q0.328125 -0.078125 0.5 -0.15625l0.109375 0.75q-0.15625 0.078125 -0.578125 0.171875q-0.40625 0.109375 -0.921875 0.109375q-0.640625 0 -1.125 -0.203125q-0.484375 -0.203125 -0.8125 -0.53125q-0.3125 -0.34375 -0.484375 -0.8125q-0.15625 -0.484375 -0.15625 -1.046875q0 -0.65625 0.203125 -1.140625q0.203125 -0.5 0.53125 -0.8125q0.328125 -0.3125 0.75 -0.46875q0.421875 -0.171875 0.859375 -0.171875zm1.1875 2.109375q0 -0.625 -0.328125 -0.984375q-0.328125 -0.375 -0.875 -0.375q-0.3125 0 -0.5625 0.125q-0.25 0.109375 -0.4375 0.296875q-0.171875 0.1875 -0.28125 0.4375q-0.109375 0.25 -0.140625 0.5l2.625 0zm2.859436 -0.171875l2.359375 0l0 0.828125l-2.359375 0l0 -0.828125zm7.531311 -0.78125q-0.15625 -0.125 -0.4375 -0.25q-0.28125 -0.125 -0.59375 -0.125q-0.359375 0 -0.609375 0.140625q-0.25 0.140625 -0.40625 0.375q-0.15625 0.234375 -0.234375 0.578125q-0.078125 0.328125 -0.078125 0.71875q0 0.859375 0.40625 1.328125q0.40625 0.46875 1.0625 0.46875q0.328125 0 0.546875 -0.03125q0.234375 -0.03125 0.34375 -0.0625l0 -3.140625zm0 -3.328125l0.890625 -0.15625l0 7.25q-0.296875 0.09375 -0.75 0.171875q-0.4375 0.09375 -1.03125 0.09375q-0.53125 0 -0.96875 -0.1875q-0.4375 -0.1875 -0.75 -0.515625q-0.3125 -0.34375 -0.484375 -0.8125q-0.171875 -0.484375 -0.171875 -1.078125q0 -0.578125 0.140625 -1.046875q0.15625 -0.484375 0.421875 -0.8125q0.28125 -0.34375 0.671875 -0.53125q0.390625 -0.203125 0.890625 -0.203125q0.390625 0 0.6875 0.09375q0.296875 0.09375 0.453125 0.203125l0 -2.46875zm4.406311 2.171875q1.0 0 1.53125 0.625q0.546875 0.625 0.546875 1.890625l0 0.3125l-3.53125 0q0.046875 0.765625 0.5 1.171875q0.453125 0.390625 1.28125 0.390625q0.46875 0 0.796875 -0.078125q0.328125 -0.078125 0.5 -0.15625l0.109375 0.75q-0.15625 0.078125 -0.578125 0.171875q-0.40625 0.109375 -0.921875 0.109375q-0.640625 0 -1.125 -0.203125q-0.484375 -0.203125 -0.8125 -0.53125q-0.3125 -0.34375 -0.484375 -0.8125q-0.15625 -0.484375 -0.15625 -1.046875q0 -0.65625 0.203125 -1.140625q0.203125 -0.5 0.53125 -0.8125q0.328125 -0.3125 0.75 -0.46875q0.421875 -0.171875 0.859375 -0.171875zm1.1875 2.109375q0 -0.625 -0.328125 -0.984375q-0.328125 -0.375 -0.875 -0.375q-0.3125 0 -0.5625 0.125q-0.25 0.109375 -0.4375 0.296875q-0.171875 0.1875 -0.28125 0.4375q-0.109375 0.25 -0.140625 0.5l2.625 0zm3.968811 -1.984375l2.078125 0l0 0.734375l-2.078125 0l0 2.296875q0 0.375 0.046875 0.609375q0.0625 0.234375 0.171875 0.375q0.125 0.140625 0.3125 0.203125q0.203125 0.046875 0.484375 0.046875q0.375 0 0.609375 -0.0625q0.234375 -0.0625 0.453125 -0.171875l0.125 0.75q-0.15625 0.0625 -0.484375 0.171875q-0.3125 0.109375 -0.796875 0.109375q-0.546875 0 -0.90625 -0.125q-0.34375 -0.140625 -0.546875 -0.390625q-0.203125 -0.265625 -0.28125 -0.640625q-0.0625 -0.375 -0.0625 -0.875l0 -2.296875l-1.046875 0l0 -0.734375l1.046875 0l0 -1.390625l0.875 -0.15625l0 1.546875zm5.453186 4.3125q0.328125 0 0.578125 -0.015625q0.265625 -0.03125 0.4375 -0.0625l0 -1.46875q-0.171875 -0.0625 -0.40625 -0.09375q-0.234375 -0.03125 -0.5 -0.03125q-0.25 0 -0.484375 0.046875q-0.234375 0.03125 -0.421875 0.125q-0.171875 0.09375 -0.296875 0.25q-0.109375 0.15625 -0.109375 0.390625q0 0.484375 0.3125 0.671875q0.328125 0.1875 0.890625 0.1875zm-0.09375 -4.4375q0.5625 0 0.9375 0.140625q0.375 0.140625 0.609375 0.390625q0.234375 0.234375 0.328125 0.59375q0.109375 0.34375 0.109375 0.765625l0 3.09375q-0.3125 0.046875 -0.828125 0.125q-0.5 0.078125 -1.03125 0.078125q-0.40625 0 -0.796875 -0.078125q-0.375 -0.0625 -0.671875 -0.234375q-0.296875 -0.1875 -0.484375 -0.484375q-0.171875 -0.3125 -0.171875 -0.796875q0 -0.421875 0.171875 -0.71875q0.1875 -0.296875 0.484375 -0.46875q0.296875 -0.1875 0.671875 -0.265625q0.375 -0.078125 0.765625 -0.078125q0.515625 0 1.015625 0.109375l0 -0.25q0 -0.21875 -0.046875 -0.421875q-0.046875 -0.203125 -0.1875 -0.375q-0.125 -0.171875 -0.359375 -0.265625q-0.21875 -0.109375 -0.578125 -0.109375q-0.46875 0 -0.8125 0.0625q-0.328125 0.0625 -0.515625 0.125l-0.109375 -0.71875q0.1875 -0.09375 0.609375 -0.15625q0.421875 -0.0625 0.890625 -0.0625zm4.937561 -0.65625q-0.28125 0 -0.484375 -0.1875q-0.203125 -0.1875 -0.203125 -0.515625q0 -0.328125 0.203125 -0.515625q0.203125 -0.203125 0.484375 -0.203125q0.28125 0 0.46875 0.203125q0.203125 0.1875 0.203125 0.515625q0 0.328125 -0.203125 0.515625q-0.1875 0.1875 -0.46875 0.1875zm-0.234375 1.515625l-1.421875 0l0 -0.734375l2.296875 0l0 3.03125q0 0.734375 0.203125 0.984375q0.203125 0.25 0.609375 0.25q0.3125 0 0.5625 -0.078125q0.265625 -0.078125 0.421875 -0.15625l0.125 0.75q-0.0625 0.03125 -0.1875 0.078125q-0.109375 0.046875 -0.265625 0.078125q-0.15625 0.046875 -0.34375 0.078125q-0.1875 0.046875 -0.390625 0.046875q-0.46875 0 -0.78125 -0.125q-0.296875 -0.140625 -0.484375 -0.390625q-0.1875 -0.265625 -0.265625 -0.640625q-0.078125 -0.375 -0.078125 -0.875l0 -2.296875zm6.937561 4.328125q-0.46875 0 -0.78125 -0.125q-0.3125 -0.140625 -0.5 -0.390625q-0.171875 -0.265625 -0.25 -0.640625q-0.078125 -0.375 -0.078125 -0.875l0 -4.671875l-1.421875 0l0 -0.75l2.296875 0l0 5.421875q0 0.375 0.046875 0.609375q0.046875 0.234375 0.140625 0.375q0.109375 0.140625 0.25 0.203125q0.15625 0.046875 0.359375 0.046875q0.3125 0 0.578125 -0.078125q0.265625 -0.078125 0.421875 -0.15625l0.125 0.75q-0.0625 0.03125 -0.1875 0.078125q-0.109375 0.046875 -0.28125 0.078125q-0.15625 0.046875 -0.34375 0.078125q-0.1875 0.046875 -0.375 0.046875zm5.171936 -0.8125q0 0.328125 -0.21875 0.578125q-0.203125 0.234375 -0.5625 0.234375q-0.359375 0 -0.578125 -0.234375q-0.203125 -0.25 -0.203125 -0.578125q0 -0.328125 0.203125 -0.5625q0.21875 -0.25 0.578125 -0.25q0.359375 0 0.5625 0.25q0.21875 0.234375 0.21875 0.5625zm5.156311 -5.03125q-0.28125 0 -0.484375 -0.1875q-0.203125 -0.1875 -0.203125 -0.515625q0 -0.328125 0.203125 -0.515625q0.203125 -0.203125 0.484375 -0.203125q0.28125 0 0.484375 0.203125q0.203125 0.1875 0.203125 0.515625q0 0.328125 -0.203125 0.515625q-0.203125 0.1875 -0.484375 0.1875zm-2.0625 1.515625l0 -0.734375l2.875 0l0 4.890625q0 0.5 -0.15625 0.859375q-0.140625 0.359375 -0.375 0.578125q-0.234375 0.234375 -0.546875 0.328125q-0.3125 0.09375 -0.671875 0.09375q-0.40625 0 -0.8125 -0.09375q-0.40625 -0.078125 -0.78125 -0.265625l0.265625 -0.734375q0.28125 0.125 0.59375 0.203125q0.328125 0.09375 0.625 0.09375q0.4375 0 0.703125 -0.21875q0.28125 -0.203125 0.28125 -0.84375l0 -4.15625l-2.0 0zm7.843811 2.96875q0 -0.265625 -0.21875 -0.4375q-0.21875 -0.171875 -0.546875 -0.296875q-0.3125 -0.125 -0.703125 -0.25q-0.375 -0.125 -0.703125 -0.296875q-0.328125 -0.1875 -0.546875 -0.453125q-0.21875 -0.265625 -0.21875 -0.703125q0 -0.59375 0.484375 -0.984375q0.484375 -0.40625 1.515625 -0.40625q0.40625 0 0.84375 0.0625q0.4375 0.0625 0.734375 0.15625l-0.15625 0.78125q-0.078125 -0.046875 -0.234375 -0.09375q-0.140625 -0.046875 -0.34375 -0.078125q-0.1875 -0.03125 -0.40625 -0.046875q-0.21875 -0.03125 -0.421875 -0.03125q-1.15625 0 -1.15625 0.625q0 0.21875 0.21875 0.375q0.21875 0.15625 0.546875 0.28125q0.34375 0.125 0.71875 0.265625q0.390625 0.140625 0.71875 0.328125q0.328125 0.1875 0.546875 0.46875q0.21875 0.265625 0.21875 0.671875q0 0.671875 -0.53125 1.046875q-0.515625 0.375 -1.640625 0.375q-0.515625 0 -0.9375 -0.09375q-0.421875 -0.078125 -0.8125 -0.25l0.171875 -0.796875q0.375 0.15625 0.78125 0.28125q0.40625 0.109375 0.875 0.109375q1.203125 0 1.203125 -0.609375zm6.500061 -1.234375q0 0.578125 -0.171875 1.0625q-0.15625 0.46875 -0.46875 0.8125q-0.296875 0.34375 -0.71875 0.53125q-0.40625 0.1875 -0.890625 0.1875q-0.484375 0 -0.890625 -0.1875q-0.40625 -0.1875 -0.71875 -0.53125q-0.296875 -0.34375 -0.46875 -0.8125q-0.15625 -0.484375 -0.15625 -1.0625q0 -0.59375 0.15625 -1.0625q0.171875 -0.484375 0.46875 -0.8125q0.3125 -0.34375 0.71875 -0.53125q0.40625 -0.1875 0.890625 -0.1875q0.484375 0 0.890625 0.1875q0.421875 0.1875 0.71875 0.53125q0.3125 0.328125 0.46875 0.8125q0.171875 0.46875 0.171875 1.0625zm-0.90625 0q0 -0.84375 -0.375 -1.328125q-0.359375 -0.484375 -0.96875 -0.484375q-0.609375 0 -0.96875 0.484375q-0.359375 0.484375 -0.359375 1.328125q0 0.828125 0.359375 1.3125q0.359375 0.484375 0.96875 0.484375q0.609375 0 0.96875 -0.484375q0.375 -0.484375 0.375 -1.3125zm2.078186 -2.34375q0.484375 -0.109375 0.953125 -0.171875q0.484375 -0.0625 0.890625 -0.0625q1.0 0 1.5 0.515625q0.515625 0.5 0.515625 1.625l0 2.90625l-0.875 0l0 -2.734375q0 -0.484375 -0.09375 -0.78125q-0.078125 -0.296875 -0.234375 -0.453125q-0.15625 -0.171875 -0.375 -0.234375q-0.21875 -0.0625 -0.46875 -0.0625q-0.21875 0 -0.46875 0.03125q-0.234375 0.015625 -0.453125 0.0625l0 4.171875l-0.890625 0l0 -4.8125z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m759.7087 197.33815c11.015747 0 16.52362 -33.04724 22.031494 -66.09448c5.5078735 -33.04725 11.015747 -66.0945 22.031494 -66.0945" fill-rule="evenodd"/><path stroke="#666666" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" stroke-dasharray="4.0,3.0" d="m759.7087 197.33815c11.015747 0 16.52362 -33.04724 22.031494 -66.09448c2.7539062 -16.523628 5.5078735 -33.04725 8.950256 -45.439964c1.7212524 -6.1963577 3.614502 -11.359993 5.7661133 -14.974533c0.53790283 -0.9036331 1.0918579 -1.7104568 1.6633911 -2.412384c0.07141113 -0.08774567 0.14312744 -0.17384338 0.21514893 -0.25829315l0.14990234 -0.1718216" fill-rule="evenodd"/><path fill="#666666" stroke="#666666" stroke-width="1.0" stroke-linecap="butt" d="m799.2661 69.442024l3.2174683 -3.6014938l-4.779724 0.69078827z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m759.7087 132.64911c11.015747 0 16.52362 -16.874023 22.031494 -33.74804c5.5078735 -16.874016 11.015747 -33.74803 22.031494 -33.74803" fill-rule="evenodd"/><path stroke="#666666" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" stroke-dasharray="4.0,3.0" d="m759.7087 132.64911c11.015747 0 16.52362 -16.874023 22.031494 -33.74804c2.7539062 -8.437004 5.5078735 -16.874016 8.950256 -23.201767c1.7212524 -3.1638794 3.614502 -5.8004456 5.7661133 -7.646042c0.2689209 -0.23069763 0.5418701 -0.44903564 0.81903076 -0.65450287c0.13861084 -0.10273743 0.27825928 -0.20224762 0.41900635 -0.2984848c0.070373535 -0.048110962 0.14099121 -0.09540558 0.21185303 -0.14187622l0.119628906 -0.07673645" fill-rule="evenodd"/><path fill="#666666" stroke="#666666" stroke-width="1.0" stroke-linecap="butt" d="m798.50195 68.46336l3.869812 -2.889145l-4.821594 -0.27424622z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m759.7087 70.67979c11.015747 0 16.52362 -1.3858261 22.031494 -2.7716522c5.5078735 -1.3858261 11.015747 -2.7716522 22.031494 -2.7716522" fill-rule="evenodd"/><path stroke="#666666" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" stroke-dasharray="4.0,3.0" d="m759.7087 70.67979c11.015747 0 16.52362 -1.3858261 22.031494 -2.7716522c2.7539062 -0.69290924 5.5078735 -1.3858261 8.950256 -1.90551c1.7212524 -0.25984192 3.614502 -0.4763794 5.7661133 -0.6279526c0.2689209 -0.018943787 0.5418701 -0.036880493 0.81903076 -0.053756714l0.4981079 -0.02796936" fill-rule="evenodd"/><path fill="#666666" stroke="#666666" stroke-width="1.0" stroke-linecap="butt" d="m797.8168 66.94412l4.493469 -1.769516l-4.579651 -1.5328293z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m543.4304 345.2467c13.085327 0 19.62732 -36.97635 26.170654 -73.95273c6.543274 -36.976395 13.087891 -73.952774 26.175842 -73.952774" fill-rule="evenodd"/><path stroke="#666666" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" stroke-dasharray="4.0,3.0" d="m543.4304 345.2467c13.085327 0 19.62732 -36.97635 26.170654 -73.95273c3.2716064 -18.488205 6.54364 -36.976395 10.633667 -50.84253c2.045044 -6.933075 4.2945557 -12.710632 6.850891 -16.754929c0.6390381 -1.0110626 1.2973022 -1.9138184 1.9763184 -2.6992035c0.33947754 -0.3927002 0.6842041 -0.7560425 1.0342407 -1.0889282l0.18139648 -0.1678009" fill-rule="evenodd"/><path fill="#666666" stroke="#666666" stroke-width="1.0" stroke-linecap="butt" d="m590.93805 201.2545l3.4989624 -3.3286896l-4.8200073 0.30085754z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m543.4304 345.2467c13.085327 0 19.62732 -53.149597 26.170654 -106.299194c6.543274 -53.149612 13.087891 -106.29921 26.175842 -106.29921" fill-rule="evenodd"/><path stroke="#666666" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" stroke-dasharray="4.0,3.0" d="m543.4304 345.2467c13.085327 0 19.62732 -53.149597 26.170654 -106.299194c3.2716064 -26.574814 6.54364 -53.149612 10.633667 -73.08072c2.045044 -9.965546 4.2945557 -18.270172 6.850891 -24.083405c0.6390381 -1.4533081 1.2973022 -2.7509003 1.9763184 -3.8798218c0.33947754 -0.5644531 0.6842041 -1.086731 1.0342407 -1.5652313c0.08758545 -0.11961365 0.17541504 -0.23651123 0.26361084 -0.3506317l0.24163818 -0.30387878" fill-rule="evenodd"/><path fill="#666666" stroke="#666666" stroke-width="1.0" stroke-linecap="butt" d="m591.4371 137.10858l3.0787964 -3.7206726l-4.750061 0.87117004z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m543.4304 345.2467c13.085327 0 19.62732 -68.63779 26.170654 -137.27557c6.543274 -68.6378 13.087891 -137.27559 26.175842 -137.27559" fill-rule="evenodd"/><path stroke="#666666" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" stroke-dasharray="4.0,3.0" d="m543.4304 345.2467c13.085327 0 19.62732 -68.63779 26.170654 -137.27557c3.2716064 -34.318893 6.54364 -68.6378 10.633667 -94.37697c2.045044 -12.869591 4.2945557 -23.594246 6.850891 -31.101501c0.6390381 -1.8768158 1.2973022 -3.5525436 1.9763184 -5.0104294c0.33947754 -0.7289429 0.6842041 -1.4034195 1.0342407 -2.021347c0.17510986 -0.30895996 0.35150146 -0.60378265 0.52923584 -0.88420105l0.26287842 -0.40242767" fill-rule="evenodd"/><path fill="#666666" stroke="#666666" stroke-width="1.0" stroke-linecap="butt" d="m591.84595 75.520035l2.7398682 -3.9769058l-4.6551514 1.285347z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m311.1391 211.50656c13.560974 0 20.342377 18.0 27.121918 36.0c6.7795105 18.0 13.557159 36.0 27.114319 36.0" fill-rule="evenodd"/><path stroke="#666666" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" stroke-dasharray="4.0,3.0" d="m311.1391 211.50656c13.560974 0 20.342377 18.0 27.121918 36.0c3.3897705 9.0 6.7790527 18.0 11.015564 24.75c2.118225 3.375 4.4482727 6.1875 7.0960693 8.15625c0.6619568 0.4921875 1.34375 0.9316406 2.0470886 1.3139648c0.35165405 0.19116211 0.7087097 0.368042 1.0713501 0.53009033l0.01449585 0.006286621" fill-rule="evenodd"/><path fill="#666666" stroke="#666666" stroke-width="1.0" stroke-linecap="butt" d="m359.1633 283.87906l4.7818604 -0.67544556l-4.09729 -2.556305z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m311.1391 211.50656c13.560974 0 20.342377 33.433075 27.121918 66.86615c6.7795105 33.433075 13.557159 66.86612 27.114319 66.86612" fill-rule="evenodd"/><path stroke="#666666" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" stroke-dasharray="4.0,3.0" d="m311.1391 211.50656c13.560974 0 20.342377 33.433075 27.121918 66.86615c3.3897705 16.716522 6.7790527 33.433075 11.015564 45.97046c2.118225 6.2687073 4.4482727 11.492615 7.0960693 15.149353c0.6619568 0.9141846 1.34375 1.7304382 2.0470886 2.4405823c0.35165405 0.3550415 0.7087097 0.68356323 1.0713501 0.9845581l0.26608276 0.21496582" fill-rule="evenodd"/><path fill="#666666" stroke="#666666" stroke-width="1.0" stroke-linecap="butt" d="m359.17734 344.67923l4.829132 0.046417236l-3.6694946 -3.1396484z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m311.1391 211.50656c13.560974 0 20.342377 48.716522 27.121918 97.433075c6.7795105 48.716522 13.557159 97.433075 27.114319 97.433075" fill-rule="evenodd"/><path stroke="#666666" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" stroke-dasharray="4.0,3.0" d="m311.1391 211.50656c13.560974 0 20.342377 48.716522 27.121918 97.433075c3.3897705 24.358276 6.7790527 48.716522 11.015564 66.98523c2.118225 9.134338 4.4482727 16.746307 7.0960693 22.074677c0.6619568 1.3321228 1.34375 2.5214539 2.0470886 3.556244c0.35165405 0.517334 0.7087097 0.99606323 1.0713501 1.4346619c0.18130493 0.2192688 0.36401367 0.42852783 0.54815674 0.627594l0.0037841797 0.0039367676" fill-rule="evenodd"/><path fill="#666666" stroke="#666666" stroke-width="1.0" stroke-linecap="butt" d="m359.28577 405.0899l4.790344 0.61257935l-3.2758484 -3.5484314z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m311.1391 211.50656c13.560974 0 20.342377 65.078735 27.121918 130.15747c6.7795105 65.078735 13.557159 130.1575 27.114319 130.1575" fill-rule="evenodd"/><path stroke="#666666" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" stroke-dasharray="4.0,3.0" d="m311.1391 211.50656c13.560974 0 20.342377 65.078735 27.121918 130.15747c3.3897705 32.539368 6.7790527 65.078735 11.015564 89.48328c2.118225 12.2022705 4.4482727 22.37082 7.0960693 29.4888c0.6619568 1.77948 1.34375 3.3683167 2.0470886 4.7506104c0.35165405 0.6911621 0.7087097 1.3306885 1.0713501 1.916565c0.18130493 0.29293823 0.36401367 0.57244873 0.54815674 0.8383179c0.09207153 0.13296509 0.18450928 0.2624817 0.2772827 0.38858032l0.02267456 0.029846191" fill-rule="evenodd"/><path fill="#666666" stroke="#666666" stroke-width="1.0" stroke-linecap="butt" d="m359.44135 469.9464l4.7069397 1.0804443l-2.911255 -3.8532104z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m311.1391 211.50656c13.560974 0 20.342377 81.433075 27.121918 162.86615c6.7795105 81.433075 13.557159 162.86612 27.114319 162.86612" fill-rule="evenodd"/><path stroke="#666666" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" stroke-dasharray="4.0,3.0" d="m311.1391 211.50656c13.560974 0 20.342377 81.433075 27.121918 162.86615c3.3897705 40.716522 6.7790527 81.433075 11.015564 111.97046c2.118225 15.268707 4.4482727 27.992645 7.0960693 36.899384c1.3239136 4.453369 2.7272644 7.9523926 4.2232666 10.338135l0.01071167 0.016784668" fill-rule="evenodd"/><path fill="#666666" stroke="#666666" stroke-width="1.0" stroke-linecap="butt" d="m359.60422 534.9103l4.6092224 1.4413452l-2.6044006 -4.0668945z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m241.83202 190.4042c0 -28.881897 176.9764 -57.76378 353.95276 -57.76378" fill-rule="evenodd"/><path stroke="#666666" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" stroke-dasharray="4.0,3.0" d="m241.83202 190.4042c0 -14.4409485 44.244095 -28.881897 110.610245 -39.7126c33.183075 -5.4153595 71.89664 -9.928146 113.37549 -13.087112c20.73941 -1.579483 42.170166 -2.8204956 63.946533 -3.6666412c10.888184 -0.42308044 21.862793 -0.7474365 32.880676 -0.9660187c5.50885 -0.109298706 11.028564 -0.19215393 16.55371 -0.24768066c2.7625122 -0.027755737 5.526428 -0.048706055 8.291016 -0.062683105l2.295105 -0.008728027" fill-rule="evenodd"/><path fill="#666666" stroke="#666666" stroke-width="1.0" stroke-linecap="butt" d="m589.7882 134.30446l4.534668 -1.6610413l-4.541504 -1.6424103z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m241.83202 190.4042c0 -59.858276 176.9764 -119.71654 353.95276 -119.71654" fill-rule="evenodd"/><path stroke="#666666" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" stroke-dasharray="4.0,3.0" d="m241.83202 190.4042c0 -29.929138 44.244095 -59.858276 110.610245 -82.30512c33.183075 -11.223427 71.89664 -20.576279 113.37549 -27.123276c20.73941 -3.2735062 42.170166 -5.8455353 63.946533 -7.5991974c10.888184 -0.87683105 21.862793 -1.5490723 32.880676 -2.002098c5.50885 -0.2265091 11.028564 -0.39822388 16.55371 -0.51330566c2.7625122 -0.057540894 5.526428 -0.10092926 8.291016 -0.12992859c0.6911011 -0.007255554 1.3823242 -0.013595581 2.0735474 -0.019050598l0.22155762 -0.0014572144" fill-rule="evenodd"/><path fill="#666666" stroke="#666666" stroke-width="1.0" stroke-linecap="butt" d="m589.7912 72.362495l4.5316772 -1.6692047l-4.5444336 -1.6342392z" fill-rule="evenodd"/><path fill="#6aa84f" d="m365.3832 204.00296l178.04721 0l0 42.204727l-178.04721 0z" fill-rule="evenodd"/><path stroke="#38761d" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m365.3832 204.00296l178.04721 0l0 42.204727l-178.04721 0z" fill-rule="evenodd"/><path fill="#ffffff" d="m385.84406 219.02531q0 -3.328125 1.78125 -5.203125q1.78125 -1.890625 4.609375 -1.890625q1.84375 0 3.328125 0.890625q1.484375 0.875 2.265625 2.46875q0.78125 1.578125 0.78125 3.578125q0 2.03125 -0.828125 3.640625q-0.8125 1.59375 -2.3125 2.421875q-1.5 0.828125 -3.25 0.828125q-1.875 0 -3.359375 -0.90625q-1.484375 -0.921875 -2.25 -2.5q-0.765625 -1.578125 -0.765625 -3.328125zm1.8125 0.015625q0 2.421875 1.296875 3.8125q1.296875 1.390625 3.265625 1.390625q2.0 0 3.28125 -1.40625q1.28125 -1.40625 1.28125 -3.984375q0 -1.625 -0.546875 -2.84375q-0.546875 -1.21875 -1.609375 -1.875q-1.0625 -0.671875 -2.375 -0.671875q-1.890625 0 -3.25 1.296875q-1.34375 1.28125 -1.34375 4.28125zm12.636414 2.1875l1.65625 -0.140625q0.125 1.0 0.546875 1.640625q0.4375 0.640625 1.34375 1.046875q0.921875 0.390625 2.0625 0.390625q1.0 0 1.78125 -0.296875q0.78125 -0.296875 1.15625 -0.8125q0.375 -0.53125 0.375 -1.15625q0 -0.625 -0.375 -1.09375q-0.359375 -0.46875 -1.1875 -0.796875q-0.546875 -0.203125 -2.390625 -0.640625q-1.828125 -0.453125 -2.5625 -0.84375q-0.96875 -0.5 -1.4375 -1.234375q-0.46875 -0.75 -0.46875 -1.671875q0 -1.0 0.578125 -1.875q0.578125 -0.890625 1.671875 -1.34375q1.109375 -0.453125 2.453125 -0.453125q1.484375 0 2.609375 0.484375q1.140625 0.46875 1.75 1.40625q0.609375 0.921875 0.65625 2.09375l-1.6875 0.125q-0.140625 -1.265625 -0.9375 -1.90625q-0.78125 -0.65625 -2.3125 -0.65625q-1.609375 0 -2.34375 0.59375q-0.734375 0.59375 -0.734375 1.421875q0 0.71875 0.53125 1.171875q0.5 0.46875 2.65625 0.96875q2.15625 0.484375 2.953125 0.84375q1.171875 0.53125 1.71875 1.359375q0.5625 0.828125 0.5625 1.90625q0 1.0625 -0.609375 2.015625q-0.609375 0.9375 -1.75 1.46875q-1.140625 0.515625 -2.578125 0.515625q-1.8125 0 -3.046875 -0.53125q-1.21875 -0.53125 -1.921875 -1.59375q-0.6875 -1.0625 -0.71875 -2.40625zm13.037323 4.296875l0 -13.359375l4.609375 0q1.546875 0 2.375 0.203125q1.140625 0.25 1.953125 0.953125q1.0625 0.890625 1.578125 2.28125q0.53125 1.390625 0.53125 3.171875q0 1.515625 -0.359375 2.703125q-0.359375 1.171875 -0.921875 1.9375q-0.546875 0.765625 -1.203125 1.21875q-0.65625 0.4375 -1.59375 0.671875q-0.9375 0.21875 -2.140625 0.21875l-4.828125 0zm1.765625 -1.578125l2.859375 0q1.3125 0 2.0625 -0.234375q0.75 -0.25 1.203125 -0.703125q0.625 -0.625 0.96875 -1.6875q0.359375 -1.0625 0.359375 -2.578125q0 -2.09375 -0.6875 -3.21875q-0.6875 -1.125 -1.671875 -1.5q-0.703125 -0.28125 -2.28125 -0.28125l-2.8125 0l0 10.203125zm17.1875 1.578125l0 -13.359375l1.765625 0l0 13.359375l-1.765625 0zm4.683319 0l0 -9.671875l1.46875 0l0 1.375q1.0625 -1.59375 3.078125 -1.59375q0.875 0 1.609375 0.3125q0.734375 0.3125 1.09375 0.828125q0.375 0.5 0.515625 1.203125q0.09375 0.453125 0.09375 1.59375l0 5.953125l-1.640625 0l0 -5.890625q0 -1.0 -0.203125 -1.484375q-0.1875 -0.5 -0.671875 -0.796875q-0.484375 -0.296875 -1.140625 -0.296875q-1.046875 0 -1.8125 0.671875q-0.75 0.65625 -0.75 2.515625l0 5.28125l-1.640625 0zm10.766327 0l0 -8.40625l-1.453125 0l0 -1.265625l1.453125 0l0 -1.03125q0 -0.96875 0.171875 -1.453125q0.234375 -0.640625 0.828125 -1.03125q0.59375 -0.390625 1.671875 -0.390625q0.6875 0 1.53125 0.15625l-0.25 1.4375q-0.5 -0.09375 -0.953125 -0.09375q-0.75 0 -1.0625 0.328125q-0.3125 0.3125 -0.3125 1.1875l0 0.890625l1.890625 0l0 1.265625l-1.890625 0l0 8.40625l-1.625 0zm4.183319 -4.84375q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm9.281952 4.84375l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm6.228302 0l0 -9.671875l1.46875 0l0 1.359375q0.453125 -0.71875 1.203125 -1.140625q0.765625 -0.4375 1.71875 -0.4375q1.078125 0 1.765625 0.453125q0.6875 0.4375 0.96875 1.234375q1.15625 -1.6875 2.984375 -1.6875q1.453125 0 2.21875 0.796875q0.78125 0.796875 0.78125 2.453125l0 6.640625l-1.640625 0l0 -6.09375q0 -0.984375 -0.15625 -1.40625q-0.15625 -0.4375 -0.578125 -0.703125q-0.421875 -0.265625 -0.984375 -0.265625q-1.015625 0 -1.6875 0.6875q-0.671875 0.671875 -0.671875 2.15625l0 5.625l-1.640625 0l0 -6.28125q0 -1.09375 -0.40625 -1.640625q-0.40625 -0.546875 -1.3125 -0.546875q-0.6875 0 -1.28125 0.359375q-0.59375 0.359375 -0.859375 1.0625q-0.25 0.703125 -0.25 2.03125l0 5.015625l-1.640625 0zm21.853302 -1.1875q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm7.7819824 3.390625l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm1.6051636 -10.0l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm3.5354614 -4.84375q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.2655945 1.296875 1.2655945 3.609375q0 1.859375 -0.5625 2.9375q-0.5624695 1.0625 -1.6405945 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm9.297577 4.84375l0 -9.671875l1.46875 0l0 1.375q1.0625 -1.59375 3.078125 -1.59375q0.875 0 1.609375 0.3125q0.734375 0.3125 1.09375 0.828125q0.375 0.5 0.515625 1.203125q0.09375 0.453125 0.09375 1.59375l0 5.953125l-1.640625 0l0 -5.890625q0 -1.0 -0.203125 -1.484375q-0.1875 -0.5 -0.671875 -0.796875q-0.484375 -0.296875 -1.140625 -0.296875q-1.046875 0 -1.8125 0.671875q-0.75 0.65625 -0.75 2.515625l0 5.28125l-1.640625 0z" fill-rule="nonzero"/><path fill="#ffffff" d="m388.32013 237.37657q0 -0.671875 0.21875 -1.15625q0.21875 -0.484375 0.578125 -0.796875q0.375 -0.328125 0.875 -0.484375q0.5 -0.15625 1.0625 -0.15625q0.359375 0 0.71875 0.046875q0.359375 0.046875 0.765625 0.171875l-0.203125 0.765625q-0.359375 -0.125 -0.65625 -0.15625q-0.28125 -0.046875 -0.578125 -0.046875q-0.390625 0 -0.734375 0.109375q-0.328125 0.09375 -0.59375 0.3125q-0.25 0.21875 -0.40625 0.5625q-0.140625 0.34375 -0.140625 0.828125q0 0.46875 0.140625 0.8125q0.140625 0.328125 0.390625 0.546875q0.25 0.21875 0.59375 0.328125q0.359375 0.109375 0.78125 0.109375q0.34375 0 0.65625 -0.03125q0.328125 -0.046875 0.6875 -0.171875l0.140625 0.734375q-0.375 0.140625 -0.765625 0.203125q-0.375 0.0625 -0.828125 0.0625q-0.59375 0 -1.09375 -0.171875q-0.5 -0.171875 -0.859375 -0.484375q-0.34375 -0.328125 -0.546875 -0.8125q-0.203125 -0.484375 -0.203125 -1.125zm7.578186 -2.59375q1.0 0 1.53125 0.625q0.546875 0.625 0.546875 1.890625l0 0.3125l-3.53125 0q0.046875 0.765625 0.5 1.171875q0.453125 0.390625 1.28125 0.390625q0.46875 0 0.796875 -0.078125q0.328125 -0.078125 0.5 -0.15625l0.109375 0.75q-0.15625 0.078125 -0.578125 0.171875q-0.40625 0.109375 -0.921875 0.109375q-0.640625 0 -1.125 -0.203125q-0.484375 -0.203125 -0.8125 -0.53125q-0.3125 -0.34375 -0.484375 -0.8125q-0.15625 -0.484375 -0.15625 -1.046875q0 -0.65625 0.203125 -1.140625q0.203125 -0.5 0.53125 -0.8125q0.328125 -0.3125 0.75 -0.46875q0.421875 -0.171875 0.859375 -0.171875zm1.1875 2.109375q0 -0.625 -0.328125 -0.984375q-0.328125 -0.375 -0.875 -0.375q-0.3125 0 -0.5625 0.125q-0.25 0.109375 -0.4375 0.296875q-0.171875 0.1875 -0.28125 0.4375q-0.109375 0.25 -0.140625 0.5l2.625 0zm5.375061 0.484375q0 -0.859375 -0.40625 -1.328125q-0.40625 -0.46875 -1.0625 -0.46875q-0.359375 0 -0.5625 0.03125q-0.203125 0.03125 -0.328125 0.0625l0 3.125q0.15625 0.140625 0.4375 0.265625q0.28125 0.109375 0.59375 0.109375q0.359375 0 0.609375 -0.140625q0.25 -0.140625 0.40625 -0.375q0.15625 -0.234375 0.234375 -0.5625q0.078125 -0.328125 0.078125 -0.71875zm0.90625 0q0 0.578125 -0.15625 1.046875q-0.140625 0.46875 -0.40625 0.8125q-0.265625 0.34375 -0.671875 0.546875q-0.390625 0.1875 -0.890625 0.1875q-0.390625 0 -0.6875 -0.109375q-0.296875 -0.09375 -0.453125 -0.203125l0 1.953125l-0.890625 0l0 -6.5625q0.296875 -0.078125 0.75 -0.15625q0.453125 -0.09375 1.03125 -0.09375q0.53125 0 0.96875 0.1875q0.4375 0.171875 0.75 0.515625q0.3125 0.328125 0.484375 0.8125q0.171875 0.46875 0.171875 1.0625zm1.171936 2.46875l0 -7.234375l0.890625 -0.15625l0 2.515625q0.21875 -0.078125 0.484375 -0.125q0.265625 -0.046875 0.515625 -0.046875q0.5625 0 0.9375 0.171875q0.390625 0.15625 0.609375 0.453125q0.21875 0.296875 0.3125 0.71875q0.109375 0.40625 0.109375 0.90625l0 2.796875l-0.875 0l0 -2.59375q0 -0.921875 -0.265625 -1.296875q-0.25 -0.375 -0.90625 -0.375q-0.28125 0 -0.546875 0.0625q-0.25 0.046875 -0.375 0.09375l0 4.109375l-0.890625 0zm6.062561 -3.125l2.359375 0l0 0.828125l-2.359375 0l0 -0.828125zm8.750061 0.65625q0 0.578125 -0.171875 1.0625q-0.15625 0.46875 -0.46875 0.8125q-0.296875 0.34375 -0.71875 0.53125q-0.40625 0.1875 -0.890625 0.1875q-0.484375 0 -0.890625 -0.1875q-0.40625 -0.1875 -0.71875 -0.53125q-0.296875 -0.34375 -0.46875 -0.8125q-0.15625 -0.484375 -0.15625 -1.0625q0 -0.59375 0.15625 -1.0625q0.171875 -0.484375 0.46875 -0.8125q0.3125 -0.34375 0.71875 -0.53125q0.40625 -0.1875 0.890625 -0.1875q0.484375 0 0.890625 0.1875q0.421875 0.1875 0.71875 0.53125q0.3125 0.328125 0.46875 0.8125q0.171875 0.46875 0.171875 1.0625zm-0.90625 0q0 -0.84375 -0.375 -1.328125q-0.359375 -0.484375 -0.96875 -0.484375q-0.609375 0 -0.96875 0.484375q-0.359375 0.484375 -0.359375 1.328125q0 0.828125 0.359375 1.3125q0.359375 0.484375 0.96875 0.484375q0.609375 0 0.96875 -0.484375q0.375 -0.484375 0.375 -1.3125zm5.062561 1.234375q0 -0.265625 -0.21875 -0.4375q-0.21875 -0.171875 -0.546875 -0.296875q-0.3125 -0.125 -0.703125 -0.25q-0.375 -0.125 -0.703125 -0.296875q-0.328125 -0.1875 -0.546875 -0.453125q-0.21875 -0.265625 -0.21875 -0.703125q0 -0.59375 0.484375 -0.984375q0.484375 -0.40625 1.515625 -0.40625q0.40625 0 0.84375 0.0625q0.4375 0.0625 0.734375 0.15625l-0.15625 0.78125q-0.078125 -0.046875 -0.234375 -0.09375q-0.140625 -0.046875 -0.34375 -0.078125q-0.1875 -0.03125 -0.40625 -0.046875q-0.21875 -0.03125 -0.421875 -0.03125q-1.15625 0 -1.15625 0.625q0 0.21875 0.21875 0.375q0.21875 0.15625 0.546875 0.28125q0.34375 0.125 0.71875 0.265625q0.390625 0.140625 0.71875 0.328125q0.328125 0.1875 0.546875 0.46875q0.21875 0.265625 0.21875 0.671875q0 0.671875 -0.53125 1.046875q-0.515625 0.375 -1.640625 0.375q-0.515625 0 -0.9375 -0.09375q-0.421875 -0.078125 -0.8125 -0.25l0.171875 -0.796875q0.375 0.15625 0.78125 0.28125q0.40625 0.109375 0.875 0.109375q1.203125 0 1.203125 -0.609375zm5.281311 -2.671875q-0.15625 -0.125 -0.4375 -0.25q-0.28125 -0.125 -0.59375 -0.125q-0.359375 0 -0.609375 0.140625q-0.25 0.140625 -0.40625 0.375q-0.15625 0.234375 -0.234375 0.578125q-0.078125 0.328125 -0.078125 0.71875q0 0.859375 0.40625 1.328125q0.40625 0.46875 1.0625 0.46875q0.328125 0 0.546875 -0.03125q0.234375 -0.03125 0.34375 -0.0625l0 -3.140625zm0 -3.328125l0.890625 -0.15625l0 7.25q-0.296875 0.09375 -0.75 0.171875q-0.4375 0.09375 -1.03125 0.09375q-0.53125 0 -0.96875 -0.1875q-0.4375 -0.1875 -0.75 -0.515625q-0.3125 -0.34375 -0.484375 -0.8125q-0.171875 -0.484375 -0.171875 -1.078125q0 -0.578125 0.140625 -1.046875q0.15625 -0.484375 0.421875 -0.8125q0.28125 -0.34375 0.671875 -0.53125q0.390625 -0.203125 0.890625 -0.203125q0.390625 0 0.6875 0.09375q0.296875 0.09375 0.453125 0.203125l0 -2.46875zm3.125061 4.109375l2.359375 0l0 0.828125l-2.359375 0l0 -0.828125zm6.078186 -2.59375q-0.28125 0 -0.484375 -0.1875q-0.203125 -0.1875 -0.203125 -0.515625q0 -0.328125 0.203125 -0.515625q0.203125 -0.203125 0.484375 -0.203125q0.28125 0 0.46875 0.203125q0.203125 0.1875 0.203125 0.515625q0 0.328125 -0.203125 0.515625q-0.1875 0.1875 -0.46875 0.1875zm-0.234375 1.515625l-1.421875 0l0 -0.734375l2.296875 0l0 3.03125q0 0.734375 0.203125 0.984375q0.203125 0.25 0.609375 0.25q0.3125 0 0.5625 -0.078125q0.265625 -0.078125 0.421875 -0.15625l0.125 0.75q-0.0625 0.03125 -0.1875 0.078125q-0.109375 0.046875 -0.265625 0.078125q-0.15625 0.046875 -0.34375 0.078125q-0.1875 0.046875 -0.390625 0.046875q-0.46875 0 -0.78125 -0.125q-0.296875 -0.140625 -0.484375 -0.390625q-0.1875 -0.265625 -0.265625 -0.640625q-0.078125 -0.375 -0.078125 -0.875l0 -2.296875zm4.078186 -0.609375q0.484375 -0.109375 0.953125 -0.171875q0.484375 -0.0625 0.890625 -0.0625q1.0 0 1.5 0.515625q0.515625 0.5 0.515625 1.625l0 2.90625l-0.875 0l0 -2.734375q0 -0.484375 -0.09375 -0.78125q-0.078125 -0.296875 -0.234375 -0.453125q-0.15625 -0.171875 -0.375 -0.234375q-0.21875 -0.0625 -0.46875 -0.0625q-0.21875 0 -0.46875 0.03125q-0.234375 0.015625 -0.453125 0.0625l0 4.171875l-0.890625 0l0 -4.8125zm6.296936 4.8125l0 -4.203125l-1.046875 0l0 -0.734375l1.046875 0l0 -0.453125q0 -0.578125 0.15625 -0.953125q0.15625 -0.375 0.421875 -0.609375q0.265625 -0.234375 0.609375 -0.328125q0.34375 -0.109375 0.734375 -0.109375q0.375 0 0.765625 0.09375q0.390625 0.078125 0.734375 0.203125l-0.171875 0.75q-0.234375 -0.109375 -0.59375 -0.1875q-0.34375 -0.09375 -0.703125 -0.09375q-0.21875 0 -0.421875 0.0625q-0.1875 0.046875 -0.34375 0.203125q-0.140625 0.140625 -0.234375 0.375q-0.078125 0.234375 -0.078125 0.609375l0 0.4375l1.984375 0l0 0.734375l-1.984375 0l0 4.203125l-0.875 0zm8.515686 -2.46875q0 0.578125 -0.171875 1.0625q-0.15625 0.46875 -0.46875 0.8125q-0.296875 0.34375 -0.71875 0.53125q-0.40625 0.1875 -0.890625 0.1875q-0.484375 0 -0.890625 -0.1875q-0.40625 -0.1875 -0.71875 -0.53125q-0.296875 -0.34375 -0.46875 -0.8125q-0.15625 -0.484375 -0.15625 -1.0625q0 -0.59375 0.15625 -1.0625q0.171875 -0.484375 0.46875 -0.8125q0.3125 -0.34375 0.71875 -0.53125q0.40625 -0.1875 0.890625 -0.1875q0.484375 0 0.890625 0.1875q0.421875 0.1875 0.71875 0.53125q0.3125 0.328125 0.46875 0.8125q0.171875 0.46875 0.171875 1.0625zm-0.90625 0q0 -0.84375 -0.375 -1.328125q-0.359375 -0.484375 -0.96875 -0.484375q-0.609375 0 -0.96875 0.484375q-0.359375 0.484375 -0.359375 1.328125q0 0.828125 0.359375 1.3125q0.359375 0.484375 0.96875 0.484375q0.609375 0 0.96875 -0.484375q0.375 -0.484375 0.375 -1.3125zm2.468811 2.46875l0 -4.671875q1.09375 -0.375 2.1875 -0.375q0.34375 0 0.65625 0.03125q0.3125 0.015625 0.6875 0.109375l-0.171875 0.765625q-0.328125 -0.09375 -0.59375 -0.109375q-0.265625 -0.03125 -0.578125 -0.03125q-0.640625 0 -1.3125 0.171875l0 4.109375l-0.875 0zm4.625061 -4.8125q0.640625 -0.234375 1.203125 -0.234375q0.3125 0 0.578125 0.09375q0.28125 0.078125 0.46875 0.28125q0.453125 -0.375 0.984375 -0.375q0.25 0 0.46875 0.09375q0.234375 0.09375 0.40625 0.296875q0.1875 0.1875 0.28125 0.46875q0.109375 0.28125 0.109375 0.671875l0 3.515625l-0.796875 0l0 -3.53125q0 -0.390625 -0.171875 -0.59375q-0.171875 -0.203125 -0.421875 -0.203125q-0.125 0 -0.265625 0.0625q-0.140625 0.0625 -0.25 0.203125q0.0625 0.25 0.0625 0.546875l0 1.609375l-0.796875 0l0 -1.625q0 -0.375 -0.125 -0.578125q-0.109375 -0.21875 -0.453125 -0.21875q-0.21875 0 -0.484375 0.09375l0 4.234375l-0.796875 0l0 -4.8125zm7.609436 4.1875q0.328125 0 0.578125 -0.015625q0.265625 -0.03125 0.4375 -0.0625l0 -1.46875q-0.171875 -0.0625 -0.40625 -0.09375q-0.234375 -0.03125 -0.5 -0.03125q-0.25 0 -0.484375 0.046875q-0.234375 0.03125 -0.421875 0.125q-0.171875 0.09375 -0.296875 0.25q-0.109375 0.15625 -0.109375 0.390625q0 0.484375 0.3125 0.671875q0.328125 0.1875 0.890625 0.1875zm-0.09375 -4.4375q0.5625 0 0.9375 0.140625q0.375 0.140625 0.609375 0.390625q0.234375 0.234375 0.328125 0.59375q0.109375 0.34375 0.109375 0.765625l0 3.09375q-0.3125 0.046875 -0.828125 0.125q-0.5 0.078125 -1.03125 0.078125q-0.40625 0 -0.796875 -0.078125q-0.375 -0.0625 -0.671875 -0.234375q-0.296875 -0.1875 -0.484375 -0.484375q-0.171875 -0.3125 -0.171875 -0.796875q0 -0.421875 0.171875 -0.71875q0.1875 -0.296875 0.484375 -0.46875q0.296875 -0.1875 0.671875 -0.265625q0.375 -0.078125 0.765625 -0.078125q0.515625 0 1.015625 0.109375l0 -0.25q0 -0.21875 -0.046875 -0.421875q-0.046875 -0.203125 -0.1875 -0.375q-0.125 -0.171875 -0.359375 -0.265625q-0.21875 -0.109375 -0.578125 -0.109375q-0.46875 0 -0.8125 0.0625q-0.328125 0.0625 -0.515625 0.125l-0.109375 -0.71875q0.1875 -0.09375 0.609375 -0.15625q0.421875 -0.0625 0.890625 -0.0625zm5.296936 0.125l2.078125 0l0 0.734375l-2.078125 0l0 2.296875q0 0.375 0.046875 0.609375q0.0625 0.234375 0.171875 0.375q0.125 0.140625 0.3125 0.203125q0.203125 0.046875 0.484375 0.046875q0.375 0 0.609375 -0.0625q0.234375 -0.0625 0.453125 -0.171875l0.125 0.75q-0.15625 0.0625 -0.484375 0.171875q-0.3125 0.109375 -0.796875 0.109375q-0.546875 0 -0.90625 -0.125q-0.34375 -0.140625 -0.546875 -0.390625q-0.203125 -0.265625 -0.28125 -0.640625q-0.0625 -0.375 -0.0625 -0.875l0 -2.296875l-1.046875 0l0 -0.734375l1.046875 0l0 -1.390625l0.875 -0.15625l0 1.546875zm4.968811 -0.78125q-0.28125 0 -0.484375 -0.1875q-0.203125 -0.1875 -0.203125 -0.515625q0 -0.328125 0.203125 -0.515625q0.203125 -0.203125 0.484375 -0.203125q0.28125 0 0.46875 0.203125q0.203125 0.1875 0.203125 0.515625q0 0.328125 -0.203125 0.515625q-0.1875 0.1875 -0.46875 0.1875zm-0.234375 1.515625l-1.421875 0l0 -0.734375l2.296875 0l0 3.03125q0 0.734375 0.203125 0.984375q0.203125 0.25 0.609375 0.25q0.3125 0 0.5625 -0.078125q0.265625 -0.078125 0.421875 -0.15625l0.125 0.75q-0.0625 0.03125 -0.1875 0.078125q-0.109375 0.046875 -0.265625 0.078125q-0.15625 0.046875 -0.34375 0.078125q-0.1875 0.046875 -0.390625 0.046875q-0.46875 0 -0.78125 -0.125q-0.296875 -0.140625 -0.484375 -0.390625q-0.1875 -0.265625 -0.265625 -0.640625q-0.078125 -0.375 -0.078125 -0.875l0 -2.296875zm8.234436 1.734375q0 0.578125 -0.171875 1.0625q-0.15625 0.46875 -0.46875 0.8125q-0.296875 0.34375 -0.71875 0.53125q-0.40625 0.1875 -0.890625 0.1875q-0.484375 0 -0.890625 -0.1875q-0.40625 -0.1875 -0.71875 -0.53125q-0.296875 -0.34375 -0.46875 -0.8125q-0.15625 -0.484375 -0.15625 -1.0625q0 -0.59375 0.15625 -1.0625q0.171875 -0.484375 0.46875 -0.8125q0.3125 -0.34375 0.71875 -0.53125q0.40625 -0.1875 0.890625 -0.1875q0.484375 0 0.890625 0.1875q0.421875 0.1875 0.71875 0.53125q0.3125 0.328125 0.46875 0.8125q0.171875 0.46875 0.171875 1.0625zm-0.90625 0q0 -0.84375 -0.375 -1.328125q-0.359375 -0.484375 -0.96875 -0.484375q-0.609375 0 -0.96875 0.484375q-0.359375 0.484375 -0.359375 1.328125q0 0.828125 0.359375 1.3125q0.359375 0.484375 0.96875 0.484375q0.609375 0 0.96875 -0.484375q0.375 -0.484375 0.375 -1.3125zm2.078186 -2.34375q0.484375 -0.109375 0.953125 -0.171875q0.484375 -0.0625 0.890625 -0.0625q1.0 0 1.5 0.515625q0.515625 0.5 0.515625 1.625l0 2.90625l-0.875 0l0 -2.734375q0 -0.484375 -0.09375 -0.78125q-0.078125 -0.296875 -0.234375 -0.453125q-0.15625 -0.171875 -0.375 -0.234375q-0.21875 -0.0625 -0.46875 -0.0625q-0.21875 0 -0.46875 0.03125q-0.234375 0.015625 -0.453125 0.0625l0 4.171875l-0.890625 0l0 -4.8125zm8.031311 4.125q0 0.328125 -0.21875 0.578125q-0.203125 0.234375 -0.5625 0.234375q-0.359375 0 -0.578125 -0.234375q-0.203125 -0.25 -0.203125 -0.578125q0 -0.328125 0.203125 -0.5625q0.21875 -0.25 0.578125 -0.25q0.359375 0 0.5625 0.25q0.21875 0.234375 0.21875 0.5625zm5.156311 -5.03125q-0.28125 0 -0.484375 -0.1875q-0.203125 -0.1875 -0.203125 -0.515625q0 -0.328125 0.203125 -0.515625q0.203125 -0.203125 0.484375 -0.203125q0.28125 0 0.484375 0.203125q0.203125 0.1875 0.203125 0.515625q0 0.328125 -0.203125 0.515625q-0.203125 0.1875 -0.484375 0.1875zm-2.0625 1.515625l0 -0.734375l2.875 0l0 4.890625q0 0.5 -0.15625 0.859375q-0.140625 0.359375 -0.375 0.578125q-0.234375 0.234375 -0.546875 0.328125q-0.3125 0.09375 -0.671875 0.09375q-0.40625 0 -0.8125 -0.09375q-0.40625 -0.078125 -0.78125 -0.265625l0.265625 -0.734375q0.28125 0.125 0.59375 0.203125q0.328125 0.09375 0.625 0.09375q0.4375 0 0.703125 -0.21875q0.28125 -0.203125 0.28125 -0.84375l0 -4.15625l-2.0 0zm7.843811 2.96875q0 -0.265625 -0.21875 -0.4375q-0.21875 -0.171875 -0.546875 -0.296875q-0.3125 -0.125 -0.703125 -0.25q-0.375 -0.125 -0.703125 -0.296875q-0.328125 -0.1875 -0.546875 -0.453125q-0.21875 -0.265625 -0.21875 -0.703125q0 -0.59375 0.484375 -0.984375q0.484375 -0.40625 1.515625 -0.40625q0.40625 0 0.84375 0.0625q0.4375 0.0625 0.734375 0.15625l-0.15625 0.78125q-0.078125 -0.046875 -0.234375 -0.09375q-0.140625 -0.046875 -0.34375 -0.078125q-0.1875 -0.03125 -0.40625 -0.046875q-0.21875 -0.03125 -0.421875 -0.03125q-1.15625 0 -1.15625 0.625q0 0.21875 0.21875 0.375q0.21875 0.15625 0.546875 0.28125q0.34375 0.125 0.71875 0.265625q0.390625 0.140625 0.71875 0.328125q0.328125 0.1875 0.546875 0.46875q0.21875 0.265625 0.21875 0.671875q0 0.671875 -0.53125 1.046875q-0.515625 0.375 -1.640625 0.375q-0.515625 0 -0.9375 -0.09375q-0.421875 -0.078125 -0.8125 -0.25l0.171875 -0.796875q0.375 0.15625 0.78125 0.28125q0.40625 0.109375 0.875 0.109375q1.203125 0 1.203125 -0.609375zm6.500061 -1.234375q0 0.578125 -0.171875 1.0625q-0.15625 0.46875 -0.46875 0.8125q-0.296875 0.34375 -0.71875 0.53125q-0.40625 0.1875 -0.890625 0.1875q-0.484375 0 -0.890625 -0.1875q-0.40625 -0.1875 -0.71875 -0.53125q-0.296875 -0.34375 -0.46875 -0.8125q-0.15625 -0.484375 -0.15625 -1.0625q0 -0.59375 0.15625 -1.0625q0.171875 -0.484375 0.46875 -0.8125q0.3125 -0.34375 0.71875 -0.53125q0.40625 -0.1875 0.890625 -0.1875q0.484375 0 0.890625 0.1875q0.421875 0.1875 0.71875 0.53125q0.3125 0.328125 0.46875 0.8125q0.171875 0.46875 0.171875 1.0625zm-0.90625 0q0 -0.84375 -0.375 -1.328125q-0.359375 -0.484375 -0.96875 -0.484375q-0.609375 0 -0.96875 0.484375q-0.359375 0.484375 -0.359375 1.328125q0 0.828125 0.359375 1.3125q0.359375 0.484375 0.96875 0.484375q0.609375 0 0.96875 -0.484375q0.375 -0.484375 0.375 -1.3125zm2.078186 -2.34375q0.484375 -0.109375 0.953125 -0.171875q0.484375 -0.0625 0.890625 -0.0625q1.0 0 1.5 0.515625q0.515625 0.5 0.515625 1.625l0 2.90625l-0.875 0l0 -2.734375q0 -0.484375 -0.09375 -0.78125q-0.078125 -0.296875 -0.234375 -0.453125q-0.15625 -0.171875 -0.375 -0.234375q-0.21875 -0.0625 -0.46875 -0.0625q-0.21875 0 -0.46875 0.03125q-0.234375 0.015625 -0.453125 0.0625l0 4.171875l-0.890625 0l0 -4.8125z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m311.1391 211.50656c13.560974 0 20.342377 3.4015808 27.121918 6.8031464c6.7795105 3.4015808 13.557159 6.8031464 27.114319 6.8031464" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" stroke-dasharray="4.0,3.0" d="m311.1391 211.50656c13.560974 0 20.342377 3.4015808 27.121918 6.8031464c3.3897705 1.7007904 6.7790527 3.4015808 11.015564 4.67717c2.118225 0.63778687 4.4482727 1.1692963 7.0960693 1.541336c0.6619568 0.09301758 1.34375 0.17605591 2.0470886 0.24832153c0.17584229 0.018035889 0.35302734 0.03543091 0.5315857 0.052139282l0.42904663 0.03816223" fill-rule="evenodd"/><path fill="#000000" stroke="#000000" stroke-width="1.0" stroke-linecap="butt" d="m359.31265 226.5172l4.6019897 -1.4642792l-4.4665527 -1.8364105z" fill-rule="evenodd"/><path fill="#990000" d="m36.524933 30.4042l138.61418 0l0 42.204727l-138.61418 0z" fill-rule="evenodd"/><path stroke="#660000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m36.524933 30.4042l138.61418 0l0 42.204727l-138.61418 0z" fill-rule="evenodd"/><path fill="#ffffff" d="m53.954067 51.92656l5.125 -13.359375l1.90625 0l5.468754 13.359375l-2.015625 0l-1.5468788 -4.046875l-5.59375 0l-1.46875 4.046875l-1.875 0zm3.859375 -5.484375l4.53125 0l-1.40625 -3.703125q-0.625 -1.6875 -0.9375 -2.765625q-0.265625 1.28125 -0.71875 2.546875l-1.46875 3.921875zm9.802952 5.484375l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0zm10.816696 -3.109375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.125717 5.765625l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm9.806427 -1.46875l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm6.3978577 -2.828125l1.65625 -0.140625q0.125 1.0 0.546875 1.640625q0.4375 0.640625 1.34375 1.046875q0.921875 0.390625 2.0625 0.390625q1.0 0 1.78125 -0.296875q0.78125 -0.296875 1.15625 -0.8125q0.375 -0.53125 0.375 -1.15625q0 -0.625 -0.375 -1.09375q-0.359375 -0.46875 -1.1875 -0.796875q-0.546875 -0.203125 -2.390625 -0.640625q-1.828125 -0.453125 -2.5625 -0.84375q-0.96875 -0.5 -1.4375 -1.234375q-0.46875 -0.75 -0.46875 -1.671875q0 -1.0 0.578125 -1.875q0.578125 -0.890625 1.671875 -1.34375q1.109375 -0.453125 2.453125 -0.453125q1.484375 0 2.609375 0.484375q1.140625 0.46875 1.75 1.40625q0.609375 0.921875 0.65625 2.09375l-1.6875 0.125q-0.140625 -1.265625 -0.9375 -1.90625q-0.78125 -0.65625 -2.3125 -0.65625q-1.609375 0 -2.34375 0.59375q-0.734375 0.59375 -0.734375 1.421875q0 0.71875 0.53125 1.171875q0.5 0.46875 2.65625 0.96875q2.15625 0.484375 2.953125 0.84375q1.171875 0.53125 1.71875 1.359375q0.5625 0.828125 0.5625 1.90625q0 1.0625 -0.609375 2.015625q-0.609375 0.9375 -1.75 1.46875q-1.140625 0.515625 -2.578125 0.515625q-1.8125 0 -3.046875 -0.53125q-1.21875 -0.53125 -1.921875 -1.59375q-0.6875 -1.0625 -0.71875 -2.40625zm16.412323 2.828125l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm7.917679 0.28125q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm7.781967 3.390625l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm7.933304 1.46875l0 -1.421875q-1.125 1.640625 -3.0625 1.640625q-0.859375 0 -1.609375 -0.328125q-0.734375 -0.328125 -1.09375 -0.828125q-0.359375 -0.5 -0.5 -1.21875q-0.109375 -0.46875 -0.109375 -1.53125l0 -5.984375l1.640625 0l0 5.359375q0 1.28125 0.109375 1.734375q0.15625 0.640625 0.65625 1.015625q0.5 0.375 1.234375 0.375q0.734375 0 1.375 -0.375q0.65625 -0.390625 0.921875 -1.03125q0.265625 -0.65625 0.265625 -1.890625l0 -5.1875l1.640625 0l0 9.671875l-1.46875 0zm3.3913422 -2.890625l1.625 -0.25q0.125 0.96875 0.75 1.5q0.625 0.515625 1.75 0.515625q1.125 0 1.671875 -0.453125q0.546875 -0.46875 0.546875 -1.09375q0 -0.546875 -0.484375 -0.875q-0.328125 -0.21875 -1.671875 -0.546875q-1.8125 -0.46875 -2.515625 -0.796875q-0.6875 -0.328125 -1.046875 -0.90625q-0.359375 -0.59375 -0.359375 -1.3125q0 -0.640625 0.296875 -1.1875q0.296875 -0.5625 0.8125 -0.921875q0.375 -0.28125 1.03125 -0.46875q0.671875 -0.203125 1.421875 -0.203125q1.140625 0 2.0 0.328125q0.859375 0.328125 1.265625 0.890625q0.421875 0.5625 0.578125 1.5l-1.609375 0.21875q-0.109375 -0.75 -0.640625 -1.171875q-0.515625 -0.421875 -1.46875 -0.421875q-1.140625 0 -1.625 0.375q-0.46875 0.375 -0.46875 0.875q0 0.3125 0.1875 0.578125q0.203125 0.265625 0.640625 0.4375q0.234375 0.09375 1.4375 0.421875q1.75 0.453125 2.4375 0.75q0.6875 0.296875 1.078125 0.859375q0.390625 0.5625 0.390625 1.40625q0 0.828125 -0.484375 1.546875q-0.46875 0.71875 -1.375 1.125q-0.90625 0.390625 -2.046875 0.390625q-1.875 0 -2.875 -0.78125q-0.984375 -0.78125 -1.25 -2.328125zm9.328125 -8.015625l0.421875 -1.296875q1.453125 0.515625 2.109375 0.890625q-0.171875 -1.65625 -0.1875 -2.265625l1.328125 0q-0.03125 0.890625 -0.21875 2.25q0.9375 -0.46875 2.15625 -0.875l0.421875 1.296875q-1.15625 0.390625 -2.265625 0.515625q0.546875 0.484375 1.5625 1.71875l-1.09375 0.78125q-0.53125 -0.734375 -1.25 -1.96875q-0.671875 1.28125 -1.1875 1.96875l-1.078125 -0.78125q1.0625 -1.296875 1.515625 -1.71875q-1.171875 -0.234375 -2.234375 -0.515625z" fill-rule="nonzero"/><path fill="#ffffff" d="m63.26119 65.62156q0.328125 0 0.578125 -0.015625q0.2656288 -0.03125 0.4375038 -0.0625l0 -1.46875q-0.171875 -0.0625 -0.4062538 -0.09375q-0.234375 -0.03125 -0.5 -0.03125q-0.25 0 -0.484375 0.046875q-0.234375 0.03125 -0.421875 0.125q-0.171875 0.09375 -0.296875 0.25q-0.109375 0.15625 -0.109375 0.390625q0 0.484375 0.3125 0.671875q0.328125 0.1875 0.890625 0.1875zm-0.09375 -4.4375q0.5625 0 0.9375038 0.140625q0.375 0.140625 0.609375 0.390625q0.234375 0.234375 0.328125 0.59375q0.109375 0.34375 0.109375 0.765625l0 3.09375q-0.3125 0.046875 -0.828125 0.125q-0.5000038 0.078125 -1.0312538 0.078125q-0.40625 0 -0.796875 -0.078125q-0.375 -0.0625 -0.671875 -0.234375q-0.296875 -0.1875 -0.484375 -0.484375q-0.171875 -0.3125 -0.171875 -0.796875q0 -0.421875 0.171875 -0.71875q0.1875 -0.296875 0.484375 -0.46875q0.296875 -0.1875 0.671875 -0.265625q0.375 -0.078125 0.765625 -0.078125q0.515625 0 1.0156288 0.109375l0 -0.25q0 -0.21875 -0.046875 -0.421875q-0.046875 -0.203125 -0.1875 -0.375q-0.12500381 -0.171875 -0.3593788 -0.265625q-0.21875 -0.109375 -0.578125 -0.109375q-0.46875 0 -0.8125 0.0625q-0.328125 0.0625 -0.515625 0.125l-0.109375 -0.71875q0.1875 -0.09375 0.609375 -0.15625q0.421875 -0.0625 0.890625 -0.0625zm6.312565 5.1875q-0.46875 0 -0.78125 -0.125q-0.3125 -0.140625 -0.5 -0.390625q-0.171875 -0.265625 -0.25 -0.640625q-0.078125 -0.375 -0.078125 -0.875l0 -4.671875l-1.421875 0l0 -0.75l2.296875 0l0 5.421875q0 0.375 0.046875 0.609375q0.046875 0.234375 0.140625 0.375q0.109375 0.140625 0.25 0.203125q0.15625 0.046875 0.359375 0.046875q0.3125 0 0.578125 -0.078125q0.265625 -0.078125 0.421875 -0.15625l0.125 0.75q-0.0625 0.03125 -0.1875 0.078125q-0.109375 0.046875 -0.28125 0.078125q-0.15625 0.046875 -0.34375 0.078125q-0.1875 0.046875 -0.375 0.046875zm4.484436 -5.1875q1.0 0 1.53125 0.625q0.546875 0.625 0.546875 1.890625l0 0.3125l-3.53125 0q0.046875 0.765625 0.5 1.171875q0.453125 0.390625 1.28125 0.390625q0.46875 0 0.796875 -0.078125q0.328125 -0.078125 0.5 -0.15625l0.109375 0.75q-0.15625 0.078125 -0.578125 0.171875q-0.40625 0.109375 -0.921875 0.109375q-0.640625 0 -1.125 -0.203125q-0.484375 -0.203125 -0.8125 -0.53125q-0.3125 -0.34375 -0.484375 -0.8125q-0.15625 -0.484375 -0.15625 -1.046875q0 -0.65625 0.203125 -1.140625q0.203125 -0.5 0.53125 -0.8125q0.328125 -0.3125 0.75 -0.46875q0.421875 -0.171875 0.859375 -0.171875zm1.1875 2.109375q0 -0.625 -0.328125 -0.984375q-0.328125 -0.375 -0.875 -0.375q-0.3125 0 -0.5625 0.125q-0.25 0.109375 -0.4375 0.296875q-0.171875 0.1875 -0.28125 0.4375q-0.109375 0.25 -0.140625 0.5l2.625 0zm2.515686 2.953125l0 -4.671875q1.09375 -0.375 2.1875 -0.375q0.34375 0 0.65625 0.03125q0.3125 0.015625 0.6875 0.109375l-0.171875 0.765625q-0.328125 -0.09375 -0.59375 -0.109375q-0.265625 -0.03125 -0.578125 -0.03125q-0.640625 0 -1.3125 0.171875l0 4.109375l-0.875 0zm6.781311 -4.9375l2.078125 0l0 0.734375l-2.078125 0l0 2.296875q0 0.375 0.046875 0.609375q0.0625 0.234375 0.171875 0.375q0.125 0.140625 0.3125 0.203125q0.203125 0.046875 0.484375 0.046875q0.375 0 0.609375 -0.0625q0.234375 -0.0625 0.453125 -0.171875l0.125 0.75q-0.15625 0.0625 -0.484375 0.171875q-0.3125 0.109375 -0.796875 0.109375q-0.546875 0 -0.90625 -0.125q-0.34375 -0.140625 -0.546875 -0.390625q-0.203125 -0.265625 -0.28125 -0.640625q-0.0625 -0.375 -0.0625 -0.875l0 -2.296875l-1.046875 0l0 -0.734375l1.046875 0l0 -1.390625l0.875 -0.15625l0 1.546875zm4.218811 1.8125l2.359375 0l0 0.828125l-2.359375 0l0 -0.828125zm7.578186 1.890625q0 -0.265625 -0.21875 -0.4375q-0.21875 -0.171875 -0.546875 -0.296875q-0.3125 -0.125 -0.703125 -0.25q-0.375 -0.125 -0.703125 -0.296875q-0.328125 -0.1875 -0.546875 -0.453125q-0.21875 -0.265625 -0.21875 -0.703125q0 -0.59375 0.484375 -0.984375q0.484375 -0.40625 1.515625 -0.40625q0.40625 0 0.84375 0.0625q0.4375 0.0625 0.734375 0.15625l-0.15625 0.78125q-0.078125 -0.046875 -0.234375 -0.09375q-0.140625 -0.046875 -0.34375 -0.078125q-0.1875 -0.03125 -0.40625 -0.046875q-0.21875 -0.03125 -0.421875 -0.03125q-1.15625 0 -1.15625 0.625q0 0.21875 0.21875 0.375q0.21875 0.15625 0.546875 0.28125q0.34375 0.125 0.71875 0.265625q0.390625 0.140625 0.71875 0.328125q0.328125 0.1875 0.546875 0.46875q0.21875 0.265625 0.21875 0.671875q0 0.671875 -0.53125 1.046875q-0.515625 0.375 -1.640625 0.375q-0.515625 0 -0.9375 -0.09375q-0.421875 -0.078125 -0.8125 -0.25l0.171875 -0.796875q0.375 0.15625 0.78125 0.28125q0.40625 0.109375 0.875 0.109375q1.203125 0 1.203125 -0.609375zm4.187561 -3.703125l2.0781174 0l0 0.734375l-2.0781174 0l0 2.296875q0 0.375 0.046875 0.609375q0.06249237 0.234375 0.17186737 0.375q0.125 0.140625 0.3125 0.203125q0.203125 0.046875 0.484375 0.046875q0.375 0 0.609375 -0.0625q0.234375 -0.0625 0.453125 -0.171875l0.125 0.75q-0.15625 0.0625 -0.484375 0.171875q-0.3125 0.109375 -0.796875 0.109375q-0.546875 0 -0.9062424 -0.125q-0.34375 -0.140625 -0.546875 -0.390625q-0.203125 -0.265625 -0.28125 -0.640625q-0.0625 -0.375 -0.0625 -0.875l0 -2.296875l-1.046875 0l0 -0.734375l1.046875 0l0 -1.390625l0.875 -0.15625l0 1.546875zm5.4531784 4.3125q0.328125 0 0.578125 -0.015625q0.265625 -0.03125 0.4375 -0.0625l0 -1.46875q-0.171875 -0.0625 -0.40625 -0.09375q-0.234375 -0.03125 -0.5 -0.03125q-0.25 0 -0.484375 0.046875q-0.234375 0.03125 -0.421875 0.125q-0.171875 0.09375 -0.296875 0.25q-0.109375 0.15625 -0.109375 0.390625q0 0.484375 0.3125 0.671875q0.328125 0.1875 0.890625 0.1875zm-0.09375 -4.4375q0.5625 0 0.9375 0.140625q0.375 0.140625 0.609375 0.390625q0.234375 0.234375 0.328125 0.59375q0.109375 0.34375 0.109375 0.765625l0 3.09375q-0.3125 0.046875 -0.828125 0.125q-0.5 0.078125 -1.03125 0.078125q-0.40625 0 -0.796875 -0.078125q-0.375 -0.0625 -0.671875 -0.234375q-0.296875 -0.1875 -0.484375 -0.484375q-0.171875 -0.3125 -0.171875 -0.796875q0 -0.421875 0.171875 -0.71875q0.1875 -0.296875 0.484375 -0.46875q0.296875 -0.1875 0.671875 -0.265625q0.375 -0.078125 0.765625 -0.078125q0.515625 0 1.015625 0.109375l0 -0.25q0 -0.21875 -0.046875 -0.421875q-0.046875 -0.203125 -0.1875 -0.375q-0.125 -0.171875 -0.359375 -0.265625q-0.21875 -0.109375 -0.578125 -0.109375q-0.46875 0 -0.8125 0.0625q-0.328125 0.0625 -0.515625 0.125l-0.109375 -0.71875q0.1875 -0.09375 0.609375 -0.15625q0.421875 -0.0625 0.890625 -0.0625zm5.296936 0.125l2.078125 0l0 0.734375l-2.078125 0l0 2.296875q0 0.375 0.046875 0.609375q0.0625 0.234375 0.171875 0.375q0.125 0.140625 0.3125 0.203125q0.203125 0.046875 0.484375 0.046875q0.375 0 0.609375 -0.0625q0.234375 -0.0625 0.453125 -0.171875l0.125 0.75q-0.15625 0.0625 -0.484375 0.171875q-0.3125 0.109375 -0.796875 0.109375q-0.546875 0 -0.90625 -0.125q-0.34375 -0.140625 -0.546875 -0.390625q-0.203125 -0.265625 -0.28125 -0.640625q-0.0625 -0.375 -0.0625 -0.875l0 -2.296875l-1.046875 0l0 -0.734375l1.046875 0l0 -1.390625l0.875 -0.15625l0 1.546875zm7.312561 4.796875q-0.296875 0.078125 -0.78125 0.15625q-0.46875 0.09375 -1.09375 0.09375q-0.578125 0 -0.953125 -0.15625q-0.359375 -0.171875 -0.59375 -0.46875q-0.234375 -0.3125 -0.34375 -0.71875q-0.09375 -0.421875 -0.09375 -0.921875l0 -2.78125l0.875 0l0 2.578125q0 0.921875 0.265625 1.3125q0.28125 0.375 0.921875 0.375q0.140625 0 0.28125 0q0.140625 -0.015625 0.265625 -0.03125q0.140625 -0.015625 0.234375 -0.03125q0.09375 -0.015625 0.125 -0.03125l0 -4.171875l0.890625 0l0 4.796875zm4.484436 -1.09375q0 -0.265625 -0.21875 -0.4375q-0.21875 -0.171875 -0.546875 -0.296875q-0.3125 -0.125 -0.703125 -0.25q-0.375 -0.125 -0.703125 -0.296875q-0.328125 -0.1875 -0.546875 -0.453125q-0.21875 -0.265625 -0.21875 -0.703125q0 -0.59375 0.484375 -0.984375q0.484375 -0.40625 1.515625 -0.40625q0.40625 0 0.84375 0.0625q0.4375 0.0625 0.734375 0.15625l-0.15625 0.78125q-0.078125 -0.046875 -0.234375 -0.09375q-0.140625 -0.046875 -0.34375 -0.078125q-0.1875 -0.03125 -0.40625 -0.046875q-0.21875 -0.03125 -0.421875 -0.03125q-1.15625 0 -1.15625 0.625q0 0.21875 0.21875 0.375q0.21875 0.15625 0.546875 0.28125q0.34375 0.125 0.71875 0.265625q0.390625 0.140625 0.71875 0.328125q0.328125 0.1875 0.546875 0.46875q0.21875 0.265625 0.21875 0.671875q0 0.671875 -0.53125 1.046875q-0.515625 0.375 -1.640625 0.375q-0.515625 0 -0.9375 -0.09375q-0.421875 -0.078125 -0.8125 -0.25l0.171875 -0.796875q0.375 0.15625 0.78125 0.28125q0.40625 0.109375 0.875 0.109375q1.203125 0 1.203125 -0.609375zm5.046936 0.546875q0 0.328125 -0.21875 0.578125q-0.203125 0.234375 -0.5625 0.234375q-0.359375 0 -0.578125 -0.234375q-0.203125 -0.25 -0.203125 -0.578125q0 -0.328125 0.203125 -0.5625q0.21875 -0.25 0.578125 -0.25q0.359375 0 0.5625 0.25q0.21875 0.234375 0.21875 0.5625zm5.156311 -5.03125q-0.28125 0 -0.484375 -0.1875q-0.203125 -0.1875 -0.203125 -0.515625q0 -0.328125 0.203125 -0.515625q0.203125 -0.203125 0.484375 -0.203125q0.28125 0 0.484375 0.203125q0.203125 0.1875 0.203125 0.515625q0 0.328125 -0.203125 0.515625q-0.203125 0.1875 -0.484375 0.1875zm-2.0625 1.515625l0 -0.734375l2.875 0l0 4.890625q0 0.5 -0.15625 0.859375q-0.140625 0.359375 -0.375 0.578125q-0.234375 0.234375 -0.546875 0.328125q-0.3125 0.09375 -0.671875 0.09375q-0.40625 0 -0.8125 -0.09375q-0.40625 -0.078125 -0.78125 -0.265625l0.265625 -0.734375q0.28125 0.125 0.59375 0.203125q0.328125 0.09375 0.625 0.09375q0.4375 0 0.703125 -0.21875q0.28125 -0.203125 0.28125 -0.84375l0 -4.15625l-2.0 0zm7.843811 2.96875q0 -0.265625 -0.21875 -0.4375q-0.21875 -0.171875 -0.546875 -0.296875q-0.3125 -0.125 -0.703125 -0.25q-0.375 -0.125 -0.703125 -0.296875q-0.328125 -0.1875 -0.546875 -0.453125q-0.21875 -0.265625 -0.21875 -0.703125q0 -0.59375 0.484375 -0.984375q0.484375 -0.40625 1.515625 -0.40625q0.40625 0 0.84375 0.0625q0.4375 0.0625 0.734375 0.15625l-0.15625 0.78125q-0.078125 -0.046875 -0.234375 -0.09375q-0.140625 -0.046875 -0.34375 -0.078125q-0.1875 -0.03125 -0.40625 -0.046875q-0.21875 -0.03125 -0.421875 -0.03125q-1.15625 0 -1.15625 0.625q0 0.21875 0.21875 0.375q0.21875 0.15625 0.546875 0.28125q0.34375 0.125 0.71875 0.265625q0.390625 0.140625 0.71875 0.328125q0.328125 0.1875 0.546875 0.46875q0.21875 0.265625 0.21875 0.671875q0 0.671875 -0.53125 1.046875q-0.515625 0.375 -1.640625 0.375q-0.515625 0 -0.9375 -0.09375q-0.421875 -0.078125 -0.8125 -0.25l0.171875 -0.796875q0.375 0.15625 0.78125 0.28125q0.40625 0.109375 0.875 0.109375q1.203125 0 1.203125 -0.609375zm6.500061 -1.234375q0 0.578125 -0.171875 1.0625q-0.15625 0.46875 -0.46875 0.8125q-0.296875 0.34375 -0.71875 0.53125q-0.40625 0.1875 -0.890625 0.1875q-0.484375 0 -0.890625 -0.1875q-0.40625 -0.1875 -0.71875 -0.53125q-0.296875 -0.34375 -0.46875 -0.8125q-0.15625 -0.484375 -0.15625 -1.0625q0 -0.59375 0.15625 -1.0625q0.171875 -0.484375 0.46875 -0.8125q0.3125 -0.34375 0.71875 -0.53125q0.40625 -0.1875 0.890625 -0.1875q0.484375 0 0.890625 0.1875q0.421875 0.1875 0.71875 0.53125q0.3125 0.328125 0.46875 0.8125q0.171875 0.46875 0.171875 1.0625zm-0.90625 0q0 -0.84375 -0.375 -1.328125q-0.359375 -0.484375 -0.96875 -0.484375q-0.609375 0 -0.96875 0.484375q-0.359375 0.484375 -0.359375 1.328125q0 0.828125 0.359375 1.3125q0.359375 0.484375 0.96875 0.484375q0.609375 0 0.96875 -0.484375q0.375 -0.484375 0.375 -1.3125zm2.078186 -2.34375q0.484375 -0.109375 0.953125 -0.171875q0.484375 -0.0625 0.890625 -0.0625q1.0 0 1.5 0.515625q0.515625 0.5 0.515625 1.625l0 2.90625l-0.875 0l0 -2.734375q0 -0.484375 -0.09375 -0.78125q-0.078125 -0.296875 -0.234375 -0.453125q-0.15625 -0.171875 -0.375 -0.234375q-0.21875 -0.0625 -0.46875 -0.0625q-0.21875 0 -0.46875 0.03125q-0.234375 0.015625 -0.453125 0.0625l0 4.171875l-0.890625 0l0 -4.8125z" fill-rule="nonzero"/><path fill="#6aa84f" d="m365.3832 580.1417l178.04721 0l0 42.204712l-178.04721 0z" fill-rule="evenodd"/><path stroke="#38761d" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m365.3832 580.1417l178.04721 0l0 42.204712l-178.04721 0z" fill-rule="evenodd"/><path fill="#ffffff" d="m406.27316 596.97656l1.765625 0.453125q-0.5625 2.171875 -2.0 3.328125q-1.4375 1.140625 -3.53125 1.140625q-2.15625 0 -3.515625 -0.875q-1.34375 -0.890625 -2.0625 -2.546875q-0.703125 -1.671875 -0.703125 -3.59375q0 -2.078125 0.796875 -3.625q0.796875 -1.5625 2.265625 -2.359375q1.484375 -0.8125 3.25 -0.8125q2.0 0 3.359375 1.015625q1.375 1.015625 1.90625 2.875l-1.734375 0.40625q-0.46875 -1.453125 -1.359375 -2.109375q-0.875 -0.671875 -2.203125 -0.671875q-1.546875 0 -2.578125 0.734375q-1.03125 0.734375 -1.453125 1.984375q-0.421875 1.234375 -0.421875 2.5625q0 1.703125 0.5 2.96875q0.5 1.265625 1.546875 1.90625q1.046875 0.625 2.265625 0.625q1.484375 0 2.515625 -0.859375q1.03125 -0.859375 1.390625 -2.546875zm3.691681 4.6875l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0zm10.519836 0l0 -1.421875q-1.125 1.640625 -3.0625 1.640625q-0.859375 0 -1.609375 -0.328125q-0.734375 -0.328125 -1.09375 -0.828125q-0.359375 -0.5 -0.5 -1.21875q-0.109375 -0.46875 -0.109375 -1.53125l0 -5.984375l1.640625 0l0 5.359375q0 1.28125 0.109375 1.734375q0.15625 0.640625 0.65625 1.015625q0.5 0.375 1.234375 0.375q0.734375 0 1.375 -0.375q0.65625 -0.390625 0.921875 -1.03125q0.265625 -0.65625 0.265625 -1.890625l0 -5.1875l1.640625 0l0 9.671875l-1.46875 0zm3.391327 -2.890625l1.625 -0.25q0.125 0.96875 0.75 1.5q0.625 0.515625 1.75 0.515625q1.125 0 1.671875 -0.453125q0.546875 -0.46875 0.546875 -1.09375q0 -0.546875 -0.484375 -0.875q-0.328125 -0.21875 -1.671875 -0.546875q-1.8125 -0.46875 -2.515625 -0.796875q-0.6875 -0.328125 -1.046875 -0.90625q-0.359375 -0.59375 -0.359375 -1.3125q0 -0.640625 0.296875 -1.1875q0.296875 -0.5625 0.8125 -0.921875q0.375 -0.28125 1.03125 -0.46875q0.671875 -0.203125 1.421875 -0.203125q1.140625 0 2.0 0.328125q0.859375 0.328125 1.265625 0.890625q0.421875 0.5625 0.578125 1.5l-1.609375 0.21875q-0.109375 -0.75 -0.640625 -1.171875q-0.515625 -0.421875 -1.46875 -0.421875q-1.140625 0 -1.625 0.375q-0.46875 0.375 -0.46875 0.875q0 0.3125 0.1875 0.578125q0.203125 0.265625 0.640625 0.4375q0.234375 0.09375 1.4375 0.421875q1.75 0.453125 2.4375 0.75q0.6875 0.296875 1.078125 0.859375q0.390625 0.5625 0.390625 1.40625q0 0.828125 -0.484375 1.546875q-0.46875 0.71875 -1.375 1.125q-0.90625 0.390625 -2.046875 0.390625q-1.875 0 -2.875 -0.78125q-0.984375 -0.78125 -1.25 -2.328125zm13.5625 1.421875l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm8.230194 -1.640625l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.125702 5.765625l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm11.677246 0l0 -13.359375l1.765625 0l0 5.484375l6.9375 0l0 -5.484375l1.765625 0l0 13.359375l-1.765625 0l0 -6.296875l-6.9375 0l0 6.296875l-1.765625 0zm19.832306 -3.109375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm15.453857 4.578125q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm4.156952 4.859375l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0zm7.7698364 -1.46875l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm1.6051636 1.46875l0 -13.359375l1.640625 0l0 4.796875q1.140625 -1.328125 2.890625 -1.328125q1.078125 0 1.859375 0.421875q0.796875 0.421875 1.140625 1.171875q0.34378052 0.75 0.34378052 2.171875l0 6.125l-1.6406555 0l0 -6.125q0 -1.234375 -0.53125 -1.796875q-0.53125 -0.5625 -1.515625 -0.5625q-0.71875 0 -1.359375 0.390625q-0.640625 0.375 -0.921875 1.015625q-0.265625 0.640625 -0.265625 1.78125l0 5.296875l-1.640625 0z" fill-rule="nonzero"/><path fill="#ffffff" d="m412.29697 613.5153q0 -0.671875 0.21875 -1.15625q0.21875 -0.484375 0.578125 -0.796875q0.375 -0.328125 0.875 -0.484375q0.5 -0.15625 1.0625 -0.15625q0.359375 0 0.71875 0.046875q0.359375 0.046875 0.765625 0.171875l-0.203125 0.765625q-0.359375 -0.125 -0.65625 -0.15625q-0.28125 -0.046875 -0.578125 -0.046875q-0.390625 0 -0.734375 0.109375q-0.328125 0.09375 -0.59375 0.3125q-0.25 0.21875 -0.40625 0.5625q-0.140625 0.34375 -0.140625 0.828125q0 0.46875 0.140625 0.8125q0.140625 0.328125 0.390625 0.546875q0.25 0.21875 0.59375 0.328125q0.359375 0.109375 0.78125 0.109375q0.34375 0 0.65625 -0.03125q0.328125 -0.046875 0.6875 -0.171875l0.140625 0.734375q-0.375 0.140625 -0.765625 0.203125q-0.375 0.0625 -0.828125 0.0625q-0.59375 0 -1.09375 -0.171875q-0.5 -0.171875 -0.859375 -0.484375q-0.34375 -0.328125 -0.546875 -0.8125q-0.203125 -0.484375 -0.203125 -1.125zm7.578186 -2.59375q1.0 0 1.53125 0.625q0.546875 0.625 0.546875 1.890625l0 0.3125l-3.53125 0q0.046875 0.765625 0.5 1.171875q0.453125 0.390625 1.28125 0.390625q0.46875 0 0.796875 -0.078125q0.328125 -0.078125 0.5 -0.15625l0.109375 0.75q-0.15625 0.078125 -0.578125 0.171875q-0.40625 0.109375 -0.921875 0.109375q-0.640625 0 -1.125 -0.203125q-0.484375 -0.203125 -0.8125 -0.53125q-0.3125 -0.34375 -0.484375 -0.8125q-0.15625 -0.484375 -0.15625 -1.046875q0 -0.65625 0.203125 -1.140625q0.203125 -0.5 0.53125 -0.8125q0.328125 -0.3125 0.75 -0.46875q0.421875 -0.171875 0.859375 -0.171875zm1.1875 2.109375q0 -0.625 -0.328125 -0.984375q-0.328125 -0.375 -0.875 -0.375q-0.3125 0 -0.5625 0.125q-0.25 0.109375 -0.4375 0.296875q-0.171875 0.1875 -0.28125 0.4375q-0.109375 0.25 -0.140625 0.5l2.625 0zm5.375061 0.484375q0 -0.859375 -0.40625 -1.328125q-0.40625 -0.46875 -1.0625 -0.46875q-0.359375 0 -0.5625 0.03125q-0.203125 0.03125 -0.328125 0.0625l0 3.125q0.15625 0.140625 0.4375 0.265625q0.28125 0.109375 0.59375 0.109375q0.359375 0 0.609375 -0.140625q0.25 -0.140625 0.40625 -0.375q0.15625 -0.234375 0.234375 -0.5625q0.078125 -0.328125 0.078125 -0.71875zm0.90625 0q0 0.578125 -0.15625 1.046875q-0.140625 0.46875 -0.40625 0.8125q-0.265625 0.34375 -0.671875 0.546875q-0.390625 0.1875 -0.890625 0.1875q-0.390625 0 -0.6875 -0.109375q-0.296875 -0.09375 -0.453125 -0.203125l0 1.953125l-0.890625 0l0 -6.5625q0.296875 -0.078125 0.75 -0.15625q0.453125 -0.09375 1.03125 -0.09375q0.53125 0 0.96875 0.1875q0.4375 0.171875 0.75 0.515625q0.3125 0.328125 0.484375 0.8125q0.171875 0.46875 0.171875 1.0625zm1.171936 2.46875l0 -7.234375l0.890625 -0.15625l0 2.515625q0.21875 -0.078125 0.484375 -0.125q0.265625 -0.046875 0.515625 -0.046875q0.5625 0 0.9375 0.171875q0.390625 0.15625 0.609375 0.453125q0.21875 0.296875 0.3125 0.71875q0.109375 0.40625 0.109375 0.90625l0 2.796875l-0.875 0l0 -2.59375q0 -0.921875 -0.265625 -1.296875q-0.25 -0.375 -0.90625 -0.375q-0.28125 0 -0.546875 0.0625q-0.25 0.046875 -0.375 0.09375l0 4.109375l-0.890625 0zm6.062561 -3.125l2.359375 0l0 0.828125l-2.359375 0l0 -0.828125zm4.593811 3.125l0 -7.234375l0.890625 -0.15625l0 2.515625q0.21875 -0.078125 0.484375 -0.125q0.265625 -0.046875 0.515625 -0.046875q0.5625 0 0.9375 0.171875q0.390625 0.15625 0.609375 0.453125q0.21875 0.296875 0.3125 0.71875q0.109375 0.40625 0.109375 0.90625l0 2.796875l-0.875 0l0 -2.59375q0 -0.921875 -0.265625 -1.296875q-0.25 -0.375 -0.90625 -0.375q-0.28125 0 -0.546875 0.0625q-0.25 0.046875 -0.375 0.09375l0 4.109375l-0.890625 0zm7.343811 -5.0625q1.0 0 1.53125 0.625q0.546875 0.625 0.546875 1.890625l0 0.3125l-3.53125 0q0.046875 0.765625 0.5 1.171875q0.453125 0.390625 1.28125 0.390625q0.46875 0 0.796875 -0.078125q0.328125 -0.078125 0.5 -0.15625l0.109375 0.75q-0.15625 0.078125 -0.578125 0.171875q-0.40625 0.109375 -0.921875 0.109375q-0.640625 0 -1.125 -0.203125q-0.484375 -0.203125 -0.8125 -0.53125q-0.3125 -0.34375 -0.484375 -0.8125q-0.15625 -0.484375 -0.15625 -1.046875q0 -0.65625 0.203125 -1.140625q0.203125 -0.5 0.53125 -0.8125q0.328125 -0.3125 0.75 -0.46875q0.421875 -0.171875 0.859375 -0.171875zm1.1875 2.109375q0 -0.625 -0.328125 -0.984375q-0.328125 -0.375 -0.875 -0.375q-0.3125 0 -0.5625 0.125q-0.25 0.109375 -0.4375 0.296875q-0.171875 0.1875 -0.28125 0.4375q-0.109375 0.25 -0.140625 0.5l2.625 0zm4.093811 2.328125q0.328125 0 0.578125 -0.015625q0.265625 -0.03125 0.4375 -0.0625l0 -1.46875q-0.171875 -0.0625 -0.40625 -0.09375q-0.234375 -0.03125 -0.5 -0.03125q-0.25 0 -0.484375 0.046875q-0.234375 0.03125 -0.421875 0.125q-0.171875 0.09375 -0.296875 0.25q-0.109375 0.15625 -0.109375 0.390625q0 0.484375 0.3125 0.671875q0.328125 0.1875 0.890625 0.1875zm-0.09375 -4.4375q0.5625 0 0.9375 0.140625q0.375 0.140625 0.609375 0.390625q0.234375 0.234375 0.328125 0.59375q0.109375 0.34375 0.109375 0.765625l0 3.09375q-0.3125 0.046875 -0.828125 0.125q-0.5 0.078125 -1.03125 0.078125q-0.40625 0 -0.796875 -0.078125q-0.375 -0.0625 -0.671875 -0.234375q-0.296875 -0.1875 -0.484375 -0.484375q-0.171875 -0.3125 -0.171875 -0.796875q0 -0.421875 0.171875 -0.71875q0.1875 -0.296875 0.484375 -0.46875q0.296875 -0.1875 0.671875 -0.265625q0.375 -0.078125 0.765625 -0.078125q0.515625 0 1.015625 0.109375l0 -0.25q0 -0.21875 -0.046875 -0.421875q-0.046875 -0.203125 -0.1875 -0.375q-0.125 -0.171875 -0.359375 -0.265625q-0.21875 -0.109375 -0.578125 -0.109375q-0.46875 0 -0.8125 0.0625q-0.328125 0.0625 -0.515625 0.125l-0.109375 -0.71875q0.1875 -0.09375 0.609375 -0.15625q0.421875 -0.0625 0.890625 -0.0625zm6.312561 5.1875q-0.46875 0 -0.78125 -0.125q-0.3125 -0.140625 -0.5 -0.390625q-0.171875 -0.265625 -0.25 -0.640625q-0.078125 -0.375 -0.078125 -0.875l0 -4.671875l-1.421875 0l0 -0.75l2.296875 0l0 5.421875q0 0.375 0.046875 0.609375q0.046875 0.234375 0.140625 0.375q0.109375 0.140625 0.25 0.203125q0.15625 0.046875 0.359375 0.046875q0.3125 0 0.578125 -0.078125q0.265625 -0.078125 0.421875 -0.15625l0.125 0.75q-0.0625 0.03125 -0.1875 0.078125q-0.109375 0.046875 -0.28125 0.078125q-0.15625 0.046875 -0.34375 0.078125q-0.1875 0.046875 -0.375 0.046875zm4.312561 -5.0625l2.078125 0l0 0.734375l-2.078125 0l0 2.296875q0 0.375 0.046875 0.609375q0.0625 0.234375 0.171875 0.375q0.125 0.140625 0.3125 0.203125q0.203125 0.046875 0.484375 0.046875q0.375 0 0.609375 -0.0625q0.234375 -0.0625 0.453125 -0.171875l0.125 0.75q-0.15625 0.0625 -0.484375 0.171875q-0.3125 0.109375 -0.796875 0.109375q-0.546875 0 -0.90625 -0.125q-0.34375 -0.140625 -0.546875 -0.390625q-0.203125 -0.265625 -0.28125 -0.640625q-0.0625 -0.375 -0.0625 -0.875l0 -2.296875l-1.046875 0l0 -0.734375l1.046875 0l0 -1.390625l0.875 -0.15625l0 1.546875zm3.484436 4.9375l0 -7.234375l0.890625 -0.15625l0 2.515625q0.21875 -0.078125 0.484375 -0.125q0.265625 -0.046875 0.515625 -0.046875q0.5625 0 0.9375 0.171875q0.390625 0.15625 0.609375 0.453125q0.21875 0.296875 0.3125 0.71875q0.109375 0.40625 0.109375 0.90625l0 2.796875l-0.875 0l0 -2.59375q0 -0.921875 -0.265625 -1.296875q-0.25 -0.375 -0.90625 -0.375q-0.28125 0 -0.546875 0.0625q-0.25 0.046875 -0.375 0.09375l0 4.109375l-0.890625 0zm8.031311 -0.6875q0 0.328125 -0.21875 0.578125q-0.203125 0.234375 -0.5625 0.234375q-0.359375 0 -0.578125 -0.234375q-0.203125 -0.25 -0.203125 -0.578125q0 -0.328125 0.203125 -0.5625q0.21875 -0.25 0.578125 -0.25q0.359375 0 0.5625 0.25q0.21875 0.234375 0.21875 0.5625zm5.156311 -5.03125q-0.28125 0 -0.484375 -0.1875q-0.203125 -0.1875 -0.203125 -0.515625q0 -0.328125 0.203125 -0.515625q0.203125 -0.203125 0.484375 -0.203125q0.28125 0 0.484375 0.203125q0.203125 0.1875 0.203125 0.515625q0 0.328125 -0.203125 0.515625q-0.203125 0.1875 -0.484375 0.1875zm-2.0625 1.515625l0 -0.734375l2.875 0l0 4.890625q0 0.5 -0.15625 0.859375q-0.140625 0.359375 -0.375 0.578125q-0.234375 0.234375 -0.546875 0.328125q-0.3125 0.09375 -0.671875 0.09375q-0.40625 0 -0.8125 -0.09375q-0.40625 -0.078125 -0.78125 -0.265625l0.265625 -0.734375q0.28125 0.125 0.59375 0.203125q0.328125 0.09375 0.625 0.09375q0.4375 0 0.703125 -0.21875q0.28125 -0.203125 0.28125 -0.84375l0 -4.15625l-2.0 0zm7.843811 2.96875q0 -0.265625 -0.21875 -0.4375q-0.21875 -0.171875 -0.546875 -0.296875q-0.3125 -0.125 -0.703125 -0.25q-0.375 -0.125 -0.703125 -0.296875q-0.328125 -0.1875 -0.546875 -0.453125q-0.21875 -0.265625 -0.21875 -0.703125q0 -0.59375 0.484375 -0.984375q0.484375 -0.40625 1.515625 -0.40625q0.40625 0 0.84375 0.0625q0.4375 0.0625 0.734375 0.15625l-0.15625 0.78125q-0.078125 -0.046875 -0.234375 -0.09375q-0.140625 -0.046875 -0.34375 -0.078125q-0.1875 -0.03125 -0.40625 -0.046875q-0.21875 -0.03125 -0.421875 -0.03125q-1.15625 0 -1.15625 0.625q0 0.21875 0.21875 0.375q0.21875 0.15625 0.546875 0.28125q0.34375 0.125 0.71875 0.265625q0.390625 0.140625 0.71875 0.328125q0.328125 0.1875 0.546875 0.46875q0.21875 0.265625 0.21875 0.671875q0 0.671875 -0.53125 1.046875q-0.515625 0.375 -1.640625 0.375q-0.515625 0 -0.9375 -0.09375q-0.421875 -0.078125 -0.8125 -0.25l0.171875 -0.796875q0.375 0.15625 0.78125 0.28125q0.40625 0.109375 0.875 0.109375q1.203125 0 1.203125 -0.609375zm6.500061 -1.234375q0 0.578125 -0.171875 1.0625q-0.15625 0.46875 -0.46875 0.8125q-0.296875 0.34375 -0.71875 0.53125q-0.40625 0.1875 -0.890625 0.1875q-0.484375 0 -0.890625 -0.1875q-0.40625 -0.1875 -0.71875 -0.53125q-0.296875 -0.34375 -0.46875 -0.8125q-0.15625 -0.484375 -0.15625 -1.0625q0 -0.59375 0.15625 -1.0625q0.171875 -0.484375 0.46875 -0.8125q0.3125 -0.34375 0.71875 -0.53125q0.40625 -0.1875 0.890625 -0.1875q0.484375 0 0.890625 0.1875q0.421875 0.1875 0.71875 0.53125q0.3125 0.328125 0.46875 0.8125q0.171875 0.46875 0.171875 1.0625zm-0.90625 0q0 -0.84375 -0.375 -1.328125q-0.359375 -0.484375 -0.96875 -0.484375q-0.609375 0 -0.96875 0.484375q-0.359375 0.484375 -0.359375 1.328125q0 0.828125 0.359375 1.3125q0.359375 0.484375 0.96875 0.484375q0.609375 0 0.96875 -0.484375q0.375 -0.484375 0.375 -1.3125zm2.078186 -2.34375q0.484375 -0.109375 0.953125 -0.171875q0.484375 -0.0625 0.890625 -0.0625q1.0 0 1.5 0.515625q0.515625 0.5 0.515625 1.625l0 2.90625l-0.875 0l0 -2.734375q0 -0.484375 -0.09375 -0.78125q-0.078125 -0.296875 -0.234375 -0.453125q-0.15625 -0.171875 -0.375 -0.234375q-0.21875 -0.0625 -0.46875 -0.0625q-0.21875 0 -0.46875 0.03125q-0.234375 0.015625 -0.453125 0.0625l0 4.171875l-0.890625 0l0 -4.8125z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m311.1391 211.50656c13.560974 0 20.342377 97.433075 27.121918 194.86615c6.7795105 97.433075 13.557159 194.86612 27.114319 194.86612" fill-rule="evenodd"/><path stroke="#666666" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" stroke-dasharray="4.0,3.0" d="m311.1391 211.50656c13.560974 0 20.342377 97.433075 27.121918 194.86615c3.3897705 48.716522 6.7790527 97.433075 11.015564 133.97049c2.118225 18.268677 4.4482727 33.492615 7.0960693 44.149353c1.3239136 5.328369 2.7272644 9.514893 4.2232666 12.369385c0.04675293 0.0892334 0.09359741 0.17712402 0.14056396 0.2637329l0.10253906 0.18603516" fill-rule="evenodd"/><path fill="#666666" stroke="#666666" stroke-width="1.0" stroke-linecap="butt" d="m359.75797 598.56055l4.512085 1.7214355l-2.3499146 -4.219055z" fill-rule="evenodd"/><path fill="#3c78d8" d="m36.524933 580.1417l159.14961 0l0 42.204712l-159.14961 0z" fill-rule="evenodd"/><path stroke="#38761d" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m36.524933 580.1417l159.14961 0l0 42.204712l-159.14961 0z" fill-rule="evenodd"/><path fill="#ffffff" d="m61.15052 590.7603l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm3.2109375 -3.6875l1.4375 -0.125q0.09375 0.859375 0.46875 1.421875q0.375 0.546875 1.15625 0.890625q0.78125 0.328125 1.75 0.328125q0.875 0 1.53125 -0.25q0.671875 -0.265625 0.984375 -0.703125q0.328125 -0.453125 0.328125 -0.984375q0 -0.546875 -0.3125 -0.9375q-0.3125 -0.40625 -1.03125 -0.6875q-0.453125 -0.171875 -2.03125 -0.546875q-1.578125 -0.390625 -2.21875 -0.71875q-0.8125 -0.4375 -1.21875 -1.0625q-0.40625 -0.640625 -0.40625 -1.4375q0 -0.859375 0.484375 -1.609375q0.5 -0.765625 1.4375 -1.15625q0.953125 -0.390625 2.109375 -0.390625q1.28125 0 2.25 0.421875q0.96875 0.40625 1.484375 1.203125q0.53125 0.796875 0.578125 1.796875l-1.453125 0.109375q-0.125 -1.078125 -0.796875 -1.625q-0.671875 -0.5625 -2.0 -0.5625q-1.375 0 -2.0 0.5q-0.625 0.5 -0.625 1.21875q0 0.609375 0.4375 1.015625q0.4375 0.390625 2.28125 0.8125q1.859375 0.421875 2.546875 0.734375q1.0 0.453125 1.46875 1.171875q0.484375 0.703125 0.484375 1.625q0 0.90625 -0.53125 1.71875q-0.515625 0.8125 -1.5 1.265625q-0.984375 0.453125 -2.203125 0.453125q-1.5625 0 -2.609375 -0.453125q-1.046875 -0.46875 -1.65625 -1.375q-0.59375 -0.90625 -0.625 -2.0625zm19.359375 -0.328125l1.515625 0.375q-0.46875 1.875 -1.71875 2.859375q-1.234375 0.984375 -3.015625 0.984375q-1.859375 0 -3.015625 -0.75q-1.15625 -0.765625 -1.765625 -2.1875q-0.609375 -1.4375 -0.609375 -3.078125q0 -1.796875 0.6875 -3.125q0.6875 -1.328125 1.9375 -2.015625q1.265625 -0.703125 2.78125 -0.703125q1.71875 0 2.890625 0.875q1.171875 0.875 1.640625 2.46875l-1.5 0.34375q-0.390625 -1.25 -1.15625 -1.8125q-0.75 -0.578125 -1.90625 -0.578125q-1.3125 0 -2.203125 0.640625q-0.890625 0.625 -1.25 1.703125q-0.359375 1.0625 -0.359375 2.1875q0 1.46875 0.421875 2.5625q0.4375 1.078125 1.328125 1.625q0.90625 0.53125 1.953125 0.53125q1.265625 0 2.140625 -0.734375q0.890625 -0.734375 1.203125 -2.171875zm2.8671875 0.328125l1.4375 -0.125q0.09375 0.859375 0.46875 1.421875q0.375 0.546875 1.15625 0.890625q0.78125 0.328125 1.75 0.328125q0.875 0 1.53125 -0.25q0.671875 -0.265625 0.984375 -0.703125q0.328125 -0.453125 0.328125 -0.984375q0 -0.546875 -0.3125 -0.9375q-0.3125 -0.40625 -1.03125 -0.6875q-0.453125 -0.171875 -2.03125 -0.546875q-1.578125 -0.390625 -2.21875 -0.71875q-0.8125 -0.4375 -1.21875 -1.0625q-0.40625 -0.640625 -0.40625 -1.4375q0 -0.859375 0.484375 -1.609375q0.5 -0.765625 1.4375 -1.15625q0.953125 -0.390625 2.109375 -0.390625q1.28125 0 2.25 0.421875q0.96875 0.40625 1.484375 1.203125q0.53125 0.796875 0.578125 1.796875l-1.453125 0.109375q-0.125 -1.078125 -0.796875 -1.625q-0.671875 -0.5625 -2.0 -0.5625q-1.375 0 -2.0 0.5q-0.625 0.5 -0.625 1.21875q0 0.609375 0.4375 1.015625q0.4375 0.390625 2.28125 0.8125q1.859375 0.421875 2.546875 0.734375q1.0 0.453125 1.46875 1.171875q0.484375 0.703125 0.484375 1.625q0 0.90625 -0.53125 1.71875q-0.515625 0.8125 -1.5 1.265625q-0.984375 0.453125 -2.203125 0.453125q-1.5625 0 -2.609375 -0.453125q-1.046875 -0.46875 -1.65625 -1.375q-0.59375 -0.90625 -0.625 -2.0625zm11.453125 3.6875l0 -11.453125l1.515625 0l0 11.453125l-1.515625 0zm8.171875 -5.578125q0 -2.859375 1.53125 -4.46875q1.53125 -1.609375 3.953125 -1.609375q1.578125 0 2.84375 0.765625q1.28125 0.75 1.953125 2.109375q0.671875 1.34375 0.671875 3.0625q0 1.75 -0.703125 3.125q-0.703125 1.375 -2.0 2.09375q-1.28125 0.703125 -2.78125 0.703125q-1.609375 0 -2.890625 -0.78125q-1.265625 -0.796875 -1.921875 -2.140625q-0.65625 -1.359375 -0.65625 -2.859375zm1.5625 0.015625q0 2.078125 1.109375 3.265625q1.109375 1.1875 2.796875 1.1875q1.703125 0 2.8125 -1.203125q1.109375 -1.203125 1.109375 -3.40625q0 -1.40625 -0.484375 -2.4375q-0.46875 -1.046875 -1.375 -1.625q-0.90625 -0.578125 -2.046875 -0.578125q-1.609375 0 -2.765625 1.109375q-1.15625 1.109375 -1.15625 3.6875zm13.4609375 5.5625l-3.15625 -8.296875l1.484375 0l1.78125 4.96875q0.296875 0.796875 0.53125 1.671875q0.1875 -0.65625 0.53125 -1.578125l1.84375 -5.0625l1.4375 0l-3.140625 8.296875l-1.3125 0zm11.375008 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.8906326 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.0781326 -1.15625 2.7968826 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875076 0q0.07813263 1.375 0.7656326 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm7.8203125 4.953125l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm7.640625 0l-3.15625 -8.296875l1.484375 0l1.78125 4.96875q0.296875 0.796875 0.53125 1.671875q0.1875 -0.65625 0.53125 -1.578125l1.84375 -5.0625l1.4375 0l-3.140625 8.296875l-1.3125 0zm5.703125 -9.84375l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm9.2265625 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm9.3671875 4.953125l-2.546875 -8.296875l1.453125 0l1.328125 4.78125l0.484375 1.78125q0.03125 -0.125 0.4375 -1.703125l1.3124847 -4.859375l1.453125 0l1.234375 4.8125l0.421875 1.578125l0.46875 -1.59375l1.421875 -4.796875l1.375 0l-2.59375 8.296875l-1.46875 0l-1.3125 -4.96875l-0.328125 -1.421875l-1.671875 6.390625l-1.4687347 0z" fill-rule="nonzero"/><path fill="#ffffff" d="m67.71635 608.7653q-0.28125 0 -0.484375 -0.1875q-0.203125 -0.1875 -0.203125 -0.515625q0 -0.328125 0.203125 -0.515625q0.203125 -0.203125 0.484375 -0.203125q0.28125 0 0.46875 0.203125q0.203125 0.1875 0.203125 0.515625q0 0.328125 -0.203125 0.515625q-0.1875 0.1875 -0.46875 0.1875zm-0.234375 1.515625l-1.421875 0l0 -0.734375l2.296875 0l0 3.03125q0 0.734375 0.203125 0.984375q0.203125 0.25 0.609375 0.25q0.3125 0 0.5625 -0.078125q0.265625 -0.078125 0.421875 -0.15625l0.125 0.75q-0.0625 0.03125 -0.1875 0.078125q-0.109375 0.046875 -0.265625 0.078125q-0.15625 0.046875 -0.34375 0.078125q-0.1875 0.046875 -0.390625 0.046875q-0.46875 0 -0.78125 -0.125q-0.296875 -0.140625 -0.484375 -0.390625q-0.1875 -0.265625 -0.265625 -0.640625q-0.078125 -0.375 -0.078125 -0.875l0 -2.296875zm7.062561 2.96875q0 -0.265625 -0.21875 -0.4375q-0.21875 -0.171875 -0.546875 -0.296875q-0.3125 -0.125 -0.703125 -0.25q-0.375 -0.125 -0.703125 -0.296875q-0.328125 -0.1875 -0.546875 -0.453125q-0.21875 -0.265625 -0.21875 -0.703125q0 -0.59375 0.484375 -0.984375q0.484375 -0.40625 1.515625 -0.40625q0.40625 0 0.84375 0.0625q0.4375 0.0625 0.734375 0.15625l-0.15625 0.78125q-0.078125 -0.046875 -0.234375 -0.09375q-0.140625 -0.046875 -0.34375 -0.078125q-0.1875 -0.03125 -0.40625 -0.046875q-0.21875 -0.03125 -0.421875 -0.03125q-1.15625 0 -1.15625 0.625q0 0.21875 0.21875 0.375q0.21875 0.15625 0.546875 0.28125q0.34375 0.125 0.71875 0.265625q0.390625 0.140625 0.71875 0.328125q0.328125 0.1875 0.546875 0.46875q0.21875 0.265625 0.21875 0.671875q0 0.671875 -0.53125 1.046875q-0.515625 0.375 -1.640625 0.375q-0.515625 0 -0.9375 -0.09375q-0.421875 -0.078125 -0.8125 -0.25l0.171875 -0.796875q0.375 0.15625 0.78125 0.28125q0.40625 0.109375 0.875 0.109375q1.203125 0 1.203125 -0.609375zm2.109436 -1.234375q0 -0.671875 0.21875 -1.15625q0.21875 -0.484375 0.578125 -0.796875q0.375 -0.328125 0.875 -0.484375q0.5 -0.15625 1.0625 -0.15625q0.359375 0 0.71875 0.046875q0.359375 0.046875 0.765625 0.171875l-0.203125 0.765625q-0.359375 -0.125 -0.65625 -0.15625q-0.28125 -0.046875 -0.578125 -0.046875q-0.390625 0 -0.734375 0.109375q-0.328125 0.09375 -0.59375 0.3125q-0.25 0.21875 -0.40625 0.5625q-0.140625 0.34375 -0.140625 0.828125q0 0.46875 0.140625 0.8125q0.140625 0.328125 0.390625 0.546875q0.25 0.21875 0.59375 0.328125q0.359375 0.109375 0.78125 0.109375q0.34375 0 0.65625 -0.03125q0.328125 -0.046875 0.6875 -0.171875l0.140625 0.734375q-0.375 0.140625 -0.765625 0.203125q-0.375 0.0625 -0.828125 0.0625q-0.59375 0 -1.09375 -0.171875q-0.5 -0.171875 -0.859375 -0.484375q-0.34375 -0.328125 -0.546875 -0.8125q-0.203125 -0.484375 -0.203125 -1.125zm8.546936 1.234375q0 -0.265625 -0.21875 -0.4375q-0.21875 -0.171875 -0.546875 -0.296875q-0.3125 -0.125 -0.703125 -0.25q-0.375 -0.125 -0.703125 -0.296875q-0.328125 -0.1875 -0.546875 -0.453125q-0.21875 -0.265625 -0.21875 -0.703125q0 -0.59375 0.484375 -0.984375q0.484375 -0.40625 1.515625 -0.40625q0.40625 0 0.84375 0.0625q0.4375 0.0625 0.734375 0.15625l-0.15625 0.78125q-0.078125 -0.046875 -0.234375 -0.09375q-0.140625 -0.046875 -0.34375 -0.078125q-0.1875 -0.03125 -0.40625 -0.046875q-0.21875 -0.03125 -0.421875 -0.03125q-1.15625 0 -1.15625 0.625q0 0.21875 0.21875 0.375q0.21875 0.15625 0.546875 0.28125q0.34375 0.125 0.71875 0.265625q0.390625 0.140625 0.71875 0.328125q0.328125 0.1875 0.546875 0.46875q0.21875 0.265625 0.21875 0.671875q0 0.671875 -0.53125 1.046875q-0.515625 0.375 -1.640625 0.375q-0.515625 0 -0.9375 -0.09375q-0.421875 -0.078125 -0.8125 -0.25l0.171875 -0.796875q0.375 0.15625 0.78125 0.28125q0.40625 0.109375 0.875 0.109375q1.203125 0 1.203125 -0.609375zm3.828186 -4.484375q-0.28125 0 -0.484375 -0.1875q-0.203125 -0.1875 -0.203125 -0.515625q0 -0.328125 0.203125 -0.515625q0.203125 -0.203125 0.484375 -0.203125q0.28125 0 0.46875 0.203125q0.203125 0.1875 0.203125 0.515625q0 0.328125 -0.203125 0.515625q-0.1875 0.1875 -0.46875 0.1875zm-0.234375 1.515625l-1.421875 0l0 -0.734375l2.296875 0l0 3.03125q0 0.734375 0.203125 0.984375q0.203125 0.25 0.609375 0.25q0.3125 0 0.5625 -0.078125q0.265625 -0.078125 0.421875 -0.15625l0.125 0.75q-0.0625 0.03125 -0.1875 0.078125q-0.109375 0.046875 -0.265625 0.078125q-0.15625 0.046875 -0.34375 0.078125q-0.1875 0.046875 -0.390625 0.046875q-0.46875 0 -0.78125 -0.125q-0.296875 -0.140625 -0.484375 -0.390625q-0.1875 -0.265625 -0.265625 -0.640625q-0.078125 -0.375 -0.078125 -0.875l0 -2.296875zm4.812561 1.078125l2.359375 0l0 0.828125l-2.359375 0l0 -0.828125zm8.750061 0.65625q0 0.578125 -0.171875 1.0625q-0.15625 0.46875 -0.46875 0.8125q-0.296875 0.34375 -0.71875 0.53125q-0.40625 0.1875 -0.890625 0.1875q-0.484375 0 -0.890625 -0.1875q-0.40625 -0.1875 -0.71875 -0.53125q-0.296875 -0.34375 -0.46875 -0.8125q-0.15625 -0.484375 -0.15625 -1.0625q0 -0.59375 0.15625 -1.0625q0.171875 -0.484375 0.46875 -0.8125q0.3125 -0.34375 0.71875 -0.53125q0.40625 -0.1875 0.890625 -0.1875q0.484375 0 0.890625 0.1875q0.421875 0.1875 0.71875 0.53125q0.3125 0.328125 0.46875 0.8125q0.171875 0.46875 0.171875 1.0625zm-0.90625 0q0 -0.84375 -0.375 -1.328125q-0.359375 -0.484375 -0.96875 -0.484375q-0.609375 0 -0.96875 0.484375q-0.359375 0.484375 -0.359375 1.328125q0 0.828125 0.359375 1.3125q0.359375 0.484375 0.96875 0.484375q0.609375 0 0.96875 -0.484375q0.375 -0.484375 0.375 -1.3125zm6.343811 -2.46875q-0.203125 0.6875 -0.453125 1.359375q-0.234375 0.65625 -0.5 1.296875q-0.25 0.625 -0.515625 1.203125q-0.265625 0.578125 -0.515625 1.078125l-0.796875 0q-0.5 -1.0 -1.015625 -2.28125q-0.5 -1.28125 -0.90625 -2.65625l0.96875 0q0.125 0.46875 0.28125 0.984375q0.171875 0.515625 0.34375 1.046875q0.1875 0.515625 0.375 1.0q0.1875 0.484375 0.375 0.875q0.171875 -0.390625 0.375 -0.875q0.203125 -0.484375 0.390625 -1.0q0.1875 -0.53125 0.359375 -1.046875q0.1875 -0.515625 0.3125 -0.984375l0.921875 0zm3.078186 -0.125q1.0 0 1.53125 0.625q0.546875 0.625 0.546875 1.890625l0 0.3125l-3.53125 0q0.046875 0.765625 0.5 1.171875q0.453125 0.390625 1.28125 0.390625q0.46875 0 0.796875 -0.078125q0.328125 -0.078125 0.5 -0.15625l0.109375 0.75q-0.15625 0.078125 -0.578125 0.171875q-0.40625 0.109375 -0.921875 0.109375q-0.640625 0 -1.125 -0.203125q-0.484375 -0.203125 -0.8125 -0.53125q-0.3125 -0.34375 -0.484375 -0.8125q-0.15625 -0.484375 -0.15625 -1.046875q0 -0.65625 0.203125 -1.140625q0.203125 -0.5 0.53125 -0.8125q0.328125 -0.3125 0.75 -0.46875q0.421875 -0.171875 0.859375 -0.171875zm1.1875 2.109375q0 -0.625 -0.328125 -0.984375q-0.328125 -0.375 -0.875 -0.375q-0.3125 0 -0.5625 0.125q-0.25 0.109375 -0.4375 0.296875q-0.171875 0.1875 -0.28125 0.4375q-0.109375 0.25 -0.140625 0.5l2.625 0zm2.515686 2.953125l0 -4.671875q1.09375 -0.375 2.1875 -0.375q0.34375 0 0.65625 0.03125q0.3125 0.015625 0.6875 0.109375l-0.171875 0.765625q-0.328125 -0.09375 -0.59375 -0.109375q-0.265625 -0.03125 -0.578125 -0.03125q-0.640625 0 -1.3125 0.171875l0 4.109375l-0.875 0zm9.203186 -4.9375q-0.203125 0.6875 -0.453125 1.359375q-0.234375 0.65625 -0.5 1.296875q-0.25 0.625 -0.515625 1.203125q-0.265625 0.578125 -0.515625 1.078125l-0.796875 0q-0.5 -1.0 -1.015625 -2.28125q-0.5 -1.28125 -0.90625 -2.65625l0.96875 0q0.125 0.46875 0.28125 0.984375q0.171875 0.515625 0.34375 1.046875q0.1875 0.515625 0.375 1.0q0.1875 0.484375 0.375 0.875q0.171875 -0.390625 0.375 -0.875q0.203125 -0.484375 0.390625 -1.0q0.1875 -0.53125 0.359375 -1.046875q0.1875 -0.515625 0.3125 -0.984375l0.921875 0zm2.546936 -0.78125q-0.28125 0 -0.484375 -0.1875q-0.203125 -0.1875 -0.203125 -0.515625q0 -0.328125 0.203125 -0.515625q0.203125 -0.203125 0.484375 -0.203125q0.28125 0 0.46875 0.203125q0.203125 0.1875 0.203125 0.515625q0 0.328125 -0.203125 0.515625q-0.1875 0.1875 -0.46875 0.1875zm-0.234375 1.515625l-1.421875 0l0 -0.734375l2.296875 0l0 3.03125q0 0.734375 0.203125 0.984375q0.203125 0.25 0.609375 0.25q0.31250763 0 0.5625076 -0.078125q0.265625 -0.078125 0.421875 -0.15625l0.125 0.75q-0.0625 0.03125 -0.1875 0.078125q-0.109375 0.046875 -0.265625 0.078125q-0.15625 0.046875 -0.34375 0.078125q-0.18750763 0.046875 -0.39063263 0.046875q-0.46875 0 -0.78125 -0.125q-0.296875 -0.140625 -0.484375 -0.390625q-0.1875 -0.265625 -0.265625 -0.640625q-0.078125 -0.375 -0.078125 -0.875l0 -2.296875zm6.0938187 -0.859375q1.0 0 1.53125 0.625q0.546875 0.625 0.546875 1.890625l0 0.3125l-3.53125 0q0.046875 0.765625 0.5 1.171875q0.453125 0.390625 1.28125 0.390625q0.46875 0 0.796875 -0.078125q0.328125 -0.078125 0.5 -0.15625l0.109375 0.75q-0.15625 0.078125 -0.578125 0.171875q-0.40625 0.109375 -0.921875 0.109375q-0.640625 0 -1.125 -0.203125q-0.484375 -0.203125 -0.8125 -0.53125q-0.3125 -0.34375 -0.484375 -0.8125q-0.15625 -0.484375 -0.15625 -1.046875q0 -0.65625 0.203125 -1.140625q0.203125 -0.5 0.53125 -0.8125q0.328125 -0.3125 0.75 -0.46875q0.421875 -0.171875 0.859375 -0.171875zm1.1875 2.109375q0 -0.625 -0.328125 -0.984375q-0.328125 -0.375 -0.875 -0.375q-0.3125 0 -0.5625 0.125q-0.25 0.109375 -0.4375 0.296875q-0.171875 0.1875 -0.28125 0.4375q-0.109375 0.25 -0.140625 0.5l2.625 0zm5.031311 2.953125q-0.15625 -0.359375 -0.28125 -0.65625q-0.109375 -0.296875 -0.234375 -0.59375q-0.109375 -0.3125 -0.21875 -0.625q-0.109375 -0.328125 -0.25 -0.75q-0.15625 0.421875 -0.28125 0.75q-0.109375 0.3125 -0.21875 0.625q-0.109375 0.296875 -0.234375 0.59375q-0.125 0.296875 -0.28125 0.65625l-0.671875 0q-0.296875 -1.3125 -0.5 -2.59375q-0.1875 -1.28125 -0.28125 -2.34375l0.828125 0q0.03125 0.40625 0.0625 0.8125q0.046875 0.390625 0.09375 0.828125q0.0625 0.4375 0.125 0.953125q0.078125 0.515625 0.15625 1.15625q0.171875 -0.4375 0.28125 -0.75q0.125 -0.328125 0.21875 -0.609375q0.09375 -0.28125 0.1875 -0.578125q0.09375 -0.3125 0.203125 -0.671875l0.65625 0q0.109375 0.359375 0.1875 0.671875q0.09375 0.296875 0.1875 0.578125q0.09375 0.28125 0.203125 0.609375q0.109375 0.3125 0.265625 0.734375q0.09375 -0.59375 0.171875 -1.09375q0.078125 -0.5 0.125 -0.9375q0.046875 -0.4375 0.09375 -0.84375q0.046875 -0.421875 0.078125 -0.859375l0.796875 0q-0.046875 0.53125 -0.125 1.140625q-0.078125 0.59375 -0.1875 1.234375q-0.109375 0.640625 -0.234375 1.296875q-0.125 0.65625 -0.265625 1.265625l-0.65625 0zm5.125061 -0.6875q0 0.328125 -0.21875 0.578125q-0.203125 0.234375 -0.5625 0.234375q-0.359375 0 -0.578125 -0.234375q-0.203125 -0.25 -0.203125 -0.578125q0 -0.328125 0.203125 -0.5625q0.21875 -0.25 0.578125 -0.25q0.359375 0 0.5625 0.25q0.21875 0.234375 0.21875 0.5625zm5.156311 -5.03125q-0.28125 0 -0.484375 -0.1875q-0.203125 -0.1875 -0.203125 -0.515625q0 -0.328125 0.203125 -0.515625q0.203125 -0.203125 0.484375 -0.203125q0.28125 0 0.484375 0.203125q0.203125 0.1875 0.203125 0.515625q0 0.328125 -0.203125 0.515625q-0.203125 0.1875 -0.484375 0.1875zm-2.0625 1.515625l0 -0.734375l2.875 0l0 4.890625q0 0.5 -0.15625 0.859375q-0.140625 0.359375 -0.375 0.578125q-0.234375 0.234375 -0.546875 0.328125q-0.3125 0.09375 -0.671875 0.09375q-0.40625 0 -0.8125 -0.09375q-0.40625 -0.078125 -0.78125 -0.265625l0.265625 -0.734375q0.28125 0.125 0.59375 0.203125q0.328125 0.09375 0.625 0.09375q0.4375 0 0.703125 -0.21875q0.28125 -0.203125 0.28125 -0.84375l0 -4.15625l-2.0 0zm7.843811 2.96875q0 -0.265625 -0.21875 -0.4375q-0.21875 -0.171875 -0.546875 -0.296875q-0.3125 -0.125 -0.703125 -0.25q-0.375 -0.125 -0.703125 -0.296875q-0.328125 -0.1875 -0.546875 -0.453125q-0.21875 -0.265625 -0.21875 -0.703125q0 -0.59375 0.484375 -0.984375q0.484375 -0.40625 1.515625 -0.40625q0.40625 0 0.84375 0.0625q0.4375 0.0625 0.734375 0.15625l-0.15625 0.78125q-0.078125 -0.046875 -0.234375 -0.09375q-0.140625 -0.046875 -0.34375 -0.078125q-0.1875 -0.03125 -0.40625 -0.046875q-0.21875 -0.03125 -0.421875 -0.03125q-1.15625 0 -1.15625 0.625q0 0.21875 0.21875 0.375q0.21875 0.15625 0.546875 0.28125q0.34375 0.125 0.71875 0.265625q0.390625 0.140625 0.71875 0.328125q0.328125 0.1875 0.546875 0.46875q0.21875 0.265625 0.21875 0.671875q0 0.671875 -0.53125 1.046875q-0.515625 0.375 -1.640625 0.375q-0.515625 0 -0.9375 -0.09375q-0.421875 -0.078125 -0.8125 -0.25l0.171875 -0.796875q0.375 0.15625 0.78125 0.28125q0.40625 0.109375 0.875 0.109375q1.203125 0 1.203125 -0.609375zm6.500061 -1.234375q0 0.578125 -0.171875 1.0625q-0.15625 0.46875 -0.46875 0.8125q-0.296875 0.34375 -0.71875 0.53125q-0.40625 0.1875 -0.890625 0.1875q-0.484375 0 -0.890625 -0.1875q-0.40625 -0.1875 -0.71875 -0.53125q-0.296875 -0.34375 -0.46875 -0.8125q-0.15625 -0.484375 -0.15625 -1.0625q0 -0.59375 0.15625 -1.0625q0.171875 -0.484375 0.46875 -0.8125q0.3125 -0.34375 0.71875 -0.53125q0.40625 -0.1875 0.890625 -0.1875q0.484375 0 0.890625 0.1875q0.421875 0.1875 0.71875 0.53125q0.3125 0.328125 0.46875 0.8125q0.171875 0.46875 0.171875 1.0625zm-0.90625 0q0 -0.84375 -0.375 -1.328125q-0.359375 -0.484375 -0.96875 -0.484375q-0.609375 0 -0.96875 0.484375q-0.359375 0.484375 -0.359375 1.328125q0 0.828125 0.359375 1.3125q0.359375 0.484375 0.96875 0.484375q0.609375 0 0.96875 -0.484375q0.375 -0.484375 0.375 -1.3125zm2.078186 -2.34375q0.484375 -0.109375 0.953125 -0.171875q0.484375 -0.0625 0.890625 -0.0625q0.99998474 0 1.4999847 0.515625q0.515625 0.5 0.515625 1.625l0 2.90625l-0.875 0l0 -2.734375q0 -0.484375 -0.09375 -0.78125q-0.078125 -0.296875 -0.234375 -0.453125q-0.15625 -0.171875 -0.37498474 -0.234375q-0.21875 -0.0625 -0.46875 -0.0625q-0.21875 0 -0.46875 0.03125q-0.234375 0.015625 -0.453125 0.0625l0 4.171875l-0.890625 0l0 -4.8125z" fill-rule="nonzero"/><path fill="#a61c00" d="m647.66144 488.92914l15.810974 0l0 19.212585l-15.810974 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m664.979 476.40945l267.9685 0l0 75.968475l-267.9685 0z" fill-rule="evenodd"/><path fill="#000000" d="m678.4165 498.8332q0 0.21875 -0.03125 0.34375q-0.015625 0.109375 -0.078125 0.171875q-0.0625 0.0625 -0.171875 0.109375q-0.109375 0.046875 -0.265625 0.078125q-0.140625 0.03125 -0.3125 0.046875q-0.15625 0.03125 -0.328125 0.03125q-0.5 0 -0.859375 -0.125q-0.34375 -0.140625 -0.578125 -0.40625q-0.234375 -0.28125 -0.34375 -0.6875q-0.09375 -0.40625 -0.09375 -0.96875l0 -3.765625l-0.90625 0q-0.109375 0 -0.171875 -0.109375q-0.0625 -0.109375 -0.0625 -0.375q0 -0.140625 0.015625 -0.234375q0.015625 -0.09375 0.046875 -0.140625q0.03125 -0.0625 0.078125 -0.09375q0.046875 -0.03125 0.109375 -0.03125l0.890625 0l0 -1.53125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.28125 -0.015625q0.1875 0 0.296875 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 1.53125l1.640625 0q0.0625 0 0.09375 0.03125q0.046875 0.03125 0.078125 0.09375q0.046875 0.046875 0.046875 0.140625q0.015625 0.09375 0.015625 0.234375q0 0.265625 -0.0625 0.375q-0.0625 0.109375 -0.171875 0.109375l-1.640625 0l0 3.59375q0 0.671875 0.1875 1.015625q0.203125 0.328125 0.703125 0.328125q0.171875 0 0.296875 -0.03125q0.125 -0.03125 0.21875 -0.0625q0.109375 -0.03125 0.171875 -0.0625q0.078125 -0.046875 0.140625 -0.046875q0.03125 0 0.0625 0.03125q0.03125 0.015625 0.046875 0.0625q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125zm7.1123657 0.484375q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.171875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.03125 -0.046875 -0.03125 -0.09375l0 -3.78125q0 -0.546875 -0.09375 -0.875q-0.078125 -0.34375 -0.25 -0.578125q-0.15625 -0.25 -0.421875 -0.375q-0.25 -0.140625 -0.59375 -0.140625q-0.4375 0 -0.890625 0.328125q-0.4375 0.3125 -0.921875 0.90625l0 4.515625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -9.5625q0 -0.0625 0.015625 -0.109375q0.03125 -0.046875 0.09375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.109375l0 3.859375q0.5 -0.546875 1.015625 -0.796875q0.515625 -0.265625 1.046875 -0.265625q0.640625 0 1.078125 0.21875q0.4375 0.21875 0.703125 0.578125q0.28125 0.359375 0.390625 0.859375q0.125 0.484375 0.125 1.1875l0 3.921875zm7.6533813 -3.5q0 0.265625 -0.140625 0.390625q-0.140625 0.125 -0.3125 0.125l-4.234375 0q0 0.53125 0.109375 0.96875q0.109375 0.421875 0.359375 0.734375q0.25 0.296875 0.640625 0.46875q0.40625 0.15625 0.984375 0.15625q0.46875 0 0.828125 -0.0625q0.359375 -0.078125 0.609375 -0.171875q0.265625 -0.09375 0.4375 -0.171875q0.171875 -0.078125 0.25 -0.078125q0.046875 0 0.078125 0.03125q0.046875 0.015625 0.0625 0.078125q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125q0 0.09375 0 0.171875q0 0.0625 -0.015625 0.125q-0.015625 0.046875 -0.046875 0.09375q-0.015625 0.046875 -0.0625 0.09375q-0.03125 0.03125 -0.234375 0.125q-0.1875 0.078125 -0.5 0.171875q-0.296875 0.078125 -0.703125 0.140625q-0.40625 0.078125 -0.859375 0.078125q-0.796875 0 -1.40625 -0.21875q-0.59375 -0.234375 -1.0 -0.671875q-0.40625 -0.4375 -0.609375 -1.09375q-0.203125 -0.65625 -0.203125 -1.53125q0 -0.828125 0.203125 -1.484375q0.21875 -0.671875 0.625 -1.125q0.40625 -0.46875 0.96875 -0.703125q0.578125 -0.25 1.28125 -0.25q0.765625 0 1.296875 0.25q0.53125 0.234375 0.875 0.65625q0.34375 0.40625 0.5 0.96875q0.171875 0.546875 0.171875 1.171875l0 0.21875zm-1.1875 -0.359375q0.015625 -0.921875 -0.421875 -1.453125q-0.421875 -0.53125 -1.28125 -0.53125q-0.4375 0 -0.765625 0.171875q-0.328125 0.15625 -0.546875 0.4375q-0.21875 0.265625 -0.34375 0.625q-0.125 0.359375 -0.140625 0.75l3.5 0zm12.141113 3.859375q0 0.09375 -0.0625 0.140625q-0.0625 0.03125 -0.171875 0.046875q-0.09375 0.03125 -0.28125 0.03125q-0.1875 0 -0.296875 -0.03125q-0.109375 -0.015625 -0.15625 -0.046875q-0.046875 -0.046875 -0.046875 -0.140625l0 -0.640625q-0.421875 0.453125 -0.953125 0.703125q-0.515625 0.25 -1.09375 0.25q-0.5 0 -0.921875 -0.140625q-0.40625 -0.125 -0.703125 -0.375q-0.28125 -0.25 -0.453125 -0.609375q-0.15625 -0.375 -0.15625 -0.84375q0 -0.546875 0.21875 -0.9375q0.234375 -0.40625 0.640625 -0.671875q0.421875 -0.265625 1.015625 -0.390625q0.609375 -0.140625 1.359375 -0.140625l0.875 0l0 -0.5q0 -0.375 -0.078125 -0.65625q-0.078125 -0.28125 -0.25 -0.46875q-0.171875 -0.203125 -0.453125 -0.296875q-0.28125 -0.09375 -0.6875 -0.09375q-0.4375 0 -0.78125 0.109375q-0.34375 0.09375 -0.609375 0.21875q-0.265625 0.125 -0.4375 0.234375q-0.171875 0.109375 -0.265625 0.109375q-0.046875 0 -0.09375 -0.03125q-0.046875 -0.03125 -0.078125 -0.078125q-0.03125 -0.0625 -0.046875 -0.15625q-0.015625 -0.09375 -0.015625 -0.203125q0 -0.171875 0.015625 -0.265625q0.03125 -0.109375 0.125 -0.203125q0.109375 -0.09375 0.34375 -0.21875q0.234375 -0.125 0.53125 -0.234375q0.3125 -0.109375 0.671875 -0.171875q0.375 -0.0625 0.75 -0.0625q0.6875 0 1.171875 0.15625q0.5 0.15625 0.796875 0.46875q0.296875 0.296875 0.4375 0.75q0.140625 0.453125 0.140625 1.046875l0 4.34375zm-1.1875 -2.9375l-1.0 0q-0.484375 0 -0.84375 0.078125q-0.359375 0.078125 -0.59375 0.25q-0.234375 0.15625 -0.34375 0.390625q-0.109375 0.21875 -0.109375 0.515625q0 0.5 0.3125 0.796875q0.3125 0.296875 0.890625 0.296875q0.46875 0 0.859375 -0.234375q0.40625 -0.25 0.828125 -0.734375l0 -1.359375zm4.5360107 2.9375q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -9.5625q0 -0.0625 0.015625 -0.109375q0.03125 -0.046875 0.09375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.109375l0 9.5625zm7.6760254 -3.5q0 0.265625 -0.140625 0.390625q-0.140625 0.125 -0.3125 0.125l-4.234375 0q0 0.53125 0.109375 0.96875q0.109375 0.421875 0.359375 0.734375q0.25 0.296875 0.640625 0.46875q0.40625 0.15625 0.984375 0.15625q0.46875 0 0.828125 -0.0625q0.359375 -0.078125 0.609375 -0.171875q0.265625 -0.09375 0.4375 -0.171875q0.171875 -0.078125 0.25 -0.078125q0.046875 0 0.078125 0.03125q0.046875 0.015625 0.0625 0.078125q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125q0 0.09375 0 0.171875q0 0.0625 -0.015625 0.125q-0.015625 0.046875 -0.046875 0.09375q-0.015625 0.046875 -0.0625 0.09375q-0.03125 0.03125 -0.234375 0.125q-0.1875 0.078125 -0.5 0.171875q-0.296875 0.078125 -0.703125 0.140625q-0.40625 0.078125 -0.859375 0.078125q-0.796875 0 -1.40625 -0.21875q-0.59375 -0.234375 -1.0 -0.671875q-0.40625 -0.4375 -0.609375 -1.09375q-0.203125 -0.65625 -0.203125 -1.53125q0 -0.828125 0.203125 -1.484375q0.21875 -0.671875 0.625 -1.125q0.40625 -0.46875 0.96875 -0.703125q0.578125 -0.25 1.28125 -0.25q0.765625 0 1.296875 0.25q0.53125 0.234375 0.875 0.65625q0.34375 0.40625 0.5 0.96875q0.171875 0.546875 0.171875 1.171875l0 0.21875zm-1.1875 -0.359375q0.015625 -0.921875 -0.421875 -1.453125q-0.421875 -0.53125 -1.28125 -0.53125q-0.4375 0 -0.765625 0.171875q-0.328125 0.15625 -0.546875 0.4375q-0.21875 0.265625 -0.34375 0.625q-0.125 0.359375 -0.140625 0.75l3.5 0zm6.7454834 -2.171875q0 0.15625 -0.015625 0.265625q0 0.109375 -0.03125 0.171875q-0.015625 0.0625 -0.046875 0.09375q-0.03125 0.03125 -0.078125 0.03125q-0.0625 0 -0.15625 -0.03125q-0.078125 -0.03125 -0.1875 -0.0625q-0.09375 -0.03125 -0.21875 -0.0625q-0.125 -0.03125 -0.28125 -0.03125q-0.171875 0 -0.34375 0.078125q-0.171875 0.0625 -0.375 0.234375q-0.1875 0.15625 -0.390625 0.4375q-0.203125 0.265625 -0.453125 0.65625l0 4.25q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.0625 -0.03125 0.15625 -0.046875q0.109375 -0.015625 0.265625 -0.015625q0.171875 0 0.265625 0.015625q0.109375 0.015625 0.15625 0.046875q0.0625 0.03125 0.078125 0.078125q0.03125 0.03125 0.03125 0.078125l0 0.9375q0.265625 -0.375 0.5 -0.625q0.234375 -0.25 0.4375 -0.375q0.21875 -0.140625 0.421875 -0.1875q0.203125 -0.0625 0.40625 -0.0625q0.09375 0 0.203125 0.015625q0.125 0 0.25 0.03125q0.140625 0.03125 0.234375 0.0625q0.109375 0.03125 0.140625 0.078125q0.046875 0.03125 0.0625 0.0625q0.015625 0.03125 0.03125 0.078125q0.015625 0.046875 0.015625 0.15625q0 0.09375 0 0.25zm4.687744 5.546875q0 0.21875 -0.03125 0.34375q-0.015625 0.109375 -0.078125 0.171875q-0.0625 0.0625 -0.171875 0.109375q-0.109375 0.046875 -0.265625 0.078125q-0.140625 0.03125 -0.3125 0.046875q-0.15625 0.03125 -0.328125 0.03125q-0.5 0 -0.859375 -0.125q-0.34375 -0.140625 -0.578125 -0.40625q-0.234375 -0.28125 -0.34375 -0.6875q-0.09375 -0.40625 -0.09375 -0.96875l0 -3.765625l-0.90625 0q-0.109375 0 -0.171875 -0.109375q-0.0625 -0.109375 -0.0625 -0.375q0 -0.140625 0.015625 -0.234375q0.015625 -0.09375 0.046875 -0.140625q0.03125 -0.0625 0.078125 -0.09375q0.046875 -0.03125 0.109375 -0.03125l0.890625 0l0 -1.53125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.28125 -0.015625q0.1875 0 0.296875 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 1.53125l1.640625 0q0.0625 0 0.09375 0.03125q0.046875 0.03125 0.078125 0.09375q0.046875 0.046875 0.046875 0.140625q0.015625 0.09375 0.015625 0.234375q0 0.265625 -0.0625 0.375q-0.0625 0.109375 -0.171875 0.109375l-1.640625 0l0 3.59375q0 0.671875 0.1875 1.015625q0.203125 0.328125 0.703125 0.328125q0.171875 0 0.296875 -0.03125q0.125 -0.03125 0.21875 -0.0625q0.109375 -0.03125 0.171875 -0.0625q0.078125 -0.046875 0.140625 -0.046875q0.03125 0 0.0625 0.03125q0.03125 0.015625 0.046875 0.0625q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125zm4.4718018 -2.953125q0 0.28125 -0.078125 0.390625q-0.0625 0.09375 -0.171875 0.09375l-3.0 0q-0.125 0 -0.1875 -0.109375q-0.0625 -0.109375 -0.0625 -0.375q0 -0.28125 0.0625 -0.375q0.0625 -0.109375 0.1875 -0.109375l3.0 0q0.046875 0 0.09375 0.015625q0.046875 0.015625 0.078125 0.078125q0.03125 0.0625 0.046875 0.15625q0.03125 0.09375 0.03125 0.234375zm5.6276245 1.671875q0 0.5 -0.1875 0.890625q-0.1875 0.375 -0.53125 0.640625q-0.328125 0.265625 -0.796875 0.40625q-0.453125 0.140625 -1.015625 0.140625q-0.34375 0 -0.65625 -0.0625q-0.3125 -0.046875 -0.5625 -0.125q-0.234375 -0.09375 -0.40625 -0.171875q-0.171875 -0.09375 -0.25 -0.15625q-0.078125 -0.078125 -0.125 -0.203125q-0.03125 -0.140625 -0.03125 -0.359375q0 -0.140625 0.015625 -0.234375q0.015625 -0.09375 0.03125 -0.140625q0.03125 -0.0625 0.0625 -0.078125q0.046875 -0.03125 0.09375 -0.03125q0.078125 0 0.234375 0.09375q0.15625 0.09375 0.375 0.21875q0.234375 0.109375 0.53125 0.203125q0.3125 0.09375 0.71875 0.09375q0.296875 0 0.53125 -0.0625q0.25 -0.0625 0.421875 -0.1875q0.1875 -0.125 0.28125 -0.3125q0.09375 -0.203125 0.09375 -0.46875q0 -0.265625 -0.140625 -0.453125q-0.140625 -0.1875 -0.375 -0.328125q-0.21875 -0.140625 -0.515625 -0.25q-0.28125 -0.109375 -0.59375 -0.234375q-0.296875 -0.125 -0.59375 -0.28125q-0.28125 -0.15625 -0.515625 -0.375q-0.21875 -0.21875 -0.359375 -0.515625q-0.140625 -0.3125 -0.140625 -0.75q0 -0.375 0.140625 -0.71875q0.15625 -0.359375 0.453125 -0.609375q0.296875 -0.265625 0.734375 -0.421875q0.4375 -0.15625 1.015625 -0.15625q0.265625 0 0.515625 0.046875q0.265625 0.03125 0.46875 0.09375q0.203125 0.0625 0.34375 0.140625q0.15625 0.078125 0.234375 0.140625q0.078125 0.046875 0.09375 0.09375q0.03125 0.046875 0.03125 0.109375q0.015625 0.046875 0.03125 0.125q0.015625 0.078125 0.015625 0.1875q0 0.125 -0.015625 0.21875q-0.015625 0.078125 -0.046875 0.140625q-0.015625 0.0625 -0.046875 0.09375q-0.03125 0.015625 -0.078125 0.015625q-0.0625 0 -0.1875 -0.078125q-0.125 -0.078125 -0.328125 -0.171875q-0.1875 -0.09375 -0.453125 -0.171875q-0.25 -0.078125 -0.59375 -0.078125q-0.296875 0 -0.53125 0.078125q-0.21875 0.0625 -0.375 0.1875q-0.140625 0.125 -0.21875 0.296875q-0.0625 0.171875 -0.0625 0.375q0 0.28125 0.140625 0.46875q0.140625 0.1875 0.359375 0.328125q0.234375 0.140625 0.53125 0.265625q0.296875 0.109375 0.59375 0.234375q0.3125 0.125 0.609375 0.28125q0.296875 0.140625 0.515625 0.359375q0.234375 0.203125 0.375 0.515625q0.140625 0.296875 0.140625 0.703125zm5.029175 1.28125q0 0.21875 -0.03125 0.34375q-0.015625 0.109375 -0.078125 0.171875q-0.0625 0.0625 -0.171875 0.109375q-0.109375 0.046875 -0.265625 0.078125q-0.140625 0.03125 -0.3125 0.046875q-0.15625 0.03125 -0.328125 0.03125q-0.5 0 -0.859375 -0.125q-0.34375 -0.140625 -0.578125 -0.40625q-0.234375 -0.28125 -0.34375 -0.6875q-0.09375 -0.40625 -0.09375 -0.96875l0 -3.765625l-0.90625 0q-0.109375 0 -0.171875 -0.109375q-0.0625 -0.109375 -0.0625 -0.375q0 -0.140625 0.015625 -0.234375q0.015625 -0.09375 0.046875 -0.140625q0.03125 -0.0625 0.078125 -0.09375q0.046875 -0.03125 0.109375 -0.03125l0.890625 0l0 -1.53125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.28125 -0.015625q0.1875 0 0.296875 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 1.53125l1.640625 0q0.0625 0 0.09375 0.03125q0.046875 0.03125 0.078125 0.09375q0.046875 0.046875 0.046875 0.140625q0.015625 0.09375 0.015625 0.234375q0 0.265625 -0.0625 0.375q-0.0625 0.109375 -0.171875 0.109375l-1.640625 0l0 3.59375q0 0.671875 0.1875 1.015625q0.203125 0.328125 0.703125 0.328125q0.171875 0 0.296875 -0.03125q0.125 -0.03125 0.21875 -0.0625q0.109375 -0.03125 0.171875 -0.0625q0.078125 -0.046875 0.140625 -0.046875q0.03125 0 0.0625 0.03125q0.03125 0.015625 0.046875 0.0625q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125zm6.4248657 0.484375q0 0.09375 -0.0625 0.140625q-0.0625 0.03125 -0.171875 0.046875q-0.09375 0.03125 -0.28125 0.03125q-0.1875 0 -0.296875 -0.03125q-0.109375 -0.015625 -0.15625 -0.046875q-0.046875 -0.046875 -0.046875 -0.140625l0 -0.640625q-0.421875 0.453125 -0.953125 0.703125q-0.515625 0.25 -1.09375 0.25q-0.5 0 -0.921875 -0.140625q-0.40625 -0.125 -0.703125 -0.375q-0.28125 -0.25 -0.453125 -0.609375q-0.15625 -0.375 -0.15625 -0.84375q0 -0.546875 0.21875 -0.9375q0.234375 -0.40625 0.640625 -0.671875q0.421875 -0.265625 1.015625 -0.390625q0.609375 -0.140625 1.359375 -0.140625l0.875 0l0 -0.5q0 -0.375 -0.078125 -0.65625q-0.078125 -0.28125 -0.25 -0.46875q-0.171875 -0.203125 -0.453125 -0.296875q-0.28125 -0.09375 -0.6875 -0.09375q-0.4375 0 -0.78125 0.109375q-0.34375 0.09375 -0.609375 0.21875q-0.265625 0.125 -0.4375 0.234375q-0.171875 0.109375 -0.265625 0.109375q-0.046875 0 -0.09375 -0.03125q-0.046875 -0.03125 -0.078125 -0.078125q-0.03125 -0.0625 -0.046875 -0.15625q-0.015625 -0.09375 -0.015625 -0.203125q0 -0.171875 0.015625 -0.265625q0.03125 -0.109375 0.125 -0.203125q0.109375 -0.09375 0.34375 -0.21875q0.234375 -0.125 0.53125 -0.234375q0.3125 -0.109375 0.671875 -0.171875q0.375 -0.0625 0.75 -0.0625q0.6875 0 1.171875 0.15625q0.5 0.15625 0.796875 0.46875q0.296875 0.296875 0.4375 0.75q0.140625 0.453125 0.140625 1.046875l0 4.34375zm-1.1875 -2.9375l-1.0 0q-0.484375 0 -0.84375 0.078125q-0.359375 0.078125 -0.59375 0.25q-0.234375 0.15625 -0.34375 0.390625q-0.109375 0.21875 -0.109375 0.515625q0 0.5 0.3125 0.796875q0.3125 0.296875 0.890625 0.296875q0.46875 0 0.859375 -0.234375q0.40625 -0.25 0.828125 -0.734375l0 -1.359375zm6.6922607 2.453125q0 0.21875 -0.03125 0.34375q-0.015625 0.109375 -0.078125 0.171875q-0.0625 0.0625 -0.171875 0.109375q-0.109375 0.046875 -0.265625 0.078125q-0.140625 0.03125 -0.3125 0.046875q-0.15625 0.03125 -0.328125 0.03125q-0.5 0 -0.859375 -0.125q-0.34375 -0.140625 -0.578125 -0.40625q-0.234375 -0.28125 -0.34375 -0.6875q-0.09375 -0.40625 -0.09375 -0.96875l0 -3.765625l-0.90625 0q-0.109375 0 -0.171875 -0.109375q-0.0625 -0.109375 -0.0625 -0.375q0 -0.140625 0.015625 -0.234375q0.015625 -0.09375 0.046875 -0.140625q0.03125 -0.0625 0.078125 -0.09375q0.046875 -0.03125 0.109375 -0.03125l0.890625 0l0 -1.53125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.28125 -0.015625q0.1875 0 0.296875 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 1.53125l1.640625 0q0.0625 0 0.09375 0.03125q0.046875 0.03125 0.078125 0.09375q0.046875 0.046875 0.046875 0.140625q0.015625 0.09375 0.015625 0.234375q0 0.265625 -0.0625 0.375q-0.0625 0.109375 -0.171875 0.109375l-1.640625 0l0 3.59375q0 0.671875 0.1875 1.015625q0.203125 0.328125 0.703125 0.328125q0.171875 0 0.296875 -0.03125q0.125 -0.03125 0.21875 -0.0625q0.109375 -0.03125 0.171875 -0.0625q0.078125 -0.046875 0.140625 -0.046875q0.03125 0 0.0625 0.03125q0.03125 0.015625 0.046875 0.0625q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125zm7.0811768 0.484375q0 0.046875 -0.03125 0.09375q-0.015625 0.03125 -0.078125 0.0625q-0.0625 0.03125 -0.171875 0.046875q-0.109375 0.015625 -0.25 0.015625q-0.171875 0 -0.28125 -0.015625q-0.09375 -0.015625 -0.15625 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -0.859375q-0.546875 0.609375 -1.078125 0.890625q-0.53125 0.28125 -1.09375 0.28125q-0.640625 0 -1.078125 -0.21875q-0.4375 -0.21875 -0.71875 -0.578125q-0.265625 -0.375 -0.390625 -0.859375q-0.109375 -0.5 -0.109375 -1.203125l0 -3.90625q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.109375 0.015625 0.171875 0.046875q0.078125 0.03125 0.109375 0.078125q0.03125 0.03125 0.03125 0.078125l0 3.75q0 0.578125 0.078125 0.921875q0.078125 0.328125 0.25 0.578125q0.171875 0.234375 0.421875 0.375q0.265625 0.125 0.609375 0.125q0.4375 0 0.875 -0.3125q0.453125 -0.328125 0.9375 -0.9375l0 -4.5q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.109375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.109375 -0.015625 0.28125 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 6.453125zm6.2315063 -1.765625q0 0.5 -0.1875 0.890625q-0.1875 0.375 -0.53125 0.640625q-0.328125 0.265625 -0.796875 0.40625q-0.453125 0.140625 -1.015625 0.140625q-0.34375 0 -0.65625 -0.0625q-0.3125 -0.046875 -0.5625 -0.125q-0.234375 -0.09375 -0.40625 -0.171875q-0.171875 -0.09375 -0.25 -0.15625q-0.078125 -0.078125 -0.125 -0.203125q-0.03125 -0.140625 -0.03125 -0.359375q0 -0.140625 0.015625 -0.234375q0.015625 -0.09375 0.03125 -0.140625q0.03125 -0.0625 0.0625 -0.078125q0.046875 -0.03125 0.09375 -0.03125q0.078125 0 0.234375 0.09375q0.15625 0.09375 0.375 0.21875q0.234375 0.109375 0.53125 0.203125q0.3125 0.09375 0.71875 0.09375q0.296875 0 0.53125 -0.0625q0.25 -0.0625 0.421875 -0.1875q0.1875 -0.125 0.28125 -0.3125q0.09375 -0.203125 0.09375 -0.46875q0 -0.265625 -0.140625 -0.453125q-0.140625 -0.1875 -0.375 -0.328125q-0.21875 -0.140625 -0.515625 -0.25q-0.28125 -0.109375 -0.59375 -0.234375q-0.296875 -0.125 -0.59375 -0.28125q-0.28125 -0.15625 -0.515625 -0.375q-0.21875 -0.21875 -0.359375 -0.515625q-0.140625 -0.3125 -0.140625 -0.75q0 -0.375 0.140625 -0.71875q0.15625 -0.359375 0.453125 -0.609375q0.296875 -0.265625 0.734375 -0.421875q0.4375 -0.15625 1.015625 -0.15625q0.265625 0 0.515625 0.046875q0.265625 0.03125 0.46875 0.09375q0.203125 0.0625 0.34375 0.140625q0.15625 0.078125 0.234375 0.140625q0.078125 0.046875 0.09375 0.09375q0.03125 0.046875 0.03125 0.109375q0.015625 0.046875 0.03125 0.125q0.015625 0.078125 0.015625 0.1875q0 0.125 -0.015625 0.21875q-0.015625 0.078125 -0.046875 0.140625q-0.015625 0.0625 -0.046875 0.09375q-0.03125 0.015625 -0.078125 0.015625q-0.0625 0 -0.1875 -0.078125q-0.125 -0.078125 -0.328125 -0.171875q-0.1875 -0.09375 -0.453125 -0.171875q-0.25 -0.078125 -0.59375 -0.078125q-0.296875 0 -0.53125 0.078125q-0.21875 0.0625 -0.375 0.1875q-0.140625 0.125 -0.21875 0.296875q-0.0625 0.171875 -0.0625 0.375q0 0.28125 0.140625 0.46875q0.140625 0.1875 0.359375 0.328125q0.234375 0.140625 0.53125 0.265625q0.296875 0.109375 0.59375 0.234375q0.3125 0.125 0.609375 0.28125q0.296875 0.140625 0.515625 0.359375q0.234375 0.203125 0.375 0.515625q0.140625 0.296875 0.140625 0.703125zm11.502869 1.765625q0 0.046875 -0.03125 0.09375q-0.015625 0.046875 -0.078125 0.078125q-0.0625 0.015625 -0.171875 0.03125q-0.09375 0.015625 -0.234375 0.015625q-0.140625 0 -0.25 -0.015625q-0.09375 -0.015625 -0.15625 -0.03125q-0.0625 -0.03125 -0.09375 -0.078125q-0.03125 -0.046875 -0.03125 -0.09375l0 -0.859375q-0.515625 0.546875 -1.0625 0.859375q-0.546875 0.3125 -1.1875 0.3125q-0.71875 0 -1.21875 -0.28125q-0.5 -0.28125 -0.8125 -0.75q-0.3125 -0.46875 -0.453125 -1.09375q-0.140625 -0.640625 -0.140625 -1.34375q0 -0.828125 0.171875 -1.484375q0.1875 -0.671875 0.53125 -1.140625q0.359375 -0.484375 0.875 -0.734375q0.515625 -0.25 1.203125 -0.25q0.5625 0 1.03125 0.25q0.46875 0.234375 0.921875 0.71875l0 -3.75q0 -0.046875 0.015625 -0.09375q0.03125 -0.046875 0.109375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.109375 -0.015625 0.28125 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.09375l0 9.546875zm-1.1875 -4.53125q-0.484375 -0.59375 -0.9375 -0.90625q-0.4375 -0.3125 -0.921875 -0.3125q-0.453125 0 -0.765625 0.21875q-0.3125 0.203125 -0.515625 0.5625q-0.1875 0.34375 -0.28125 0.796875q-0.09375 0.4375 -0.09375 0.890625q0 0.484375 0.078125 0.953125q0.078125 0.46875 0.265625 0.828125q0.1875 0.359375 0.484375 0.578125q0.3125 0.21875 0.78125 0.21875q0.234375 0 0.453125 -0.0625q0.21875 -0.0625 0.4375 -0.203125q0.234375 -0.15625 0.484375 -0.390625q0.25 -0.25 0.53125 -0.59375l0 -2.578125zm8.231506 4.53125q0 0.09375 -0.0625 0.140625q-0.0625 0.03125 -0.171875 0.046875q-0.09375 0.03125 -0.28125 0.03125q-0.1875 0 -0.296875 -0.03125q-0.109375 -0.015625 -0.15625 -0.046875q-0.046875 -0.046875 -0.046875 -0.140625l0 -0.640625q-0.421875 0.453125 -0.953125 0.703125q-0.515625 0.25 -1.09375 0.25q-0.5 0 -0.921875 -0.140625q-0.40625 -0.125 -0.703125 -0.375q-0.28125 -0.25 -0.453125 -0.609375q-0.15625 -0.375 -0.15625 -0.84375q0 -0.546875 0.21875 -0.9375q0.234375 -0.40625 0.640625 -0.671875q0.421875 -0.265625 1.015625 -0.390625q0.609375 -0.140625 1.359375 -0.140625l0.875 0l0 -0.5q0 -0.375 -0.078125 -0.65625q-0.078125 -0.28125 -0.25 -0.46875q-0.171875 -0.203125 -0.453125 -0.296875q-0.28125 -0.09375 -0.6875 -0.09375q-0.4375 0 -0.78125 0.109375q-0.34375 0.09375 -0.609375 0.21875q-0.265625 0.125 -0.4375 0.234375q-0.171875 0.109375 -0.265625 0.109375q-0.046875 0 -0.09375 -0.03125q-0.046875 -0.03125 -0.078125 -0.078125q-0.03125 -0.0625 -0.046875 -0.15625q-0.015625 -0.09375 -0.015625 -0.203125q0 -0.171875 0.015625 -0.265625q0.03125 -0.109375 0.125 -0.203125q0.109375 -0.09375 0.34375 -0.21875q0.234375 -0.125 0.53125 -0.234375q0.3125 -0.109375 0.671875 -0.171875q0.375 -0.0625 0.75 -0.0625q0.6875 0 1.171875 0.15625q0.5 0.15625 0.796875 0.46875q0.296875 0.296875 0.4375 0.75q0.140625 0.453125 0.140625 1.046875l0 4.34375zm-1.1875 -2.9375l-1.0 0q-0.484375 0 -0.84375 0.078125q-0.359375 0.078125 -0.59375 0.25q-0.234375 0.15625 -0.34375 0.390625q-0.109375 0.21875 -0.109375 0.515625q0 0.5 0.3125 0.796875q0.3125 0.296875 0.890625 0.296875q0.46875 0 0.859375 -0.234375q0.40625 -0.25 0.828125 -0.734375l0 -1.359375zm7.3953857 1.171875q0 0.5 -0.1875 0.890625q-0.1875 0.375 -0.53125 0.640625q-0.328125 0.265625 -0.796875 0.40625q-0.453125 0.140625 -1.015625 0.140625q-0.34375 0 -0.65625 -0.0625q-0.3125 -0.046875 -0.5625 -0.125q-0.234375 -0.09375 -0.40625 -0.171875q-0.171875 -0.09375 -0.25 -0.15625q-0.078125 -0.078125 -0.125 -0.203125q-0.03125 -0.140625 -0.03125 -0.359375q0 -0.140625 0.015625 -0.234375q0.015625 -0.09375 0.03125 -0.140625q0.03125 -0.0625 0.0625 -0.078125q0.046875 -0.03125 0.09375 -0.03125q0.078125 0 0.234375 0.09375q0.15625 0.09375 0.375 0.21875q0.234375 0.109375 0.53125 0.203125q0.3125 0.09375 0.71875 0.09375q0.296875 0 0.53125 -0.0625q0.25 -0.0625 0.421875 -0.1875q0.1875 -0.125 0.28125 -0.3125q0.09375 -0.203125 0.09375 -0.46875q0 -0.265625 -0.140625 -0.453125q-0.140625 -0.1875 -0.375 -0.328125q-0.21875 -0.140625 -0.515625 -0.25q-0.28125 -0.109375 -0.59375 -0.234375q-0.296875 -0.125 -0.59375 -0.28125q-0.28125 -0.15625 -0.515625 -0.375q-0.21875 -0.21875 -0.359375 -0.515625q-0.140625 -0.3125 -0.140625 -0.75q0 -0.375 0.140625 -0.71875q0.15625 -0.359375 0.453125 -0.609375q0.296875 -0.265625 0.734375 -0.421875q0.4375 -0.15625 1.015625 -0.15625q0.265625 0 0.515625 0.046875q0.265625 0.03125 0.46875 0.09375q0.203125 0.0625 0.34375 0.140625q0.15625 0.078125 0.234375 0.140625q0.078125 0.046875 0.09375 0.09375q0.03125 0.046875 0.03125 0.109375q0.015625 0.046875 0.03125 0.125q0.015625 0.078125 0.015625 0.1875q0 0.125 -0.015625 0.21875q-0.015625 0.078125 -0.046875 0.140625q-0.015625 0.0625 -0.046875 0.09375q-0.03125 0.015625 -0.078125 0.015625q-0.0625 0 -0.1875 -0.078125q-0.125 -0.078125 -0.328125 -0.171875q-0.1875 -0.09375 -0.453125 -0.171875q-0.25 -0.078125 -0.59375 -0.078125q-0.296875 0 -0.53125 0.078125q-0.21875 0.0625 -0.375 0.1875q-0.140625 0.125 -0.21875 0.296875q-0.0625 0.171875 -0.0625 0.375q0 0.28125 0.140625 0.46875q0.140625 0.1875 0.359375 0.328125q0.234375 0.140625 0.53125 0.265625q0.296875 0.109375 0.59375 0.234375q0.3125 0.125 0.609375 0.28125q0.296875 0.140625 0.515625 0.359375q0.234375 0.203125 0.375 0.515625q0.140625 0.296875 0.140625 0.703125zm7.232239 1.765625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.171875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.03125 -0.046875 -0.03125 -0.09375l0 -3.78125q0 -0.546875 -0.09375 -0.875q-0.078125 -0.34375 -0.25 -0.578125q-0.15625 -0.25 -0.421875 -0.375q-0.25 -0.140625 -0.59375 -0.140625q-0.4375 0 -0.890625 0.328125q-0.4375 0.3125 -0.921875 0.90625l0 4.515625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28118896 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -9.5625q0 -0.0625 0.015625 -0.109375q0.03125 -0.046875 0.09375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.17181396 0 0.28118896 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.109375l0 3.859375q0.5 -0.546875 1.015625 -0.796875q0.515625 -0.265625 1.046875 -0.265625q0.640625 0 1.078125 0.21875q0.4375 0.21875 0.703125 0.578125q0.28125 0.359375 0.390625 0.859375q0.125 0.484375 0.125 1.1875l0 3.921875zm8.075256 -3.3125q0 0.84375 -0.1875 1.515625q-0.171875 0.65625 -0.53125 1.140625q-0.34375 0.46875 -0.859375 0.71875q-0.515625 0.25 -1.1875 0.25q-0.3125 0 -0.578125 -0.0625q-0.25 -0.0625 -0.5 -0.1875q-0.25 -0.140625 -0.5 -0.34375q-0.25 -0.21875 -0.53125 -0.515625l0 0.796875q0 0.046875 -0.03125 0.09375q-0.03125 0.046875 -0.09375 0.078125q-0.0625 0.015625 -0.15625 0.03125q-0.09375 0.015625 -0.25 0.015625q-0.140625 0 -0.25 -0.015625q-0.09375 -0.015625 -0.15625 -0.03125q-0.0625 -0.03125 -0.09375 -0.078125q-0.015625 -0.046875 -0.015625 -0.09375l0 -9.5625q0 -0.0625 0.015625 -0.109375q0.03125 -0.046875 0.09375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.109375l0 3.859375q0.28125 -0.296875 0.546875 -0.5q0.265625 -0.203125 0.515625 -0.328125q0.265625 -0.125 0.515625 -0.171875q0.265625 -0.0625 0.5625 -0.0625q0.6875 0 1.1875 0.28125q0.5 0.265625 0.8125 0.734375q0.3125 0.46875 0.453125 1.109375q0.140625 0.625 0.140625 1.328125zm-1.234375 0.140625q0 -0.5 -0.078125 -0.953125q-0.078125 -0.46875 -0.265625 -0.828125q-0.1875 -0.359375 -0.5 -0.578125q-0.296875 -0.21875 -0.765625 -0.21875q-0.21875 0 -0.453125 0.0625q-0.21875 0.0625 -0.453125 0.21875q-0.21875 0.140625 -0.46875 0.375q-0.234375 0.234375 -0.515625 0.59375l0 2.578125q0.484375 0.59375 0.921875 0.90625q0.453125 0.3125 0.921875 0.3125q0.453125 0 0.765625 -0.21875q0.3125 -0.21875 0.5 -0.5625q0.203125 -0.359375 0.296875 -0.796875q0.09375 -0.4375 0.09375 -0.890625zm8.997192 -0.125q0 0.78125 -0.203125 1.453125q-0.203125 0.65625 -0.625 1.140625q-0.40625 0.46875 -1.03125 0.75q-0.609375 0.265625 -1.421875 0.265625q-0.796875 0 -1.390625 -0.234375q-0.59375 -0.25 -0.984375 -0.6875q-0.390625 -0.453125 -0.59375 -1.09375q-0.1875 -0.65625 -0.1875 -1.46875q0 -0.78125 0.203125 -1.4375q0.203125 -0.671875 0.609375 -1.140625q0.421875 -0.484375 1.03125 -0.75q0.625 -0.265625 1.4375 -0.265625q0.796875 0 1.390625 0.234375q0.59375 0.234375 0.984375 0.6875q0.390625 0.453125 0.578125 1.09375q0.203125 0.640625 0.203125 1.453125zm-1.234375 0.078125q0 -0.53125 -0.109375 -0.984375q-0.09375 -0.46875 -0.3125 -0.8125q-0.21875 -0.359375 -0.609375 -0.5625q-0.375 -0.203125 -0.9375 -0.203125q-0.515625 0 -0.890625 0.1875q-0.375 0.1875 -0.625 0.53125q-0.234375 0.328125 -0.359375 0.796875q-0.125 0.46875 -0.125 1.015625q0 0.53125 0.09375 1.0q0.109375 0.46875 0.328125 0.8125q0.234375 0.34375 0.609375 0.546875q0.375 0.203125 0.9375 0.203125q0.515625 0 0.890625 -0.1875q0.390625 -0.1875 0.625 -0.515625q0.25 -0.34375 0.359375 -0.796875q0.125 -0.46875 0.125 -1.03125zm7.838257 3.21875q0 0.09375 -0.0625 0.140625q-0.0625 0.03125 -0.171875 0.046875q-0.09375 0.03125 -0.28125 0.03125q-0.1875 0 -0.296875 -0.03125q-0.109375 -0.015625 -0.15625 -0.046875q-0.046875 -0.046875 -0.046875 -0.140625l0 -0.640625q-0.421875 0.453125 -0.953125 0.703125q-0.515625 0.25 -1.09375 0.25q-0.5 0 -0.921875 -0.140625q-0.40625 -0.125 -0.703125 -0.375q-0.28125 -0.25 -0.453125 -0.609375q-0.15625 -0.375 -0.15625 -0.84375q0 -0.546875 0.21875 -0.9375q0.234375 -0.40625 0.640625 -0.671875q0.421875 -0.265625 1.015625 -0.390625q0.609375 -0.140625 1.359375 -0.140625l0.875 0l0 -0.5q0 -0.375 -0.078125 -0.65625q-0.078125 -0.28125 -0.25 -0.46875q-0.171875 -0.203125 -0.453125 -0.296875q-0.28125 -0.09375 -0.6875 -0.09375q-0.4375 0 -0.78125 0.109375q-0.34375 0.09375 -0.609375 0.21875q-0.265625 0.125 -0.4375 0.234375q-0.171875 0.109375 -0.265625 0.109375q-0.046875 0 -0.09375 -0.03125q-0.046875 -0.03125 -0.078125 -0.078125q-0.03125 -0.0625 -0.046875 -0.15625q-0.015625 -0.09375 -0.015625 -0.203125q0 -0.171875 0.015625 -0.265625q0.03125 -0.109375 0.125 -0.203125q0.109375 -0.09375 0.34375 -0.21875q0.234375 -0.125 0.53125 -0.234375q0.3125 -0.109375 0.671875 -0.171875q0.375 -0.0625 0.75 -0.0625q0.6875 0 1.171875 0.15625q0.5 0.15625 0.796875 0.46875q0.296875 0.296875 0.4375 0.75q0.140625 0.453125 0.140625 1.046875l0 4.34375zm-1.1875 -2.9375l-1.0 0q-0.484375 0 -0.84375 0.078125q-0.359375 0.078125 -0.59375 0.25q-0.234375 0.15625 -0.34375 0.390625q-0.109375 0.21875 -0.109375 0.515625q0 0.5 0.3125 0.796875q0.3125 0.296875 0.890625 0.296875q0.46875 0 0.859375 -0.234375q0.40625 -0.25 0.828125 -0.734375l0 -1.359375zm7.1141357 -3.09375q0 0.15625 -0.015625 0.265625q0 0.109375 -0.03125 0.171875q-0.015625 0.0625 -0.046875 0.09375q-0.03125 0.03125 -0.078125 0.03125q-0.0625 0 -0.15625 -0.03125q-0.078125 -0.03125 -0.1875 -0.0625q-0.09375 -0.03125 -0.21875 -0.0625q-0.125 -0.03125 -0.28125 -0.03125q-0.171875 0 -0.34375 0.078125q-0.171875 0.0625 -0.375 0.234375q-0.1875 0.15625 -0.390625 0.4375q-0.203125 0.265625 -0.453125 0.65625l0 4.25q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.0625 -0.03125 0.15625 -0.046875q0.109375 -0.015625 0.265625 -0.015625q0.171875 0 0.265625 0.015625q0.109375 0.015625 0.15625 0.046875q0.0625 0.03125 0.078125 0.078125q0.03125 0.03125 0.03125 0.078125l0 0.9375q0.265625 -0.375 0.5 -0.625q0.234375 -0.25 0.4375 -0.375q0.21875 -0.140625 0.421875 -0.1875q0.203125 -0.0625 0.40625 -0.0625q0.09375 0 0.203125 0.015625q0.125 0 0.25 0.03125q0.140625 0.03125 0.234375 0.0625q0.109375 0.03125 0.140625 0.078125q0.046875 0.03125 0.0625 0.0625q0.015625 0.03125 0.03125 0.078125q0.015625 0.046875 0.015625 0.15625q0 0.09375 0 0.25zm6.859619 6.03125q0 0.046875 -0.03125 0.09375q-0.015625 0.046875 -0.078125 0.078125q-0.0625 0.015625 -0.171875 0.03125q-0.09375 0.015625 -0.234375 0.015625q-0.140625 0 -0.25 -0.015625q-0.09375 -0.015625 -0.15625 -0.03125q-0.0625 -0.03125 -0.09375 -0.078125q-0.03125 -0.046875 -0.03125 -0.09375l0 -0.859375q-0.515625 0.546875 -1.0625 0.859375q-0.546875 0.3125 -1.1875 0.3125q-0.71875 0 -1.21875 -0.28125q-0.5 -0.28125 -0.8125 -0.75q-0.3125 -0.46875 -0.453125 -1.09375q-0.140625 -0.640625 -0.140625 -1.34375q0 -0.828125 0.171875 -1.484375q0.1875 -0.671875 0.53125 -1.140625q0.359375 -0.484375 0.875 -0.734375q0.515625 -0.25 1.203125 -0.25q0.5625 0 1.03125 0.25q0.46875 0.234375 0.921875 0.71875l0 -3.75q0 -0.046875 0.015625 -0.09375q0.03125 -0.046875 0.109375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.109375 -0.015625 0.28125 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.09375l0 9.546875zm-1.1875 -4.53125q-0.484375 -0.59375 -0.9375 -0.90625q-0.4375 -0.3125 -0.921875 -0.3125q-0.453125 0 -0.765625 0.21875q-0.3125 0.203125 -0.515625 0.5625q-0.1875 0.34375 -0.28125 0.796875q-0.09375 0.4375 -0.09375 0.890625q0 0.484375 0.078125 0.953125q0.078125 0.46875 0.265625 0.828125q0.1875 0.359375 0.484375 0.578125q0.3125 0.21875 0.78125 0.21875q0.234375 0 0.453125 -0.0625q0.21875 -0.0625 0.4375 -0.203125q0.234375 -0.15625 0.484375 -0.390625q0.25 -0.25 0.53125 -0.59375l0 -2.578125zm13.595886 1.203125q0 0.84375 -0.1875 1.515625q-0.171875 0.671875 -0.53125 1.140625q-0.34375 0.46875 -0.875 0.734375q-0.515625 0.25 -1.1875 0.25q-0.296875 0 -0.546875 -0.0625q-0.234375 -0.0625 -0.46875 -0.171875q-0.234375 -0.125 -0.46875 -0.3125q-0.21875 -0.1875 -0.46875 -0.4375l0 3.21875q0 0.0625 -0.03125 0.09375q-0.03125 0.046875 -0.09375 0.078125q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.078125q-0.015625 -0.03125 -0.015625 -0.09375l0 -9.0q0 -0.0625 0.015625 -0.09375q0.03125 -0.046875 0.09375 -0.0625q0.0625 -0.03125 0.15625 -0.046875q0.109375 -0.015625 0.25 -0.015625q0.15625 0 0.25 0.015625q0.09375 0.015625 0.15625 0.046875q0.0625 0.015625 0.078125 0.0625q0.03125 0.03125 0.03125 0.09375l0 0.875q0.296875 -0.296875 0.5625 -0.515625q0.28125 -0.234375 0.546875 -0.375q0.28125 -0.15625 0.5625 -0.21875q0.296875 -0.078125 0.625 -0.078125q0.703125 0 1.1875 0.28125q0.5 0.265625 0.8125 0.734375q0.3125 0.46875 0.453125 1.09375q0.140625 0.625 0.140625 1.328125zm-1.234375 0.140625q0 -0.5 -0.078125 -0.953125q-0.078125 -0.46875 -0.265625 -0.828125q-0.171875 -0.359375 -0.484375 -0.5625q-0.3125 -0.21875 -0.765625 -0.21875q-0.234375 0 -0.453125 0.0625q-0.21875 0.0625 -0.453125 0.21875q-0.21875 0.140625 -0.46875 0.390625q-0.25 0.234375 -0.53125 0.578125l0 2.5625q0.484375 0.59375 0.921875 0.921875q0.4375 0.3125 0.90625 0.3125q0.453125 0 0.765625 -0.21875q0.328125 -0.21875 0.515625 -0.578125q0.203125 -0.359375 0.296875 -0.796875q0.09375 -0.4375 0.09375 -0.890625zm6.7783813 -2.84375q0 0.15625 -0.015625 0.265625q0 0.109375 -0.03125 0.171875q-0.015625 0.0625 -0.046875 0.09375q-0.03125 0.03125 -0.078125 0.03125q-0.0625 0 -0.15625 -0.03125q-0.078125 -0.03125 -0.1875 -0.0625q-0.09375 -0.03125 -0.21875 -0.0625q-0.125 -0.03125 -0.28125 -0.03125q-0.171875 0 -0.34375 0.078125q-0.171875 0.0625 -0.375 0.234375q-0.1875 0.15625 -0.390625 0.4375q-0.203125 0.265625 -0.453125 0.65625l0 4.25q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.0625 -0.03125 0.15625 -0.046875q0.109375 -0.015625 0.265625 -0.015625q0.171875 0 0.265625 0.015625q0.109375 0.015625 0.15625 0.046875q0.0625 0.03125 0.078125 0.078125q0.03125 0.03125 0.03125 0.078125l0 0.9375q0.265625 -0.375 0.5 -0.625q0.234375 -0.25 0.4375 -0.375q0.21875 -0.140625 0.421875 -0.1875q0.203125 -0.0625 0.40625 -0.0625q0.09375 0 0.203125 0.015625q0.125 0 0.25 0.03125q0.140625 0.03125 0.234375 0.0625q0.109375 0.03125 0.140625 0.078125q0.046875 0.03125 0.0625 0.0625q0.015625 0.03125 0.03125 0.078125q0.015625 0.046875 0.015625 0.15625q0 0.09375 0 0.25zm7.32843 2.734375q0 0.78125 -0.203125 1.453125q-0.203125 0.65625 -0.625 1.140625q-0.40625 0.46875 -1.03125 0.75q-0.609375 0.265625 -1.421875 0.265625q-0.796875 0 -1.390625 -0.234375q-0.59375 -0.25 -0.984375 -0.6875q-0.390625 -0.453125 -0.59375 -1.09375q-0.1875 -0.65625 -0.1875 -1.46875q0 -0.78125 0.203125 -1.4375q0.203125 -0.671875 0.609375 -1.140625q0.421875 -0.484375 1.03125 -0.75q0.625 -0.265625 1.4375 -0.265625q0.796875 0 1.390625 0.234375q0.59375 0.234375 0.984375 0.6875q0.390625 0.453125 0.578125 1.09375q0.203125 0.640625 0.203125 1.453125zm-1.234375 0.078125q0 -0.53125 -0.109375 -0.984375q-0.09375 -0.46875 -0.3125 -0.8125q-0.21875 -0.359375 -0.609375 -0.5625q-0.375 -0.203125 -0.9375 -0.203125q-0.515625 0 -0.890625 0.1875q-0.375 0.1875 -0.625 0.53125q-0.234375 0.328125 -0.359375 0.796875q-0.125 0.46875 -0.125 1.015625q0 0.53125 0.09375 1.0q0.109375 0.46875 0.328125 0.8125q0.234375 0.34375 0.609375 0.546875q0.375 0.203125 0.9375 0.203125q0.515625 0 0.890625 -0.1875q0.390625 -0.1875 0.625 -0.515625q0.25 -0.34375 0.359375 -0.796875q0.125 -0.46875 0.125 -1.03125zm8.260132 -3.25q0 0.03125 0 0.0625q0 0.03125 -0.015625 0.078125q0 0.03125 -0.015625 0.078125q-0.015625 0.03125 -0.03125 0.09375l-2.1875 6.109375q-0.03125 0.078125 -0.078125 0.140625q-0.046875 0.046875 -0.140625 0.078125q-0.09375 0.015625 -0.234375 0.03125q-0.140625 0.015625 -0.359375 0.015625q-0.21875 0 -0.359375 -0.015625q-0.140625 -0.015625 -0.234375 -0.046875q-0.078125 -0.03125 -0.140625 -0.078125q-0.046875 -0.046875 -0.078125 -0.125l-2.1875 -6.109375q-0.03125 -0.09375 -0.046875 -0.15625q-0.015625 -0.0625 -0.015625 -0.09375q0 -0.03125 0 -0.0625q0 -0.046875 0.015625 -0.09375q0.03125 -0.046875 0.09375 -0.0625q0.078125 -0.03125 0.1875 -0.03125q0.109375 -0.015625 0.28125 -0.015625q0.203125 0 0.328125 0.015625q0.125 0.015625 0.1875 0.046875q0.078125 0.015625 0.109375 0.0625q0.03125 0.046875 0.0625 0.109375l1.8125 5.3125l0.03125 0.078125l0.015625 -0.078125l1.796875 -5.3125q0.015625 -0.0625 0.046875 -0.109375q0.046875 -0.046875 0.109375 -0.0625q0.0625 -0.03125 0.171875 -0.046875q0.125 -0.015625 0.328125 -0.015625q0.15625 0 0.265625 0.015625q0.109375 0 0.171875 0.03125q0.0625 0.03125 0.078125 0.078125q0.03125 0.03125 0.03125 0.078125zm2.525879 6.46875q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 6.453125zm0.125 -8.625q0 0.421875 -0.15625 0.578125q-0.15625 0.140625 -0.578125 0.140625q-0.40625 0 -0.5625 -0.140625q-0.15625 -0.15625 -0.15625 -0.5625q0 -0.421875 0.15625 -0.5625q0.15625 -0.15625 0.578125 -0.15625q0.421875 0 0.5625 0.15625q0.15625 0.140625 0.15625 0.546875zm7.5665894 8.625q0 0.046875 -0.03125 0.09375q-0.015625 0.046875 -0.078125 0.078125q-0.0625 0.015625 -0.171875 0.03125q-0.09375 0.015625 -0.234375 0.015625q-0.140625 0 -0.25 -0.015625q-0.09375 -0.015625 -0.15625 -0.03125q-0.0625 -0.03125 -0.09375 -0.078125q-0.03125 -0.046875 -0.03125 -0.09375l0 -0.859375q-0.515625 0.546875 -1.0625 0.859375q-0.546875 0.3125 -1.1875 0.3125q-0.71875 0 -1.21875 -0.28125q-0.5 -0.28125 -0.8125 -0.75q-0.3125 -0.46875 -0.453125 -1.09375q-0.140625 -0.640625 -0.140625 -1.34375q0 -0.828125 0.171875 -1.484375q0.1875 -0.671875 0.53125 -1.140625q0.359375 -0.484375 0.875 -0.734375q0.515625 -0.25 1.203125 -0.25q0.5625 0 1.03125 0.25q0.46875 0.234375 0.921875 0.71875l0 -3.75q0 -0.046875 0.015625 -0.09375q0.03125 -0.046875 0.109375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.109375 -0.015625 0.28125 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.09375l0 9.546875zm-1.1875 -4.53125q-0.484375 -0.59375 -0.9375 -0.90625q-0.4375 -0.3125 -0.921875 -0.3125q-0.453125 0 -0.765625 0.21875q-0.3125 0.203125 -0.515625 0.5625q-0.1875 0.34375 -0.28125 0.796875q-0.09375 0.4375 -0.09375 0.890625q0 0.484375 0.078125 0.953125q0.078125 0.46875 0.265625 0.828125q0.1875 0.359375 0.484375 0.578125q0.3125 0.21875 0.78125 0.21875q0.234375 0 0.453125 -0.0625q0.21875 -0.0625 0.4375 -0.203125q0.234375 -0.15625 0.484375 -0.390625q0.25 -0.25 0.53125 -0.59375l0 -2.578125zm8.872131 1.03125q0 0.265625 -0.140625 0.390625q-0.140625 0.125 -0.3125 0.125l-4.234375 0q0 0.53125 0.109375 0.96875q0.109375 0.421875 0.359375 0.734375q0.25 0.296875 0.640625 0.46875q0.40625 0.15625 0.984375 0.15625q0.46875 0 0.828125 -0.0625q0.359375 -0.078125 0.609375 -0.171875q0.265625 -0.09375 0.4375 -0.171875q0.171875 -0.078125 0.25 -0.078125q0.046875 0 0.078125 0.03125q0.046875 0.015625 0.0625 0.078125q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125q0 0.09375 0 0.171875q0 0.0625 -0.015625 0.125q-0.015625 0.046875 -0.046875 0.09375q-0.015625 0.046875 -0.0625 0.09375q-0.03125 0.03125 -0.234375 0.125q-0.1875 0.078125 -0.5 0.171875q-0.296875 0.078125 -0.703125 0.140625q-0.40625 0.078125 -0.859375 0.078125q-0.796875 0 -1.40625 -0.21875q-0.59375 -0.234375 -1.0 -0.671875q-0.40625 -0.4375 -0.609375 -1.09375q-0.203125 -0.65625 -0.203125 -1.53125q0 -0.828125 0.203125 -1.484375q0.21875 -0.671875 0.625 -1.125q0.40625 -0.46875 0.96875 -0.703125q0.578125 -0.25 1.28125 -0.25q0.765625 0 1.296875 0.25q0.53125 0.234375 0.875 0.65625q0.34375 0.40625 0.5 0.96875q0.171875 0.546875 0.171875 1.171875l0 0.21875zm-1.1875 -0.359375q0.015625 -0.921875 -0.421875 -1.453125q-0.421875 -0.53125 -1.28125 -0.53125q-0.4375 0 -0.765625 0.171875q-0.328125 0.15625 -0.546875 0.4375q-0.21875 0.265625 -0.34375 0.625q-0.125 0.359375 -0.140625 0.75l3.5 0zm7.0267334 2.09375q0 0.5 -0.1875 0.890625q-0.1875 0.375 -0.53125 0.640625q-0.328125 0.265625 -0.796875 0.40625q-0.453125 0.140625 -1.015625 0.140625q-0.34375 0 -0.65625 -0.0625q-0.3125 -0.046875 -0.5625 -0.125q-0.234375 -0.09375 -0.40625 -0.171875q-0.171875 -0.09375 -0.25 -0.15625q-0.078125 -0.078125 -0.125 -0.203125q-0.03125 -0.140625 -0.03125 -0.359375q0 -0.140625 0.015625 -0.234375q0.015625 -0.09375 0.03125 -0.140625q0.03125 -0.0625 0.0625 -0.078125q0.046875 -0.03125 0.09375 -0.03125q0.078125 0 0.234375 0.09375q0.15625 0.09375 0.375 0.21875q0.234375 0.109375 0.53125 0.203125q0.3125 0.09375 0.71875 0.09375q0.296875 0 0.53125 -0.0625q0.25 -0.0625 0.421875 -0.1875q0.1875 -0.125 0.28125 -0.3125q0.09375 -0.203125 0.09375 -0.46875q0 -0.265625 -0.140625 -0.453125q-0.140625 -0.1875 -0.375 -0.328125q-0.21875 -0.140625 -0.515625 -0.25q-0.28125 -0.109375 -0.59375 -0.234375q-0.296875 -0.125 -0.59375 -0.28125q-0.28125 -0.15625 -0.515625 -0.375q-0.21875 -0.21875 -0.359375 -0.515625q-0.140625 -0.3125 -0.140625 -0.75q0 -0.375 0.140625 -0.71875q0.15625 -0.359375 0.453125 -0.609375q0.296875 -0.265625 0.734375 -0.421875q0.4375 -0.15625 1.015625 -0.15625q0.265625 0 0.515625 0.046875q0.265625 0.03125 0.46875 0.09375q0.203125 0.0625 0.34375 0.140625q0.15625 0.078125 0.234375 0.140625q0.078125 0.046875 0.09375 0.09375q0.03125 0.046875 0.03125 0.109375q0.015625 0.046875 0.03125 0.125q0.015625 0.078125 0.015625 0.1875q0 0.125 -0.015625 0.21875q-0.015625 0.078125 -0.046875 0.140625q-0.015625 0.0625 -0.046875 0.09375q-0.03125 0.015625 -0.078125 0.015625q-0.0625 0 -0.1875 -0.078125q-0.125 -0.078125 -0.328125 -0.171875q-0.1875 -0.09375 -0.453125 -0.171875q-0.25 -0.078125 -0.59375 -0.078125q-0.296875 0 -0.53125 0.078125q-0.21875 0.0625 -0.375 0.1875q-0.140625 0.125 -0.21875 0.296875q-0.0625 0.171875 -0.0625 0.375q0 0.28125 0.140625 0.46875q0.140625 0.1875 0.359375 0.328125q0.234375 0.140625 0.53125 0.265625q0.296875 0.109375 0.59375 0.234375q0.3125 0.125 0.609375 0.28125q0.296875 0.140625 0.515625 0.359375q0.234375 0.203125 0.375 0.515625q0.140625 0.296875 0.140625 0.703125zm11.909119 -1.546875q0 0.84375 -0.1875 1.515625q-0.171875 0.65625 -0.53125 1.140625q-0.34375 0.46875 -0.859375 0.71875q-0.515625 0.25 -1.1875 0.25q-0.3125 0 -0.578125 -0.0625q-0.25 -0.0625 -0.5 -0.1875q-0.25 -0.140625 -0.5 -0.34375q-0.25 -0.21875 -0.53125 -0.515625l0 0.796875q0 0.046875 -0.03125 0.09375q-0.03125 0.046875 -0.09375 0.078125q-0.0625 0.015625 -0.15625 0.03125q-0.09375 0.015625 -0.25 0.015625q-0.140625 0 -0.25 -0.015625q-0.09375 -0.015625 -0.15625 -0.03125q-0.0625 -0.03125 -0.09375 -0.078125q-0.015625 -0.046875 -0.015625 -0.09375l0 -9.5625q0 -0.0625 0.015625 -0.109375q0.03125 -0.046875 0.09375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.109375l0 3.859375q0.28125 -0.296875 0.546875 -0.5q0.265625 -0.203125 0.515625 -0.328125q0.265625 -0.125 0.515625 -0.171875q0.265625 -0.0625 0.5625 -0.0625q0.6875 0 1.1875 0.28125q0.5 0.265625 0.8125 0.734375q0.3125 0.46875 0.453125 1.109375q0.140625 0.625 0.140625 1.328125zm-1.234375 0.140625q0 -0.5 -0.078125 -0.953125q-0.078125 -0.46875 -0.265625 -0.828125q-0.1875 -0.359375 -0.5 -0.578125q-0.296875 -0.21875 -0.765625 -0.21875q-0.21875 0 -0.453125 0.0625q-0.21875 0.0625 -0.453125 0.21875q-0.21875 0.140625 -0.46875 0.375q-0.234375 0.234375 -0.515625 0.59375l0 2.578125q0.484375 0.59375 0.921875 0.90625q0.453125 0.3125 0.921875 0.3125q0.453125 0 0.765625 -0.21875q0.3125 -0.21875 0.5 -0.5625q0.203125 -0.359375 0.296875 -0.796875q0.09375 -0.4375 0.09375 -0.890625zm7.8721313 3.171875q0 0.09375 -0.0625 0.140625q-0.0625 0.03125 -0.171875 0.046875q-0.09375 0.03125 -0.28125 0.03125q-0.1875 0 -0.296875 -0.03125q-0.109375 -0.015625 -0.15625 -0.046875q-0.046875 -0.046875 -0.046875 -0.140625l0 -0.640625q-0.421875 0.453125 -0.953125 0.703125q-0.515625 0.25 -1.09375 0.25q-0.5 0 -0.921875 -0.140625q-0.40625 -0.125 -0.703125 -0.375q-0.28125 -0.25 -0.453125 -0.609375q-0.15625 -0.375 -0.15625 -0.84375q0 -0.546875 0.21875 -0.9375q0.234375 -0.40625 0.640625 -0.671875q0.421875 -0.265625 1.015625 -0.390625q0.609375 -0.140625 1.359375 -0.140625l0.875 0l0 -0.5q0 -0.375 -0.078125 -0.65625q-0.078125 -0.28125 -0.25 -0.46875q-0.171875 -0.203125 -0.453125 -0.296875q-0.28125 -0.09375 -0.6875 -0.09375q-0.4375 0 -0.78125 0.109375q-0.34375 0.09375 -0.609375 0.21875q-0.265625 0.125 -0.4375 0.234375q-0.171875 0.109375 -0.265625 0.109375q-0.046875 0 -0.09375 -0.03125q-0.046875 -0.03125 -0.078125 -0.078125q-0.03125 -0.0625 -0.046875 -0.15625q-0.015625 -0.09375 -0.015625 -0.203125q0 -0.171875 0.015625 -0.265625q0.03125 -0.109375 0.125 -0.203125q0.109375 -0.09375 0.34375 -0.21875q0.234375 -0.125 0.53125 -0.234375q0.3125 -0.109375 0.671875 -0.171875q0.375 -0.0625 0.75 -0.0625q0.6875 0 1.171875 0.15625q0.5 0.15625 0.796875 0.46875q0.296875 0.296875 0.4375 0.75q0.140625 0.453125 0.140625 1.046875l0 4.34375zm-1.1875 -2.9375l-1.0 0q-0.484375 0 -0.84375 0.078125q-0.359375 0.078125 -0.59375 0.25q-0.234375 0.15625 -0.34375 0.390625q-0.109375 0.21875 -0.109375 0.515625q0 0.5 0.3125 0.796875q0.3125 0.296875 0.890625 0.296875q0.46875 0 0.859375 -0.234375q0.40625 -0.25 0.828125 -0.734375l0 -1.359375zm7.395447 1.171875q0 0.5 -0.1875 0.890625q-0.1875 0.375 -0.53125 0.640625q-0.328125 0.265625 -0.796875 0.40625q-0.453125 0.140625 -1.015625 0.140625q-0.34375 0 -0.65625 -0.0625q-0.3125 -0.046875 -0.5625 -0.125q-0.234375 -0.09375 -0.40625 -0.171875q-0.171875 -0.09375 -0.25 -0.15625q-0.078125 -0.078125 -0.125 -0.203125q-0.03125 -0.140625 -0.03125 -0.359375q0 -0.140625 0.015625 -0.234375q0.015625 -0.09375 0.03125 -0.140625q0.03125 -0.0625 0.0625 -0.078125q0.046875 -0.03125 0.09375 -0.03125q0.078125 0 0.234375 0.09375q0.15625 0.09375 0.375 0.21875q0.234375 0.109375 0.53125 0.203125q0.3125 0.09375 0.71875 0.09375q0.296875 0 0.53125 -0.0625q0.25 -0.0625 0.421875 -0.1875q0.1875 -0.125 0.28125 -0.3125q0.09375 -0.203125 0.09375 -0.46875q0 -0.265625 -0.140625 -0.453125q-0.140625 -0.1875 -0.375 -0.328125q-0.21875 -0.140625 -0.515625 -0.25q-0.28125 -0.109375 -0.59375 -0.234375q-0.296875 -0.125 -0.59375 -0.28125q-0.28125 -0.15625 -0.515625 -0.375q-0.21875 -0.21875 -0.359375 -0.515625q-0.140625 -0.3125 -0.140625 -0.75q0 -0.375 0.140625 -0.71875q0.15625 -0.359375 0.453125 -0.609375q0.296875 -0.265625 0.734375 -0.421875q0.4375 -0.15625 1.015625 -0.15625q0.265625 0 0.515625 0.046875q0.265625 0.03125 0.46875 0.09375q0.203125 0.0625 0.34375 0.140625q0.15625 0.078125 0.234375 0.140625q0.078125 0.046875 0.09375 0.09375q0.03125 0.046875 0.03125 0.109375q0.015625 0.046875 0.03125 0.125q0.015625 0.078125 0.015625 0.1875q0 0.125 -0.015625 0.21875q-0.015625 0.078125 -0.046875 0.140625q-0.015625 0.0625 -0.046875 0.09375q-0.03125 0.015625 -0.078125 0.015625q-0.0625 0 -0.1875 -0.078125q-0.125 -0.078125 -0.328125 -0.171875q-0.1875 -0.09375 -0.453125 -0.171875q-0.25 -0.078125 -0.59375 -0.078125q-0.296875 0 -0.53125 0.078125q-0.21875 0.0625 -0.375 0.1875q-0.140625 0.125 -0.21875 0.296875q-0.0625 0.171875 -0.0625 0.375q0 0.28125 0.140625 0.46875q0.140625 0.1875 0.359375 0.328125q0.234375 0.140625 0.53125 0.265625q0.296875 0.109375 0.59375 0.234375q0.3125 0.125 0.609375 0.28125q0.296875 0.140625 0.515625 0.359375q0.234375 0.203125 0.375 0.515625q0.140625 0.296875 0.140625 0.703125zm2.8728638 1.765625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 6.453125zm0.125 -8.625q0 0.421875 -0.15625 0.578125q-0.15625 0.140625 -0.578125 0.140625q-0.40625 0 -0.5625 -0.140625q-0.15625 -0.15625 -0.15625 -0.5625q0 -0.421875 0.15625 -0.5625q0.15625 -0.15625 0.578125 -0.15625q0.421875 0 0.5625 0.15625q0.15625 0.140625 0.15625 0.546875zm6.6759644 7.640625q0 0.125 -0.015625 0.21875q0 0.078125 -0.015625 0.140625q-0.015625 0.0625 -0.046875 0.109375q-0.015625 0.046875 -0.109375 0.140625q-0.078125 0.078125 -0.296875 0.21875q-0.21875 0.125 -0.484375 0.234375q-0.265625 0.09375 -0.59375 0.15625q-0.3125 0.078125 -0.640625 0.078125q-0.703125 0 -1.234375 -0.234375q-0.53125 -0.234375 -0.90625 -0.671875q-0.359375 -0.4375 -0.546875 -1.078125q-0.1875 -0.640625 -0.1875 -1.484375q0 -0.9375 0.234375 -1.625q0.234375 -0.6875 0.640625 -1.125q0.40625 -0.4375 0.953125 -0.640625q0.546875 -0.21875 1.1875 -0.21875q0.296875 0 0.578125 0.0625q0.296875 0.0625 0.546875 0.15625q0.25 0.078125 0.4375 0.203125q0.1875 0.125 0.265625 0.21875q0.09375 0.078125 0.125 0.125q0.03125 0.046875 0.046875 0.125q0.03125 0.0625 0.03125 0.15625q0.015625 0.078125 0.015625 0.203125q0 0.28125 -0.078125 0.390625q-0.0625 0.109375 -0.15625 0.109375q-0.09375 0 -0.234375 -0.109375q-0.140625 -0.125 -0.359375 -0.265625q-0.21875 -0.140625 -0.53125 -0.25q-0.296875 -0.125 -0.703125 -0.125q-0.859375 0 -1.3125 0.65625q-0.453125 0.65625 -0.453125 1.890625q0 0.625 0.109375 1.09375q0.125 0.46875 0.34375 0.796875q0.234375 0.3125 0.5625 0.46875q0.34375 0.140625 0.78125 0.140625q0.40625 0 0.703125 -0.125q0.3125 -0.125 0.53125 -0.28125q0.234375 -0.15625 0.390625 -0.28125q0.15625 -0.125 0.234375 -0.125q0.046875 0 0.078125 0.03125q0.046875 0.03125 0.0625 0.09375q0.03125 0.0625 0.03125 0.171875q0.015625 0.109375 0.015625 0.25z" fill-rule="nonzero"/><path fill="#000000" d="m679.9321 517.31757q0 0.09375 -0.0625 0.140625q-0.0625 0.03125 -0.171875 0.046875q-0.09375 0.03125 -0.28125 0.03125q-0.1875 0 -0.296875 -0.03125q-0.109375 -0.015625 -0.15625 -0.046875q-0.046875 -0.046875 -0.046875 -0.140625l0 -0.640625q-0.421875 0.453125 -0.953125 0.703125q-0.515625 0.25 -1.09375 0.25q-0.5 0 -0.921875 -0.140625q-0.40625 -0.125 -0.703125 -0.375q-0.28125 -0.25 -0.453125 -0.609375q-0.15625 -0.375 -0.15625 -0.84375q0 -0.546875 0.21875 -0.9375q0.234375 -0.40625 0.640625 -0.671875q0.421875 -0.265625 1.015625 -0.390625q0.609375 -0.140625 1.359375 -0.140625l0.875 0l0 -0.5q0 -0.375 -0.078125 -0.65625q-0.078125 -0.28125 -0.25 -0.46875q-0.171875 -0.203125 -0.453125 -0.296875q-0.28125 -0.09375 -0.6875 -0.09375q-0.4375 0 -0.78125 0.109375q-0.34375 0.09375 -0.609375 0.21875q-0.265625 0.125 -0.4375 0.234375q-0.171875 0.109375 -0.265625 0.109375q-0.046875 0 -0.09375 -0.03125q-0.046875 -0.03125 -0.078125 -0.078125q-0.03125 -0.0625 -0.046875 -0.15625q-0.015625 -0.09375 -0.015625 -0.203125q0 -0.171875 0.015625 -0.265625q0.03125 -0.109375 0.125 -0.203125q0.109375 -0.09375 0.34375 -0.21875q0.234375 -0.125 0.53125 -0.234375q0.3125 -0.109375 0.671875 -0.171875q0.375 -0.0625 0.75 -0.0625q0.6875 0 1.171875 0.15625q0.5 0.15625 0.796875 0.46875q0.296875 0.296875 0.4375 0.75q0.140625 0.453125 0.140625 1.046875l0 4.34375zm-1.1875 -2.9375l-1.0 0q-0.484375 0 -0.84375 0.078125q-0.359375 0.078125 -0.59375 0.25q-0.234375 0.15625 -0.34375 0.390625q-0.109375 0.21875 -0.109375 0.515625q0 0.5 0.3125 0.796875q0.3125 0.296875 0.890625 0.296875q0.46875 0 0.859375 -0.234375q0.40625 -0.25 0.828125 -0.734375l0 -1.359375zm4.5360107 2.9375q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -9.5625q0 -0.0625 0.015625 -0.109375q0.03125 -0.046875 0.09375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.109375l0 9.5625zm7.6760254 -3.5q0 0.265625 -0.140625 0.390625q-0.140625 0.125 -0.3125 0.125l-4.234375 0q0 0.53125 0.109375 0.96875q0.109375 0.421875 0.359375 0.734375q0.25 0.296875 0.640625 0.46875q0.40625 0.15625 0.984375 0.15625q0.46875 0 0.828125 -0.0625q0.359375 -0.078125 0.609375 -0.171875q0.265625 -0.09375 0.4375 -0.171875q0.171875 -0.078125 0.25 -0.078125q0.046875 0 0.078125 0.03125q0.046875 0.015625 0.0625 0.078125q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125q0 0.09375 0 0.171875q0 0.0625 -0.015625 0.125q-0.015625 0.046875 -0.046875 0.09375q-0.015625 0.046875 -0.0625 0.09375q-0.03125 0.03125 -0.234375 0.125q-0.1875 0.078125 -0.5 0.171875q-0.296875 0.078125 -0.703125 0.140625q-0.40625 0.078125 -0.859375 0.078125q-0.796875 0 -1.40625 -0.21875q-0.59375 -0.234375 -1.0 -0.671875q-0.40625 -0.4375 -0.609375 -1.09375q-0.203125 -0.65625 -0.203125 -1.53125q0 -0.828125 0.203125 -1.484375q0.21875 -0.671875 0.625 -1.125q0.40625 -0.46875 0.96875 -0.703125q0.578125 -0.25 1.28125 -0.25q0.765625 0 1.296875 0.25q0.53125 0.234375 0.875 0.65625q0.34375 0.40625 0.5 0.96875q0.171875 0.546875 0.171875 1.171875l0 0.21875zm-1.1875 -0.359375q0.015625 -0.921875 -0.421875 -1.453125q-0.421875 -0.53125 -1.28125 -0.53125q-0.4375 0 -0.765625 0.171875q-0.328125 0.15625 -0.546875 0.4375q-0.21875 0.265625 -0.34375 0.625q-0.125 0.359375 -0.140625 0.75l3.5 0zm6.7454224 -2.171875q0 0.15625 -0.015625 0.265625q0 0.109375 -0.03125 0.171875q-0.015625 0.0625 -0.046875 0.09375q-0.03125 0.03125 -0.078125 0.03125q-0.0625 0 -0.15625 -0.03125q-0.078125 -0.03125 -0.1875 -0.0625q-0.09375 -0.03125 -0.21875 -0.0625q-0.125 -0.03125 -0.28125 -0.03125q-0.171875 0 -0.34375 0.078125q-0.171875 0.0625 -0.375 0.234375q-0.1875 0.15625 -0.390625 0.4375q-0.203125 0.265625 -0.453125 0.65625l0 4.25q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.0625 -0.03125 0.15625 -0.046875q0.109375 -0.015625 0.265625 -0.015625q0.171875 0 0.265625 0.015625q0.109375 0.015625 0.15625 0.046875q0.0625 0.03125 0.078125 0.078125q0.03125 0.03125 0.03125 0.078125l0 0.9375q0.265625 -0.375 0.5 -0.625q0.234375 -0.25 0.4375 -0.375q0.21875 -0.140625 0.421875 -0.1875q0.203125 -0.0625 0.40625 -0.0625q0.09375 0 0.203125 0.015625q0.125 0 0.25 0.03125q0.140625 0.03125 0.234375 0.0625q0.109375 0.03125 0.140625 0.078125q0.046875 0.03125 0.0625 0.0625q0.015625 0.03125 0.03125 0.078125q0.015625 0.046875 0.015625 0.15625q0 0.09375 0 0.25zm4.687805 5.546875q0 0.21875 -0.03125 0.34375q-0.015625 0.109375 -0.078125 0.171875q-0.0625 0.0625 -0.171875 0.109375q-0.109375 0.046875 -0.265625 0.078125q-0.140625 0.03125 -0.3125 0.046875q-0.15625 0.03125 -0.328125 0.03125q-0.5 0 -0.859375 -0.125q-0.34375 -0.140625 -0.578125 -0.40625q-0.234375 -0.28125 -0.34375 -0.6875q-0.09375 -0.40625 -0.09375 -0.96875l0 -3.765625l-0.90625 0q-0.109375 0 -0.171875 -0.109375q-0.0625 -0.109375 -0.0625 -0.375q0 -0.140625 0.015625 -0.234375q0.015625 -0.09375 0.046875 -0.140625q0.03125 -0.0625 0.078125 -0.09375q0.046875 -0.03125 0.109375 -0.03125l0.890625 0l0 -1.53125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.28125 -0.015625q0.1875 0 0.296875 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 1.53125l1.640625 0q0.0625 0 0.09375 0.03125q0.046875 0.03125 0.078125 0.09375q0.046875 0.046875 0.046875 0.140625q0.015625 0.09375 0.015625 0.234375q0 0.265625 -0.0625 0.375q-0.0625 0.109375 -0.171875 0.109375l-1.640625 0l0 3.59375q0 0.671875 0.1875 1.015625q0.203125 0.328125 0.703125 0.328125q0.171875 0 0.296875 -0.03125q0.125 -0.03125 0.21875 -0.0625q0.109375 -0.03125 0.171875 -0.0625q0.078125 -0.046875 0.140625 -0.046875q0.03125 0 0.0625 0.03125q0.03125 0.015625 0.046875 0.0625q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125zm11.378052 0q0 0.21875 -0.03125 0.34375q-0.015625 0.109375 -0.078125 0.171875q-0.0625 0.0625 -0.171875 0.109375q-0.109375 0.046875 -0.265625 0.078125q-0.140625 0.03125 -0.3125 0.046875q-0.15625 0.03125 -0.328125 0.03125q-0.5 0 -0.859375 -0.125q-0.34375 -0.140625 -0.578125 -0.40625q-0.234375 -0.28125 -0.34375 -0.6875q-0.09375 -0.40625 -0.09375 -0.96875l0 -3.765625l-0.90625 0q-0.109375 0 -0.171875 -0.109375q-0.0625 -0.109375 -0.0625 -0.375q0 -0.140625 0.015625 -0.234375q0.015625 -0.09375 0.046875 -0.140625q0.03125 -0.0625 0.078125 -0.09375q0.046875 -0.03125 0.109375 -0.03125l0.890625 0l0 -1.53125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.28125 -0.015625q0.1875 0 0.296875 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 1.53125l1.640625 0q0.0625 0 0.09375 0.03125q0.046875 0.03125 0.078125 0.09375q0.046875 0.046875 0.046875 0.140625q0.015625 0.09375 0.015625 0.234375q0 0.265625 -0.0625 0.375q-0.0625 0.109375 -0.171875 0.109375l-1.640625 0l0 3.59375q0 0.671875 0.1875 1.015625q0.203125 0.328125 0.703125 0.328125q0.171875 0 0.296875 -0.03125q0.125 -0.03125 0.21875 -0.0625q0.109375 -0.03125 0.171875 -0.0625q0.078125 -0.046875 0.140625 -0.046875q0.03125 0 0.0625 0.03125q0.03125 0.015625 0.046875 0.0625q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125zm5.3311157 -5.546875q0 0.15625 -0.015625 0.265625q0 0.109375 -0.03125 0.171875q-0.015625 0.0625 -0.046875 0.09375q-0.03125 0.03125 -0.078125 0.03125q-0.0625 0 -0.15625 -0.03125q-0.078125 -0.03125 -0.1875 -0.0625q-0.09375 -0.03125 -0.21875 -0.0625q-0.125 -0.03125 -0.28125 -0.03125q-0.171875 0 -0.34375 0.078125q-0.171875 0.0625 -0.375 0.234375q-0.1875 0.15625 -0.390625 0.4375q-0.203125 0.265625 -0.453125 0.65625l0 4.25q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.0625 -0.03125 0.15625 -0.046875q0.109375 -0.015625 0.265625 -0.015625q0.171875 0 0.265625 0.015625q0.109375 0.015625 0.15625 0.046875q0.0625 0.03125 0.078125 0.078125q0.03125 0.03125 0.03125 0.078125l0 0.9375q0.265625 -0.375 0.5 -0.625q0.234375 -0.25 0.4375 -0.375q0.21875 -0.140625 0.421875 -0.1875q0.203125 -0.0625 0.40625 -0.0625q0.09375 0 0.203125 0.015625q0.125 0 0.25 0.03125q0.140625 0.03125 0.234375 0.0625q0.109375 0.03125 0.140625 0.078125q0.046875 0.03125 0.0625 0.0625q0.015625 0.03125 0.03125 0.078125q0.015625 0.046875 0.015625 0.15625q0 0.09375 0 0.25zm2.5315552 6.03125q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 6.453125zm0.125 -8.625q0 0.421875 -0.15625 0.578125q-0.15625 0.140625 -0.578125 0.140625q-0.40625 0 -0.5625 -0.140625q-0.15625 -0.15625 -0.15625 -0.5625q0 -0.421875 0.15625 -0.5625q0.15625 -0.15625 0.578125 -0.15625q0.421875 0 0.5625 0.15625q0.15625 0.140625 0.15625 0.546875zm7.4259644 2.46875q0 0.25 -0.0625 0.359375q-0.0625 0.109375 -0.171875 0.109375l-0.921875 0q0.25 0.265625 0.34375 0.578125q0.109375 0.3125 0.109375 0.640625q0 0.5625 -0.1875 1.0q-0.171875 0.421875 -0.515625 0.71875q-0.328125 0.296875 -0.78125 0.453125q-0.453125 0.15625 -1.015625 0.15625q-0.390625 0 -0.75 -0.09375q-0.359375 -0.109375 -0.546875 -0.265625q-0.125 0.125 -0.21875 0.296875q-0.078125 0.15625 -0.078125 0.375q0 0.25 0.234375 0.421875q0.234375 0.15625 0.625 0.171875l1.671875 0.0625q0.484375 0.015625 0.875 0.140625q0.40625 0.109375 0.703125 0.328125q0.296875 0.21875 0.453125 0.546875q0.171875 0.3125 0.171875 0.734375q0 0.453125 -0.1875 0.84375q-0.1875 0.40625 -0.578125 0.703125q-0.375 0.3125 -0.96875 0.484375q-0.59375 0.171875 -1.40625 0.171875q-0.78125 0 -1.328125 -0.140625q-0.546875 -0.125 -0.90625 -0.359375q-0.34375 -0.21875 -0.5 -0.546875q-0.15625 -0.3125 -0.15625 -0.6875q0 -0.234375 0.0625 -0.453125q0.0625 -0.21875 0.171875 -0.421875q0.125 -0.203125 0.296875 -0.375q0.171875 -0.1875 0.40625 -0.375q-0.359375 -0.171875 -0.53125 -0.4375q-0.15625 -0.28125 -0.15625 -0.59375q0 -0.4375 0.171875 -0.78125q0.1875 -0.34375 0.453125 -0.609375q-0.234375 -0.265625 -0.359375 -0.59375q-0.125 -0.34375 -0.125 -0.8125q0 -0.546875 0.1875 -0.984375q0.1875 -0.4375 0.515625 -0.734375q0.328125 -0.3125 0.78125 -0.46875q0.46875 -0.15625 1.015625 -0.15625q0.296875 0 0.546875 0.03125q0.25 0.03125 0.46875 0.078125l1.953125 0q0.125 0 0.171875 0.125q0.0625 0.125 0.0625 0.359375zm-1.84375 1.703125q0 -0.65625 -0.359375 -1.03125q-0.359375 -0.375 -1.03125 -0.375q-0.34375 0 -0.59375 0.125q-0.25 0.109375 -0.421875 0.3125q-0.171875 0.203125 -0.25 0.46875q-0.078125 0.25 -0.078125 0.53125q0 0.640625 0.359375 1.015625q0.359375 0.359375 1.015625 0.359375q0.34375 0 0.59375 -0.109375q0.265625 -0.109375 0.4375 -0.296875q0.171875 -0.203125 0.25 -0.453125q0.078125 -0.265625 0.078125 -0.546875zm0.59375 5.09375q0 -0.40625 -0.34375 -0.625q-0.328125 -0.234375 -0.90625 -0.25l-1.671875 -0.0625q-0.234375 0.1875 -0.375 0.34375q-0.140625 0.15625 -0.234375 0.296875q-0.078125 0.15625 -0.125 0.296875q-0.03125 0.140625 -0.03125 0.296875q0 0.46875 0.46875 0.703125q0.484375 0.234375 1.328125 0.234375q0.53125 0 0.890625 -0.109375q0.375 -0.09375 0.59375 -0.265625q0.21875 -0.171875 0.3125 -0.390625q0.09375 -0.21875 0.09375 -0.46875zm8.148743 -6.796875q0 0.25 -0.0625 0.359375q-0.0625 0.109375 -0.171875 0.109375l-0.921875 0q0.25 0.265625 0.34375 0.578125q0.109375 0.3125 0.109375 0.640625q0 0.5625 -0.1875 1.0q-0.171875 0.421875 -0.515625 0.71875q-0.328125 0.296875 -0.78125 0.453125q-0.453125 0.15625 -1.015625 0.15625q-0.390625 0 -0.75 -0.09375q-0.359375 -0.109375 -0.546875 -0.265625q-0.125 0.125 -0.21875 0.296875q-0.078125 0.15625 -0.078125 0.375q0 0.25 0.234375 0.421875q0.234375 0.15625 0.625 0.171875l1.671875 0.0625q0.484375 0.015625 0.875 0.140625q0.40625 0.109375 0.703125 0.328125q0.296875 0.21875 0.453125 0.546875q0.171875 0.3125 0.171875 0.734375q0 0.453125 -0.1875 0.84375q-0.1875 0.40625 -0.578125 0.703125q-0.375 0.3125 -0.96875 0.484375q-0.59375 0.171875 -1.40625 0.171875q-0.78125 0 -1.328125 -0.140625q-0.546875 -0.125 -0.90625 -0.359375q-0.34375 -0.21875 -0.5 -0.546875q-0.15625 -0.3125 -0.15625 -0.6875q0 -0.234375 0.0625 -0.453125q0.0625 -0.21875 0.171875 -0.421875q0.125 -0.203125 0.296875 -0.375q0.171875 -0.1875 0.40625 -0.375q-0.359375 -0.171875 -0.53125 -0.4375q-0.15625 -0.28125 -0.15625 -0.59375q0 -0.4375 0.171875 -0.78125q0.1875 -0.34375 0.453125 -0.609375q-0.234375 -0.265625 -0.359375 -0.59375q-0.125 -0.34375 -0.125 -0.8125q0 -0.546875 0.1875 -0.984375q0.1875 -0.4375 0.515625 -0.734375q0.328125 -0.3125 0.78125 -0.46875q0.46875 -0.15625 1.015625 -0.15625q0.296875 0 0.546875 0.03125q0.25 0.03125 0.46875 0.078125l1.953125 0q0.125 0 0.171875 0.125q0.0625 0.125 0.0625 0.359375zm-1.84375 1.703125q0 -0.65625 -0.359375 -1.03125q-0.359375 -0.375 -1.03125 -0.375q-0.34375 0 -0.59375 0.125q-0.25 0.109375 -0.421875 0.3125q-0.171875 0.203125 -0.25 0.46875q-0.078125 0.25 -0.078125 0.53125q0 0.640625 0.359375 1.015625q0.359375 0.359375 1.015625 0.359375q0.34375 0 0.59375 -0.109375q0.265625 -0.109375 0.4375 -0.296875q0.171875 -0.203125 0.25 -0.453125q0.078125 -0.265625 0.078125 -0.546875zm0.59375 5.09375q0 -0.40625 -0.34375 -0.625q-0.328125 -0.234375 -0.90625 -0.25l-1.671875 -0.0625q-0.234375 0.1875 -0.375 0.34375q-0.140625 0.15625 -0.234375 0.296875q-0.078125 0.15625 -0.125 0.296875q-0.03125 0.140625 -0.03125 0.296875q0 0.46875 0.46875 0.703125q0.484375 0.234375 1.328125 0.234375q0.53125 0 0.890625 -0.109375q0.375 -0.09375 0.59375 -0.265625q0.21875 -0.171875 0.3125 -0.390625q0.09375 -0.21875 0.09375 -0.46875zm8.273743 -4.140625q0 0.265625 -0.140625 0.390625q-0.140625 0.125 -0.3125 0.125l-4.234375 0q0 0.53125 0.109375 0.96875q0.109375 0.421875 0.359375 0.734375q0.25 0.296875 0.640625 0.46875q0.40625 0.15625 0.984375 0.15625q0.46875 0 0.828125 -0.0625q0.359375 -0.078125 0.609375 -0.171875q0.265625 -0.09375 0.4375 -0.171875q0.171875 -0.078125 0.25 -0.078125q0.046875 0 0.078125 0.03125q0.046875 0.015625 0.0625 0.078125q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125q0 0.09375 0 0.171875q0 0.0625 -0.015625 0.125q-0.015625 0.046875 -0.046875 0.09375q-0.015625 0.046875 -0.0625 0.09375q-0.03125 0.03125 -0.234375 0.125q-0.1875 0.078125 -0.5 0.171875q-0.296875 0.078125 -0.703125 0.140625q-0.40625 0.078125 -0.859375 0.078125q-0.796875 0 -1.40625 -0.21875q-0.59375 -0.234375 -1.0 -0.671875q-0.40625 -0.4375 -0.609375 -1.09375q-0.203125 -0.65625 -0.203125 -1.53125q0 -0.828125 0.203125 -1.484375q0.21875 -0.671875 0.625 -1.125q0.40625 -0.46875 0.96875 -0.703125q0.578125 -0.25 1.28125 -0.25q0.765625 0 1.296875 0.25q0.53125 0.234375 0.875 0.65625q0.34375 0.40625 0.5 0.96875q0.171875 0.546875 0.171875 1.171875l0 0.21875zm-1.1875 -0.359375q0.015625 -0.921875 -0.421875 -1.453125q-0.421875 -0.53125 -1.28125 -0.53125q-0.4375 0 -0.765625 0.171875q-0.328125 0.15625 -0.546875 0.4375q-0.21875 0.265625 -0.34375 0.625q-0.125 0.359375 -0.140625 0.75l3.5 0zm6.7454834 -2.171875q0 0.15625 -0.015625 0.265625q0 0.109375 -0.03125 0.171875q-0.015625 0.0625 -0.046875 0.09375q-0.03125 0.03125 -0.078125 0.03125q-0.0625 0 -0.15625 -0.03125q-0.078125 -0.03125 -0.1875 -0.0625q-0.09375 -0.03125 -0.21875 -0.0625q-0.125 -0.03125 -0.28125 -0.03125q-0.171875 0 -0.34375 0.078125q-0.171875 0.0625 -0.375 0.234375q-0.1875 0.15625 -0.390625 0.4375q-0.203125 0.265625 -0.453125 0.65625l0 4.25q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.0625 -0.03125 0.15625 -0.046875q0.109375 -0.015625 0.265625 -0.015625q0.171875 0 0.265625 0.015625q0.109375 0.015625 0.15625 0.046875q0.0625 0.03125 0.078125 0.078125q0.03125 0.03125 0.03125 0.078125l0 0.9375q0.265625 -0.375 0.5 -0.625q0.234375 -0.25 0.4375 -0.375q0.21875 -0.140625 0.421875 -0.1875q0.203125 -0.0625 0.40625 -0.0625q0.09375 0 0.203125 0.015625q0.125 0 0.25 0.03125q0.140625 0.03125 0.234375 0.0625q0.109375 0.03125 0.140625 0.078125q0.046875 0.03125 0.0625 0.0625q0.015625 0.03125 0.03125 0.078125q0.015625 0.046875 0.015625 0.15625q0 0.09375 0 0.25zm5.390869 4.265625q0 0.5 -0.1875 0.890625q-0.1875 0.375 -0.53125 0.640625q-0.328125 0.265625 -0.796875 0.40625q-0.453125 0.140625 -1.015625 0.140625q-0.34375 0 -0.65625 -0.0625q-0.3125 -0.046875 -0.5625 -0.125q-0.234375 -0.09375 -0.40625 -0.171875q-0.171875 -0.09375 -0.25 -0.15625q-0.078125 -0.078125 -0.125 -0.203125q-0.03125 -0.140625 -0.03125 -0.359375q0 -0.140625 0.015625 -0.234375q0.015625 -0.09375 0.03125 -0.140625q0.03125 -0.0625 0.0625 -0.078125q0.046875 -0.03125 0.09375 -0.03125q0.078125 0 0.234375 0.09375q0.15625 0.09375 0.375 0.21875q0.234375 0.109375 0.53125 0.203125q0.3125 0.09375 0.71875 0.09375q0.296875 0 0.53125 -0.0625q0.25 -0.0625 0.421875 -0.1875q0.1875 -0.125 0.28125 -0.3125q0.09375 -0.203125 0.09375 -0.46875q0 -0.265625 -0.140625 -0.453125q-0.140625 -0.1875 -0.375 -0.328125q-0.21875 -0.140625 -0.515625 -0.25q-0.28125 -0.109375 -0.59375 -0.234375q-0.296875 -0.125 -0.59375 -0.28125q-0.28125 -0.15625 -0.515625 -0.375q-0.21875 -0.21875 -0.359375 -0.515625q-0.140625 -0.3125 -0.140625 -0.75q0 -0.375 0.140625 -0.71875q0.15625 -0.359375 0.453125 -0.609375q0.296875 -0.265625 0.734375 -0.421875q0.4375 -0.15625 1.015625 -0.15625q0.265625 0 0.515625 0.046875q0.265625 0.03125 0.46875 0.09375q0.203125 0.0625 0.34375 0.140625q0.15625 0.078125 0.234375 0.140625q0.078125 0.046875 0.09375 0.09375q0.03125 0.046875 0.03125 0.109375q0.015625 0.046875 0.03125 0.125q0.015625 0.078125 0.015625 0.1875q0 0.125 -0.015625 0.21875q-0.015625 0.078125 -0.046875 0.140625q-0.015625 0.0625 -0.046875 0.09375q-0.03125 0.015625 -0.078125 0.015625q-0.0625 0 -0.1875 -0.078125q-0.125 -0.078125 -0.328125 -0.171875q-0.1875 -0.09375 -0.453125 -0.171875q-0.25 -0.078125 -0.59375 -0.078125q-0.296875 0 -0.53125 0.078125q-0.21875 0.0625 -0.375 0.1875q-0.140625 0.125 -0.21875 0.296875q-0.0625 0.171875 -0.0625 0.375q0 0.28125 0.140625 0.46875q0.140625 0.1875 0.359375 0.328125q0.234375 0.140625 0.53125 0.265625q0.296875 0.109375 0.59375 0.234375q0.3125 0.125 0.609375 0.28125q0.296875 0.140625 0.515625 0.359375q0.234375 0.203125 0.375 0.515625q0.140625 0.296875 0.140625 0.703125zm3.2479248 0.921875q0 0.21875 -0.03125 0.40625q-0.015625 0.1875 -0.0625 0.359375q-0.046875 0.15625 -0.140625 0.3125q-0.078125 0.15625 -0.203125 0.34375l-0.96875 1.46875q-0.046875 0.046875 -0.09375 0.078125q-0.046875 0.046875 -0.109375 0.0625q-0.0625 0.03125 -0.15625 0.046875q-0.09375 0.015625 -0.21875 0.015625q-0.125 0 -0.21875 -0.015625q-0.078125 -0.015625 -0.109375 -0.046875q-0.03125 -0.015625 -0.046875 -0.0625q0 -0.03125 0.03125 -0.09375l0.953125 -1.96875l0 -0.90625q0 -0.203125 0.03125 -0.3125q0.046875 -0.125 0.125 -0.171875q0.09375 -0.0625 0.21875 -0.078125q0.140625 -0.03125 0.3125 -0.03125q0.1875 0 0.3125 0.03125q0.125 0.015625 0.203125 0.078125q0.09375 0.046875 0.125 0.171875q0.046875 0.109375 0.046875 0.3125zm11.906921 0.359375q0 0.21875 -0.03125 0.34375q-0.015625 0.109375 -0.078125 0.171875q-0.0625 0.0625 -0.171875 0.109375q-0.109375 0.046875 -0.265625 0.078125q-0.140625 0.03125 -0.3125 0.046875q-0.15625 0.03125 -0.328125 0.03125q-0.5 0 -0.859375 -0.125q-0.34375 -0.140625 -0.578125 -0.40625q-0.234375 -0.28125 -0.34375 -0.6875q-0.09375 -0.40625 -0.09375 -0.96875l0 -3.765625l-0.90625 0q-0.109375 0 -0.171875 -0.109375q-0.0625 -0.109375 -0.0625 -0.375q0 -0.140625 0.015625 -0.234375q0.015625 -0.09375 0.046875 -0.140625q0.03125 -0.0625 0.078125 -0.09375q0.046875 -0.03125 0.109375 -0.03125l0.890625 0l0 -1.53125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.28125 -0.015625q0.1875 0 0.296875 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 1.53125l1.640625 0q0.0625 0 0.09375 0.03125q0.046875 0.03125 0.078125 0.09375q0.046875 0.046875 0.046875 0.140625q0.015625 0.09375 0.015625 0.234375q0 0.265625 -0.0625 0.375q-0.0625 0.109375 -0.171875 0.109375l-1.640625 0l0 3.59375q0 0.671875 0.1875 1.015625q0.203125 0.328125 0.703125 0.328125q0.171875 0 0.296875 -0.03125q0.125 -0.03125 0.21875 -0.0625q0.109375 -0.03125 0.171875 -0.0625q0.078125 -0.046875 0.140625 -0.046875q0.03125 0 0.0625 0.03125q0.03125 0.015625 0.046875 0.0625q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125zm7.1123657 0.484375q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.171875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.03125 -0.046875 -0.03125 -0.09375l0 -3.78125q0 -0.546875 -0.09375 -0.875q-0.078125 -0.34375 -0.25 -0.578125q-0.15625 -0.25 -0.421875 -0.375q-0.25 -0.140625 -0.59375 -0.140625q-0.4375 0 -0.890625 0.328125q-0.4375 0.3125 -0.921875 0.90625l0 4.515625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -9.5625q0 -0.0625 0.015625 -0.109375q0.03125 -0.046875 0.09375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.109375l0 3.859375q0.5 -0.546875 1.015625 -0.796875q0.515625 -0.265625 1.046875 -0.265625q0.640625 0 1.078125 0.21875q0.4375 0.21875 0.703125 0.578125q0.28125 0.359375 0.390625 0.859375q0.125 0.484375 0.125 1.1875l0 3.921875zm7.0127563 0q0 0.09375 -0.0625 0.140625q-0.0625 0.03125 -0.171875 0.046875q-0.09375 0.03125 -0.28125 0.03125q-0.1875 0 -0.296875 -0.03125q-0.109375 -0.015625 -0.15625 -0.046875q-0.046875 -0.046875 -0.046875 -0.140625l0 -0.640625q-0.421875 0.453125 -0.953125 0.703125q-0.515625 0.25 -1.09375 0.25q-0.5 0 -0.921875 -0.140625q-0.40625 -0.125 -0.703125 -0.375q-0.28125 -0.25 -0.453125 -0.609375q-0.15625 -0.375 -0.15625 -0.84375q0 -0.546875 0.21875 -0.9375q0.234375 -0.40625 0.640625 -0.671875q0.421875 -0.265625 1.015625 -0.390625q0.609375 -0.140625 1.359375 -0.140625l0.875 0l0 -0.5q0 -0.375 -0.078125 -0.65625q-0.078125 -0.28125 -0.25 -0.46875q-0.171875 -0.203125 -0.453125 -0.296875q-0.28125 -0.09375 -0.6875 -0.09375q-0.4375 0 -0.78125 0.109375q-0.34375 0.09375 -0.609375 0.21875q-0.265625 0.125 -0.4375 0.234375q-0.171875 0.109375 -0.265625 0.109375q-0.046875 0 -0.09375 -0.03125q-0.046875 -0.03125 -0.078125 -0.078125q-0.03125 -0.0625 -0.046875 -0.15625q-0.015625 -0.09375 -0.015625 -0.203125q0 -0.171875 0.015625 -0.265625q0.03125 -0.109375 0.125 -0.203125q0.109375 -0.09375 0.34375 -0.21875q0.234375 -0.125 0.53125 -0.234375q0.3125 -0.109375 0.671875 -0.171875q0.375 -0.0625 0.75 -0.0625q0.6875 0 1.171875 0.15625q0.5 0.15625 0.796875 0.46875q0.296875 0.296875 0.4375 0.75q0.140625 0.453125 0.140625 1.046875l0 4.34375zm-1.1875 -2.9375l-1.0 0q-0.484375 0 -0.84375 0.078125q-0.359375 0.078125 -0.59375 0.25q-0.234375 0.15625 -0.34375 0.390625q-0.109375 0.21875 -0.109375 0.515625q0 0.5 0.3125 0.796875q0.3125 0.296875 0.890625 0.296875q0.46875 0 0.859375 -0.234375q0.40625 -0.25 0.828125 -0.734375l0 -1.359375zm6.6922607 2.453125q0 0.21875 -0.03125 0.34375q-0.015625 0.109375 -0.078125 0.171875q-0.0625 0.0625 -0.171875 0.109375q-0.109375 0.046875 -0.265625 0.078125q-0.140625 0.03125 -0.3125 0.046875q-0.15625 0.03125 -0.328125 0.03125q-0.5 0 -0.859375 -0.125q-0.34375 -0.140625 -0.578125 -0.40625q-0.234375 -0.28125 -0.34375 -0.6875q-0.09375 -0.40625 -0.09375 -0.96875l0 -3.765625l-0.90625 0q-0.109375 0 -0.171875 -0.109375q-0.0625 -0.109375 -0.0625 -0.375q0 -0.140625 0.015625 -0.234375q0.015625 -0.09375 0.046875 -0.140625q0.03125 -0.0625 0.078125 -0.09375q0.046875 -0.03125 0.109375 -0.03125l0.890625 0l0 -1.53125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.28125 -0.015625q0.1875 0 0.296875 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 1.53125l1.640625 0q0.0625 0 0.09375 0.03125q0.046875 0.03125 0.078125 0.09375q0.046875 0.046875 0.046875 0.140625q0.015625 0.09375 0.015625 0.234375q0 0.265625 -0.0625 0.375q-0.0625 0.109375 -0.171875 0.109375l-1.640625 0l0 3.59375q0 0.671875 0.1875 1.015625q0.203125 0.328125 0.703125 0.328125q0.171875 0 0.296875 -0.03125q0.125 -0.03125 0.21875 -0.0625q0.109375 -0.03125 0.171875 -0.0625q0.078125 -0.046875 0.140625 -0.046875q0.03125 0 0.0625 0.03125q0.03125 0.015625 0.046875 0.0625q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125zm12.893677 0.484375q0 0.09375 -0.0625 0.140625q-0.0625 0.03125 -0.171875 0.046875q-0.09375 0.03125 -0.28125 0.03125q-0.1875 0 -0.296875 -0.03125q-0.109375 -0.015625 -0.15625 -0.046875q-0.046875 -0.046875 -0.046875 -0.140625l0 -0.640625q-0.421875 0.453125 -0.953125 0.703125q-0.515625 0.25 -1.09375 0.25q-0.5 0 -0.921875 -0.140625q-0.40625 -0.125 -0.703125 -0.375q-0.28125 -0.25 -0.453125 -0.609375q-0.15625 -0.375 -0.15625 -0.84375q0 -0.546875 0.21875 -0.9375q0.234375 -0.40625 0.640625 -0.671875q0.421875 -0.265625 1.015625 -0.390625q0.609375 -0.140625 1.359375 -0.140625l0.875 0l0 -0.5q0 -0.375 -0.078125 -0.65625q-0.078125 -0.28125 -0.25 -0.46875q-0.171875 -0.203125 -0.453125 -0.296875q-0.28125 -0.09375 -0.6875 -0.09375q-0.4375 0 -0.78125 0.109375q-0.34375 0.09375 -0.609375 0.21875q-0.265625 0.125 -0.4375 0.234375q-0.171875 0.109375 -0.265625 0.109375q-0.046875 0 -0.09375 -0.03125q-0.046875 -0.03125 -0.078125 -0.078125q-0.03125 -0.0625 -0.046875 -0.15625q-0.015625 -0.09375 -0.015625 -0.203125q0 -0.171875 0.015625 -0.265625q0.03125 -0.109375 0.125 -0.203125q0.109375 -0.09375 0.34375 -0.21875q0.234375 -0.125 0.53125 -0.234375q0.3125 -0.109375 0.671875 -0.171875q0.375 -0.0625 0.75 -0.0625q0.6875 0 1.171875 0.15625q0.5 0.15625 0.796875 0.46875q0.296875 0.296875 0.4375 0.75q0.140625 0.453125 0.140625 1.046875l0 4.34375zm-1.1875 -2.9375l-1.0 0q-0.484375 0 -0.84375 0.078125q-0.359375 0.078125 -0.59375 0.25q-0.234375 0.15625 -0.34375 0.390625q-0.109375 0.21875 -0.109375 0.515625q0 0.5 0.3125 0.796875q0.3125 0.296875 0.890625 0.296875q0.46875 0 0.859375 -0.234375q0.40625 -0.25 0.828125 -0.734375l0 -1.359375zm4.5360107 2.9375q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -9.5625q0 -0.0625 0.015625 -0.109375q0.03125 -0.046875 0.09375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.109375l0 9.5625zm3.3635254 0q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -9.5625q0 -0.0625 0.015625 -0.109375q0.03125 -0.046875 0.09375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.109375l0 9.5625zm14.1604 0q0 0.046875 -0.03125 0.09375q-0.015625 0.03125 -0.078125 0.0625q-0.0625 0.03125 -0.171875 0.046875q-0.109375 0.015625 -0.25 0.015625q-0.171875 0 -0.28125 -0.015625q-0.09375 -0.015625 -0.15625 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -0.859375q-0.546875 0.609375 -1.078125 0.890625q-0.53125 0.28125 -1.09375 0.28125q-0.640625 0 -1.078125 -0.21875q-0.4375 -0.21875 -0.71875 -0.578125q-0.265625 -0.375 -0.390625 -0.859375q-0.109375 -0.5 -0.109375 -1.203125l0 -3.90625q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.109375 0.015625 0.171875 0.046875q0.078125 0.03125 0.109375 0.078125q0.03125 0.03125 0.03125 0.078125l0 3.75q0 0.578125 0.078125 0.921875q0.078125 0.328125 0.25 0.578125q0.171875 0.234375 0.421875 0.375q0.265625 0.125 0.609375 0.125q0.4375 0 0.875 -0.3125q0.453125 -0.328125 0.9375 -0.9375l0 -4.5q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.109375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.109375 -0.015625 0.28125 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 6.453125zm6.2315063 -1.765625q0 0.5 -0.1875 0.890625q-0.1875 0.375 -0.53125 0.640625q-0.328125 0.265625 -0.796875 0.40625q-0.453125 0.140625 -1.015625 0.140625q-0.34375 0 -0.65625 -0.0625q-0.3125 -0.046875 -0.5625 -0.125q-0.234375 -0.09375 -0.40625 -0.171875q-0.171875 -0.09375 -0.25 -0.15625q-0.078125 -0.078125 -0.125 -0.203125q-0.03125 -0.140625 -0.03125 -0.359375q0 -0.140625 0.015625 -0.234375q0.015625 -0.09375 0.03125 -0.140625q0.03125 -0.0625 0.0625 -0.078125q0.046875 -0.03125 0.09375 -0.03125q0.078125 0 0.234375 0.09375q0.15625 0.09375 0.375 0.21875q0.234375 0.109375 0.53125 0.203125q0.3125 0.09375 0.71875 0.09375q0.296875 0 0.53125 -0.0625q0.25 -0.0625 0.421875 -0.1875q0.1875 -0.125 0.28125 -0.3125q0.09375 -0.203125 0.09375 -0.46875q0 -0.265625 -0.140625 -0.453125q-0.140625 -0.1875 -0.375 -0.328125q-0.21875 -0.140625 -0.515625 -0.25q-0.28125 -0.109375 -0.59375 -0.234375q-0.296875 -0.125 -0.59375 -0.28125q-0.28125 -0.15625 -0.515625 -0.375q-0.21875 -0.21875 -0.359375 -0.515625q-0.140625 -0.3125 -0.140625 -0.75q0 -0.375 0.140625 -0.71875q0.15625 -0.359375 0.453125 -0.609375q0.296875 -0.265625 0.734375 -0.421875q0.4375 -0.15625 1.015625 -0.15625q0.265625 0 0.515625 0.046875q0.265625 0.03125 0.46875 0.09375q0.203125 0.0625 0.34375 0.140625q0.15625 0.078125 0.234375 0.140625q0.078125 0.046875 0.09375 0.09375q0.03125 0.046875 0.03125 0.109375q0.015625 0.046875 0.03125 0.125q0.015625 0.078125 0.015625 0.1875q0 0.125 -0.015625 0.21875q-0.015625 0.078125 -0.046875 0.140625q-0.015625 0.0625 -0.046875 0.09375q-0.03125 0.015625 -0.078125 0.015625q-0.0625 0 -0.1875 -0.078125q-0.125 -0.078125 -0.328125 -0.171875q-0.1875 -0.09375 -0.453125 -0.171875q-0.25 -0.078125 -0.59375 -0.078125q-0.296875 0 -0.53125 0.078125q-0.21875 0.0625 -0.375 0.1875q-0.140625 0.125 -0.21875 0.296875q-0.0625 0.171875 -0.0625 0.375q0 0.28125 0.140625 0.46875q0.140625 0.1875 0.359375 0.328125q0.234375 0.140625 0.53125 0.265625q0.296875 0.109375 0.59375 0.234375q0.3125 0.125 0.609375 0.28125q0.296875 0.140625 0.515625 0.359375q0.234375 0.203125 0.375 0.515625q0.140625 0.296875 0.140625 0.703125zm7.185364 -1.734375q0 0.265625 -0.140625 0.390625q-0.140625 0.125 -0.3125 0.125l-4.234375 0q0 0.53125 0.109375 0.96875q0.109375 0.421875 0.359375 0.734375q0.25 0.296875 0.640625 0.46875q0.40625 0.15625 0.984375 0.15625q0.46875 0 0.828125 -0.0625q0.359375 -0.078125 0.609375 -0.171875q0.265625 -0.09375 0.4375 -0.171875q0.171875 -0.078125 0.25 -0.078125q0.046875 0 0.078125 0.03125q0.046875 0.015625 0.0625 0.078125q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125q0 0.09375 0 0.171875q0 0.0625 -0.015625 0.125q-0.015625 0.046875 -0.046875 0.09375q-0.015625 0.046875 -0.0625 0.09375q-0.03125 0.03125 -0.234375 0.125q-0.1875 0.078125 -0.5 0.171875q-0.296875 0.078125 -0.703125 0.140625q-0.40625 0.078125 -0.859375 0.078125q-0.796875 0 -1.40625 -0.21875q-0.59375 -0.234375 -1.0 -0.671875q-0.40625 -0.4375 -0.609375 -1.09375q-0.203125 -0.65625 -0.203125 -1.53125q0 -0.828125 0.203125 -1.484375q0.21875 -0.671875 0.625 -1.125q0.40625 -0.46875 0.96875 -0.703125q0.578125 -0.25 1.28125 -0.25q0.765625 0 1.296875 0.25q0.53125 0.234375 0.875 0.65625q0.34375 0.40625 0.5 0.96875q0.171875 0.546875 0.171875 1.171875l0 0.21875zm-1.1875 -0.359375q0.015625 -0.921875 -0.421875 -1.453125q-0.421875 -0.53125 -1.28125 -0.53125q-0.4375 0 -0.765625 0.171875q-0.328125 0.15625 -0.546875 0.4375q-0.21875 0.265625 -0.34375 0.625q-0.125 0.359375 -0.140625 0.75l3.5 0zm14.307983 3.859375q0 0.09375 -0.0625 0.140625q-0.0625 0.03125 -0.171875 0.046875q-0.09375 0.03125 -0.28125 0.03125q-0.1875 0 -0.296875 -0.03125q-0.109375 -0.015625 -0.15625 -0.046875q-0.046875 -0.046875 -0.046875 -0.140625l0 -0.640625q-0.421875 0.453125 -0.953125 0.703125q-0.515625 0.25 -1.09375 0.25q-0.5 0 -0.921875 -0.140625q-0.40625 -0.125 -0.703125 -0.375q-0.28125 -0.25 -0.453125 -0.609375q-0.15625 -0.375 -0.15625 -0.84375q0 -0.546875 0.21875 -0.9375q0.234375 -0.40625 0.640625 -0.671875q0.421875 -0.265625 1.015625 -0.390625q0.609375 -0.140625 1.359375 -0.140625l0.875 0l0 -0.5q0 -0.375 -0.078125 -0.65625q-0.078125 -0.28125 -0.25 -0.46875q-0.171875 -0.203125 -0.453125 -0.296875q-0.28125 -0.09375 -0.6875 -0.09375q-0.4375 0 -0.78125 0.109375q-0.34375 0.09375 -0.609375 0.21875q-0.265625 0.125 -0.4375 0.234375q-0.171875 0.109375 -0.265625 0.109375q-0.046875 0 -0.09375 -0.03125q-0.046875 -0.03125 -0.078125 -0.078125q-0.03125 -0.0625 -0.046875 -0.15625q-0.015625 -0.09375 -0.015625 -0.203125q0 -0.171875 0.015625 -0.265625q0.03125 -0.109375 0.125 -0.203125q0.109375 -0.09375 0.34375 -0.21875q0.234375 -0.125 0.53125 -0.234375q0.3125 -0.109375 0.671875 -0.171875q0.375 -0.0625 0.75 -0.0625q0.6875 0 1.171875 0.15625q0.5 0.15625 0.796875 0.46875q0.296875 0.296875 0.4375 0.75q0.140625 0.453125 0.140625 1.046875l0 4.34375zm-1.1875 -2.9375l-1.0 0q-0.484375 0 -0.84375 0.078125q-0.359375 0.078125 -0.59375 0.25q-0.234375 0.15625 -0.34375 0.390625q-0.109375 0.21875 -0.109375 0.515625q0 0.5 0.3125 0.796875q0.3125 0.296875 0.890625 0.296875q0.46875 0 0.859375 -0.234375q0.40625 -0.25 0.828125 -0.734375l0 -1.359375zm15.364136 2.9375q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.171875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.03125 -0.046875 -0.03125 -0.09375l0 -3.78125q0 -0.546875 -0.09375 -0.875q-0.078125 -0.34375 -0.25 -0.578125q-0.15625 -0.25 -0.421875 -0.375q-0.25 -0.140625 -0.59375 -0.140625q-0.4375 0 -0.890625 0.328125q-0.4375 0.3125 -0.921875 0.90625l0 4.515625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.0625 -0.03125 0.15625 -0.046875q0.109375 -0.015625 0.265625 -0.015625q0.171875 0 0.265625 0.015625q0.109375 0.015625 0.15625 0.046875q0.0625 0.03125 0.078125 0.078125q0.03125 0.03125 0.03125 0.078125l0 0.859375q0.546875 -0.609375 1.078125 -0.890625q0.546875 -0.28125 1.109375 -0.28125q0.640625 0 1.078125 0.21875q0.4375 0.21875 0.703125 0.578125q0.28125 0.359375 0.390625 0.859375q0.125 0.484375 0.125 1.171875l0 3.9375zm8.137756 -3.296875q0 0.78125 -0.203125 1.453125q-0.203125 0.65625 -0.625 1.140625q-0.40625 0.46875 -1.03125 0.75q-0.609375 0.265625 -1.421875 0.265625q-0.796875 0 -1.390625 -0.234375q-0.59375 -0.25 -0.984375 -0.6875q-0.390625 -0.453125 -0.59375 -1.09375q-0.1875 -0.65625 -0.1875 -1.46875q0 -0.78125 0.203125 -1.4375q0.203125 -0.671875 0.609375 -1.140625q0.421875 -0.484375 1.03125 -0.75q0.625 -0.265625 1.4375 -0.265625q0.796875 0 1.390625 0.234375q0.59375 0.234375 0.984375 0.6875q0.390625 0.453125 0.578125 1.09375q0.203125 0.640625 0.203125 1.453125zm-1.234375 0.078125q0 -0.53125 -0.109375 -0.984375q-0.09375 -0.46875 -0.3125 -0.8125q-0.21875 -0.359375 -0.609375 -0.5625q-0.375 -0.203125 -0.9375 -0.203125q-0.515625 0 -0.890625 0.1875q-0.375 0.1875 -0.625 0.53125q-0.234375 0.328125 -0.359375 0.796875q-0.125 0.46875 -0.125 1.015625q0 0.53125 0.09375 1.0q0.109375 0.46875 0.328125 0.8125q0.234375 0.34375 0.609375 0.546875q0.375 0.203125 0.9375 0.203125q0.515625 0 0.890625 -0.1875q0.390625 -0.1875 0.625 -0.515625q0.25 -0.34375 0.359375 -0.796875q0.125 -0.46875 0.125 -1.03125zm6.322632 2.734375q0 0.21875 -0.03125 0.34375q-0.015625 0.109375 -0.078125 0.171875q-0.0625 0.0625 -0.171875 0.109375q-0.109375 0.046875 -0.265625 0.078125q-0.140625 0.03125 -0.3125 0.046875q-0.15625 0.03125 -0.328125 0.03125q-0.5 0 -0.859375 -0.125q-0.34375 -0.140625 -0.578125 -0.40625q-0.234375 -0.28125 -0.34375 -0.6875q-0.09375 -0.40625 -0.09375 -0.96875l0 -3.765625l-0.90625 0q-0.109375 0 -0.171875 -0.109375q-0.0625 -0.109375 -0.0625 -0.375q0 -0.140625 0.015625 -0.234375q0.015625 -0.09375 0.046875 -0.140625q0.03125 -0.0625 0.078125 -0.09375q0.046875 -0.03125 0.109375 -0.03125l0.890625 0l0 -1.53125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.28125 -0.015625q0.1875 0 0.296875 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 1.53125l1.640625 0q0.0625 0 0.09375 0.03125q0.046875 0.03125 0.078125 0.09375q0.046875 0.046875 0.046875 0.140625q0.015625 0.09375 0.015625 0.234375q0 0.265625 -0.0625 0.375q-0.0625 0.109375 -0.171875 0.109375l-1.640625 0l0 3.59375q0 0.671875 0.1875 1.015625q0.203125 0.328125 0.703125 0.328125q0.171875 0 0.296875 -0.03125q0.125 -0.03125 0.21875 -0.0625q0.109375 -0.03125 0.171875 -0.0625q0.078125 -0.046875 0.140625 -0.046875q0.03125 0 0.0625 0.03125q0.03125 0.015625 0.046875 0.0625q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125zm2.7530518 0.484375q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 6.453125zm0.125 -8.625q0 0.421875 -0.15625 0.578125q-0.15625 0.140625 -0.578125 0.140625q-0.40625 0 -0.5625 -0.140625q-0.15625 -0.15625 -0.15625 -0.5625q0 -0.421875 0.15625 -0.5625q0.15625 -0.15625 0.578125 -0.15625q0.421875 0 0.5625 0.15625q0.15625 0.140625 0.15625 0.546875zm5.5822144 -0.46875q0 0.140625 -0.015625 0.21875q-0.015625 0.078125 -0.03125 0.140625q-0.015625 0.046875 -0.046875 0.0625q-0.03125 0.015625 -0.078125 0.015625q-0.046875 0 -0.125 -0.03125q-0.0625 -0.03125 -0.171875 -0.0625q-0.109375 -0.046875 -0.265625 -0.078125q-0.140625 -0.03125 -0.328125 -0.03125q-0.265625 0 -0.453125 0.09375q-0.1875 0.078125 -0.3125 0.265625q-0.109375 0.171875 -0.15625 0.46875q-0.046875 0.28125 -0.046875 0.703125l0 0.6875l1.4375 0q0.0625 0 0.09375 0.03125q0.046875 0.03125 0.078125 0.09375q0.03125 0.046875 0.046875 0.140625q0.015625 0.09375 0.015625 0.234375q0 0.265625 -0.0625 0.375q-0.0625 0.109375 -0.171875 0.109375l-1.4375 0l0 5.65625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.109375 0.0625q-0.0625 0.03125 -0.171875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -5.65625l-0.90625 0q-0.125 0 -0.1875 -0.109375q-0.046875 -0.109375 -0.046875 -0.375q0 -0.140625 0.015625 -0.234375q0.015625 -0.09375 0.03125 -0.140625q0.03125 -0.0625 0.078125 -0.09375q0.046875 -0.03125 0.109375 -0.03125l0.90625 0l0 -0.65625q0 -0.671875 0.125 -1.15625q0.125 -0.484375 0.375 -0.78125q0.265625 -0.3125 0.65625 -0.453125q0.390625 -0.15625 0.921875 -0.15625q0.25 0 0.484375 0.046875q0.234375 0.046875 0.359375 0.109375q0.125 0.046875 0.171875 0.09375q0.046875 0.03125 0.0625 0.109375q0.03125 0.0625 0.046875 0.15625q0.015625 0.09375 0.015625 0.234375zm2.1290283 9.09375q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 6.453125zm0.125 -8.625q0 0.421875 -0.15625 0.578125q-0.15625 0.140625 -0.578125 0.140625q-0.40625 0 -0.5625 -0.140625q-0.15625 -0.15625 -0.15625 -0.5625q0 -0.421875 0.15625 -0.5625q0.15625 -0.15625 0.578125 -0.15625q0.421875 0 0.5625 0.15625q0.15625 0.140625 0.15625 0.546875zm6.6759644 7.640625q0 0.125 -0.015625 0.21875q0 0.078125 -0.015625 0.140625q-0.015625 0.0625 -0.046875 0.109375q-0.015625 0.046875 -0.109375 0.140625q-0.078125 0.078125 -0.296875 0.21875q-0.21875 0.125 -0.484375 0.234375q-0.265625 0.09375 -0.59375 0.15625q-0.3125 0.078125 -0.640625 0.078125q-0.703125 0 -1.234375 -0.234375q-0.53125 -0.234375 -0.90625 -0.671875q-0.359375 -0.4375 -0.546875 -1.078125q-0.1875 -0.640625 -0.1875 -1.484375q0 -0.9375 0.234375 -1.625q0.234375 -0.6875 0.640625 -1.125q0.40625 -0.4375 0.953125 -0.640625q0.546875 -0.21875 1.1875 -0.21875q0.296875 0 0.578125 0.0625q0.296875 0.0625 0.546875 0.15625q0.25 0.078125 0.4375 0.203125q0.1875 0.125 0.265625 0.21875q0.09375 0.078125 0.125 0.125q0.03125 0.046875 0.046875 0.125q0.03125 0.0625 0.03125 0.15625q0.015625 0.078125 0.015625 0.203125q0 0.28125 -0.078125 0.390625q-0.0625 0.109375 -0.15625 0.109375q-0.09375 0 -0.234375 -0.109375q-0.140625 -0.125 -0.359375 -0.265625q-0.21875 -0.140625 -0.53125 -0.25q-0.296875 -0.125 -0.703125 -0.125q-0.859375 0 -1.3125 0.65625q-0.453125 0.65625 -0.453125 1.890625q0 0.625 0.109375 1.09375q0.125 0.46875 0.34375 0.796875q0.234375 0.3125 0.5625 0.46875q0.34375 0.140625 0.78125 0.140625q0.40625 0 0.703125 -0.125q0.3125 -0.125 0.53125 -0.28125q0.234375 -0.15625 0.390625 -0.28125q0.15625 -0.125 0.234375 -0.125q0.046875 0 0.078125 0.03125q0.046875 0.03125 0.0625 0.09375q0.03125 0.0625 0.03125 0.171875q0.015625 0.109375 0.015625 0.25zm6.4318237 0.984375q0 0.09375 -0.0625 0.140625q-0.0625 0.03125 -0.171875 0.046875q-0.09375 0.03125 -0.28125 0.03125q-0.1875 0 -0.296875 -0.03125q-0.109375 -0.015625 -0.15625 -0.046875q-0.046875 -0.046875 -0.046875 -0.140625l0 -0.640625q-0.421875 0.453125 -0.953125 0.703125q-0.515625 0.25 -1.09375 0.25q-0.5 0 -0.921875 -0.140625q-0.40625 -0.125 -0.703125 -0.375q-0.28125 -0.25 -0.453125 -0.609375q-0.15625 -0.375 -0.15625 -0.84375q0 -0.546875 0.21875 -0.9375q0.234375 -0.40625 0.640625 -0.671875q0.421875 -0.265625 1.015625 -0.390625q0.609375 -0.140625 1.359375 -0.140625l0.875 0l0 -0.5q0 -0.375 -0.078125 -0.65625q-0.078125 -0.28125 -0.25 -0.46875q-0.171875 -0.203125 -0.453125 -0.296875q-0.28125 -0.09375 -0.6875 -0.09375q-0.4375 0 -0.78125 0.109375q-0.34375 0.09375 -0.609375 0.21875q-0.265625 0.125 -0.4375 0.234375q-0.171875 0.109375 -0.265625 0.109375q-0.046875 0 -0.09375 -0.03125q-0.046875 -0.03125 -0.078125 -0.078125q-0.03125 -0.0625 -0.046875 -0.15625q-0.015625 -0.09375 -0.015625 -0.203125q0 -0.171875 0.015625 -0.265625q0.03125 -0.109375 0.125 -0.203125q0.109375 -0.09375 0.34375 -0.21875q0.234375 -0.125 0.53125 -0.234375q0.3125 -0.109375 0.671875 -0.171875q0.375 -0.0625 0.75 -0.0625q0.6875 0 1.171875 0.15625q0.5 0.15625 0.796875 0.46875q0.296875 0.296875 0.4375 0.75q0.140625 0.453125 0.140625 1.046875l0 4.34375zm-1.1875 -2.9375l-1.0 0q-0.484375 0 -0.84375 0.078125q-0.359375 0.078125 -0.59375 0.25q-0.234375 0.15625 -0.34375 0.390625q-0.109375 0.21875 -0.109375 0.515625q0 0.5 0.3125 0.796875q0.3125 0.296875 0.890625 0.296875q0.46875 0 0.859375 -0.234375q0.40625 -0.25 0.828125 -0.734375l0 -1.359375zm6.6922607 2.453125q0 0.21875 -0.03125 0.34375q-0.015625 0.109375 -0.078125 0.171875q-0.0625 0.0625 -0.171875 0.109375q-0.109375 0.046875 -0.265625 0.078125q-0.140625 0.03125 -0.3125 0.046875q-0.15625 0.03125 -0.328125 0.03125q-0.5 0 -0.859375 -0.125q-0.34375 -0.140625 -0.578125 -0.40625q-0.234375 -0.28125 -0.34375 -0.6875q-0.09375 -0.40625 -0.09375 -0.96875l0 -3.765625l-0.90625 0q-0.109375 0 -0.171875 -0.109375q-0.0625 -0.109375 -0.0625 -0.375q0 -0.140625 0.015625 -0.234375q0.015625 -0.09375 0.046875 -0.140625q0.03125 -0.0625 0.078125 -0.09375q0.046875 -0.03125 0.109375 -0.03125l0.890625 0l0 -1.53125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.28125 -0.015625q0.1875 0 0.296875 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 1.53125l1.640625 0q0.0625 0 0.09375 0.03125q0.046875 0.03125 0.078125 0.09375q0.046875 0.046875 0.046875 0.140625q0.015625 0.09375 0.015625 0.234375q0 0.265625 -0.0625 0.375q-0.0625 0.109375 -0.171875 0.109375l-1.640625 0l0 3.59375q0 0.671875 0.1875 1.015625q0.203125 0.328125 0.703125 0.328125q0.171875 0 0.296875 -0.03125q0.125 -0.03125 0.21875 -0.0625q0.109375 -0.03125 0.171875 -0.0625q0.078125 -0.046875 0.140625 -0.046875q0.03125 0 0.0625 0.03125q0.03125 0.015625 0.046875 0.0625q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125zm2.7529907 0.484375q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 6.453125zm0.125 -8.625q0 0.421875 -0.15625 0.578125q-0.15625 0.140625 -0.578125 0.140625q-0.40625 0 -0.5625 -0.140625q-0.15625 -0.15625 -0.15625 -0.5625q0 -0.421875 0.15625 -0.5625q0.15625 -0.15625 0.578125 -0.15625q0.421875 0 0.5625 0.15625q0.15625 0.140625 0.15625 0.546875zm8.0354 5.328125q0 0.78125 -0.203125 1.453125q-0.203125 0.65625 -0.625 1.140625q-0.40625 0.46875 -1.03125 0.75q-0.609375 0.265625 -1.421875 0.265625q-0.796875 0 -1.390625 -0.234375q-0.59375 -0.25 -0.984375 -0.6875q-0.390625 -0.453125 -0.59375 -1.09375q-0.1875 -0.65625 -0.1875 -1.46875q0 -0.78125 0.203125 -1.4375q0.203125 -0.671875 0.609375 -1.140625q0.421875 -0.484375 1.03125 -0.75q0.625 -0.265625 1.4375 -0.265625q0.796875 0 1.390625 0.234375q0.59375 0.234375 0.984375 0.6875q0.390625 0.453125 0.578125 1.09375q0.203125 0.640625 0.203125 1.453125zm-1.234375 0.078125q0 -0.53125 -0.109375 -0.984375q-0.09375 -0.46875 -0.3125 -0.8125q-0.21875 -0.359375 -0.609375 -0.5625q-0.375 -0.203125 -0.9375 -0.203125q-0.515625 0 -0.890625 0.1875q-0.375 0.1875 -0.625 0.53125q-0.234375 0.328125 -0.359375 0.796875q-0.125 0.46875 -0.125 1.015625q0 0.53125 0.09375 1.0q0.109375 0.46875 0.328125 0.8125q0.234375 0.34375 0.609375 0.546875q0.375 0.203125 0.9375 0.203125q0.515625 0 0.890625 -0.1875q0.390625 -0.1875 0.625 -0.515625q0.25 -0.34375 0.359375 -0.796875q0.125 -0.46875 0.125 -1.03125zm8.525757 3.21875q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.171875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.03125 -0.046875 -0.03125 -0.09375l0 -3.78125q0 -0.546875 -0.09375 -0.875q-0.078125 -0.34375 -0.25 -0.578125q-0.15625 -0.25 -0.421875 -0.375q-0.25 -0.140625 -0.59375 -0.140625q-0.4375 0 -0.890625 0.328125q-0.4375 0.3125 -0.921875 0.90625l0 4.515625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.0625 -0.03125 0.15625 -0.046875q0.109375 -0.015625 0.265625 -0.015625q0.171875 0 0.265625 0.015625q0.109375 0.015625 0.15625 0.046875q0.0625 0.03125 0.078125 0.078125q0.03125 0.03125 0.03125 0.078125l0 0.859375q0.546875 -0.609375 1.078125 -0.890625q0.546875 -0.28125 1.109375 -0.28125q0.640625 0 1.078125 0.21875q0.4375 0.21875 0.703125 0.578125q0.28125 0.359375 0.390625 0.859375q0.125 0.484375 0.125 1.171875l0 3.9375z" fill-rule="nonzero"/><path fill="#000000" d="m680.57275 531.81757q0 0.265625 -0.140625 0.390625q-0.140625 0.125 -0.3125 0.125l-4.234375 0q0 0.53125 0.109375 0.96875q0.109375 0.421875 0.359375 0.734375q0.25 0.296875 0.640625 0.46875q0.40625 0.15625 0.984375 0.15625q0.46875 0 0.828125 -0.0625q0.359375 -0.078125 0.609375 -0.171875q0.265625 -0.09375 0.4375 -0.171875q0.171875 -0.078125 0.25 -0.078125q0.046875 0 0.078125 0.03125q0.046875 0.015625 0.0625 0.078125q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125q0 0.09375 0 0.171875q0 0.0625 -0.015625 0.125q-0.015625 0.046875 -0.046875 0.09375q-0.015625 0.046875 -0.0625 0.09375q-0.03125 0.03125 -0.234375 0.125q-0.1875 0.078125 -0.5 0.171875q-0.296875 0.078125 -0.703125 0.140625q-0.40625 0.078125 -0.859375 0.078125q-0.796875 0 -1.40625 -0.21875q-0.59375 -0.234375 -1.0 -0.671875q-0.40625 -0.4375 -0.609375 -1.09375q-0.203125 -0.65625 -0.203125 -1.53125q0 -0.828125 0.203125 -1.484375q0.21875 -0.671875 0.625 -1.125q0.40625 -0.46875 0.96875 -0.703125q0.578125 -0.25 1.28125 -0.25q0.765625 0 1.296875 0.25q0.53125 0.234375 0.875 0.65625q0.34375 0.40625 0.5 0.96875q0.171875 0.546875 0.171875 1.171875l0 0.21875zm-1.1875 -0.359375q0.015625 -0.921875 -0.421875 -1.453125q-0.421875 -0.53125 -1.28125 -0.53125q-0.4375 0 -0.765625 0.171875q-0.328125 0.15625 -0.546875 0.4375q-0.21875 0.265625 -0.34375 0.625q-0.125 0.359375 -0.140625 0.75l3.5 0zm8.526733 3.859375q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.171875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.03125 -0.046875 -0.03125 -0.09375l0 -3.78125q0 -0.546875 -0.09375 -0.875q-0.078125 -0.34375 -0.25 -0.578125q-0.15625 -0.25 -0.421875 -0.375q-0.25 -0.140625 -0.59375 -0.140625q-0.4375 0 -0.890625 0.328125q-0.4375 0.3125 -0.921875 0.90625l0 4.515625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.0625 -0.03125 0.15625 -0.046875q0.109375 -0.015625 0.265625 -0.015625q0.171875 0 0.265625 0.015625q0.109375 0.015625 0.15625 0.046875q0.0625 0.03125 0.078125 0.078125q0.03125 0.03125 0.03125 0.078125l0 0.859375q0.546875 -0.609375 1.078125 -0.890625q0.546875 -0.28125 1.109375 -0.28125q0.640625 0 1.078125 0.21875q0.4375 0.21875 0.703125 0.578125q0.28125 0.359375 0.390625 0.859375q0.125 0.484375 0.125 1.171875l0 3.9375zm7.6690063 0q0 0.046875 -0.03125 0.09375q-0.015625 0.046875 -0.078125 0.078125q-0.0625 0.015625 -0.171875 0.03125q-0.09375 0.015625 -0.234375 0.015625q-0.140625 0 -0.25 -0.015625q-0.09375 -0.015625 -0.15625 -0.03125q-0.0625 -0.03125 -0.09375 -0.078125q-0.03125 -0.046875 -0.03125 -0.09375l0 -0.859375q-0.515625 0.546875 -1.0625 0.859375q-0.546875 0.3125 -1.1875 0.3125q-0.71875 0 -1.21875 -0.28125q-0.5 -0.28125 -0.8125 -0.75q-0.3125 -0.46875 -0.453125 -1.09375q-0.140625 -0.640625 -0.140625 -1.34375q0 -0.828125 0.171875 -1.484375q0.1875 -0.671875 0.53125 -1.140625q0.359375 -0.484375 0.875 -0.734375q0.515625 -0.25 1.203125 -0.25q0.5625 0 1.03125 0.25q0.46875 0.234375 0.921875 0.71875l0 -3.75q0 -0.046875 0.015625 -0.09375q0.03125 -0.046875 0.109375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.109375 -0.015625 0.28125 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.09375l0 9.546875zm-1.1875 -4.53125q-0.484375 -0.59375 -0.9375 -0.90625q-0.4375 -0.3125 -0.921875 -0.3125q-0.453125 0 -0.765625 0.21875q-0.3125 0.203125 -0.515625 0.5625q-0.1875 0.34375 -0.28125 0.796875q-0.09375 0.4375 -0.09375 0.890625q0 0.484375 0.078125 0.953125q0.078125 0.46875 0.265625 0.828125q0.1875 0.359375 0.484375 0.578125q0.3125 0.21875 0.78125 0.21875q0.234375 0 0.453125 -0.0625q0.21875 -0.0625 0.4375 -0.203125q0.234375 -0.15625 0.484375 -0.390625q0.25 -0.25 0.53125 -0.59375l0 -2.578125zm9.294006 1.203125q0 0.84375 -0.1875 1.515625q-0.171875 0.671875 -0.53125 1.140625q-0.34375 0.46875 -0.875 0.734375q-0.515625 0.25 -1.1875 0.25q-0.296875 0 -0.546875 -0.0625q-0.234375 -0.0625 -0.46875 -0.171875q-0.234375 -0.125 -0.46875 -0.3125q-0.21875 -0.1875 -0.46875 -0.4375l0 3.21875q0 0.0625 -0.03125 0.09375q-0.03125 0.046875 -0.09375 0.078125q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.078125q-0.015625 -0.03125 -0.015625 -0.09375l0 -9.0q0 -0.0625 0.015625 -0.09375q0.03125 -0.046875 0.09375 -0.0625q0.0625 -0.03125 0.15625 -0.046875q0.109375 -0.015625 0.25 -0.015625q0.15625 0 0.25 0.015625q0.09375 0.015625 0.15625 0.046875q0.0625 0.015625 0.078125 0.0625q0.03125 0.03125 0.03125 0.09375l0 0.875q0.296875 -0.296875 0.5625 -0.515625q0.28125 -0.234375 0.546875 -0.375q0.28125 -0.15625 0.5625 -0.21875q0.296875 -0.078125 0.625 -0.078125q0.703125 0 1.1875 0.28125q0.5 0.265625 0.8125 0.734375q0.3125 0.46875 0.453125 1.09375q0.140625 0.625 0.140625 1.328125zm-1.234375 0.140625q0 -0.5 -0.078125 -0.953125q-0.078125 -0.46875 -0.265625 -0.828125q-0.171875 -0.359375 -0.484375 -0.5625q-0.3125 -0.21875 -0.765625 -0.21875q-0.234375 0 -0.453125 0.0625q-0.21875 0.0625 -0.453125 0.21875q-0.21875 0.140625 -0.46875 0.390625q-0.25 0.234375 -0.53125 0.578125l0 2.5625q0.484375 0.59375 0.921875 0.921875q0.4375 0.3125 0.90625 0.3125q0.453125 0 0.765625 -0.21875q0.328125 -0.21875 0.515625 -0.578125q0.203125 -0.359375 0.296875 -0.796875q0.09375 -0.4375 0.09375 -0.890625zm8.997131 -0.109375q0 0.78125 -0.203125 1.453125q-0.203125 0.65625 -0.625 1.140625q-0.40625 0.46875 -1.03125 0.75q-0.609375 0.265625 -1.421875 0.265625q-0.796875 0 -1.390625 -0.234375q-0.59375 -0.25 -0.984375 -0.6875q-0.390625 -0.453125 -0.59375 -1.09375q-0.1875 -0.65625 -0.1875 -1.46875q0 -0.78125 0.203125 -1.4375q0.203125 -0.671875 0.609375 -1.140625q0.421875 -0.484375 1.03125 -0.75q0.625 -0.265625 1.4375 -0.265625q0.796875 0 1.390625 0.234375q0.59375 0.234375 0.984375 0.6875q0.390625 0.453125 0.578125 1.09375q0.203125 0.640625 0.203125 1.453125zm-1.234375 0.078125q0 -0.53125 -0.109375 -0.984375q-0.09375 -0.46875 -0.3125 -0.8125q-0.21875 -0.359375 -0.609375 -0.5625q-0.375 -0.203125 -0.9375 -0.203125q-0.515625 0 -0.890625 0.1875q-0.375 0.1875 -0.625 0.53125q-0.234375 0.328125 -0.359375 0.796875q-0.125 0.46875 -0.125 1.015625q0 0.53125 0.09375 1.0q0.109375 0.46875 0.328125 0.8125q0.234375 0.34375 0.609375 0.546875q0.375 0.203125 0.9375 0.203125q0.515625 0 0.890625 -0.1875q0.390625 -0.1875 0.625 -0.515625q0.25 -0.34375 0.359375 -0.796875q0.125 -0.46875 0.125 -1.03125zm4.166382 3.21875q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 6.453125zm0.125 -8.625q0 0.421875 -0.15625 0.578125q-0.15625 0.140625 -0.578125 0.140625q-0.40625 0 -0.5625 -0.140625q-0.15625 -0.15625 -0.15625 -0.5625q0 -0.421875 0.15625 -0.5625q0.15625 -0.15625 0.578125 -0.15625q0.421875 0 0.5625 0.15625q0.15625 0.140625 0.15625 0.546875zm7.5978394 8.625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.171875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.03125 -0.046875 -0.03125 -0.09375l0 -3.78125q0 -0.546875 -0.09375 -0.875q-0.078125 -0.34375 -0.25 -0.578125q-0.15625 -0.25 -0.421875 -0.375q-0.25 -0.140625 -0.59375 -0.140625q-0.4375 0 -0.890625 0.328125q-0.4375 0.3125 -0.921875 0.90625l0 4.515625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.0625 -0.03125 0.15625 -0.046875q0.109375 -0.015625 0.265625 -0.015625q0.171875 0 0.265625 0.015625q0.109375 0.015625 0.15625 0.046875q0.0625 0.03125 0.078125 0.078125q0.03125 0.03125 0.03125 0.078125l0 0.859375q0.546875 -0.609375 1.078125 -0.890625q0.546875 -0.28125 1.109375 -0.28125q0.640625 0 1.078125 0.21875q0.4375 0.21875 0.703125 0.578125q0.28125 0.359375 0.390625 0.859375q0.125 0.484375 0.125 1.171875l0 3.9375zm5.4971313 -0.484375q0 0.21875 -0.03125 0.34375q-0.015625 0.109375 -0.078125 0.171875q-0.0625 0.0625 -0.171875 0.109375q-0.109375 0.046875 -0.265625 0.078125q-0.140625 0.03125 -0.3125 0.046875q-0.15625 0.03125 -0.328125 0.03125q-0.5 0 -0.859375 -0.125q-0.34375 -0.140625 -0.578125 -0.40625q-0.234375 -0.28125 -0.34375 -0.6875q-0.09375 -0.40625 -0.09375 -0.96875l0 -3.765625l-0.90625 0q-0.109375 0 -0.171875 -0.109375q-0.0625 -0.109375 -0.0625 -0.375q0 -0.140625 0.015625 -0.234375q0.015625 -0.09375 0.046875 -0.140625q0.03125 -0.0625 0.078125 -0.09375q0.046875 -0.03125 0.109375 -0.03125l0.890625 0l0 -1.53125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.28125 -0.015625q0.1875 0 0.296875 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 1.53125l1.640625 0q0.0625 0 0.09375 0.03125q0.046875 0.03125 0.078125 0.09375q0.046875 0.046875 0.046875 0.140625q0.015625 0.09375 0.015625 0.234375q0 0.265625 -0.0625 0.375q-0.0625 0.109375 -0.171875 0.109375l-1.640625 0l0 3.59375q0 0.671875 0.1875 1.015625q0.203125 0.328125 0.703125 0.328125q0.171875 0 0.296875 -0.03125q0.125 -0.03125 0.21875 -0.0625q0.109375 -0.03125 0.171875 -0.0625q0.078125 -0.046875 0.140625 -0.046875q0.03125 0 0.0625 0.03125q0.03125 0.015625 0.046875 0.0625q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125zm23.784485 -0.5q0 0.125 -0.015625 0.21875q0 0.078125 -0.015625 0.140625q-0.015625 0.0625 -0.046875 0.109375q-0.015625 0.046875 -0.109375 0.140625q-0.078125 0.078125 -0.296875 0.21875q-0.21875 0.125 -0.484375 0.234375q-0.265625 0.09375 -0.59375 0.15625q-0.3125 0.078125 -0.640625 0.078125q-0.703125 0 -1.234375 -0.234375q-0.53125 -0.234375 -0.90625 -0.671875q-0.359375 -0.4375 -0.546875 -1.078125q-0.1875 -0.640625 -0.1875 -1.484375q0 -0.9375 0.234375 -1.625q0.234375 -0.6875 0.640625 -1.125q0.40625 -0.4375 0.953125 -0.640625q0.546875 -0.21875 1.1875 -0.21875q0.296875 0 0.578125 0.0625q0.296875 0.0625 0.546875 0.15625q0.25 0.078125 0.4375 0.203125q0.1875 0.125 0.265625 0.21875q0.09375 0.078125 0.125 0.125q0.03125 0.046875 0.046875 0.125q0.03125 0.0625 0.03125 0.15625q0.015625 0.078125 0.015625 0.203125q0 0.28125 -0.078125 0.390625q-0.0625 0.109375 -0.15625 0.109375q-0.09375 0 -0.234375 -0.109375q-0.140625 -0.125 -0.359375 -0.265625q-0.21875 -0.140625 -0.53125 -0.25q-0.296875 -0.125 -0.703125 -0.125q-0.859375 0 -1.3125 0.65625q-0.453125 0.65625 -0.453125 1.890625q0 0.625 0.109375 1.09375q0.125 0.46875 0.34375 0.796875q0.234375 0.3125 0.5625 0.46875q0.34375 0.140625 0.78125 0.140625q0.40625 0 0.703125 -0.125q0.3125 -0.125 0.53125 -0.28125q0.234375 -0.15625 0.390625 -0.28125q0.15625 -0.125 0.234375 -0.125q0.046875 0 0.078125 0.03125q0.046875 0.03125 0.0625 0.09375q0.03125 0.0625 0.03125 0.171875q0.015625 0.109375 0.015625 0.25zm6.4317627 0.984375q0 0.09375 -0.0625 0.140625q-0.0625 0.03125 -0.171875 0.046875q-0.09375 0.03125 -0.28125 0.03125q-0.1875 0 -0.296875 -0.03125q-0.109375 -0.015625 -0.15625 -0.046875q-0.046875 -0.046875 -0.046875 -0.140625l0 -0.640625q-0.421875 0.453125 -0.953125 0.703125q-0.515625 0.25 -1.09375 0.25q-0.5 0 -0.921875 -0.140625q-0.40625 -0.125 -0.703125 -0.375q-0.28125 -0.25 -0.453125 -0.609375q-0.15625 -0.375 -0.15625 -0.84375q0 -0.546875 0.21875 -0.9375q0.234375 -0.40625 0.640625 -0.671875q0.421875 -0.265625 1.015625 -0.390625q0.609375 -0.140625 1.359375 -0.140625l0.875 0l0 -0.5q0 -0.375 -0.078125 -0.65625q-0.078125 -0.28125 -0.25 -0.46875q-0.171875 -0.203125 -0.453125 -0.296875q-0.28125 -0.09375 -0.6875 -0.09375q-0.4375 0 -0.78125 0.109375q-0.34375 0.09375 -0.609375 0.21875q-0.265625 0.125 -0.4375 0.234375q-0.171875 0.109375 -0.265625 0.109375q-0.046875 0 -0.09375 -0.03125q-0.046875 -0.03125 -0.078125 -0.078125q-0.03125 -0.0625 -0.046875 -0.15625q-0.015625 -0.09375 -0.015625 -0.203125q0 -0.171875 0.015625 -0.265625q0.03125 -0.109375 0.125 -0.203125q0.109375 -0.09375 0.34375 -0.21875q0.234375 -0.125 0.53125 -0.234375q0.3125 -0.109375 0.671875 -0.171875q0.375 -0.0625 0.75 -0.0625q0.6875 0 1.171875 0.15625q0.5 0.15625 0.796875 0.46875q0.296875 0.296875 0.4375 0.75q0.140625 0.453125 0.140625 1.046875l0 4.34375zm-1.1875 -2.9375l-1.0 0q-0.484375 0 -0.84375 0.078125q-0.359375 0.078125 -0.59375 0.25q-0.234375 0.15625 -0.34375 0.390625q-0.109375 0.21875 -0.109375 0.515625q0 0.5 0.3125 0.796875q0.3125 0.296875 0.890625 0.296875q0.46875 0 0.859375 -0.234375q0.40625 -0.25 0.828125 -0.734375l0 -1.359375zm4.536072 2.9375q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -9.5625q0 -0.0625 0.015625 -0.109375q0.03125 -0.046875 0.09375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.109375l0 9.5625zm3.3634644 0q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -9.5625q0 -0.0625 0.015625 -0.109375q0.03125 -0.046875 0.09375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.109375l0 9.5625zm7.6760254 -3.5q0 0.265625 -0.140625 0.390625q-0.140625 0.125 -0.3125 0.125l-4.234375 0q0 0.53125 0.109375 0.96875q0.109375 0.421875 0.359375 0.734375q0.25 0.296875 0.640625 0.46875q0.40625 0.15625 0.984375 0.15625q0.46875 0 0.828125 -0.0625q0.359375 -0.078125 0.609375 -0.171875q0.265625 -0.09375 0.4375 -0.171875q0.171875 -0.078125 0.25 -0.078125q0.046875 0 0.078125 0.03125q0.046875 0.015625 0.0625 0.078125q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125q0 0.09375 0 0.171875q0 0.0625 -0.015625 0.125q-0.015625 0.046875 -0.046875 0.09375q-0.015625 0.046875 -0.0625 0.09375q-0.03125 0.03125 -0.234375 0.125q-0.1875 0.078125 -0.5 0.171875q-0.296875 0.078125 -0.703125 0.140625q-0.40625 0.078125 -0.859375 0.078125q-0.796875 0 -1.40625 -0.21875q-0.59375 -0.234375 -1.0 -0.671875q-0.40625 -0.4375 -0.609375 -1.09375q-0.203125 -0.65625 -0.203125 -1.53125q0 -0.828125 0.203125 -1.484375q0.21875 -0.671875 0.625 -1.125q0.40625 -0.46875 0.96875 -0.703125q0.578125 -0.25 1.28125 -0.25q0.765625 0 1.296875 0.25q0.53125 0.234375 0.875 0.65625q0.34375 0.40625 0.5 0.96875q0.171875 0.546875 0.171875 1.171875l0 0.21875zm-1.1875 -0.359375q0.015625 -0.921875 -0.421875 -1.453125q-0.421875 -0.53125 -1.28125 -0.53125q-0.4375 0 -0.765625 0.171875q-0.328125 0.15625 -0.546875 0.4375q-0.21875 0.265625 -0.34375 0.625q-0.125 0.359375 -0.140625 0.75l3.5 0zm8.495422 3.859375q0 0.046875 -0.03125 0.09375q-0.015625 0.046875 -0.078125 0.078125q-0.0625 0.015625 -0.171875 0.03125q-0.09375 0.015625 -0.234375 0.015625q-0.140625 0 -0.25 -0.015625q-0.09375 -0.015625 -0.15625 -0.03125q-0.0625 -0.03125 -0.09375 -0.078125q-0.03125 -0.046875 -0.03125 -0.09375l0 -0.859375q-0.515625 0.546875 -1.0625 0.859375q-0.546875 0.3125 -1.1875 0.3125q-0.71875 0 -1.21875 -0.28125q-0.5 -0.28125 -0.8125 -0.75q-0.3125 -0.46875 -0.453125 -1.09375q-0.140625 -0.640625 -0.140625 -1.34375q0 -0.828125 0.171875 -1.484375q0.1875 -0.671875 0.53125 -1.140625q0.359375 -0.484375 0.875 -0.734375q0.515625 -0.25 1.203125 -0.25q0.5625 0 1.03125 0.25q0.46875 0.234375 0.921875 0.71875l0 -3.75q0 -0.046875 0.015625 -0.09375q0.03125 -0.046875 0.109375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.109375 -0.015625 0.28125 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.09375l0 9.546875zm-1.1875 -4.53125q-0.484375 -0.59375 -0.9375 -0.90625q-0.4375 -0.3125 -0.921875 -0.3125q-0.453125 0 -0.765625 0.21875q-0.3125 0.203125 -0.515625 0.5625q-0.1875 0.34375 -0.28125 0.796875q-0.09375 0.4375 -0.09375 0.890625q0 0.484375 0.078125 0.953125q0.078125 0.46875 0.265625 0.828125q0.1875 0.359375 0.484375 0.578125q0.3125 0.21875 0.78125 0.21875q0.234375 0 0.453125 -0.0625q0.21875 -0.0625 0.4375 -0.203125q0.234375 -0.15625 0.484375 -0.390625q0.25 -0.25 0.53125 -0.59375l0 -2.578125zm22.247314 -3.125l0 0.90625q0 0.1875 -0.046875 0.3125q-0.03125 0.109375 -0.125 0.171875q-0.078125 0.0625 -0.21875 0.09375q-0.125 0.015625 -0.296875 0.015625q-0.1875 0 -0.3125 -0.015625q-0.125 -0.03125 -0.21875 -0.09375q-0.078125 -0.0625 -0.125 -0.171875q-0.03125 -0.125 -0.03125 -0.3125q0 -0.21875 0.015625 -0.390625q0.03125 -0.1875 0.078125 -0.359375q0.046875 -0.171875 0.125 -0.328125q0.09375 -0.171875 0.21875 -0.34375l0.96875 -1.46875q0.046875 -0.0625 0.078125 -0.09375q0.046875 -0.03125 0.109375 -0.046875q0.078125 -0.03125 0.15625 -0.046875q0.09375 -0.015625 0.234375 -0.015625q0.125 0 0.203125 0.015625q0.078125 0 0.109375 0.03125q0.046875 0.015625 0.046875 0.0625q0 0.046875 -0.015625 0.109375l-0.953125 1.96875zm7.0006714 6.671875q0 0.125 -0.015625 0.21875q0 0.078125 -0.015625 0.140625q-0.015625 0.0625 -0.046875 0.109375q-0.015625 0.046875 -0.109375 0.140625q-0.078125 0.078125 -0.296875 0.21875q-0.21875 0.125 -0.484375 0.234375q-0.265625 0.09375 -0.59375 0.15625q-0.3125 0.078125 -0.640625 0.078125q-0.703125 0 -1.234375 -0.234375q-0.53125 -0.234375 -0.90625 -0.671875q-0.359375 -0.4375 -0.546875 -1.078125q-0.1875 -0.640625 -0.1875 -1.484375q0 -0.9375 0.234375 -1.625q0.234375 -0.6875 0.640625 -1.125q0.40625 -0.4375 0.953125 -0.640625q0.546875 -0.21875 1.1875 -0.21875q0.296875 0 0.578125 0.0625q0.296875 0.0625 0.546875 0.15625q0.25 0.078125 0.4375 0.203125q0.1875 0.125 0.265625 0.21875q0.09375 0.078125 0.125 0.125q0.03125 0.046875 0.046875 0.125q0.03125 0.0625 0.03125 0.15625q0.015625 0.078125 0.015625 0.203125q0 0.28125 -0.078125 0.390625q-0.0625 0.109375 -0.15625 0.109375q-0.09375 0 -0.234375 -0.109375q-0.140625 -0.125 -0.359375 -0.265625q-0.21875 -0.140625 -0.53125 -0.25q-0.296875 -0.125 -0.703125 -0.125q-0.859375 0 -1.3125 0.65625q-0.453125 0.65625 -0.453125 1.890625q0 0.625 0.109375 1.09375q0.125 0.46875 0.34375 0.796875q0.234375 0.3125 0.5625 0.46875q0.34375 0.140625 0.78125 0.140625q0.40625 0 0.703125 -0.125q0.3125 -0.125 0.53125 -0.28125q0.234375 -0.15625 0.390625 -0.28125q0.15625 -0.125 0.234375 -0.125q0.046875 0 0.078125 0.03125q0.046875 0.03125 0.0625 0.09375q0.03125 0.0625 0.03125 0.171875q0.015625 0.109375 0.015625 0.25zm7.0724487 -2.515625q0 0.265625 -0.140625 0.390625q-0.140625 0.125 -0.3125 0.125l-4.234375 0q0 0.53125 0.109375 0.96875q0.109375 0.421875 0.359375 0.734375q0.25 0.296875 0.640625 0.46875q0.40625 0.15625 0.984375 0.15625q0.46875 0 0.828125 -0.0625q0.359375 -0.078125 0.609375 -0.171875q0.265625 -0.09375 0.4375 -0.171875q0.171875 -0.078125 0.25 -0.078125q0.046875 0 0.078125 0.03125q0.046875 0.015625 0.0625 0.078125q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125q0 0.09375 0 0.171875q0 0.0625 -0.015625 0.125q-0.015625 0.046875 -0.046875 0.09375q-0.015625 0.046875 -0.0625 0.09375q-0.03125 0.03125 -0.234375 0.125q-0.1875 0.078125 -0.5 0.171875q-0.296875 0.078125 -0.703125 0.140625q-0.40625 0.078125 -0.859375 0.078125q-0.796875 0 -1.40625 -0.21875q-0.59375 -0.234375 -1.0 -0.671875q-0.40625 -0.4375 -0.609375 -1.09375q-0.203125 -0.65625 -0.203125 -1.53125q0 -0.828125 0.203125 -1.484375q0.21875 -0.671875 0.625 -1.125q0.40625 -0.46875 0.96875 -0.703125q0.578125 -0.25 1.28125 -0.25q0.765625 0 1.296875 0.25q0.53125 0.234375 0.875 0.65625q0.34375 0.40625 0.5 0.96875q0.171875 0.546875 0.171875 1.171875l0 0.21875zm-1.1875 -0.359375q0.015625 -0.921875 -0.421875 -1.453125q-0.421875 -0.53125 -1.28125 -0.53125q-0.4375 0 -0.765625 0.171875q-0.328125 0.15625 -0.546875 0.4375q-0.21875 0.265625 -0.34375 0.625q-0.125 0.359375 -0.140625 0.75l3.5 0zm8.901672 0.53125q0 0.84375 -0.1875 1.515625q-0.171875 0.671875 -0.53125 1.140625q-0.34375 0.46875 -0.875 0.734375q-0.515625 0.25 -1.1875 0.25q-0.296875 0 -0.546875 -0.0625q-0.234375 -0.0625 -0.46875 -0.171875q-0.234375 -0.125 -0.46875 -0.3125q-0.21875 -0.1875 -0.46875 -0.4375l0 3.21875q0 0.0625 -0.03125 0.09375q-0.03125 0.046875 -0.09375 0.078125q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.078125q-0.015625 -0.03125 -0.015625 -0.09375l0 -9.0q0 -0.0625 0.015625 -0.09375q0.03125 -0.046875 0.09375 -0.0625q0.0625 -0.03125 0.15625 -0.046875q0.109375 -0.015625 0.25 -0.015625q0.15625 0 0.25 0.015625q0.09375 0.015625 0.15625 0.046875q0.0625 0.015625 0.078125 0.0625q0.03125 0.03125 0.03125 0.09375l0 0.875q0.296875 -0.296875 0.5625 -0.515625q0.28125 -0.234375 0.546875 -0.375q0.28125 -0.15625 0.5625 -0.21875q0.296875 -0.078125 0.625 -0.078125q0.703125 0 1.1875 0.28125q0.5 0.265625 0.8125 0.734375q0.3125 0.46875 0.453125 1.09375q0.140625 0.625 0.140625 1.328125zm-1.234375 0.140625q0 -0.5 -0.078125 -0.953125q-0.078125 -0.46875 -0.265625 -0.828125q-0.171875 -0.359375 -0.484375 -0.5625q-0.3125 -0.21875 -0.765625 -0.21875q-0.234375 0 -0.453125 0.0625q-0.21875 0.0625 -0.453125 0.21875q-0.21875 0.140625 -0.46875 0.390625q-0.25 0.234375 -0.53125 0.578125l0 2.5625q0.484375 0.59375 0.921875 0.921875q0.4375 0.3125 0.90625 0.3125q0.453125 0 0.765625 -0.21875q0.328125 -0.21875 0.515625 -0.578125q0.203125 -0.359375 0.296875 -0.796875q0.09375 -0.4375 0.09375 -0.890625zm8.559631 3.1875q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.171875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.03125 -0.046875 -0.03125 -0.09375l0 -3.78125q0 -0.546875 -0.09375 -0.875q-0.078125 -0.34375 -0.25 -0.578125q-0.15625 -0.25 -0.421875 -0.375q-0.25 -0.140625 -0.59375 -0.140625q-0.4375 0 -0.890625 0.328125q-0.4375 0.3125 -0.921875 0.90625l0 4.515625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -9.5625q0 -0.0625 0.015625 -0.109375q0.03125 -0.046875 0.09375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.109375l0 3.859375q0.5 -0.546875 1.015625 -0.796875q0.515625 -0.265625 1.046875 -0.265625q0.640625 0 1.078125 0.21875q0.4375 0.21875 0.703125 0.578125q0.28125 0.359375 0.390625 0.859375q0.125 0.484375 0.125 1.1875l0 3.921875zm11.715881 0q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.03125 -0.046875 -0.03125 -0.09375l0 -3.921875q0 -0.40625 -0.078125 -0.734375q-0.0625 -0.34375 -0.21875 -0.578125q-0.15625 -0.25 -0.40625 -0.375q-0.234375 -0.140625 -0.5625 -0.140625q-0.40625 0 -0.828125 0.328125q-0.40625 0.3125 -0.890625 0.90625l0 4.515625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.109375 0.0625q-0.0625 0.03125 -0.171875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -3.921875q0 -0.40625 -0.078125 -0.734375q-0.078125 -0.34375 -0.234375 -0.578125q-0.15625 -0.25 -0.40625 -0.375q-0.234375 -0.140625 -0.5625 -0.140625q-0.40625 0 -0.828125 0.328125q-0.40625 0.3125 -0.890625 0.90625l0 4.515625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.0625 -0.03125 0.15625 -0.046875q0.109375 -0.015625 0.265625 -0.015625q0.171875 0 0.265625 0.015625q0.109375 0.015625 0.15625 0.046875q0.0625 0.03125 0.078125 0.078125q0.03125 0.03125 0.03125 0.078125l0 0.859375q0.546875 -0.609375 1.0625 -0.890625q0.515625 -0.28125 1.03125 -0.28125q0.40625 0 0.71875 0.09375q0.3125 0.09375 0.5625 0.265625q0.25 0.15625 0.421875 0.390625q0.171875 0.234375 0.28125 0.515625q0.328125 -0.34375 0.609375 -0.578125q0.296875 -0.25 0.5625 -0.40625q0.265625 -0.15625 0.515625 -0.21875q0.265625 -0.0625 0.515625 -0.0625q0.625 0 1.046875 0.21875q0.421875 0.21875 0.671875 0.578125q0.265625 0.359375 0.375 0.859375q0.125 0.484375 0.125 1.03125l0 4.078125zm7.6453247 -3.5q0 0.265625 -0.140625 0.390625q-0.140625 0.125 -0.3125 0.125l-4.234375 0q0 0.53125 0.109375 0.96875q0.109375 0.421875 0.359375 0.734375q0.25 0.296875 0.640625 0.46875q0.40625 0.15625 0.984375 0.15625q0.46875 0 0.828125 -0.0625q0.359375 -0.078125 0.609375 -0.171875q0.265625 -0.09375 0.4375 -0.171875q0.171875 -0.078125 0.25 -0.078125q0.046875 0 0.078125 0.03125q0.046875 0.015625 0.0625 0.078125q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125q0 0.09375 0 0.171875q0 0.0625 -0.015625 0.125q-0.015625 0.046875 -0.046875 0.09375q-0.015625 0.046875 -0.0625 0.09375q-0.03125 0.03125 -0.234375 0.125q-0.1875 0.078125 -0.5 0.171875q-0.296875 0.078125 -0.703125 0.140625q-0.40625 0.078125 -0.859375 0.078125q-0.796875 0 -1.40625 -0.21875q-0.59375 -0.234375 -1.0 -0.671875q-0.40625 -0.4375 -0.609375 -1.09375q-0.203125 -0.65625 -0.203125 -1.53125q0 -0.828125 0.203125 -1.484375q0.21875 -0.671875 0.625 -1.125q0.40625 -0.46875 0.96875 -0.703125q0.578125 -0.25 1.28125 -0.25q0.765625 0 1.296875 0.25q0.53125 0.234375 0.875 0.65625q0.34375 0.40625 0.5 0.96875q0.171875 0.546875 0.171875 1.171875l0 0.21875zm-1.1875 -0.359375q0.015625 -0.921875 -0.421875 -1.453125q-0.421875 -0.53125 -1.28125 -0.53125q-0.4375 0 -0.765625 0.171875q-0.328125 0.15625 -0.546875 0.4375q-0.21875 0.265625 -0.34375 0.625q-0.125 0.359375 -0.140625 0.75l3.5 0zm6.3236084 3.375q0 0.21875 -0.03125 0.34375q-0.015625 0.109375 -0.078125 0.171875q-0.0625 0.0625 -0.171875 0.109375q-0.109375 0.046875 -0.265625 0.078125q-0.140625 0.03125 -0.3125 0.046875q-0.15625 0.03125 -0.328125 0.03125q-0.5 0 -0.859375 -0.125q-0.34375 -0.140625 -0.578125 -0.40625q-0.234375 -0.28125 -0.34375 -0.6875q-0.09375 -0.40625 -0.09375 -0.96875l0 -3.765625l-0.90625 0q-0.109375 0 -0.171875 -0.109375q-0.0625 -0.109375 -0.0625 -0.375q0 -0.140625 0.015625 -0.234375q0.015625 -0.09375 0.046875 -0.140625q0.03125 -0.0625 0.078125 -0.09375q0.046875 -0.03125 0.109375 -0.03125l0.890625 0l0 -1.53125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.28125 -0.015625q0.1875 0 0.296875 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 1.53125l1.640625 0q0.0625 0 0.09375 0.03125q0.046875 0.03125 0.078125 0.09375q0.046875 0.046875 0.046875 0.140625q0.015625 0.09375 0.015625 0.234375q0 0.265625 -0.0625 0.375q-0.0625 0.109375 -0.171875 0.109375l-1.640625 0l0 3.59375q0 0.671875 0.1875 1.015625q0.203125 0.328125 0.703125 0.328125q0.171875 0 0.296875 -0.03125q0.125 -0.03125 0.21875 -0.0625q0.109375 -0.03125 0.171875 -0.0625q0.078125 -0.046875 0.140625 -0.046875q0.03125 0 0.0625 0.03125q0.03125 0.015625 0.046875 0.0625q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125zm5.3311768 -5.546875q0 0.15625 -0.015625 0.265625q0 0.109375 -0.03125 0.171875q-0.015625 0.0625 -0.046875 0.09375q-0.03125 0.03125 -0.078125 0.03125q-0.0625 0 -0.15625 -0.03125q-0.078125 -0.03125 -0.1875 -0.0625q-0.09375 -0.03125 -0.21875 -0.0625q-0.125 -0.03125 -0.28125 -0.03125q-0.171875 0 -0.34375 0.078125q-0.171875 0.0625 -0.375 0.234375q-0.1875 0.15625 -0.390625 0.4375q-0.203125 0.265625 -0.453125 0.65625l0 4.25q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.0625 -0.03125 0.15625 -0.046875q0.109375 -0.015625 0.265625 -0.015625q0.171875 0 0.265625 0.015625q0.109375 0.015625 0.15625 0.046875q0.0625 0.03125 0.078125 0.078125q0.03125 0.03125 0.03125 0.078125l0 0.9375q0.265625 -0.375 0.5 -0.625q0.234375 -0.25 0.4375 -0.375q0.21875 -0.140625 0.421875 -0.1875q0.203125 -0.0625 0.40625 -0.0625q0.09375 0 0.203125 0.015625q0.125 0 0.25 0.03125q0.140625 0.03125 0.234375 0.0625q0.109375 0.03125 0.140625 0.078125q0.046875 0.03125 0.0625 0.0625q0.015625 0.03125 0.03125 0.078125q0.015625 0.046875 0.015625 0.15625q0 0.09375 0 0.25zm2.5314941 6.03125q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 6.453125zm0.125 -8.625q0 0.421875 -0.15625 0.578125q-0.15625 0.140625 -0.578125 0.140625q-0.40625 0 -0.5625 -0.140625q-0.15625 -0.15625 -0.15625 -0.5625q0 -0.421875 0.15625 -0.5625q0.15625 -0.15625 0.578125 -0.15625q0.421875 0 0.5625 0.15625q0.15625 0.140625 0.15625 0.546875zm6.6760254 7.640625q0 0.125 -0.015625 0.21875q0 0.078125 -0.015625 0.140625q-0.015625 0.0625 -0.046875 0.109375q-0.015625 0.046875 -0.109375 0.140625q-0.078125 0.078125 -0.296875 0.21875q-0.21875 0.125 -0.484375 0.234375q-0.265625 0.09375 -0.59375 0.15625q-0.3125 0.078125 -0.640625 0.078125q-0.703125 0 -1.234375 -0.234375q-0.53125 -0.234375 -0.90625 -0.671875q-0.359375 -0.4375 -0.546875 -1.078125q-0.1875 -0.640625 -0.1875 -1.484375q0 -0.9375 0.234375 -1.625q0.234375 -0.6875 0.640625 -1.125q0.40625 -0.4375 0.953125 -0.640625q0.546875 -0.21875 1.1875 -0.21875q0.296875 0 0.578125 0.0625q0.296875 0.0625 0.546875 0.15625q0.25 0.078125 0.4375 0.203125q0.1875 0.125 0.265625 0.21875q0.09375 0.078125 0.125 0.125q0.03125 0.046875 0.046875 0.125q0.03125 0.0625 0.03125 0.15625q0.015625 0.078125 0.015625 0.203125q0 0.28125 -0.078125 0.390625q-0.0625 0.109375 -0.15625 0.109375q-0.09375 0 -0.234375 -0.109375q-0.140625 -0.125 -0.359375 -0.265625q-0.21875 -0.140625 -0.53125 -0.25q-0.296875 -0.125 -0.703125 -0.125q-0.859375 0 -1.3125 0.65625q-0.453125 0.65625 -0.453125 1.890625q0 0.625 0.109375 1.09375q0.125 0.46875 0.34375 0.796875q0.234375 0.3125 0.5625 0.46875q0.34375 0.140625 0.78125 0.140625q0.40625 0 0.703125 -0.125q0.3125 -0.125 0.53125 -0.28125q0.234375 -0.15625 0.390625 -0.28125q0.15625 -0.125 0.234375 -0.125q0.046875 0 0.078125 0.03125q0.046875 0.03125 0.0625 0.09375q0.03125 0.0625 0.03125 0.171875q0.015625 0.109375 0.015625 0.25zm5.6192627 -0.78125q0 0.5 -0.1875 0.890625q-0.1875 0.375 -0.53125 0.640625q-0.328125 0.265625 -0.796875 0.40625q-0.453125 0.140625 -1.015625 0.140625q-0.34375 0 -0.65625 -0.0625q-0.3125 -0.046875 -0.5625 -0.125q-0.234375 -0.09375 -0.40625 -0.171875q-0.171875 -0.09375 -0.25 -0.15625q-0.078125 -0.078125 -0.125 -0.203125q-0.03125 -0.140625 -0.03125 -0.359375q0 -0.140625 0.015625 -0.234375q0.015625 -0.09375 0.03125 -0.140625q0.03125 -0.0625 0.0625 -0.078125q0.046875 -0.03125 0.09375 -0.03125q0.078125 0 0.234375 0.09375q0.15625 0.09375 0.375 0.21875q0.234375 0.109375 0.53125 0.203125q0.3125 0.09375 0.71875 0.09375q0.296875 0 0.53125 -0.0625q0.25 -0.0625 0.421875 -0.1875q0.1875 -0.125 0.28125 -0.3125q0.09375 -0.203125 0.09375 -0.46875q0 -0.265625 -0.140625 -0.453125q-0.140625 -0.1875 -0.375 -0.328125q-0.21875 -0.140625 -0.515625 -0.25q-0.28125 -0.109375 -0.59375 -0.234375q-0.296875 -0.125 -0.59375 -0.28125q-0.28125 -0.15625 -0.515625 -0.375q-0.21875 -0.21875 -0.359375 -0.515625q-0.140625 -0.3125 -0.140625 -0.75q0 -0.375 0.140625 -0.71875q0.15625 -0.359375 0.453125 -0.609375q0.296875 -0.265625 0.734375 -0.421875q0.4375 -0.15625 1.015625 -0.15625q0.265625 0 0.515625 0.046875q0.265625 0.03125 0.46875 0.09375q0.203125 0.0625 0.34375 0.140625q0.15625 0.078125 0.234375 0.140625q0.078125 0.046875 0.09375 0.09375q0.03125 0.046875 0.03125 0.109375q0.015625 0.046875 0.03125 0.125q0.015625 0.078125 0.015625 0.1875q0 0.125 -0.015625 0.21875q-0.015625 0.078125 -0.046875 0.140625q-0.015625 0.0625 -0.046875 0.09375q-0.03125 0.015625 -0.078125 0.015625q-0.0625 0 -0.1875 -0.078125q-0.125 -0.078125 -0.328125 -0.171875q-0.1875 -0.09375 -0.453125 -0.171875q-0.25 -0.078125 -0.59375 -0.078125q-0.296875 0 -0.53125 0.078125q-0.21875 0.0625 -0.375 0.1875q-0.140625 0.125 -0.21875 0.296875q-0.0625 0.171875 -0.0625 0.375q0 0.28125 0.140625 0.46875q0.140625 0.1875 0.359375 0.328125q0.234375 0.140625 0.53125 0.265625q0.296875 0.109375 0.59375 0.234375q0.3125 0.125 0.609375 0.28125q0.296875 0.140625 0.515625 0.359375q0.234375 0.203125 0.375 0.515625q0.140625 0.296875 0.140625 0.703125zm3.2478638 -7.5q0 0.234375 -0.03125 0.421875q-0.015625 0.171875 -0.0625 0.34375q-0.046875 0.15625 -0.140625 0.328125q-0.078125 0.15625 -0.203125 0.328125l-0.96875 1.46875q-0.046875 0.0625 -0.09375 0.109375q-0.046875 0.03125 -0.109375 0.0625q-0.0625 0.015625 -0.15625 0.03125q-0.09375 0.015625 -0.21875 0.015625q-0.125 0 -0.21875 -0.015625q-0.078125 -0.015625 -0.109375 -0.03125q-0.03125 -0.03125 -0.046875 -0.0625q0 -0.046875 0.03125 -0.125l0.953125 -1.953125l0 -0.921875q0 -0.1875 0.03125 -0.296875q0.046875 -0.109375 0.125 -0.171875q0.09375 -0.0625 0.21875 -0.078125q0.140625 -0.03125 0.3125 -0.03125q0.1875 0 0.3125 0.03125q0.125 0.015625 0.203125 0.078125q0.09375 0.0625 0.125 0.171875q0.046875 0.109375 0.046875 0.296875zm3.6256714 8.65625q0 0.515625 -0.171875 0.6875q-0.171875 0.15625 -0.609375 0.15625q-0.4375 0 -0.609375 -0.15625q-0.15625 -0.171875 -0.15625 -0.671875q0 -0.5 0.171875 -0.671875q0.171875 -0.171875 0.609375 -0.171875q0.4375 0 0.59375 0.171875q0.171875 0.15625 0.171875 0.65625zm25.700073 -7.953125q0 0.140625 -0.015625 0.25q-0.015625 0.09375 -0.046875 0.15625q-0.03125 0.0625 -0.078125 0.09375q-0.046875 0.015625 -0.09375 0.015625l-2.609375 0l0 8.03125q0 0.0625 -0.03125 0.109375q-0.03125 0.03125 -0.109375 0.0625q-0.0625 0.015625 -0.1875 0.03125q-0.109375 0.03125 -0.28125 0.03125q-0.171875 0 -0.296875 -0.03125q-0.125 -0.015625 -0.203125 -0.03125q-0.0625 -0.03125 -0.09375 -0.0625q-0.03125 -0.046875 -0.03125 -0.109375l0 -8.03125l-2.609375 0q-0.046875 0 -0.09375 -0.015625q-0.046875 -0.03125 -0.078125 -0.09375q-0.03125 -0.0625 -0.046875 -0.15625q-0.015625 -0.109375 -0.015625 -0.25q0 -0.125 0.015625 -0.234375q0.015625 -0.109375 0.046875 -0.171875q0.03125 -0.0625 0.078125 -0.09375q0.046875 -0.03125 0.09375 -0.03125l6.453125 0q0.046875 0 0.09375 0.03125q0.046875 0.03125 0.078125 0.09375q0.03125 0.0625 0.046875 0.171875q0.015625 0.109375 0.015625 0.234375zm6.751404 8.5625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.171875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.03125 -0.046875 -0.03125 -0.09375l0 -3.78125q0 -0.546875 -0.09375 -0.875q-0.078125 -0.34375 -0.25 -0.578125q-0.15625 -0.25 -0.421875 -0.375q-0.25 -0.140625 -0.59375 -0.140625q-0.4375 0 -0.890625 0.328125q-0.4375 0.3125 -0.921875 0.90625l0 4.515625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -9.5625q0 -0.0625 0.015625 -0.109375q0.03125 -0.046875 0.09375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.109375l0 3.859375q0.5 -0.546875 1.015625 -0.796875q0.515625 -0.265625 1.046875 -0.265625q0.640625 0 1.078125 0.21875q0.4375 0.21875 0.703125 0.578125q0.28125 0.359375 0.390625 0.859375q0.125 0.484375 0.125 1.1875l0 3.921875zm3.3408813 0q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 6.453125zm0.125 -8.625q0 0.421875 -0.15625 0.578125q-0.15625 0.140625 -0.578125 0.140625q-0.40625 0 -0.5625 -0.140625q-0.15625 -0.15625 -0.15625 -0.5625q0 -0.421875 0.15625 -0.5625q0.15625 -0.15625 0.578125 -0.15625q0.421875 0 0.5625 0.15625q0.15625 0.140625 0.15625 0.546875zm6.0979004 6.859375q0 0.5 -0.1875 0.890625q-0.1875 0.375 -0.53125 0.640625q-0.328125 0.265625 -0.796875 0.40625q-0.453125 0.140625 -1.015625 0.140625q-0.34375 0 -0.65625 -0.0625q-0.3125 -0.046875 -0.5625 -0.125q-0.234375 -0.09375 -0.40625 -0.171875q-0.171875 -0.09375 -0.25 -0.15625q-0.078125 -0.078125 -0.125 -0.203125q-0.03125 -0.140625 -0.03125 -0.359375q0 -0.140625 0.015625 -0.234375q0.015625 -0.09375 0.03125 -0.140625q0.03125 -0.0625 0.0625 -0.078125q0.046875 -0.03125 0.09375 -0.03125q0.078125 0 0.234375 0.09375q0.15625 0.09375 0.375 0.21875q0.234375 0.109375 0.53125 0.203125q0.3125 0.09375 0.71875 0.09375q0.296875 0 0.53125 -0.0625q0.25 -0.0625 0.421875 -0.1875q0.1875 -0.125 0.28125 -0.3125q0.09375 -0.203125 0.09375 -0.46875q0 -0.265625 -0.140625 -0.453125q-0.140625 -0.1875 -0.375 -0.328125q-0.21875 -0.140625 -0.515625 -0.25q-0.28125 -0.109375 -0.59375 -0.234375q-0.296875 -0.125 -0.59375 -0.28125q-0.28125 -0.15625 -0.515625 -0.375q-0.21875 -0.21875 -0.359375 -0.515625q-0.140625 -0.3125 -0.140625 -0.75q0 -0.375 0.140625 -0.71875q0.15625 -0.359375 0.453125 -0.609375q0.296875 -0.265625 0.734375 -0.421875q0.4375 -0.15625 1.015625 -0.15625q0.265625 0 0.515625 0.046875q0.265625 0.03125 0.46875 0.09375q0.203125 0.0625 0.34375 0.140625q0.15625 0.078125 0.234375 0.140625q0.078125 0.046875 0.09375 0.09375q0.03125 0.046875 0.03125 0.109375q0.015625 0.046875 0.03125 0.125q0.015625 0.078125 0.015625 0.1875q0 0.125 -0.015625 0.21875q-0.015625 0.078125 -0.046875 0.140625q-0.015625 0.0625 -0.046875 0.09375q-0.03125 0.015625 -0.078125 0.015625q-0.0625 0 -0.1875 -0.078125q-0.125 -0.078125 -0.328125 -0.171875q-0.1875 -0.09375 -0.453125 -0.171875q-0.25 -0.078125 -0.59375 -0.078125q-0.296875 0 -0.53125 0.078125q-0.21875 0.0625 -0.375 0.1875q-0.140625 0.125 -0.21875 0.296875q-0.0625 0.171875 -0.0625 0.375q0 0.28125 0.140625 0.46875q0.140625 0.1875 0.359375 0.328125q0.234375 0.140625 0.53125 0.265625q0.296875 0.109375 0.59375 0.234375q0.3125 0.125 0.609375 0.28125q0.296875 0.140625 0.515625 0.359375q0.234375 0.203125 0.375 0.515625q0.140625 0.296875 0.140625 0.703125z" fill-rule="nonzero"/><path fill="#000000" d="m680.57275 549.81757q0 0.265625 -0.140625 0.390625q-0.140625 0.125 -0.3125 0.125l-4.234375 0q0 0.53125 0.109375 0.96875q0.109375 0.421875 0.359375 0.734375q0.25 0.296875 0.640625 0.46875q0.40625 0.15625 0.984375 0.15625q0.46875 0 0.828125 -0.0625q0.359375 -0.078125 0.609375 -0.171875q0.265625 -0.09375 0.4375 -0.171875q0.171875 -0.078125 0.25 -0.078125q0.046875 0 0.078125 0.03125q0.046875 0.015625 0.0625 0.078125q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125q0 0.09375 0 0.171875q0 0.0625 -0.015625 0.125q-0.015625 0.046875 -0.046875 0.09375q-0.015625 0.046875 -0.0625 0.09375q-0.03125 0.03125 -0.234375 0.125q-0.1875 0.078125 -0.5 0.171875q-0.296875 0.078125 -0.703125 0.140625q-0.40625 0.078125 -0.859375 0.078125q-0.796875 0 -1.40625 -0.21875q-0.59375 -0.234375 -1.0 -0.671875q-0.40625 -0.4375 -0.609375 -1.09375q-0.203125 -0.65625 -0.203125 -1.53125q0 -0.828125 0.203125 -1.484375q0.21875 -0.671875 0.625 -1.125q0.40625 -0.46875 0.96875 -0.703125q0.578125 -0.25 1.28125 -0.25q0.765625 0 1.296875 0.25q0.53125 0.234375 0.875 0.65625q0.34375 0.40625 0.5 0.96875q0.171875 0.546875 0.171875 1.171875l0 0.21875zm-1.1875 -0.359375q0.015625 -0.921875 -0.421875 -1.453125q-0.421875 -0.53125 -1.28125 -0.53125q-0.4375 0 -0.765625 0.171875q-0.328125 0.15625 -0.546875 0.4375q-0.21875 0.265625 -0.34375 0.625q-0.125 0.359375 -0.140625 0.75l3.5 0zm8.526733 3.859375q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.171875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.03125 -0.046875 -0.03125 -0.09375l0 -3.78125q0 -0.546875 -0.09375 -0.875q-0.078125 -0.34375 -0.25 -0.578125q-0.15625 -0.25 -0.421875 -0.375q-0.25 -0.140625 -0.59375 -0.140625q-0.4375 0 -0.890625 0.328125q-0.4375 0.3125 -0.921875 0.90625l0 4.515625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.0625 -0.03125 0.15625 -0.046875q0.109375 -0.015625 0.265625 -0.015625q0.171875 0 0.265625 0.015625q0.109375 0.015625 0.15625 0.046875q0.0625 0.03125 0.078125 0.078125q0.03125 0.03125 0.03125 0.078125l0 0.859375q0.546875 -0.609375 1.078125 -0.890625q0.546875 -0.28125 1.109375 -0.28125q0.640625 0 1.078125 0.21875q0.4375 0.21875 0.703125 0.578125q0.28125 0.359375 0.390625 0.859375q0.125 0.484375 0.125 1.171875l0 3.9375zm7.6690063 0q0 0.046875 -0.03125 0.09375q-0.015625 0.046875 -0.078125 0.078125q-0.0625 0.015625 -0.171875 0.03125q-0.09375 0.015625 -0.234375 0.015625q-0.140625 0 -0.25 -0.015625q-0.09375 -0.015625 -0.15625 -0.03125q-0.0625 -0.03125 -0.09375 -0.078125q-0.03125 -0.046875 -0.03125 -0.09375l0 -0.859375q-0.515625 0.546875 -1.0625 0.859375q-0.546875 0.3125 -1.1875 0.3125q-0.71875 0 -1.21875 -0.28125q-0.5 -0.28125 -0.8125 -0.75q-0.3125 -0.46875 -0.453125 -1.09375q-0.140625 -0.640625 -0.140625 -1.34375q0 -0.828125 0.171875 -1.484375q0.1875 -0.671875 0.53125 -1.140625q0.359375 -0.484375 0.875 -0.734375q0.515625 -0.25 1.203125 -0.25q0.5625 0 1.03125 0.25q0.46875 0.234375 0.921875 0.71875l0 -3.75q0 -0.046875 0.015625 -0.09375q0.03125 -0.046875 0.109375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.109375 -0.015625 0.28125 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.09375l0 9.546875zm-1.1875 -4.53125q-0.484375 -0.59375 -0.9375 -0.90625q-0.4375 -0.3125 -0.921875 -0.3125q-0.453125 0 -0.765625 0.21875q-0.3125 0.203125 -0.515625 0.5625q-0.1875 0.34375 -0.28125 0.796875q-0.09375 0.4375 -0.09375 0.890625q0 0.484375 0.078125 0.953125q0.078125 0.46875 0.265625 0.828125q0.1875 0.359375 0.484375 0.578125q0.3125 0.21875 0.78125 0.21875q0.234375 0 0.453125 -0.0625q0.21875 -0.0625 0.4375 -0.203125q0.234375 -0.15625 0.484375 -0.390625q0.25 -0.25 0.53125 -0.59375l0 -2.578125zm9.294006 1.203125q0 0.84375 -0.1875 1.515625q-0.171875 0.671875 -0.53125 1.140625q-0.34375 0.46875 -0.875 0.734375q-0.515625 0.25 -1.1875 0.25q-0.296875 0 -0.546875 -0.0625q-0.234375 -0.0625 -0.46875 -0.171875q-0.234375 -0.125 -0.46875 -0.3125q-0.21875 -0.1875 -0.46875 -0.4375l0 3.21875q0 0.0625 -0.03125 0.09375q-0.03125 0.046875 -0.09375 0.078125q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.078125q-0.015625 -0.03125 -0.015625 -0.09375l0 -9.0q0 -0.0625 0.015625 -0.09375q0.03125 -0.046875 0.09375 -0.0625q0.0625 -0.03125 0.15625 -0.046875q0.109375 -0.015625 0.25 -0.015625q0.15625 0 0.25 0.015625q0.09375 0.015625 0.15625 0.046875q0.0625 0.015625 0.078125 0.0625q0.03125 0.03125 0.03125 0.09375l0 0.875q0.296875 -0.296875 0.5625 -0.515625q0.28125 -0.234375 0.546875 -0.375q0.28125 -0.15625 0.5625 -0.21875q0.296875 -0.078125 0.625 -0.078125q0.703125 0 1.1875 0.28125q0.5 0.265625 0.8125 0.734375q0.3125 0.46875 0.453125 1.09375q0.140625 0.625 0.140625 1.328125zm-1.234375 0.140625q0 -0.5 -0.078125 -0.953125q-0.078125 -0.46875 -0.265625 -0.828125q-0.171875 -0.359375 -0.484375 -0.5625q-0.3125 -0.21875 -0.765625 -0.21875q-0.234375 0 -0.453125 0.0625q-0.21875 0.0625 -0.453125 0.21875q-0.21875 0.140625 -0.46875 0.390625q-0.25 0.234375 -0.53125 0.578125l0 2.5625q0.484375 0.59375 0.921875 0.921875q0.4375 0.3125 0.90625 0.3125q0.453125 0 0.765625 -0.21875q0.328125 -0.21875 0.515625 -0.578125q0.203125 -0.359375 0.296875 -0.796875q0.09375 -0.4375 0.09375 -0.890625zm8.997131 -0.109375q0 0.78125 -0.203125 1.453125q-0.203125 0.65625 -0.625 1.140625q-0.40625 0.46875 -1.03125 0.75q-0.609375 0.265625 -1.421875 0.265625q-0.796875 0 -1.390625 -0.234375q-0.59375 -0.25 -0.984375 -0.6875q-0.390625 -0.453125 -0.59375 -1.09375q-0.1875 -0.65625 -0.1875 -1.46875q0 -0.78125 0.203125 -1.4375q0.203125 -0.671875 0.609375 -1.140625q0.421875 -0.484375 1.03125 -0.75q0.625 -0.265625 1.4375 -0.265625q0.796875 0 1.390625 0.234375q0.59375 0.234375 0.984375 0.6875q0.390625 0.453125 0.578125 1.09375q0.203125 0.640625 0.203125 1.453125zm-1.234375 0.078125q0 -0.53125 -0.109375 -0.984375q-0.09375 -0.46875 -0.3125 -0.8125q-0.21875 -0.359375 -0.609375 -0.5625q-0.375 -0.203125 -0.9375 -0.203125q-0.515625 0 -0.890625 0.1875q-0.375 0.1875 -0.625 0.53125q-0.234375 0.328125 -0.359375 0.796875q-0.125 0.46875 -0.125 1.015625q0 0.53125 0.09375 1.0q0.109375 0.46875 0.328125 0.8125q0.234375 0.34375 0.609375 0.546875q0.375 0.203125 0.9375 0.203125q0.515625 0 0.890625 -0.1875q0.390625 -0.1875 0.625 -0.515625q0.25 -0.34375 0.359375 -0.796875q0.125 -0.46875 0.125 -1.03125zm4.166382 3.21875q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 6.453125zm0.125 -8.625q0 0.421875 -0.15625 0.578125q-0.15625 0.140625 -0.578125 0.140625q-0.40625 0 -0.5625 -0.140625q-0.15625 -0.15625 -0.15625 -0.5625q0 -0.421875 0.15625 -0.5625q0.15625 -0.15625 0.578125 -0.15625q0.421875 0 0.5625 0.15625q0.15625 0.140625 0.15625 0.546875zm7.5978394 8.625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.171875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.03125 -0.046875 -0.03125 -0.09375l0 -3.78125q0 -0.546875 -0.09375 -0.875q-0.078125 -0.34375 -0.25 -0.578125q-0.15625 -0.25 -0.421875 -0.375q-0.25 -0.140625 -0.59375 -0.140625q-0.4375 0 -0.890625 0.328125q-0.4375 0.3125 -0.921875 0.90625l0 4.515625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.0625 -0.03125 0.15625 -0.046875q0.109375 -0.015625 0.265625 -0.015625q0.171875 0 0.265625 0.015625q0.109375 0.015625 0.15625 0.046875q0.0625 0.03125 0.078125 0.078125q0.03125 0.03125 0.03125 0.078125l0 0.859375q0.546875 -0.609375 1.078125 -0.890625q0.546875 -0.28125 1.109375 -0.28125q0.640625 0 1.078125 0.21875q0.4375 0.21875 0.703125 0.578125q0.28125 0.359375 0.390625 0.859375q0.125 0.484375 0.125 1.171875l0 3.9375zm5.4971313 -0.484375q0 0.21875 -0.03125 0.34375q-0.015625 0.109375 -0.078125 0.171875q-0.0625 0.0625 -0.171875 0.109375q-0.109375 0.046875 -0.265625 0.078125q-0.140625 0.03125 -0.3125 0.046875q-0.15625 0.03125 -0.328125 0.03125q-0.5 0 -0.859375 -0.125q-0.34375 -0.140625 -0.578125 -0.40625q-0.234375 -0.28125 -0.34375 -0.6875q-0.09375 -0.40625 -0.09375 -0.96875l0 -3.765625l-0.90625 0q-0.109375 0 -0.171875 -0.109375q-0.0625 -0.109375 -0.0625 -0.375q0 -0.140625 0.015625 -0.234375q0.015625 -0.09375 0.046875 -0.140625q0.03125 -0.0625 0.078125 -0.09375q0.046875 -0.03125 0.109375 -0.03125l0.890625 0l0 -1.53125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.28125 -0.015625q0.1875 0 0.296875 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 1.53125l1.640625 0q0.0625 0 0.09375 0.03125q0.046875 0.03125 0.078125 0.09375q0.046875 0.046875 0.046875 0.140625q0.015625 0.09375 0.015625 0.234375q0 0.265625 -0.0625 0.375q-0.0625 0.109375 -0.171875 0.109375l-1.640625 0l0 3.59375q0 0.671875 0.1875 1.015625q0.203125 0.328125 0.703125 0.328125q0.171875 0 0.296875 -0.03125q0.125 -0.03125 0.21875 -0.0625q0.109375 -0.03125 0.171875 -0.0625q0.078125 -0.046875 0.140625 -0.046875q0.03125 0 0.0625 0.03125q0.03125 0.015625 0.046875 0.0625q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125zm8.214233 0.484375q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 6.453125zm0.125 -8.625q0 0.421875 -0.15625 0.578125q-0.15625 0.140625 -0.578125 0.140625q-0.40625 0 -0.5625 -0.140625q-0.15625 -0.15625 -0.15625 -0.5625q0 -0.421875 0.15625 -0.5625q0.15625 -0.15625 0.578125 -0.15625q0.421875 0 0.5625 0.15625q0.15625 0.140625 0.15625 0.546875zm6.0979004 6.859375q0 0.5 -0.1875 0.890625q-0.1875 0.375 -0.53125 0.640625q-0.328125 0.265625 -0.796875 0.40625q-0.453125 0.140625 -1.015625 0.140625q-0.34375 0 -0.65625 -0.0625q-0.3125 -0.046875 -0.5625 -0.125q-0.234375 -0.09375 -0.40625 -0.171875q-0.171875 -0.09375 -0.25 -0.15625q-0.078125 -0.078125 -0.125 -0.203125q-0.03125 -0.140625 -0.03125 -0.359375q0 -0.140625 0.015625 -0.234375q0.015625 -0.09375 0.03125 -0.140625q0.03125 -0.0625 0.0625 -0.078125q0.046875 -0.03125 0.09375 -0.03125q0.078125 0 0.234375 0.09375q0.15625 0.09375 0.375 0.21875q0.234375 0.109375 0.53125 0.203125q0.3125 0.09375 0.71875 0.09375q0.296875 0 0.53125 -0.0625q0.25 -0.0625 0.421875 -0.1875q0.1875 -0.125 0.28125 -0.3125q0.09375 -0.203125 0.09375 -0.46875q0 -0.265625 -0.140625 -0.453125q-0.140625 -0.1875 -0.375 -0.328125q-0.21875 -0.140625 -0.515625 -0.25q-0.28125 -0.109375 -0.59375 -0.234375q-0.296875 -0.125 -0.59375 -0.28125q-0.28125 -0.15625 -0.515625 -0.375q-0.21875 -0.21875 -0.359375 -0.515625q-0.140625 -0.3125 -0.140625 -0.75q0 -0.375 0.140625 -0.71875q0.15625 -0.359375 0.453125 -0.609375q0.296875 -0.265625 0.734375 -0.421875q0.4375 -0.15625 1.015625 -0.15625q0.265625 0 0.515625 0.046875q0.265625 0.03125 0.46875 0.09375q0.203125 0.0625 0.34375 0.140625q0.15625 0.078125 0.234375 0.140625q0.078125 0.046875 0.09375 0.09375q0.03125 0.046875 0.03125 0.109375q0.015625 0.046875 0.03125 0.125q0.015625 0.078125 0.015625 0.1875q0 0.125 -0.015625 0.21875q-0.015625 0.078125 -0.046875 0.140625q-0.015625 0.0625 -0.046875 0.09375q-0.03125 0.015625 -0.078125 0.015625q-0.0625 0 -0.1875 -0.078125q-0.125 -0.078125 -0.328125 -0.171875q-0.1875 -0.09375 -0.453125 -0.171875q-0.25 -0.078125 -0.59375 -0.078125q-0.296875 0 -0.53125 0.078125q-0.21875 0.0625 -0.375 0.1875q-0.140625 0.125 -0.21875 0.296875q-0.0625 0.171875 -0.0625 0.375q0 0.28125 0.140625 0.46875q0.140625 0.1875 0.359375 0.328125q0.234375 0.140625 0.53125 0.265625q0.296875 0.109375 0.59375 0.234375q0.3125 0.125 0.609375 0.28125q0.296875 0.140625 0.515625 0.359375q0.234375 0.203125 0.375 0.515625q0.140625 0.296875 0.140625 0.703125zm11.771545 0.78125q0 0.125 -0.015625 0.21875q0 0.078125 -0.015625 0.140625q-0.015625 0.0625 -0.046875 0.109375q-0.015625 0.046875 -0.109375 0.140625q-0.078125 0.078125 -0.296875 0.21875q-0.21875 0.125 -0.484375 0.234375q-0.265625 0.09375 -0.59375 0.15625q-0.3125 0.078125 -0.640625 0.078125q-0.703125 0 -1.234375 -0.234375q-0.53125 -0.234375 -0.90625 -0.671875q-0.359375 -0.4375 -0.546875 -1.078125q-0.1875 -0.640625 -0.1875 -1.484375q0 -0.9375 0.234375 -1.625q0.234375 -0.6875 0.640625 -1.125q0.40625 -0.4375 0.953125 -0.640625q0.546875 -0.21875 1.1875 -0.21875q0.296875 0 0.578125 0.0625q0.296875 0.0625 0.546875 0.15625q0.25 0.078125 0.4375 0.203125q0.1875 0.125 0.265625 0.21875q0.09375 0.078125 0.125 0.125q0.03125 0.046875 0.046875 0.125q0.03125 0.0625 0.03125 0.15625q0.015625 0.078125 0.015625 0.203125q0 0.28125 -0.078125 0.390625q-0.0625 0.109375 -0.15625 0.109375q-0.09375 0 -0.234375 -0.109375q-0.140625 -0.125 -0.359375 -0.265625q-0.21875 -0.140625 -0.53125 -0.25q-0.296875 -0.125 -0.703125 -0.125q-0.859375 0 -1.3125 0.65625q-0.453125 0.65625 -0.453125 1.890625q0 0.625 0.109375 1.09375q0.125 0.46875 0.34375 0.796875q0.234375 0.3125 0.5625 0.46875q0.34375 0.140625 0.78125 0.140625q0.40625 0 0.703125 -0.125q0.3125 -0.125 0.53125 -0.28125q0.234375 -0.15625 0.390625 -0.28125q0.15625 -0.125 0.234375 -0.125q0.046875 0 0.078125 0.03125q0.046875 0.03125 0.0625 0.09375q0.03125 0.0625 0.03125 0.171875q0.015625 0.109375 0.015625 0.25zm5.3380737 -5.046875q0 0.15625 -0.015625 0.265625q0 0.109375 -0.03125 0.171875q-0.015625 0.0625 -0.046875 0.09375q-0.03125 0.03125 -0.078125 0.03125q-0.0625 0 -0.15625 -0.03125q-0.078125 -0.03125 -0.1875 -0.0625q-0.09375 -0.03125 -0.21875 -0.0625q-0.125 -0.03125 -0.28125 -0.03125q-0.171875 0 -0.34375 0.078125q-0.171875 0.0625 -0.375 0.234375q-0.1875 0.15625 -0.390625 0.4375q-0.203125 0.265625 -0.453125 0.65625l0 4.25q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.0625 -0.03125 0.15625 -0.046875q0.109375 -0.015625 0.265625 -0.015625q0.171875 0 0.265625 0.015625q0.109375 0.015625 0.15625 0.046875q0.0625 0.03125 0.078125 0.078125q0.03125 0.03125 0.03125 0.078125l0 0.9375q0.265625 -0.375 0.5 -0.625q0.234375 -0.25 0.4375 -0.375q0.21875 -0.140625 0.421875 -0.1875q0.203125 -0.0625 0.40625 -0.0625q0.09375 0 0.203125 0.015625q0.125 0 0.25 0.03125q0.140625 0.03125 0.234375 0.0625q0.109375 0.03125 0.140625 0.078125q0.046875 0.03125 0.0625 0.0625q0.015625 0.03125 0.03125 0.078125q0.015625 0.046875 0.015625 0.15625q0 0.09375 0 0.25zm6.843994 2.53125q0 0.265625 -0.140625 0.390625q-0.140625 0.125 -0.3125 0.125l-4.234375 0q0 0.53125 0.109375 0.96875q0.109375 0.421875 0.359375 0.734375q0.25 0.296875 0.640625 0.46875q0.40625 0.15625 0.984375 0.15625q0.46875 0 0.828125 -0.0625q0.359375 -0.078125 0.609375 -0.171875q0.265625 -0.09375 0.4375 -0.171875q0.171875 -0.078125 0.25 -0.078125q0.046875 0 0.078125 0.03125q0.046875 0.015625 0.0625 0.078125q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125q0 0.09375 0 0.171875q0 0.0625 -0.015625 0.125q-0.015625 0.046875 -0.046875 0.09375q-0.015625 0.046875 -0.0625 0.09375q-0.03125 0.03125 -0.234375 0.125q-0.1875 0.078125 -0.5 0.171875q-0.296875 0.078125 -0.703125 0.140625q-0.40625 0.078125 -0.859375 0.078125q-0.796875 0 -1.40625 -0.21875q-0.59375 -0.234375 -1.0 -0.671875q-0.40625 -0.4375 -0.609375 -1.09375q-0.203125 -0.65625 -0.203125 -1.53125q0 -0.828125 0.203125 -1.484375q0.21875 -0.671875 0.625 -1.125q0.40625 -0.46875 0.96875 -0.703125q0.578125 -0.25 1.28125 -0.25q0.765625 0 1.296875 0.25q0.53125 0.234375 0.875 0.65625q0.34375 0.40625 0.5 0.96875q0.171875 0.546875 0.171875 1.171875l0 0.21875zm-1.1875 -0.359375q0.015625 -0.921875 -0.421875 -1.453125q-0.421875 -0.53125 -1.28125 -0.53125q-0.4375 0 -0.765625 0.171875q-0.328125 0.15625 -0.546875 0.4375q-0.21875 0.265625 -0.34375 0.625q-0.125 0.359375 -0.140625 0.75l3.5 0zm7.8392334 3.859375q0 0.09375 -0.0625 0.140625q-0.0625 0.03125 -0.171875 0.046875q-0.09375 0.03125 -0.28125 0.03125q-0.1875 0 -0.296875 -0.03125q-0.109375 -0.015625 -0.15625 -0.046875q-0.046875 -0.046875 -0.046875 -0.140625l0 -0.640625q-0.421875 0.453125 -0.953125 0.703125q-0.515625 0.25 -1.09375 0.25q-0.5 0 -0.921875 -0.140625q-0.40625 -0.125 -0.703125 -0.375q-0.28125 -0.25 -0.453125 -0.609375q-0.15625 -0.375 -0.15625 -0.84375q0 -0.546875 0.21875 -0.9375q0.234375 -0.40625 0.640625 -0.671875q0.421875 -0.265625 1.015625 -0.390625q0.609375 -0.140625 1.359375 -0.140625l0.875 0l0 -0.5q0 -0.375 -0.078125 -0.65625q-0.078125 -0.28125 -0.25 -0.46875q-0.171875 -0.203125 -0.453125 -0.296875q-0.28125 -0.09375 -0.6875 -0.09375q-0.4375 0 -0.78125 0.109375q-0.34375 0.09375 -0.609375 0.21875q-0.265625 0.125 -0.4375 0.234375q-0.171875 0.109375 -0.265625 0.109375q-0.046875 0 -0.09375 -0.03125q-0.046875 -0.03125 -0.078125 -0.078125q-0.03125 -0.0625 -0.046875 -0.15625q-0.015625 -0.09375 -0.015625 -0.203125q0 -0.171875 0.015625 -0.265625q0.03125 -0.109375 0.125 -0.203125q0.109375 -0.09375 0.34375 -0.21875q0.234375 -0.125 0.53125 -0.234375q0.3125 -0.109375 0.671875 -0.171875q0.375 -0.0625 0.75 -0.0625q0.6875 0 1.171875 0.15625q0.5 0.15625 0.796875 0.46875q0.296875 0.296875 0.4375 0.75q0.140625 0.453125 0.140625 1.046875l0 4.34375zm-1.1875 -2.9375l-1.0 0q-0.484375 0 -0.84375 0.078125q-0.359375 0.078125 -0.59375 0.25q-0.234375 0.15625 -0.34375 0.390625q-0.109375 0.21875 -0.109375 0.515625q0 0.5 0.3125 0.796875q0.3125 0.296875 0.890625 0.296875q0.46875 0 0.859375 -0.234375q0.40625 -0.25 0.828125 -0.734375l0 -1.359375zm6.6922607 2.453125q0 0.21875 -0.03125 0.34375q-0.015625 0.109375 -0.078125 0.171875q-0.0625 0.0625 -0.171875 0.109375q-0.109375 0.046875 -0.265625 0.078125q-0.140625 0.03125 -0.3125 0.046875q-0.15625 0.03125 -0.328125 0.03125q-0.5 0 -0.859375 -0.125q-0.34375 -0.140625 -0.578125 -0.40625q-0.234375 -0.28125 -0.34375 -0.6875q-0.09375 -0.40625 -0.09375 -0.96875l0 -3.765625l-0.90625 0q-0.109375 0 -0.171875 -0.109375q-0.0625 -0.109375 -0.0625 -0.375q0 -0.140625 0.015625 -0.234375q0.015625 -0.09375 0.046875 -0.140625q0.03125 -0.0625 0.078125 -0.09375q0.046875 -0.03125 0.109375 -0.03125l0.890625 0l0 -1.53125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.28125 -0.015625q0.1875 0 0.296875 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 1.53125l1.640625 0q0.0625 0 0.09375 0.03125q0.046875 0.03125 0.078125 0.09375q0.046875 0.046875 0.046875 0.140625q0.015625 0.09375 0.015625 0.234375q0 0.265625 -0.0625 0.375q-0.0625 0.109375 -0.171875 0.109375l-1.640625 0l0 3.59375q0 0.671875 0.1875 1.015625q0.203125 0.328125 0.703125 0.328125q0.171875 0 0.296875 -0.03125q0.125 -0.03125 0.21875 -0.0625q0.109375 -0.03125 0.171875 -0.0625q0.078125 -0.046875 0.140625 -0.046875q0.03125 0 0.0625 0.03125q0.03125 0.015625 0.046875 0.0625q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125zm7.0655518 -3.015625q0 0.265625 -0.140625 0.390625q-0.140625 0.125 -0.3125 0.125l-4.234375 0q0 0.53125 0.109375 0.96875q0.109375 0.421875 0.359375 0.734375q0.25 0.296875 0.640625 0.46875q0.40625 0.15625 0.984375 0.15625q0.46875 0 0.828125 -0.0625q0.359375 -0.078125 0.609375 -0.171875q0.265625 -0.09375 0.4375 -0.171875q0.171875 -0.078125 0.25 -0.078125q0.046875 0 0.078125 0.03125q0.046875 0.015625 0.0625 0.078125q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125q0 0.09375 0 0.171875q0 0.0625 -0.015625 0.125q-0.015625 0.046875 -0.046875 0.09375q-0.015625 0.046875 -0.0625 0.09375q-0.03125 0.03125 -0.234375 0.125q-0.1875 0.078125 -0.5 0.171875q-0.296875 0.078125 -0.703125 0.140625q-0.40625 0.078125 -0.859375 0.078125q-0.796875 0 -1.40625 -0.21875q-0.59375 -0.234375 -1.0 -0.671875q-0.40625 -0.4375 -0.609375 -1.09375q-0.203125 -0.65625 -0.203125 -1.53125q0 -0.828125 0.203125 -1.484375q0.21875 -0.671875 0.625 -1.125q0.40625 -0.46875 0.96875 -0.703125q0.578125 -0.25 1.28125 -0.25q0.765625 0 1.296875 0.25q0.53125 0.234375 0.875 0.65625q0.34375 0.40625 0.5 0.96875q0.171875 0.546875 0.171875 1.171875l0 0.21875zm-1.1875 -0.359375q0.015625 -0.921875 -0.421875 -1.453125q-0.421875 -0.53125 -1.28125 -0.53125q-0.4375 0 -0.765625 0.171875q-0.328125 0.15625 -0.546875 0.4375q-0.21875 0.265625 -0.34375 0.625q-0.125 0.359375 -0.140625 0.75l3.5 0zm8.495483 3.859375q0 0.046875 -0.03125 0.09375q-0.015625 0.046875 -0.078125 0.078125q-0.0625 0.015625 -0.171875 0.03125q-0.09375 0.015625 -0.234375 0.015625q-0.140625 0 -0.25 -0.015625q-0.09375 -0.015625 -0.15625 -0.03125q-0.0625 -0.03125 -0.09375 -0.078125q-0.03125 -0.046875 -0.03125 -0.09375l0 -0.859375q-0.515625 0.546875 -1.0625 0.859375q-0.546875 0.3125 -1.1875 0.3125q-0.71875 0 -1.21875 -0.28125q-0.5 -0.28125 -0.8125 -0.75q-0.3125 -0.46875 -0.453125 -1.09375q-0.140625 -0.640625 -0.140625 -1.34375q0 -0.828125 0.171875 -1.484375q0.1875 -0.671875 0.53125 -1.140625q0.359375 -0.484375 0.875 -0.734375q0.515625 -0.25 1.203125 -0.25q0.5625 0 1.03125 0.25q0.46875 0.234375 0.921875 0.71875l0 -3.75q0 -0.046875 0.015625 -0.09375q0.03125 -0.046875 0.109375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.109375 -0.015625 0.28125 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.09375l0 9.546875zm-1.1875 -4.53125q-0.484375 -0.59375 -0.9375 -0.90625q-0.4375 -0.3125 -0.921875 -0.3125q-0.453125 0 -0.765625 0.21875q-0.3125 0.203125 -0.515625 0.5625q-0.1875 0.34375 -0.28125 0.796875q-0.09375 0.4375 -0.09375 0.890625q0 0.484375 0.078125 0.953125q0.078125 0.46875 0.265625 0.828125q0.1875 0.359375 0.484375 0.578125q0.3125 0.21875 0.78125 0.21875q0.234375 0 0.453125 -0.0625q0.21875 -0.0625 0.4375 -0.203125q0.234375 -0.15625 0.484375 -0.390625q0.25 -0.25 0.53125 -0.59375l0 -2.578125zm13.692688 4.53125q0 0.09375 -0.0625 0.140625q-0.0625 0.03125 -0.171875 0.046875q-0.09375 0.03125 -0.28125 0.03125q-0.1875 0 -0.296875 -0.03125q-0.109375 -0.015625 -0.15625 -0.046875q-0.046875 -0.046875 -0.046875 -0.140625l0 -0.640625q-0.421875 0.453125 -0.953125 0.703125q-0.515625 0.25 -1.09375 0.25q-0.5 0 -0.921875 -0.140625q-0.40625 -0.125 -0.703125 -0.375q-0.28125 -0.25 -0.453125 -0.609375q-0.15625 -0.375 -0.15625 -0.84375q0 -0.546875 0.21875 -0.9375q0.234375 -0.40625 0.640625 -0.671875q0.421875 -0.265625 1.015625 -0.390625q0.609375 -0.140625 1.359375 -0.140625l0.875 0l0 -0.5q0 -0.375 -0.078125 -0.65625q-0.078125 -0.28125 -0.25 -0.46875q-0.171875 -0.203125 -0.453125 -0.296875q-0.28125 -0.09375 -0.6875 -0.09375q-0.4375 0 -0.78125 0.109375q-0.34375 0.09375 -0.609375 0.21875q-0.265625 0.125 -0.4375 0.234375q-0.171875 0.109375 -0.265625 0.109375q-0.046875 0 -0.09375 -0.03125q-0.046875 -0.03125 -0.078125 -0.078125q-0.03125 -0.0625 -0.046875 -0.15625q-0.015625 -0.09375 -0.015625 -0.203125q0 -0.171875 0.015625 -0.265625q0.03125 -0.109375 0.125 -0.203125q0.109375 -0.09375 0.34375 -0.21875q0.234375 -0.125 0.53125 -0.234375q0.3125 -0.109375 0.671875 -0.171875q0.375 -0.0625 0.75 -0.0625q0.6875 0 1.171875 0.15625q0.5 0.15625 0.796875 0.46875q0.296875 0.296875 0.4375 0.75q0.140625 0.453125 0.140625 1.046875l0 4.34375zm-1.1875 -2.9375l-1.0 0q-0.484375 0 -0.84375 0.078125q-0.359375 0.078125 -0.59375 0.25q-0.234375 0.15625 -0.34375 0.390625q-0.109375 0.21875 -0.109375 0.515625q0 0.5 0.3125 0.796875q0.3125 0.296875 0.890625 0.296875q0.46875 0 0.859375 -0.234375q0.40625 -0.25 0.828125 -0.734375l0 -1.359375zm8.864136 2.9375q0 0.046875 -0.03125 0.09375q-0.015625 0.03125 -0.078125 0.0625q-0.0625 0.03125 -0.171875 0.046875q-0.109375 0.015625 -0.25 0.015625q-0.171875 0 -0.28125 -0.015625q-0.09375 -0.015625 -0.15625 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -0.859375q-0.546875 0.609375 -1.078125 0.890625q-0.53125 0.28125 -1.09375 0.28125q-0.640625 0 -1.078125 -0.21875q-0.4375 -0.21875 -0.71875 -0.578125q-0.265625 -0.375 -0.390625 -0.859375q-0.109375 -0.5 -0.109375 -1.203125l0 -3.90625q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.109375 0.015625 0.171875 0.046875q0.078125 0.03125 0.109375 0.078125q0.03125 0.03125 0.03125 0.078125l0 3.75q0 0.578125 0.078125 0.921875q0.078125 0.328125 0.25 0.578125q0.171875 0.234375 0.421875 0.375q0.265625 0.125 0.609375 0.125q0.4375 0 0.875 -0.3125q0.453125 -0.328125 0.9375 -0.9375l0 -4.5q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.109375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.109375 -0.015625 0.28125 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 6.453125zm5.5283813 -0.484375q0 0.21875 -0.03125 0.34375q-0.015625 0.109375 -0.078125 0.171875q-0.0625 0.0625 -0.171875 0.109375q-0.109375 0.046875 -0.265625 0.078125q-0.140625 0.03125 -0.3125 0.046875q-0.15625 0.03125 -0.328125 0.03125q-0.5 0 -0.859375 -0.125q-0.34375 -0.140625 -0.578125 -0.40625q-0.234375 -0.28125 -0.34375 -0.6875q-0.09375 -0.40625 -0.09375 -0.96875l0 -3.765625l-0.90625 0q-0.109375 0 -0.171875 -0.109375q-0.0625 -0.109375 -0.0625 -0.375q0 -0.140625 0.015625 -0.234375q0.015625 -0.09375 0.046875 -0.140625q0.03125 -0.0625 0.078125 -0.09375q0.046875 -0.03125 0.109375 -0.03125l0.890625 0l0 -1.53125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.28125 -0.015625q0.1875 0 0.296875 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 1.53125l1.640625 0q0.0625 0 0.09375 0.03125q0.046875 0.03125 0.078125 0.09375q0.046875 0.046875 0.046875 0.140625q0.015625 0.09375 0.015625 0.234375q0 0.265625 -0.0625 0.375q-0.0625 0.109375 -0.171875 0.109375l-1.640625 0l0 3.59375q0 0.671875 0.1875 1.015625q0.203125 0.328125 0.703125 0.328125q0.171875 0 0.296875 -0.03125q0.125 -0.03125 0.21875 -0.0625q0.109375 -0.03125 0.171875 -0.0625q0.078125 -0.046875 0.140625 -0.046875q0.03125 0 0.0625 0.03125q0.03125 0.015625 0.046875 0.0625q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125zm7.5499268 -2.8125q0 0.78125 -0.203125 1.453125q-0.203125 0.65625 -0.625 1.140625q-0.40625 0.46875 -1.03125 0.75q-0.609375 0.265625 -1.421875 0.265625q-0.796875 0 -1.390625 -0.234375q-0.59375 -0.25 -0.984375 -0.6875q-0.390625 -0.453125 -0.59375 -1.09375q-0.1875 -0.65625 -0.1875 -1.46875q0 -0.78125 0.203125 -1.4375q0.203125 -0.671875 0.609375 -1.140625q0.421875 -0.484375 1.03125 -0.75q0.625 -0.265625 1.4375 -0.265625q0.796875 0 1.390625 0.234375q0.59375 0.234375 0.984375 0.6875q0.390625 0.453125 0.578125 1.09375q0.203125 0.640625 0.203125 1.453125zm-1.234375 0.078125q0 -0.53125 -0.109375 -0.984375q-0.09375 -0.46875 -0.3125 -0.8125q-0.21875 -0.359375 -0.609375 -0.5625q-0.375 -0.203125 -0.9375 -0.203125q-0.515625 0 -0.890625 0.1875q-0.375 0.1875 -0.625 0.53125q-0.234375 0.328125 -0.359375 0.796875q-0.125 0.46875 -0.125 1.015625q0 0.53125 0.09375 1.0q0.109375 0.46875 0.328125 0.8125q0.234375 0.34375 0.609375 0.546875q0.375 0.203125 0.9375 0.203125q0.515625 0 0.890625 -0.1875q0.390625 -0.1875 0.625 -0.515625q0.25 -0.34375 0.359375 -0.796875q0.125 -0.46875 0.125 -1.03125zm12.541382 3.21875q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.03125 -0.046875 -0.03125 -0.09375l0 -3.921875q0 -0.40625 -0.078125 -0.734375q-0.0625 -0.34375 -0.21875 -0.578125q-0.15625 -0.25 -0.40625 -0.375q-0.234375 -0.140625 -0.5625 -0.140625q-0.40625 0 -0.828125 0.328125q-0.40625 0.3125 -0.890625 0.90625l0 4.515625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.109375 0.0625q-0.0625 0.03125 -0.171875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -3.921875q0 -0.40625 -0.078125 -0.734375q-0.078125 -0.34375 -0.234375 -0.578125q-0.15625 -0.25 -0.40625 -0.375q-0.234375 -0.140625 -0.5625 -0.140625q-0.40625 0 -0.828125 0.328125q-0.40625 0.3125 -0.890625 0.90625l0 4.515625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.0625 -0.03125 0.15625 -0.046875q0.109375 -0.015625 0.265625 -0.015625q0.171875 0 0.265625 0.015625q0.109375 0.015625 0.15625 0.046875q0.0625 0.03125 0.078125 0.078125q0.03125 0.03125 0.03125 0.078125l0 0.859375q0.546875 -0.609375 1.0625 -0.890625q0.515625 -0.28125 1.03125 -0.28125q0.40625 0 0.71875 0.09375q0.3125 0.09375 0.5625 0.265625q0.25 0.15625 0.421875 0.390625q0.171875 0.234375 0.28125 0.515625q0.328125 -0.34375 0.609375 -0.578125q0.296875 -0.25 0.5625 -0.40625q0.265625 -0.15625 0.515625 -0.21875q0.265625 -0.0625 0.515625 -0.0625q0.625 0 1.046875 0.21875q0.421875 0.21875 0.671875 0.578125q0.265625 0.359375 0.375 0.859375q0.125 0.484375 0.125 1.03125l0 4.078125zm7.0046997 0q0 0.09375 -0.0625 0.140625q-0.0625 0.03125 -0.171875 0.046875q-0.09375 0.03125 -0.28125 0.03125q-0.1875 0 -0.296875 -0.03125q-0.109375 -0.015625 -0.15625 -0.046875q-0.046875 -0.046875 -0.046875 -0.140625l0 -0.640625q-0.421875 0.453125 -0.953125 0.703125q-0.515625 0.25 -1.09375 0.25q-0.5 0 -0.921875 -0.140625q-0.40625 -0.125 -0.703125 -0.375q-0.28125 -0.25 -0.453125 -0.609375q-0.15625 -0.375 -0.15625 -0.84375q0 -0.546875 0.21875 -0.9375q0.234375 -0.40625 0.640625 -0.671875q0.421875 -0.265625 1.015625 -0.390625q0.609375 -0.140625 1.359375 -0.140625l0.875 0l0 -0.5q0 -0.375 -0.078125 -0.65625q-0.078125 -0.28125 -0.25 -0.46875q-0.171875 -0.203125 -0.453125 -0.296875q-0.28125 -0.09375 -0.6875 -0.09375q-0.4375 0 -0.78125 0.109375q-0.34375 0.09375 -0.609375 0.21875q-0.265625 0.125 -0.4375 0.234375q-0.171875 0.109375 -0.265625 0.109375q-0.046875 0 -0.09375 -0.03125q-0.046875 -0.03125 -0.078125 -0.078125q-0.03125 -0.0625 -0.046875 -0.15625q-0.015625 -0.09375 -0.015625 -0.203125q0 -0.171875 0.015625 -0.265625q0.03125 -0.109375 0.125 -0.203125q0.109375 -0.09375 0.34375 -0.21875q0.234375 -0.125 0.53125 -0.234375q0.3125 -0.109375 0.671875 -0.171875q0.375 -0.0625 0.75 -0.0625q0.6875 0 1.171875 0.15625q0.5 0.15625 0.796875 0.46875q0.296875 0.296875 0.4375 0.75q0.140625 0.453125 0.140625 1.046875l0 4.34375zm-1.1875 -2.9375l-1.0 0q-0.484375 0 -0.84375 0.078125q-0.359375 0.078125 -0.59375 0.25q-0.234375 0.15625 -0.34375 0.390625q-0.109375 0.21875 -0.109375 0.515625q0 0.5 0.3125 0.796875q0.3125 0.296875 0.890625 0.296875q0.46875 0 0.859375 -0.234375q0.40625 -0.25 0.828125 -0.734375l0 -1.359375zm6.6922607 2.453125q0 0.21875 -0.03125 0.34375q-0.015625 0.109375 -0.078125 0.171875q-0.0625 0.0625 -0.171875 0.109375q-0.109375 0.046875 -0.265625 0.078125q-0.140625 0.03125 -0.3125 0.046875q-0.15625 0.03125 -0.328125 0.03125q-0.5 0 -0.859375 -0.125q-0.34375 -0.140625 -0.578125 -0.40625q-0.234375 -0.28125 -0.34375 -0.6875q-0.09375 -0.40625 -0.09375 -0.96875l0 -3.765625l-0.90625 0q-0.109375 0 -0.171875 -0.109375q-0.0625 -0.109375 -0.0625 -0.375q0 -0.140625 0.015625 -0.234375q0.015625 -0.09375 0.046875 -0.140625q0.03125 -0.0625 0.078125 -0.09375q0.046875 -0.03125 0.109375 -0.03125l0.890625 0l0 -1.53125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.28125 -0.015625q0.1875 0 0.296875 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 1.53125l1.640625 0q0.0625 0 0.09375 0.03125q0.046875 0.03125 0.078125 0.09375q0.046875 0.046875 0.046875 0.140625q0.015625 0.09375 0.015625 0.234375q0 0.265625 -0.0625 0.375q-0.0625 0.109375 -0.171875 0.109375l-1.640625 0l0 3.59375q0 0.671875 0.1875 1.015625q0.203125 0.328125 0.703125 0.328125q0.171875 0 0.296875 -0.03125q0.125 -0.03125 0.21875 -0.0625q0.109375 -0.03125 0.171875 -0.0625q0.078125 -0.046875 0.140625 -0.046875q0.03125 0 0.0625 0.03125q0.03125 0.015625 0.046875 0.0625q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125zm2.7529907 0.484375q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 6.453125zm0.125 -8.625q0 0.421875 -0.15625 0.578125q-0.15625 0.140625 -0.578125 0.140625q-0.40625 0 -0.5625 -0.140625q-0.15625 -0.15625 -0.15625 -0.5625q0 -0.421875 0.15625 -0.5625q0.15625 -0.15625 0.578125 -0.15625q0.421875 0 0.5625 0.15625q0.15625 0.140625 0.15625 0.546875zm6.6760254 7.640625q0 0.125 -0.015625 0.21875q0 0.078125 -0.015625 0.140625q-0.015625 0.0625 -0.046875 0.109375q-0.015625 0.046875 -0.109375 0.140625q-0.078125 0.078125 -0.296875 0.21875q-0.21875 0.125 -0.484375 0.234375q-0.265625 0.09375 -0.59375 0.15625q-0.3125 0.078125 -0.640625 0.078125q-0.703125 0 -1.234375 -0.234375q-0.53125 -0.234375 -0.90625 -0.671875q-0.359375 -0.4375 -0.546875 -1.078125q-0.1875 -0.640625 -0.1875 -1.484375q0 -0.9375 0.234375 -1.625q0.234375 -0.6875 0.640625 -1.125q0.40625 -0.4375 0.953125 -0.640625q0.546875 -0.21875 1.1875 -0.21875q0.296875 0 0.578125 0.0625q0.296875 0.0625 0.546875 0.15625q0.25 0.078125 0.4375 0.203125q0.1875 0.125 0.265625 0.21875q0.09375 0.078125 0.125 0.125q0.03125 0.046875 0.046875 0.125q0.03125 0.0625 0.03125 0.15625q0.015625 0.078125 0.015625 0.203125q0 0.28125 -0.078125 0.390625q-0.0625 0.109375 -0.15625 0.109375q-0.09375 0 -0.234375 -0.109375q-0.140625 -0.125 -0.359375 -0.265625q-0.21875 -0.140625 -0.53125 -0.25q-0.296875 -0.125 -0.703125 -0.125q-0.859375 0 -1.3125 0.65625q-0.453125 0.65625 -0.453125 1.890625q0 0.625 0.109375 1.09375q0.125 0.46875 0.34375 0.796875q0.234375 0.3125 0.5625 0.46875q0.34375 0.140625 0.78125 0.140625q0.40625 0 0.703125 -0.125q0.3125 -0.125 0.53125 -0.28125q0.234375 -0.15625 0.390625 -0.28125q0.15625 -0.125 0.234375 -0.125q0.046875 0 0.078125 0.03125q0.046875 0.03125 0.0625 0.09375q0.03125 0.0625 0.03125 0.171875q0.015625 0.109375 0.015625 0.25zm6.4317627 0.984375q0 0.09375 -0.0625 0.140625q-0.0625 0.03125 -0.171875 0.046875q-0.09375 0.03125 -0.28125 0.03125q-0.1875 0 -0.296875 -0.03125q-0.109375 -0.015625 -0.15625 -0.046875q-0.046875 -0.046875 -0.046875 -0.140625l0 -0.640625q-0.421875 0.453125 -0.953125 0.703125q-0.515625 0.25 -1.09375 0.25q-0.5 0 -0.921875 -0.140625q-0.40625 -0.125 -0.703125 -0.375q-0.28125 -0.25 -0.453125 -0.609375q-0.15625 -0.375 -0.15625 -0.84375q0 -0.546875 0.21875 -0.9375q0.234375 -0.40625 0.640625 -0.671875q0.421875 -0.265625 1.015625 -0.390625q0.609375 -0.140625 1.359375 -0.140625l0.875 0l0 -0.5q0 -0.375 -0.078125 -0.65625q-0.078125 -0.28125 -0.25 -0.46875q-0.171875 -0.203125 -0.453125 -0.296875q-0.28125 -0.09375 -0.6875 -0.09375q-0.4375 0 -0.78125 0.109375q-0.34375 0.09375 -0.609375 0.21875q-0.265625 0.125 -0.4375 0.234375q-0.171875 0.109375 -0.265625 0.109375q-0.046875 0 -0.09375 -0.03125q-0.046875 -0.03125 -0.078125 -0.078125q-0.03125 -0.0625 -0.046875 -0.15625q-0.015625 -0.09375 -0.015625 -0.203125q0 -0.171875 0.015625 -0.265625q0.03125 -0.109375 0.125 -0.203125q0.109375 -0.09375 0.34375 -0.21875q0.234375 -0.125 0.53125 -0.234375q0.3125 -0.109375 0.671875 -0.171875q0.375 -0.0625 0.75 -0.0625q0.6875 0 1.171875 0.15625q0.5 0.15625 0.796875 0.46875q0.296875 0.296875 0.4375 0.75q0.140625 0.453125 0.140625 1.046875l0 4.34375zm-1.1875 -2.9375l-1.0 0q-0.484375 0 -0.84375 0.078125q-0.359375 0.078125 -0.59375 0.25q-0.234375 0.15625 -0.34375 0.390625q-0.109375 0.21875 -0.109375 0.515625q0 0.5 0.3125 0.796875q0.3125 0.296875 0.890625 0.296875q0.46875 0 0.859375 -0.234375q0.40625 -0.25 0.828125 -0.734375l0 -1.359375zm4.536072 2.9375q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -9.5625q0 -0.0625 0.015625 -0.109375q0.03125 -0.046875 0.09375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.109375l0 9.5625zm3.3634644 0q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -9.5625q0 -0.0625 0.015625 -0.109375q0.03125 -0.046875 0.09375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.109375l0 9.5625zm5.1135254 0.171875l-0.859375 2.375q-0.046875 0.109375 -0.21875 0.171875q-0.171875 0.0625 -0.53125 0.0625q-0.1875 0 -0.3125 -0.03125q-0.109375 -0.015625 -0.171875 -0.0625q-0.0625 -0.03125 -0.0625 -0.109375q0 -0.0625 0.03125 -0.171875l0.890625 -2.234375q-0.0625 -0.03125 -0.125 -0.09375q-0.046875 -0.0625 -0.078125 -0.140625l-2.296875 -6.15625q-0.046875 -0.140625 -0.046875 -0.21875q0 -0.09375 0.046875 -0.140625q0.0625 -0.0625 0.1875 -0.078125q0.125 -0.015625 0.34375 -0.015625q0.21875 0 0.328125 0.015625q0.125 0.015625 0.203125 0.046875q0.078125 0.015625 0.109375 0.078125q0.03125 0.046875 0.0625 0.140625l1.84375 5.171875l0.015625 0l1.78125 -5.203125q0.03125 -0.140625 0.09375 -0.171875q0.0625 -0.046875 0.1875 -0.0625q0.125 -0.015625 0.34375 -0.015625q0.203125 0 0.328125 0.015625q0.140625 0.015625 0.203125 0.078125q0.0625 0.046875 0.0625 0.140625q0 0.078125 -0.046875 0.203125l-2.3125 6.40625zm14.673279 -0.171875q0 0.046875 -0.03125 0.09375q-0.015625 0.046875 -0.078125 0.078125q-0.0625 0.015625 -0.171875 0.03125q-0.09375 0.015625 -0.234375 0.015625q-0.140625 0 -0.25 -0.015625q-0.09375 -0.015625 -0.15625 -0.03125q-0.0625 -0.03125 -0.09375 -0.078125q-0.03125 -0.046875 -0.03125 -0.09375l0 -0.859375q-0.515625 0.546875 -1.0625 0.859375q-0.546875 0.3125 -1.1875 0.3125q-0.71875 0 -1.21875 -0.28125q-0.5 -0.28125 -0.8125 -0.75q-0.3125 -0.46875 -0.453125 -1.09375q-0.140625 -0.640625 -0.140625 -1.34375q0 -0.828125 0.171875 -1.484375q0.1875 -0.671875 0.53125 -1.140625q0.359375 -0.484375 0.875 -0.734375q0.515625 -0.25 1.203125 -0.25q0.5625 0 1.03125 0.25q0.46875 0.234375 0.921875 0.71875l0 -3.75q0 -0.046875 0.015625 -0.09375q0.03125 -0.046875 0.109375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.109375 -0.015625 0.28125 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.09375l0 9.546875zm-1.1875 -4.53125q-0.484375 -0.59375 -0.9375 -0.90625q-0.4375 -0.3125 -0.921875 -0.3125q-0.453125 0 -0.765625 0.21875q-0.3125 0.203125 -0.515625 0.5625q-0.1875 0.34375 -0.28125 0.796875q-0.09375 0.4375 -0.09375 0.890625q0 0.484375 0.078125 0.953125q0.078125 0.46875 0.265625 0.828125q0.1875 0.359375 0.484375 0.578125q0.3125 0.21875 0.78125 0.21875q0.234375 0 0.453125 -0.0625q0.21875 -0.0625 0.4375 -0.203125q0.234375 -0.15625 0.484375 -0.390625q0.25 -0.25 0.53125 -0.59375l0 -2.578125zm8.887756 4.53125q0 0.046875 -0.03125 0.09375q-0.015625 0.03125 -0.078125 0.0625q-0.0625 0.03125 -0.171875 0.046875q-0.109375 0.015625 -0.25 0.015625q-0.171875 0 -0.28125 -0.015625q-0.09375 -0.015625 -0.15625 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -0.859375q-0.546875 0.609375 -1.078125 0.890625q-0.53125 0.28125 -1.09375 0.28125q-0.640625 0 -1.078125 -0.21875q-0.4375 -0.21875 -0.71875 -0.578125q-0.265625 -0.375 -0.390625 -0.859375q-0.109375 -0.5 -0.109375 -1.203125l0 -3.90625q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.109375 0.015625 0.171875 0.046875q0.078125 0.03125 0.109375 0.078125q0.03125 0.03125 0.03125 0.078125l0 3.75q0 0.578125 0.078125 0.921875q0.078125 0.328125 0.25 0.578125q0.171875 0.234375 0.421875 0.375q0.265625 0.125 0.609375 0.125q0.4375 0 0.875 -0.3125q0.453125 -0.328125 0.9375 -0.9375l0 -4.5q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.109375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.109375 -0.015625 0.28125 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 6.453125zm5.9502563 -6.03125q0 0.15625 -0.015625 0.265625q0 0.109375 -0.03125 0.171875q-0.015625 0.0625 -0.046875 0.09375q-0.03125 0.03125 -0.078125 0.03125q-0.0625 0 -0.15625 -0.03125q-0.078125 -0.03125 -0.1875 -0.0625q-0.09375 -0.03125 -0.21875 -0.0625q-0.125 -0.03125 -0.28125 -0.03125q-0.171875 0 -0.34375 0.078125q-0.171875 0.0625 -0.375 0.234375q-0.1875 0.15625 -0.390625 0.4375q-0.203125 0.265625 -0.453125 0.65625l0 4.25q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.0625 -0.03125 0.15625 -0.046875q0.109375 -0.015625 0.265625 -0.015625q0.171875 0 0.265625 0.015625q0.109375 0.015625 0.15625 0.046875q0.0625 0.03125 0.078125 0.078125q0.03125 0.03125 0.03125 0.078125l0 0.9375q0.265625 -0.375 0.5 -0.625q0.234375 -0.25 0.4375 -0.375q0.21875 -0.140625 0.421875 -0.1875q0.203125 -0.0625 0.40625 -0.0625q0.09375 0 0.203125 0.015625q0.125 0 0.25 0.03125q0.140625 0.03125 0.234375 0.0625q0.109375 0.03125 0.140625 0.078125q0.046875 0.03125 0.0625 0.0625q0.015625 0.03125 0.03125 0.078125q0.015625 0.046875 0.015625 0.15625q0 0.09375 0 0.25zm2.5314941 6.03125q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 6.453125zm0.125 -8.625q0 0.421875 -0.15625 0.578125q-0.15625 0.140625 -0.578125 0.140625q-0.40625 0 -0.5625 -0.140625q-0.15625 -0.15625 -0.15625 -0.5625q0 -0.421875 0.15625 -0.5625q0.15625 -0.15625 0.578125 -0.15625q0.421875 0 0.5625 0.15625q0.15625 0.140625 0.15625 0.546875zm7.5979004 8.625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.171875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.03125 -0.046875 -0.03125 -0.09375l0 -3.78125q0 -0.546875 -0.09375 -0.875q-0.078125 -0.34375 -0.25 -0.578125q-0.15625 -0.25 -0.421875 -0.375q-0.25 -0.140625 -0.59375 -0.140625q-0.4375 0 -0.890625 0.328125q-0.4375 0.3125 -0.921875 0.90625l0 4.515625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.0625 -0.03125 0.15625 -0.046875q0.109375 -0.015625 0.265625 -0.015625q0.171875 0 0.265625 0.015625q0.109375 0.015625 0.15625 0.046875q0.0625 0.03125 0.078125 0.078125q0.03125 0.03125 0.03125 0.078125l0 0.859375q0.546875 -0.609375 1.078125 -0.890625q0.546875 -0.28125 1.109375 -0.28125q0.640625 0 1.078125 0.21875q0.4375 0.21875 0.703125 0.578125q0.28125 0.359375 0.390625 0.859375q0.125 0.484375 0.125 1.171875l0 3.9375zm7.5283813 -6.15625q0 0.25 -0.0625 0.359375q-0.0625 0.109375 -0.171875 0.109375l-0.921875 0q0.25 0.265625 0.34375 0.578125q0.109375 0.3125 0.109375 0.640625q0 0.5625 -0.1875 1.0q-0.171875 0.421875 -0.515625 0.71875q-0.328125 0.296875 -0.78125 0.453125q-0.453125 0.15625 -1.015625 0.15625q-0.390625 0 -0.75 -0.09375q-0.359375 -0.109375 -0.546875 -0.265625q-0.125 0.125 -0.21875 0.296875q-0.078125 0.15625 -0.078125 0.375q0 0.25 0.234375 0.421875q0.234375 0.15625 0.625 0.171875l1.671875 0.0625q0.484375 0.015625 0.875 0.140625q0.40625 0.109375 0.703125 0.328125q0.296875 0.21875 0.453125 0.546875q0.171875 0.3125 0.171875 0.734375q0 0.453125 -0.1875 0.84375q-0.1875 0.40625 -0.578125 0.703125q-0.375 0.3125 -0.96875 0.484375q-0.59375 0.171875 -1.40625 0.171875q-0.78125 0 -1.328125 -0.140625q-0.546875 -0.125 -0.90625 -0.359375q-0.34375 -0.21875 -0.5 -0.546875q-0.15625 -0.3125 -0.15625 -0.6875q0 -0.234375 0.0625 -0.453125q0.0625 -0.21875 0.171875 -0.421875q0.125 -0.203125 0.296875 -0.375q0.171875 -0.1875 0.40625 -0.375q-0.359375 -0.171875 -0.53125 -0.4375q-0.15625 -0.28125 -0.15625 -0.59375q0 -0.4375 0.171875 -0.78125q0.1875 -0.34375 0.453125 -0.609375q-0.234375 -0.265625 -0.359375 -0.59375q-0.125 -0.34375 -0.125 -0.8125q0 -0.546875 0.1875 -0.984375q0.1875 -0.4375 0.515625 -0.734375q0.328125 -0.3125 0.78125 -0.46875q0.46875 -0.15625 1.015625 -0.15625q0.296875 0 0.546875 0.03125q0.25 0.03125 0.46875 0.078125l1.953125 0q0.125 0 0.171875 0.125q0.0625 0.125 0.0625 0.359375zm-1.84375 1.703125q0 -0.65625 -0.359375 -1.03125q-0.359375 -0.375 -1.03125 -0.375q-0.34375 0 -0.59375 0.125q-0.25 0.109375 -0.421875 0.3125q-0.171875 0.203125 -0.25 0.46875q-0.078125 0.25 -0.078125 0.53125q0 0.640625 0.359375 1.015625q0.359375 0.359375 1.015625 0.359375q0.34375 0 0.59375 -0.109375q0.265625 -0.109375 0.4375 -0.296875q0.171875 -0.203125 0.25 -0.453125q0.078125 -0.265625 0.078125 -0.546875zm0.59375 5.09375q0 -0.40625 -0.34375 -0.625q-0.328125 -0.234375 -0.90625 -0.25l-1.671875 -0.0625q-0.234375 0.1875 -0.375 0.34375q-0.140625 0.15625 -0.234375 0.296875q-0.078125 0.15625 -0.125 0.296875q-0.03125 0.140625 -0.03125 0.296875q0 0.46875 0.46875 0.703125q0.484375 0.234375 1.328125 0.234375q0.53125 0 0.890625 -0.109375q0.375 -0.09375 0.59375 -0.265625q0.21875 -0.171875 0.3125 -0.390625q0.09375 -0.21875 0.09375 -0.46875z" fill-rule="nonzero"/><path fill="#000000" d="m676.26025 571.31757q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 6.453125zm0.125 -8.625q0 0.421875 -0.15625 0.578125q-0.15625 0.140625 -0.578125 0.140625q-0.40625 0 -0.5625 -0.140625q-0.15625 -0.15625 -0.15625 -0.5625q0 -0.421875 0.15625 -0.5625q0.15625 -0.15625 0.578125 -0.15625q0.421875 0 0.5625 0.15625q0.15625 0.140625 0.15625 0.546875zm7.5978394 8.625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.171875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.03125 -0.046875 -0.03125 -0.09375l0 -3.78125q0 -0.546875 -0.09375 -0.875q-0.078125 -0.34375 -0.25 -0.578125q-0.15625 -0.25 -0.421875 -0.375q-0.25 -0.140625 -0.59375 -0.140625q-0.4375 0 -0.890625 0.328125q-0.4375 0.3125 -0.921875 0.90625l0 4.515625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.0625 -0.03125 0.15625 -0.046875q0.109375 -0.015625 0.265625 -0.015625q0.171875 0 0.265625 0.015625q0.109375 0.015625 0.15625 0.046875q0.0625 0.03125 0.078125 0.078125q0.03125 0.03125 0.03125 0.078125l0 0.859375q0.546875 -0.609375 1.078125 -0.890625q0.546875 -0.28125 1.109375 -0.28125q0.640625 0 1.078125 0.21875q0.4375 0.21875 0.703125 0.578125q0.28125 0.359375 0.390625 0.859375q0.125 0.484375 0.125 1.171875l0 3.9375zm6.2002563 -1.765625q0 0.5 -0.1875 0.890625q-0.1875 0.375 -0.53125 0.640625q-0.328125 0.265625 -0.796875 0.40625q-0.453125 0.140625 -1.015625 0.140625q-0.34375 0 -0.65625 -0.0625q-0.3125 -0.046875 -0.5625 -0.125q-0.234375 -0.09375 -0.40625 -0.171875q-0.171875 -0.09375 -0.25 -0.15625q-0.078125 -0.078125 -0.125 -0.203125q-0.03125 -0.140625 -0.03125 -0.359375q0 -0.140625 0.015625 -0.234375q0.015625 -0.09375 0.03125 -0.140625q0.03125 -0.0625 0.0625 -0.078125q0.046875 -0.03125 0.09375 -0.03125q0.078125 0 0.234375 0.09375q0.15625 0.09375 0.375 0.21875q0.234375 0.109375 0.53125 0.203125q0.3125 0.09375 0.71875 0.09375q0.296875 0 0.53125 -0.0625q0.25 -0.0625 0.421875 -0.1875q0.1875 -0.125 0.28125 -0.3125q0.09375 -0.203125 0.09375 -0.46875q0 -0.265625 -0.140625 -0.453125q-0.140625 -0.1875 -0.375 -0.328125q-0.21875 -0.140625 -0.515625 -0.25q-0.28125 -0.109375 -0.59375 -0.234375q-0.296875 -0.125 -0.59375 -0.28125q-0.28125 -0.15625 -0.515625 -0.375q-0.21875 -0.21875 -0.359375 -0.515625q-0.140625 -0.3125 -0.140625 -0.75q0 -0.375 0.140625 -0.71875q0.15625 -0.359375 0.453125 -0.609375q0.296875 -0.265625 0.734375 -0.421875q0.4375 -0.15625 1.015625 -0.15625q0.265625 0 0.515625 0.046875q0.265625 0.03125 0.46875 0.09375q0.203125 0.0625 0.34375 0.140625q0.15625 0.078125 0.234375 0.140625q0.078125 0.046875 0.09375 0.09375q0.03125 0.046875 0.03125 0.109375q0.015625 0.046875 0.03125 0.125q0.015625 0.078125 0.015625 0.1875q0 0.125 -0.015625 0.21875q-0.015625 0.078125 -0.046875 0.140625q-0.015625 0.0625 -0.046875 0.09375q-0.03125 0.015625 -0.078125 0.015625q-0.0625 0 -0.1875 -0.078125q-0.125 -0.078125 -0.328125 -0.171875q-0.1875 -0.09375 -0.453125 -0.171875q-0.25 -0.078125 -0.59375 -0.078125q-0.296875 0 -0.53125 0.078125q-0.21875 0.0625 -0.375 0.1875q-0.140625 0.125 -0.21875 0.296875q-0.0625 0.171875 -0.0625 0.375q0 0.28125 0.140625 0.46875q0.140625 0.1875 0.359375 0.328125q0.234375 0.140625 0.53125 0.265625q0.296875 0.109375 0.59375 0.234375q0.3125 0.125 0.609375 0.28125q0.296875 0.140625 0.515625 0.359375q0.234375 0.203125 0.375 0.515625q0.140625 0.296875 0.140625 0.703125zm5.029175 1.28125q0 0.21875 -0.03125 0.34375q-0.015625 0.109375 -0.078125 0.171875q-0.0625 0.0625 -0.171875 0.109375q-0.109375 0.046875 -0.265625 0.078125q-0.140625 0.03125 -0.3125 0.046875q-0.15625 0.03125 -0.328125 0.03125q-0.5 0 -0.859375 -0.125q-0.34375 -0.140625 -0.578125 -0.40625q-0.234375 -0.28125 -0.34375 -0.6875q-0.09375 -0.40625 -0.09375 -0.96875l0 -3.765625l-0.90625 0q-0.109375 0 -0.171875 -0.109375q-0.0625 -0.109375 -0.0625 -0.375q0 -0.140625 0.015625 -0.234375q0.015625 -0.09375 0.046875 -0.140625q0.03125 -0.0625 0.078125 -0.09375q0.046875 -0.03125 0.109375 -0.03125l0.890625 0l0 -1.53125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.28125 -0.015625q0.1875 0 0.296875 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 1.53125l1.640625 0q0.0625 0 0.09375 0.03125q0.046875 0.03125 0.078125 0.09375q0.046875 0.046875 0.046875 0.140625q0.015625 0.09375 0.015625 0.234375q0 0.265625 -0.0625 0.375q-0.0625 0.109375 -0.171875 0.109375l-1.640625 0l0 3.59375q0 0.671875 0.1875 1.015625q0.203125 0.328125 0.703125 0.328125q0.171875 0 0.296875 -0.03125q0.125 -0.03125 0.21875 -0.0625q0.109375 -0.03125 0.171875 -0.0625q0.078125 -0.046875 0.140625 -0.046875q0.03125 0 0.0625 0.03125q0.03125 0.015625 0.046875 0.0625q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125zm6.4248657 0.484375q0 0.09375 -0.0625 0.140625q-0.0625 0.03125 -0.171875 0.046875q-0.09375 0.03125 -0.28125 0.03125q-0.1875 0 -0.296875 -0.03125q-0.109375 -0.015625 -0.15625 -0.046875q-0.046875 -0.046875 -0.046875 -0.140625l0 -0.640625q-0.421875 0.453125 -0.953125 0.703125q-0.515625 0.25 -1.09375 0.25q-0.5 0 -0.921875 -0.140625q-0.40625 -0.125 -0.703125 -0.375q-0.28125 -0.25 -0.453125 -0.609375q-0.15625 -0.375 -0.15625 -0.84375q0 -0.546875 0.21875 -0.9375q0.234375 -0.40625 0.640625 -0.671875q0.421875 -0.265625 1.015625 -0.390625q0.609375 -0.140625 1.359375 -0.140625l0.875 0l0 -0.5q0 -0.375 -0.078125 -0.65625q-0.078125 -0.28125 -0.25 -0.46875q-0.171875 -0.203125 -0.453125 -0.296875q-0.28125 -0.09375 -0.6875 -0.09375q-0.4375 0 -0.78125 0.109375q-0.34375 0.09375 -0.609375 0.21875q-0.265625 0.125 -0.4375 0.234375q-0.171875 0.109375 -0.265625 0.109375q-0.046875 0 -0.09375 -0.03125q-0.046875 -0.03125 -0.078125 -0.078125q-0.03125 -0.0625 -0.046875 -0.15625q-0.015625 -0.09375 -0.015625 -0.203125q0 -0.171875 0.015625 -0.265625q0.03125 -0.109375 0.125 -0.203125q0.109375 -0.09375 0.34375 -0.21875q0.234375 -0.125 0.53125 -0.234375q0.3125 -0.109375 0.671875 -0.171875q0.375 -0.0625 0.75 -0.0625q0.6875 0 1.171875 0.15625q0.5 0.15625 0.796875 0.46875q0.296875 0.296875 0.4375 0.75q0.140625 0.453125 0.140625 1.046875l0 4.34375zm-1.1875 -2.9375l-1.0 0q-0.484375 0 -0.84375 0.078125q-0.359375 0.078125 -0.59375 0.25q-0.234375 0.15625 -0.34375 0.390625q-0.109375 0.21875 -0.109375 0.515625q0 0.5 0.3125 0.796875q0.3125 0.296875 0.890625 0.296875q0.46875 0 0.859375 -0.234375q0.40625 -0.25 0.828125 -0.734375l0 -1.359375zm4.5360107 2.9375q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -9.5625q0 -0.0625 0.015625 -0.109375q0.03125 -0.046875 0.09375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.109375l0 9.5625zm3.3635254 0q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -9.5625q0 -0.0625 0.015625 -0.109375q0.03125 -0.046875 0.09375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.109375l0 9.5625zm7.0353394 0q0 0.09375 -0.0625 0.140625q-0.0625 0.03125 -0.171875 0.046875q-0.09375 0.03125 -0.28125 0.03125q-0.1875 0 -0.296875 -0.03125q-0.109375 -0.015625 -0.15625 -0.046875q-0.046875 -0.046875 -0.046875 -0.140625l0 -0.640625q-0.421875 0.453125 -0.953125 0.703125q-0.515625 0.25 -1.09375 0.25q-0.5 0 -0.921875 -0.140625q-0.40625 -0.125 -0.703125 -0.375q-0.28125 -0.25 -0.453125 -0.609375q-0.15625 -0.375 -0.15625 -0.84375q0 -0.546875 0.21875 -0.9375q0.234375 -0.40625 0.640625 -0.671875q0.421875 -0.265625 1.015625 -0.390625q0.609375 -0.140625 1.359375 -0.140625l0.875 0l0 -0.5q0 -0.375 -0.078125 -0.65625q-0.078125 -0.28125 -0.25 -0.46875q-0.171875 -0.203125 -0.453125 -0.296875q-0.28125 -0.09375 -0.6875 -0.09375q-0.4375 0 -0.78125 0.109375q-0.34375 0.09375 -0.609375 0.21875q-0.265625 0.125 -0.4375 0.234375q-0.171875 0.109375 -0.265625 0.109375q-0.046875 0 -0.09375 -0.03125q-0.046875 -0.03125 -0.078125 -0.078125q-0.03125 -0.0625 -0.046875 -0.15625q-0.015625 -0.09375 -0.015625 -0.203125q0 -0.171875 0.015625 -0.265625q0.03125 -0.109375 0.125 -0.203125q0.109375 -0.09375 0.34375 -0.21875q0.234375 -0.125 0.53125 -0.234375q0.3125 -0.109375 0.671875 -0.171875q0.375 -0.0625 0.75 -0.0625q0.6875 0 1.171875 0.15625q0.5 0.15625 0.796875 0.46875q0.296875 0.296875 0.4375 0.75q0.140625 0.453125 0.140625 1.046875l0 4.34375zm-1.1875 -2.9375l-1.0 0q-0.484375 0 -0.84375 0.078125q-0.359375 0.078125 -0.59375 0.25q-0.234375 0.15625 -0.34375 0.390625q-0.109375 0.21875 -0.109375 0.515625q0 0.5 0.3125 0.796875q0.3125 0.296875 0.890625 0.296875q0.46875 0 0.859375 -0.234375q0.40625 -0.25 0.828125 -0.734375l0 -1.359375zm6.692322 2.453125q0 0.21875 -0.03125 0.34375q-0.015625 0.109375 -0.078125 0.171875q-0.0625 0.0625 -0.171875 0.109375q-0.109375 0.046875 -0.265625 0.078125q-0.140625 0.03125 -0.3125 0.046875q-0.15625 0.03125 -0.328125 0.03125q-0.5 0 -0.859375 -0.125q-0.34375 -0.140625 -0.578125 -0.40625q-0.234375 -0.28125 -0.34375 -0.6875q-0.09375 -0.40625 -0.09375 -0.96875l0 -3.765625l-0.90625 0q-0.109375 0 -0.171875 -0.109375q-0.0625 -0.109375 -0.0625 -0.375q0 -0.140625 0.015625 -0.234375q0.015625 -0.09375 0.046875 -0.140625q0.03125 -0.0625 0.078125 -0.09375q0.046875 -0.03125 0.109375 -0.03125l0.890625 0l0 -1.53125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.28125 -0.015625q0.1875 0 0.296875 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 1.53125l1.640625 0q0.0625 0 0.09375 0.03125q0.046875 0.03125 0.078125 0.09375q0.046875 0.046875 0.046875 0.140625q0.015625 0.09375 0.015625 0.234375q0 0.265625 -0.0625 0.375q-0.0625 0.109375 -0.171875 0.109375l-1.640625 0l0 3.59375q0 0.671875 0.1875 1.015625q0.203125 0.328125 0.703125 0.328125q0.171875 0 0.296875 -0.03125q0.125 -0.03125 0.21875 -0.0625q0.109375 -0.03125 0.171875 -0.0625q0.078125 -0.046875 0.140625 -0.046875q0.03125 0 0.0625 0.03125q0.03125 0.015625 0.046875 0.0625q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125zm2.7529907 0.484375q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 6.453125zm0.125 -8.625q0 0.421875 -0.15625 0.578125q-0.15625 0.140625 -0.578125 0.140625q-0.40625 0 -0.5625 -0.140625q-0.15625 -0.15625 -0.15625 -0.5625q0 -0.421875 0.15625 -0.5625q0.15625 -0.15625 0.578125 -0.15625q0.421875 0 0.5625 0.15625q0.15625 0.140625 0.15625 0.546875zm8.0354 5.328125q0 0.78125 -0.203125 1.453125q-0.203125 0.65625 -0.625 1.140625q-0.40625 0.46875 -1.03125 0.75q-0.609375 0.265625 -1.421875 0.265625q-0.796875 0 -1.390625 -0.234375q-0.59375 -0.25 -0.984375 -0.6875q-0.390625 -0.453125 -0.59375 -1.09375q-0.1875 -0.65625 -0.1875 -1.46875q0 -0.78125 0.203125 -1.4375q0.203125 -0.671875 0.609375 -1.140625q0.421875 -0.484375 1.03125 -0.75q0.625 -0.265625 1.4375 -0.265625q0.796875 0 1.390625 0.234375q0.59375 0.234375 0.984375 0.6875q0.390625 0.453125 0.578125 1.09375q0.203125 0.640625 0.203125 1.453125zm-1.234375 0.078125q0 -0.53125 -0.109375 -0.984375q-0.09375 -0.46875 -0.3125 -0.8125q-0.21875 -0.359375 -0.609375 -0.5625q-0.375 -0.203125 -0.9375 -0.203125q-0.515625 0 -0.890625 0.1875q-0.375 0.1875 -0.625 0.53125q-0.234375 0.328125 -0.359375 0.796875q-0.125 0.46875 -0.125 1.015625q0 0.53125 0.09375 1.0q0.109375 0.46875 0.328125 0.8125q0.234375 0.34375 0.609375 0.546875q0.375 0.203125 0.9375 0.203125q0.515625 0 0.890625 -0.1875q0.390625 -0.1875 0.625 -0.515625q0.25 -0.34375 0.359375 -0.796875q0.125 -0.46875 0.125 -1.03125zm8.525757 3.21875q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.171875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.03125 -0.046875 -0.03125 -0.09375l0 -3.78125q0 -0.546875 -0.09375 -0.875q-0.078125 -0.34375 -0.25 -0.578125q-0.15625 -0.25 -0.421875 -0.375q-0.25 -0.140625 -0.59375 -0.140625q-0.4375 0 -0.890625 0.328125q-0.4375 0.3125 -0.921875 0.90625l0 4.515625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.0625 -0.03125 0.15625 -0.046875q0.109375 -0.015625 0.265625 -0.015625q0.171875 0 0.265625 0.015625q0.109375 0.015625 0.15625 0.046875q0.0625 0.03125 0.078125 0.078125q0.03125 0.03125 0.03125 0.078125l0 0.859375q0.546875 -0.609375 1.078125 -0.890625q0.546875 -0.28125 1.109375 -0.28125q0.640625 0 1.078125 0.21875q0.4375 0.21875 0.703125 0.578125q0.28125 0.359375 0.390625 0.859375q0.125 0.484375 0.125 1.171875l0 3.9375zm3.6846313 -0.609375q0 0.515625 -0.171875 0.6875q-0.171875 0.15625 -0.609375 0.15625q-0.4375 0 -0.609375 -0.15625q-0.15625 -0.171875 -0.15625 -0.671875q0 -0.5 0.171875 -0.671875q0.171875 -0.171875 0.609375 -0.171875q0.4375 0 0.59375 0.171875q0.171875 0.15625 0.171875 0.65625z" fill-rule="nonzero"/><path fill="#3c78d8" d="m647.66144 592.92914l15.810974 0l0 19.212585l-15.810974 0z" fill-rule="evenodd"/><path stroke="#38761d" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m647.66144 592.92914l15.810974 0l0 19.212585l-15.810974 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m664.979 583.80035l267.9685 0l0 75.968506l-267.9685 0z" fill-rule="evenodd"/><path fill="#000000" d="m681.01025 598.146q0 0.140625 -0.015625 0.25q-0.015625 0.09375 -0.046875 0.15625q-0.03125 0.0625 -0.078125 0.09375q-0.046875 0.015625 -0.09375 0.015625l-2.609375 0l0 8.03125q0 0.0625 -0.03125 0.109375q-0.03125 0.03125 -0.109375 0.0625q-0.0625 0.015625 -0.1875 0.03125q-0.109375 0.03125 -0.28125 0.03125q-0.171875 0 -0.296875 -0.03125q-0.125 -0.015625 -0.203125 -0.03125q-0.0625 -0.03125 -0.09375 -0.0625q-0.03125 -0.046875 -0.03125 -0.109375l0 -8.03125l-2.609375 0q-0.046875 0 -0.09375 -0.015625q-0.046875 -0.03125 -0.078125 -0.09375q-0.03125 -0.0625 -0.046875 -0.15625q-0.015625 -0.109375 -0.015625 -0.25q0 -0.125 0.015625 -0.234375q0.015625 -0.109375 0.046875 -0.171875q0.03125 -0.0625 0.078125 -0.09375q0.046875 -0.03125 0.09375 -0.03125l6.453125 0q0.046875 0 0.09375 0.03125q0.046875 0.03125 0.078125 0.09375q0.03125 0.0625 0.046875 0.171875q0.015625 0.109375 0.015625 0.234375zm6.751404 8.5625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.171875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.03125 -0.046875 -0.03125 -0.09375l0 -3.78125q0 -0.546875 -0.09375 -0.875q-0.078125 -0.34375 -0.25 -0.578125q-0.15625 -0.25 -0.421875 -0.375q-0.25 -0.140625 -0.59375 -0.140625q-0.4375 0 -0.890625 0.328125q-0.4375 0.3125 -0.921875 0.90625l0 4.515625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -9.5625q0 -0.0625 0.015625 -0.109375q0.03125 -0.046875 0.09375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.109375l0 3.859375q0.5 -0.546875 1.015625 -0.796875q0.515625 -0.265625 1.046875 -0.265625q0.640625 0 1.078125 0.21875q0.4375 0.21875 0.703125 0.578125q0.28125 0.359375 0.390625 0.859375q0.125 0.484375 0.125 1.1875l0 3.921875zm7.6533813 -3.5q0 0.265625 -0.140625 0.390625q-0.140625 0.125 -0.3125 0.125l-4.234375 0q0 0.53125 0.109375 0.96875q0.109375 0.421875 0.359375 0.734375q0.25 0.296875 0.640625 0.46875q0.40625 0.15625 0.984375 0.15625q0.46875 0 0.828125 -0.0625q0.359375 -0.078125 0.609375 -0.171875q0.265625 -0.09375 0.4375 -0.171875q0.171875 -0.078125 0.25 -0.078125q0.046875 0 0.078125 0.03125q0.046875 0.015625 0.0625 0.078125q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125q0 0.09375 0 0.171875q0 0.0625 -0.015625 0.125q-0.015625 0.046875 -0.046875 0.09375q-0.015625 0.046875 -0.0625 0.09375q-0.03125 0.03125 -0.234375 0.125q-0.1875 0.078125 -0.5 0.171875q-0.296875 0.078125 -0.703125 0.140625q-0.40625 0.078125 -0.859375 0.078125q-0.796875 0 -1.40625 -0.21875q-0.59375 -0.234375 -1.0 -0.671875q-0.40625 -0.4375 -0.609375 -1.09375q-0.203125 -0.65625 -0.203125 -1.53125q0 -0.828125 0.203125 -1.484375q0.21875 -0.671875 0.625 -1.125q0.40625 -0.46875 0.96875 -0.703125q0.578125 -0.25 1.28125 -0.25q0.765625 0 1.296875 0.25q0.53125 0.234375 0.875 0.65625q0.34375 0.40625 0.5 0.96875q0.171875 0.546875 0.171875 1.171875l0 0.21875zm-1.1875 -0.359375q0.015625 -0.921875 -0.421875 -1.453125q-0.421875 -0.53125 -1.28125 -0.53125q-0.4375 0 -0.765625 0.171875q-0.328125 0.15625 -0.546875 0.4375q-0.21875 0.265625 -0.34375 0.625q-0.125 0.359375 -0.140625 0.75l3.5 0zm7.0267334 2.09375q0 0.5 -0.1875 0.890625q-0.1875 0.375 -0.53125 0.640625q-0.328125 0.265625 -0.796875 0.40625q-0.453125 0.140625 -1.015625 0.140625q-0.34375 0 -0.65625 -0.0625q-0.3125 -0.046875 -0.5625 -0.125q-0.234375 -0.09375 -0.40625 -0.171875q-0.171875 -0.09375 -0.25 -0.15625q-0.078125 -0.078125 -0.125 -0.203125q-0.03125 -0.140625 -0.03125 -0.359375q0 -0.140625 0.015625 -0.234375q0.015625 -0.09375 0.03125 -0.140625q0.03125 -0.0625 0.0625 -0.078125q0.046875 -0.03125 0.09375 -0.03125q0.078125 0 0.234375 0.09375q0.15625 0.09375 0.375 0.21875q0.234375 0.109375 0.53125 0.203125q0.3125 0.09375 0.71875 0.09375q0.296875 0 0.53125 -0.0625q0.25 -0.0625 0.421875 -0.1875q0.1875 -0.125 0.28125 -0.3125q0.09375 -0.203125 0.09375 -0.46875q0 -0.265625 -0.140625 -0.453125q-0.140625 -0.1875 -0.375 -0.328125q-0.21875 -0.140625 -0.515625 -0.25q-0.28125 -0.109375 -0.59375 -0.234375q-0.296875 -0.125 -0.59375 -0.28125q-0.28125 -0.15625 -0.515625 -0.375q-0.21875 -0.21875 -0.359375 -0.515625q-0.140625 -0.3125 -0.140625 -0.75q0 -0.375 0.140625 -0.71875q0.15625 -0.359375 0.453125 -0.609375q0.296875 -0.265625 0.734375 -0.421875q0.4375 -0.15625 1.015625 -0.15625q0.265625 0 0.515625 0.046875q0.265625 0.03125 0.46875 0.09375q0.203125 0.0625 0.34375 0.140625q0.15625 0.078125 0.234375 0.140625q0.078125 0.046875 0.09375 0.09375q0.03125 0.046875 0.03125 0.109375q0.015625 0.046875 0.03125 0.125q0.015625 0.078125 0.015625 0.1875q0 0.125 -0.015625 0.21875q-0.015625 0.078125 -0.046875 0.140625q-0.015625 0.0625 -0.046875 0.09375q-0.03125 0.015625 -0.078125 0.015625q-0.0625 0 -0.1875 -0.078125q-0.125 -0.078125 -0.328125 -0.171875q-0.1875 -0.09375 -0.453125 -0.171875q-0.25 -0.078125 -0.59375 -0.078125q-0.296875 0 -0.53125 0.078125q-0.21875 0.0625 -0.375 0.1875q-0.140625 0.125 -0.21875 0.296875q-0.0625 0.171875 -0.0625 0.375q0 0.28125 0.140625 0.46875q0.140625 0.1875 0.359375 0.328125q0.234375 0.140625 0.53125 0.265625q0.296875 0.109375 0.59375 0.234375q0.3125 0.125 0.609375 0.28125q0.296875 0.140625 0.515625 0.359375q0.234375 0.203125 0.375 0.515625q0.140625 0.296875 0.140625 0.703125zm7.185364 -1.734375q0 0.265625 -0.140625 0.390625q-0.140625 0.125 -0.3125 0.125l-4.234375 0q0 0.53125 0.109375 0.96875q0.109375 0.421875 0.359375 0.734375q0.25 0.296875 0.640625 0.46875q0.40625 0.15625 0.984375 0.15625q0.46875 0 0.828125 -0.0625q0.359375 -0.078125 0.609375 -0.171875q0.265625 -0.09375 0.4375 -0.171875q0.171875 -0.078125 0.25 -0.078125q0.046875 0 0.078125 0.03125q0.046875 0.015625 0.0625 0.078125q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125q0 0.09375 0 0.171875q0 0.0625 -0.015625 0.125q-0.015625 0.046875 -0.046875 0.09375q-0.015625 0.046875 -0.0625 0.09375q-0.03125 0.03125 -0.234375 0.125q-0.1875 0.078125 -0.5 0.171875q-0.296875 0.078125 -0.703125 0.140625q-0.40625 0.078125 -0.859375 0.078125q-0.796875 0 -1.40625 -0.21875q-0.59375 -0.234375 -1.0 -0.671875q-0.40625 -0.4375 -0.609375 -1.09375q-0.203125 -0.65625 -0.203125 -1.53125q0 -0.828125 0.203125 -1.484375q0.21875 -0.671875 0.625 -1.125q0.40625 -0.46875 0.96875 -0.703125q0.578125 -0.25 1.28125 -0.25q0.765625 0 1.296875 0.25q0.53125 0.234375 0.875 0.65625q0.34375 0.40625 0.5 0.96875q0.171875 0.546875 0.171875 1.171875l0 0.21875zm-1.1875 -0.359375q0.015625 -0.921875 -0.421875 -1.453125q-0.421875 -0.53125 -1.28125 -0.53125q-0.4375 0 -0.765625 0.171875q-0.328125 0.15625 -0.546875 0.4375q-0.21875 0.265625 -0.34375 0.625q-0.125 0.359375 -0.140625 0.75l3.5 0zm13.545776 3.859375q0 0.046875 -0.03125 0.09375q-0.015625 0.046875 -0.078125 0.078125q-0.0625 0.015625 -0.171875 0.03125q-0.09375 0.015625 -0.234375 0.015625q-0.140625 0 -0.25 -0.015625q-0.09375 -0.015625 -0.15625 -0.03125q-0.0625 -0.03125 -0.09375 -0.078125q-0.03125 -0.046875 -0.03125 -0.09375l0 -0.859375q-0.515625 0.546875 -1.0625 0.859375q-0.546875 0.3125 -1.1875 0.3125q-0.71875 0 -1.21875 -0.28125q-0.5 -0.28125 -0.8125 -0.75q-0.3125 -0.46875 -0.453125 -1.09375q-0.140625 -0.640625 -0.140625 -1.34375q0 -0.828125 0.171875 -1.484375q0.1875 -0.671875 0.53125 -1.140625q0.359375 -0.484375 0.875 -0.734375q0.515625 -0.25 1.203125 -0.25q0.5625 0 1.03125 0.25q0.46875 0.234375 0.921875 0.71875l0 -3.75q0 -0.046875 0.015625 -0.09375q0.03125 -0.046875 0.109375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.109375 -0.015625 0.28125 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.09375l0 9.546875zm-1.1875 -4.53125q-0.484375 -0.59375 -0.9375 -0.90625q-0.4375 -0.3125 -0.921875 -0.3125q-0.453125 0 -0.765625 0.21875q-0.3125 0.203125 -0.515625 0.5625q-0.1875 0.34375 -0.28125 0.796875q-0.09375 0.4375 -0.09375 0.890625q0 0.484375 0.078125 0.953125q0.078125 0.46875 0.265625 0.828125q0.1875 0.359375 0.484375 0.578125q0.3125 0.21875 0.78125 0.21875q0.234375 0 0.453125 -0.0625q0.21875 -0.0625 0.4375 -0.203125q0.234375 -0.15625 0.484375 -0.390625q0.25 -0.25 0.53125 -0.59375l0 -2.578125zm8.231506 4.53125q0 0.09375 -0.0625 0.140625q-0.0625 0.03125 -0.171875 0.046875q-0.09375 0.03125 -0.28125 0.03125q-0.1875 0 -0.296875 -0.03125q-0.109375 -0.015625 -0.15625 -0.046875q-0.046875 -0.046875 -0.046875 -0.140625l0 -0.640625q-0.421875 0.453125 -0.953125 0.703125q-0.515625 0.25 -1.09375 0.25q-0.5 0 -0.921875 -0.140625q-0.40625 -0.125 -0.703125 -0.375q-0.28125 -0.25 -0.453125 -0.609375q-0.15625 -0.375 -0.15625 -0.84375q0 -0.546875 0.21875 -0.9375q0.234375 -0.40625 0.640625 -0.671875q0.421875 -0.265625 1.015625 -0.390625q0.609375 -0.140625 1.359375 -0.140625l0.875 0l0 -0.5q0 -0.375 -0.078125 -0.65625q-0.078125 -0.28125 -0.25 -0.46875q-0.171875 -0.203125 -0.453125 -0.296875q-0.28125 -0.09375 -0.6875 -0.09375q-0.4375 0 -0.78125 0.109375q-0.34375 0.09375 -0.609375 0.21875q-0.265625 0.125 -0.4375 0.234375q-0.171875 0.109375 -0.265625 0.109375q-0.046875 0 -0.09375 -0.03125q-0.046875 -0.03125 -0.078125 -0.078125q-0.03125 -0.0625 -0.046875 -0.15625q-0.015625 -0.09375 -0.015625 -0.203125q0 -0.171875 0.015625 -0.265625q0.03125 -0.109375 0.125 -0.203125q0.109375 -0.09375 0.34375 -0.21875q0.234375 -0.125 0.53125 -0.234375q0.3125 -0.109375 0.671875 -0.171875q0.375 -0.0625 0.75 -0.0625q0.6875 0 1.171875 0.15625q0.5 0.15625 0.796875 0.46875q0.296875 0.296875 0.4375 0.75q0.140625 0.453125 0.140625 1.046875l0 4.34375zm-1.1875 -2.9375l-1.0 0q-0.484375 0 -0.84375 0.078125q-0.359375 0.078125 -0.59375 0.25q-0.234375 0.15625 -0.34375 0.390625q-0.109375 0.21875 -0.109375 0.515625q0 0.5 0.3125 0.796875q0.3125 0.296875 0.890625 0.296875q0.46875 0 0.859375 -0.234375q0.40625 -0.25 0.828125 -0.734375l0 -1.359375zm7.3953857 1.171875q0 0.5 -0.1875 0.890625q-0.1875 0.375 -0.53125 0.640625q-0.328125 0.265625 -0.796875 0.40625q-0.453125 0.140625 -1.015625 0.140625q-0.34375 0 -0.65625 -0.0625q-0.3125 -0.046875 -0.5625 -0.125q-0.234375 -0.09375 -0.40625 -0.171875q-0.171875 -0.09375 -0.25 -0.15625q-0.078125 -0.078125 -0.125 -0.203125q-0.03125 -0.140625 -0.03125 -0.359375q0 -0.140625 0.015625 -0.234375q0.015625 -0.09375 0.03125 -0.140625q0.03125 -0.0625 0.0625 -0.078125q0.046875 -0.03125 0.09375 -0.03125q0.078125 0 0.234375 0.09375q0.15625 0.09375 0.375 0.21875q0.234375 0.109375 0.53125 0.203125q0.3125 0.09375 0.71875 0.09375q0.296875 0 0.53125 -0.0625q0.25 -0.0625 0.421875 -0.1875q0.1875 -0.125 0.28125 -0.3125q0.09375 -0.203125 0.09375 -0.46875q0 -0.265625 -0.140625 -0.453125q-0.140625 -0.1875 -0.375 -0.328125q-0.21875 -0.140625 -0.515625 -0.25q-0.28125 -0.109375 -0.59375 -0.234375q-0.296875 -0.125 -0.59375 -0.28125q-0.28125 -0.15625 -0.515625 -0.375q-0.21875 -0.21875 -0.359375 -0.515625q-0.140625 -0.3125 -0.140625 -0.75q0 -0.375 0.140625 -0.71875q0.15625 -0.359375 0.453125 -0.609375q0.296875 -0.265625 0.734375 -0.421875q0.4375 -0.15625 1.015625 -0.15625q0.265625 0 0.515625 0.046875q0.265625 0.03125 0.46875 0.09375q0.203125 0.0625 0.34375 0.140625q0.15625 0.078125 0.234375 0.140625q0.078125 0.046875 0.09375 0.09375q0.03125 0.046875 0.03125 0.109375q0.015625 0.046875 0.03125 0.125q0.015625 0.078125 0.015625 0.1875q0 0.125 -0.015625 0.21875q-0.015625 0.078125 -0.046875 0.140625q-0.015625 0.0625 -0.046875 0.09375q-0.03125 0.015625 -0.078125 0.015625q-0.0625 0 -0.1875 -0.078125q-0.125 -0.078125 -0.328125 -0.171875q-0.1875 -0.09375 -0.453125 -0.171875q-0.25 -0.078125 -0.59375 -0.078125q-0.296875 0 -0.53125 0.078125q-0.21875 0.0625 -0.375 0.1875q-0.140625 0.125 -0.21875 0.296875q-0.0625 0.171875 -0.0625 0.375q0 0.28125 0.140625 0.46875q0.140625 0.1875 0.359375 0.328125q0.234375 0.140625 0.53125 0.265625q0.296875 0.109375 0.59375 0.234375q0.3125 0.125 0.609375 0.28125q0.296875 0.140625 0.515625 0.359375q0.234375 0.203125 0.375 0.515625q0.140625 0.296875 0.140625 0.703125zm7.232239 1.765625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.171875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.03125 -0.046875 -0.03125 -0.09375l0 -3.78125q0 -0.546875 -0.09375 -0.875q-0.078125 -0.34375 -0.25 -0.578125q-0.15625 -0.25 -0.421875 -0.375q-0.25 -0.140625 -0.59375 -0.140625q-0.4375 0 -0.890625 0.328125q-0.4375 0.3125 -0.921875 0.90625l0 4.515625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -9.5625q0 -0.0625 0.015625 -0.109375q0.03125 -0.046875 0.09375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.109375l0 3.859375q0.5 -0.546875 1.015625 -0.796875q0.515625 -0.265625 1.046875 -0.265625q0.640625 0 1.078125 0.21875q0.4375 0.21875 0.703125 0.578125q0.28125 0.359375 0.390625 0.859375q0.125 0.484375 0.125 1.1875l0 3.921875zm8.075256 -3.3125q0 0.84375 -0.1875 1.515625q-0.171875 0.65625 -0.53125 1.140625q-0.34375 0.46875 -0.859375 0.71875q-0.515625 0.25 -1.1875 0.25q-0.3125 0 -0.578125 -0.0625q-0.25 -0.0625 -0.5 -0.1875q-0.25 -0.140625 -0.5 -0.34375q-0.25 -0.21875 -0.53125 -0.515625l0 0.796875q0 0.046875 -0.03125 0.09375q-0.03125 0.046875 -0.09375 0.078125q-0.0625 0.015625 -0.15625 0.03125q-0.09375 0.015625 -0.25 0.015625q-0.140625 0 -0.25 -0.015625q-0.09375 -0.015625 -0.15625 -0.03125q-0.0625 -0.03125 -0.09375 -0.078125q-0.015625 -0.046875 -0.015625 -0.09375l0 -9.5625q0 -0.0625 0.015625 -0.109375q0.03125 -0.046875 0.09375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.109375l0 3.859375q0.28125 -0.296875 0.546875 -0.5q0.265625 -0.203125 0.515625 -0.328125q0.265625 -0.125 0.515625 -0.171875q0.265625 -0.0625 0.5625 -0.0625q0.6875 0 1.1875 0.28125q0.5 0.265625 0.8125 0.734375q0.3125 0.46875 0.453125 1.109375q0.140625 0.625 0.140625 1.328125zm-1.234375 0.140625q0 -0.5 -0.078125 -0.953125q-0.078125 -0.46875 -0.265625 -0.828125q-0.1875 -0.359375 -0.5 -0.578125q-0.296875 -0.21875 -0.765625 -0.21875q-0.21875 0 -0.453125 0.0625q-0.21875 0.0625 -0.453125 0.21875q-0.21875 0.140625 -0.46875 0.375q-0.234375 0.234375 -0.515625 0.59375l0 2.578125q0.484375 0.59375 0.921875 0.90625q0.453125 0.3125 0.921875 0.3125q0.453125 0 0.765625 -0.21875q0.3125 -0.21875 0.5 -0.5625q0.203125 -0.359375 0.296875 -0.796875q0.09375 -0.4375 0.09375 -0.890625zm8.997131 -0.125q0 0.78125 -0.203125 1.453125q-0.203125 0.65625 -0.625 1.140625q-0.40625 0.46875 -1.03125 0.75q-0.609375 0.265625 -1.421875 0.265625q-0.796875 0 -1.390625 -0.234375q-0.59375 -0.25 -0.984375 -0.6875q-0.390625 -0.453125 -0.59375 -1.09375q-0.1875 -0.65625 -0.1875 -1.46875q0 -0.78125 0.203125 -1.4375q0.203125 -0.671875 0.609375 -1.140625q0.421875 -0.484375 1.03125 -0.75q0.625 -0.265625 1.4375 -0.265625q0.796875 0 1.390625 0.234375q0.59375 0.234375 0.984375 0.6875q0.390625 0.453125 0.578125 1.09375q0.203125 0.640625 0.203125 1.453125zm-1.234375 0.078125q0 -0.53125 -0.109375 -0.984375q-0.09375 -0.46875 -0.3125 -0.8125q-0.21875 -0.359375 -0.609375 -0.5625q-0.375 -0.203125 -0.9375 -0.203125q-0.515625 0 -0.890625 0.1875q-0.375 0.1875 -0.625 0.53125q-0.234375 0.328125 -0.359375 0.796875q-0.125 0.46875 -0.125 1.015625q0 0.53125 0.09375 1.0q0.109375 0.46875 0.328125 0.8125q0.234375 0.34375 0.609375 0.546875q0.375 0.203125 0.9375 0.203125q0.515625 0 0.890625 -0.1875q0.390625 -0.1875 0.625 -0.515625q0.25 -0.34375 0.359375 -0.796875q0.125 -0.46875 0.125 -1.03125zm7.838257 3.21875q0 0.09375 -0.0625 0.140625q-0.0625 0.03125 -0.171875 0.046875q-0.09375 0.03125 -0.28125 0.03125q-0.1875 0 -0.296875 -0.03125q-0.109375 -0.015625 -0.15625 -0.046875q-0.046875 -0.046875 -0.046875 -0.140625l0 -0.640625q-0.421875 0.453125 -0.953125 0.703125q-0.515625 0.25 -1.09375 0.25q-0.5 0 -0.921875 -0.140625q-0.40625 -0.125 -0.703125 -0.375q-0.28125 -0.25 -0.453125 -0.609375q-0.15625 -0.375 -0.15625 -0.84375q0 -0.546875 0.21875 -0.9375q0.234375 -0.40625 0.640625 -0.671875q0.421875 -0.265625 1.015625 -0.390625q0.609375 -0.140625 1.359375 -0.140625l0.875 0l0 -0.5q0 -0.375 -0.078125 -0.65625q-0.078125 -0.28125 -0.25 -0.46875q-0.171875 -0.203125 -0.453125 -0.296875q-0.28125 -0.09375 -0.6875 -0.09375q-0.4375 0 -0.78125 0.109375q-0.34375 0.09375 -0.609375 0.21875q-0.265625 0.125 -0.4375 0.234375q-0.171875 0.109375 -0.265625 0.109375q-0.046875 0 -0.09375 -0.03125q-0.046875 -0.03125 -0.078125 -0.078125q-0.03125 -0.0625 -0.046875 -0.15625q-0.015625 -0.09375 -0.015625 -0.203125q0 -0.171875 0.015625 -0.265625q0.03125 -0.109375 0.125 -0.203125q0.109375 -0.09375 0.34375 -0.21875q0.234375 -0.125 0.53125 -0.234375q0.3125 -0.109375 0.671875 -0.171875q0.375 -0.0625 0.75 -0.0625q0.6875 0 1.171875 0.15625q0.5 0.15625 0.796875 0.46875q0.296875 0.296875 0.4375 0.75q0.140625 0.453125 0.140625 1.046875l0 4.34375zm-1.1875 -2.9375l-1.0 0q-0.484375 0 -0.84375 0.078125q-0.359375 0.078125 -0.59375 0.25q-0.234375 0.15625 -0.34375 0.390625q-0.109375 0.21875 -0.109375 0.515625q0 0.5 0.3125 0.796875q0.3125 0.296875 0.890625 0.296875q0.46875 0 0.859375 -0.234375q0.40625 -0.25 0.828125 -0.734375l0 -1.359375zm7.1141357 -3.09375q0 0.15625 -0.015625 0.265625q0 0.109375 -0.03125 0.171875q-0.015625 0.0625 -0.046875 0.09375q-0.03125 0.03125 -0.078125 0.03125q-0.0625 0 -0.15625 -0.03125q-0.078125 -0.03125 -0.1875 -0.0625q-0.09375 -0.03125 -0.21875 -0.0625q-0.125 -0.03125 -0.28125 -0.03125q-0.171875 0 -0.34375 0.078125q-0.171875 0.0625 -0.375 0.234375q-0.1875 0.15625 -0.390625 0.4375q-0.203125 0.265625 -0.453125 0.65625l0 4.25q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.0625 -0.03125 0.15625 -0.046875q0.109375 -0.015625 0.265625 -0.015625q0.171875 0 0.265625 0.015625q0.109375 0.015625 0.15625 0.046875q0.0625 0.03125 0.078125 0.078125q0.03125 0.03125 0.03125 0.078125l0 0.9375q0.265625 -0.375 0.5 -0.625q0.234375 -0.25 0.4375 -0.375q0.21875 -0.140625 0.421875 -0.1875q0.203125 -0.0625 0.40625 -0.0625q0.09375 0 0.203125 0.015625q0.125 0 0.25 0.03125q0.140625 0.03125 0.234375 0.0625q0.109375 0.03125 0.140625 0.078125q0.046875 0.03125 0.0625 0.0625q0.015625 0.03125 0.03125 0.078125q0.015625 0.046875 0.015625 0.15625q0 0.09375 0 0.25zm6.85968 6.03125q0 0.046875 -0.03125 0.09375q-0.015625 0.046875 -0.078125 0.078125q-0.0625 0.015625 -0.171875 0.03125q-0.09375 0.015625 -0.234375 0.015625q-0.140625 0 -0.25 -0.015625q-0.09375 -0.015625 -0.15625 -0.03125q-0.0625 -0.03125 -0.09375 -0.078125q-0.03125 -0.046875 -0.03125 -0.09375l0 -0.859375q-0.515625 0.546875 -1.0625 0.859375q-0.546875 0.3125 -1.1875 0.3125q-0.71875 0 -1.21875 -0.28125q-0.5 -0.28125 -0.8125 -0.75q-0.3125 -0.46875 -0.453125 -1.09375q-0.140625 -0.640625 -0.140625 -1.34375q0 -0.828125 0.171875 -1.484375q0.1875 -0.671875 0.53125 -1.140625q0.359375 -0.484375 0.875 -0.734375q0.515625 -0.25 1.203125 -0.25q0.5625 0 1.03125 0.25q0.46875 0.234375 0.921875 0.71875l0 -3.75q0 -0.046875 0.015625 -0.09375q0.03125 -0.046875 0.109375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.109375 -0.015625 0.28125 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.09375l0 9.546875zm-1.1875 -4.53125q-0.484375 -0.59375 -0.9375 -0.90625q-0.4375 -0.3125 -0.921875 -0.3125q-0.453125 0 -0.765625 0.21875q-0.3125 0.203125 -0.515625 0.5625q-0.1875 0.34375 -0.28125 0.796875q-0.09375 0.4375 -0.09375 0.890625q0 0.484375 0.078125 0.953125q0.078125 0.46875 0.265625 0.828125q0.1875 0.359375 0.484375 0.578125q0.3125 0.21875 0.78125 0.21875q0.234375 0 0.453125 -0.0625q0.21875 -0.0625 0.4375 -0.203125q0.234375 -0.15625 0.484375 -0.390625q0.25 -0.25 0.53125 -0.59375l0 -2.578125zm7.4190063 2.765625q0 0.5 -0.1875 0.890625q-0.1875 0.375 -0.53125 0.640625q-0.328125 0.265625 -0.796875 0.40625q-0.453125 0.140625 -1.015625 0.140625q-0.34375 0 -0.65625 -0.0625q-0.3125 -0.046875 -0.5625 -0.125q-0.234375 -0.09375 -0.40625 -0.171875q-0.171875 -0.09375 -0.25 -0.15625q-0.078125 -0.078125 -0.125 -0.203125q-0.03125 -0.140625 -0.03125 -0.359375q0 -0.140625 0.015625 -0.234375q0.015625 -0.09375 0.03125 -0.140625q0.03125 -0.0625 0.0625 -0.078125q0.046875 -0.03125 0.09375 -0.03125q0.078125 0 0.234375 0.09375q0.15625 0.09375 0.375 0.21875q0.234375 0.109375 0.53125 0.203125q0.3125 0.09375 0.71875 0.09375q0.296875 0 0.53125 -0.0625q0.25 -0.0625 0.421875 -0.1875q0.1875 -0.125 0.28125 -0.3125q0.09375 -0.203125 0.09375 -0.46875q0 -0.265625 -0.140625 -0.453125q-0.140625 -0.1875 -0.375 -0.328125q-0.21875 -0.140625 -0.515625 -0.25q-0.28125 -0.109375 -0.59375 -0.234375q-0.296875 -0.125 -0.59375 -0.28125q-0.28125 -0.15625 -0.515625 -0.375q-0.21875 -0.21875 -0.359375 -0.515625q-0.140625 -0.3125 -0.140625 -0.75q0 -0.375 0.140625 -0.71875q0.15625 -0.359375 0.453125 -0.609375q0.296875 -0.265625 0.734375 -0.421875q0.4375 -0.15625 1.015625 -0.15625q0.265625 0 0.515625 0.046875q0.265625 0.03125 0.46875 0.09375q0.203125 0.0625 0.34375 0.140625q0.15625 0.078125 0.234375 0.140625q0.078125 0.046875 0.09375 0.09375q0.03125 0.046875 0.03125 0.109375q0.015625 0.046875 0.03125 0.125q0.015625 0.078125 0.015625 0.1875q0 0.125 -0.015625 0.21875q-0.015625 0.078125 -0.046875 0.140625q-0.015625 0.0625 -0.046875 0.09375q-0.03125 0.015625 -0.078125 0.015625q-0.0625 0 -0.1875 -0.078125q-0.125 -0.078125 -0.328125 -0.171875q-0.1875 -0.09375 -0.453125 -0.171875q-0.25 -0.078125 -0.59375 -0.078125q-0.296875 0 -0.53125 0.078125q-0.21875 0.0625 -0.375 0.1875q-0.140625 0.125 -0.21875 0.296875q-0.0625 0.171875 -0.0625 0.375q0 0.28125 0.140625 0.46875q0.140625 0.1875 0.359375 0.328125q0.234375 0.140625 0.53125 0.265625q0.296875 0.109375 0.59375 0.234375q0.3125 0.125 0.609375 0.28125q0.296875 0.140625 0.515625 0.359375q0.234375 0.203125 0.375 0.515625q0.140625 0.296875 0.140625 0.703125zm11.594971 1.765625q0 0.09375 -0.0625 0.140625q-0.0625 0.03125 -0.171875 0.046875q-0.09375 0.03125 -0.28125 0.03125q-0.1875 0 -0.296875 -0.03125q-0.109375 -0.015625 -0.15625 -0.046875q-0.046875 -0.046875 -0.046875 -0.140625l0 -0.640625q-0.421875 0.453125 -0.953125 0.703125q-0.515625 0.25 -1.09375 0.25q-0.5 0 -0.921875 -0.140625q-0.40625 -0.125 -0.703125 -0.375q-0.28125 -0.25 -0.453125 -0.609375q-0.15625 -0.375 -0.15625 -0.84375q0 -0.546875 0.21875 -0.9375q0.234375 -0.40625 0.640625 -0.671875q0.421875 -0.265625 1.015625 -0.390625q0.609375 -0.140625 1.359375 -0.140625l0.875 0l0 -0.5q0 -0.375 -0.078125 -0.65625q-0.078125 -0.28125 -0.25 -0.46875q-0.171875 -0.203125 -0.453125 -0.296875q-0.28125 -0.09375 -0.6875 -0.09375q-0.4375 0 -0.78125 0.109375q-0.34375 0.09375 -0.609375 0.21875q-0.265625 0.125 -0.4375 0.234375q-0.171875 0.109375 -0.265625 0.109375q-0.046875 0 -0.09375 -0.03125q-0.046875 -0.03125 -0.078125 -0.078125q-0.03125 -0.0625 -0.046875 -0.15625q-0.015625 -0.09375 -0.015625 -0.203125q0 -0.171875 0.015625 -0.265625q0.03125 -0.109375 0.125 -0.203125q0.109375 -0.09375 0.34375 -0.21875q0.234375 -0.125 0.53125 -0.234375q0.3125 -0.109375 0.671875 -0.171875q0.375 -0.0625 0.75 -0.0625q0.6875 0 1.171875 0.15625q0.5 0.15625 0.796875 0.46875q0.296875 0.296875 0.4375 0.75q0.140625 0.453125 0.140625 1.046875l0 4.34375zm-1.1875 -2.9375l-1.0 0q-0.484375 0 -0.84375 0.078125q-0.359375 0.078125 -0.59375 0.25q-0.234375 0.15625 -0.34375 0.390625q-0.109375 0.21875 -0.109375 0.515625q0 0.5 0.3125 0.796875q0.3125 0.296875 0.890625 0.296875q0.46875 0 0.859375 -0.234375q0.40625 -0.25 0.828125 -0.734375l0 -1.359375zm7.114197 -3.09375q0 0.15625 -0.015625 0.265625q0 0.109375 -0.03125 0.171875q-0.015625 0.0625 -0.046875 0.09375q-0.03125 0.03125 -0.078125 0.03125q-0.0625 0 -0.15625 -0.03125q-0.078125 -0.03125 -0.1875 -0.0625q-0.09375 -0.03125 -0.21875 -0.0625q-0.125 -0.03125 -0.28125 -0.03125q-0.171875 0 -0.34375 0.078125q-0.171875 0.0625 -0.375 0.234375q-0.1875 0.15625 -0.390625 0.4375q-0.203125 0.265625 -0.453125 0.65625l0 4.25q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.0625 -0.03125 0.15625 -0.046875q0.109375 -0.015625 0.265625 -0.015625q0.171875 0 0.265625 0.015625q0.109375 0.015625 0.15625 0.046875q0.0625 0.03125 0.078125 0.078125q0.03125 0.03125 0.03125 0.078125l0 0.9375q0.265625 -0.375 0.5 -0.625q0.234375 -0.25 0.4375 -0.375q0.21875 -0.140625 0.421875 -0.1875q0.203125 -0.0625 0.40625 -0.0625q0.09375 0 0.203125 0.015625q0.125 0 0.25 0.03125q0.140625 0.03125 0.234375 0.0625q0.109375 0.03125 0.140625 0.078125q0.046875 0.03125 0.0625 0.0625q0.015625 0.03125 0.03125 0.078125q0.015625 0.046875 0.015625 0.15625q0 0.09375 0 0.25zm6.843994 2.53125q0 0.265625 -0.140625 0.390625q-0.140625 0.125 -0.3125 0.125l-4.234375 0q0 0.53125 0.109375 0.96875q0.109375 0.421875 0.359375 0.734375q0.25 0.296875 0.640625 0.46875q0.40625 0.15625 0.984375 0.15625q0.46875 0 0.828125 -0.0625q0.359375 -0.078125 0.609375 -0.171875q0.265625 -0.09375 0.4375 -0.171875q0.171875 -0.078125 0.25 -0.078125q0.046875 0 0.078125 0.03125q0.046875 0.015625 0.0625 0.078125q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125q0 0.09375 0 0.171875q0 0.0625 -0.015625 0.125q-0.015625 0.046875 -0.046875 0.09375q-0.015625 0.046875 -0.0625 0.09375q-0.03125 0.03125 -0.234375 0.125q-0.1875 0.078125 -0.5 0.171875q-0.296875 0.078125 -0.703125 0.140625q-0.40625 0.078125 -0.859375 0.078125q-0.796875 0 -1.40625 -0.21875q-0.59375 -0.234375 -1.0 -0.671875q-0.40625 -0.4375 -0.609375 -1.09375q-0.203125 -0.65625 -0.203125 -1.53125q0 -0.828125 0.203125 -1.484375q0.21875 -0.671875 0.625 -1.125q0.40625 -0.46875 0.96875 -0.703125q0.578125 -0.25 1.28125 -0.25q0.765625 0 1.296875 0.25q0.53125 0.234375 0.875 0.65625q0.34375 0.40625 0.5 0.96875q0.171875 0.546875 0.171875 1.171875l0 0.21875zm-1.1875 -0.359375q0.015625 -0.921875 -0.421875 -1.453125q-0.421875 -0.53125 -1.28125 -0.53125q-0.4375 0 -0.765625 0.171875q-0.328125 0.15625 -0.546875 0.4375q-0.21875 0.265625 -0.34375 0.625q-0.125 0.359375 -0.140625 0.75l3.5 0zm13.576965 3.859375q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.171875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.03125 -0.046875 -0.03125 -0.09375l0 -3.78125q0 -0.546875 -0.09375 -0.875q-0.078125 -0.34375 -0.25 -0.578125q-0.15625 -0.25 -0.421875 -0.375q-0.25 -0.140625 -0.59375 -0.140625q-0.4375 0 -0.890625 0.328125q-0.4375 0.3125 -0.921875 0.90625l0 4.515625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.0625 -0.03125 0.15625 -0.046875q0.109375 -0.015625 0.265625 -0.015625q0.171875 0 0.265625 0.015625q0.109375 0.015625 0.15625 0.046875q0.0625 0.03125 0.078125 0.078125q0.03125 0.03125 0.03125 0.078125l0 0.859375q0.546875 -0.609375 1.078125 -0.890625q0.546875 -0.28125 1.109375 -0.28125q0.640625 0 1.078125 0.21875q0.4375 0.21875 0.703125 0.578125q0.28125 0.359375 0.390625 0.859375q0.125 0.484375 0.125 1.171875l0 3.9375zm8.137756 -3.296875q0 0.78125 -0.203125 1.453125q-0.203125 0.65625 -0.625 1.140625q-0.40625 0.46875 -1.03125 0.75q-0.609375 0.265625 -1.421875 0.265625q-0.796875 0 -1.390625 -0.234375q-0.59375 -0.25 -0.984375 -0.6875q-0.390625 -0.453125 -0.59375 -1.09375q-0.1875 -0.65625 -0.1875 -1.46875q0 -0.78125 0.203125 -1.4375q0.203125 -0.671875 0.609375 -1.140625q0.421875 -0.484375 1.03125 -0.75q0.625 -0.265625 1.4375 -0.265625q0.796875 0 1.390625 0.234375q0.59375 0.234375 0.984375 0.6875q0.390625 0.453125 0.578125 1.09375q0.203125 0.640625 0.203125 1.453125zm-1.234375 0.078125q0 -0.53125 -0.109375 -0.984375q-0.09375 -0.46875 -0.3125 -0.8125q-0.21875 -0.359375 -0.609375 -0.5625q-0.375 -0.203125 -0.9375 -0.203125q-0.515625 0 -0.890625 0.1875q-0.375 0.1875 -0.625 0.53125q-0.234375 0.328125 -0.359375 0.796875q-0.125 0.46875 -0.125 1.015625q0 0.53125 0.09375 1.0q0.109375 0.46875 0.328125 0.8125q0.234375 0.34375 0.609375 0.546875q0.375 0.203125 0.9375 0.203125q0.515625 0 0.890625 -0.1875q0.390625 -0.1875 0.625 -0.515625q0.25 -0.34375 0.359375 -0.796875q0.125 -0.46875 0.125 -1.03125zm6.322632 2.734375q0 0.21875 -0.03125 0.34375q-0.015625 0.109375 -0.078125 0.171875q-0.0625 0.0625 -0.171875 0.109375q-0.109375 0.046875 -0.265625 0.078125q-0.140625 0.03125 -0.3125 0.046875q-0.15625 0.03125 -0.328125 0.03125q-0.5 0 -0.859375 -0.125q-0.34375 -0.140625 -0.578125 -0.40625q-0.234375 -0.28125 -0.34375 -0.6875q-0.09375 -0.40625 -0.09375 -0.96875l0 -3.765625l-0.90625 0q-0.109375 0 -0.171875 -0.109375q-0.0625 -0.109375 -0.0625 -0.375q0 -0.140625 0.015625 -0.234375q0.015625 -0.09375 0.046875 -0.140625q0.03125 -0.0625 0.078125 -0.09375q0.046875 -0.03125 0.109375 -0.03125l0.890625 0l0 -1.53125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.28125 -0.015625q0.1875 0 0.296875 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 1.53125l1.640625 0q0.0625 0 0.09375 0.03125q0.046875 0.03125 0.078125 0.09375q0.046875 0.046875 0.046875 0.140625q0.015625 0.09375 0.015625 0.234375q0 0.265625 -0.0625 0.375q-0.0625 0.109375 -0.171875 0.109375l-1.640625 0l0 3.59375q0 0.671875 0.1875 1.015625q0.203125 0.328125 0.703125 0.328125q0.171875 0 0.296875 -0.03125q0.125 -0.03125 0.21875 -0.0625q0.109375 -0.03125 0.171875 -0.0625q0.078125 -0.046875 0.140625 -0.046875q0.03125 0 0.0625 0.03125q0.03125 0.015625 0.046875 0.0625q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125zm12.131409 0.484375q0 0.046875 -0.03125 0.09375q-0.015625 0.046875 -0.078125 0.078125q-0.0625 0.015625 -0.171875 0.03125q-0.09375 0.015625 -0.234375 0.015625q-0.140625 0 -0.25 -0.015625q-0.09375 -0.015625 -0.15625 -0.03125q-0.0625 -0.03125 -0.09375 -0.078125q-0.03125 -0.046875 -0.03125 -0.09375l0 -0.859375q-0.515625 0.546875 -1.0625 0.859375q-0.546875 0.3125 -1.1875 0.3125q-0.71875 0 -1.21875 -0.28125q-0.5 -0.28125 -0.8125 -0.75q-0.3125 -0.46875 -0.453125 -1.09375q-0.140625 -0.640625 -0.140625 -1.34375q0 -0.828125 0.171875 -1.484375q0.1875 -0.671875 0.53125 -1.140625q0.359375 -0.484375 0.875 -0.734375q0.515625 -0.25 1.203125 -0.25q0.5625 0 1.03125 0.25q0.46875 0.234375 0.921875 0.71875l0 -3.75q0 -0.046875 0.015625 -0.09375q0.03125 -0.046875 0.109375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.109375 -0.015625 0.28125 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.09375l0 9.546875zm-1.1875 -4.53125q-0.484375 -0.59375 -0.9375 -0.90625q-0.4375 -0.3125 -0.921875 -0.3125q-0.453125 0 -0.765625 0.21875q-0.3125 0.203125 -0.515625 0.5625q-0.1875 0.34375 -0.28125 0.796875q-0.09375 0.4375 -0.09375 0.890625q0 0.484375 0.078125 0.953125q0.078125 0.46875 0.265625 0.828125q0.1875 0.359375 0.484375 0.578125q0.3125 0.21875 0.78125 0.21875q0.234375 0 0.453125 -0.0625q0.21875 -0.0625 0.4375 -0.203125q0.234375 -0.15625 0.484375 -0.390625q0.25 -0.25 0.53125 -0.59375l0 -2.578125zm4.5596313 4.53125q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 6.453125zm0.125 -8.625q0 0.421875 -0.15625 0.578125q-0.15625 0.140625 -0.578125 0.140625q-0.40625 0 -0.5625 -0.140625q-0.15625 -0.15625 -0.15625 -0.5625q0 -0.421875 0.15625 -0.5625q0.15625 -0.15625 0.578125 -0.15625q0.421875 0 0.5625 0.15625q0.15625 0.140625 0.15625 0.546875zm5.8166504 2.59375q0 0.15625 -0.015625 0.265625q0 0.109375 -0.03125 0.171875q-0.015625 0.0625 -0.046875 0.09375q-0.03125 0.03125 -0.078125 0.03125q-0.0625 0 -0.15625 -0.03125q-0.078125 -0.03125 -0.1875 -0.0625q-0.09375 -0.03125 -0.21875 -0.0625q-0.125 -0.03125 -0.28125 -0.03125q-0.171875 0 -0.34375 0.078125q-0.171875 0.0625 -0.375 0.234375q-0.1875 0.15625 -0.390625 0.4375q-0.203125 0.265625 -0.453125 0.65625l0 4.25q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.0625 -0.03125 0.15625 -0.046875q0.109375 -0.015625 0.265625 -0.015625q0.171875 0 0.265625 0.015625q0.109375 0.015625 0.15625 0.046875q0.0625 0.03125 0.078125 0.078125q0.03125 0.03125 0.03125 0.078125l0 0.9375q0.265625 -0.375 0.5 -0.625q0.234375 -0.25 0.4375 -0.375q0.21875 -0.140625 0.421875 -0.1875q0.203125 -0.0625 0.40625 -0.0625q0.09375 0 0.203125 0.015625q0.125 0 0.25 0.03125q0.140625 0.03125 0.234375 0.0625q0.109375 0.03125 0.140625 0.078125q0.046875 0.03125 0.0625 0.0625q0.015625 0.03125 0.03125 0.078125q0.015625 0.046875 0.015625 0.15625q0 0.09375 0 0.25zm6.843994 2.53125q0 0.265625 -0.140625 0.390625q-0.140625 0.125 -0.3125 0.125l-4.234375 0q0 0.53125 0.109375 0.96875q0.109375 0.421875 0.359375 0.734375q0.25 0.296875 0.640625 0.46875q0.40625 0.15625 0.984375 0.15625q0.46875 0 0.828125 -0.0625q0.359375 -0.078125 0.609375 -0.171875q0.265625 -0.09375 0.4375 -0.171875q0.171875 -0.078125 0.25 -0.078125q0.046875 0 0.078125 0.03125q0.046875 0.015625 0.0625 0.078125q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125q0 0.09375 0 0.171875q0 0.0625 -0.015625 0.125q-0.015625 0.046875 -0.046875 0.09375q-0.015625 0.046875 -0.0625 0.09375q-0.03125 0.03125 -0.234375 0.125q-0.1875 0.078125 -0.5 0.171875q-0.296875 0.078125 -0.703125 0.140625q-0.40625 0.078125 -0.859375 0.078125q-0.796875 0 -1.40625 -0.21875q-0.59375 -0.234375 -1.0 -0.671875q-0.40625 -0.4375 -0.609375 -1.09375q-0.203125 -0.65625 -0.203125 -1.53125q0 -0.828125 0.203125 -1.484375q0.21875 -0.671875 0.625 -1.125q0.40625 -0.46875 0.96875 -0.703125q0.578125 -0.25 1.28125 -0.25q0.765625 0 1.296875 0.25q0.53125 0.234375 0.875 0.65625q0.34375 0.40625 0.5 0.96875q0.171875 0.546875 0.171875 1.171875l0 0.21875zm-1.1875 -0.359375q0.015625 -0.921875 -0.421875 -1.453125q-0.421875 -0.53125 -1.28125 -0.53125q-0.4375 0 -0.765625 0.171875q-0.328125 0.15625 -0.546875 0.4375q-0.21875 0.265625 -0.34375 0.625q-0.125 0.359375 -0.140625 0.75l3.5 0zm7.6048584 2.875q0 0.125 -0.015625 0.21875q0 0.078125 -0.015625 0.140625q-0.015625 0.0625 -0.046875 0.109375q-0.015625 0.046875 -0.109375 0.140625q-0.078125 0.078125 -0.296875 0.21875q-0.21875 0.125 -0.484375 0.234375q-0.265625 0.09375 -0.59375 0.15625q-0.3125 0.078125 -0.640625 0.078125q-0.703125 0 -1.234375 -0.234375q-0.53125 -0.234375 -0.90625 -0.671875q-0.359375 -0.4375 -0.546875 -1.078125q-0.1875 -0.640625 -0.1875 -1.484375q0 -0.9375 0.234375 -1.625q0.234375 -0.6875 0.640625 -1.125q0.40625 -0.4375 0.953125 -0.640625q0.546875 -0.21875 1.1875 -0.21875q0.296875 0 0.578125 0.0625q0.296875 0.0625 0.546875 0.15625q0.25 0.078125 0.4375 0.203125q0.1875 0.125 0.265625 0.21875q0.09375 0.078125 0.125 0.125q0.03125 0.046875 0.046875 0.125q0.03125 0.0625 0.03125 0.15625q0.015625 0.078125 0.015625 0.203125q0 0.28125 -0.078125 0.390625q-0.0625 0.109375 -0.15625 0.109375q-0.09375 0 -0.234375 -0.109375q-0.140625 -0.125 -0.359375 -0.265625q-0.21875 -0.140625 -0.53125 -0.25q-0.296875 -0.125 -0.703125 -0.125q-0.859375 0 -1.3125 0.65625q-0.453125 0.65625 -0.453125 1.890625q0 0.625 0.109375 1.09375q0.125 0.46875 0.34375 0.796875q0.234375 0.3125 0.5625 0.46875q0.34375 0.140625 0.78125 0.140625q0.40625 0 0.703125 -0.125q0.3125 -0.125 0.53125 -0.28125q0.234375 -0.15625 0.390625 -0.28125q0.15625 -0.125 0.234375 -0.125q0.046875 0 0.078125 0.03125q0.046875 0.03125 0.0625 0.09375q0.03125 0.0625 0.03125 0.171875q0.015625 0.109375 0.015625 0.25zm4.9161377 0.5q0 0.21875 -0.03125 0.34375q-0.015625 0.109375 -0.078125 0.171875q-0.0625 0.0625 -0.171875 0.109375q-0.109375 0.046875 -0.265625 0.078125q-0.140625 0.03125 -0.3125 0.046875q-0.15625 0.03125 -0.328125 0.03125q-0.5 0 -0.859375 -0.125q-0.34375 -0.140625 -0.578125 -0.40625q-0.234375 -0.28125 -0.34375 -0.6875q-0.09375 -0.40625 -0.09375 -0.96875l0 -3.765625l-0.90625 0q-0.109375 0 -0.171875 -0.109375q-0.0625 -0.109375 -0.0625 -0.375q0 -0.140625 0.015625 -0.234375q0.015625 -0.09375 0.046875 -0.140625q0.03125 -0.0625 0.078125 -0.09375q0.046875 -0.03125 0.109375 -0.03125l0.890625 0l0 -1.53125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.28125 -0.015625q0.1875 0 0.296875 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 1.53125l1.640625 0q0.0625 0 0.09375 0.03125q0.046875 0.03125 0.078125 0.09375q0.046875 0.046875 0.046875 0.140625q0.015625 0.09375 0.015625 0.234375q0 0.265625 -0.0625 0.375q-0.0625 0.109375 -0.171875 0.109375l-1.640625 0l0 3.59375q0 0.671875 0.1875 1.015625q0.203125 0.328125 0.703125 0.328125q0.171875 0 0.296875 -0.03125q0.125 -0.03125 0.21875 -0.0625q0.109375 -0.03125 0.171875 -0.0625q0.078125 -0.046875 0.140625 -0.046875q0.03125 0 0.0625 0.03125q0.03125 0.015625 0.046875 0.0625q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125zm2.7530518 0.484375q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -9.5625q0 -0.0625 0.015625 -0.109375q0.03125 -0.046875 0.09375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.109375l0 9.5625zm5.1134644 0.171875l-0.859375 2.375q-0.046875 0.109375 -0.21875 0.171875q-0.171875 0.0625 -0.53125 0.0625q-0.1875 0 -0.3125 -0.03125q-0.109375 -0.015625 -0.171875 -0.0625q-0.0625 -0.03125 -0.0625 -0.109375q0 -0.0625 0.03125 -0.171875l0.890625 -2.234375q-0.0625 -0.03125 -0.125 -0.09375q-0.046875 -0.0625 -0.078125 -0.140625l-2.296875 -6.15625q-0.046875 -0.140625 -0.046875 -0.21875q0 -0.09375 0.046875 -0.140625q0.0625 -0.0625 0.1875 -0.078125q0.125 -0.015625 0.34375 -0.015625q0.21875 0 0.328125 0.015625q0.125 0.015625 0.203125 0.046875q0.078125 0.015625 0.109375 0.078125q0.03125 0.046875 0.0625 0.140625l1.84375 5.171875l0.015625 0l1.78125 -5.203125q0.03125 -0.140625 0.09375 -0.171875q0.0625 -0.046875 0.1875 -0.0625q0.125 -0.015625 0.34375 -0.015625q0.203125 0 0.328125 0.015625q0.140625 0.015625 0.203125 0.078125q0.0625 0.046875 0.0625 0.140625q0 0.078125 -0.046875 0.203125l-2.3125 6.40625zm9.934204 -0.171875q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -9.5625q0 -0.0625 0.015625 -0.109375q0.03125 -0.046875 0.09375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.109375l0 9.5625zm3.3635254 0q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 6.453125zm0.125 -8.625q0 0.421875 -0.15625 0.578125q-0.15625 0.140625 -0.578125 0.140625q-0.40625 0 -0.5625 -0.140625q-0.15625 -0.15625 -0.15625 -0.5625q0 -0.421875 0.15625 -0.5625q0.15625 -0.15625 0.578125 -0.15625q0.421875 0 0.5625 0.15625q0.15625 0.140625 0.15625 0.546875zm7.5978394 8.625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.171875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.03125 -0.046875 -0.03125 -0.09375l0 -3.78125q0 -0.546875 -0.09375 -0.875q-0.078125 -0.34375 -0.25 -0.578125q-0.15625 -0.25 -0.421875 -0.375q-0.25 -0.140625 -0.59375 -0.140625q-0.4375 0 -0.890625 0.328125q-0.4375 0.3125 -0.921875 0.90625l0 4.515625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.0625 -0.03125 0.15625 -0.046875q0.109375 -0.015625 0.265625 -0.015625q0.171875 0 0.265625 0.015625q0.109375 0.015625 0.15625 0.046875q0.0625 0.03125 0.078125 0.078125q0.03125 0.03125 0.03125 0.078125l0 0.859375q0.546875 -0.609375 1.078125 -0.890625q0.546875 -0.28125 1.109375 -0.28125q0.640625 0 1.078125 0.21875q0.4375 0.21875 0.703125 0.578125q0.28125 0.359375 0.390625 0.859375q0.125 0.484375 0.125 1.171875l0 3.9375zm7.4502563 -0.015625q0 0.0625 -0.03125 0.109375q-0.03125 0.03125 -0.109375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.296875 0.015625q-0.203125 0 -0.328125 -0.015625q-0.125 -0.015625 -0.21875 -0.03125q-0.078125 -0.03125 -0.140625 -0.078125q-0.046875 -0.046875 -0.078125 -0.109375l-2.71875 -3.5625l0 3.578125q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -9.5625q0 -0.0625 0.015625 -0.109375q0.03125 -0.046875 0.09375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.109375l0 5.8125l2.421875 -2.671875q0.0625 -0.0625 0.125 -0.109375q0.0625 -0.046875 0.15625 -0.078125q0.09375 -0.03125 0.203125 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.1875 0 0.296875 0.015625q0.125 0.015625 0.203125 0.046875q0.078125 0.015625 0.109375 0.0625q0.03125 0.03125 0.03125 0.09375q0 0.078125 -0.046875 0.171875q-0.046875 0.078125 -0.15625 0.203125l-2.328125 2.328125l2.625 3.40625q0.09375 0.109375 0.125 0.1875q0.046875 0.078125 0.046875 0.140625zm6.8657227 -3.484375q0 0.265625 -0.140625 0.390625q-0.140625 0.125 -0.3125 0.125l-4.234375 0q0 0.53125 0.109375 0.96875q0.109375 0.421875 0.359375 0.734375q0.25 0.296875 0.640625 0.46875q0.40625 0.15625 0.984375 0.15625q0.46875 0 0.828125 -0.0625q0.359375 -0.078125 0.609375 -0.171875q0.265625 -0.09375 0.4375 -0.171875q0.171875 -0.078125 0.25 -0.078125q0.046875 0 0.078125 0.03125q0.046875 0.015625 0.0625 0.078125q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125q0 0.09375 0 0.171875q0 0.0625 -0.015625 0.125q-0.015625 0.046875 -0.046875 0.09375q-0.015625 0.046875 -0.0625 0.09375q-0.03125 0.03125 -0.234375 0.125q-0.1875 0.078125 -0.5 0.171875q-0.296875 0.078125 -0.703125 0.140625q-0.40625 0.078125 -0.859375 0.078125q-0.796875 0 -1.40625 -0.21875q-0.59375 -0.234375 -1.0 -0.671875q-0.40625 -0.4375 -0.609375 -1.09375q-0.203125 -0.65625 -0.203125 -1.53125q0 -0.828125 0.203125 -1.484375q0.21875 -0.671875 0.625 -1.125q0.40625 -0.46875 0.96875 -0.703125q0.578125 -0.25 1.28125 -0.25q0.765625 0 1.296875 0.25q0.53125 0.234375 0.875 0.65625q0.34375 0.40625 0.5 0.96875q0.171875 0.546875 0.171875 1.171875l0 0.21875zm-1.1875 -0.359375q0.015625 -0.921875 -0.421875 -1.453125q-0.421875 -0.53125 -1.28125 -0.53125q-0.4375 0 -0.765625 0.171875q-0.328125 0.15625 -0.546875 0.4375q-0.21875 0.265625 -0.34375 0.625q-0.125 0.359375 -0.140625 0.75l3.5 0zm8.495483 3.859375q0 0.046875 -0.03125 0.09375q-0.015625 0.046875 -0.078125 0.078125q-0.0625 0.015625 -0.171875 0.03125q-0.09375 0.015625 -0.234375 0.015625q-0.140625 0 -0.25 -0.015625q-0.09375 -0.015625 -0.15625 -0.03125q-0.0625 -0.03125 -0.09375 -0.078125q-0.03125 -0.046875 -0.03125 -0.09375l0 -0.859375q-0.515625 0.546875 -1.0625 0.859375q-0.546875 0.3125 -1.1875 0.3125q-0.71875 0 -1.21875 -0.28125q-0.5 -0.28125 -0.8125 -0.75q-0.3125 -0.46875 -0.453125 -1.09375q-0.140625 -0.640625 -0.140625 -1.34375q0 -0.828125 0.171875 -1.484375q0.1875 -0.671875 0.53125 -1.140625q0.359375 -0.484375 0.875 -0.734375q0.515625 -0.25 1.203125 -0.25q0.5625 0 1.03125 0.25q0.46875 0.234375 0.921875 0.71875l0 -3.75q0 -0.046875 0.015625 -0.09375q0.03125 -0.046875 0.109375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.109375 -0.015625 0.28125 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.09375l0 9.546875zm-1.1875 -4.53125q-0.484375 -0.59375 -0.9375 -0.90625q-0.4375 -0.3125 -0.921875 -0.3125q-0.453125 0 -0.765625 0.21875q-0.3125 0.203125 -0.515625 0.5625q-0.1875 0.34375 -0.28125 0.796875q-0.09375 0.4375 -0.09375 0.890625q0 0.484375 0.078125 0.953125q0.078125 0.46875 0.265625 0.828125q0.1875 0.359375 0.484375 0.578125q0.3125 0.21875 0.78125 0.21875q0.234375 0 0.453125 -0.0625q0.21875 -0.0625 0.4375 -0.203125q0.234375 -0.15625 0.484375 -0.390625q0.25 -0.25 0.53125 -0.59375l0 -2.578125z" fill-rule="nonzero"/><path fill="#000000" d="m678.4165 624.2241q0 0.21875 -0.03125 0.34375q-0.015625 0.109375 -0.078125 0.171875q-0.0625 0.0625 -0.171875 0.109375q-0.109375 0.046875 -0.265625 0.078125q-0.140625 0.03125 -0.3125 0.046875q-0.15625 0.03125 -0.328125 0.03125q-0.5 0 -0.859375 -0.125q-0.34375 -0.140625 -0.578125 -0.40625q-0.234375 -0.28125 -0.34375 -0.6875q-0.09375 -0.40625 -0.09375 -0.96875l0 -3.765625l-0.90625 0q-0.109375 0 -0.171875 -0.109375q-0.0625 -0.109375 -0.0625 -0.375q0 -0.140625 0.015625 -0.234375q0.015625 -0.09375 0.046875 -0.140625q0.03125 -0.0625 0.078125 -0.09375q0.046875 -0.03125 0.109375 -0.03125l0.890625 0l0 -1.53125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.28125 -0.015625q0.1875 0 0.296875 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 1.53125l1.640625 0q0.0625 0 0.09375 0.03125q0.046875 0.03125 0.078125 0.09375q0.046875 0.046875 0.046875 0.140625q0.015625 0.09375 0.015625 0.234375q0 0.265625 -0.0625 0.375q-0.0625 0.109375 -0.171875 0.109375l-1.640625 0l0 3.59375q0 0.671875 0.1875 1.015625q0.203125 0.328125 0.703125 0.328125q0.171875 0 0.296875 -0.03125q0.125 -0.03125 0.21875 -0.0625q0.109375 -0.03125 0.171875 -0.0625q0.078125 -0.046875 0.140625 -0.046875q0.03125 0 0.0625 0.03125q0.03125 0.015625 0.046875 0.0625q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125zm7.5498657 -2.8125q0 0.78125 -0.203125 1.453125q-0.203125 0.65625 -0.625 1.140625q-0.40625 0.46875 -1.03125 0.75q-0.609375 0.265625 -1.421875 0.265625q-0.796875 0 -1.390625 -0.234375q-0.59375 -0.25 -0.984375 -0.6875q-0.390625 -0.453125 -0.59375 -1.09375q-0.1875 -0.65625 -0.1875 -1.46875q0 -0.78125 0.203125 -1.4375q0.203125 -0.671875 0.609375 -1.140625q0.421875 -0.484375 1.03125 -0.75q0.625 -0.265625 1.4375 -0.265625q0.796875 0 1.390625 0.234375q0.59375 0.234375 0.984375 0.6875q0.390625 0.453125 0.578125 1.09375q0.203125 0.640625 0.203125 1.453125zm-1.234375 0.078125q0 -0.53125 -0.109375 -0.984375q-0.09375 -0.46875 -0.3125 -0.8125q-0.21875 -0.359375 -0.609375 -0.5625q-0.375 -0.203125 -0.9375 -0.203125q-0.515625 0 -0.890625 0.1875q-0.375 0.1875 -0.625 0.53125q-0.234375 0.328125 -0.359375 0.796875q-0.125 0.46875 -0.125 1.015625q0 0.53125 0.09375 1.0q0.109375 0.46875 0.328125 0.8125q0.234375 0.34375 0.609375 0.546875q0.375 0.203125 0.9375 0.203125q0.515625 0 0.890625 -0.1875q0.390625 -0.1875 0.625 -0.515625q0.25 -0.34375 0.359375 -0.796875q0.125 -0.46875 0.125 -1.03125zm11.108459 2.734375q0 0.21875 -0.03125 0.34375q-0.015625 0.109375 -0.078125 0.171875q-0.0625 0.0625 -0.171875 0.109375q-0.109375 0.046875 -0.265625 0.078125q-0.140625 0.03125 -0.3125 0.046875q-0.15625 0.03125 -0.328125 0.03125q-0.5 0 -0.859375 -0.125q-0.34375 -0.140625 -0.578125 -0.40625q-0.234375 -0.28125 -0.34375 -0.6875q-0.09375 -0.40625 -0.09375 -0.96875l0 -3.765625l-0.90625 0q-0.109375 0 -0.171875 -0.109375q-0.0625 -0.109375 -0.0625 -0.375q0 -0.140625 0.015625 -0.234375q0.015625 -0.09375 0.046875 -0.140625q0.03125 -0.0625 0.078125 -0.09375q0.046875 -0.03125 0.109375 -0.03125l0.890625 0l0 -1.53125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.28125 -0.015625q0.1875 0 0.296875 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 1.53125l1.640625 0q0.0625 0 0.09375 0.03125q0.046875 0.03125 0.078125 0.09375q0.046875 0.046875 0.046875 0.140625q0.015625 0.09375 0.015625 0.234375q0 0.265625 -0.0625 0.375q-0.0625 0.109375 -0.171875 0.109375l-1.640625 0l0 3.59375q0 0.671875 0.1875 1.015625q0.203125 0.328125 0.703125 0.328125q0.171875 0 0.296875 -0.03125q0.125 -0.03125 0.21875 -0.0625q0.109375 -0.03125 0.171875 -0.0625q0.078125 -0.046875 0.140625 -0.046875q0.03125 0 0.0625 0.03125q0.03125 0.015625 0.046875 0.0625q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125zm7.1124268 0.484375q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.171875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.03125 -0.046875 -0.03125 -0.09375l0 -3.78125q0 -0.546875 -0.09375 -0.875q-0.078125 -0.34375 -0.25 -0.578125q-0.15625 -0.25 -0.421875 -0.375q-0.25 -0.140625 -0.59375 -0.140625q-0.4375 0 -0.890625 0.328125q-0.4375 0.3125 -0.921875 0.90625l0 4.515625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -9.5625q0 -0.0625 0.015625 -0.109375q0.03125 -0.046875 0.09375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.109375l0 3.859375q0.5 -0.546875 1.015625 -0.796875q0.515625 -0.265625 1.046875 -0.265625q0.640625 0 1.078125 0.21875q0.4375 0.21875 0.703125 0.578125q0.28125 0.359375 0.390625 0.859375q0.125 0.484375 0.125 1.1875l0 3.921875zm7.6533813 -3.5q0 0.265625 -0.140625 0.390625q-0.140625 0.125 -0.3125 0.125l-4.234375 0q0 0.53125 0.109375 0.96875q0.109375 0.421875 0.359375 0.734375q0.25 0.296875 0.640625 0.46875q0.40625 0.15625 0.984375 0.15625q0.46875 0 0.828125 -0.0625q0.359375 -0.078125 0.609375 -0.171875q0.265625 -0.09375 0.4375 -0.171875q0.171875 -0.078125 0.25 -0.078125q0.046875 0 0.078125 0.03125q0.046875 0.015625 0.0625 0.078125q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125q0 0.09375 0 0.171875q0 0.0625 -0.015625 0.125q-0.015625 0.046875 -0.046875 0.09375q-0.015625 0.046875 -0.0625 0.09375q-0.03125 0.03125 -0.234375 0.125q-0.1875 0.078125 -0.5 0.171875q-0.296875 0.078125 -0.703125 0.140625q-0.40625 0.078125 -0.859375 0.078125q-0.796875 0 -1.40625 -0.21875q-0.59375 -0.234375 -1.0 -0.671875q-0.40625 -0.4375 -0.609375 -1.09375q-0.203125 -0.65625 -0.203125 -1.53125q0 -0.828125 0.203125 -1.484375q0.21875 -0.671875 0.625 -1.125q0.40625 -0.46875 0.96875 -0.703125q0.578125 -0.25 1.28125 -0.25q0.765625 0 1.296875 0.25q0.53125 0.234375 0.875 0.65625q0.34375 0.40625 0.5 0.96875q0.171875 0.546875 0.171875 1.171875l0 0.21875zm-1.1875 -0.359375q0.015625 -0.921875 -0.421875 -1.453125q-0.421875 -0.53125 -1.28125 -0.53125q-0.4375 0 -0.765625 0.171875q-0.328125 0.15625 -0.546875 0.4375q-0.21875 0.265625 -0.34375 0.625q-0.125 0.359375 -0.140625 0.75l3.5 0zm13.687561 0.53125q0 0.84375 -0.1875 1.515625q-0.171875 0.671875 -0.53125 1.140625q-0.34375 0.46875 -0.875 0.734375q-0.515625 0.25 -1.1875 0.25q-0.296875 0 -0.546875 -0.0625q-0.234375 -0.0625 -0.46875 -0.171875q-0.234375 -0.125 -0.46875 -0.3125q-0.21875 -0.1875 -0.46875 -0.4375l0 3.21875q0 0.0625 -0.03125 0.09375q-0.03125 0.046875 -0.09375 0.078125q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.078125q-0.015625 -0.03125 -0.015625 -0.09375l0 -9.0q0 -0.0625 0.015625 -0.09375q0.03125 -0.046875 0.09375 -0.0625q0.0625 -0.03125 0.15625 -0.046875q0.109375 -0.015625 0.25 -0.015625q0.15625 0 0.25 0.015625q0.09375 0.015625 0.15625 0.046875q0.0625 0.015625 0.078125 0.0625q0.03125 0.03125 0.03125 0.09375l0 0.875q0.296875 -0.296875 0.5625 -0.515625q0.28125 -0.234375 0.546875 -0.375q0.28125 -0.15625 0.5625 -0.21875q0.296875 -0.078125 0.625 -0.078125q0.703125 0 1.1875 0.28125q0.5 0.265625 0.8125 0.734375q0.3125 0.46875 0.453125 1.09375q0.140625 0.625 0.140625 1.328125zm-1.234375 0.140625q0 -0.5 -0.078125 -0.953125q-0.078125 -0.46875 -0.265625 -0.828125q-0.171875 -0.359375 -0.484375 -0.5625q-0.3125 -0.21875 -0.765625 -0.21875q-0.234375 0 -0.453125 0.0625q-0.21875 0.0625 -0.453125 0.21875q-0.21875 0.140625 -0.46875 0.390625q-0.25 0.234375 -0.53125 0.578125l0 2.5625q0.484375 0.59375 0.921875 0.921875q0.4375 0.3125 0.90625 0.3125q0.453125 0 0.765625 -0.21875q0.328125 -0.21875 0.515625 -0.578125q0.203125 -0.359375 0.296875 -0.796875q0.09375 -0.4375 0.09375 -0.890625zm6.7783813 -2.84375q0 0.15625 -0.015625 0.265625q0 0.109375 -0.03125 0.171875q-0.015625 0.0625 -0.046875 0.09375q-0.03125 0.03125 -0.078125 0.03125q-0.0625 0 -0.15625 -0.03125q-0.078125 -0.03125 -0.1875 -0.0625q-0.09375 -0.03125 -0.21875 -0.0625q-0.125 -0.03125 -0.28125 -0.03125q-0.171875 0 -0.34375 0.078125q-0.171875 0.0625 -0.375 0.234375q-0.1875 0.15625 -0.390625 0.4375q-0.203125 0.265625 -0.453125 0.65625l0 4.25q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.0625 -0.03125 0.15625 -0.046875q0.109375 -0.015625 0.265625 -0.015625q0.171875 0 0.265625 0.015625q0.109375 0.015625 0.15625 0.046875q0.0625 0.03125 0.078125 0.078125q0.03125 0.03125 0.03125 0.078125l0 0.9375q0.265625 -0.375 0.5 -0.625q0.234375 -0.25 0.4375 -0.375q0.21875 -0.140625 0.421875 -0.1875q0.203125 -0.0625 0.40625 -0.0625q0.09375 0 0.203125 0.015625q0.125 0 0.25 0.03125q0.140625 0.03125 0.234375 0.0625q0.109375 0.03125 0.140625 0.078125q0.046875 0.03125 0.0625 0.0625q0.015625 0.03125 0.03125 0.078125q0.015625 0.046875 0.015625 0.15625q0 0.09375 0 0.25zm2.5314941 6.03125q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 6.453125zm0.125 -8.625q0 0.421875 -0.15625 0.578125q-0.15625 0.140625 -0.578125 0.140625q-0.40625 0 -0.5625 -0.140625q-0.15625 -0.15625 -0.15625 -0.5625q0 -0.421875 0.15625 -0.5625q0.15625 -0.15625 0.578125 -0.15625q0.421875 0 0.5625 0.15625q0.15625 0.140625 0.15625 0.546875zm11.613525 8.625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.03125 -0.046875 -0.03125 -0.09375l0 -3.921875q0 -0.40625 -0.078125 -0.734375q-0.0625 -0.34375 -0.21875 -0.578125q-0.15625 -0.25 -0.40625 -0.375q-0.234375 -0.140625 -0.5625 -0.140625q-0.40625 0 -0.828125 0.328125q-0.40625 0.3125 -0.890625 0.90625l0 4.515625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.109375 0.0625q-0.0625 0.03125 -0.171875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -3.921875q0 -0.40625 -0.078125 -0.734375q-0.078125 -0.34375 -0.234375 -0.578125q-0.15625 -0.25 -0.40625 -0.375q-0.234375 -0.140625 -0.5625 -0.140625q-0.40625 0 -0.828125 0.328125q-0.40625 0.3125 -0.890625 0.90625l0 4.515625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.0625 -0.03125 0.15625 -0.046875q0.109375 -0.015625 0.265625 -0.015625q0.171875 0 0.265625 0.015625q0.109375 0.015625 0.15625 0.046875q0.0625 0.03125 0.078125 0.078125q0.03125 0.03125 0.03125 0.078125l0 0.859375q0.546875 -0.609375 1.0625 -0.890625q0.515625 -0.28125 1.03125 -0.28125q0.40625 0 0.71875 0.09375q0.3125 0.09375 0.5625 0.265625q0.25 0.15625 0.421875 0.390625q0.171875 0.234375 0.28125 0.515625q0.328125 -0.34375 0.609375 -0.578125q0.296875 -0.25 0.5625 -0.40625q0.265625 -0.15625 0.515625 -0.21875q0.265625 -0.0625 0.515625 -0.0625q0.625 0 1.046875 0.21875q0.421875 0.21875 0.671875 0.578125q0.265625 0.359375 0.375 0.859375q0.125 0.484375 0.125 1.03125l0 4.078125zm7.0046997 0q0 0.09375 -0.0625 0.140625q-0.0625 0.03125 -0.171875 0.046875q-0.09375 0.03125 -0.28125 0.03125q-0.1875 0 -0.296875 -0.03125q-0.109375 -0.015625 -0.15625 -0.046875q-0.046875 -0.046875 -0.046875 -0.140625l0 -0.640625q-0.421875 0.453125 -0.953125 0.703125q-0.515625 0.25 -1.09375 0.25q-0.5 0 -0.921875 -0.140625q-0.40625 -0.125 -0.703125 -0.375q-0.28125 -0.25 -0.453125 -0.609375q-0.15625 -0.375 -0.15625 -0.84375q0 -0.546875 0.21875 -0.9375q0.234375 -0.40625 0.640625 -0.671875q0.421875 -0.265625 1.015625 -0.390625q0.609375 -0.140625 1.359375 -0.140625l0.875 0l0 -0.5q0 -0.375 -0.078125 -0.65625q-0.078125 -0.28125 -0.25 -0.46875q-0.171875 -0.203125 -0.453125 -0.296875q-0.28125 -0.09375 -0.6875 -0.09375q-0.4375 0 -0.78125 0.109375q-0.34375 0.09375 -0.609375 0.21875q-0.265625 0.125 -0.4375 0.234375q-0.171875 0.109375 -0.265625 0.109375q-0.046875 0 -0.09375 -0.03125q-0.046875 -0.03125 -0.078125 -0.078125q-0.03125 -0.0625 -0.046875 -0.15625q-0.015625 -0.09375 -0.015625 -0.203125q0 -0.171875 0.015625 -0.265625q0.03125 -0.109375 0.125 -0.203125q0.109375 -0.09375 0.34375 -0.21875q0.234375 -0.125 0.53125 -0.234375q0.3125 -0.109375 0.671875 -0.171875q0.375 -0.0625 0.75 -0.0625q0.6875 0 1.171875 0.15625q0.5 0.15625 0.796875 0.46875q0.296875 0.296875 0.4375 0.75q0.140625 0.453125 0.140625 1.046875l0 4.34375zm-1.1875 -2.9375l-1.0 0q-0.484375 0 -0.84375 0.078125q-0.359375 0.078125 -0.59375 0.25q-0.234375 0.15625 -0.34375 0.390625q-0.109375 0.21875 -0.109375 0.515625q0 0.5 0.3125 0.796875q0.3125 0.296875 0.890625 0.296875q0.46875 0 0.859375 -0.234375q0.40625 -0.25 0.828125 -0.734375l0 -1.359375zm7.1141357 -3.09375q0 0.15625 -0.015625 0.265625q0 0.109375 -0.03125 0.171875q-0.015625 0.0625 -0.046875 0.09375q-0.03125 0.03125 -0.078125 0.03125q-0.0625 0 -0.15625 -0.03125q-0.078125 -0.03125 -0.1875 -0.0625q-0.09375 -0.03125 -0.21875 -0.0625q-0.125 -0.03125 -0.28125 -0.03125q-0.171875 0 -0.34375 0.078125q-0.171875 0.0625 -0.375 0.234375q-0.1875 0.15625 -0.390625 0.4375q-0.203125 0.265625 -0.453125 0.65625l0 4.25q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.0625 -0.03125 0.15625 -0.046875q0.109375 -0.015625 0.265625 -0.015625q0.171875 0 0.265625 0.015625q0.109375 0.015625 0.15625 0.046875q0.0625 0.03125 0.078125 0.078125q0.03125 0.03125 0.03125 0.078125l0 0.9375q0.265625 -0.375 0.5 -0.625q0.234375 -0.25 0.4375 -0.375q0.21875 -0.140625 0.421875 -0.1875q0.203125 -0.0625 0.40625 -0.0625q0.09375 0 0.203125 0.015625q0.125 0 0.25 0.03125q0.140625 0.03125 0.234375 0.0625q0.109375 0.03125 0.140625 0.078125q0.046875 0.03125 0.0625 0.0625q0.015625 0.03125 0.03125 0.078125q0.015625 0.046875 0.015625 0.15625q0 0.09375 0 0.25zm4.281494 6.203125l-0.859375 2.375q-0.046875 0.109375 -0.21875 0.171875q-0.171875 0.0625 -0.53125 0.0625q-0.1875 0 -0.3125 -0.03125q-0.109375 -0.015625 -0.171875 -0.0625q-0.0625 -0.03125 -0.0625 -0.109375q0 -0.0625 0.03125 -0.171875l0.890625 -2.234375q-0.0625 -0.03125 -0.125 -0.09375q-0.046875 -0.0625 -0.078125 -0.140625l-2.296875 -6.15625q-0.046875 -0.140625 -0.046875 -0.21875q0 -0.09375 0.046875 -0.140625q0.0625 -0.0625 0.1875 -0.078125q0.125 -0.015625 0.34375 -0.015625q0.21875 0 0.328125 0.015625q0.125 0.015625 0.203125 0.046875q0.078125 0.015625 0.109375 0.078125q0.03125 0.046875 0.0625 0.140625l1.84375 5.171875l0.015625 0l1.78125 -5.203125q0.03125 -0.140625 0.09375 -0.171875q0.0625 -0.046875 0.1875 -0.0625q0.125 -0.015625 0.34375 -0.015625q0.203125 0 0.328125 0.015625q0.140625 0.015625 0.203125 0.078125q0.0625 0.046875 0.0625 0.140625q0 0.078125 -0.046875 0.203125l-2.3125 6.40625zm12.247925 -7.84375l0 0.90625q0 0.1875 -0.046875 0.3125q-0.046875 0.109375 -0.125 0.171875q-0.078125 0.0625 -0.203125 0.09375q-0.125 0.015625 -0.296875 0.015625q-0.171875 0 -0.296875 -0.015625q-0.125 -0.03125 -0.203125 -0.09375q-0.078125 -0.0625 -0.125 -0.171875q-0.03125 -0.125 -0.03125 -0.3125q0 -0.21875 0.015625 -0.390625q0.03125 -0.1875 0.078125 -0.34375q0.046875 -0.171875 0.125 -0.328125q0.078125 -0.171875 0.203125 -0.34375l0.96875 -1.46875q0.03125 -0.0625 0.0625 -0.09375q0.046875 -0.03125 0.109375 -0.046875q0.078125 -0.03125 0.15625 -0.046875q0.09375 -0.015625 0.21875 -0.015625q0.125 0 0.203125 0.015625q0.078125 0 0.109375 0.03125q0.03125 0.015625 0.03125 0.0625q0.015625 0.046875 -0.015625 0.109375l-0.9375 1.953125zm-2.5625 0l0 0.90625q0 0.1875 -0.046875 0.3125q-0.03125 0.109375 -0.125 0.171875q-0.078125 0.0625 -0.203125 0.09375q-0.125 0.015625 -0.296875 0.015625q-0.171875 0 -0.296875 -0.015625q-0.125 -0.03125 -0.203125 -0.09375q-0.078125 -0.0625 -0.125 -0.171875q-0.03125 -0.125 -0.03125 -0.3125q0 -0.21875 0.015625 -0.390625q0.03125 -0.1875 0.078125 -0.34375q0.046875 -0.171875 0.125 -0.328125q0.09375 -0.171875 0.203125 -0.34375l0.96875 -1.46875q0.03125 -0.0625 0.0625 -0.09375q0.046875 -0.03125 0.109375 -0.046875q0.078125 -0.03125 0.15625 -0.046875q0.09375 -0.015625 0.21875 -0.015625q0.125 0 0.1875 0.015625q0.078125 0 0.109375 0.03125q0.046875 0.015625 0.046875 0.0625q0 0.046875 -0.015625 0.109375l-0.9375 1.953125zm12.007996 7.40625q0.046875 0.15625 0.046875 0.265625q0.015625 0.09375 -0.046875 0.140625q-0.0625 0.046875 -0.203125 0.0625q-0.125 0.015625 -0.34375 0.015625q-0.21875 0 -0.359375 -0.015625q-0.125 -0.015625 -0.203125 -0.03125q-0.0625 -0.03125 -0.09375 -0.0625q-0.03125 -0.046875 -0.0625 -0.109375l-0.78125 -2.265625l-3.859375 0l-0.75 2.234375q-0.03125 0.0625 -0.0625 0.109375q-0.03125 0.046875 -0.109375 0.078125q-0.0625 0.03125 -0.1875 0.046875q-0.125 0.015625 -0.328125 0.015625q-0.203125 0 -0.34375 -0.03125q-0.125 -0.015625 -0.1875 -0.0625q-0.046875 -0.046875 -0.046875 -0.140625q0 -0.09375 0.0625 -0.25l3.109375 -8.609375q0.03125 -0.078125 0.078125 -0.125q0.046875 -0.046875 0.125 -0.078125q0.09375 -0.03125 0.234375 -0.03125q0.140625 -0.015625 0.359375 -0.015625q0.21875 0 0.375 0.015625q0.15625 0 0.25 0.03125q0.09375 0.03125 0.140625 0.078125q0.046875 0.046875 0.078125 0.140625l3.109375 8.59375zm-4.0 -7.59375l0 0l-1.59375 4.625l3.21875 0l-1.625 -4.625zm8.745972 7.375q0 0.21875 -0.03125 0.34375q-0.015625 0.109375 -0.078125 0.171875q-0.0625 0.0625 -0.171875 0.109375q-0.109375 0.046875 -0.265625 0.078125q-0.140625 0.03125 -0.3125 0.046875q-0.15625 0.03125 -0.328125 0.03125q-0.5 0 -0.859375 -0.125q-0.34375 -0.140625 -0.578125 -0.40625q-0.234375 -0.28125 -0.34375 -0.6875q-0.09375 -0.40625 -0.09375 -0.96875l0 -3.765625l-0.90625 0q-0.109375 0 -0.171875 -0.109375q-0.0625 -0.109375 -0.0625 -0.375q0 -0.140625 0.015625 -0.234375q0.015625 -0.09375 0.046875 -0.140625q0.03125 -0.0625 0.078125 -0.09375q0.046875 -0.03125 0.109375 -0.03125l0.890625 0l0 -1.53125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.28125 -0.015625q0.1875 0 0.296875 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 1.53125l1.640625 0q0.0625 0 0.09375 0.03125q0.046875 0.03125 0.078125 0.09375q0.046875 0.046875 0.046875 0.140625q0.015625 0.09375 0.015625 0.234375q0 0.265625 -0.0625 0.375q-0.0625 0.109375 -0.171875 0.109375l-1.640625 0l0 3.59375q0 0.671875 0.1875 1.015625q0.203125 0.328125 0.703125 0.328125q0.171875 0 0.296875 -0.03125q0.125 -0.03125 0.21875 -0.0625q0.109375 -0.03125 0.171875 -0.0625q0.078125 -0.046875 0.140625 -0.046875q0.03125 0 0.0625 0.03125q0.03125 0.015625 0.046875 0.0625q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125zm13.429443 0.21875q0.046875 0.15625 0.046875 0.265625q0.015625 0.09375 -0.046875 0.140625q-0.0625 0.046875 -0.203125 0.0625q-0.125 0.015625 -0.34375 0.015625q-0.21875 0 -0.359375 -0.015625q-0.125 -0.015625 -0.203125 -0.03125q-0.0625 -0.03125 -0.09375 -0.0625q-0.03125 -0.046875 -0.0625 -0.109375l-0.78125 -2.265625l-3.859375 0l-0.75 2.234375q-0.03125 0.0625 -0.0625 0.109375q-0.03125 0.046875 -0.109375 0.078125q-0.0625 0.03125 -0.1875 0.046875q-0.125 0.015625 -0.328125 0.015625q-0.203125 0 -0.34375 -0.03125q-0.125 -0.015625 -0.1875 -0.0625q-0.046875 -0.046875 -0.046875 -0.140625q0 -0.09375 0.0625 -0.25l3.109375 -8.609375q0.03125 -0.078125 0.078125 -0.125q0.046875 -0.046875 0.125 -0.078125q0.09375 -0.03125 0.234375 -0.03125q0.140625 -0.015625 0.359375 -0.015625q0.21875 0 0.375 0.015625q0.15625 0 0.25 0.03125q0.09375 0.03125 0.140625 0.078125q0.046875 0.046875 0.078125 0.140625l3.109375 8.59375zm-4.0 -7.59375l0 0l-1.59375 4.625l3.21875 0l-1.625 -4.625zm17.281738 0.03125q0 0.140625 -0.015625 0.25q-0.015625 0.09375 -0.046875 0.171875q-0.03125 0.0625 -0.078125 0.09375q-0.03125 0.015625 -0.078125 0.015625q-0.09375 0 -0.296875 -0.125q-0.1875 -0.140625 -0.53125 -0.296875q-0.328125 -0.171875 -0.796875 -0.3125q-0.46875 -0.140625 -1.125 -0.140625q-0.765625 0 -1.375 0.28125q-0.609375 0.28125 -1.03125 0.78125q-0.421875 0.484375 -0.640625 1.171875q-0.21875 0.671875 -0.21875 1.46875q0 0.890625 0.234375 1.578125q0.25 0.6875 0.6875 1.15625q0.4375 0.46875 1.03125 0.71875q0.609375 0.25 1.34375 0.25q0.421875 0 0.859375 -0.109375q0.453125 -0.109375 0.828125 -0.3125l0 -2.703125l-2.15625 0q-0.109375 0 -0.171875 -0.109375q-0.0625 -0.125 -0.0625 -0.390625q0 -0.125 0.015625 -0.21875q0.015625 -0.109375 0.046875 -0.171875q0.03125 -0.0625 0.0625 -0.078125q0.046875 -0.03125 0.109375 -0.03125l2.953125 0q0.078125 0 0.15625 0.03125q0.078125 0.015625 0.140625 0.078125q0.0625 0.0625 0.09375 0.171875q0.046875 0.09375 0.046875 0.21875l0 3.53125q0 0.171875 -0.078125 0.3125q-0.0625 0.140625 -0.265625 0.25q-0.203125 0.09375 -0.53125 0.21875q-0.328125 0.125 -0.6875 0.21875q-0.34375 0.078125 -0.703125 0.109375q-0.359375 0.046875 -0.703125 0.046875q-1.078125 0 -1.921875 -0.328125q-0.84375 -0.328125 -1.4375 -0.9375q-0.578125 -0.625 -0.890625 -1.484375q-0.296875 -0.859375 -0.296875 -1.921875q0 -1.09375 0.328125 -1.984375q0.328125 -0.90625 0.9375 -1.53125q0.609375 -0.625 1.453125 -0.96875q0.84375 -0.359375 1.875 -0.359375q0.53125 0 1.0 0.09375q0.46875 0.09375 0.828125 0.21875q0.359375 0.125 0.59375 0.28125q0.25 0.140625 0.34375 0.234375q0.09375 0.09375 0.125 0.21875q0.046875 0.109375 0.046875 0.34375zm3.3397827 7.828125q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -9.5625q0 -0.0625 0.015625 -0.109375q0.03125 -0.046875 0.09375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.109375l0 9.5625zm7.0354004 0q0 0.09375 -0.0625 0.140625q-0.0625 0.03125 -0.171875 0.046875q-0.09375 0.03125 -0.28125 0.03125q-0.1875 0 -0.296875 -0.03125q-0.109375 -0.015625 -0.15625 -0.046875q-0.046875 -0.046875 -0.046875 -0.140625l0 -0.640625q-0.421875 0.453125 -0.953125 0.703125q-0.515625 0.25 -1.09375 0.25q-0.5 0 -0.921875 -0.140625q-0.40625 -0.125 -0.703125 -0.375q-0.28125 -0.25 -0.453125 -0.609375q-0.15625 -0.375 -0.15625 -0.84375q0 -0.546875 0.21875 -0.9375q0.234375 -0.40625 0.640625 -0.671875q0.421875 -0.265625 1.015625 -0.390625q0.609375 -0.140625 1.359375 -0.140625l0.875 0l0 -0.5q0 -0.375 -0.078125 -0.65625q-0.078125 -0.28125 -0.25 -0.46875q-0.171875 -0.203125 -0.453125 -0.296875q-0.28125 -0.09375 -0.6875 -0.09375q-0.4375 0 -0.78125 0.109375q-0.34375 0.09375 -0.609375 0.21875q-0.265625 0.125 -0.4375 0.234375q-0.171875 0.109375 -0.265625 0.109375q-0.046875 0 -0.09375 -0.03125q-0.046875 -0.03125 -0.078125 -0.078125q-0.03125 -0.0625 -0.046875 -0.15625q-0.015625 -0.09375 -0.015625 -0.203125q0 -0.171875 0.015625 -0.265625q0.03125 -0.109375 0.125 -0.203125q0.109375 -0.09375 0.34375 -0.21875q0.234375 -0.125 0.53125 -0.234375q0.3125 -0.109375 0.671875 -0.171875q0.375 -0.0625 0.75 -0.0625q0.6875 0 1.171875 0.15625q0.5 0.15625 0.796875 0.46875q0.296875 0.296875 0.4375 0.75q0.140625 0.453125 0.140625 1.046875l0 4.34375zm-1.1875 -2.9375l-1.0 0q-0.484375 0 -0.84375 0.078125q-0.359375 0.078125 -0.59375 0.25q-0.234375 0.15625 -0.34375 0.390625q-0.109375 0.21875 -0.109375 0.515625q0 0.5 0.3125 0.796875q0.3125 0.296875 0.890625 0.296875q0.46875 0 0.859375 -0.234375q0.40625 -0.25 0.828125 -0.734375l0 -1.359375zm8.895386 2.9375q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.171875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.03125 -0.046875 -0.03125 -0.09375l0 -3.78125q0 -0.546875 -0.09375 -0.875q-0.078125 -0.34375 -0.25 -0.578125q-0.15625 -0.25 -0.421875 -0.375q-0.25 -0.140625 -0.59375 -0.140625q-0.4375 0 -0.890625 0.328125q-0.4375 0.3125 -0.921875 0.90625l0 4.515625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.0625 -0.03125 0.15625 -0.046875q0.109375 -0.015625 0.265625 -0.015625q0.171875 0 0.265625 0.015625q0.109375 0.015625 0.15625 0.046875q0.0625 0.03125 0.078125 0.078125q0.03125 0.03125 0.03125 0.078125l0 0.859375q0.546875 -0.609375 1.078125 -0.890625q0.546875 -0.28125 1.109375 -0.28125q0.640625 0 1.078125 0.21875q0.4375 0.21875 0.703125 0.578125q0.28125 0.359375 0.390625 0.859375q0.125 0.484375 0.125 1.171875l0 3.9375zm6.7783813 -0.984375q0 0.125 -0.015625 0.21875q0 0.078125 -0.015625 0.140625q-0.015625 0.0625 -0.046875 0.109375q-0.015625 0.046875 -0.109375 0.140625q-0.078125 0.078125 -0.296875 0.21875q-0.21875 0.125 -0.484375 0.234375q-0.265625 0.09375 -0.59375 0.15625q-0.3125 0.078125 -0.640625 0.078125q-0.703125 0 -1.234375 -0.234375q-0.53125 -0.234375 -0.90625 -0.671875q-0.359375 -0.4375 -0.546875 -1.078125q-0.1875 -0.640625 -0.1875 -1.484375q0 -0.9375 0.234375 -1.625q0.234375 -0.6875 0.640625 -1.125q0.40625 -0.4375 0.953125 -0.640625q0.546875 -0.21875 1.1875 -0.21875q0.296875 0 0.578125 0.0625q0.296875 0.0625 0.546875 0.15625q0.25 0.078125 0.4375 0.203125q0.1875 0.125 0.265625 0.21875q0.09375 0.078125 0.125 0.125q0.03125 0.046875 0.046875 0.125q0.03125 0.0625 0.03125 0.15625q0.015625 0.078125 0.015625 0.203125q0 0.28125 -0.078125 0.390625q-0.0625 0.109375 -0.15625 0.109375q-0.09375 0 -0.234375 -0.109375q-0.140625 -0.125 -0.359375 -0.265625q-0.21875 -0.140625 -0.53125 -0.25q-0.296875 -0.125 -0.703125 -0.125q-0.859375 0 -1.3125 0.65625q-0.453125 0.65625 -0.453125 1.890625q0 0.625 0.109375 1.09375q0.125 0.46875 0.34375 0.796875q0.234375 0.3125 0.5625 0.46875q0.34375 0.140625 0.78125 0.140625q0.40625 0 0.703125 -0.125q0.3125 -0.125 0.53125 -0.28125q0.234375 -0.15625 0.390625 -0.28125q0.15625 -0.125 0.234375 -0.125q0.046875 0 0.078125 0.03125q0.046875 0.03125 0.0625 0.09375q0.03125 0.0625 0.03125 0.171875q0.015625 0.109375 0.015625 0.25zm7.0723877 -2.515625q0 0.265625 -0.140625 0.390625q-0.140625 0.125 -0.3125 0.125l-4.234375 0q0 0.53125 0.109375 0.96875q0.109375 0.421875 0.359375 0.734375q0.25 0.296875 0.640625 0.46875q0.40625 0.15625 0.984375 0.15625q0.46875 0 0.828125 -0.0625q0.359375 -0.078125 0.609375 -0.171875q0.265625 -0.09375 0.4375 -0.171875q0.171875 -0.078125 0.25 -0.078125q0.046875 0 0.078125 0.03125q0.046875 0.015625 0.0625 0.078125q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125q0 0.09375 0 0.171875q0 0.0625 -0.015625 0.125q-0.015625 0.046875 -0.046875 0.09375q-0.015625 0.046875 -0.0625 0.09375q-0.03125 0.03125 -0.234375 0.125q-0.1875 0.078125 -0.5 0.171875q-0.296875 0.078125 -0.703125 0.140625q-0.40625 0.078125 -0.859375 0.078125q-0.796875 0 -1.40625 -0.21875q-0.59375 -0.234375 -1.0 -0.671875q-0.40625 -0.4375 -0.609375 -1.09375q-0.203125 -0.65625 -0.203125 -1.53125q0 -0.828125 0.203125 -1.484375q0.21875 -0.671875 0.625 -1.125q0.40625 -0.46875 0.96875 -0.703125q0.578125 -0.25 1.28125 -0.25q0.765625 0 1.296875 0.25q0.53125 0.234375 0.875 0.65625q0.34375 0.40625 0.5 0.96875q0.171875 0.546875 0.171875 1.171875l0 0.21875zm-1.1875 -0.359375q0.015625 -0.921875 -0.421875 -1.453125q-0.421875 -0.53125 -1.28125 -0.53125q-0.4375 0 -0.765625 0.171875q-0.328125 0.15625 -0.546875 0.4375q-0.21875 0.265625 -0.34375 0.625q-0.125 0.359375 -0.140625 0.75l3.5 0zm7.0423584 -5.40625q0 0.21875 -0.03125 0.40625q-0.015625 0.171875 -0.0625 0.34375q-0.03125 0.171875 -0.125 0.328125q-0.078125 0.15625 -0.1875 0.328125l-0.984375 1.46875q-0.015625 0.0625 -0.0625 0.109375q-0.046875 0.03125 -0.125 0.0625q-0.0625 0.015625 -0.15625 0.03125q-0.078125 0.015625 -0.203125 0.015625q-0.109375 0 -0.1875 -0.015625q-0.078125 -0.015625 -0.125 -0.03125q-0.03125 -0.03125 -0.03125 -0.078125q0 -0.046875 0.015625 -0.109375l0.953125 -1.953125l0 -0.90625q0 -0.1875 0.03125 -0.296875q0.046875 -0.125 0.125 -0.171875q0.078125 -0.0625 0.203125 -0.078125q0.125 -0.03125 0.3125 -0.03125q0.15625 0 0.28125 0.03125q0.125 0.015625 0.203125 0.078125q0.078125 0.046875 0.109375 0.171875q0.046875 0.109375 0.046875 0.296875zm-2.5625 0q0 0.21875 -0.015625 0.40625q-0.015625 0.171875 -0.0625 0.34375q-0.046875 0.171875 -0.140625 0.328125q-0.078125 0.15625 -0.1875 0.328125l-0.984375 1.46875q-0.015625 0.0625 -0.0625 0.109375q-0.046875 0.03125 -0.125 0.0625q-0.0625 0.015625 -0.15625 0.03125q-0.078125 0.015625 -0.203125 0.015625q-0.109375 0 -0.1875 -0.015625q-0.078125 -0.015625 -0.125 -0.03125q-0.03125 -0.03125 -0.03125 -0.078125q0 -0.046875 0.03125 -0.109375l0.9375 -1.953125l0 -0.90625q0 -0.1875 0.03125 -0.296875q0.046875 -0.125 0.125 -0.171875q0.078125 -0.0625 0.203125 -0.078125q0.125 -0.03125 0.3125 -0.03125q0.171875 0 0.28125 0.03125q0.125 0.015625 0.203125 0.078125q0.078125 0.046875 0.109375 0.171875q0.046875 0.109375 0.046875 0.296875zm14.934448 9.265625q0 0.046875 -0.03125 0.09375q-0.015625 0.046875 -0.078125 0.078125q-0.0625 0.015625 -0.171875 0.03125q-0.09375 0.015625 -0.234375 0.015625q-0.140625 0 -0.25 -0.015625q-0.09375 -0.015625 -0.15625 -0.03125q-0.0625 -0.03125 -0.09375 -0.078125q-0.03125 -0.046875 -0.03125 -0.09375l0 -0.859375q-0.515625 0.546875 -1.0625 0.859375q-0.546875 0.3125 -1.1875 0.3125q-0.71875 0 -1.21875 -0.28125q-0.5 -0.28125 -0.8125 -0.75q-0.3125 -0.46875 -0.453125 -1.09375q-0.140625 -0.640625 -0.140625 -1.34375q0 -0.828125 0.171875 -1.484375q0.1875 -0.671875 0.53125 -1.140625q0.359375 -0.484375 0.875 -0.734375q0.515625 -0.25 1.203125 -0.25q0.5625 0 1.03125 0.25q0.46875 0.234375 0.921875 0.71875l0 -3.75q0 -0.046875 0.015625 -0.09375q0.03125 -0.046875 0.109375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.109375 -0.015625 0.28125 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.09375l0 9.546875zm-1.1875 -4.53125q-0.484375 -0.59375 -0.9375 -0.90625q-0.4375 -0.3125 -0.921875 -0.3125q-0.453125 0 -0.765625 0.21875q-0.3125 0.203125 -0.515625 0.5625q-0.1875 0.34375 -0.28125 0.796875q-0.09375 0.4375 -0.09375 0.890625q0 0.484375 0.078125 0.953125q0.078125 0.46875 0.265625 0.828125q0.1875 0.359375 0.484375 0.578125q0.3125 0.21875 0.78125 0.21875q0.234375 0 0.453125 -0.0625q0.21875 -0.0625 0.4375 -0.203125q0.234375 -0.15625 0.484375 -0.390625q0.25 -0.25 0.53125 -0.59375l0 -2.578125zm8.231506 4.53125q0 0.09375 -0.0625 0.140625q-0.0625 0.03125 -0.171875 0.046875q-0.09375 0.03125 -0.28125 0.03125q-0.1875 0 -0.296875 -0.03125q-0.109375 -0.015625 -0.15625 -0.046875q-0.046875 -0.046875 -0.046875 -0.140625l0 -0.640625q-0.421875 0.453125 -0.953125 0.703125q-0.515625 0.25 -1.09375 0.25q-0.5 0 -0.921875 -0.140625q-0.40625 -0.125 -0.703125 -0.375q-0.28125 -0.25 -0.453125 -0.609375q-0.15625 -0.375 -0.15625 -0.84375q0 -0.546875 0.21875 -0.9375q0.234375 -0.40625 0.640625 -0.671875q0.421875 -0.265625 1.015625 -0.390625q0.609375 -0.140625 1.359375 -0.140625l0.875 0l0 -0.5q0 -0.375 -0.078125 -0.65625q-0.078125 -0.28125 -0.25 -0.46875q-0.171875 -0.203125 -0.453125 -0.296875q-0.28125 -0.09375 -0.6875 -0.09375q-0.4375 0 -0.78125 0.109375q-0.34375 0.09375 -0.609375 0.21875q-0.265625 0.125 -0.4375 0.234375q-0.171875 0.109375 -0.265625 0.109375q-0.046875 0 -0.09375 -0.03125q-0.046875 -0.03125 -0.078125 -0.078125q-0.03125 -0.0625 -0.046875 -0.15625q-0.015625 -0.09375 -0.015625 -0.203125q0 -0.171875 0.015625 -0.265625q0.03125 -0.109375 0.125 -0.203125q0.109375 -0.09375 0.34375 -0.21875q0.234375 -0.125 0.53125 -0.234375q0.3125 -0.109375 0.671875 -0.171875q0.375 -0.0625 0.75 -0.0625q0.6875 0 1.171875 0.15625q0.5 0.15625 0.796875 0.46875q0.296875 0.296875 0.4375 0.75q0.140625 0.453125 0.140625 1.046875l0 4.34375zm-1.1875 -2.9375l-1.0 0q-0.484375 0 -0.84375 0.078125q-0.359375 0.078125 -0.59375 0.25q-0.234375 0.15625 -0.34375 0.390625q-0.109375 0.21875 -0.109375 0.515625q0 0.5 0.3125 0.796875q0.3125 0.296875 0.890625 0.296875q0.46875 0 0.859375 -0.234375q0.40625 -0.25 0.828125 -0.734375l0 -1.359375zm7.395447 1.171875q0 0.5 -0.1875 0.890625q-0.1875 0.375 -0.53125 0.640625q-0.328125 0.265625 -0.796875 0.40625q-0.453125 0.140625 -1.015625 0.140625q-0.34375 0 -0.65625 -0.0625q-0.3125 -0.046875 -0.5625 -0.125q-0.234375 -0.09375 -0.40625 -0.171875q-0.171875 -0.09375 -0.25 -0.15625q-0.078125 -0.078125 -0.125 -0.203125q-0.03125 -0.140625 -0.03125 -0.359375q0 -0.140625 0.015625 -0.234375q0.015625 -0.09375 0.03125 -0.140625q0.03125 -0.0625 0.0625 -0.078125q0.046875 -0.03125 0.09375 -0.03125q0.078125 0 0.234375 0.09375q0.15625 0.09375 0.375 0.21875q0.234375 0.109375 0.53125 0.203125q0.3125 0.09375 0.71875 0.09375q0.296875 0 0.53125 -0.0625q0.25 -0.0625 0.421875 -0.1875q0.1875 -0.125 0.28125 -0.3125q0.09375 -0.203125 0.09375 -0.46875q0 -0.265625 -0.140625 -0.453125q-0.140625 -0.1875 -0.375 -0.328125q-0.21875 -0.140625 -0.515625 -0.25q-0.28125 -0.109375 -0.59375 -0.234375q-0.296875 -0.125 -0.59375 -0.28125q-0.28125 -0.15625 -0.515625 -0.375q-0.21875 -0.21875 -0.359375 -0.515625q-0.140625 -0.3125 -0.140625 -0.75q0 -0.375 0.140625 -0.71875q0.15625 -0.359375 0.453125 -0.609375q0.296875 -0.265625 0.734375 -0.421875q0.4375 -0.15625 1.015625 -0.15625q0.265625 0 0.515625 0.046875q0.265625 0.03125 0.46875 0.09375q0.203125 0.0625 0.34375 0.140625q0.15625 0.078125 0.234375 0.140625q0.078125 0.046875 0.09375 0.09375q0.03125 0.046875 0.03125 0.109375q0.015625 0.046875 0.03125 0.125q0.015625 0.078125 0.015625 0.1875q0 0.125 -0.015625 0.21875q-0.015625 0.078125 -0.046875 0.140625q-0.015625 0.0625 -0.046875 0.09375q-0.03125 0.015625 -0.078125 0.015625q-0.0625 0 -0.1875 -0.078125q-0.125 -0.078125 -0.328125 -0.171875q-0.1875 -0.09375 -0.453125 -0.171875q-0.25 -0.078125 -0.59375 -0.078125q-0.296875 0 -0.53125 0.078125q-0.21875 0.0625 -0.375 0.1875q-0.140625 0.125 -0.21875 0.296875q-0.0625 0.171875 -0.0625 0.375q0 0.28125 0.140625 0.46875q0.140625 0.1875 0.359375 0.328125q0.234375 0.140625 0.53125 0.265625q0.296875 0.109375 0.59375 0.234375q0.3125 0.125 0.609375 0.28125q0.296875 0.140625 0.515625 0.359375q0.234375 0.203125 0.375 0.515625q0.140625 0.296875 0.140625 0.703125zm7.232239 1.765625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.171875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.03125 -0.046875 -0.03125 -0.09375l0 -3.78125q0 -0.546875 -0.09375 -0.875q-0.078125 -0.34375 -0.25 -0.578125q-0.15625 -0.25 -0.421875 -0.375q-0.25 -0.140625 -0.59375 -0.140625q-0.4375 0 -0.890625 0.328125q-0.4375 0.3125 -0.921875 0.90625l0 4.515625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -9.5625q0 -0.0625 0.015625 -0.109375q0.03125 -0.046875 0.09375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.109375l0 3.859375q0.5 -0.546875 1.015625 -0.796875q0.515625 -0.265625 1.046875 -0.265625q0.640625 0 1.078125 0.21875q0.4375 0.21875 0.703125 0.578125q0.28125 0.359375 0.390625 0.859375q0.125 0.484375 0.125 1.1875l0 3.921875zm8.075256 -3.3125q0 0.84375 -0.1875 1.515625q-0.171875 0.65625 -0.53125 1.140625q-0.34375 0.46875 -0.859375 0.71875q-0.515625 0.25 -1.1875 0.25q-0.3125 0 -0.578125 -0.0625q-0.25 -0.0625 -0.5 -0.1875q-0.25 -0.140625 -0.5 -0.34375q-0.25 -0.21875 -0.53125 -0.515625l0 0.796875q0 0.046875 -0.03125 0.09375q-0.03125 0.046875 -0.09375 0.078125q-0.0625 0.015625 -0.15625 0.03125q-0.09375 0.015625 -0.25 0.015625q-0.140625 0 -0.25 -0.015625q-0.09375 -0.015625 -0.15625 -0.03125q-0.0625 -0.03125 -0.09375 -0.078125q-0.015625 -0.046875 -0.015625 -0.09375l0 -9.5625q0 -0.0625 0.015625 -0.109375q0.03125 -0.046875 0.09375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.109375l0 3.859375q0.28125 -0.296875 0.546875 -0.5q0.265625 -0.203125 0.515625 -0.328125q0.265625 -0.125 0.515625 -0.171875q0.265625 -0.0625 0.5625 -0.0625q0.6875 0 1.1875 0.28125q0.5 0.265625 0.8125 0.734375q0.3125 0.46875 0.453125 1.109375q0.140625 0.625 0.140625 1.328125zm-1.234375 0.140625q0 -0.5 -0.078125 -0.953125q-0.078125 -0.46875 -0.265625 -0.828125q-0.1875 -0.359375 -0.5 -0.578125q-0.296875 -0.21875 -0.765625 -0.21875q-0.21875 0 -0.453125 0.0625q-0.21875 0.0625 -0.453125 0.21875q-0.21875 0.140625 -0.46875 0.375q-0.234375 0.234375 -0.515625 0.59375l0 2.578125q0.484375 0.59375 0.921875 0.90625q0.453125 0.3125 0.921875 0.3125q0.453125 0 0.765625 -0.21875q0.3125 -0.21875 0.5 -0.5625q0.203125 -0.359375 0.296875 -0.796875q0.09375 -0.4375 0.09375 -0.890625zm8.997131 -0.125q0 0.78125 -0.203125 1.453125q-0.203125 0.65625 -0.625 1.140625q-0.40625 0.46875 -1.03125 0.75q-0.609375 0.265625 -1.421875 0.265625q-0.796875 0 -1.390625 -0.234375q-0.59375 -0.25 -0.984375 -0.6875q-0.390625 -0.453125 -0.59375 -1.09375q-0.1875 -0.65625 -0.1875 -1.46875q0 -0.78125 0.203125 -1.4375q0.203125 -0.671875 0.609375 -1.140625q0.421875 -0.484375 1.03125 -0.75q0.625 -0.265625 1.4375 -0.265625q0.796875 0 1.390625 0.234375q0.59375 0.234375 0.984375 0.6875q0.390625 0.453125 0.578125 1.09375q0.203125 0.640625 0.203125 1.453125zm-1.234375 0.078125q0 -0.53125 -0.109375 -0.984375q-0.09375 -0.46875 -0.3125 -0.8125q-0.21875 -0.359375 -0.609375 -0.5625q-0.375 -0.203125 -0.9375 -0.203125q-0.515625 0 -0.890625 0.1875q-0.375 0.1875 -0.625 0.53125q-0.234375 0.328125 -0.359375 0.796875q-0.125 0.46875 -0.125 1.015625q0 0.53125 0.09375 1.0q0.109375 0.46875 0.328125 0.8125q0.234375 0.34375 0.609375 0.546875q0.375 0.203125 0.9375 0.203125q0.515625 0 0.890625 -0.1875q0.390625 -0.1875 0.625 -0.515625q0.25 -0.34375 0.359375 -0.796875q0.125 -0.46875 0.125 -1.03125zm7.838257 3.21875q0 0.09375 -0.0625 0.140625q-0.0625 0.03125 -0.171875 0.046875q-0.09375 0.03125 -0.28125 0.03125q-0.1875 0 -0.296875 -0.03125q-0.109375 -0.015625 -0.15625 -0.046875q-0.046875 -0.046875 -0.046875 -0.140625l0 -0.640625q-0.421875 0.453125 -0.953125 0.703125q-0.515625 0.25 -1.09375 0.25q-0.5 0 -0.921875 -0.140625q-0.40625 -0.125 -0.703125 -0.375q-0.28125 -0.25 -0.453125 -0.609375q-0.15625 -0.375 -0.15625 -0.84375q0 -0.546875 0.21875 -0.9375q0.234375 -0.40625 0.640625 -0.671875q0.421875 -0.265625 1.015625 -0.390625q0.609375 -0.140625 1.359375 -0.140625l0.875 0l0 -0.5q0 -0.375 -0.078125 -0.65625q-0.078125 -0.28125 -0.25 -0.46875q-0.171875 -0.203125 -0.453125 -0.296875q-0.28125 -0.09375 -0.6875 -0.09375q-0.4375 0 -0.78125 0.109375q-0.34375 0.09375 -0.609375 0.21875q-0.265625 0.125 -0.4375 0.234375q-0.171875 0.109375 -0.265625 0.109375q-0.046875 0 -0.09375 -0.03125q-0.046875 -0.03125 -0.078125 -0.078125q-0.03125 -0.0625 -0.046875 -0.15625q-0.015625 -0.09375 -0.015625 -0.203125q0 -0.171875 0.015625 -0.265625q0.03125 -0.109375 0.125 -0.203125q0.109375 -0.09375 0.34375 -0.21875q0.234375 -0.125 0.53125 -0.234375q0.3125 -0.109375 0.671875 -0.171875q0.375 -0.0625 0.75 -0.0625q0.6875 0 1.171875 0.15625q0.5 0.15625 0.796875 0.46875q0.296875 0.296875 0.4375 0.75q0.140625 0.453125 0.140625 1.046875l0 4.34375zm-1.1875 -2.9375l-1.0 0q-0.484375 0 -0.84375 0.078125q-0.359375 0.078125 -0.59375 0.25q-0.234375 0.15625 -0.34375 0.390625q-0.109375 0.21875 -0.109375 0.515625q0 0.5 0.3125 0.796875q0.3125 0.296875 0.890625 0.296875q0.46875 0 0.859375 -0.234375q0.40625 -0.25 0.828125 -0.734375l0 -1.359375zm7.1141357 -3.09375q0 0.15625 -0.015625 0.265625q0 0.109375 -0.03125 0.171875q-0.015625 0.0625 -0.046875 0.09375q-0.03125 0.03125 -0.078125 0.03125q-0.0625 0 -0.15625 -0.03125q-0.078125 -0.03125 -0.1875 -0.0625q-0.09375 -0.03125 -0.21875 -0.0625q-0.125 -0.03125 -0.28125 -0.03125q-0.171875 0 -0.34375 0.078125q-0.171875 0.0625 -0.375 0.234375q-0.1875 0.15625 -0.390625 0.4375q-0.203125 0.265625 -0.453125 0.65625l0 4.25q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.0625 -0.03125 0.15625 -0.046875q0.109375 -0.015625 0.265625 -0.015625q0.171875 0 0.265625 0.015625q0.109375 0.015625 0.15625 0.046875q0.0625 0.03125 0.078125 0.078125q0.03125 0.03125 0.03125 0.078125l0 0.9375q0.265625 -0.375 0.5 -0.625q0.234375 -0.25 0.4375 -0.375q0.21875 -0.140625 0.421875 -0.1875q0.203125 -0.0625 0.40625 -0.0625q0.09375 0 0.203125 0.015625q0.125 0 0.25 0.03125q0.140625 0.03125 0.234375 0.0625q0.109375 0.03125 0.140625 0.078125q0.046875 0.03125 0.0625 0.0625q0.015625 0.03125 0.03125 0.078125q0.015625 0.046875 0.015625 0.15625q0 0.09375 0 0.25zm6.85968 6.03125q0 0.046875 -0.03125 0.09375q-0.015625 0.046875 -0.078125 0.078125q-0.0625 0.015625 -0.171875 0.03125q-0.09375 0.015625 -0.234375 0.015625q-0.140625 0 -0.25 -0.015625q-0.09375 -0.015625 -0.15625 -0.03125q-0.0625 -0.03125 -0.09375 -0.078125q-0.03125 -0.046875 -0.03125 -0.09375l0 -0.859375q-0.515625 0.546875 -1.0625 0.859375q-0.546875 0.3125 -1.1875 0.3125q-0.71875 0 -1.21875 -0.28125q-0.5 -0.28125 -0.8125 -0.75q-0.3125 -0.46875 -0.453125 -1.09375q-0.140625 -0.640625 -0.140625 -1.34375q0 -0.828125 0.171875 -1.484375q0.1875 -0.671875 0.53125 -1.140625q0.359375 -0.484375 0.875 -0.734375q0.515625 -0.25 1.203125 -0.25q0.5625 0 1.03125 0.25q0.46875 0.234375 0.921875 0.71875l0 -3.75q0 -0.046875 0.015625 -0.09375q0.03125 -0.046875 0.109375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.109375 -0.015625 0.28125 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.09375l0 9.546875zm-1.1875 -4.53125q-0.484375 -0.59375 -0.9375 -0.90625q-0.4375 -0.3125 -0.921875 -0.3125q-0.453125 0 -0.765625 0.21875q-0.3125 0.203125 -0.515625 0.5625q-0.1875 0.34375 -0.28125 0.796875q-0.09375 0.4375 -0.09375 0.890625q0 0.484375 0.078125 0.953125q0.078125 0.46875 0.265625 0.828125q0.1875 0.359375 0.484375 0.578125q0.3125 0.21875 0.78125 0.21875q0.234375 0 0.453125 -0.0625q0.21875 -0.0625 0.4375 -0.203125q0.234375 -0.15625 0.484375 -0.390625q0.25 -0.25 0.53125 -0.59375l0 -2.578125zm4.9033813 3.921875q0 0.515625 -0.171875 0.6875q-0.171875 0.15625 -0.609375 0.15625q-0.4375 0 -0.609375 -0.15625q-0.15625 -0.171875 -0.15625 -0.671875q0 -0.5 0.171875 -0.671875q0.171875 -0.171875 0.609375 -0.171875q0.4375 0 0.59375 0.171875q0.171875 0.15625 0.171875 0.65625z" fill-rule="nonzero"/><path fill="#000000" d="m681.01025 634.146q0 0.140625 -0.015625 0.25q-0.015625 0.09375 -0.046875 0.15625q-0.03125 0.0625 -0.078125 0.09375q-0.046875 0.015625 -0.09375 0.015625l-2.609375 0l0 8.03125q0 0.0625 -0.03125 0.109375q-0.03125 0.03125 -0.109375 0.0625q-0.0625 0.015625 -0.1875 0.03125q-0.109375 0.03125 -0.28125 0.03125q-0.171875 0 -0.296875 -0.03125q-0.125 -0.015625 -0.203125 -0.03125q-0.0625 -0.03125 -0.09375 -0.0625q-0.03125 -0.046875 -0.03125 -0.109375l0 -8.03125l-2.609375 0q-0.046875 0 -0.09375 -0.015625q-0.046875 -0.03125 -0.078125 -0.09375q-0.03125 -0.0625 -0.046875 -0.15625q-0.015625 -0.109375 -0.015625 -0.25q0 -0.125 0.015625 -0.234375q0.015625 -0.109375 0.046875 -0.171875q0.03125 -0.0625 0.078125 -0.09375q0.046875 -0.03125 0.09375 -0.03125l6.453125 0q0.046875 0 0.09375 0.03125q0.046875 0.03125 0.078125 0.09375q0.03125 0.0625 0.046875 0.171875q0.015625 0.109375 0.015625 0.234375zm6.751404 8.5625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.171875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.03125 -0.046875 -0.03125 -0.09375l0 -3.78125q0 -0.546875 -0.09375 -0.875q-0.078125 -0.34375 -0.25 -0.578125q-0.15625 -0.25 -0.421875 -0.375q-0.25 -0.140625 -0.59375 -0.140625q-0.4375 0 -0.890625 0.328125q-0.4375 0.3125 -0.921875 0.90625l0 4.515625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -9.5625q0 -0.0625 0.015625 -0.109375q0.03125 -0.046875 0.09375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.109375l0 3.859375q0.5 -0.546875 1.015625 -0.796875q0.515625 -0.265625 1.046875 -0.265625q0.640625 0 1.078125 0.21875q0.4375 0.21875 0.703125 0.578125q0.28125 0.359375 0.390625 0.859375q0.125 0.484375 0.125 1.1875l0 3.921875zm7.6533813 -3.5q0 0.265625 -0.140625 0.390625q-0.140625 0.125 -0.3125 0.125l-4.234375 0q0 0.53125 0.109375 0.96875q0.109375 0.421875 0.359375 0.734375q0.25 0.296875 0.640625 0.46875q0.40625 0.15625 0.984375 0.15625q0.46875 0 0.828125 -0.0625q0.359375 -0.078125 0.609375 -0.171875q0.265625 -0.09375 0.4375 -0.171875q0.171875 -0.078125 0.25 -0.078125q0.046875 0 0.078125 0.03125q0.046875 0.015625 0.0625 0.078125q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125q0 0.09375 0 0.171875q0 0.0625 -0.015625 0.125q-0.015625 0.046875 -0.046875 0.09375q-0.015625 0.046875 -0.0625 0.09375q-0.03125 0.03125 -0.234375 0.125q-0.1875 0.078125 -0.5 0.171875q-0.296875 0.078125 -0.703125 0.140625q-0.40625 0.078125 -0.859375 0.078125q-0.796875 0 -1.40625 -0.21875q-0.59375 -0.234375 -1.0 -0.671875q-0.40625 -0.4375 -0.609375 -1.09375q-0.203125 -0.65625 -0.203125 -1.53125q0 -0.828125 0.203125 -1.484375q0.21875 -0.671875 0.625 -1.125q0.40625 -0.46875 0.96875 -0.703125q0.578125 -0.25 1.28125 -0.25q0.765625 0 1.296875 0.25q0.53125 0.234375 0.875 0.65625q0.34375 0.40625 0.5 0.96875q0.171875 0.546875 0.171875 1.171875l0 0.21875zm-1.1875 -0.359375q0.015625 -0.921875 -0.421875 -1.453125q-0.421875 -0.53125 -1.28125 -0.53125q-0.4375 0 -0.765625 0.171875q-0.328125 0.15625 -0.546875 0.4375q-0.21875 0.265625 -0.34375 0.625q-0.125 0.359375 -0.140625 0.75l3.5 0zm5.9173584 4.03125l-0.859375 2.375q-0.046875 0.109375 -0.21875 0.171875q-0.171875 0.0625 -0.53125 0.0625q-0.1875 0 -0.3125 -0.03125q-0.109375 -0.015625 -0.171875 -0.0625q-0.0625 -0.03125 -0.0625 -0.109375q0 -0.0625 0.03125 -0.171875l0.890625 -2.234375q-0.0625 -0.03125 -0.125 -0.09375q-0.046875 -0.0625 -0.078125 -0.140625l-2.296875 -6.15625q-0.046875 -0.140625 -0.046875 -0.21875q0 -0.09375 0.046875 -0.140625q0.0625 -0.0625 0.1875 -0.078125q0.125 -0.015625 0.34375 -0.015625q0.21875 0 0.328125 0.015625q0.125 0.015625 0.203125 0.046875q0.078125 0.015625 0.109375 0.078125q0.03125 0.046875 0.0625 0.140625l1.84375 5.171875l0.015625 0l1.78125 -5.203125q0.03125 -0.140625 0.09375 -0.171875q0.0625 -0.046875 0.1875 -0.0625q0.125 -0.015625 0.34375 -0.015625q0.203125 0 0.328125 0.015625q0.140625 0.015625 0.203125 0.078125q0.0625 0.046875 0.0625 0.140625q0 0.078125 -0.046875 0.203125l-2.3125 6.40625zm17.456238 -0.171875q0 0.09375 -0.0625 0.140625q-0.0625 0.03125 -0.171875 0.046875q-0.09375 0.03125 -0.28125 0.03125q-0.1875 0 -0.296875 -0.03125q-0.109375 -0.015625 -0.15625 -0.046875q-0.046875 -0.046875 -0.046875 -0.140625l0 -0.640625q-0.421875 0.453125 -0.953125 0.703125q-0.515625 0.25 -1.09375 0.25q-0.5 0 -0.921875 -0.140625q-0.40625 -0.125 -0.703125 -0.375q-0.28125 -0.25 -0.453125 -0.609375q-0.15625 -0.375 -0.15625 -0.84375q0 -0.546875 0.21875 -0.9375q0.234375 -0.40625 0.640625 -0.671875q0.421875 -0.265625 1.015625 -0.390625q0.609375 -0.140625 1.359375 -0.140625l0.875 0l0 -0.5q0 -0.375 -0.078125 -0.65625q-0.078125 -0.28125 -0.25 -0.46875q-0.171875 -0.203125 -0.453125 -0.296875q-0.28125 -0.09375 -0.6875 -0.09375q-0.4375 0 -0.78125 0.109375q-0.34375 0.09375 -0.609375 0.21875q-0.265625 0.125 -0.4375 0.234375q-0.171875 0.109375 -0.265625 0.109375q-0.046875 0 -0.09375 -0.03125q-0.046875 -0.03125 -0.078125 -0.078125q-0.03125 -0.0625 -0.046875 -0.15625q-0.015625 -0.09375 -0.015625 -0.203125q0 -0.171875 0.015625 -0.265625q0.03125 -0.109375 0.125 -0.203125q0.109375 -0.09375 0.34375 -0.21875q0.234375 -0.125 0.53125 -0.234375q0.3125 -0.109375 0.671875 -0.171875q0.375 -0.0625 0.75 -0.0625q0.6875 0 1.171875 0.15625q0.5 0.15625 0.796875 0.46875q0.296875 0.296875 0.4375 0.75q0.140625 0.453125 0.140625 1.046875l0 4.34375zm-1.1875 -2.9375l-1.0 0q-0.484375 0 -0.84375 0.078125q-0.359375 0.078125 -0.59375 0.25q-0.234375 0.15625 -0.34375 0.390625q-0.109375 0.21875 -0.109375 0.515625q0 0.5 0.3125 0.796875q0.3125 0.296875 0.890625 0.296875q0.46875 0 0.859375 -0.234375q0.40625 -0.25 0.828125 -0.734375l0 -1.359375zm7.1141357 -3.09375q0 0.15625 -0.015625 0.265625q0 0.109375 -0.03125 0.171875q-0.015625 0.0625 -0.046875 0.09375q-0.03125 0.03125 -0.078125 0.03125q-0.0625 0 -0.15625 -0.03125q-0.078125 -0.03125 -0.1875 -0.0625q-0.09375 -0.03125 -0.21875 -0.0625q-0.125 -0.03125 -0.28125 -0.03125q-0.171875 0 -0.34375 0.078125q-0.171875 0.0625 -0.375 0.234375q-0.1875 0.15625 -0.390625 0.4375q-0.203125 0.265625 -0.453125 0.65625l0 4.25q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.0625 -0.03125 0.15625 -0.046875q0.109375 -0.015625 0.265625 -0.015625q0.171875 0 0.265625 0.015625q0.109375 0.015625 0.15625 0.046875q0.0625 0.03125 0.078125 0.078125q0.03125 0.03125 0.03125 0.078125l0 0.9375q0.265625 -0.375 0.5 -0.625q0.234375 -0.25 0.4375 -0.375q0.21875 -0.140625 0.421875 -0.1875q0.203125 -0.0625 0.40625 -0.0625q0.09375 0 0.203125 0.015625q0.125 0 0.25 0.03125q0.140625 0.03125 0.234375 0.0625q0.109375 0.03125 0.140625 0.078125q0.046875 0.03125 0.0625 0.0625q0.015625 0.03125 0.03125 0.078125q0.015625 0.046875 0.015625 0.15625q0 0.09375 0 0.25zm6.844055 2.53125q0 0.265625 -0.140625 0.390625q-0.140625 0.125 -0.3125 0.125l-4.234375 0q0 0.53125 0.109375 0.96875q0.109375 0.421875 0.359375 0.734375q0.25 0.296875 0.640625 0.46875q0.40625 0.15625 0.984375 0.15625q0.46875 0 0.828125 -0.0625q0.359375 -0.078125 0.609375 -0.171875q0.265625 -0.09375 0.4375 -0.171875q0.171875 -0.078125 0.25 -0.078125q0.046875 0 0.078125 0.03125q0.046875 0.015625 0.0625 0.078125q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125q0 0.09375 0 0.171875q0 0.0625 -0.015625 0.125q-0.015625 0.046875 -0.046875 0.09375q-0.015625 0.046875 -0.0625 0.09375q-0.03125 0.03125 -0.234375 0.125q-0.1875 0.078125 -0.5 0.171875q-0.296875 0.078125 -0.703125 0.140625q-0.40625 0.078125 -0.859375 0.078125q-0.796875 0 -1.40625 -0.21875q-0.59375 -0.234375 -1.0 -0.671875q-0.40625 -0.4375 -0.609375 -1.09375q-0.203125 -0.65625 -0.203125 -1.53125q0 -0.828125 0.203125 -1.484375q0.21875 -0.671875 0.625 -1.125q0.40625 -0.46875 0.96875 -0.703125q0.578125 -0.25 1.28125 -0.25q0.765625 0 1.296875 0.25q0.53125 0.234375 0.875 0.65625q0.34375 0.40625 0.5 0.96875q0.171875 0.546875 0.171875 1.171875l0 0.21875zm-1.1875 -0.359375q0.015625 -0.921875 -0.421875 -1.453125q-0.421875 -0.53125 -1.28125 -0.53125q-0.4375 0 -0.765625 0.171875q-0.328125 0.15625 -0.546875 0.4375q-0.21875 0.265625 -0.34375 0.625q-0.125 0.359375 -0.140625 0.75l3.5 0zm16.739563 3.859375q0 0.09375 -0.0625 0.140625q-0.0625 0.03125 -0.171875 0.046875q-0.09375 0.03125 -0.28125 0.03125q-0.1875 0 -0.296875 -0.03125q-0.109375 -0.015625 -0.15625 -0.046875q-0.046875 -0.046875 -0.046875 -0.140625l0 -0.640625q-0.421875 0.453125 -0.953125 0.703125q-0.515625 0.25 -1.09375 0.25q-0.5 0 -0.921875 -0.140625q-0.40625 -0.125 -0.703125 -0.375q-0.28125 -0.25 -0.453125 -0.609375q-0.15625 -0.375 -0.15625 -0.84375q0 -0.546875 0.21875 -0.9375q0.234375 -0.40625 0.640625 -0.671875q0.421875 -0.265625 1.015625 -0.390625q0.609375 -0.140625 1.359375 -0.140625l0.875 0l0 -0.5q0 -0.375 -0.078125 -0.65625q-0.078125 -0.28125 -0.25 -0.46875q-0.171875 -0.203125 -0.453125 -0.296875q-0.28125 -0.09375 -0.6875 -0.09375q-0.4375 0 -0.78125 0.109375q-0.34375 0.09375 -0.609375 0.21875q-0.265625 0.125 -0.4375 0.234375q-0.171875 0.109375 -0.265625 0.109375q-0.046875 0 -0.09375 -0.03125q-0.046875 -0.03125 -0.078125 -0.078125q-0.03125 -0.0625 -0.046875 -0.15625q-0.015625 -0.09375 -0.015625 -0.203125q0 -0.171875 0.015625 -0.265625q0.03125 -0.109375 0.125 -0.203125q0.109375 -0.09375 0.34375 -0.21875q0.234375 -0.125 0.53125 -0.234375q0.3125 -0.109375 0.671875 -0.171875q0.375 -0.0625 0.75 -0.0625q0.6875 0 1.171875 0.15625q0.5 0.15625 0.796875 0.46875q0.296875 0.296875 0.4375 0.75q0.140625 0.453125 0.140625 1.046875l0 4.34375zm-1.1875 -2.9375l-1.0 0q-0.484375 0 -0.84375 0.078125q-0.359375 0.078125 -0.59375 0.25q-0.234375 0.15625 -0.34375 0.390625q-0.109375 0.21875 -0.109375 0.515625q0 0.5 0.3125 0.796875q0.3125 0.296875 0.890625 0.296875q0.46875 0 0.859375 -0.234375q0.40625 -0.25 0.828125 -0.734375l0 -1.359375zm7.9735107 1.953125q0 0.125 -0.015625 0.21875q0 0.078125 -0.015625 0.140625q-0.015625 0.0625 -0.046875 0.109375q-0.015625 0.046875 -0.109375 0.140625q-0.078125 0.078125 -0.296875 0.21875q-0.21875 0.125 -0.484375 0.234375q-0.265625 0.09375 -0.59375 0.15625q-0.3125 0.078125 -0.640625 0.078125q-0.703125 0 -1.234375 -0.234375q-0.53125 -0.234375 -0.90625 -0.671875q-0.359375 -0.4375 -0.546875 -1.078125q-0.1875 -0.640625 -0.1875 -1.484375q0 -0.9375 0.234375 -1.625q0.234375 -0.6875 0.640625 -1.125q0.40625 -0.4375 0.953125 -0.640625q0.546875 -0.21875 1.1875 -0.21875q0.296875 0 0.578125 0.0625q0.296875 0.0625 0.546875 0.15625q0.25 0.078125 0.4375 0.203125q0.1875 0.125 0.265625 0.21875q0.09375 0.078125 0.125 0.125q0.03125 0.046875 0.046875 0.125q0.03125 0.0625 0.03125 0.15625q0.015625 0.078125 0.015625 0.203125q0 0.28125 -0.078125 0.390625q-0.0625 0.109375 -0.15625 0.109375q-0.09375 0 -0.234375 -0.109375q-0.140625 -0.125 -0.359375 -0.265625q-0.21875 -0.140625 -0.53125 -0.25q-0.296875 -0.125 -0.703125 -0.125q-0.859375 0 -1.3125 0.65625q-0.453125 0.65625 -0.453125 1.890625q0 0.625 0.109375 1.09375q0.125 0.46875 0.34375 0.796875q0.234375 0.3125 0.5625 0.46875q0.34375 0.140625 0.78125 0.140625q0.40625 0 0.703125 -0.125q0.3125 -0.125 0.53125 -0.28125q0.234375 -0.15625 0.390625 -0.28125q0.15625 -0.125 0.234375 -0.125q0.046875 0 0.078125 0.03125q0.046875 0.03125 0.0625 0.09375q0.03125 0.0625 0.03125 0.171875q0.015625 0.109375 0.015625 0.25zm6.1974487 0q0 0.125 -0.015625 0.21875q0 0.078125 -0.015625 0.140625q-0.015625 0.0625 -0.046875 0.109375q-0.015625 0.046875 -0.109375 0.140625q-0.078125 0.078125 -0.296875 0.21875q-0.21875 0.125 -0.484375 0.234375q-0.265625 0.09375 -0.59375 0.15625q-0.3125 0.078125 -0.640625 0.078125q-0.703125 0 -1.234375 -0.234375q-0.53125 -0.234375 -0.90625 -0.671875q-0.359375 -0.4375 -0.546875 -1.078125q-0.1875 -0.640625 -0.1875 -1.484375q0 -0.9375 0.234375 -1.625q0.234375 -0.6875 0.640625 -1.125q0.40625 -0.4375 0.953125 -0.640625q0.546875 -0.21875 1.1875 -0.21875q0.296875 0 0.578125 0.0625q0.296875 0.0625 0.546875 0.15625q0.25 0.078125 0.4375 0.203125q0.1875 0.125 0.265625 0.21875q0.09375 0.078125 0.125 0.125q0.03125 0.046875 0.046875 0.125q0.03125 0.0625 0.03125 0.15625q0.015625 0.078125 0.015625 0.203125q0 0.28125 -0.078125 0.390625q-0.0625 0.109375 -0.15625 0.109375q-0.09375 0 -0.234375 -0.109375q-0.140625 -0.125 -0.359375 -0.265625q-0.21875 -0.140625 -0.53125 -0.25q-0.296875 -0.125 -0.703125 -0.125q-0.859375 0 -1.3125 0.65625q-0.453125 0.65625 -0.453125 1.890625q0 0.625 0.109375 1.09375q0.125 0.46875 0.34375 0.796875q0.234375 0.3125 0.5625 0.46875q0.34375 0.140625 0.78125 0.140625q0.40625 0 0.703125 -0.125q0.3125 -0.125 0.53125 -0.28125q0.234375 -0.15625 0.390625 -0.28125q0.15625 -0.125 0.234375 -0.125q0.046875 0 0.078125 0.03125q0.046875 0.03125 0.0625 0.09375q0.03125 0.0625 0.03125 0.171875q0.015625 0.109375 0.015625 0.25zm7.0723877 -2.515625q0 0.265625 -0.140625 0.390625q-0.140625 0.125 -0.3125 0.125l-4.234375 0q0 0.53125 0.109375 0.96875q0.109375 0.421875 0.359375 0.734375q0.25 0.296875 0.640625 0.46875q0.40625 0.15625 0.984375 0.15625q0.46875 0 0.828125 -0.0625q0.359375 -0.078125 0.609375 -0.171875q0.265625 -0.09375 0.4375 -0.171875q0.171875 -0.078125 0.25 -0.078125q0.046875 0 0.078125 0.03125q0.046875 0.015625 0.0625 0.078125q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125q0 0.09375 0 0.171875q0 0.0625 -0.015625 0.125q-0.015625 0.046875 -0.046875 0.09375q-0.015625 0.046875 -0.0625 0.09375q-0.03125 0.03125 -0.234375 0.125q-0.1875 0.078125 -0.5 0.171875q-0.296875 0.078125 -0.703125 0.140625q-0.40625 0.078125 -0.859375 0.078125q-0.796875 0 -1.40625 -0.21875q-0.59375 -0.234375 -1.0 -0.671875q-0.40625 -0.4375 -0.609375 -1.09375q-0.203125 -0.65625 -0.203125 -1.53125q0 -0.828125 0.203125 -1.484375q0.21875 -0.671875 0.625 -1.125q0.40625 -0.46875 0.96875 -0.703125q0.578125 -0.25 1.28125 -0.25q0.765625 0 1.296875 0.25q0.53125 0.234375 0.875 0.65625q0.34375 0.40625 0.5 0.96875q0.171875 0.546875 0.171875 1.171875l0 0.21875zm-1.1875 -0.359375q0.015625 -0.921875 -0.421875 -1.453125q-0.421875 -0.53125 -1.28125 -0.53125q-0.4375 0 -0.765625 0.171875q-0.328125 0.15625 -0.546875 0.4375q-0.21875 0.265625 -0.34375 0.625q-0.125 0.359375 -0.140625 0.75l3.5 0zm7.0267334 2.09375q0 0.5 -0.1875 0.890625q-0.1875 0.375 -0.53125 0.640625q-0.328125 0.265625 -0.796875 0.40625q-0.453125 0.140625 -1.015625 0.140625q-0.34375 0 -0.65625 -0.0625q-0.3125 -0.046875 -0.5625 -0.125q-0.234375 -0.09375 -0.40625 -0.171875q-0.171875 -0.09375 -0.25 -0.15625q-0.078125 -0.078125 -0.125 -0.203125q-0.03125 -0.140625 -0.03125 -0.359375q0 -0.140625 0.015625 -0.234375q0.015625 -0.09375 0.03125 -0.140625q0.03125 -0.0625 0.0625 -0.078125q0.046875 -0.03125 0.09375 -0.03125q0.078125 0 0.234375 0.09375q0.15625 0.09375 0.375 0.21875q0.234375 0.109375 0.53125 0.203125q0.3125 0.09375 0.71875 0.09375q0.296875 0 0.53125 -0.0625q0.25 -0.0625 0.421875 -0.1875q0.1875 -0.125 0.28125 -0.3125q0.09375 -0.203125 0.09375 -0.46875q0 -0.265625 -0.140625 -0.453125q-0.140625 -0.1875 -0.375 -0.328125q-0.21875 -0.140625 -0.515625 -0.25q-0.28125 -0.109375 -0.59375 -0.234375q-0.296875 -0.125 -0.59375 -0.28125q-0.28125 -0.15625 -0.515625 -0.375q-0.21875 -0.21875 -0.359375 -0.515625q-0.140625 -0.3125 -0.140625 -0.75q0 -0.375 0.140625 -0.71875q0.15625 -0.359375 0.453125 -0.609375q0.296875 -0.265625 0.734375 -0.421875q0.4375 -0.15625 1.015625 -0.15625q0.265625 0 0.515625 0.046875q0.265625 0.03125 0.46875 0.09375q0.203125 0.0625 0.34375 0.140625q0.15625 0.078125 0.234375 0.140625q0.078125 0.046875 0.09375 0.09375q0.03125 0.046875 0.03125 0.109375q0.015625 0.046875 0.03125 0.125q0.015625 0.078125 0.015625 0.1875q0 0.125 -0.015625 0.21875q-0.015625 0.078125 -0.046875 0.140625q-0.015625 0.0625 -0.046875 0.09375q-0.03125 0.015625 -0.078125 0.015625q-0.0625 0 -0.1875 -0.078125q-0.125 -0.078125 -0.328125 -0.171875q-0.1875 -0.09375 -0.453125 -0.171875q-0.25 -0.078125 -0.59375 -0.078125q-0.296875 0 -0.53125 0.078125q-0.21875 0.0625 -0.375 0.1875q-0.140625 0.125 -0.21875 0.296875q-0.0625 0.171875 -0.0625 0.375q0 0.28125 0.140625 0.46875q0.140625 0.1875 0.359375 0.328125q0.234375 0.140625 0.53125 0.265625q0.296875 0.109375 0.59375 0.234375q0.3125 0.125 0.609375 0.28125q0.296875 0.140625 0.515625 0.359375q0.234375 0.203125 0.375 0.515625q0.140625 0.296875 0.140625 0.703125zm5.732239 0q0 0.5 -0.1875 0.890625q-0.1875 0.375 -0.53125 0.640625q-0.328125 0.265625 -0.796875 0.40625q-0.453125 0.140625 -1.015625 0.140625q-0.34375 0 -0.65625 -0.0625q-0.3125 -0.046875 -0.5625 -0.125q-0.234375 -0.09375 -0.40625 -0.171875q-0.171875 -0.09375 -0.25 -0.15625q-0.078125 -0.078125 -0.125 -0.203125q-0.03125 -0.140625 -0.03125 -0.359375q0 -0.140625 0.015625 -0.234375q0.015625 -0.09375 0.03125 -0.140625q0.03125 -0.0625 0.0625 -0.078125q0.046875 -0.03125 0.09375 -0.03125q0.078125 0 0.234375 0.09375q0.15625 0.09375 0.375 0.21875q0.234375 0.109375 0.53125 0.203125q0.3125 0.09375 0.71875 0.09375q0.296875 0 0.53125 -0.0625q0.25 -0.0625 0.421875 -0.1875q0.1875 -0.125 0.28125 -0.3125q0.09375 -0.203125 0.09375 -0.46875q0 -0.265625 -0.140625 -0.453125q-0.140625 -0.1875 -0.375 -0.328125q-0.21875 -0.140625 -0.515625 -0.25q-0.28125 -0.109375 -0.59375 -0.234375q-0.296875 -0.125 -0.59375 -0.28125q-0.28125 -0.15625 -0.515625 -0.375q-0.21875 -0.21875 -0.359375 -0.515625q-0.140625 -0.3125 -0.140625 -0.75q0 -0.375 0.140625 -0.71875q0.15625 -0.359375 0.453125 -0.609375q0.296875 -0.265625 0.734375 -0.421875q0.4375 -0.15625 1.015625 -0.15625q0.265625 0 0.515625 0.046875q0.265625 0.03125 0.46875 0.09375q0.203125 0.0625 0.34375 0.140625q0.15625 0.078125 0.234375 0.140625q0.078125 0.046875 0.09375 0.09375q0.03125 0.046875 0.03125 0.109375q0.015625 0.046875 0.03125 0.125q0.015625 0.078125 0.015625 0.1875q0 0.125 -0.015625 0.21875q-0.015625 0.078125 -0.046875 0.140625q-0.015625 0.0625 -0.046875 0.09375q-0.03125 0.015625 -0.078125 0.015625q-0.0625 0 -0.1875 -0.078125q-0.125 -0.078125 -0.328125 -0.171875q-0.1875 -0.09375 -0.453125 -0.171875q-0.25 -0.078125 -0.59375 -0.078125q-0.296875 0 -0.53125 0.078125q-0.21875 0.0625 -0.375 0.1875q-0.140625 0.125 -0.21875 0.296875q-0.0625 0.171875 -0.0625 0.375q0 0.28125 0.140625 0.46875q0.140625 0.1875 0.359375 0.328125q0.234375 0.140625 0.53125 0.265625q0.296875 0.109375 0.59375 0.234375q0.3125 0.125 0.609375 0.28125q0.296875 0.140625 0.515625 0.359375q0.234375 0.203125 0.375 0.515625q0.140625 0.296875 0.140625 0.703125zm2.8729248 1.765625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 6.453125zm0.125 -8.625q0 0.421875 -0.15625 0.578125q-0.15625 0.140625 -0.578125 0.140625q-0.40625 0 -0.5625 -0.140625q-0.15625 -0.15625 -0.15625 -0.5625q0 -0.421875 0.15625 -0.5625q0.15625 -0.15625 0.578125 -0.15625q0.421875 0 0.5625 0.15625q0.15625 0.140625 0.15625 0.546875zm7.9728394 5.3125q0 0.84375 -0.1875 1.515625q-0.171875 0.65625 -0.53125 1.140625q-0.34375 0.46875 -0.859375 0.71875q-0.515625 0.25 -1.1875 0.25q-0.3125 0 -0.578125 -0.0625q-0.25 -0.0625 -0.5 -0.1875q-0.25 -0.140625 -0.5 -0.34375q-0.25 -0.21875 -0.53125 -0.515625l0 0.796875q0 0.046875 -0.03125 0.09375q-0.03125 0.046875 -0.09375 0.078125q-0.0625 0.015625 -0.15625 0.03125q-0.09375 0.015625 -0.25 0.015625q-0.140625 0 -0.25 -0.015625q-0.09375 -0.015625 -0.15625 -0.03125q-0.0625 -0.03125 -0.09375 -0.078125q-0.015625 -0.046875 -0.015625 -0.09375l0 -9.5625q0 -0.0625 0.015625 -0.109375q0.03125 -0.046875 0.09375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.109375l0 3.859375q0.28125 -0.296875 0.546875 -0.5q0.265625 -0.203125 0.515625 -0.328125q0.265625 -0.125 0.515625 -0.171875q0.265625 -0.0625 0.5625 -0.0625q0.6875 0 1.1875 0.28125q0.5 0.265625 0.8125 0.734375q0.3125 0.46875 0.453125 1.109375q0.140625 0.625 0.140625 1.328125zm-1.234375 0.140625q0 -0.5 -0.078125 -0.953125q-0.078125 -0.46875 -0.265625 -0.828125q-0.1875 -0.359375 -0.5 -0.578125q-0.296875 -0.21875 -0.765625 -0.21875q-0.21875 0 -0.453125 0.0625q-0.21875 0.0625 -0.453125 0.21875q-0.21875 0.140625 -0.46875 0.375q-0.234375 0.234375 -0.515625 0.59375l0 2.578125q0.484375 0.59375 0.921875 0.90625q0.453125 0.3125 0.921875 0.3125q0.453125 0 0.765625 -0.21875q0.3125 -0.21875 0.5 -0.5625q0.203125 -0.359375 0.296875 -0.796875q0.09375 -0.4375 0.09375 -0.890625zm4.2002563 3.171875q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -9.5625q0 -0.0625 0.015625 -0.109375q0.03125 -0.046875 0.09375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.109375l0 9.5625zm7.6760254 -3.5q0 0.265625 -0.140625 0.390625q-0.140625 0.125 -0.3125 0.125l-4.234375 0q0 0.53125 0.109375 0.96875q0.109375 0.421875 0.359375 0.734375q0.25 0.296875 0.640625 0.46875q0.40625 0.15625 0.984375 0.15625q0.46875 0 0.828125 -0.0625q0.359375 -0.078125 0.609375 -0.171875q0.265625 -0.09375 0.4375 -0.171875q0.171875 -0.078125 0.25 -0.078125q0.046875 0 0.078125 0.03125q0.046875 0.015625 0.0625 0.078125q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125q0 0.09375 0 0.171875q0 0.0625 -0.015625 0.125q-0.015625 0.046875 -0.046875 0.09375q-0.015625 0.046875 -0.0625 0.09375q-0.03125 0.03125 -0.234375 0.125q-0.1875 0.078125 -0.5 0.171875q-0.296875 0.078125 -0.703125 0.140625q-0.40625 0.078125 -0.859375 0.078125q-0.796875 0 -1.40625 -0.21875q-0.59375 -0.234375 -1.0 -0.671875q-0.40625 -0.4375 -0.609375 -1.09375q-0.203125 -0.65625 -0.203125 -1.53125q0 -0.828125 0.203125 -1.484375q0.21875 -0.671875 0.625 -1.125q0.40625 -0.46875 0.96875 -0.703125q0.578125 -0.25 1.28125 -0.25q0.765625 0 1.296875 0.25q0.53125 0.234375 0.875 0.65625q0.34375 0.40625 0.5 0.96875q0.171875 0.546875 0.171875 1.171875l0 0.21875zm-1.1875 -0.359375q0.015625 -0.921875 -0.421875 -1.453125q-0.421875 -0.53125 -1.28125 -0.53125q-0.4375 0 -0.765625 0.171875q-0.328125 0.15625 -0.546875 0.4375q-0.21875 0.265625 -0.34375 0.625q-0.125 0.359375 -0.140625 0.75l3.5 0zm15.411438 -5.234375q0 0.140625 -0.015625 0.21875q-0.015625 0.078125 -0.03125 0.140625q-0.015625 0.046875 -0.046875 0.0625q-0.03125 0.015625 -0.078125 0.015625q-0.046875 0 -0.125 -0.03125q-0.0625 -0.03125 -0.171875 -0.0625q-0.109375 -0.046875 -0.265625 -0.078125q-0.140625 -0.03125 -0.328125 -0.03125q-0.265625 0 -0.453125 0.09375q-0.1875 0.078125 -0.3125 0.265625q-0.109375 0.171875 -0.15625 0.46875q-0.046875 0.28125 -0.046875 0.703125l0 0.6875l1.4375 0q0.0625 0 0.09375 0.03125q0.046875 0.03125 0.078125 0.09375q0.03125 0.046875 0.046875 0.140625q0.015625 0.09375 0.015625 0.234375q0 0.265625 -0.0625 0.375q-0.0625 0.109375 -0.171875 0.109375l-1.4375 0l0 5.65625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.109375 0.0625q-0.0625 0.03125 -0.171875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -5.65625l-0.90625 0q-0.125 0 -0.1875 -0.109375q-0.046875 -0.109375 -0.046875 -0.375q0 -0.140625 0.015625 -0.234375q0.015625 -0.09375 0.03125 -0.140625q0.03125 -0.0625 0.078125 -0.09375q0.046875 -0.03125 0.109375 -0.03125l0.90625 0l0 -0.65625q0 -0.671875 0.125 -1.15625q0.125 -0.484375 0.375 -0.78125q0.265625 -0.3125 0.65625 -0.453125q0.390625 -0.15625 0.921875 -0.15625q0.25 0 0.484375 0.046875q0.234375 0.046875 0.359375 0.109375q0.125 0.046875 0.171875 0.09375q0.046875 0.03125 0.0625 0.109375q0.03125 0.0625 0.046875 0.15625q0.015625 0.09375 0.015625 0.234375zm4.7070923 3.0625q0 0.15625 -0.015625 0.265625q0 0.109375 -0.03125 0.171875q-0.015625 0.0625 -0.046875 0.09375q-0.03125 0.03125 -0.078125 0.03125q-0.0625 0 -0.15625 -0.03125q-0.078125 -0.03125 -0.1875 -0.0625q-0.09375 -0.03125 -0.21875 -0.0625q-0.125 -0.03125 -0.28125 -0.03125q-0.171875 0 -0.34375 0.078125q-0.171875 0.0625 -0.375 0.234375q-0.1875 0.15625 -0.390625 0.4375q-0.203125 0.265625 -0.453125 0.65625l0 4.25q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.0625 -0.03125 0.15625 -0.046875q0.109375 -0.015625 0.265625 -0.015625q0.171875 0 0.265625 0.015625q0.109375 0.015625 0.15625 0.046875q0.0625 0.03125 0.078125 0.078125q0.03125 0.03125 0.03125 0.078125l0 0.9375q0.265625 -0.375 0.5 -0.625q0.234375 -0.25 0.4375 -0.375q0.21875 -0.140625 0.421875 -0.1875q0.203125 -0.0625 0.40625 -0.0625q0.09375 0 0.203125 0.015625q0.125 0 0.25 0.03125q0.140625 0.03125 0.234375 0.0625q0.109375 0.03125 0.140625 0.078125q0.046875 0.03125 0.0625 0.0625q0.015625 0.03125 0.03125 0.078125q0.015625 0.046875 0.015625 0.15625q0 0.09375 0 0.25zm7.32843 2.734375q0 0.78125 -0.203125 1.453125q-0.203125 0.65625 -0.625 1.140625q-0.40625 0.46875 -1.03125 0.75q-0.609375 0.265625 -1.421875 0.265625q-0.796875 0 -1.390625 -0.234375q-0.59375 -0.25 -0.984375 -0.6875q-0.390625 -0.453125 -0.59375 -1.09375q-0.1875 -0.65625 -0.1875 -1.46875q0 -0.78125 0.203125 -1.4375q0.203125 -0.671875 0.609375 -1.140625q0.421875 -0.484375 1.03125 -0.75q0.625 -0.265625 1.4375 -0.265625q0.796875 0 1.390625 0.234375q0.59375 0.234375 0.984375 0.6875q0.390625 0.453125 0.578125 1.09375q0.203125 0.640625 0.203125 1.453125zm-1.234375 0.078125q0 -0.53125 -0.109375 -0.984375q-0.09375 -0.46875 -0.3125 -0.8125q-0.21875 -0.359375 -0.609375 -0.5625q-0.375 -0.203125 -0.9375 -0.203125q-0.515625 0 -0.890625 0.1875q-0.375 0.1875 -0.625 0.53125q-0.234375 0.328125 -0.359375 0.796875q-0.125 0.46875 -0.125 1.015625q0 0.53125 0.09375 1.0q0.109375 0.46875 0.328125 0.8125q0.234375 0.34375 0.609375 0.546875q0.375 0.203125 0.9375 0.203125q0.515625 0 0.890625 -0.1875q0.390625 -0.1875 0.625 -0.515625q0.25 -0.34375 0.359375 -0.796875q0.125 -0.46875 0.125 -1.03125zm12.541382 3.21875q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.03125 -0.046875 -0.03125 -0.09375l0 -3.921875q0 -0.40625 -0.078125 -0.734375q-0.0625 -0.34375 -0.21875 -0.578125q-0.15625 -0.25 -0.40625 -0.375q-0.234375 -0.140625 -0.5625 -0.140625q-0.40625 0 -0.828125 0.328125q-0.40625 0.3125 -0.890625 0.90625l0 4.515625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.109375 0.0625q-0.0625 0.03125 -0.171875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -3.921875q0 -0.40625 -0.078125 -0.734375q-0.078125 -0.34375 -0.234375 -0.578125q-0.15625 -0.25 -0.40625 -0.375q-0.234375 -0.140625 -0.5625 -0.140625q-0.40625 0 -0.828125 0.328125q-0.40625 0.3125 -0.890625 0.90625l0 4.515625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.0625 -0.03125 0.15625 -0.046875q0.109375 -0.015625 0.265625 -0.015625q0.171875 0 0.265625 0.015625q0.109375 0.015625 0.15625 0.046875q0.0625 0.03125 0.078125 0.078125q0.03125 0.03125 0.03125 0.078125l0 0.859375q0.546875 -0.609375 1.0625 -0.890625q0.515625 -0.28125 1.03125 -0.28125q0.40625 0 0.71875 0.09375q0.3125 0.09375 0.5625 0.265625q0.25 0.15625 0.421875 0.390625q0.171875 0.234375 0.28125 0.515625q0.328125 -0.34375 0.609375 -0.578125q0.296875 -0.25 0.5625 -0.40625q0.265625 -0.15625 0.515625 -0.21875q0.265625 -0.0625 0.515625 -0.0625q0.625 0 1.046875 0.21875q0.421875 0.21875 0.671875 0.578125q0.265625 0.359375 0.375 0.859375q0.125 0.484375 0.125 1.03125l0 4.078125zm14.389465 -0.484375q0 0.21875 -0.03125 0.34375q-0.015625 0.109375 -0.078125 0.171875q-0.0625 0.0625 -0.171875 0.109375q-0.109375 0.046875 -0.265625 0.078125q-0.140625 0.03125 -0.3125 0.046875q-0.15625 0.03125 -0.328125 0.03125q-0.5 0 -0.859375 -0.125q-0.34375 -0.140625 -0.578125 -0.40625q-0.234375 -0.28125 -0.34375 -0.6875q-0.09375 -0.40625 -0.09375 -0.96875l0 -3.765625l-0.90625 0q-0.109375 0 -0.171875 -0.109375q-0.0625 -0.109375 -0.0625 -0.375q0 -0.140625 0.015625 -0.234375q0.015625 -0.09375 0.046875 -0.140625q0.03125 -0.0625 0.078125 -0.09375q0.046875 -0.03125 0.109375 -0.03125l0.890625 0l0 -1.53125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.28125 -0.015625q0.1875 0 0.296875 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 1.53125l1.640625 0q0.0625 0 0.09375 0.03125q0.046875 0.03125 0.078125 0.09375q0.046875 0.046875 0.046875 0.140625q0.015625 0.09375 0.015625 0.234375q0 0.265625 -0.0625 0.375q-0.0625 0.109375 -0.171875 0.109375l-1.640625 0l0 3.59375q0 0.671875 0.1875 1.015625q0.203125 0.328125 0.703125 0.328125q0.171875 0 0.296875 -0.03125q0.125 -0.03125 0.21875 -0.0625q0.109375 -0.03125 0.171875 -0.0625q0.078125 -0.046875 0.140625 -0.046875q0.03125 0 0.0625 0.03125q0.03125 0.015625 0.046875 0.0625q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125zm7.1123657 0.484375q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.171875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.03125 -0.046875 -0.03125 -0.09375l0 -3.78125q0 -0.546875 -0.09375 -0.875q-0.078125 -0.34375 -0.25 -0.578125q-0.15625 -0.25 -0.421875 -0.375q-0.25 -0.140625 -0.59375 -0.140625q-0.4375 0 -0.890625 0.328125q-0.4375 0.3125 -0.921875 0.90625l0 4.515625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -9.5625q0 -0.0625 0.015625 -0.109375q0.03125 -0.046875 0.09375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.109375l0 3.859375q0.5 -0.546875 1.015625 -0.796875q0.515625 -0.265625 1.046875 -0.265625q0.640625 0 1.078125 0.21875q0.4375 0.21875 0.703125 0.578125q0.28125 0.359375 0.390625 0.859375q0.125 0.484375 0.125 1.1875l0 3.921875zm7.6533813 -3.5q0 0.265625 -0.140625 0.390625q-0.140625 0.125 -0.3125 0.125l-4.234375 0q0 0.53125 0.109375 0.96875q0.109375 0.421875 0.359375 0.734375q0.25 0.296875 0.640625 0.46875q0.40625 0.15625 0.984375 0.15625q0.46875 0 0.828125 -0.0625q0.359375 -0.078125 0.609375 -0.171875q0.265625 -0.09375 0.4375 -0.171875q0.171875 -0.078125 0.25 -0.078125q0.046875 0 0.078125 0.03125q0.046875 0.015625 0.0625 0.078125q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125q0 0.09375 0 0.171875q0 0.0625 -0.015625 0.125q-0.015625 0.046875 -0.046875 0.09375q-0.015625 0.046875 -0.0625 0.09375q-0.03125 0.03125 -0.234375 0.125q-0.1875 0.078125 -0.5 0.171875q-0.296875 0.078125 -0.703125 0.140625q-0.40625 0.078125 -0.859375 0.078125q-0.796875 0 -1.40625 -0.21875q-0.59375 -0.234375 -1.0 -0.671875q-0.40625 -0.4375 -0.609375 -1.09375q-0.203125 -0.65625 -0.203125 -1.53125q0 -0.828125 0.203125 -1.484375q0.21875 -0.671875 0.625 -1.125q0.40625 -0.46875 0.96875 -0.703125q0.578125 -0.25 1.28125 -0.25q0.765625 0 1.296875 0.25q0.53125 0.234375 0.875 0.65625q0.34375 0.40625 0.5 0.96875q0.171875 0.546875 0.171875 1.171875l0 0.21875zm-1.1875 -0.359375q0.015625 -0.921875 -0.421875 -1.453125q-0.421875 -0.53125 -1.28125 -0.53125q-0.4375 0 -0.765625 0.171875q-0.328125 0.15625 -0.546875 0.4375q-0.21875 0.265625 -0.34375 0.625q-0.125 0.359375 -0.140625 0.75l3.5 0zm22.083374 3.84375q0 0.0625 -0.03125 0.109375q-0.015625 0.03125 -0.09375 0.0625q-0.078125 0.015625 -0.1875 0.03125q-0.109375 0.03125 -0.28125 0.03125q-0.171875 0 -0.296875 -0.03125q-0.109375 -0.015625 -0.1875 -0.03125q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.109375l0 -8.0625l-0.015625 0l-3.296875 8.09375q-0.03125 0.0625 -0.078125 0.09375q-0.03125 0.03125 -0.109375 0.0625q-0.0625 0.015625 -0.171875 0.03125q-0.109375 0.015625 -0.25 0.015625q-0.140625 0 -0.25 -0.015625q-0.109375 -0.015625 -0.1875 -0.03125q-0.0625 -0.03125 -0.109375 -0.0625q-0.03125 -0.046875 -0.046875 -0.09375l-3.15625 -8.09375l-0.015625 0l0 8.0625q0 0.0625 -0.03125 0.109375q-0.015625 0.03125 -0.09375 0.0625q-0.078125 0.015625 -0.1875 0.03125q-0.109375 0.03125 -0.296875 0.03125q-0.171875 0 -0.28125 -0.03125q-0.109375 -0.015625 -0.1875 -0.03125q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.109375l0 -8.515625q0 -0.296875 0.15625 -0.421875q0.15625 -0.140625 0.34375 -0.140625l0.75 0q0.234375 0 0.40625 0.046875q0.171875 0.046875 0.296875 0.140625q0.125 0.09375 0.203125 0.234375q0.09375 0.140625 0.15625 0.328125l2.6875 6.71875l0.03125 0l2.796875 -6.6875q0.078125 -0.21875 0.171875 -0.359375q0.09375 -0.15625 0.203125 -0.25q0.109375 -0.09375 0.234375 -0.125q0.140625 -0.046875 0.328125 -0.046875l0.78125 0q0.109375 0 0.203125 0.03125q0.09375 0.03125 0.15625 0.109375q0.078125 0.0625 0.109375 0.171875q0.046875 0.09375 0.046875 0.25l0 8.515625zm7.1870728 0.015625q0 0.09375 -0.0625 0.140625q-0.0625 0.03125 -0.171875 0.046875q-0.09375 0.03125 -0.28125 0.03125q-0.1875 0 -0.296875 -0.03125q-0.109375 -0.015625 -0.15625 -0.046875q-0.046875 -0.046875 -0.046875 -0.140625l0 -0.640625q-0.421875 0.453125 -0.953125 0.703125q-0.515625 0.25 -1.09375 0.25q-0.5 0 -0.921875 -0.140625q-0.40625 -0.125 -0.703125 -0.375q-0.28125 -0.25 -0.453125 -0.609375q-0.15625 -0.375 -0.15625 -0.84375q0 -0.546875 0.21875 -0.9375q0.234375 -0.40625 0.640625 -0.671875q0.421875 -0.265625 1.015625 -0.390625q0.609375 -0.140625 1.359375 -0.140625l0.875 0l0 -0.5q0 -0.375 -0.078125 -0.65625q-0.078125 -0.28125 -0.25 -0.46875q-0.171875 -0.203125 -0.453125 -0.296875q-0.28125 -0.09375 -0.6875 -0.09375q-0.4375 0 -0.78125 0.109375q-0.34375 0.09375 -0.609375 0.21875q-0.265625 0.125 -0.4375 0.234375q-0.171875 0.109375 -0.265625 0.109375q-0.046875 0 -0.09375 -0.03125q-0.046875 -0.03125 -0.078125 -0.078125q-0.03125 -0.0625 -0.046875 -0.15625q-0.015625 -0.09375 -0.015625 -0.203125q0 -0.171875 0.015625 -0.265625q0.03125 -0.109375 0.125 -0.203125q0.109375 -0.09375 0.34375 -0.21875q0.234375 -0.125 0.53125 -0.234375q0.3125 -0.109375 0.671875 -0.171875q0.375 -0.0625 0.75 -0.0625q0.6875 0 1.171875 0.15625q0.5 0.15625 0.796875 0.46875q0.296875 0.296875 0.4375 0.75q0.140625 0.453125 0.140625 1.046875l0 4.34375zm-1.1875 -2.9375l-1.0 0q-0.484375 0 -0.84375 0.078125q-0.359375 0.078125 -0.59375 0.25q-0.234375 0.15625 -0.34375 0.390625q-0.109375 0.21875 -0.109375 0.515625q0 0.5 0.3125 0.796875q0.3125 0.296875 0.890625 0.296875q0.46875 0 0.859375 -0.234375q0.40625 -0.25 0.828125 -0.734375l0 -1.359375zm8.895386 2.9375q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.171875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.03125 -0.046875 -0.03125 -0.09375l0 -3.78125q0 -0.546875 -0.09375 -0.875q-0.078125 -0.34375 -0.25 -0.578125q-0.15625 -0.25 -0.421875 -0.375q-0.25 -0.140625 -0.59375 -0.140625q-0.4375 0 -0.890625 0.328125q-0.4375 0.3125 -0.921875 0.90625l0 4.515625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.0625 -0.03125 0.15625 -0.046875q0.109375 -0.015625 0.265625 -0.015625q0.171875 0 0.265625 0.015625q0.109375 0.015625 0.15625 0.046875q0.0625 0.03125 0.078125 0.078125q0.03125 0.03125 0.03125 0.078125l0 0.859375q0.546875 -0.609375 1.078125 -0.890625q0.546875 -0.28125 1.109375 -0.28125q0.640625 0 1.078125 0.21875q0.4375 0.21875 0.703125 0.578125q0.28125 0.359375 0.390625 0.859375q0.125 0.484375 0.125 1.171875l0 3.9375zm7.0127563 0q0 0.09375 -0.0625 0.140625q-0.0625 0.03125 -0.171875 0.046875q-0.09375 0.03125 -0.28125 0.03125q-0.1875 0 -0.296875 -0.03125q-0.109375 -0.015625 -0.15625 -0.046875q-0.046875 -0.046875 -0.046875 -0.140625l0 -0.640625q-0.421875 0.453125 -0.953125 0.703125q-0.515625 0.25 -1.09375 0.25q-0.5 0 -0.921875 -0.140625q-0.40625 -0.125 -0.703125 -0.375q-0.28125 -0.25 -0.453125 -0.609375q-0.15625 -0.375 -0.15625 -0.84375q0 -0.546875 0.21875 -0.9375q0.234375 -0.40625 0.640625 -0.671875q0.421875 -0.265625 1.015625 -0.390625q0.609375 -0.140625 1.359375 -0.140625l0.875 0l0 -0.5q0 -0.375 -0.078125 -0.65625q-0.078125 -0.28125 -0.25 -0.46875q-0.171875 -0.203125 -0.453125 -0.296875q-0.28125 -0.09375 -0.6875 -0.09375q-0.4375 0 -0.78125 0.109375q-0.34375 0.09375 -0.609375 0.21875q-0.265625 0.125 -0.4375 0.234375q-0.171875 0.109375 -0.265625 0.109375q-0.046875 0 -0.09375 -0.03125q-0.046875 -0.03125 -0.078125 -0.078125q-0.03125 -0.0625 -0.046875 -0.15625q-0.015625 -0.09375 -0.015625 -0.203125q0 -0.171875 0.015625 -0.265625q0.03125 -0.109375 0.125 -0.203125q0.109375 -0.09375 0.34375 -0.21875q0.234375 -0.125 0.53125 -0.234375q0.3125 -0.109375 0.671875 -0.171875q0.375 -0.0625 0.75 -0.0625q0.6875 0 1.171875 0.15625q0.5 0.15625 0.796875 0.46875q0.296875 0.296875 0.4375 0.75q0.140625 0.453125 0.140625 1.046875l0 4.34375zm-1.1875 -2.9375l-1.0 0q-0.484375 0 -0.84375 0.078125q-0.359375 0.078125 -0.59375 0.25q-0.234375 0.15625 -0.34375 0.390625q-0.109375 0.21875 -0.109375 0.515625q0 0.5 0.3125 0.796875q0.3125 0.296875 0.890625 0.296875q0.46875 0 0.859375 -0.234375q0.40625 -0.25 0.828125 -0.734375l0 -1.359375zm8.723511 -3.21875q0 0.25 -0.0625 0.359375q-0.0625 0.109375 -0.171875 0.109375l-0.921875 0q0.25 0.265625 0.34375 0.578125q0.109375 0.3125 0.109375 0.640625q0 0.5625 -0.1875 1.0q-0.171875 0.421875 -0.515625 0.71875q-0.328125 0.296875 -0.78125 0.453125q-0.453125 0.15625 -1.015625 0.15625q-0.390625 0 -0.75 -0.09375q-0.359375 -0.109375 -0.546875 -0.265625q-0.125 0.125 -0.21875 0.296875q-0.078125 0.15625 -0.078125 0.375q0 0.25 0.234375 0.421875q0.234375 0.15625 0.625 0.171875l1.671875 0.0625q0.484375 0.015625 0.875 0.140625q0.40625 0.109375 0.703125 0.328125q0.296875 0.21875 0.453125 0.546875q0.171875 0.3125 0.171875 0.734375q0 0.453125 -0.1875 0.84375q-0.1875 0.40625 -0.578125 0.703125q-0.375 0.3125 -0.96875 0.484375q-0.59375 0.171875 -1.40625 0.171875q-0.78125 0 -1.328125 -0.140625q-0.546875 -0.125 -0.90625 -0.359375q-0.34375 -0.21875 -0.5 -0.546875q-0.15625 -0.3125 -0.15625 -0.6875q0 -0.234375 0.0625 -0.453125q0.0625 -0.21875 0.171875 -0.421875q0.125 -0.203125 0.296875 -0.375q0.171875 -0.1875 0.40625 -0.375q-0.359375 -0.171875 -0.53125 -0.4375q-0.15625 -0.28125 -0.15625 -0.59375q0 -0.4375 0.171875 -0.78125q0.1875 -0.34375 0.453125 -0.609375q-0.234375 -0.265625 -0.359375 -0.59375q-0.125 -0.34375 -0.125 -0.8125q0 -0.546875 0.1875 -0.984375q0.1875 -0.4375 0.515625 -0.734375q0.328125 -0.3125 0.78125 -0.46875q0.46875 -0.15625 1.015625 -0.15625q0.296875 0 0.546875 0.03125q0.25 0.03125 0.46875 0.078125l1.953125 0q0.125 0 0.171875 0.125q0.0625 0.125 0.0625 0.359375zm-1.84375 1.703125q0 -0.65625 -0.359375 -1.03125q-0.359375 -0.375 -1.03125 -0.375q-0.34375 0 -0.59375 0.125q-0.25 0.109375 -0.421875 0.3125q-0.171875 0.203125 -0.25 0.46875q-0.078125 0.25 -0.078125 0.53125q0 0.640625 0.359375 1.015625q0.359375 0.359375 1.015625 0.359375q0.34375 0 0.59375 -0.109375q0.265625 -0.109375 0.4375 -0.296875q0.171875 -0.203125 0.25 -0.453125q0.078125 -0.265625 0.078125 -0.546875zm0.59375 5.09375q0 -0.40625 -0.34375 -0.625q-0.328125 -0.234375 -0.90625 -0.25l-1.671875 -0.0625q-0.234375 0.1875 -0.375 0.34375q-0.140625 0.15625 -0.234375 0.296875q-0.078125 0.15625 -0.125 0.296875q-0.03125 0.140625 -0.03125 0.296875q0 0.46875 0.46875 0.703125q0.484375 0.234375 1.328125 0.234375q0.53125 0 0.890625 -0.109375q0.375 -0.09375 0.59375 -0.265625q0.21875 -0.171875 0.3125 -0.390625q0.09375 -0.21875 0.09375 -0.46875zm8.273743 -4.140625q0 0.265625 -0.140625 0.390625q-0.140625 0.125 -0.3125 0.125l-4.234375 0q0 0.53125 0.109375 0.96875q0.109375 0.421875 0.359375 0.734375q0.25 0.296875 0.640625 0.46875q0.40625 0.15625 0.984375 0.15625q0.46875 0 0.828125 -0.0625q0.359375 -0.078125 0.609375 -0.171875q0.265625 -0.09375 0.4375 -0.171875q0.171875 -0.078125 0.25 -0.078125q0.046875 0 0.078125 0.03125q0.046875 0.015625 0.0625 0.078125q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125q0 0.09375 0 0.171875q0 0.0625 -0.015625 0.125q-0.015625 0.046875 -0.046875 0.09375q-0.015625 0.046875 -0.0625 0.09375q-0.03125 0.03125 -0.234375 0.125q-0.1875 0.078125 -0.5 0.171875q-0.296875 0.078125 -0.703125 0.140625q-0.40625 0.078125 -0.859375 0.078125q-0.796875 0 -1.40625 -0.21875q-0.59375 -0.234375 -1.0 -0.671875q-0.40625 -0.4375 -0.609375 -1.09375q-0.203125 -0.65625 -0.203125 -1.53125q0 -0.828125 0.203125 -1.484375q0.21875 -0.671875 0.625 -1.125q0.40625 -0.46875 0.96875 -0.703125q0.578125 -0.25 1.28125 -0.25q0.765625 0 1.296875 0.25q0.53125 0.234375 0.875 0.65625q0.34375 0.40625 0.5 0.96875q0.171875 0.546875 0.171875 1.171875l0 0.21875zm-1.1875 -0.359375q0.015625 -0.921875 -0.421875 -1.453125q-0.421875 -0.53125 -1.28125 -0.53125q-0.4375 0 -0.765625 0.171875q-0.328125 0.15625 -0.546875 0.4375q-0.21875 0.265625 -0.34375 0.625q-0.125 0.359375 -0.140625 0.75l3.5 0z" fill-rule="nonzero"/><path fill="#000000" d="m682.32275 656.11475q0 1.203125 -0.3125 2.109375q-0.296875 0.890625 -0.890625 1.484375q-0.578125 0.578125 -1.4375 0.875q-0.859375 0.296875 -2.046875 0.296875l-1.96875 0q-0.15625 0 -0.3125 -0.109375q-0.140625 -0.109375 -0.140625 -0.390625l0 -8.265625q0 -0.265625 0.140625 -0.375q0.15625 -0.125 0.3125 -0.125l2.09375 0q1.203125 0 2.03125 0.3125q0.828125 0.3125 1.390625 0.90625q0.5625 0.578125 0.84375 1.40625q0.296875 0.828125 0.296875 1.875zm-1.28125 0.046875q0 -0.75 -0.1875 -1.390625q-0.1875 -0.65625 -0.59375 -1.125q-0.390625 -0.46875 -1.0 -0.734375q-0.609375 -0.265625 -1.5625 -0.265625l-1.25 0l0 7.203125l1.265625 0q0.875 0 1.484375 -0.21875q0.609375 -0.21875 1.015625 -0.671875q0.40625 -0.46875 0.609375 -1.15625q0.21875 -0.6875 0.21875 -1.640625zm7.907654 4.546875q0 0.09375 -0.0625 0.140625q-0.0625 0.03125 -0.171875 0.046875q-0.09375 0.03125 -0.28125 0.03125q-0.1875 0 -0.296875 -0.03125q-0.109375 -0.015625 -0.15625 -0.046875q-0.046875 -0.046875 -0.046875 -0.140625l0 -0.640625q-0.421875 0.453125 -0.953125 0.703125q-0.515625 0.25 -1.09375 0.25q-0.5 0 -0.921875 -0.140625q-0.40625 -0.125 -0.703125 -0.375q-0.28125 -0.25 -0.453125 -0.609375q-0.15625 -0.375 -0.15625 -0.84375q0 -0.546875 0.21875 -0.9375q0.234375 -0.40625 0.640625 -0.671875q0.421875 -0.265625 1.015625 -0.390625q0.609375 -0.140625 1.359375 -0.140625l0.875 0l0 -0.5q0 -0.375 -0.078125 -0.65625q-0.078125 -0.28125 -0.25 -0.46875q-0.171875 -0.203125 -0.453125 -0.296875q-0.28125 -0.09375 -0.6875 -0.09375q-0.4375 0 -0.78125 0.109375q-0.34375 0.09375 -0.609375 0.21875q-0.265625 0.125 -0.4375 0.234375q-0.171875 0.109375 -0.265625 0.109375q-0.046875 0 -0.09375 -0.03125q-0.046875 -0.03125 -0.078125 -0.078125q-0.03125 -0.0625 -0.046875 -0.15625q-0.015625 -0.09375 -0.015625 -0.203125q0 -0.171875 0.015625 -0.265625q0.03125 -0.109375 0.125 -0.203125q0.109375 -0.09375 0.34375 -0.21875q0.234375 -0.125 0.53125 -0.234375q0.3125 -0.109375 0.671875 -0.171875q0.375 -0.0625 0.75 -0.0625q0.6875 0 1.171875 0.15625q0.5 0.15625 0.796875 0.46875q0.296875 0.296875 0.4375 0.75q0.140625 0.453125 0.140625 1.046875l0 4.34375zm-1.1875 -2.9375l-1.0 0q-0.484375 0 -0.84375 0.078125q-0.359375 0.078125 -0.59375 0.25q-0.234375 0.15625 -0.34375 0.390625q-0.109375 0.21875 -0.109375 0.515625q0 0.5 0.3125 0.796875q0.3125 0.296875 0.890625 0.296875q0.46875 0 0.859375 -0.234375q0.40625 -0.25 0.828125 -0.734375l0 -1.359375zm7.3953857 1.171875q0 0.5 -0.1875 0.890625q-0.1875 0.375 -0.53125 0.640625q-0.328125 0.265625 -0.796875 0.40625q-0.453125 0.140625 -1.015625 0.140625q-0.34375 0 -0.65625 -0.0625q-0.3125 -0.046875 -0.5625 -0.125q-0.234375 -0.09375 -0.40625 -0.171875q-0.171875 -0.09375 -0.25 -0.15625q-0.078125 -0.078125 -0.125 -0.203125q-0.03125 -0.140625 -0.03125 -0.359375q0 -0.140625 0.015625 -0.234375q0.015625 -0.09375 0.03125 -0.140625q0.03125 -0.0625 0.0625 -0.078125q0.046875 -0.03125 0.09375 -0.03125q0.078125 0 0.234375 0.09375q0.15625 0.09375 0.375 0.21875q0.234375 0.109375 0.53125 0.203125q0.3125 0.09375 0.71875 0.09375q0.296875 0 0.53125 -0.0625q0.25 -0.0625 0.421875 -0.1875q0.1875 -0.125 0.28125 -0.3125q0.09375 -0.203125 0.09375 -0.46875q0 -0.265625 -0.140625 -0.453125q-0.140625 -0.1875 -0.375 -0.328125q-0.21875 -0.140625 -0.515625 -0.25q-0.28125 -0.109375 -0.59375 -0.234375q-0.296875 -0.125 -0.59375 -0.28125q-0.28125 -0.15625 -0.515625 -0.375q-0.21875 -0.21875 -0.359375 -0.515625q-0.140625 -0.3125 -0.140625 -0.75q0 -0.375 0.140625 -0.71875q0.15625 -0.359375 0.453125 -0.609375q0.296875 -0.265625 0.734375 -0.421875q0.4375 -0.15625 1.015625 -0.15625q0.265625 0 0.515625 0.046875q0.265625 0.03125 0.46875 0.09375q0.203125 0.0625 0.34375 0.140625q0.15625 0.078125 0.234375 0.140625q0.078125 0.046875 0.09375 0.09375q0.03125 0.046875 0.03125 0.109375q0.015625 0.046875 0.03125 0.125q0.015625 0.078125 0.015625 0.1875q0 0.125 -0.015625 0.21875q-0.015625 0.078125 -0.046875 0.140625q-0.015625 0.0625 -0.046875 0.09375q-0.03125 0.015625 -0.078125 0.015625q-0.0625 0 -0.1875 -0.078125q-0.125 -0.078125 -0.328125 -0.171875q-0.1875 -0.09375 -0.453125 -0.171875q-0.25 -0.078125 -0.59375 -0.078125q-0.296875 0 -0.53125 0.078125q-0.21875 0.0625 -0.375 0.1875q-0.140625 0.125 -0.21875 0.296875q-0.0625 0.171875 -0.0625 0.375q0 0.28125 0.140625 0.46875q0.140625 0.1875 0.359375 0.328125q0.234375 0.140625 0.53125 0.265625q0.296875 0.109375 0.59375 0.234375q0.3125 0.125 0.609375 0.28125q0.296875 0.140625 0.515625 0.359375q0.234375 0.203125 0.375 0.515625q0.140625 0.296875 0.140625 0.703125zm7.232239 1.765625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.171875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.03125 -0.046875 -0.03125 -0.09375l0 -3.78125q0 -0.546875 -0.09375 -0.875q-0.078125 -0.34375 -0.25 -0.578125q-0.15625 -0.25 -0.421875 -0.375q-0.25 -0.140625 -0.59375 -0.140625q-0.4375 0 -0.890625 0.328125q-0.4375 0.3125 -0.921875 0.90625l0 4.515625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -9.5625q0 -0.0625 0.015625 -0.109375q0.03125 -0.046875 0.09375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.109375l0 3.859375q0.5 -0.546875 1.015625 -0.796875q0.515625 -0.265625 1.046875 -0.265625q0.640625 0 1.078125 0.21875q0.4375 0.21875 0.703125 0.578125q0.28125 0.359375 0.390625 0.859375q0.125 0.484375 0.125 1.1875l0 3.921875zm8.075256 -3.3125q0 0.84375 -0.1875 1.515625q-0.171875 0.65625 -0.53125 1.140625q-0.34375 0.46875 -0.859375 0.71875q-0.515625 0.25 -1.1875 0.25q-0.3125 0 -0.578125 -0.0625q-0.25 -0.0625 -0.5 -0.1875q-0.25 -0.140625 -0.5 -0.34375q-0.25 -0.21875 -0.53125 -0.515625l0 0.796875q0 0.046875 -0.03125 0.09375q-0.03125 0.046875 -0.09375 0.078125q-0.0625 0.015625 -0.15625 0.03125q-0.09375 0.015625 -0.25 0.015625q-0.140625 0 -0.25 -0.015625q-0.09375 -0.015625 -0.15625 -0.03125q-0.0625 -0.03125 -0.09375 -0.078125q-0.015625 -0.046875 -0.015625 -0.09375l0 -9.5625q0 -0.0625 0.015625 -0.109375q0.03125 -0.046875 0.09375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.109375l0 3.859375q0.28125 -0.296875 0.546875 -0.5q0.265625 -0.203125 0.515625 -0.328125q0.265625 -0.125 0.515625 -0.171875q0.265625 -0.0625 0.5625 -0.0625q0.6875 0 1.1875 0.28125q0.5 0.265625 0.8125 0.734375q0.3125 0.46875 0.453125 1.109375q0.140625 0.625 0.140625 1.328125zm-1.234375 0.140625q0 -0.5 -0.078125 -0.953125q-0.078125 -0.46875 -0.265625 -0.828125q-0.1875 -0.359375 -0.5 -0.578125q-0.296875 -0.21875 -0.765625 -0.21875q-0.21875 0 -0.453125 0.0625q-0.21875 0.0625 -0.453125 0.21875q-0.21875 0.140625 -0.46875 0.375q-0.234375 0.234375 -0.515625 0.59375l0 2.578125q0.484375 0.59375 0.921875 0.90625q0.453125 0.3125 0.921875 0.3125q0.453125 0 0.765625 -0.21875q0.3125 -0.21875 0.5 -0.5625q0.203125 -0.359375 0.296875 -0.796875q0.09375 -0.4375 0.09375 -0.890625zm8.997131 -0.125q0 0.78125 -0.203125 1.453125q-0.203125 0.65625 -0.625 1.140625q-0.40625 0.46875 -1.03125 0.75q-0.609375 0.265625 -1.421875 0.265625q-0.796875 0 -1.390625 -0.234375q-0.59375 -0.25 -0.984375 -0.6875q-0.390625 -0.453125 -0.59375 -1.09375q-0.1875 -0.65625 -0.1875 -1.46875q0 -0.78125 0.203125 -1.4375q0.203125 -0.671875 0.609375 -1.140625q0.421875 -0.484375 1.03125 -0.75q0.625 -0.265625 1.4375 -0.265625q0.796875 0 1.390625 0.234375q0.59375 0.234375 0.984375 0.6875q0.390625 0.453125 0.578125 1.09375q0.203125 0.640625 0.203125 1.453125zm-1.234375 0.078125q0 -0.53125 -0.109375 -0.984375q-0.09375 -0.46875 -0.3125 -0.8125q-0.21875 -0.359375 -0.609375 -0.5625q-0.375 -0.203125 -0.9375 -0.203125q-0.515625 0 -0.890625 0.1875q-0.375 0.1875 -0.625 0.53125q-0.234375 0.328125 -0.359375 0.796875q-0.125 0.46875 -0.125 1.015625q0 0.53125 0.09375 1.0q0.109375 0.46875 0.328125 0.8125q0.234375 0.34375 0.609375 0.546875q0.375 0.203125 0.9375 0.203125q0.515625 0 0.890625 -0.1875q0.390625 -0.1875 0.625 -0.515625q0.25 -0.34375 0.359375 -0.796875q0.125 -0.46875 0.125 -1.03125zm7.838257 3.21875q0 0.09375 -0.0625 0.140625q-0.0625 0.03125 -0.171875 0.046875q-0.09375 0.03125 -0.28125 0.03125q-0.1875 0 -0.296875 -0.03125q-0.109375 -0.015625 -0.15625 -0.046875q-0.046875 -0.046875 -0.046875 -0.140625l0 -0.640625q-0.421875 0.453125 -0.953125 0.703125q-0.515625 0.25 -1.09375 0.25q-0.5 0 -0.921875 -0.140625q-0.40625 -0.125 -0.703125 -0.375q-0.28125 -0.25 -0.453125 -0.609375q-0.15625 -0.375 -0.15625 -0.84375q0 -0.546875 0.21875 -0.9375q0.234375 -0.40625 0.640625 -0.671875q0.421875 -0.265625 1.015625 -0.390625q0.609375 -0.140625 1.359375 -0.140625l0.875 0l0 -0.5q0 -0.375 -0.078125 -0.65625q-0.078125 -0.28125 -0.25 -0.46875q-0.171875 -0.203125 -0.453125 -0.296875q-0.28125 -0.09375 -0.6875 -0.09375q-0.4375 0 -0.78125 0.109375q-0.34375 0.09375 -0.609375 0.21875q-0.265625 0.125 -0.4375 0.234375q-0.171875 0.109375 -0.265625 0.109375q-0.046875 0 -0.09375 -0.03125q-0.046875 -0.03125 -0.078125 -0.078125q-0.03125 -0.0625 -0.046875 -0.15625q-0.015625 -0.09375 -0.015625 -0.203125q0 -0.171875 0.015625 -0.265625q0.03125 -0.109375 0.125 -0.203125q0.109375 -0.09375 0.34375 -0.21875q0.234375 -0.125 0.53125 -0.234375q0.3125 -0.109375 0.671875 -0.171875q0.375 -0.0625 0.75 -0.0625q0.6875 0 1.171875 0.15625q0.5 0.15625 0.796875 0.46875q0.296875 0.296875 0.4375 0.75q0.140625 0.453125 0.140625 1.046875l0 4.34375zm-1.1875 -2.9375l-1.0 0q-0.484375 0 -0.84375 0.078125q-0.359375 0.078125 -0.59375 0.25q-0.234375 0.15625 -0.34375 0.390625q-0.109375 0.21875 -0.109375 0.515625q0 0.5 0.3125 0.796875q0.3125 0.296875 0.890625 0.296875q0.46875 0 0.859375 -0.234375q0.40625 -0.25 0.828125 -0.734375l0 -1.359375zm7.114197 -3.09375q0 0.15625 -0.015625 0.265625q0 0.109375 -0.03125 0.171875q-0.015625 0.0625 -0.046875 0.09375q-0.03125 0.03125 -0.078125 0.03125q-0.0625 0 -0.15625 -0.03125q-0.078125 -0.03125 -0.1875 -0.0625q-0.09375 -0.03125 -0.21875 -0.0625q-0.125 -0.03125 -0.28125 -0.03125q-0.171875 0 -0.34375 0.078125q-0.171875 0.0625 -0.375 0.234375q-0.1875 0.15625 -0.390625 0.4375q-0.203125 0.265625 -0.453125 0.65625l0 4.25q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.0625 -0.03125 0.15625 -0.046875q0.109375 -0.015625 0.265625 -0.015625q0.171875 0 0.265625 0.015625q0.109375 0.015625 0.15625 0.046875q0.0625 0.03125 0.078125 0.078125q0.03125 0.03125 0.03125 0.078125l0 0.9375q0.265625 -0.375 0.5 -0.625q0.234375 -0.25 0.4375 -0.375q0.21875 -0.140625 0.421875 -0.1875q0.203125 -0.0625 0.40625 -0.0625q0.09375 0 0.203125 0.015625q0.125 0 0.25 0.03125q0.140625 0.03125 0.234375 0.0625q0.109375 0.03125 0.140625 0.078125q0.046875 0.03125 0.0625 0.0625q0.015625 0.03125 0.03125 0.078125q0.015625 0.046875 0.015625 0.15625q0 0.09375 0 0.25zm6.859619 6.03125q0 0.046875 -0.03125 0.09375q-0.015625 0.046875 -0.078125 0.078125q-0.0625 0.015625 -0.171875 0.03125q-0.09375 0.015625 -0.234375 0.015625q-0.140625 0 -0.25 -0.015625q-0.09375 -0.015625 -0.15625 -0.03125q-0.0625 -0.03125 -0.09375 -0.078125q-0.03125 -0.046875 -0.03125 -0.09375l0 -0.859375q-0.515625 0.546875 -1.0625 0.859375q-0.546875 0.3125 -1.1875 0.3125q-0.71875 0 -1.21875 -0.28125q-0.5 -0.28125 -0.8125 -0.75q-0.3125 -0.46875 -0.453125 -1.09375q-0.140625 -0.640625 -0.140625 -1.34375q0 -0.828125 0.171875 -1.484375q0.1875 -0.671875 0.53125 -1.140625q0.359375 -0.484375 0.875 -0.734375q0.515625 -0.25 1.203125 -0.25q0.5625 0 1.03125 0.25q0.46875 0.234375 0.921875 0.71875l0 -3.75q0 -0.046875 0.015625 -0.09375q0.03125 -0.046875 0.109375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.109375 -0.015625 0.28125 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.09375l0 9.546875zm-1.1875 -4.53125q-0.484375 -0.59375 -0.9375 -0.90625q-0.4375 -0.3125 -0.921875 -0.3125q-0.453125 0 -0.765625 0.21875q-0.3125 0.203125 -0.515625 0.5625q-0.1875 0.34375 -0.28125 0.796875q-0.09375 0.4375 -0.09375 0.890625q0 0.484375 0.078125 0.953125q0.078125 0.46875 0.265625 0.828125q0.1875 0.359375 0.484375 0.578125q0.3125 0.21875 0.78125 0.21875q0.234375 0 0.453125 -0.0625q0.21875 -0.0625 0.4375 -0.203125q0.234375 -0.15625 0.484375 -0.390625q0.25 -0.25 0.53125 -0.59375l0 -2.578125zm7.4190063 2.765625q0 0.5 -0.1875 0.890625q-0.1875 0.375 -0.53125 0.640625q-0.328125 0.265625 -0.796875 0.40625q-0.453125 0.140625 -1.015625 0.140625q-0.34375 0 -0.65625 -0.0625q-0.3125 -0.046875 -0.5625 -0.125q-0.234375 -0.09375 -0.40625 -0.171875q-0.171875 -0.09375 -0.25 -0.15625q-0.078125 -0.078125 -0.125 -0.203125q-0.03125 -0.140625 -0.03125 -0.359375q0 -0.140625 0.015625 -0.234375q0.015625 -0.09375 0.03125 -0.140625q0.03125 -0.0625 0.0625 -0.078125q0.046875 -0.03125 0.09375 -0.03125q0.078125 0 0.234375 0.09375q0.15625 0.09375 0.375 0.21875q0.234375 0.109375 0.53125 0.203125q0.3125 0.09375 0.71875 0.09375q0.296875 0 0.53125 -0.0625q0.25 -0.0625 0.421875 -0.1875q0.1875 -0.125 0.28125 -0.3125q0.09375 -0.203125 0.09375 -0.46875q0 -0.265625 -0.140625 -0.453125q-0.140625 -0.1875 -0.375 -0.328125q-0.21875 -0.140625 -0.515625 -0.25q-0.28125 -0.109375 -0.59375 -0.234375q-0.296875 -0.125 -0.59375 -0.28125q-0.28125 -0.15625 -0.515625 -0.375q-0.21875 -0.21875 -0.359375 -0.515625q-0.140625 -0.3125 -0.140625 -0.75q0 -0.375 0.140625 -0.71875q0.15625 -0.359375 0.453125 -0.609375q0.296875 -0.265625 0.734375 -0.421875q0.4375 -0.15625 1.015625 -0.15625q0.265625 0 0.515625 0.046875q0.265625 0.03125 0.46875 0.09375q0.203125 0.0625 0.34375 0.140625q0.15625 0.078125 0.234375 0.140625q0.078125 0.046875 0.09375 0.09375q0.03125 0.046875 0.03125 0.109375q0.015625 0.046875 0.03125 0.125q0.015625 0.078125 0.015625 0.1875q0 0.125 -0.015625 0.21875q-0.015625 0.078125 -0.046875 0.140625q-0.015625 0.0625 -0.046875 0.09375q-0.03125 0.015625 -0.078125 0.015625q-0.0625 0 -0.1875 -0.078125q-0.125 -0.078125 -0.328125 -0.171875q-0.1875 -0.09375 -0.453125 -0.171875q-0.25 -0.078125 -0.59375 -0.078125q-0.296875 0 -0.53125 0.078125q-0.21875 0.0625 -0.375 0.1875q-0.140625 0.125 -0.21875 0.296875q-0.0625 0.171875 -0.0625 0.375q0 0.28125 0.140625 0.46875q0.140625 0.1875 0.359375 0.328125q0.234375 0.140625 0.53125 0.265625q0.296875 0.109375 0.59375 0.234375q0.3125 0.125 0.609375 0.28125q0.296875 0.140625 0.515625 0.359375q0.234375 0.203125 0.375 0.515625q0.140625 0.296875 0.140625 0.703125zm14.561279 1.765625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.03125 -0.046875 -0.03125 -0.09375l0 -3.921875q0 -0.40625 -0.078125 -0.734375q-0.0625 -0.34375 -0.21875 -0.578125q-0.15625 -0.25 -0.40625 -0.375q-0.234375 -0.140625 -0.5625 -0.140625q-0.40625 0 -0.828125 0.328125q-0.40625 0.3125 -0.890625 0.90625l0 4.515625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.109375 0.0625q-0.0625 0.03125 -0.171875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -3.921875q0 -0.40625 -0.078125 -0.734375q-0.078125 -0.34375 -0.234375 -0.578125q-0.15625 -0.25 -0.40625 -0.375q-0.234375 -0.140625 -0.5625 -0.140625q-0.40625 0 -0.828125 0.328125q-0.40625 0.3125 -0.890625 0.90625l0 4.515625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.0625 -0.03125 0.15625 -0.046875q0.109375 -0.015625 0.265625 -0.015625q0.171875 0 0.265625 0.015625q0.109375 0.015625 0.15625 0.046875q0.0625 0.03125 0.078125 0.078125q0.03125 0.03125 0.03125 0.078125l0 0.859375q0.546875 -0.609375 1.0625 -0.890625q0.515625 -0.28125 1.03125 -0.28125q0.40625 0 0.71875 0.09375q0.3125 0.09375 0.5625 0.265625q0.25 0.15625 0.421875 0.390625q0.171875 0.234375 0.28125 0.515625q0.328125 -0.34375 0.609375 -0.578125q0.296875 -0.25 0.5625 -0.40625q0.265625 -0.15625 0.515625 -0.21875q0.265625 -0.0625 0.515625 -0.0625q0.625 0 1.046875 0.21875q0.421875 0.21875 0.671875 0.578125q0.265625 0.359375 0.375 0.859375q0.125 0.484375 0.125 1.03125l0 4.078125zm7.6453247 -3.5q0 0.265625 -0.140625 0.390625q-0.140625 0.125 -0.3125 0.125l-4.234375 0q0 0.53125 0.109375 0.96875q0.109375 0.421875 0.359375 0.734375q0.25 0.296875 0.640625 0.46875q0.40625 0.15625 0.984375 0.15625q0.46875 0 0.828125 -0.0625q0.359375 -0.078125 0.609375 -0.171875q0.265625 -0.09375 0.4375 -0.171875q0.171875 -0.078125 0.25 -0.078125q0.046875 0 0.078125 0.03125q0.046875 0.015625 0.0625 0.078125q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125q0 0.09375 0 0.171875q0 0.0625 -0.015625 0.125q-0.015625 0.046875 -0.046875 0.09375q-0.015625 0.046875 -0.0625 0.09375q-0.03125 0.03125 -0.234375 0.125q-0.1875 0.078125 -0.5 0.171875q-0.296875 0.078125 -0.703125 0.140625q-0.40625 0.078125 -0.859375 0.078125q-0.796875 0 -1.40625 -0.21875q-0.59375 -0.234375 -1.0 -0.671875q-0.40625 -0.4375 -0.609375 -1.09375q-0.203125 -0.65625 -0.203125 -1.53125q0 -0.828125 0.203125 -1.484375q0.21875 -0.671875 0.625 -1.125q0.40625 -0.46875 0.96875 -0.703125q0.578125 -0.25 1.28125 -0.25q0.765625 0 1.296875 0.25q0.53125 0.234375 0.875 0.65625q0.34375 0.40625 0.5 0.96875q0.171875 0.546875 0.171875 1.171875l0 0.21875zm-1.1875 -0.359375q0.015625 -0.921875 -0.421875 -1.453125q-0.421875 -0.53125 -1.28125 -0.53125q-0.4375 0 -0.765625 0.171875q-0.328125 0.15625 -0.546875 0.4375q-0.21875 0.265625 -0.34375 0.625q-0.125 0.359375 -0.140625 0.75l3.5 0zm8.526733 3.859375q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.171875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.03125 -0.046875 -0.03125 -0.09375l0 -3.78125q0 -0.546875 -0.09375 -0.875q-0.078125 -0.34375 -0.25 -0.578125q-0.15625 -0.25 -0.421875 -0.375q-0.25 -0.140625 -0.59375 -0.140625q-0.4375 0 -0.890625 0.328125q-0.4375 0.3125 -0.921875 0.90625l0 4.515625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.0625 -0.03125 0.15625 -0.046875q0.109375 -0.015625 0.265625 -0.015625q0.171875 0 0.265625 0.015625q0.109375 0.015625 0.15625 0.046875q0.0625 0.03125 0.078125 0.078125q0.03125 0.03125 0.03125 0.078125l0 0.859375q0.546875 -0.609375 1.078125 -0.890625q0.546875 -0.28125 1.109375 -0.28125q0.640625 0 1.078125 0.21875q0.4375 0.21875 0.703125 0.578125q0.28125 0.359375 0.390625 0.859375q0.125 0.484375 0.125 1.171875l0 3.9375zm7.6690063 0q0 0.046875 -0.03125 0.09375q-0.015625 0.03125 -0.078125 0.0625q-0.0625 0.03125 -0.171875 0.046875q-0.109375 0.015625 -0.25 0.015625q-0.171875 0 -0.28125 -0.015625q-0.09375 -0.015625 -0.15625 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -0.859375q-0.546875 0.609375 -1.078125 0.890625q-0.53125 0.28125 -1.09375 0.28125q-0.640625 0 -1.078125 -0.21875q-0.4375 -0.21875 -0.71875 -0.578125q-0.265625 -0.375 -0.390625 -0.859375q-0.109375 -0.5 -0.109375 -1.203125l0 -3.90625q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.109375 0.015625 0.171875 0.046875q0.078125 0.03125 0.109375 0.078125q0.03125 0.03125 0.03125 0.078125l0 3.75q0 0.578125 0.078125 0.921875q0.078125 0.328125 0.25 0.578125q0.171875 0.234375 0.421875 0.375q0.265625 0.125 0.609375 0.125q0.4375 0 0.875 -0.3125q0.453125 -0.328125 0.9375 -0.9375l0 -4.5q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.109375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.109375 -0.015625 0.28125 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 6.453125zm6.685547 0q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 6.453125zm0.125 -8.625q0 0.421875 -0.15625 0.578125q-0.15625 0.140625 -0.578125 0.140625q-0.40625 0 -0.5625 -0.140625q-0.15625 -0.15625 -0.15625 -0.5625q0 -0.421875 0.15625 -0.5625q0.15625 -0.15625 0.578125 -0.15625q0.421875 0 0.5625 0.15625q0.15625 0.140625 0.15625 0.546875zm5.3947144 8.140625q0 0.21875 -0.03125 0.34375q-0.015625 0.109375 -0.078125 0.171875q-0.0625 0.0625 -0.171875 0.109375q-0.109375 0.046875 -0.265625 0.078125q-0.140625 0.03125 -0.3125 0.046875q-0.15625 0.03125 -0.328125 0.03125q-0.5 0 -0.859375 -0.125q-0.34375 -0.140625 -0.578125 -0.40625q-0.234375 -0.28125 -0.34375 -0.6875q-0.09375 -0.40625 -0.09375 -0.96875l0 -3.765625l-0.90625 0q-0.109375 0 -0.171875 -0.109375q-0.0625 -0.109375 -0.0625 -0.375q0 -0.140625 0.015625 -0.234375q0.015625 -0.09375 0.046875 -0.140625q0.03125 -0.0625 0.078125 -0.09375q0.046875 -0.03125 0.109375 -0.03125l0.890625 0l0 -1.53125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.28125 -0.015625q0.1875 0 0.296875 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 1.53125l1.640625 0q0.0625 0 0.09375 0.03125q0.046875 0.03125 0.078125 0.09375q0.046875 0.046875 0.046875 0.140625q0.015625 0.09375 0.015625 0.234375q0 0.265625 -0.0625 0.375q-0.0625 0.109375 -0.171875 0.109375l-1.640625 0l0 3.59375q0 0.671875 0.1875 1.015625q0.203125 0.328125 0.703125 0.328125q0.171875 0 0.296875 -0.03125q0.125 -0.03125 0.21875 -0.0625q0.109375 -0.03125 0.171875 -0.0625q0.078125 -0.046875 0.140625 -0.046875q0.03125 0 0.0625 0.03125q0.03125 0.015625 0.046875 0.0625q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125zm7.0655518 -3.015625q0 0.265625 -0.140625 0.390625q-0.140625 0.125 -0.3125 0.125l-4.234375 0q0 0.53125 0.109375 0.96875q0.109375 0.421875 0.359375 0.734375q0.25 0.296875 0.640625 0.46875q0.40625 0.15625 0.984375 0.15625q0.46875 0 0.828125 -0.0625q0.359375 -0.078125 0.609375 -0.171875q0.265625 -0.09375 0.4375 -0.171875q0.171875 -0.078125 0.25 -0.078125q0.046875 0 0.078125 0.03125q0.046875 0.015625 0.0625 0.078125q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125q0 0.09375 0 0.171875q0 0.0625 -0.015625 0.125q-0.015625 0.046875 -0.046875 0.09375q-0.015625 0.046875 -0.0625 0.09375q-0.03125 0.03125 -0.234375 0.125q-0.1875 0.078125 -0.5 0.171875q-0.296875 0.078125 -0.703125 0.140625q-0.40625 0.078125 -0.859375 0.078125q-0.796875 0 -1.40625 -0.21875q-0.59375 -0.234375 -1.0 -0.671875q-0.40625 -0.4375 -0.609375 -1.09375q-0.203125 -0.65625 -0.203125 -1.53125q0 -0.828125 0.203125 -1.484375q0.21875 -0.671875 0.625 -1.125q0.40625 -0.46875 0.96875 -0.703125q0.578125 -0.25 1.28125 -0.25q0.765625 0 1.296875 0.25q0.53125 0.234375 0.875 0.65625q0.34375 0.40625 0.5 0.96875q0.171875 0.546875 0.171875 1.171875l0 0.21875zm-1.1875 -0.359375q0.015625 -0.921875 -0.421875 -1.453125q-0.421875 -0.53125 -1.28125 -0.53125q-0.4375 0 -0.765625 0.171875q-0.328125 0.15625 -0.546875 0.4375q-0.21875 0.265625 -0.34375 0.625q-0.125 0.359375 -0.140625 0.75l3.5 0zm12.542297 3.859375q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.03125 -0.046875 -0.03125 -0.09375l0 -3.921875q0 -0.40625 -0.078125 -0.734375q-0.0625 -0.34375 -0.21875 -0.578125q-0.15625 -0.25 -0.40625 -0.375q-0.234375 -0.140625 -0.5625 -0.140625q-0.40625 0 -0.828125 0.328125q-0.40625 0.3125 -0.890625 0.90625l0 4.515625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.109375 0.0625q-0.0625 0.03125 -0.171875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -3.921875q0 -0.40625 -0.078125 -0.734375q-0.078125 -0.34375 -0.234375 -0.578125q-0.15625 -0.25 -0.40625 -0.375q-0.234375 -0.140625 -0.5625 -0.140625q-0.40625 0 -0.828125 0.328125q-0.40625 0.3125 -0.890625 0.90625l0 4.515625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.0625 -0.03125 0.15625 -0.046875q0.109375 -0.015625 0.265625 -0.015625q0.171875 0 0.265625 0.015625q0.109375 0.015625 0.15625 0.046875q0.0625 0.03125 0.078125 0.078125q0.03125 0.03125 0.03125 0.078125l0 0.859375q0.546875 -0.609375 1.0625 -0.890625q0.515625 -0.28125 1.03125 -0.28125q0.40625 0 0.71875 0.09375q0.3125 0.09375 0.5625 0.265625q0.25 0.15625 0.421875 0.390625q0.171875 0.234375 0.28125 0.515625q0.328125 -0.34375 0.609375 -0.578125q0.296875 -0.25 0.5625 -0.40625q0.265625 -0.15625 0.515625 -0.21875q0.265625 -0.0625 0.515625 -0.0625q0.625 0 1.046875 0.21875q0.421875 0.21875 0.671875 0.578125q0.265625 0.359375 0.375 0.859375q0.125 0.484375 0.125 1.03125l0 4.078125zm3.6765747 -0.609375q0 0.515625 -0.171875 0.6875q-0.171875 0.15625 -0.609375 0.15625q-0.4375 0 -0.609375 -0.15625q-0.15625 -0.171875 -0.15625 -0.671875q0 -0.5 0.171875 -0.671875q0.171875 -0.171875 0.609375 -0.171875q0.4375 0 0.59375 0.171875q0.171875 0.15625 0.171875 0.65625z" fill-rule="nonzero"/><path fill="#6aa84f" d="m647.66144 408.92914l15.810974 0l0 19.212585l-15.810974 0z" fill-rule="evenodd"/><path stroke="#38761d" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m647.66144 408.92914l15.810974 0l0 19.212585l-15.810974 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m664.979 399.80035l267.9685 0l0 75.968506l-267.9685 0z" fill-rule="evenodd"/><path fill="#000000" d="m681.01025 414.14597q0 0.140625 -0.015625 0.25q-0.015625 0.09375 -0.046875 0.15625q-0.03125 0.0625 -0.078125 0.09375q-0.046875 0.015625 -0.09375 0.015625l-2.609375 0l0 8.03125q0 0.0625 -0.03125 0.109375q-0.03125 0.03125 -0.109375 0.0625q-0.0625 0.015625 -0.1875 0.03125q-0.109375 0.03125 -0.28125 0.03125q-0.171875 0 -0.296875 -0.03125q-0.125 -0.015625 -0.203125 -0.03125q-0.0625 -0.03125 -0.09375 -0.0625q-0.03125 -0.046875 -0.03125 -0.109375l0 -8.03125l-2.609375 0q-0.046875 0 -0.09375 -0.015625q-0.046875 -0.03125 -0.078125 -0.09375q-0.03125 -0.0625 -0.046875 -0.15625q-0.015625 -0.109375 -0.015625 -0.25q0 -0.125 0.015625 -0.234375q0.015625 -0.109375 0.046875 -0.171875q0.03125 -0.0625 0.078125 -0.09375q0.046875 -0.03125 0.09375 -0.03125l6.453125 0q0.046875 0 0.09375 0.03125q0.046875 0.03125 0.078125 0.09375q0.03125 0.0625 0.046875 0.171875q0.015625 0.109375 0.015625 0.234375zm6.751404 8.5625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.171875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.03125 -0.046875 -0.03125 -0.09375l0 -3.78125q0 -0.546875 -0.09375 -0.875q-0.078125 -0.34375 -0.25 -0.578125q-0.15625 -0.25 -0.421875 -0.375q-0.25 -0.140625 -0.59375 -0.140625q-0.4375 0 -0.890625 0.328125q-0.4375 0.3125 -0.921875 0.90625l0 4.515625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -9.5625q0 -0.0625 0.015625 -0.109375q0.03125 -0.046875 0.09375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.109375l0 3.859375q0.5 -0.546875 1.015625 -0.796875q0.515625 -0.265625 1.046875 -0.265625q0.640625 0 1.078125 0.21875q0.4375 0.21875 0.703125 0.578125q0.28125 0.359375 0.390625 0.859375q0.125 0.484375 0.125 1.1875l0 3.921875zm7.6533813 -3.5q0 0.265625 -0.140625 0.390625q-0.140625 0.125 -0.3125 0.125l-4.234375 0q0 0.53125 0.109375 0.96875q0.109375 0.421875 0.359375 0.734375q0.25 0.296875 0.640625 0.46875q0.40625 0.15625 0.984375 0.15625q0.46875 0 0.828125 -0.0625q0.359375 -0.078125 0.609375 -0.171875q0.265625 -0.09375 0.4375 -0.171875q0.171875 -0.078125 0.25 -0.078125q0.046875 0 0.078125 0.03125q0.046875 0.015625 0.0625 0.078125q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125q0 0.09375 0 0.171875q0 0.0625 -0.015625 0.125q-0.015625 0.046875 -0.046875 0.09375q-0.015625 0.046875 -0.0625 0.09375q-0.03125 0.03125 -0.234375 0.125q-0.1875 0.078125 -0.5 0.171875q-0.296875 0.078125 -0.703125 0.140625q-0.40625 0.078125 -0.859375 0.078125q-0.796875 0 -1.40625 -0.21875q-0.59375 -0.234375 -1.0 -0.671875q-0.40625 -0.4375 -0.609375 -1.09375q-0.203125 -0.65625 -0.203125 -1.53125q0 -0.828125 0.203125 -1.484375q0.21875 -0.671875 0.625 -1.125q0.40625 -0.46875 0.96875 -0.703125q0.578125 -0.25 1.28125 -0.25q0.765625 0 1.296875 0.25q0.53125 0.234375 0.875 0.65625q0.34375 0.40625 0.5 0.96875q0.171875 0.546875 0.171875 1.171875l0 0.21875zm-1.1875 -0.359375q0.015625 -0.921875 -0.421875 -1.453125q-0.421875 -0.53125 -1.28125 -0.53125q-0.4375 0 -0.765625 0.171875q-0.328125 0.15625 -0.546875 0.4375q-0.21875 0.265625 -0.34375 0.625q-0.125 0.359375 -0.140625 0.75l3.5 0zm15.855774 3.859375q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.03125 -0.046875 -0.03125 -0.09375l0 -3.921875q0 -0.40625 -0.078125 -0.734375q-0.0625 -0.34375 -0.21875 -0.578125q-0.15625 -0.25 -0.40625 -0.375q-0.234375 -0.140625 -0.5625 -0.140625q-0.40625 0 -0.828125 0.328125q-0.40625 0.3125 -0.890625 0.90625l0 4.515625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.109375 0.0625q-0.0625 0.03125 -0.171875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -3.921875q0 -0.40625 -0.078125 -0.734375q-0.078125 -0.34375 -0.234375 -0.578125q-0.15625 -0.25 -0.40625 -0.375q-0.234375 -0.140625 -0.5625 -0.140625q-0.40625 0 -0.828125 0.328125q-0.40625 0.3125 -0.890625 0.90625l0 4.515625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.0625 -0.03125 0.15625 -0.046875q0.109375 -0.015625 0.265625 -0.015625q0.171875 0 0.265625 0.015625q0.109375 0.015625 0.15625 0.046875q0.0625 0.03125 0.078125 0.078125q0.03125 0.03125 0.03125 0.078125l0 0.859375q0.546875 -0.609375 1.0625 -0.890625q0.515625 -0.28125 1.03125 -0.28125q0.40625 0 0.71875 0.09375q0.3125 0.09375 0.5625 0.265625q0.25 0.15625 0.421875 0.390625q0.171875 0.234375 0.28125 0.515625q0.328125 -0.34375 0.609375 -0.578125q0.296875 -0.25 0.5625 -0.40625q0.265625 -0.15625 0.515625 -0.21875q0.265625 -0.0625 0.515625 -0.0625q0.625 0 1.046875 0.21875q0.421875 0.21875 0.671875 0.578125q0.265625 0.359375 0.375 0.859375q0.125 0.484375 0.125 1.03125l0 4.078125zm7.0046997 0q0 0.09375 -0.0625 0.140625q-0.0625 0.03125 -0.171875 0.046875q-0.09375 0.03125 -0.28125 0.03125q-0.1875 0 -0.296875 -0.03125q-0.109375 -0.015625 -0.15625 -0.046875q-0.046875 -0.046875 -0.046875 -0.140625l0 -0.640625q-0.421875 0.453125 -0.953125 0.703125q-0.515625 0.25 -1.09375 0.25q-0.5 0 -0.921875 -0.140625q-0.40625 -0.125 -0.703125 -0.375q-0.28125 -0.25 -0.453125 -0.609375q-0.15625 -0.375 -0.15625 -0.84375q0 -0.546875 0.21875 -0.9375q0.234375 -0.40625 0.640625 -0.671875q0.421875 -0.265625 1.015625 -0.390625q0.609375 -0.140625 1.359375 -0.140625l0.875 0l0 -0.5q0 -0.375 -0.078125 -0.65625q-0.078125 -0.28125 -0.25 -0.46875q-0.171875 -0.203125 -0.453125 -0.296875q-0.28125 -0.09375 -0.6875 -0.09375q-0.4375 0 -0.78125 0.109375q-0.34375 0.09375 -0.609375 0.21875q-0.265625 0.125 -0.4375 0.234375q-0.171875 0.109375 -0.265625 0.109375q-0.046875 0 -0.09375 -0.03125q-0.046875 -0.03125 -0.078125 -0.078125q-0.03125 -0.0625 -0.046875 -0.15625q-0.015625 -0.09375 -0.015625 -0.203125q0 -0.171875 0.015625 -0.265625q0.03125 -0.109375 0.125 -0.203125q0.109375 -0.09375 0.34375 -0.21875q0.234375 -0.125 0.53125 -0.234375q0.3125 -0.109375 0.671875 -0.171875q0.375 -0.0625 0.75 -0.0625q0.6875 0 1.171875 0.15625q0.5 0.15625 0.796875 0.46875q0.296875 0.296875 0.4375 0.75q0.140625 0.453125 0.140625 1.046875l0 4.34375zm-1.1875 -2.9375l-1.0 0q-0.484375 0 -0.84375 0.078125q-0.359375 0.078125 -0.59375 0.25q-0.234375 0.15625 -0.34375 0.390625q-0.109375 0.21875 -0.109375 0.515625q0 0.5 0.3125 0.796875q0.3125 0.296875 0.890625 0.296875q0.46875 0 0.859375 -0.234375q0.40625 -0.25 0.828125 -0.734375l0 -1.359375zm4.5360107 2.9375q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 6.453125zm0.125 -8.625q0 0.421875 -0.15625 0.578125q-0.15625 0.140625 -0.578125 0.140625q-0.40625 0 -0.5625 -0.140625q-0.15625 -0.15625 -0.15625 -0.5625q0 -0.421875 0.15625 -0.5625q0.15625 -0.15625 0.578125 -0.15625q0.421875 0 0.5625 0.15625q0.15625 0.140625 0.15625 0.546875zm7.5979004 8.625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.171875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.03125 -0.046875 -0.03125 -0.09375l0 -3.78125q0 -0.546875 -0.09375 -0.875q-0.078125 -0.34375 -0.25 -0.578125q-0.15625 -0.25 -0.421875 -0.375q-0.25 -0.140625 -0.59375 -0.140625q-0.4375 0 -0.890625 0.328125q-0.4375 0.3125 -0.921875 0.90625l0 4.515625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.0625 -0.03125 0.15625 -0.046875q0.109375 -0.015625 0.265625 -0.015625q0.171875 0 0.265625 0.015625q0.109375 0.015625 0.15625 0.046875q0.0625 0.03125 0.078125 0.078125q0.03125 0.03125 0.03125 0.078125l0 0.859375q0.546875 -0.609375 1.078125 -0.890625q0.546875 -0.28125 1.109375 -0.28125q0.640625 0 1.078125 0.21875q0.4375 0.21875 0.703125 0.578125q0.28125 0.359375 0.390625 0.859375q0.125 0.484375 0.125 1.171875l0 3.9375zm14.482361 -6.46875q0 0.0625 -0.015625 0.140625q-0.015625 0.0625 -0.046875 0.171875l-1.90625 6.109375q-0.015625 0.078125 -0.0625 0.140625q-0.046875 0.046875 -0.140625 0.078125q-0.078125 0.015625 -0.21875 0.03125q-0.140625 0.015625 -0.359375 0.015625q-0.21875 0 -0.375 -0.015625q-0.140625 -0.015625 -0.234375 -0.046875q-0.09375 -0.03125 -0.140625 -0.078125q-0.03125 -0.046875 -0.046875 -0.125l-1.359375 -4.671875l-0.015625 -0.0625l-0.015625 0.0625l-1.25 4.671875q-0.015625 0.078125 -0.0625 0.140625q-0.046875 0.046875 -0.140625 0.078125q-0.09375 0.015625 -0.25 0.03125q-0.140625 0.015625 -0.359375 0.015625q-0.21875 0 -0.359375 -0.015625q-0.140625 -0.015625 -0.234375 -0.046875q-0.078125 -0.03125 -0.125 -0.078125q-0.046875 -0.046875 -0.0625 -0.125l-1.890625 -6.109375q-0.03125 -0.109375 -0.046875 -0.171875q-0.015625 -0.078125 -0.015625 -0.140625q0 -0.0625 0.03125 -0.09375q0.03125 -0.046875 0.09375 -0.0625q0.078125 -0.03125 0.1875 -0.03125q0.109375 -0.015625 0.28125 -0.015625q0.203125 0 0.3125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.0625 0.109375l1.546875 5.3125l0.015625 0.0625l0.015625 -0.0625l1.421875 -5.3125q0.015625 -0.0625 0.046875 -0.109375q0.03125 -0.046875 0.09375 -0.0625q0.0625 -0.03125 0.171875 -0.046875q0.109375 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.109375 0.015625 0.171875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.03125 0.046875 0.09375l1.53125 5.328125l0.015625 0.0625l0.015625 -0.0625l1.53125 -5.3125q0.015625 -0.0625 0.046875 -0.109375q0.03125 -0.046875 0.09375 -0.0625q0.0625 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.109375 0 0.171875 0.03125q0.0625 0.03125 0.078125 0.0625q0.03125 0.03125 0.03125 0.09375zm7.4456787 3.171875q0 0.78125 -0.203125 1.453125q-0.203125 0.65625 -0.625 1.140625q-0.40625 0.46875 -1.03125 0.75q-0.609375 0.265625 -1.421875 0.265625q-0.796875 0 -1.390625 -0.234375q-0.59375 -0.25 -0.984375 -0.6875q-0.390625 -0.453125 -0.59375 -1.09375q-0.1875 -0.65625 -0.1875 -1.46875q0 -0.78125 0.203125 -1.4375q0.203125 -0.671875 0.609375 -1.140625q0.421875 -0.484375 1.03125 -0.75q0.625 -0.265625 1.4375 -0.265625q0.796875 0 1.390625 0.234375q0.59375 0.234375 0.984375 0.6875q0.390625 0.453125 0.578125 1.09375q0.203125 0.640625 0.203125 1.453125zm-1.234375 0.078125q0 -0.53125 -0.109375 -0.984375q-0.09375 -0.46875 -0.3125 -0.8125q-0.21875 -0.359375 -0.609375 -0.5625q-0.375 -0.203125 -0.9375 -0.203125q-0.515625 0 -0.890625 0.1875q-0.375 0.1875 -0.625 0.53125q-0.234375 0.328125 -0.359375 0.796875q-0.125 0.46875 -0.125 1.015625q0 0.53125 0.09375 1.0q0.109375 0.46875 0.328125 0.8125q0.234375 0.34375 0.609375 0.546875q0.375 0.203125 0.9375 0.203125q0.515625 0 0.890625 -0.1875q0.390625 -0.1875 0.625 -0.515625q0.25 -0.34375 0.359375 -0.796875q0.125 -0.46875 0.125 -1.03125zm6.744507 -2.8125q0 0.15625 -0.015625 0.265625q0 0.109375 -0.03125 0.171875q-0.015625 0.0625 -0.046875 0.09375q-0.03125 0.03125 -0.078125 0.03125q-0.0625 0 -0.15625 -0.03125q-0.078125 -0.03125 -0.1875 -0.0625q-0.09375 -0.03125 -0.21875 -0.0625q-0.125 -0.03125 -0.28125 -0.03125q-0.171875 0 -0.34375 0.078125q-0.171875 0.0625 -0.375 0.234375q-0.1875 0.15625 -0.390625 0.4375q-0.203125 0.265625 -0.453125 0.65625l0 4.25q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.0625 -0.03125 0.15625 -0.046875q0.109375 -0.015625 0.265625 -0.015625q0.171875 0 0.265625 0.015625q0.109375 0.015625 0.15625 0.046875q0.0625 0.03125 0.078125 0.078125q0.03125 0.03125 0.03125 0.078125l0 0.9375q0.265625 -0.375 0.5 -0.625q0.234375 -0.25 0.4375 -0.375q0.21875 -0.140625 0.421875 -0.1875q0.203125 -0.0625 0.40625 -0.0625q0.09375 0 0.203125 0.015625q0.125 0 0.25 0.03125q0.140625 0.03125 0.234375 0.0625q0.109375 0.03125 0.140625 0.078125q0.046875 0.03125 0.0625 0.0625q0.015625 0.03125 0.03125 0.078125q0.015625 0.046875 0.015625 0.15625q0 0.09375 0 0.25zm6.64093 6.015625q0 0.0625 -0.03125 0.109375q-0.03125 0.03125 -0.109375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.296875 0.015625q-0.203125 0 -0.328125 -0.015625q-0.125 -0.015625 -0.21875 -0.03125q-0.078125 -0.03125 -0.140625 -0.078125q-0.046875 -0.046875 -0.078125 -0.109375l-2.71875 -3.5625l0 3.578125q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -9.5625q0 -0.0625 0.015625 -0.109375q0.03125 -0.046875 0.09375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.109375l0 5.8125l2.421875 -2.671875q0.0625 -0.0625 0.125 -0.109375q0.0625 -0.046875 0.15625 -0.078125q0.09375 -0.03125 0.203125 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.1875 0 0.296875 0.015625q0.125 0.015625 0.203125 0.046875q0.078125 0.015625 0.109375 0.0625q0.03125 0.03125 0.03125 0.09375q0 0.078125 -0.046875 0.171875q-0.046875 0.078125 -0.15625 0.203125l-2.328125 2.328125l2.625 3.40625q0.09375 0.109375 0.125 0.1875q0.046875 0.078125 0.046875 0.140625zm4.8969727 -9.078125q0 0.140625 -0.015625 0.21875q-0.015625 0.078125 -0.03125 0.140625q-0.015625 0.046875 -0.046875 0.0625q-0.03125 0.015625 -0.078125 0.015625q-0.046875 0 -0.125 -0.03125q-0.0625 -0.03125 -0.171875 -0.0625q-0.109375 -0.046875 -0.265625 -0.078125q-0.140625 -0.03125 -0.328125 -0.03125q-0.265625 0 -0.453125 0.09375q-0.1875 0.078125 -0.3125 0.265625q-0.109375 0.171875 -0.15625 0.46875q-0.046875 0.28125 -0.046875 0.703125l0 0.6875l1.4375 0q0.0625 0 0.09375 0.03125q0.046875 0.03125 0.078125 0.09375q0.03125 0.046875 0.046875 0.140625q0.015625 0.09375 0.015625 0.234375q0 0.265625 -0.0625 0.375q-0.0625 0.109375 -0.171875 0.109375l-1.4375 0l0 5.65625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.109375 0.0625q-0.0625 0.03125 -0.171875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -5.65625l-0.90625 0q-0.125 0 -0.1875 -0.109375q-0.046875 -0.109375 -0.046875 -0.375q0 -0.140625 0.015625 -0.234375q0.015625 -0.09375 0.03125 -0.140625q0.03125 -0.0625 0.078125 -0.09375q0.046875 -0.03125 0.109375 -0.03125l0.90625 0l0 -0.65625q0 -0.671875 0.125 -1.15625q0.125 -0.484375 0.375 -0.78125q0.265625 -0.3125 0.65625 -0.453125q0.390625 -0.15625 0.921875 -0.15625q0.25 0 0.484375 0.046875q0.234375 0.046875 0.359375 0.109375q0.125 0.046875 0.171875 0.09375q0.046875 0.03125 0.0625 0.109375q0.03125 0.0625 0.046875 0.15625q0.015625 0.09375 0.015625 0.234375zm2.1289673 9.09375q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -9.5625q0 -0.0625 0.015625 -0.109375q0.03125 -0.046875 0.09375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.109375l0 9.5625zm8.160339 -3.296875q0 0.78125 -0.203125 1.453125q-0.203125 0.65625 -0.625 1.140625q-0.40625 0.46875 -1.03125 0.75q-0.609375 0.265625 -1.421875 0.265625q-0.796875 0 -1.390625 -0.234375q-0.59375 -0.25 -0.984375 -0.6875q-0.390625 -0.453125 -0.59375 -1.09375q-0.1875 -0.65625 -0.1875 -1.46875q0 -0.78125 0.203125 -1.4375q0.203125 -0.671875 0.609375 -1.140625q0.421875 -0.484375 1.03125 -0.75q0.625 -0.265625 1.4375 -0.265625q0.796875 0 1.390625 0.234375q0.59375 0.234375 0.984375 0.6875q0.390625 0.453125 0.578125 1.09375q0.203125 0.640625 0.203125 1.453125zm-1.234375 0.078125q0 -0.53125 -0.109375 -0.984375q-0.09375 -0.46875 -0.3125 -0.8125q-0.21875 -0.359375 -0.609375 -0.5625q-0.375 -0.203125 -0.9375 -0.203125q-0.515625 0 -0.890625 0.1875q-0.375 0.1875 -0.625 0.53125q-0.234375 0.328125 -0.359375 0.796875q-0.125 0.46875 -0.125 1.015625q0 0.53125 0.09375 1.0q0.109375 0.46875 0.328125 0.8125q0.234375 0.34375 0.609375 0.546875q0.375 0.203125 0.9375 0.203125q0.515625 0 0.890625 -0.1875q0.390625 -0.1875 0.625 -0.515625q0.25 -0.34375 0.359375 -0.796875q0.125 -0.46875 0.125 -1.03125zm11.994507 -3.25q0 0.0625 -0.015625 0.140625q-0.015625 0.0625 -0.046875 0.171875l-1.90625 6.109375q-0.015625 0.078125 -0.0625 0.140625q-0.046875 0.046875 -0.140625 0.078125q-0.078125 0.015625 -0.21875 0.03125q-0.140625 0.015625 -0.359375 0.015625q-0.21875 0 -0.375 -0.015625q-0.140625 -0.015625 -0.234375 -0.046875q-0.09375 -0.03125 -0.140625 -0.078125q-0.03125 -0.046875 -0.046875 -0.125l-1.359375 -4.671875l-0.015625 -0.0625l-0.015625 0.0625l-1.25 4.671875q-0.015625 0.078125 -0.0625 0.140625q-0.046875 0.046875 -0.140625 0.078125q-0.09375 0.015625 -0.25 0.03125q-0.140625 0.015625 -0.359375 0.015625q-0.21875 0 -0.359375 -0.015625q-0.140625 -0.015625 -0.234375 -0.046875q-0.078125 -0.03125 -0.125 -0.078125q-0.046875 -0.046875 -0.0625 -0.125l-1.890625 -6.109375q-0.03125 -0.109375 -0.046875 -0.171875q-0.015625 -0.078125 -0.015625 -0.140625q0 -0.0625 0.03125 -0.09375q0.03125 -0.046875 0.09375 -0.0625q0.078125 -0.03125 0.1875 -0.03125q0.109375 -0.015625 0.28125 -0.015625q0.203125 0 0.3125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.0625 0.109375l1.546875 5.3125l0.015625 0.0625l0.015625 -0.0625l1.421875 -5.3125q0.015625 -0.0625 0.046875 -0.109375q0.03125 -0.046875 0.09375 -0.0625q0.0625 -0.03125 0.171875 -0.046875q0.109375 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.109375 0.015625 0.171875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.03125 0.046875 0.09375l1.53125 5.328125l0.015625 0.0625l0.015625 -0.0625l1.53125 -5.3125q0.015625 -0.0625 0.046875 -0.109375q0.03125 -0.046875 0.09375 -0.0625q0.0625 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.109375 0 0.171875 0.03125q0.0625 0.03125 0.078125 0.0625q0.03125 0.03125 0.03125 0.09375zm5.5081787 4.703125q0 0.5 -0.1875 0.890625q-0.1875 0.375 -0.53125 0.640625q-0.328125 0.265625 -0.796875 0.40625q-0.453125 0.140625 -1.015625 0.140625q-0.34375 0 -0.65625 -0.0625q-0.3125 -0.046875 -0.5625 -0.125q-0.234375 -0.09375 -0.40625 -0.171875q-0.171875 -0.09375 -0.25 -0.15625q-0.078125 -0.078125 -0.125 -0.203125q-0.03125 -0.140625 -0.03125 -0.359375q0 -0.140625 0.015625 -0.234375q0.015625 -0.09375 0.03125 -0.140625q0.03125 -0.0625 0.0625 -0.078125q0.046875 -0.03125 0.09375 -0.03125q0.078125 0 0.234375 0.09375q0.15625 0.09375 0.375 0.21875q0.234375 0.109375 0.53125 0.203125q0.3125 0.09375 0.71875 0.09375q0.296875 0 0.53125 -0.0625q0.25 -0.0625 0.421875 -0.1875q0.1875 -0.125 0.28125 -0.3125q0.09375 -0.203125 0.09375 -0.46875q0 -0.265625 -0.140625 -0.453125q-0.140625 -0.1875 -0.375 -0.328125q-0.21875 -0.140625 -0.515625 -0.25q-0.28125 -0.109375 -0.59375 -0.234375q-0.296875 -0.125 -0.59375 -0.28125q-0.28125 -0.15625 -0.515625 -0.375q-0.21875 -0.21875 -0.359375 -0.515625q-0.140625 -0.3125 -0.140625 -0.75q0 -0.375 0.140625 -0.71875q0.15625 -0.359375 0.453125 -0.609375q0.296875 -0.265625 0.734375 -0.421875q0.4375 -0.15625 1.015625 -0.15625q0.265625 0 0.515625 0.046875q0.265625 0.03125 0.46875 0.09375q0.203125 0.0625 0.34375 0.140625q0.15625 0.078125 0.234375 0.140625q0.078125 0.046875 0.09375 0.09375q0.03125 0.046875 0.03125 0.109375q0.015625 0.046875 0.03125 0.125q0.015625 0.078125 0.015625 0.1875q0 0.125 -0.015625 0.21875q-0.015625 0.078125 -0.046875 0.140625q-0.015625 0.0625 -0.046875 0.09375q-0.03125 0.015625 -0.078125 0.015625q-0.0625 0 -0.1875 -0.078125q-0.125 -0.078125 -0.328125 -0.171875q-0.1875 -0.09375 -0.453125 -0.171875q-0.25 -0.078125 -0.59375 -0.078125q-0.296875 0 -0.53125 0.078125q-0.21875 0.0625 -0.375 0.1875q-0.140625 0.125 -0.21875 0.296875q-0.0625 0.171875 -0.0625 0.375q0 0.28125 0.140625 0.46875q0.140625 0.1875 0.359375 0.328125q0.234375 0.140625 0.53125 0.265625q0.296875 0.109375 0.59375 0.234375q0.3125 0.125 0.609375 0.28125q0.296875 0.140625 0.515625 0.359375q0.234375 0.203125 0.375 0.515625q0.140625 0.296875 0.140625 0.703125zm9.045654 0q0 0.5 -0.1875 0.890625q-0.1875 0.375 -0.53125 0.640625q-0.328125 0.265625 -0.796875 0.40625q-0.453125 0.140625 -1.015625 0.140625q-0.34375 0 -0.65625 -0.0625q-0.3125 -0.046875 -0.5625 -0.125q-0.234375 -0.09375 -0.40625 -0.171875q-0.171875 -0.09375 -0.25 -0.15625q-0.078125 -0.078125 -0.125 -0.203125q-0.03125 -0.140625 -0.03125 -0.359375q0 -0.140625 0.015625 -0.234375q0.015625 -0.09375 0.03125 -0.140625q0.03125 -0.0625 0.0625 -0.078125q0.046875 -0.03125 0.09375 -0.03125q0.078125 0 0.234375 0.09375q0.15625 0.09375 0.375 0.21875q0.234375 0.109375 0.53125 0.203125q0.3125 0.09375 0.71875 0.09375q0.296875 0 0.53125 -0.0625q0.25 -0.0625 0.421875 -0.1875q0.1875 -0.125 0.28125 -0.3125q0.09375 -0.203125 0.09375 -0.46875q0 -0.265625 -0.140625 -0.453125q-0.140625 -0.1875 -0.375 -0.328125q-0.21875 -0.140625 -0.515625 -0.25q-0.28125 -0.109375 -0.59375 -0.234375q-0.296875 -0.125 -0.59375 -0.28125q-0.28125 -0.15625 -0.515625 -0.375q-0.21875 -0.21875 -0.359375 -0.515625q-0.140625 -0.3125 -0.140625 -0.75q0 -0.375 0.140625 -0.71875q0.15625 -0.359375 0.453125 -0.609375q0.296875 -0.265625 0.734375 -0.421875q0.4375 -0.15625 1.015625 -0.15625q0.265625 0 0.515625 0.046875q0.265625 0.03125 0.46875 0.09375q0.203125 0.0625 0.34375 0.140625q0.15625 0.078125 0.234375 0.140625q0.078125 0.046875 0.09375 0.09375q0.03125 0.046875 0.03125 0.109375q0.015625 0.046875 0.03125 0.125q0.015625 0.078125 0.015625 0.1875q0 0.125 -0.015625 0.21875q-0.015625 0.078125 -0.046875 0.140625q-0.015625 0.0625 -0.046875 0.09375q-0.03125 0.015625 -0.078125 0.015625q-0.0625 0 -0.1875 -0.078125q-0.125 -0.078125 -0.328125 -0.171875q-0.1875 -0.09375 -0.453125 -0.171875q-0.25 -0.078125 -0.59375 -0.078125q-0.296875 0 -0.53125 0.078125q-0.21875 0.0625 -0.375 0.1875q-0.140625 0.125 -0.21875 0.296875q-0.0625 0.171875 -0.0625 0.375q0 0.28125 0.140625 0.46875q0.140625 0.1875 0.359375 0.328125q0.234375 0.140625 0.53125 0.265625q0.296875 0.109375 0.59375 0.234375q0.3125 0.125 0.609375 0.28125q0.296875 0.140625 0.515625 0.359375q0.234375 0.203125 0.375 0.515625q0.140625 0.296875 0.140625 0.703125zm5.029175 1.28125q0 0.21875 -0.03125 0.34375q-0.015625 0.109375 -0.078125 0.171875q-0.0625 0.0625 -0.171875 0.109375q-0.109375 0.046875 -0.265625 0.078125q-0.140625 0.03125 -0.3125 0.046875q-0.15625 0.03125 -0.328125 0.03125q-0.5 0 -0.859375 -0.125q-0.34375 -0.140625 -0.578125 -0.40625q-0.234375 -0.28125 -0.34375 -0.6875q-0.09375 -0.40625 -0.09375 -0.96875l0 -3.765625l-0.90625 0q-0.109375 0 -0.171875 -0.109375q-0.0625 -0.109375 -0.0625 -0.375q0 -0.140625 0.015625 -0.234375q0.015625 -0.09375 0.046875 -0.140625q0.03125 -0.0625 0.078125 -0.09375q0.046875 -0.03125 0.109375 -0.03125l0.890625 0l0 -1.53125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.28125 -0.015625q0.1875 0 0.296875 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 1.53125l1.640625 0q0.0625 0 0.09375 0.03125q0.046875 0.03125 0.078125 0.09375q0.046875 0.046875 0.046875 0.140625q0.015625 0.09375 0.015625 0.234375q0 0.265625 -0.0625 0.375q-0.0625 0.109375 -0.171875 0.109375l-1.640625 0l0 3.59375q0 0.671875 0.1875 1.015625q0.203125 0.328125 0.703125 0.328125q0.171875 0 0.296875 -0.03125q0.125 -0.03125 0.21875 -0.0625q0.109375 -0.03125 0.171875 -0.0625q0.078125 -0.046875 0.140625 -0.046875q0.03125 0 0.0625 0.03125q0.03125 0.015625 0.046875 0.0625q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125zm7.0654907 -3.015625q0 0.265625 -0.140625 0.390625q-0.140625 0.125 -0.3125 0.125l-4.234375 0q0 0.53125 0.109375 0.96875q0.109375 0.421875 0.359375 0.734375q0.25 0.296875 0.640625 0.46875q0.40625 0.15625 0.984375 0.15625q0.46875 0 0.828125 -0.0625q0.359375 -0.078125 0.609375 -0.171875q0.265625 -0.09375 0.4375 -0.171875q0.171875 -0.078125 0.25 -0.078125q0.046875 0 0.078125 0.03125q0.046875 0.015625 0.0625 0.078125q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125q0 0.09375 0 0.171875q0 0.0625 -0.015625 0.125q-0.015625 0.046875 -0.046875 0.09375q-0.015625 0.046875 -0.0625 0.09375q-0.03125 0.03125 -0.234375 0.125q-0.1875 0.078125 -0.5 0.171875q-0.296875 0.078125 -0.703125 0.140625q-0.40625 0.078125 -0.859375 0.078125q-0.796875 0 -1.40625 -0.21875q-0.59375 -0.234375 -1.0 -0.671875q-0.40625 -0.4375 -0.609375 -1.09375q-0.203125 -0.65625 -0.203125 -1.53125q0 -0.828125 0.203125 -1.484375q0.21875 -0.671875 0.625 -1.125q0.40625 -0.46875 0.96875 -0.703125q0.578125 -0.25 1.28125 -0.25q0.765625 0 1.296875 0.25q0.53125 0.234375 0.875 0.65625q0.34375 0.40625 0.5 0.96875q0.171875 0.546875 0.171875 1.171875l0 0.21875zm-1.1875 -0.359375q0.015625 -0.921875 -0.421875 -1.453125q-0.421875 -0.53125 -1.28125 -0.53125q-0.4375 0 -0.765625 0.171875q-0.328125 0.15625 -0.546875 0.4375q-0.21875 0.265625 -0.34375 0.625q-0.125 0.359375 -0.140625 0.75l3.5 0zm12.542358 3.859375q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.03125 -0.046875 -0.03125 -0.09375l0 -3.921875q0 -0.40625 -0.078125 -0.734375q-0.0625 -0.34375 -0.21875 -0.578125q-0.15625 -0.25 -0.40625 -0.375q-0.234375 -0.140625 -0.5625 -0.140625q-0.40625 0 -0.828125 0.328125q-0.40625 0.3125 -0.890625 0.90625l0 4.515625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.109375 0.0625q-0.0625 0.03125 -0.171875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -3.921875q0 -0.40625 -0.078125 -0.734375q-0.078125 -0.34375 -0.234375 -0.578125q-0.15625 -0.25 -0.40625 -0.375q-0.234375 -0.140625 -0.5625 -0.140625q-0.40625 0 -0.828125 0.328125q-0.40625 0.3125 -0.890625 0.90625l0 4.515625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.0625 -0.03125 0.15625 -0.046875q0.109375 -0.015625 0.265625 -0.015625q0.171875 0 0.265625 0.015625q0.109375 0.015625 0.15625 0.046875q0.0625 0.03125 0.078125 0.078125q0.03125 0.03125 0.03125 0.078125l0 0.859375q0.546875 -0.609375 1.0625 -0.890625q0.515625 -0.28125 1.03125 -0.28125q0.40625 0 0.71875 0.09375q0.3125 0.09375 0.5625 0.265625q0.25 0.15625 0.421875 0.390625q0.171875 0.234375 0.28125 0.515625q0.328125 -0.34375 0.609375 -0.578125q0.296875 -0.25 0.5625 -0.40625q0.265625 -0.15625 0.515625 -0.21875q0.265625 -0.0625 0.515625 -0.0625q0.625 0 1.046875 0.21875q0.421875 0.21875 0.671875 0.578125q0.265625 0.359375 0.375 0.859375q0.125 0.484375 0.125 1.03125l0 4.078125zm8.98999 -9.09375q0 0.140625 -0.015625 0.21875q-0.015625 0.078125 -0.03125 0.140625q-0.015625 0.046875 -0.046875 0.0625q-0.03125 0.015625 -0.078125 0.015625q-0.046875 0 -0.125 -0.03125q-0.0625 -0.03125 -0.171875 -0.0625q-0.109375 -0.046875 -0.265625 -0.078125q-0.140625 -0.03125 -0.328125 -0.03125q-0.265625 0 -0.453125 0.09375q-0.1875 0.078125 -0.3125 0.265625q-0.109375 0.171875 -0.15625 0.46875q-0.046875 0.28125 -0.046875 0.703125l0 0.6875l1.4375 0q0.0625 0 0.09375 0.03125q0.046875 0.03125 0.078125 0.09375q0.03125 0.046875 0.046875 0.140625q0.015625 0.09375 0.015625 0.234375q0 0.265625 -0.0625 0.375q-0.0625 0.109375 -0.171875 0.109375l-1.4375 0l0 5.65625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.109375 0.0625q-0.0625 0.03125 -0.171875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -5.65625l-0.90625 0q-0.125 0 -0.1875 -0.109375q-0.046875 -0.109375 -0.046875 -0.375q0 -0.140625 0.015625 -0.234375q0.015625 -0.09375 0.03125 -0.140625q0.03125 -0.0625 0.078125 -0.09375q0.046875 -0.03125 0.109375 -0.03125l0.90625 0l0 -0.65625q0 -0.671875 0.125 -1.15625q0.125 -0.484375 0.375 -0.78125q0.265625 -0.3125 0.65625 -0.453125q0.390625 -0.15625 0.921875 -0.15625q0.25 0 0.484375 0.046875q0.234375 0.046875 0.359375 0.109375q0.125 0.046875 0.171875 0.09375q0.046875 0.03125 0.0625 0.109375q0.03125 0.0625 0.046875 0.15625q0.015625 0.09375 0.015625 0.234375zm4.7070923 3.0625q0 0.15625 -0.015625 0.265625q0 0.109375 -0.03125 0.171875q-0.015625 0.0625 -0.046875 0.09375q-0.03125 0.03125 -0.078125 0.03125q-0.0625 0 -0.15625 -0.03125q-0.078125 -0.03125 -0.1875 -0.0625q-0.09375 -0.03125 -0.21875 -0.0625q-0.125 -0.03125 -0.28125 -0.03125q-0.171875 0 -0.34375 0.078125q-0.171875 0.0625 -0.375 0.234375q-0.1875 0.15625 -0.390625 0.4375q-0.203125 0.265625 -0.453125 0.65625l0 4.25q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.0625 -0.03125 0.15625 -0.046875q0.109375 -0.015625 0.265625 -0.015625q0.171875 0 0.265625 0.015625q0.109375 0.015625 0.15625 0.046875q0.0625 0.03125 0.078125 0.078125q0.03125 0.03125 0.03125 0.078125l0 0.9375q0.265625 -0.375 0.5 -0.625q0.234375 -0.25 0.4375 -0.375q0.21875 -0.140625 0.421875 -0.1875q0.203125 -0.0625 0.40625 -0.0625q0.09375 0 0.203125 0.015625q0.125 0 0.25 0.03125q0.140625 0.03125 0.234375 0.0625q0.109375 0.03125 0.140625 0.078125q0.046875 0.03125 0.0625 0.0625q0.015625 0.03125 0.03125 0.078125q0.015625 0.046875 0.015625 0.15625q0 0.09375 0 0.25zm7.328369 2.734375q0 0.78125 -0.203125 1.453125q-0.203125 0.65625 -0.625 1.140625q-0.40625 0.46875 -1.03125 0.75q-0.609375 0.265625 -1.421875 0.265625q-0.796875 0 -1.390625 -0.234375q-0.59375 -0.25 -0.984375 -0.6875q-0.390625 -0.453125 -0.59375 -1.09375q-0.1875 -0.65625 -0.1875 -1.46875q0 -0.78125 0.203125 -1.4375q0.203125 -0.671875 0.609375 -1.140625q0.421875 -0.484375 1.03125 -0.75q0.625 -0.265625 1.4375 -0.265625q0.796875 0 1.390625 0.234375q0.59375 0.234375 0.984375 0.6875q0.390625 0.453125 0.578125 1.09375q0.203125 0.640625 0.203125 1.453125zm-1.234375 0.078125q0 -0.53125 -0.109375 -0.984375q-0.09375 -0.46875 -0.3125 -0.8125q-0.21875 -0.359375 -0.609375 -0.5625q-0.375 -0.203125 -0.9375 -0.203125q-0.515625 0 -0.890625 0.1875q-0.375 0.1875 -0.625 0.53125q-0.234375 0.328125 -0.359375 0.796875q-0.125 0.46875 -0.125 1.015625q0 0.53125 0.09375 1.0q0.109375 0.46875 0.328125 0.8125q0.234375 0.34375 0.609375 0.546875q0.375 0.203125 0.9375 0.203125q0.515625 0 0.890625 -0.1875q0.390625 -0.1875 0.625 -0.515625q0.25 -0.34375 0.359375 -0.796875q0.125 -0.46875 0.125 -1.03125zm12.541382 3.21875q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.03125 -0.046875 -0.03125 -0.09375l0 -3.921875q0 -0.40625 -0.078125 -0.734375q-0.0625 -0.34375 -0.21875 -0.578125q-0.15625 -0.25 -0.40625 -0.375q-0.234375 -0.140625 -0.5625 -0.140625q-0.40625 0 -0.828125 0.328125q-0.40625 0.3125 -0.890625 0.90625l0 4.515625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.109375 0.0625q-0.0625 0.03125 -0.171875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -3.921875q0 -0.40625 -0.078125 -0.734375q-0.078125 -0.34375 -0.234375 -0.578125q-0.15625 -0.25 -0.40625 -0.375q-0.234375 -0.140625 -0.5625 -0.140625q-0.40625 0 -0.828125 0.328125q-0.40625 0.3125 -0.890625 0.90625l0 4.515625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.0625 -0.03125 0.15625 -0.046875q0.109375 -0.015625 0.265625 -0.015625q0.171875 0 0.265625 0.015625q0.109375 0.015625 0.15625 0.046875q0.0625 0.03125 0.078125 0.078125q0.03125 0.03125 0.03125 0.078125l0 0.859375q0.546875 -0.609375 1.0625 -0.890625q0.515625 -0.28125 1.03125 -0.28125q0.40625 0 0.71875 0.09375q0.3125 0.09375 0.5625 0.265625q0.25 0.15625 0.421875 0.390625q0.171875 0.234375 0.28125 0.515625q0.328125 -0.34375 0.609375 -0.578125q0.296875 -0.25 0.5625 -0.40625q0.265625 -0.15625 0.515625 -0.21875q0.265625 -0.0625 0.515625 -0.0625q0.625 0 1.046875 0.21875q0.421875 0.21875 0.671875 0.578125q0.265625 0.359375 0.375 0.859375q0.125 0.484375 0.125 1.03125l0 4.078125zm8.80249 -0.484375q0 0.21875 -0.03125 0.34375q-0.015625 0.109375 -0.078125 0.171875q-0.0625 0.0625 -0.171875 0.109375q-0.109375 0.046875 -0.265625 0.078125q-0.140625 0.03125 -0.3125 0.046875q-0.15625 0.03125 -0.328125 0.03125q-0.5 0 -0.859375 -0.125q-0.34375 -0.140625 -0.578125 -0.40625q-0.234375 -0.28125 -0.34375 -0.6875q-0.09375 -0.40625 -0.09375 -0.96875l0 -3.765625l-0.90625 0q-0.109375 0 -0.171875 -0.109375q-0.0625 -0.109375 -0.0625 -0.375q0 -0.140625 0.015625 -0.234375q0.015625 -0.09375 0.046875 -0.140625q0.03125 -0.0625 0.078125 -0.09375q0.046875 -0.03125 0.109375 -0.03125l0.890625 0l0 -1.53125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.28125 -0.015625q0.1875 0 0.296875 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 1.53125l1.640625 0q0.0625 0 0.09375 0.03125q0.046875 0.03125 0.078125 0.09375q0.046875 0.046875 0.046875 0.140625q0.015625 0.09375 0.015625 0.234375q0 0.265625 -0.0625 0.375q-0.0625 0.109375 -0.171875 0.109375l-1.640625 0l0 3.59375q0 0.671875 0.1875 1.015625q0.203125 0.328125 0.703125 0.328125q0.171875 0 0.296875 -0.03125q0.125 -0.03125 0.21875 -0.0625q0.109375 -0.03125 0.171875 -0.0625q0.078125 -0.046875 0.140625 -0.046875q0.03125 0 0.0625 0.03125q0.03125 0.015625 0.046875 0.0625q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125zm7.1124268 0.484375q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.171875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.03125 -0.046875 -0.03125 -0.09375l0 -3.78125q0 -0.546875 -0.09375 -0.875q-0.078125 -0.34375 -0.25 -0.578125q-0.15625 -0.25 -0.421875 -0.375q-0.25 -0.140625 -0.59375 -0.140625q-0.4375 0 -0.890625 0.328125q-0.4375 0.3125 -0.921875 0.90625l0 4.515625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -9.5625q0 -0.0625 0.015625 -0.109375q0.03125 -0.046875 0.09375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.109375l0 3.859375q0.5 -0.546875 1.015625 -0.796875q0.515625 -0.265625 1.046875 -0.265625q0.640625 0 1.078125 0.21875q0.4375 0.21875 0.703125 0.578125q0.28125 0.359375 0.390625 0.859375q0.125 0.484375 0.125 1.1875l0 3.921875zm7.6533813 -3.5q0 0.265625 -0.140625 0.390625q-0.140625 0.125 -0.3125 0.125l-4.234375 0q0 0.53125 0.109375 0.96875q0.109375 0.421875 0.359375 0.734375q0.25 0.296875 0.640625 0.46875q0.40625 0.15625 0.984375 0.15625q0.46875 0 0.828125 -0.0625q0.359375 -0.078125 0.609375 -0.171875q0.265625 -0.09375 0.4375 -0.171875q0.171875 -0.078125 0.25 -0.078125q0.046875 0 0.078125 0.03125q0.046875 0.015625 0.0625 0.078125q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125q0 0.09375 0 0.171875q0 0.0625 -0.015625 0.125q-0.015625 0.046875 -0.046875 0.09375q-0.015625 0.046875 -0.0625 0.09375q-0.03125 0.03125 -0.234375 0.125q-0.1875 0.078125 -0.5 0.171875q-0.296875 0.078125 -0.703125 0.140625q-0.40625 0.078125 -0.859375 0.078125q-0.796875 0 -1.40625 -0.21875q-0.59375 -0.234375 -1.0 -0.671875q-0.40625 -0.4375 -0.609375 -1.09375q-0.203125 -0.65625 -0.203125 -1.53125q0 -0.828125 0.203125 -1.484375q0.21875 -0.671875 0.625 -1.125q0.40625 -0.46875 0.96875 -0.703125q0.578125 -0.25 1.28125 -0.25q0.765625 0 1.296875 0.25q0.53125 0.234375 0.875 0.65625q0.34375 0.40625 0.5 0.96875q0.171875 0.546875 0.171875 1.171875l0 0.21875zm-1.1875 -0.359375q0.015625 -0.921875 -0.421875 -1.453125q-0.421875 -0.53125 -1.28125 -0.53125q-0.4375 0 -0.765625 0.171875q-0.328125 0.15625 -0.546875 0.4375q-0.21875 0.265625 -0.34375 0.625q-0.125 0.359375 -0.140625 0.75l3.5 0z" fill-rule="nonzero"/><path fill="#000000" d="m679.9321 440.70847q0 0.09375 -0.0625 0.140625q-0.0625 0.03125 -0.171875 0.046875q-0.09375 0.03125 -0.28125 0.03125q-0.1875 0 -0.296875 -0.03125q-0.109375 -0.015625 -0.15625 -0.046875q-0.046875 -0.046875 -0.046875 -0.140625l0 -0.640625q-0.421875 0.453125 -0.953125 0.703125q-0.515625 0.25 -1.09375 0.25q-0.5 0 -0.921875 -0.140625q-0.40625 -0.125 -0.703125 -0.375q-0.28125 -0.25 -0.453125 -0.609375q-0.15625 -0.375 -0.15625 -0.84375q0 -0.546875 0.21875 -0.9375q0.234375 -0.40625 0.640625 -0.671875q0.421875 -0.265625 1.015625 -0.390625q0.609375 -0.140625 1.359375 -0.140625l0.875 0l0 -0.5q0 -0.375 -0.078125 -0.65625q-0.078125 -0.28125 -0.25 -0.46875q-0.171875 -0.203125 -0.453125 -0.296875q-0.28125 -0.09375 -0.6875 -0.09375q-0.4375 0 -0.78125 0.109375q-0.34375 0.09375 -0.609375 0.21875q-0.265625 0.125 -0.4375 0.234375q-0.171875 0.109375 -0.265625 0.109375q-0.046875 0 -0.09375 -0.03125q-0.046875 -0.03125 -0.078125 -0.078125q-0.03125 -0.0625 -0.046875 -0.15625q-0.015625 -0.09375 -0.015625 -0.203125q0 -0.171875 0.015625 -0.265625q0.03125 -0.109375 0.125 -0.203125q0.109375 -0.09375 0.34375 -0.21875q0.234375 -0.125 0.53125 -0.234375q0.3125 -0.109375 0.671875 -0.171875q0.375 -0.0625 0.75 -0.0625q0.6875 0 1.171875 0.15625q0.5 0.15625 0.796875 0.46875q0.296875 0.296875 0.4375 0.75q0.140625 0.453125 0.140625 1.046875l0 4.34375zm-1.1875 -2.9375l-1.0 0q-0.484375 0 -0.84375 0.078125q-0.359375 0.078125 -0.59375 0.25q-0.234375 0.15625 -0.34375 0.390625q-0.109375 0.21875 -0.109375 0.515625q0 0.5 0.3125 0.796875q0.3125 0.296875 0.890625 0.296875q0.46875 0 0.859375 -0.234375q0.40625 -0.25 0.828125 -0.734375l0 -1.359375zm6.6922607 2.453125q0 0.21875 -0.03125 0.34375q-0.015625 0.109375 -0.078125 0.171875q-0.0625 0.0625 -0.171875 0.109375q-0.109375 0.046875 -0.265625 0.078125q-0.140625 0.03125 -0.3125 0.046875q-0.15625 0.03125 -0.328125 0.03125q-0.5 0 -0.859375 -0.125q-0.34375 -0.140625 -0.578125 -0.40625q-0.234375 -0.28125 -0.34375 -0.6875q-0.09375 -0.40625 -0.09375 -0.96875l0 -3.765625l-0.90625 0q-0.109375 0 -0.171875 -0.109375q-0.0625 -0.109375 -0.0625 -0.375q0 -0.140625 0.015625 -0.234375q0.015625 -0.09375 0.046875 -0.140625q0.03125 -0.0625 0.078125 -0.09375q0.046875 -0.03125 0.109375 -0.03125l0.890625 0l0 -1.53125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.28125 -0.015625q0.1875 0 0.296875 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 1.53125l1.640625 0q0.0625 0 0.09375 0.03125q0.046875 0.03125 0.078125 0.09375q0.046875 0.046875 0.046875 0.140625q0.015625 0.09375 0.015625 0.234375q0 0.265625 -0.0625 0.375q-0.0625 0.109375 -0.171875 0.109375l-1.640625 0l0 3.59375q0 0.671875 0.1875 1.015625q0.203125 0.328125 0.703125 0.328125q0.171875 0 0.296875 -0.03125q0.125 -0.03125 0.21875 -0.0625q0.109375 -0.03125 0.171875 -0.0625q0.078125 -0.046875 0.140625 -0.046875q0.03125 0 0.0625 0.03125q0.03125 0.015625 0.046875 0.0625q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125zm4.4718018 -2.953125q0 0.28125 -0.078125 0.390625q-0.0625 0.09375 -0.171875 0.09375l-3.0 0q-0.125 0 -0.1875 -0.109375q-0.0625 -0.109375 -0.0625 -0.375q0 -0.28125 0.0625 -0.375q0.0625 -0.109375 0.1875 -0.109375l3.0 0q0.046875 0 0.09375 0.015625q0.046875 0.015625 0.078125 0.078125q0.03125 0.0625 0.046875 0.15625q0.03125 0.09375 0.03125 0.234375zm6.4401245 3.4375q0 0.09375 -0.0625 0.140625q-0.0625 0.03125 -0.171875 0.046875q-0.09375 0.03125 -0.28125 0.03125q-0.1875 0 -0.296875 -0.03125q-0.109375 -0.015625 -0.15625 -0.046875q-0.046875 -0.046875 -0.046875 -0.140625l0 -0.640625q-0.421875 0.453125 -0.953125 0.703125q-0.515625 0.25 -1.09375 0.25q-0.5 0 -0.921875 -0.140625q-0.40625 -0.125 -0.703125 -0.375q-0.28125 -0.25 -0.453125 -0.609375q-0.15625 -0.375 -0.15625 -0.84375q0 -0.546875 0.21875 -0.9375q0.234375 -0.40625 0.640625 -0.671875q0.421875 -0.265625 1.015625 -0.390625q0.609375 -0.140625 1.359375 -0.140625l0.875 0l0 -0.5q0 -0.375 -0.078125 -0.65625q-0.078125 -0.28125 -0.25 -0.46875q-0.171875 -0.203125 -0.453125 -0.296875q-0.28125 -0.09375 -0.6875 -0.09375q-0.4375 0 -0.78125 0.109375q-0.34375 0.09375 -0.609375 0.21875q-0.265625 0.125 -0.4375 0.234375q-0.171875 0.109375 -0.265625 0.109375q-0.046875 0 -0.09375 -0.03125q-0.046875 -0.03125 -0.078125 -0.078125q-0.03125 -0.0625 -0.046875 -0.15625q-0.015625 -0.09375 -0.015625 -0.203125q0 -0.171875 0.015625 -0.265625q0.03125 -0.109375 0.125 -0.203125q0.109375 -0.09375 0.34375 -0.21875q0.234375 -0.125 0.53125 -0.234375q0.3125 -0.109375 0.671875 -0.171875q0.375 -0.0625 0.75 -0.0625q0.6875 0 1.171875 0.15625q0.5 0.15625 0.796875 0.46875q0.296875 0.296875 0.4375 0.75q0.140625 0.453125 0.140625 1.046875l0 4.34375zm-1.1875 -2.9375l-1.0 0q-0.484375 0 -0.84375 0.078125q-0.359375 0.078125 -0.59375 0.25q-0.234375 0.15625 -0.34375 0.390625q-0.109375 0.21875 -0.109375 0.515625q0 0.5 0.3125 0.796875q0.3125 0.296875 0.890625 0.296875q0.46875 0 0.859375 -0.234375q0.40625 -0.25 0.828125 -0.734375l0 -1.359375zm6.254822 -0.5q0 0.28125 -0.078125 0.390625q-0.0625 0.09375 -0.171875 0.09375l-3.0 0q-0.125 0 -0.1875 -0.109375q-0.0625 -0.109375 -0.0625 -0.375q0 -0.28125 0.0625 -0.375q0.0625 -0.109375 0.1875 -0.109375l3.0 0q0.046875 0 0.09375 0.015625q0.046875 0.015625 0.078125 0.078125q0.03125 0.0625 0.046875 0.15625q0.03125 0.09375 0.03125 0.234375zm6.9557495 -2.71875q0 0.25 -0.0625 0.359375q-0.0625 0.109375 -0.171875 0.109375l-0.921875 0q0.25 0.265625 0.34375 0.578125q0.109375 0.3125 0.109375 0.640625q0 0.5625 -0.1875 1.0q-0.171875 0.421875 -0.515625 0.71875q-0.328125 0.296875 -0.78125 0.453125q-0.453125 0.15625 -1.015625 0.15625q-0.390625 0 -0.75 -0.09375q-0.359375 -0.109375 -0.546875 -0.265625q-0.125 0.125 -0.21875 0.296875q-0.078125 0.15625 -0.078125 0.375q0 0.25 0.234375 0.421875q0.234375 0.15625 0.625 0.171875l1.671875 0.0625q0.484375 0.015625 0.875 0.140625q0.40625 0.109375 0.703125 0.328125q0.296875 0.21875 0.453125 0.546875q0.171875 0.3125 0.171875 0.734375q0 0.453125 -0.1875 0.84375q-0.1875 0.40625 -0.578125 0.703125q-0.375 0.3125 -0.96875 0.484375q-0.59375 0.171875 -1.40625 0.171875q-0.78125 0 -1.328125 -0.140625q-0.546875 -0.125 -0.90625 -0.359375q-0.34375 -0.21875 -0.5 -0.546875q-0.15625 -0.3125 -0.15625 -0.6875q0 -0.234375 0.0625 -0.453125q0.0625 -0.21875 0.171875 -0.421875q0.125 -0.203125 0.296875 -0.375q0.171875 -0.1875 0.40625 -0.375q-0.359375 -0.171875 -0.53125 -0.4375q-0.15625 -0.28125 -0.15625 -0.59375q0 -0.4375 0.171875 -0.78125q0.1875 -0.34375 0.453125 -0.609375q-0.234375 -0.265625 -0.359375 -0.59375q-0.125 -0.34375 -0.125 -0.8125q0 -0.546875 0.1875 -0.984375q0.1875 -0.4375 0.515625 -0.734375q0.328125 -0.3125 0.78125 -0.46875q0.46875 -0.15625 1.015625 -0.15625q0.296875 0 0.546875 0.03125q0.25 0.03125 0.46875 0.078125l1.953125 0q0.125 0 0.171875 0.125q0.0625 0.125 0.0625 0.359375zm-1.84375 1.703125q0 -0.65625 -0.359375 -1.03125q-0.359375 -0.375 -1.03125 -0.375q-0.34375 0 -0.59375 0.125q-0.25 0.109375 -0.421875 0.3125q-0.171875 0.203125 -0.25 0.46875q-0.078125 0.25 -0.078125 0.53125q0 0.640625 0.359375 1.015625q0.359375 0.359375 1.015625 0.359375q0.34375 0 0.59375 -0.109375q0.265625 -0.109375 0.4375 -0.296875q0.171875 -0.203125 0.25 -0.453125q0.078125 -0.265625 0.078125 -0.546875zm0.59375 5.09375q0 -0.40625 -0.34375 -0.625q-0.328125 -0.234375 -0.90625 -0.25l-1.671875 -0.0625q-0.234375 0.1875 -0.375 0.34375q-0.140625 0.15625 -0.234375 0.296875q-0.078125 0.15625 -0.125 0.296875q-0.03125 0.140625 -0.03125 0.296875q0 0.46875 0.46875 0.703125q0.484375 0.234375 1.328125 0.234375q0.53125 0 0.890625 -0.109375q0.375 -0.09375 0.59375 -0.265625q0.21875 -0.171875 0.3125 -0.390625q0.09375 -0.21875 0.09375 -0.46875zm3.9612427 -0.640625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -9.5625q0 -0.0625 0.015625 -0.109375q0.03125 -0.046875 0.09375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.109375l0 9.5625zm7.0354004 0q0 0.09375 -0.0625 0.140625q-0.0625 0.03125 -0.171875 0.046875q-0.09375 0.03125 -0.28125 0.03125q-0.1875 0 -0.296875 -0.03125q-0.109375 -0.015625 -0.15625 -0.046875q-0.046875 -0.046875 -0.046875 -0.140625l0 -0.640625q-0.421875 0.453125 -0.953125 0.703125q-0.515625 0.25 -1.09375 0.25q-0.5 0 -0.921875 -0.140625q-0.40625 -0.125 -0.703125 -0.375q-0.28125 -0.25 -0.453125 -0.609375q-0.15625 -0.375 -0.15625 -0.84375q0 -0.546875 0.21875 -0.9375q0.234375 -0.40625 0.640625 -0.671875q0.421875 -0.265625 1.015625 -0.390625q0.609375 -0.140625 1.359375 -0.140625l0.875 0l0 -0.5q0 -0.375 -0.078125 -0.65625q-0.078125 -0.28125 -0.25 -0.46875q-0.171875 -0.203125 -0.453125 -0.296875q-0.28125 -0.09375 -0.6875 -0.09375q-0.4375 0 -0.78125 0.109375q-0.34375 0.09375 -0.609375 0.21875q-0.265625 0.125 -0.4375 0.234375q-0.171875 0.109375 -0.265625 0.109375q-0.046875 0 -0.09375 -0.03125q-0.046875 -0.03125 -0.078125 -0.078125q-0.03125 -0.0625 -0.046875 -0.15625q-0.015625 -0.09375 -0.015625 -0.203125q0 -0.171875 0.015625 -0.265625q0.03125 -0.109375 0.125 -0.203125q0.109375 -0.09375 0.34375 -0.21875q0.234375 -0.125 0.53125 -0.234375q0.3125 -0.109375 0.671875 -0.171875q0.375 -0.0625 0.75 -0.0625q0.6875 0 1.171875 0.15625q0.5 0.15625 0.796875 0.46875q0.296875 0.296875 0.4375 0.75q0.140625 0.453125 0.140625 1.046875l0 4.34375zm-1.1875 -2.9375l-1.0 0q-0.484375 0 -0.84375 0.078125q-0.359375 0.078125 -0.59375 0.25q-0.234375 0.15625 -0.34375 0.390625q-0.109375 0.21875 -0.109375 0.515625q0 0.5 0.3125 0.796875q0.3125 0.296875 0.890625 0.296875q0.46875 0 0.859375 -0.234375q0.40625 -0.25 0.828125 -0.734375l0 -1.359375zm8.895386 2.9375q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.171875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.03125 -0.046875 -0.03125 -0.09375l0 -3.78125q0 -0.546875 -0.09375 -0.875q-0.078125 -0.34375 -0.25 -0.578125q-0.15625 -0.25 -0.421875 -0.375q-0.25 -0.140625 -0.59375 -0.140625q-0.4375 0 -0.890625 0.328125q-0.4375 0.3125 -0.921875 0.90625l0 4.515625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.0625 -0.03125 0.15625 -0.046875q0.109375 -0.015625 0.265625 -0.015625q0.171875 0 0.265625 0.015625q0.109375 0.015625 0.15625 0.046875q0.0625 0.03125 0.078125 0.078125q0.03125 0.03125 0.03125 0.078125l0 0.859375q0.546875 -0.609375 1.078125 -0.890625q0.546875 -0.28125 1.109375 -0.28125q0.640625 0 1.078125 0.21875q0.4375 0.21875 0.703125 0.578125q0.28125 0.359375 0.390625 0.859375q0.125 0.484375 0.125 1.171875l0 3.9375zm6.7783813 -0.984375q0 0.125 -0.015625 0.21875q0 0.078125 -0.015625 0.140625q-0.015625 0.0625 -0.046875 0.109375q-0.015625 0.046875 -0.109375 0.140625q-0.078125 0.078125 -0.296875 0.21875q-0.21875 0.125 -0.484375 0.234375q-0.265625 0.09375 -0.59375 0.15625q-0.3125 0.078125 -0.640625 0.078125q-0.703125 0 -1.234375 -0.234375q-0.53125 -0.234375 -0.90625 -0.671875q-0.359375 -0.4375 -0.546875 -1.078125q-0.1875 -0.640625 -0.1875 -1.484375q0 -0.9375 0.234375 -1.625q0.234375 -0.6875 0.640625 -1.125q0.40625 -0.4375 0.953125 -0.640625q0.546875 -0.21875 1.1875 -0.21875q0.296875 0 0.578125 0.0625q0.296875 0.0625 0.546875 0.15625q0.25 0.078125 0.4375 0.203125q0.1875 0.125 0.265625 0.21875q0.09375 0.078125 0.125 0.125q0.03125 0.046875 0.046875 0.125q0.03125 0.0625 0.03125 0.15625q0.015625 0.078125 0.015625 0.203125q0 0.28125 -0.078125 0.390625q-0.0625 0.109375 -0.15625 0.109375q-0.09375 0 -0.234375 -0.109375q-0.140625 -0.125 -0.359375 -0.265625q-0.21875 -0.140625 -0.53125 -0.25q-0.296875 -0.125 -0.703125 -0.125q-0.859375 0 -1.3125 0.65625q-0.453125 0.65625 -0.453125 1.890625q0 0.625 0.109375 1.09375q0.125 0.46875 0.34375 0.796875q0.234375 0.3125 0.5625 0.46875q0.34375 0.140625 0.78125 0.140625q0.40625 0 0.703125 -0.125q0.3125 -0.125 0.53125 -0.28125q0.234375 -0.15625 0.390625 -0.28125q0.15625 -0.125 0.234375 -0.125q0.046875 0 0.078125 0.03125q0.046875 0.03125 0.0625 0.09375q0.03125 0.0625 0.03125 0.171875q0.015625 0.109375 0.015625 0.25zm7.0724487 -2.515625q0 0.265625 -0.140625 0.390625q-0.140625 0.125 -0.3125 0.125l-4.234375 0q0 0.53125 0.109375 0.96875q0.109375 0.421875 0.359375 0.734375q0.25 0.296875 0.640625 0.46875q0.40625 0.15625 0.984375 0.15625q0.46875 0 0.828125 -0.0625q0.359375 -0.078125 0.609375 -0.171875q0.265625 -0.09375 0.4375 -0.171875q0.171875 -0.078125 0.25 -0.078125q0.046875 0 0.078125 0.03125q0.046875 0.015625 0.0625 0.078125q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125q0 0.09375 0 0.171875q0 0.0625 -0.015625 0.125q-0.015625 0.046875 -0.046875 0.09375q-0.015625 0.046875 -0.0625 0.09375q-0.03125 0.03125 -0.234375 0.125q-0.1875 0.078125 -0.5 0.171875q-0.296875 0.078125 -0.703125 0.140625q-0.40625 0.078125 -0.859375 0.078125q-0.796875 0 -1.40625 -0.21875q-0.59375 -0.234375 -1.0 -0.671875q-0.40625 -0.4375 -0.609375 -1.09375q-0.203125 -0.65625 -0.203125 -1.53125q0 -0.828125 0.203125 -1.484375q0.21875 -0.671875 0.625 -1.125q0.40625 -0.46875 0.96875 -0.703125q0.578125 -0.25 1.28125 -0.25q0.765625 0 1.296875 0.25q0.53125 0.234375 0.875 0.65625q0.34375 0.40625 0.5 0.96875q0.171875 0.546875 0.171875 1.171875l0 0.21875zm-1.1875 -0.359375q0.015625 -0.921875 -0.421875 -1.453125q-0.421875 -0.53125 -1.28125 -0.53125q-0.4375 0 -0.765625 0.171875q-0.328125 0.15625 -0.546875 0.4375q-0.21875 0.265625 -0.34375 0.625q-0.125 0.359375 -0.140625 0.75l3.5 0zm11.808838 3.859375q0 0.046875 -0.03125 0.09375q-0.015625 0.046875 -0.078125 0.078125q-0.0625 0.015625 -0.171875 0.03125q-0.09375 0.015625 -0.234375 0.015625q-0.140625 0 -0.25 -0.015625q-0.09375 -0.015625 -0.15625 -0.03125q-0.0625 -0.03125 -0.09375 -0.078125q-0.03125 -0.046875 -0.03125 -0.09375l0 -0.859375q-0.515625 0.546875 -1.0625 0.859375q-0.546875 0.3125 -1.1875 0.3125q-0.71875 0 -1.21875 -0.28125q-0.5 -0.28125 -0.8125 -0.75q-0.3125 -0.46875 -0.453125 -1.09375q-0.140625 -0.640625 -0.140625 -1.34375q0 -0.828125 0.171875 -1.484375q0.1875 -0.671875 0.53125 -1.140625q0.359375 -0.484375 0.875 -0.734375q0.515625 -0.25 1.203125 -0.25q0.5625 0 1.03125 0.25q0.46875 0.234375 0.921875 0.71875l0 -3.75q0 -0.046875 0.015625 -0.09375q0.03125 -0.046875 0.109375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.109375 -0.015625 0.28125 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.09375l0 9.546875zm-1.1875 -4.53125q-0.484375 -0.59375 -0.9375 -0.90625q-0.4375 -0.3125 -0.921875 -0.3125q-0.453125 0 -0.765625 0.21875q-0.3125 0.203125 -0.515625 0.5625q-0.1875 0.34375 -0.28125 0.796875q-0.09375 0.4375 -0.09375 0.890625q0 0.484375 0.078125 0.953125q0.078125 0.46875 0.265625 0.828125q0.1875 0.359375 0.484375 0.578125q0.3125 0.21875 0.78125 0.21875q0.234375 0 0.453125 -0.0625q0.21875 -0.0625 0.4375 -0.203125q0.234375 -0.15625 0.484375 -0.390625q0.25 -0.25 0.53125 -0.59375l0 -2.578125zm8.231506 4.53125q0 0.09375 -0.0625 0.140625q-0.0625 0.03125 -0.171875 0.046875q-0.09375 0.03125 -0.28125 0.03125q-0.1875 0 -0.296875 -0.03125q-0.109375 -0.015625 -0.15625 -0.046875q-0.046875 -0.046875 -0.046875 -0.140625l0 -0.640625q-0.421875 0.453125 -0.953125 0.703125q-0.515625 0.25 -1.09375 0.25q-0.5 0 -0.921875 -0.140625q-0.40625 -0.125 -0.703125 -0.375q-0.28125 -0.25 -0.453125 -0.609375q-0.15625 -0.375 -0.15625 -0.84375q0 -0.546875 0.21875 -0.9375q0.234375 -0.40625 0.640625 -0.671875q0.421875 -0.265625 1.015625 -0.390625q0.609375 -0.140625 1.359375 -0.140625l0.875 0l0 -0.5q0 -0.375 -0.078125 -0.65625q-0.078125 -0.28125 -0.25 -0.46875q-0.171875 -0.203125 -0.453125 -0.296875q-0.28125 -0.09375 -0.6875 -0.09375q-0.4375 0 -0.78125 0.109375q-0.34375 0.09375 -0.609375 0.21875q-0.265625 0.125 -0.4375 0.234375q-0.171875 0.109375 -0.265625 0.109375q-0.046875 0 -0.09375 -0.03125q-0.046875 -0.03125 -0.078125 -0.078125q-0.03125 -0.0625 -0.046875 -0.15625q-0.015625 -0.09375 -0.015625 -0.203125q0 -0.171875 0.015625 -0.265625q0.03125 -0.109375 0.125 -0.203125q0.109375 -0.09375 0.34375 -0.21875q0.234375 -0.125 0.53125 -0.234375q0.3125 -0.109375 0.671875 -0.171875q0.375 -0.0625 0.75 -0.0625q0.6875 0 1.171875 0.15625q0.5 0.15625 0.796875 0.46875q0.296875 0.296875 0.4375 0.75q0.140625 0.453125 0.140625 1.046875l0 4.34375zm-1.1875 -2.9375l-1.0 0q-0.484375 0 -0.84375 0.078125q-0.359375 0.078125 -0.59375 0.25q-0.234375 0.15625 -0.34375 0.390625q-0.109375 0.21875 -0.109375 0.515625q0 0.5 0.3125 0.796875q0.3125 0.296875 0.890625 0.296875q0.46875 0 0.859375 -0.234375q0.40625 -0.25 0.828125 -0.734375l0 -1.359375zm7.3953857 1.171875q0 0.5 -0.1875 0.890625q-0.1875 0.375 -0.53125 0.640625q-0.328125 0.265625 -0.796875 0.40625q-0.453125 0.140625 -1.015625 0.140625q-0.34375 0 -0.65625 -0.0625q-0.3125 -0.046875 -0.5625 -0.125q-0.234375 -0.09375 -0.40625 -0.171875q-0.171875 -0.09375 -0.25 -0.15625q-0.078125 -0.078125 -0.125 -0.203125q-0.03125 -0.140625 -0.03125 -0.359375q0 -0.140625 0.015625 -0.234375q0.015625 -0.09375 0.03125 -0.140625q0.03125 -0.0625 0.0625 -0.078125q0.046875 -0.03125 0.09375 -0.03125q0.078125 0 0.234375 0.09375q0.15625 0.09375 0.375 0.21875q0.234375 0.109375 0.53125 0.203125q0.3125 0.09375 0.71875 0.09375q0.296875 0 0.53125 -0.0625q0.25 -0.0625 0.421875 -0.1875q0.1875 -0.125 0.28125 -0.3125q0.09375 -0.203125 0.09375 -0.46875q0 -0.265625 -0.140625 -0.453125q-0.140625 -0.1875 -0.375 -0.328125q-0.21875 -0.140625 -0.515625 -0.25q-0.28125 -0.109375 -0.59375 -0.234375q-0.296875 -0.125 -0.59375 -0.28125q-0.28125 -0.15625 -0.515625 -0.375q-0.21875 -0.21875 -0.359375 -0.515625q-0.140625 -0.3125 -0.140625 -0.75q0 -0.375 0.140625 -0.71875q0.15625 -0.359375 0.453125 -0.609375q0.296875 -0.265625 0.734375 -0.421875q0.4375 -0.15625 1.015625 -0.15625q0.265625 0 0.515625 0.046875q0.265625 0.03125 0.46875 0.09375q0.203125 0.0625 0.34375 0.140625q0.15625 0.078125 0.234375 0.140625q0.078125 0.046875 0.09375 0.09375q0.03125 0.046875 0.03125 0.109375q0.015625 0.046875 0.03125 0.125q0.015625 0.078125 0.015625 0.1875q0 0.125 -0.015625 0.21875q-0.015625 0.078125 -0.046875 0.140625q-0.015625 0.0625 -0.046875 0.09375q-0.03125 0.015625 -0.078125 0.015625q-0.0625 0 -0.1875 -0.078125q-0.125 -0.078125 -0.328125 -0.171875q-0.1875 -0.09375 -0.453125 -0.171875q-0.25 -0.078125 -0.59375 -0.078125q-0.296875 0 -0.53125 0.078125q-0.21875 0.0625 -0.375 0.1875q-0.140625 0.125 -0.21875 0.296875q-0.0625 0.171875 -0.0625 0.375q0 0.28125 0.140625 0.46875q0.140625 0.1875 0.359375 0.328125q0.234375 0.140625 0.53125 0.265625q0.296875 0.109375 0.59375 0.234375q0.3125 0.125 0.609375 0.28125q0.296875 0.140625 0.515625 0.359375q0.234375 0.203125 0.375 0.515625q0.140625 0.296875 0.140625 0.703125zm7.2323 1.765625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.171875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.03125 -0.046875 -0.03125 -0.09375l0 -3.78125q0 -0.546875 -0.09375 -0.875q-0.078125 -0.34375 -0.25 -0.578125q-0.15625 -0.25 -0.421875 -0.375q-0.25 -0.140625 -0.59375 -0.140625q-0.4375 0 -0.890625 0.328125q-0.4375 0.3125 -0.921875 0.90625l0 4.515625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -9.5625q0 -0.0625 0.015625 -0.109375q0.03125 -0.046875 0.09375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.109375l0 3.859375q0.5 -0.546875 1.015625 -0.796875q0.515625 -0.265625 1.046875 -0.265625q0.640625 0 1.078125 0.21875q0.4375 0.21875 0.703125 0.578125q0.28125 0.359375 0.390625 0.859375q0.125 0.484375 0.125 1.1875l0 3.921875zm8.075256 -3.3125q0 0.84375 -0.1875 1.515625q-0.171875 0.65625 -0.53125 1.140625q-0.34375 0.46875 -0.859375 0.71875q-0.515625 0.25 -1.1875 0.25q-0.3125 0 -0.578125 -0.0625q-0.25 -0.0625 -0.5 -0.1875q-0.25 -0.140625 -0.5 -0.34375q-0.25 -0.21875 -0.53125 -0.515625l0 0.796875q0 0.046875 -0.03125 0.09375q-0.03125 0.046875 -0.09375 0.078125q-0.0625 0.015625 -0.15625 0.03125q-0.09375 0.015625 -0.25 0.015625q-0.140625 0 -0.25 -0.015625q-0.09375 -0.015625 -0.15625 -0.03125q-0.0625 -0.03125 -0.09375 -0.078125q-0.015625 -0.046875 -0.015625 -0.09375l0 -9.5625q0 -0.0625 0.015625 -0.109375q0.03125 -0.046875 0.09375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.109375l0 3.859375q0.28125 -0.296875 0.546875 -0.5q0.265625 -0.203125 0.515625 -0.328125q0.265625 -0.125 0.515625 -0.171875q0.265625 -0.0625 0.5625 -0.0625q0.6875 0 1.1875 0.28125q0.5 0.265625 0.8125 0.734375q0.3125 0.46875 0.453125 1.109375q0.140625 0.625 0.140625 1.328125zm-1.234375 0.140625q0 -0.5 -0.078125 -0.953125q-0.078125 -0.46875 -0.265625 -0.828125q-0.1875 -0.359375 -0.5 -0.578125q-0.296875 -0.21875 -0.765625 -0.21875q-0.21875 0 -0.453125 0.0625q-0.21875 0.0625 -0.453125 0.21875q-0.21875 0.140625 -0.46875 0.375q-0.234375 0.234375 -0.515625 0.59375l0 2.578125q0.484375 0.59375 0.921875 0.90625q0.453125 0.3125 0.921875 0.3125q0.453125 0 0.765625 -0.21875q0.3125 -0.21875 0.5 -0.5625q0.203125 -0.359375 0.296875 -0.796875q0.09375 -0.4375 0.09375 -0.890625zm8.997131 -0.125q0 0.78125 -0.203125 1.453125q-0.203125 0.65625 -0.625 1.140625q-0.40625 0.46875 -1.03125 0.75q-0.609375 0.265625 -1.421875 0.265625q-0.796875 0 -1.390625 -0.234375q-0.59375 -0.25 -0.984375 -0.6875q-0.390625 -0.453125 -0.59375 -1.09375q-0.1875 -0.65625 -0.1875 -1.46875q0 -0.78125 0.203125 -1.4375q0.203125 -0.671875 0.609375 -1.140625q0.421875 -0.484375 1.03125 -0.75q0.625 -0.265625 1.4375 -0.265625q0.796875 0 1.390625 0.234375q0.59375 0.234375 0.984375 0.6875q0.390625 0.453125 0.578125 1.09375q0.203125 0.640625 0.203125 1.453125zm-1.234375 0.078125q0 -0.53125 -0.109375 -0.984375q-0.09375 -0.46875 -0.3125 -0.8125q-0.21875 -0.359375 -0.609375 -0.5625q-0.375 -0.203125 -0.9375 -0.203125q-0.515625 0 -0.890625 0.1875q-0.375 0.1875 -0.625 0.53125q-0.234375 0.328125 -0.359375 0.796875q-0.125 0.46875 -0.125 1.015625q0 0.53125 0.09375 1.0q0.109375 0.46875 0.328125 0.8125q0.234375 0.34375 0.609375 0.546875q0.375 0.203125 0.9375 0.203125q0.515625 0 0.890625 -0.1875q0.390625 -0.1875 0.625 -0.515625q0.25 -0.34375 0.359375 -0.796875q0.125 -0.46875 0.125 -1.03125zm7.838257 3.21875q0 0.09375 -0.0625 0.140625q-0.0625 0.03125 -0.171875 0.046875q-0.09375 0.03125 -0.28125 0.03125q-0.1875 0 -0.296875 -0.03125q-0.109375 -0.015625 -0.15625 -0.046875q-0.046875 -0.046875 -0.046875 -0.140625l0 -0.640625q-0.421875 0.453125 -0.953125 0.703125q-0.515625 0.25 -1.09375 0.25q-0.5 0 -0.921875 -0.140625q-0.40625 -0.125 -0.703125 -0.375q-0.28125 -0.25 -0.453125 -0.609375q-0.15625 -0.375 -0.15625 -0.84375q0 -0.546875 0.21875 -0.9375q0.234375 -0.40625 0.640625 -0.671875q0.421875 -0.265625 1.015625 -0.390625q0.609375 -0.140625 1.359375 -0.140625l0.875 0l0 -0.5q0 -0.375 -0.078125 -0.65625q-0.078125 -0.28125 -0.25 -0.46875q-0.171875 -0.203125 -0.453125 -0.296875q-0.28125 -0.09375 -0.6875 -0.09375q-0.4375 0 -0.78125 0.109375q-0.34375 0.09375 -0.609375 0.21875q-0.265625 0.125 -0.4375 0.234375q-0.171875 0.109375 -0.265625 0.109375q-0.046875 0 -0.09375 -0.03125q-0.046875 -0.03125 -0.078125 -0.078125q-0.03125 -0.0625 -0.046875 -0.15625q-0.015625 -0.09375 -0.015625 -0.203125q0 -0.171875 0.015625 -0.265625q0.03125 -0.109375 0.125 -0.203125q0.109375 -0.09375 0.34375 -0.21875q0.234375 -0.125 0.53125 -0.234375q0.3125 -0.109375 0.671875 -0.171875q0.375 -0.0625 0.75 -0.0625q0.6875 0 1.171875 0.15625q0.5 0.15625 0.796875 0.46875q0.296875 0.296875 0.4375 0.75q0.140625 0.453125 0.140625 1.046875l0 4.34375zm-1.1875 -2.9375l-1.0 0q-0.484375 0 -0.84375 0.078125q-0.359375 0.078125 -0.59375 0.25q-0.234375 0.15625 -0.34375 0.390625q-0.109375 0.21875 -0.109375 0.515625q0 0.5 0.3125 0.796875q0.3125 0.296875 0.890625 0.296875q0.46875 0 0.859375 -0.234375q0.40625 -0.25 0.828125 -0.734375l0 -1.359375zm7.1141357 -3.09375q0 0.15625 -0.015625 0.265625q0 0.109375 -0.03125 0.171875q-0.015625 0.0625 -0.046875 0.09375q-0.03125 0.03125 -0.078125 0.03125q-0.0625 0 -0.15625 -0.03125q-0.078125 -0.03125 -0.1875 -0.0625q-0.09375 -0.03125 -0.21875 -0.0625q-0.125 -0.03125 -0.28125 -0.03125q-0.171875 0 -0.34375 0.078125q-0.171875 0.0625 -0.375 0.234375q-0.1875 0.15625 -0.390625 0.4375q-0.203125 0.265625 -0.453125 0.65625l0 4.25q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.0625 -0.03125 0.15625 -0.046875q0.109375 -0.015625 0.265625 -0.015625q0.171875 0 0.265625 0.015625q0.109375 0.015625 0.15625 0.046875q0.0625 0.03125 0.078125 0.078125q0.03125 0.03125 0.03125 0.078125l0 0.9375q0.265625 -0.375 0.5 -0.625q0.234375 -0.25 0.4375 -0.375q0.21875 -0.140625 0.421875 -0.1875q0.203125 -0.0625 0.40625 -0.0625q0.09375 0 0.203125 0.015625q0.125 0 0.25 0.03125q0.140625 0.03125 0.234375 0.0625q0.109375 0.03125 0.140625 0.078125q0.046875 0.03125 0.0625 0.0625q0.015625 0.03125 0.03125 0.078125q0.015625 0.046875 0.015625 0.15625q0 0.09375 0 0.25zm6.859619 6.03125q0 0.046875 -0.03125 0.09375q-0.015625 0.046875 -0.078125 0.078125q-0.0625 0.015625 -0.171875 0.03125q-0.09375 0.015625 -0.234375 0.015625q-0.140625 0 -0.25 -0.015625q-0.09375 -0.015625 -0.15625 -0.03125q-0.0625 -0.03125 -0.09375 -0.078125q-0.03125 -0.046875 -0.03125 -0.09375l0 -0.859375q-0.515625 0.546875 -1.0625 0.859375q-0.546875 0.3125 -1.1875 0.3125q-0.71875 0 -1.21875 -0.28125q-0.5 -0.28125 -0.8125 -0.75q-0.3125 -0.46875 -0.453125 -1.09375q-0.140625 -0.640625 -0.140625 -1.34375q0 -0.828125 0.171875 -1.484375q0.1875 -0.671875 0.53125 -1.140625q0.359375 -0.484375 0.875 -0.734375q0.515625 -0.25 1.203125 -0.25q0.5625 0 1.03125 0.25q0.46875 0.234375 0.921875 0.71875l0 -3.75q0 -0.046875 0.015625 -0.09375q0.03125 -0.046875 0.109375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.109375 -0.015625 0.28125 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.09375l0 9.546875zm-1.1875 -4.53125q-0.484375 -0.59375 -0.9375 -0.90625q-0.4375 -0.3125 -0.921875 -0.3125q-0.453125 0 -0.765625 0.21875q-0.3125 0.203125 -0.515625 0.5625q-0.1875 0.34375 -0.28125 0.796875q-0.09375 0.4375 -0.09375 0.890625q0 0.484375 0.078125 0.953125q0.078125 0.46875 0.265625 0.828125q0.1875 0.359375 0.484375 0.578125q0.3125 0.21875 0.78125 0.21875q0.234375 0 0.453125 -0.0625q0.21875 -0.0625 0.4375 -0.203125q0.234375 -0.15625 0.484375 -0.390625q0.25 -0.25 0.53125 -0.59375l0 -2.578125zm15.701172 -1.9375q0 0.0625 -0.015625 0.140625q-0.015625 0.0625 -0.046875 0.171875l-1.90625 6.109375q-0.015625 0.078125 -0.0625 0.140625q-0.046875 0.046875 -0.140625 0.078125q-0.078125 0.015625 -0.21875 0.03125q-0.140625 0.015625 -0.359375 0.015625q-0.21875 0 -0.375 -0.015625q-0.140625 -0.015625 -0.234375 -0.046875q-0.09375 -0.03125 -0.140625 -0.078125q-0.03125 -0.046875 -0.046875 -0.125l-1.359375 -4.671875l-0.015625 -0.0625l-0.015625 0.0625l-1.25 4.671875q-0.015625 0.078125 -0.0625 0.140625q-0.046875 0.046875 -0.140625 0.078125q-0.09375 0.015625 -0.25 0.03125q-0.140625 0.015625 -0.359375 0.015625q-0.21875 0 -0.359375 -0.015625q-0.140625 -0.015625 -0.234375 -0.046875q-0.078125 -0.03125 -0.125 -0.078125q-0.046875 -0.046875 -0.0625 -0.125l-1.890625 -6.109375q-0.03125 -0.109375 -0.046875 -0.171875q-0.015625 -0.078125 -0.015625 -0.140625q0 -0.0625 0.03125 -0.09375q0.03125 -0.046875 0.09375 -0.0625q0.078125 -0.03125 0.1875 -0.03125q0.109375 -0.015625 0.28125 -0.015625q0.203125 0 0.3125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.0625 0.109375l1.546875 5.3125l0.015625 0.0625l0.015625 -0.0625l1.421875 -5.3125q0.015625 -0.0625 0.046875 -0.109375q0.03125 -0.046875 0.09375 -0.0625q0.0625 -0.03125 0.171875 -0.046875q0.109375 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.109375 0.015625 0.171875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.03125 0.046875 0.09375l1.53125 5.328125l0.015625 0.0625l0.015625 -0.0625l1.53125 -5.3125q0.015625 -0.0625 0.046875 -0.109375q0.03125 -0.046875 0.09375 -0.0625q0.0625 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.109375 0 0.171875 0.03125q0.0625 0.03125 0.078125 0.0625q0.03125 0.03125 0.03125 0.09375zm7.0081787 6.46875q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.171875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.03125 -0.046875 -0.03125 -0.09375l0 -3.78125q0 -0.546875 -0.09375 -0.875q-0.078125 -0.34375 -0.25 -0.578125q-0.15625 -0.25 -0.421875 -0.375q-0.25 -0.140625 -0.59375 -0.140625q-0.4375 0 -0.890625 0.328125q-0.4375 0.3125 -0.921875 0.90625l0 4.515625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -9.5625q0 -0.0625 0.015625 -0.109375q0.03125 -0.046875 0.09375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.109375l0 3.859375q0.5 -0.546875 1.015625 -0.796875q0.515625 -0.265625 1.046875 -0.265625q0.640625 0 1.078125 0.21875q0.4375 0.21875 0.703125 0.578125q0.28125 0.359375 0.390625 0.859375q0.125 0.484375 0.125 1.1875l0 3.921875zm3.3408813 0q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 6.453125zm0.125 -8.625q0 0.421875 -0.15625 0.578125q-0.15625 0.140625 -0.578125 0.140625q-0.40625 0 -0.5625 -0.140625q-0.15625 -0.15625 -0.15625 -0.5625q0 -0.421875 0.15625 -0.5625q0.15625 -0.15625 0.578125 -0.15625q0.421875 0 0.5625 0.15625q0.15625 0.140625 0.15625 0.546875zm6.6760254 7.640625q0 0.125 -0.015625 0.21875q0 0.078125 -0.015625 0.140625q-0.015625 0.0625 -0.046875 0.109375q-0.015625 0.046875 -0.109375 0.140625q-0.078125 0.078125 -0.296875 0.21875q-0.21875 0.125 -0.484375 0.234375q-0.265625 0.09375 -0.59375 0.15625q-0.3125 0.078125 -0.640625 0.078125q-0.703125 0 -1.234375 -0.234375q-0.53125 -0.234375 -0.90625 -0.671875q-0.359375 -0.4375 -0.546875 -1.078125q-0.1875 -0.640625 -0.1875 -1.484375q0 -0.9375 0.234375 -1.625q0.234375 -0.6875 0.640625 -1.125q0.40625 -0.4375 0.953125 -0.640625q0.546875 -0.21875 1.1875 -0.21875q0.296875 0 0.578125 0.0625q0.296875 0.0625 0.546875 0.15625q0.25 0.078125 0.4375 0.203125q0.1875 0.125 0.265625 0.21875q0.09375 0.078125 0.125 0.125q0.03125 0.046875 0.046875 0.125q0.03125 0.0625 0.03125 0.15625q0.015625 0.078125 0.015625 0.203125q0 0.28125 -0.078125 0.390625q-0.0625 0.109375 -0.15625 0.109375q-0.09375 0 -0.234375 -0.109375q-0.140625 -0.125 -0.359375 -0.265625q-0.21875 -0.140625 -0.53125 -0.25q-0.296875 -0.125 -0.703125 -0.125q-0.859375 0 -1.3125 0.65625q-0.453125 0.65625 -0.453125 1.890625q0 0.625 0.109375 1.09375q0.125 0.46875 0.34375 0.796875q0.234375 0.3125 0.5625 0.46875q0.34375 0.140625 0.78125 0.140625q0.40625 0 0.703125 -0.125q0.3125 -0.125 0.53125 -0.28125q0.234375 -0.15625 0.390625 -0.28125q0.15625 -0.125 0.234375 -0.125q0.046875 0 0.078125 0.03125q0.046875 0.03125 0.0625 0.09375q0.03125 0.0625 0.03125 0.171875q0.015625 0.109375 0.015625 0.25zm7.1192627 0.984375q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.171875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.03125 -0.046875 -0.03125 -0.09375l0 -3.78125q0 -0.546875 -0.09375 -0.875q-0.078125 -0.34375 -0.25 -0.578125q-0.15625 -0.25 -0.421875 -0.375q-0.25 -0.140625 -0.59375 -0.140625q-0.4375 0 -0.890625 0.328125q-0.4375 0.3125 -0.921875 0.90625l0 4.515625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -9.5625q0 -0.0625 0.015625 -0.109375q0.03125 -0.046875 0.09375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.109375l0 3.859375q0.5 -0.546875 1.015625 -0.796875q0.515625 -0.265625 1.046875 -0.265625q0.640625 0 1.078125 0.21875q0.4375 0.21875 0.703125 0.578125q0.28125 0.359375 0.390625 0.859375q0.125 0.484375 0.125 1.1875l0 3.921875zm11.388672 -3.328125q0 0.84375 -0.1875 1.515625q-0.171875 0.671875 -0.53125 1.140625q-0.34375 0.46875 -0.875 0.734375q-0.515625 0.25 -1.1875 0.25q-0.296875 0 -0.546875 -0.0625q-0.234375 -0.0625 -0.46875 -0.171875q-0.234375 -0.125 -0.46875 -0.3125q-0.21875 -0.1875 -0.46875 -0.4375l0 3.21875q0 0.0625 -0.03125 0.09375q-0.03125 0.046875 -0.09375 0.078125q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.078125q-0.015625 -0.03125 -0.015625 -0.09375l0 -9.0q0 -0.0625 0.015625 -0.09375q0.03125 -0.046875 0.09375 -0.0625q0.0625 -0.03125 0.15625 -0.046875q0.109375 -0.015625 0.25 -0.015625q0.15625 0 0.25 0.015625q0.09375 0.015625 0.15625 0.046875q0.0625 0.015625 0.078125 0.0625q0.03125 0.03125 0.03125 0.09375l0 0.875q0.296875 -0.296875 0.5625 -0.515625q0.28125 -0.234375 0.546875 -0.375q0.28125 -0.15625 0.5625 -0.21875q0.296875 -0.078125 0.625 -0.078125q0.703125 0 1.1875 0.28125q0.5 0.265625 0.8125 0.734375q0.3125 0.46875 0.453125 1.09375q0.140625 0.625 0.140625 1.328125zm-1.234375 0.140625q0 -0.5 -0.078125 -0.953125q-0.078125 -0.46875 -0.265625 -0.828125q-0.171875 -0.359375 -0.484375 -0.5625q-0.3125 -0.21875 -0.765625 -0.21875q-0.234375 0 -0.453125 0.0625q-0.21875 0.0625 -0.453125 0.21875q-0.21875 0.140625 -0.46875 0.390625q-0.25 0.234375 -0.53125 0.578125l0 2.5625q0.484375 0.59375 0.921875 0.921875q0.4375 0.3125 0.90625 0.3125q0.453125 0 0.765625 -0.21875q0.328125 -0.21875 0.515625 -0.578125q0.203125 -0.359375 0.296875 -0.796875q0.09375 -0.4375 0.09375 -0.890625zm6.7783813 -2.84375q0 0.15625 -0.015625 0.265625q0 0.109375 -0.03125 0.171875q-0.015625 0.0625 -0.046875 0.09375q-0.03125 0.03125 -0.078125 0.03125q-0.0625 0 -0.15625 -0.03125q-0.078125 -0.03125 -0.1875 -0.0625q-0.09375 -0.03125 -0.21875 -0.0625q-0.125 -0.03125 -0.28125 -0.03125q-0.171875 0 -0.34375 0.078125q-0.171875 0.0625 -0.375 0.234375q-0.1875 0.15625 -0.390625 0.4375q-0.203125 0.265625 -0.453125 0.65625l0 4.25q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.0625 -0.03125 0.15625 -0.046875q0.109375 -0.015625 0.265625 -0.015625q0.171875 0 0.265625 0.015625q0.109375 0.015625 0.15625 0.046875q0.0625 0.03125 0.078125 0.078125q0.03125 0.03125 0.03125 0.078125l0 0.9375q0.265625 -0.375 0.5 -0.625q0.234375 -0.25 0.4375 -0.375q0.21875 -0.140625 0.421875 -0.1875q0.203125 -0.0625 0.40625 -0.0625q0.09375 0 0.203125 0.015625q0.125 0 0.25 0.03125q0.140625 0.03125 0.234375 0.0625q0.109375 0.03125 0.140625 0.078125q0.046875 0.03125 0.0625 0.0625q0.015625 0.03125 0.03125 0.078125q0.015625 0.046875 0.015625 0.15625q0 0.09375 0 0.25zm7.328369 2.734375q0 0.78125 -0.203125 1.453125q-0.203125 0.65625 -0.625 1.140625q-0.40625 0.46875 -1.03125 0.75q-0.609375 0.265625 -1.421875 0.265625q-0.796875 0 -1.390625 -0.234375q-0.59375 -0.25 -0.984375 -0.6875q-0.390625 -0.453125 -0.59375 -1.09375q-0.1875 -0.65625 -0.1875 -1.46875q0 -0.78125 0.203125 -1.4375q0.203125 -0.671875 0.609375 -1.140625q0.421875 -0.484375 1.03125 -0.75q0.625 -0.265625 1.4375 -0.265625q0.796875 0 1.390625 0.234375q0.59375 0.234375 0.984375 0.6875q0.390625 0.453125 0.578125 1.09375q0.203125 0.640625 0.203125 1.453125zm-1.234375 0.078125q0 -0.53125 -0.109375 -0.984375q-0.09375 -0.46875 -0.3125 -0.8125q-0.21875 -0.359375 -0.609375 -0.5625q-0.375 -0.203125 -0.9375 -0.203125q-0.515625 0 -0.890625 0.1875q-0.375 0.1875 -0.625 0.53125q-0.234375 0.328125 -0.359375 0.796875q-0.125 0.46875 -0.125 1.015625q0 0.53125 0.09375 1.0q0.109375 0.46875 0.328125 0.8125q0.234375 0.34375 0.609375 0.546875q0.375 0.203125 0.9375 0.203125q0.515625 0 0.890625 -0.1875q0.390625 -0.1875 0.625 -0.515625q0.25 -0.34375 0.359375 -0.796875q0.125 -0.46875 0.125 -1.03125zm8.260132 -3.25q0 0.03125 0 0.0625q0 0.03125 -0.015625 0.078125q0 0.03125 -0.015625 0.078125q-0.015625 0.03125 -0.03125 0.09375l-2.1875 6.109375q-0.03125 0.078125 -0.078125 0.140625q-0.046875 0.046875 -0.140625 0.078125q-0.09375 0.015625 -0.234375 0.03125q-0.140625 0.015625 -0.359375 0.015625q-0.21875 0 -0.359375 -0.015625q-0.140625 -0.015625 -0.234375 -0.046875q-0.078125 -0.03125 -0.140625 -0.078125q-0.046875 -0.046875 -0.078125 -0.125l-2.1875 -6.109375q-0.03125 -0.09375 -0.046875 -0.15625q-0.015625 -0.0625 -0.015625 -0.09375q0 -0.03125 0 -0.0625q0 -0.046875 0.015625 -0.09375q0.03125 -0.046875 0.09375 -0.0625q0.078125 -0.03125 0.1875 -0.03125q0.109375 -0.015625 0.28125 -0.015625q0.203125 0 0.328125 0.015625q0.125 0.015625 0.1875 0.046875q0.078125 0.015625 0.109375 0.0625q0.03125 0.046875 0.0625 0.109375l1.8125 5.3125l0.03125 0.078125l0.015625 -0.078125l1.796875 -5.3125q0.015625 -0.0625 0.046875 -0.109375q0.046875 -0.046875 0.109375 -0.0625q0.0625 -0.03125 0.171875 -0.046875q0.125 -0.015625 0.328125 -0.015625q0.15625 0 0.265625 0.015625q0.109375 0 0.171875 0.03125q0.0625 0.03125 0.078125 0.078125q0.03125 0.03125 0.03125 0.078125zm2.52594 6.46875q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 6.453125zm0.125 -8.625q0 0.421875 -0.15625 0.578125q-0.15625 0.140625 -0.578125 0.140625q-0.40625 0 -0.5625 -0.140625q-0.15625 -0.15625 -0.15625 -0.5625q0 -0.421875 0.15625 -0.5625q0.15625 -0.15625 0.578125 -0.15625q0.421875 0 0.5625 0.15625q0.15625 0.140625 0.15625 0.546875zm7.5665894 8.625q0 0.046875 -0.03125 0.09375q-0.015625 0.046875 -0.078125 0.078125q-0.0625 0.015625 -0.171875 0.03125q-0.09375 0.015625 -0.234375 0.015625q-0.140625 0 -0.25 -0.015625q-0.09375 -0.015625 -0.15625 -0.03125q-0.0625 -0.03125 -0.09375 -0.078125q-0.03125 -0.046875 -0.03125 -0.09375l0 -0.859375q-0.515625 0.546875 -1.0625 0.859375q-0.546875 0.3125 -1.1875 0.3125q-0.71875 0 -1.21875 -0.28125q-0.5 -0.28125 -0.8125 -0.75q-0.3125 -0.46875 -0.453125 -1.09375q-0.140625 -0.640625 -0.140625 -1.34375q0 -0.828125 0.171875 -1.484375q0.1875 -0.671875 0.53125 -1.140625q0.359375 -0.484375 0.875 -0.734375q0.515625 -0.25 1.203125 -0.25q0.5625 0 1.03125 0.25q0.46875 0.234375 0.921875 0.71875l0 -3.75q0 -0.046875 0.015625 -0.09375q0.03125 -0.046875 0.109375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.109375 -0.015625 0.28125 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.09375l0 9.546875zm-1.1875 -4.53125q-0.484375 -0.59375 -0.9375 -0.90625q-0.4375 -0.3125 -0.921875 -0.3125q-0.453125 0 -0.765625 0.21875q-0.3125 0.203125 -0.515625 0.5625q-0.1875 0.34375 -0.28125 0.796875q-0.09375 0.4375 -0.09375 0.890625q0 0.484375 0.078125 0.953125q0.078125 0.46875 0.265625 0.828125q0.1875 0.359375 0.484375 0.578125q0.3125 0.21875 0.78125 0.21875q0.234375 0 0.453125 -0.0625q0.21875 -0.0625 0.4375 -0.203125q0.234375 -0.15625 0.484375 -0.390625q0.25 -0.25 0.53125 -0.59375l0 -2.578125zm8.872131 1.03125q0 0.265625 -0.140625 0.390625q-0.140625 0.125 -0.3125 0.125l-4.234375 0q0 0.53125 0.109375 0.96875q0.109375 0.421875 0.359375 0.734375q0.25 0.296875 0.640625 0.46875q0.40625 0.15625 0.984375 0.15625q0.46875 0 0.828125 -0.0625q0.359375 -0.078125 0.609375 -0.171875q0.265625 -0.09375 0.4375 -0.171875q0.171875 -0.078125 0.25 -0.078125q0.046875 0 0.078125 0.03125q0.046875 0.015625 0.0625 0.078125q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125q0 0.09375 0 0.171875q0 0.0625 -0.015625 0.125q-0.015625 0.046875 -0.046875 0.09375q-0.015625 0.046875 -0.0625 0.09375q-0.03125 0.03125 -0.234375 0.125q-0.1875 0.078125 -0.5 0.171875q-0.296875 0.078125 -0.703125 0.140625q-0.40625 0.078125 -0.859375 0.078125q-0.796875 0 -1.40625 -0.21875q-0.59375 -0.234375 -1.0 -0.671875q-0.40625 -0.4375 -0.609375 -1.09375q-0.203125 -0.65625 -0.203125 -1.53125q0 -0.828125 0.203125 -1.484375q0.21875 -0.671875 0.625 -1.125q0.40625 -0.46875 0.96875 -0.703125q0.578125 -0.25 1.28125 -0.25q0.765625 0 1.296875 0.25q0.53125 0.234375 0.875 0.65625q0.34375 0.40625 0.5 0.96875q0.171875 0.546875 0.171875 1.171875l0 0.21875zm-1.1875 -0.359375q0.015625 -0.921875 -0.421875 -1.453125q-0.421875 -0.53125 -1.28125 -0.53125q-0.4375 0 -0.765625 0.171875q-0.328125 0.15625 -0.546875 0.4375q-0.21875 0.265625 -0.34375 0.625q-0.125 0.359375 -0.140625 0.75l3.5 0zm7.0267334 2.09375q0 0.5 -0.1875 0.890625q-0.1875 0.375 -0.53125 0.640625q-0.328125 0.265625 -0.796875 0.40625q-0.453125 0.140625 -1.015625 0.140625q-0.34375 0 -0.65625 -0.0625q-0.3125 -0.046875 -0.5625 -0.125q-0.234375 -0.09375 -0.40625 -0.171875q-0.171875 -0.09375 -0.25 -0.15625q-0.078125 -0.078125 -0.125 -0.203125q-0.03125 -0.140625 -0.03125 -0.359375q0 -0.140625 0.015625 -0.234375q0.015625 -0.09375 0.03125 -0.140625q0.03125 -0.0625 0.0625 -0.078125q0.046875 -0.03125 0.09375 -0.03125q0.078125 0 0.234375 0.09375q0.15625 0.09375 0.375 0.21875q0.234375 0.109375 0.53125 0.203125q0.3125 0.09375 0.71875 0.09375q0.296875 0 0.53125 -0.0625q0.25 -0.0625 0.421875 -0.1875q0.1875 -0.125 0.28125 -0.3125q0.09375 -0.203125 0.09375 -0.46875q0 -0.265625 -0.140625 -0.453125q-0.140625 -0.1875 -0.375 -0.328125q-0.21875 -0.140625 -0.515625 -0.25q-0.28125 -0.109375 -0.59375 -0.234375q-0.296875 -0.125 -0.59375 -0.28125q-0.28125 -0.15625 -0.515625 -0.375q-0.21875 -0.21875 -0.359375 -0.515625q-0.140625 -0.3125 -0.140625 -0.75q0 -0.375 0.140625 -0.71875q0.15625 -0.359375 0.453125 -0.609375q0.296875 -0.265625 0.734375 -0.421875q0.4375 -0.15625 1.015625 -0.15625q0.265625 0 0.515625 0.046875q0.265625 0.03125 0.46875 0.09375q0.203125 0.0625 0.34375 0.140625q0.15625 0.078125 0.234375 0.140625q0.078125 0.046875 0.09375 0.09375q0.03125 0.046875 0.03125 0.109375q0.015625 0.046875 0.03125 0.125q0.015625 0.078125 0.015625 0.1875q0 0.125 -0.015625 0.21875q-0.015625 0.078125 -0.046875 0.140625q-0.015625 0.0625 -0.046875 0.09375q-0.03125 0.015625 -0.078125 0.015625q-0.0625 0 -0.1875 -0.078125q-0.125 -0.078125 -0.328125 -0.171875q-0.1875 -0.09375 -0.453125 -0.171875q-0.25 -0.078125 -0.59375 -0.078125q-0.296875 0 -0.53125 0.078125q-0.21875 0.0625 -0.375 0.1875q-0.140625 0.125 -0.21875 0.296875q-0.0625 0.171875 -0.0625 0.375q0 0.28125 0.140625 0.46875q0.140625 0.1875 0.359375 0.328125q0.234375 0.140625 0.53125 0.265625q0.296875 0.109375 0.59375 0.234375q0.3125 0.125 0.609375 0.28125q0.296875 0.140625 0.515625 0.359375q0.234375 0.203125 0.375 0.515625q0.140625 0.296875 0.140625 0.703125z" fill-rule="nonzero"/><path fill="#000000" d="m680.6196 458.70847q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.171875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.03125 -0.046875 -0.03125 -0.09375l0 -3.78125q0 -0.546875 -0.09375 -0.875q-0.078125 -0.34375 -0.25 -0.578125q-0.15625 -0.25 -0.421875 -0.375q-0.25 -0.140625 -0.59375 -0.140625q-0.4375 0 -0.890625 0.328125q-0.4375 0.3125 -0.921875 0.90625l0 4.515625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -9.5625q0 -0.0625 0.015625 -0.109375q0.03125 -0.046875 0.09375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.109375l0 3.859375q0.5 -0.546875 1.015625 -0.796875q0.515625 -0.265625 1.046875 -0.265625q0.640625 0 1.078125 0.21875q0.4375 0.21875 0.703125 0.578125q0.28125 0.359375 0.390625 0.859375q0.125 0.484375 0.125 1.1875l0 3.921875zm3.3408813 0q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 6.453125zm0.125 -8.625q0 0.421875 -0.15625 0.578125q-0.15625 0.140625 -0.578125 0.140625q-0.40625 0 -0.5625 -0.140625q-0.15625 -0.15625 -0.15625 -0.5625q0 -0.421875 0.15625 -0.5625q0.15625 -0.15625 0.578125 -0.15625q0.421875 0 0.5625 0.15625q0.15625 0.140625 0.15625 0.546875zm7.4259644 2.46875q0 0.25 -0.0625 0.359375q-0.0625 0.109375 -0.171875 0.109375l-0.921875 0q0.25 0.265625 0.34375 0.578125q0.109375 0.3125 0.109375 0.640625q0 0.5625 -0.1875 1.0q-0.171875 0.421875 -0.515625 0.71875q-0.328125 0.296875 -0.78125 0.453125q-0.453125 0.15625 -1.015625 0.15625q-0.390625 0 -0.75 -0.09375q-0.359375 -0.109375 -0.546875 -0.265625q-0.125 0.125 -0.21875 0.296875q-0.078125 0.15625 -0.078125 0.375q0 0.25 0.234375 0.421875q0.234375 0.15625 0.625 0.171875l1.671875 0.0625q0.484375 0.015625 0.875 0.140625q0.40625 0.109375 0.703125 0.328125q0.296875 0.21875 0.453125 0.546875q0.171875 0.3125 0.171875 0.734375q0 0.453125 -0.1875 0.84375q-0.1875 0.40625 -0.578125 0.703125q-0.375 0.3125 -0.96875 0.484375q-0.59375 0.171875 -1.40625 0.171875q-0.78125 0 -1.328125 -0.140625q-0.546875 -0.125 -0.90625 -0.359375q-0.34375 -0.21875 -0.5 -0.546875q-0.15625 -0.3125 -0.15625 -0.6875q0 -0.234375 0.0625 -0.453125q0.0625 -0.21875 0.171875 -0.421875q0.125 -0.203125 0.296875 -0.375q0.171875 -0.1875 0.40625 -0.375q-0.359375 -0.171875 -0.53125 -0.4375q-0.15625 -0.28125 -0.15625 -0.59375q0 -0.4375 0.171875 -0.78125q0.1875 -0.34375 0.453125 -0.609375q-0.234375 -0.265625 -0.359375 -0.59375q-0.125 -0.34375 -0.125 -0.8125q0 -0.546875 0.1875 -0.984375q0.1875 -0.4375 0.515625 -0.734375q0.328125 -0.3125 0.78125 -0.46875q0.46875 -0.15625 1.015625 -0.15625q0.296875 0 0.546875 0.03125q0.25 0.03125 0.46875 0.078125l1.953125 0q0.125 0 0.171875 0.125q0.0625 0.125 0.0625 0.359375zm-1.84375 1.703125q0 -0.65625 -0.359375 -1.03125q-0.359375 -0.375 -1.03125 -0.375q-0.34375 0 -0.59375 0.125q-0.25 0.109375 -0.421875 0.3125q-0.171875 0.203125 -0.25 0.46875q-0.078125 0.25 -0.078125 0.53125q0 0.640625 0.359375 1.015625q0.359375 0.359375 1.015625 0.359375q0.34375 0 0.59375 -0.109375q0.265625 -0.109375 0.4375 -0.296875q0.171875 -0.203125 0.25 -0.453125q0.078125 -0.265625 0.078125 -0.546875zm0.59375 5.09375q0 -0.40625 -0.34375 -0.625q-0.328125 -0.234375 -0.90625 -0.25l-1.671875 -0.0625q-0.234375 0.1875 -0.375 0.34375q-0.140625 0.15625 -0.234375 0.296875q-0.078125 0.15625 -0.125 0.296875q-0.03125 0.140625 -0.03125 0.296875q0 0.46875 0.46875 0.703125q0.484375 0.234375 1.328125 0.234375q0.53125 0 0.890625 -0.109375q0.375 -0.09375 0.59375 -0.265625q0.21875 -0.171875 0.3125 -0.390625q0.09375 -0.21875 0.09375 -0.46875zm8.320618 -0.640625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.171875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.03125 -0.046875 -0.03125 -0.09375l0 -3.78125q0 -0.546875 -0.09375 -0.875q-0.078125 -0.34375 -0.25 -0.578125q-0.15625 -0.25 -0.421875 -0.375q-0.25 -0.140625 -0.59375 -0.140625q-0.4375 0 -0.890625 0.328125q-0.4375 0.3125 -0.921875 0.90625l0 4.515625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -9.5625q0 -0.0625 0.015625 -0.109375q0.03125 -0.046875 0.09375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.109375l0 3.859375q0.5 -0.546875 1.015625 -0.796875q0.515625 -0.265625 1.046875 -0.265625q0.640625 0 1.078125 0.21875q0.4375 0.21875 0.703125 0.578125q0.28125 0.359375 0.390625 0.859375q0.125 0.484375 0.125 1.1875l0 3.921875zm6.654297 0q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -9.5625q0 -0.0625 0.015625 -0.109375q0.03125 -0.046875 0.09375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.109375l0 9.5625zm7.6760254 -3.5q0 0.265625 -0.140625 0.390625q-0.140625 0.125 -0.3125 0.125l-4.234375 0q0 0.53125 0.109375 0.96875q0.109375 0.421875 0.359375 0.734375q0.25 0.296875 0.640625 0.46875q0.40625 0.15625 0.984375 0.15625q0.46875 0 0.828125 -0.0625q0.359375 -0.078125 0.609375 -0.171875q0.265625 -0.09375 0.4375 -0.171875q0.171875 -0.078125 0.25 -0.078125q0.046875 0 0.078125 0.03125q0.046875 0.015625 0.0625 0.078125q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125q0 0.09375 0 0.171875q0 0.0625 -0.015625 0.125q-0.015625 0.046875 -0.046875 0.09375q-0.015625 0.046875 -0.0625 0.09375q-0.03125 0.03125 -0.234375 0.125q-0.1875 0.078125 -0.5 0.171875q-0.296875 0.078125 -0.703125 0.140625q-0.40625 0.078125 -0.859375 0.078125q-0.796875 0 -1.40625 -0.21875q-0.59375 -0.234375 -1.0 -0.671875q-0.40625 -0.4375 -0.609375 -1.09375q-0.203125 -0.65625 -0.203125 -1.53125q0 -0.828125 0.203125 -1.484375q0.21875 -0.671875 0.625 -1.125q0.40625 -0.46875 0.96875 -0.703125q0.578125 -0.25 1.28125 -0.25q0.765625 0 1.296875 0.25q0.53125 0.234375 0.875 0.65625q0.34375 0.40625 0.5 0.96875q0.171875 0.546875 0.171875 1.171875l0 0.21875zm-1.1875 -0.359375q0.015625 -0.921875 -0.421875 -1.453125q-0.421875 -0.53125 -1.28125 -0.53125q-0.4375 0 -0.765625 0.171875q-0.328125 0.15625 -0.546875 0.4375q-0.21875 0.265625 -0.34375 0.625q-0.125 0.359375 -0.140625 0.75l3.5 0zm8.261047 -2.609375q0 0.03125 0 0.0625q0 0.03125 -0.015625 0.078125q0 0.03125 -0.015625 0.078125q-0.015625 0.03125 -0.03125 0.09375l-2.1875 6.109375q-0.03125 0.078125 -0.078125 0.140625q-0.046875 0.046875 -0.140625 0.078125q-0.09375 0.015625 -0.234375 0.03125q-0.140625 0.015625 -0.359375 0.015625q-0.21875 0 -0.359375 -0.015625q-0.140625 -0.015625 -0.234375 -0.046875q-0.078125 -0.03125 -0.140625 -0.078125q-0.046875 -0.046875 -0.078125 -0.125l-2.1875 -6.109375q-0.03125 -0.09375 -0.046875 -0.15625q-0.015625 -0.0625 -0.015625 -0.09375q0 -0.03125 0 -0.0625q0 -0.046875 0.015625 -0.09375q0.03125 -0.046875 0.09375 -0.0625q0.078125 -0.03125 0.1875 -0.03125q0.109375 -0.015625 0.28125 -0.015625q0.203125 0 0.328125 0.015625q0.125 0.015625 0.1875 0.046875q0.078125 0.015625 0.109375 0.0625q0.03125 0.046875 0.0625 0.109375l1.8125 5.3125l0.03125 0.078125l0.015625 -0.078125l1.796875 -5.3125q0.015625 -0.0625 0.046875 -0.109375q0.046875 -0.046875 0.109375 -0.0625q0.0625 -0.03125 0.171875 -0.046875q0.125 -0.015625 0.328125 -0.015625q0.15625 0 0.265625 0.015625q0.109375 0 0.171875 0.03125q0.0625 0.03125 0.078125 0.078125q0.03125 0.03125 0.03125 0.078125zm6.83844 2.96875q0 0.265625 -0.140625 0.390625q-0.140625 0.125 -0.3125 0.125l-4.234375 0q0 0.53125 0.109375 0.96875q0.109375 0.421875 0.359375 0.734375q0.25 0.296875 0.640625 0.46875q0.40625 0.15625 0.984375 0.15625q0.46875 0 0.828125 -0.0625q0.359375 -0.078125 0.609375 -0.171875q0.265625 -0.09375 0.4375 -0.171875q0.171875 -0.078125 0.25 -0.078125q0.046875 0 0.078125 0.03125q0.046875 0.015625 0.0625 0.078125q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125q0 0.09375 0 0.171875q0 0.0625 -0.015625 0.125q-0.015625 0.046875 -0.046875 0.09375q-0.015625 0.046875 -0.0625 0.09375q-0.03125 0.03125 -0.234375 0.125q-0.1875 0.078125 -0.5 0.171875q-0.296875 0.078125 -0.703125 0.140625q-0.40625 0.078125 -0.859375 0.078125q-0.796875 0 -1.40625 -0.21875q-0.59375 -0.234375 -1.0 -0.671875q-0.40625 -0.4375 -0.609375 -1.09375q-0.203125 -0.65625 -0.203125 -1.53125q0 -0.828125 0.203125 -1.484375q0.21875 -0.671875 0.625 -1.125q0.40625 -0.46875 0.96875 -0.703125q0.578125 -0.25 1.28125 -0.25q0.765625 0 1.296875 0.25q0.53125 0.234375 0.875 0.65625q0.34375 0.40625 0.5 0.96875q0.171875 0.546875 0.171875 1.171875l0 0.21875zm-1.1875 -0.359375q0.015625 -0.921875 -0.421875 -1.453125q-0.421875 -0.53125 -1.28125 -0.53125q-0.4375 0 -0.765625 0.171875q-0.328125 0.15625 -0.546875 0.4375q-0.21875 0.265625 -0.34375 0.625q-0.125 0.359375 -0.140625 0.75l3.5 0zm4.1672974 3.859375q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -9.5625q0 -0.0625 0.015625 -0.109375q0.03125 -0.046875 0.09375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.109375l0 9.5625zm10.770691 -6.46875q0 0.03125 0 0.0625q0 0.03125 -0.015625 0.078125q0 0.03125 -0.015625 0.078125q-0.015625 0.03125 -0.03125 0.09375l-2.1875 6.109375q-0.03125 0.078125 -0.078125 0.140625q-0.046875 0.046875 -0.140625 0.078125q-0.09375 0.015625 -0.234375 0.03125q-0.140625 0.015625 -0.359375 0.015625q-0.21875 0 -0.359375 -0.015625q-0.140625 -0.015625 -0.234375 -0.046875q-0.078125 -0.03125 -0.140625 -0.078125q-0.046875 -0.046875 -0.078125 -0.125l-2.1875 -6.109375q-0.03125 -0.09375 -0.046875 -0.15625q-0.015625 -0.0625 -0.015625 -0.09375q0 -0.03125 0 -0.0625q0 -0.046875 0.015625 -0.09375q0.03125 -0.046875 0.09375 -0.0625q0.078125 -0.03125 0.1875 -0.03125q0.109375 -0.015625 0.28125 -0.015625q0.203125 0 0.328125 0.015625q0.125 0.015625 0.1875 0.046875q0.078125 0.015625 0.109375 0.0625q0.03125 0.046875 0.0625 0.109375l1.8125 5.3125l0.03125 0.078125l0.015625 -0.078125l1.796875 -5.3125q0.015625 -0.0625 0.046875 -0.109375q0.046875 -0.046875 0.109375 -0.0625q0.0625 -0.03125 0.171875 -0.046875q0.125 -0.015625 0.328125 -0.015625q0.15625 0 0.265625 0.015625q0.109375 0 0.171875 0.03125q0.0625 0.03125 0.078125 0.078125q0.03125 0.03125 0.03125 0.078125zm2.525879 6.46875q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 6.453125zm0.125 -8.625q0 0.421875 -0.15625 0.578125q-0.15625 0.140625 -0.578125 0.140625q-0.40625 0 -0.5625 -0.140625q-0.15625 -0.15625 -0.15625 -0.5625q0 -0.421875 0.15625 -0.5625q0.15625 -0.15625 0.578125 -0.15625q0.421875 0 0.5625 0.15625q0.15625 0.140625 0.15625 0.546875zm6.0978394 6.859375q0 0.5 -0.1875 0.890625q-0.1875 0.375 -0.53125 0.640625q-0.328125 0.265625 -0.796875 0.40625q-0.453125 0.140625 -1.015625 0.140625q-0.34375 0 -0.65625 -0.0625q-0.3125 -0.046875 -0.5625 -0.125q-0.234375 -0.09375 -0.40625 -0.171875q-0.171875 -0.09375 -0.25 -0.15625q-0.078125 -0.078125 -0.125 -0.203125q-0.03125 -0.140625 -0.03125 -0.359375q0 -0.140625 0.015625 -0.234375q0.015625 -0.09375 0.03125 -0.140625q0.03125 -0.0625 0.0625 -0.078125q0.046875 -0.03125 0.09375 -0.03125q0.078125 0 0.234375 0.09375q0.15625 0.09375 0.375 0.21875q0.234375 0.109375 0.53125 0.203125q0.3125 0.09375 0.71875 0.09375q0.296875 0 0.53125 -0.0625q0.25 -0.0625 0.421875 -0.1875q0.1875 -0.125 0.28125 -0.3125q0.09375 -0.203125 0.09375 -0.46875q0 -0.265625 -0.140625 -0.453125q-0.140625 -0.1875 -0.375 -0.328125q-0.21875 -0.140625 -0.515625 -0.25q-0.28125 -0.109375 -0.59375 -0.234375q-0.296875 -0.125 -0.59375 -0.28125q-0.28125 -0.15625 -0.515625 -0.375q-0.21875 -0.21875 -0.359375 -0.515625q-0.140625 -0.3125 -0.140625 -0.75q0 -0.375 0.140625 -0.71875q0.15625 -0.359375 0.453125 -0.609375q0.296875 -0.265625 0.734375 -0.421875q0.4375 -0.15625 1.015625 -0.15625q0.265625 0 0.515625 0.046875q0.265625 0.03125 0.46875 0.09375q0.203125 0.0625 0.34375 0.140625q0.15625 0.078125 0.234375 0.140625q0.078125 0.046875 0.09375 0.09375q0.03125 0.046875 0.03125 0.109375q0.015625 0.046875 0.03125 0.125q0.015625 0.078125 0.015625 0.1875q0 0.125 -0.015625 0.21875q-0.015625 0.078125 -0.046875 0.140625q-0.015625 0.0625 -0.046875 0.09375q-0.03125 0.015625 -0.078125 0.015625q-0.0625 0 -0.1875 -0.078125q-0.125 -0.078125 -0.328125 -0.171875q-0.1875 -0.09375 -0.453125 -0.171875q-0.25 -0.078125 -0.59375 -0.078125q-0.296875 0 -0.53125 0.078125q-0.21875 0.0625 -0.375 0.1875q-0.140625 0.125 -0.21875 0.296875q-0.0625 0.171875 -0.0625 0.375q0 0.28125 0.140625 0.46875q0.140625 0.1875 0.359375 0.328125q0.234375 0.140625 0.53125 0.265625q0.296875 0.109375 0.59375 0.234375q0.3125 0.125 0.609375 0.28125q0.296875 0.140625 0.515625 0.359375q0.234375 0.203125 0.375 0.515625q0.140625 0.296875 0.140625 0.703125zm2.8729248 1.765625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 6.453125zm0.125 -8.625q0 0.421875 -0.15625 0.578125q-0.15625 0.140625 -0.578125 0.140625q-0.40625 0 -0.5625 -0.140625q-0.15625 -0.15625 -0.15625 -0.5625q0 -0.421875 0.15625 -0.5625q0.15625 -0.15625 0.578125 -0.15625q0.421875 0 0.5625 0.15625q0.15625 0.140625 0.15625 0.546875zm7.9728394 5.3125q0 0.84375 -0.1875 1.515625q-0.171875 0.65625 -0.53125 1.140625q-0.34375 0.46875 -0.859375 0.71875q-0.515625 0.25 -1.1875 0.25q-0.3125 0 -0.578125 -0.0625q-0.25 -0.0625 -0.5 -0.1875q-0.25 -0.140625 -0.5 -0.34375q-0.25 -0.21875 -0.53125 -0.515625l0 0.796875q0 0.046875 -0.03125 0.09375q-0.03125 0.046875 -0.09375 0.078125q-0.0625 0.015625 -0.15625 0.03125q-0.09375 0.015625 -0.25 0.015625q-0.140625 0 -0.25 -0.015625q-0.09375 -0.015625 -0.15625 -0.03125q-0.0625 -0.03125 -0.09375 -0.078125q-0.015625 -0.046875 -0.015625 -0.09375l0 -9.5625q0 -0.0625 0.015625 -0.109375q0.03125 -0.046875 0.09375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.109375l0 3.859375q0.28125 -0.296875 0.546875 -0.5q0.265625 -0.203125 0.515625 -0.328125q0.265625 -0.125 0.515625 -0.171875q0.265625 -0.0625 0.5625 -0.0625q0.6875 0 1.1875 0.28125q0.5 0.265625 0.8125 0.734375q0.3125 0.46875 0.453125 1.109375q0.140625 0.625 0.140625 1.328125zm-1.234375 0.140625q0 -0.5 -0.078125 -0.953125q-0.078125 -0.46875 -0.265625 -0.828125q-0.1875 -0.359375 -0.5 -0.578125q-0.296875 -0.21875 -0.765625 -0.21875q-0.21875 0 -0.453125 0.0625q-0.21875 0.0625 -0.453125 0.21875q-0.21875 0.140625 -0.46875 0.375q-0.234375 0.234375 -0.515625 0.59375l0 2.578125q0.484375 0.59375 0.921875 0.90625q0.453125 0.3125 0.921875 0.3125q0.453125 0 0.765625 -0.21875q0.3125 -0.21875 0.5 -0.5625q0.203125 -0.359375 0.296875 -0.796875q0.09375 -0.4375 0.09375 -0.890625zm4.2002563 3.171875q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 6.453125zm0.125 -8.625q0 0.421875 -0.15625 0.578125q-0.15625 0.140625 -0.578125 0.140625q-0.40625 0 -0.5625 -0.140625q-0.15625 -0.15625 -0.15625 -0.5625q0 -0.421875 0.15625 -0.5625q0.15625 -0.15625 0.578125 -0.15625q0.421875 0 0.5625 0.15625q0.15625 0.140625 0.15625 0.546875zm3.2385254 8.625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -9.5625q0 -0.0625 0.015625 -0.109375q0.03125 -0.046875 0.09375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.109375l0 9.5625zm3.3634644 0q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 6.453125zm0.125 -8.625q0 0.421875 -0.15625 0.578125q-0.15625 0.140625 -0.578125 0.140625q-0.40625 0 -0.5625 -0.140625q-0.15625 -0.15625 -0.15625 -0.5625q0 -0.421875 0.15625 -0.5625q0.15625 -0.15625 0.578125 -0.15625q0.421875 0 0.5625 0.15625q0.15625 0.140625 0.15625 0.546875zm5.3947754 8.140625q0 0.21875 -0.03125 0.34375q-0.015625 0.109375 -0.078125 0.171875q-0.0625 0.0625 -0.171875 0.109375q-0.109375 0.046875 -0.265625 0.078125q-0.140625 0.03125 -0.3125 0.046875q-0.15625 0.03125 -0.328125 0.03125q-0.5 0 -0.859375 -0.125q-0.34375 -0.140625 -0.578125 -0.40625q-0.234375 -0.28125 -0.34375 -0.6875q-0.09375 -0.40625 -0.09375 -0.96875l0 -3.765625l-0.90625 0q-0.109375 0 -0.171875 -0.109375q-0.0625 -0.109375 -0.0625 -0.375q0 -0.140625 0.015625 -0.234375q0.015625 -0.09375 0.046875 -0.140625q0.03125 -0.0625 0.078125 -0.09375q0.046875 -0.03125 0.109375 -0.03125l0.890625 0l0 -1.53125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.28125 -0.015625q0.1875 0 0.296875 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 1.53125l1.640625 0q0.0625 0 0.09375 0.03125q0.046875 0.03125 0.078125 0.09375q0.046875 0.046875 0.046875 0.140625q0.015625 0.09375 0.015625 0.234375q0 0.265625 -0.0625 0.375q-0.0625 0.109375 -0.171875 0.109375l-1.640625 0l0 3.59375q0 0.671875 0.1875 1.015625q0.203125 0.328125 0.703125 0.328125q0.171875 0 0.296875 -0.03125q0.125 -0.03125 0.21875 -0.0625q0.109375 -0.03125 0.171875 -0.0625q0.078125 -0.046875 0.140625 -0.046875q0.03125 0 0.0625 0.03125q0.03125 0.015625 0.046875 0.0625q0.03125 0.046875 0.03125 0.140625q0.015625 0.078125 0.015625 0.203125zm4.5029907 0.65625l-0.859375 2.375q-0.046875 0.109375 -0.21875 0.171875q-0.171875 0.0625 -0.53125 0.0625q-0.1875 0 -0.3125 -0.03125q-0.109375 -0.015625 -0.171875 -0.0625q-0.0625 -0.03125 -0.0625 -0.109375q0 -0.0625 0.03125 -0.171875l0.890625 -2.234375q-0.0625 -0.03125 -0.125 -0.09375q-0.046875 -0.0625 -0.078125 -0.140625l-2.296875 -6.15625q-0.046875 -0.140625 -0.046875 -0.21875q0 -0.09375 0.046875 -0.140625q0.0625 -0.0625 0.1875 -0.078125q0.125 -0.015625 0.34375 -0.015625q0.21875 0 0.328125 0.015625q0.125 0.015625 0.203125 0.046875q0.078125 0.015625 0.109375 0.078125q0.03125 0.046875 0.0625 0.140625l1.84375 5.171875l0.015625 0l1.78125 -5.203125q0.03125 -0.140625 0.09375 -0.171875q0.0625 -0.046875 0.1875 -0.0625q0.125 -0.015625 0.34375 -0.015625q0.203125 0 0.328125 0.015625q0.140625 0.015625 0.203125 0.078125q0.0625 0.046875 0.0625 0.140625q0 0.078125 -0.046875 0.203125l-2.3125 6.40625zm11.869263 -0.171875q0 0.09375 -0.0625 0.140625q-0.0625 0.03125 -0.171875 0.046875q-0.09375 0.03125 -0.28125 0.03125q-0.1875 0 -0.296875 -0.03125q-0.109375 -0.015625 -0.15625 -0.046875q-0.046875 -0.046875 -0.046875 -0.140625l0 -0.640625q-0.421875 0.453125 -0.953125 0.703125q-0.515625 0.25 -1.09375 0.25q-0.5 0 -0.921875 -0.140625q-0.40625 -0.125 -0.703125 -0.375q-0.28125 -0.25 -0.453125 -0.609375q-0.15625 -0.375 -0.15625 -0.84375q0 -0.546875 0.21875 -0.9375q0.234375 -0.40625 0.640625 -0.671875q0.421875 -0.265625 1.015625 -0.390625q0.609375 -0.140625 1.359375 -0.140625l0.875 0l0 -0.5q0 -0.375 -0.078125 -0.65625q-0.078125 -0.28125 -0.25 -0.46875q-0.171875 -0.203125 -0.453125 -0.296875q-0.28125 -0.09375 -0.6875 -0.09375q-0.4375 0 -0.78125 0.109375q-0.34375 0.09375 -0.609375 0.21875q-0.265625 0.125 -0.4375 0.234375q-0.171875 0.109375 -0.265625 0.109375q-0.046875 0 -0.09375 -0.03125q-0.046875 -0.03125 -0.078125 -0.078125q-0.03125 -0.0625 -0.046875 -0.15625q-0.015625 -0.09375 -0.015625 -0.203125q0 -0.171875 0.015625 -0.265625q0.03125 -0.109375 0.125 -0.203125q0.109375 -0.09375 0.34375 -0.21875q0.234375 -0.125 0.53125 -0.234375q0.3125 -0.109375 0.671875 -0.171875q0.375 -0.0625 0.75 -0.0625q0.6875 0 1.171875 0.15625q0.5 0.15625 0.796875 0.46875q0.296875 0.296875 0.4375 0.75q0.140625 0.453125 0.140625 1.046875l0 4.34375zm-1.1875 -2.9375l-1.0 0q-0.484375 0 -0.84375 0.078125q-0.359375 0.078125 -0.59375 0.25q-0.234375 0.15625 -0.34375 0.390625q-0.109375 0.21875 -0.109375 0.515625q0 0.5 0.3125 0.796875q0.3125 0.296875 0.890625 0.296875q0.46875 0 0.859375 -0.234375q0.40625 -0.25 0.828125 -0.734375l0 -1.359375zm8.895386 2.9375q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.171875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.03125 -0.046875 -0.03125 -0.09375l0 -3.78125q0 -0.546875 -0.09375 -0.875q-0.078125 -0.34375 -0.25 -0.578125q-0.15625 -0.25 -0.421875 -0.375q-0.25 -0.140625 -0.59375 -0.140625q-0.4375 0 -0.890625 0.328125q-0.4375 0.3125 -0.921875 0.90625l0 4.515625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.0625 -0.03125 0.15625 -0.046875q0.109375 -0.015625 0.265625 -0.015625q0.171875 0 0.265625 0.015625q0.109375 0.015625 0.15625 0.046875q0.0625 0.03125 0.078125 0.078125q0.03125 0.03125 0.03125 0.078125l0 0.859375q0.546875 -0.609375 1.078125 -0.890625q0.546875 -0.28125 1.109375 -0.28125q0.640625 0 1.078125 0.21875q0.4375 0.21875 0.703125 0.578125q0.28125 0.359375 0.390625 0.859375q0.125 0.484375 0.125 1.171875l0 3.9375zm7.6690063 0q0 0.046875 -0.03125 0.09375q-0.015625 0.046875 -0.078125 0.078125q-0.0625 0.015625 -0.171875 0.03125q-0.09375 0.015625 -0.234375 0.015625q-0.140625 0 -0.25 -0.015625q-0.09375 -0.015625 -0.15625 -0.03125q-0.0625 -0.03125 -0.09375 -0.078125q-0.03125 -0.046875 -0.03125 -0.09375l0 -0.859375q-0.515625 0.546875 -1.0625 0.859375q-0.546875 0.3125 -1.1875 0.3125q-0.71875 0 -1.21875 -0.28125q-0.5 -0.28125 -0.8125 -0.75q-0.3125 -0.46875 -0.453125 -1.09375q-0.140625 -0.640625 -0.140625 -1.34375q0 -0.828125 0.171875 -1.484375q0.1875 -0.671875 0.53125 -1.140625q0.359375 -0.484375 0.875 -0.734375q0.515625 -0.25 1.203125 -0.25q0.5625 0 1.03125 0.25q0.46875 0.234375 0.921875 0.71875l0 -3.75q0 -0.046875 0.015625 -0.09375q0.03125 -0.046875 0.109375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.109375 -0.015625 0.28125 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.09375l0 9.546875zm-1.1875 -4.53125q-0.484375 -0.59375 -0.9375 -0.90625q-0.4375 -0.3125 -0.921875 -0.3125q-0.453125 0 -0.765625 0.21875q-0.3125 0.203125 -0.515625 0.5625q-0.1875 0.34375 -0.28125 0.796875q-0.09375 0.4375 -0.09375 0.890625q0 0.484375 0.078125 0.953125q0.078125 0.46875 0.265625 0.828125q0.1875 0.359375 0.484375 0.578125q0.3125 0.21875 0.78125 0.21875q0.234375 0 0.453125 -0.0625q0.21875 -0.0625 0.4375 -0.203125q0.234375 -0.15625 0.484375 -0.390625q0.25 -0.25 0.53125 -0.59375l0 -2.578125zm12.201172 4.53125q0 0.046875 -0.03125 0.09375q-0.015625 0.046875 -0.078125 0.078125q-0.0625 0.015625 -0.171875 0.03125q-0.09375 0.015625 -0.234375 0.015625q-0.140625 0 -0.25 -0.015625q-0.09375 -0.015625 -0.15625 -0.03125q-0.0625 -0.03125 -0.09375 -0.078125q-0.03125 -0.046875 -0.03125 -0.09375l0 -0.859375q-0.515625 0.546875 -1.0625 0.859375q-0.546875 0.3125 -1.1875 0.3125q-0.71875 0 -1.21875 -0.28125q-0.5 -0.28125 -0.8125 -0.75q-0.3125 -0.46875 -0.453125 -1.09375q-0.140625 -0.640625 -0.140625 -1.34375q0 -0.828125 0.171875 -1.484375q0.1875 -0.671875 0.53125 -1.140625q0.359375 -0.484375 0.875 -0.734375q0.515625 -0.25 1.203125 -0.25q0.5625 0 1.03125 0.25q0.46875 0.234375 0.921875 0.71875l0 -3.75q0 -0.046875 0.015625 -0.09375q0.03125 -0.046875 0.109375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.109375 -0.015625 0.28125 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.09375l0 9.546875zm-1.1875 -4.53125q-0.484375 -0.59375 -0.9375 -0.90625q-0.4375 -0.3125 -0.921875 -0.3125q-0.453125 0 -0.765625 0.21875q-0.3125 0.203125 -0.515625 0.5625q-0.1875 0.34375 -0.28125 0.796875q-0.09375 0.4375 -0.09375 0.890625q0 0.484375 0.078125 0.953125q0.078125 0.46875 0.265625 0.828125q0.1875 0.359375 0.484375 0.578125q0.3125 0.21875 0.78125 0.21875q0.234375 0 0.453125 -0.0625q0.21875 -0.0625 0.4375 -0.203125q0.234375 -0.15625 0.484375 -0.390625q0.25 -0.25 0.53125 -0.59375l0 -2.578125zm7.1377563 -1.5q0 0.15625 -0.015625 0.265625q0 0.109375 -0.03125 0.171875q-0.015625 0.0625 -0.046875 0.09375q-0.03125 0.03125 -0.078125 0.03125q-0.0625 0 -0.15625 -0.03125q-0.078125 -0.03125 -0.1875 -0.0625q-0.09375 -0.03125 -0.21875 -0.0625q-0.125 -0.03125 -0.28125 -0.03125q-0.171875 0 -0.34375 0.078125q-0.171875 0.0625 -0.375 0.234375q-0.1875 0.15625 -0.390625 0.4375q-0.203125 0.265625 -0.453125 0.65625l0 4.25q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.0625 -0.03125 0.15625 -0.046875q0.109375 -0.015625 0.265625 -0.015625q0.171875 0 0.265625 0.015625q0.109375 0.015625 0.15625 0.046875q0.0625 0.03125 0.078125 0.078125q0.03125 0.03125 0.03125 0.078125l0 0.9375q0.265625 -0.375 0.5 -0.625q0.234375 -0.25 0.4375 -0.375q0.21875 -0.140625 0.421875 -0.1875q0.203125 -0.0625 0.40625 -0.0625q0.09375 0 0.203125 0.015625q0.125 0 0.25 0.03125q0.140625 0.03125 0.234375 0.0625q0.109375 0.03125 0.140625 0.078125q0.046875 0.03125 0.0625 0.0625q0.015625 0.03125 0.03125 0.078125q0.015625 0.046875 0.015625 0.15625q0 0.09375 0 0.25zm2.5314941 6.03125q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.03125 0.09375 0.078125q0.03125 0.03125 0.03125 0.078125l0 6.453125zm0.125 -8.625q0 0.421875 -0.15625 0.578125q-0.15625 0.140625 -0.578125 0.140625q-0.40625 0 -0.5625 -0.140625q-0.15625 -0.15625 -0.15625 -0.5625q0 -0.421875 0.15625 -0.5625q0.15625 -0.15625 0.578125 -0.15625q0.421875 0 0.5625 0.15625q0.15625 0.140625 0.15625 0.546875zm3.2385254 8.625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -9.5625q0 -0.0625 0.015625 -0.109375q0.03125 -0.046875 0.09375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.109375l0 9.5625zm3.3634644 0q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -9.5625q0 -0.0625 0.015625 -0.109375q0.03125 -0.046875 0.09375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.109375l0 9.5625zm11.005005 0q0 0.046875 -0.03125 0.09375q-0.015625 0.046875 -0.078125 0.078125q-0.0625 0.015625 -0.171875 0.03125q-0.09375 0.015625 -0.234375 0.015625q-0.140625 0 -0.25 -0.015625q-0.09375 -0.015625 -0.15625 -0.03125q-0.0625 -0.03125 -0.09375 -0.078125q-0.03125 -0.046875 -0.03125 -0.09375l0 -0.859375q-0.515625 0.546875 -1.0625 0.859375q-0.546875 0.3125 -1.1875 0.3125q-0.71875 0 -1.21875 -0.28125q-0.5 -0.28125 -0.8125 -0.75q-0.3125 -0.46875 -0.453125 -1.09375q-0.140625 -0.640625 -0.140625 -1.34375q0 -0.828125 0.171875 -1.484375q0.1875 -0.671875 0.53125 -1.140625q0.359375 -0.484375 0.875 -0.734375q0.515625 -0.25 1.203125 -0.25q0.5625 0 1.03125 0.25q0.46875 0.234375 0.921875 0.71875l0 -3.75q0 -0.046875 0.015625 -0.09375q0.03125 -0.046875 0.109375 -0.0625q0.078125 -0.03125 0.1875 -0.046875q0.109375 -0.015625 0.28125 -0.015625q0.171875 0 0.28125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.03125 0.09375l0 9.546875zm-1.1875 -4.53125q-0.484375 -0.59375 -0.9375 -0.90625q-0.4375 -0.3125 -0.921875 -0.3125q-0.453125 0 -0.765625 0.21875q-0.3125 0.203125 -0.515625 0.5625q-0.1875 0.34375 -0.28125 0.796875q-0.09375 0.4375 -0.09375 0.890625q0 0.484375 0.078125 0.953125q0.078125 0.46875 0.265625 0.828125q0.1875 0.359375 0.484375 0.578125q0.3125 0.21875 0.78125 0.21875q0.234375 0 0.453125 -0.0625q0.21875 -0.0625 0.4375 -0.203125q0.234375 -0.15625 0.484375 -0.390625q0.25 -0.25 0.53125 -0.59375l0 -2.578125zm9.356506 1.234375q0 0.78125 -0.203125 1.453125q-0.203125 0.65625 -0.625 1.140625q-0.40625 0.46875 -1.03125 0.75q-0.609375 0.265625 -1.421875 0.265625q-0.796875 0 -1.390625 -0.234375q-0.59375 -0.25 -0.984375 -0.6875q-0.390625 -0.453125 -0.59375 -1.09375q-0.1875 -0.65625 -0.1875 -1.46875q0 -0.78125 0.203125 -1.4375q0.203125 -0.671875 0.609375 -1.140625q0.421875 -0.484375 1.03125 -0.75q0.625 -0.265625 1.4375 -0.265625q0.796875 0 1.390625 0.234375q0.59375 0.234375 0.984375 0.6875q0.390625 0.453125 0.578125 1.09375q0.203125 0.640625 0.203125 1.453125zm-1.234375 0.078125q0 -0.53125 -0.109375 -0.984375q-0.09375 -0.46875 -0.3125 -0.8125q-0.21875 -0.359375 -0.609375 -0.5625q-0.375 -0.203125 -0.9375 -0.203125q-0.515625 0 -0.890625 0.1875q-0.375 0.1875 -0.625 0.53125q-0.234375 0.328125 -0.359375 0.796875q-0.125 0.46875 -0.125 1.015625q0 0.53125 0.09375 1.0q0.109375 0.46875 0.328125 0.8125q0.234375 0.34375 0.609375 0.546875q0.375 0.203125 0.9375 0.203125q0.515625 0 0.890625 -0.1875q0.390625 -0.1875 0.625 -0.515625q0.25 -0.34375 0.359375 -0.796875q0.125 -0.46875 0.125 -1.03125zm11.994507 -3.25q0 0.0625 -0.015625 0.140625q-0.015625 0.0625 -0.046875 0.171875l-1.90625 6.109375q-0.015625 0.078125 -0.0625 0.140625q-0.046875 0.046875 -0.140625 0.078125q-0.078125 0.015625 -0.21875 0.03125q-0.140625 0.015625 -0.359375 0.015625q-0.21875 0 -0.375 -0.015625q-0.140625 -0.015625 -0.234375 -0.046875q-0.09375 -0.03125 -0.140625 -0.078125q-0.03125 -0.046875 -0.046875 -0.125l-1.359375 -4.671875l-0.015625 -0.0625l-0.015625 0.0625l-1.25 4.671875q-0.015625 0.078125 -0.0625 0.140625q-0.046875 0.046875 -0.140625 0.078125q-0.09375 0.015625 -0.25 0.03125q-0.140625 0.015625 -0.359375 0.015625q-0.21875 0 -0.359375 -0.015625q-0.140625 -0.015625 -0.234375 -0.046875q-0.078125 -0.03125 -0.125 -0.078125q-0.046875 -0.046875 -0.0625 -0.125l-1.890625 -6.109375q-0.03125 -0.109375 -0.046875 -0.171875q-0.015625 -0.078125 -0.015625 -0.140625q0 -0.0625 0.03125 -0.09375q0.03125 -0.046875 0.09375 -0.0625q0.078125 -0.03125 0.1875 -0.03125q0.109375 -0.015625 0.28125 -0.015625q0.203125 0 0.3125 0.015625q0.125 0.015625 0.1875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.046875 0.0625 0.109375l1.546875 5.3125l0.015625 0.0625l0.015625 -0.0625l1.421875 -5.3125q0.015625 -0.0625 0.046875 -0.109375q0.03125 -0.046875 0.09375 -0.0625q0.0625 -0.03125 0.171875 -0.046875q0.109375 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.109375 0.015625 0.171875 0.046875q0.0625 0.015625 0.09375 0.0625q0.03125 0.03125 0.046875 0.09375l1.53125 5.328125l0.015625 0.0625l0.015625 -0.0625l1.53125 -5.3125q0.015625 -0.0625 0.046875 -0.109375q0.03125 -0.046875 0.09375 -0.0625q0.0625 -0.03125 0.1875 -0.046875q0.125 -0.015625 0.296875 -0.015625q0.171875 0 0.28125 0.015625q0.109375 0 0.171875 0.03125q0.0625 0.03125 0.078125 0.0625q0.03125 0.03125 0.03125 0.09375zm7.0081787 6.46875q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.171875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.03125 -0.046875 -0.03125 -0.09375l0 -3.78125q0 -0.546875 -0.09375 -0.875q-0.078125 -0.34375 -0.25 -0.578125q-0.15625 -0.25 -0.421875 -0.375q-0.25 -0.140625 -0.59375 -0.140625q-0.4375 0 -0.890625 0.328125q-0.4375 0.3125 -0.921875 0.90625l0 4.515625q0 0.046875 -0.03125 0.09375q-0.03125 0.03125 -0.09375 0.0625q-0.0625 0.03125 -0.1875 0.046875q-0.109375 0.015625 -0.28125 0.015625q-0.171875 0 -0.296875 -0.015625q-0.109375 -0.015625 -0.1875 -0.046875q-0.0625 -0.03125 -0.09375 -0.0625q-0.015625 -0.046875 -0.015625 -0.09375l0 -6.453125q0 -0.046875 0.015625 -0.078125q0.03125 -0.046875 0.09375 -0.078125q0.0625 -0.03125 0.15625 -0.046875q0.109375 -0.015625 0.265625 -0.015625q0.171875 0 0.265625 0.015625q0.109375 0.015625 0.15625 0.046875q0.0625 0.03125 0.078125 0.078125q0.03125 0.03125 0.03125 0.078125l0 0.859375q0.546875 -0.609375 1.078125 -0.890625q0.546875 -0.28125 1.109375 -0.28125q0.640625 0 1.078125 0.21875q0.4375 0.21875 0.703125 0.578125q0.28125 0.359375 0.390625 0.859375q0.125 0.484375 0.125 1.171875l0 3.9375z" fill-rule="nonzero"/><path fill="#3c78d8" d="m36.524933 636.1417l159.14961 0l0 42.204712l-159.14961 0z" fill-rule="evenodd"/><path stroke="#38761d" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m36.524933 636.1417l159.14961 0l0 42.204712l-159.14961 0z" fill-rule="evenodd"/><path fill="#ffffff" d="m54.017708 646.7603l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm3.2109375 -3.6875l1.4375 -0.125q0.09375 0.859375 0.46875 1.421875q0.375 0.546875 1.15625 0.890625q0.78125 0.328125 1.75 0.328125q0.875 0 1.53125 -0.25q0.671875 -0.265625 0.984375 -0.703125q0.328125 -0.453125 0.328125 -0.984375q0 -0.546875 -0.3125 -0.9375q-0.3125 -0.40625 -1.03125 -0.6875q-0.453125 -0.171875 -2.03125 -0.546875q-1.578125 -0.390625 -2.21875 -0.71875q-0.8125 -0.4375 -1.21875 -1.0625q-0.40625 -0.640625 -0.40625 -1.4375q0 -0.859375 0.484375 -1.609375q0.5 -0.765625 1.4375 -1.15625q0.953125 -0.390625 2.109375 -0.390625q1.28125 0 2.25 0.421875q0.96875 0.40625 1.484375 1.203125q0.53125 0.796875 0.578125 1.796875l-1.453125 0.109375q-0.125 -1.078125 -0.796875 -1.625q-0.671875 -0.5625 -2.0 -0.5625q-1.375 0 -2.0 0.5q-0.625 0.5 -0.625 1.21875q0 0.609375 0.4375 1.015625q0.4375 0.390625 2.28125 0.8125q1.859375 0.421875 2.546875 0.734375q1.0 0.453125 1.46875 1.171875q0.484375 0.703125 0.484375 1.625q0 0.90625 -0.53125 1.71875q-0.515625 0.8125 -1.5 1.265625q-0.984375 0.453125 -2.203125 0.453125q-1.5625 0 -2.609375 -0.453125q-1.046875 -0.46875 -1.65625 -1.375q-0.59375 -0.90625 -0.625 -2.0625zm19.359375 -0.328125l1.515625 0.375q-0.46875 1.875 -1.71875 2.859375q-1.234375 0.984375 -3.015625 0.984375q-1.859375 0 -3.015625 -0.75q-1.15625 -0.765625 -1.765625 -2.1875q-0.609375 -1.4375 -0.609375 -3.078125q0 -1.796875 0.6875 -3.125q0.6875 -1.328125 1.9375 -2.015625q1.265625 -0.703125 2.78125 -0.703125q1.71875 0 2.890625 0.875q1.171875 0.875 1.640625 2.46875l-1.5 0.34375q-0.390625 -1.25 -1.15625 -1.8125q-0.75 -0.578125 -1.90625 -0.578125q-1.3125 0 -2.203125 0.640625q-0.890625 0.625 -1.25 1.703125q-0.359375 1.0625 -0.359375 2.1875q0 1.46875 0.421875 2.5625q0.4375 1.078125 1.328125 1.625q0.90625 0.53125 1.953125 0.53125q1.265625 0 2.140625 -0.734375q0.890625 -0.734375 1.203125 -2.171875zm2.8671875 0.328125l1.4375 -0.125q0.09375 0.859375 0.46875 1.421875q0.375 0.546875 1.15625 0.890625q0.78125 0.328125 1.75 0.328125q0.875 0 1.53125 -0.25q0.671875 -0.265625 0.984375 -0.703125q0.328125 -0.453125 0.328125 -0.984375q0 -0.546875 -0.3125 -0.9375q-0.3125 -0.40625 -1.03125 -0.6875q-0.453125 -0.171875 -2.03125 -0.546875q-1.578125 -0.390625 -2.21875 -0.71875q-0.8125 -0.4375 -1.21875 -1.0625q-0.40625 -0.640625 -0.40625 -1.4375q0 -0.859375 0.484375 -1.609375q0.5 -0.765625 1.4375 -1.15625q0.953125 -0.390625 2.109375 -0.390625q1.28125 0 2.25 0.421875q0.96875 0.40625 1.484375 1.203125q0.53125 0.796875 0.578125 1.796875l-1.453125 0.109375q-0.125 -1.078125 -0.796875 -1.625q-0.671875 -0.5625 -2.0 -0.5625q-1.375 0 -2.0 0.5q-0.625 0.5 -0.625 1.21875q0 0.609375 0.4375 1.015625q0.4375 0.390625 2.28125 0.8125q1.859375 0.421875 2.546875 0.734375q1.0 0.453125 1.46875 1.171875q0.484375 0.703125 0.484375 1.625q0 0.90625 -0.53125 1.71875q-0.515625 0.8125 -1.5 1.265625q-0.984375 0.453125 -2.203125 0.453125q-1.5625 0 -2.609375 -0.453125q-1.046875 -0.46875 -1.65625 -1.375q-0.59375 -0.90625 -0.625 -2.0625zm11.453125 3.6875l0 -11.453125l1.515625 0l0 11.453125l-1.515625 0zm16.796875 -4.015625l1.515625 0.375q-0.46875 1.875 -1.71875 2.859375q-1.234375 0.984375 -3.015625 0.984375q-1.859375 0 -3.015625 -0.75q-1.15625 -0.765625 -1.765625 -2.1875q-0.609375 -1.4375 -0.609375 -3.078125q0 -1.796875 0.6875 -3.125q0.6875 -1.328125 1.9375 -2.015625q1.265625 -0.703125 2.78125 -0.703125q1.71875 0 2.890625 0.875q1.171875 0.875 1.640625 2.46875l-1.5 0.34375q-0.390625 -1.25 -1.15625 -1.8125q-0.75 -0.578125 -1.90625 -0.578125q-1.3125 0 -2.203125 0.640625q-0.890625 0.625 -1.25 1.703125q-0.359375 1.0625 -0.359375 2.1875q0 1.46875 0.421875 2.5625q0.4375 1.078125 1.328125 1.625q0.90625 0.53125 1.953125 0.53125q1.265625 0 2.140625 -0.734375q0.890625 -0.734375 1.203125 -2.171875zm3.1796875 4.015625l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm3.5859375 -9.84375l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm9.2265625 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm7.8359375 4.953125l0 -8.296875l1.2656326 0l0 1.171875q0.90625 -1.359375 2.640625 -1.359375q0.75 0 1.375 0.265625q0.625 0.265625 0.9375 0.703125q0.3125 0.4375 0.4375 1.046875q0.078125 0.390625 0.078125 1.359375l0 5.109375l-1.40625 0l0 -5.046875q0 -0.859375 -0.171875 -1.28125q-0.15625 -0.4375 -0.578125 -0.6875q-0.40625 -0.25 -0.96875 -0.25q-0.90625 0 -1.5625 0.578125q-0.640625 0.5625 -0.640625 2.15625l0 4.53125l-1.4062576 0zm11.960945 -1.265625l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm5.9375 1.265625l0 -11.453125l1.515625 0l0 10.09375l5.640625 0l0 1.359375l-7.15625 0zm8.2578125 -4.15625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm13.382797 3.125q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.3749847 0 -2.1093597 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.2499847 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.4687347 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.81248474 -0.296875 1.8749847 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.2343597 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.2499847 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm8.9765625 4.171875l0 -1.046875q-0.78125 1.234375 -2.3125 1.234375q-1.0 0 -1.828125 -0.546875q-0.828125 -0.546875 -1.296875 -1.53125q-0.453125 -0.984375 -0.453125 -2.25q0 -1.25 0.40625 -2.25q0.421875 -1.015625 1.25 -1.546875q0.828125 -0.546875 1.859375 -0.546875q0.75 0 1.328125 0.3125q0.59375 0.3125 0.953125 0.828125l0 -4.109375l1.40625 0l0 11.453125l-1.3125 0zm-4.4375 -4.140625q0 1.59375 0.671875 2.390625q0.671875 0.78125 1.578125 0.78125q0.921875 0 1.5625 -0.75q0.65625 -0.765625 0.65625 -2.3125q0 -1.703125 -0.65625 -2.5q-0.65625 -0.796875 -1.625 -0.796875q-0.9375 0 -1.5625 0.765625q-0.625 0.765625 -0.625 2.421875z" fill-rule="nonzero"/><path fill="#ffffff" d="m51.73179 664.7653q-0.28125 0 -0.484375 -0.1875q-0.203125 -0.1875 -0.203125 -0.515625q0 -0.328125 0.203125 -0.515625q0.203125 -0.203125 0.484375 -0.203125q0.28125 0 0.46875 0.203125q0.203125 0.1875 0.203125 0.515625q0 0.328125 -0.203125 0.515625q-0.1875 0.1875 -0.46875 0.1875zm-0.234375 1.515625l-1.421875 0l0 -0.734375l2.296875 0l0 3.03125q0 0.734375 0.203125 0.984375q0.203125 0.25 0.609375 0.25q0.3125 0 0.5625 -0.078125q0.265625 -0.078125 0.421875 -0.15625l0.125 0.75q-0.0625 0.03125 -0.1875 0.078125q-0.109375 0.046875 -0.265625 0.078125q-0.15625 0.046875 -0.34375 0.078125q-0.1875 0.046875 -0.390625 0.046875q-0.46875 0 -0.78125 -0.125q-0.296875 -0.140625 -0.484375 -0.390625q-0.1875 -0.265625 -0.265625 -0.640625q-0.078125 -0.375 -0.078125 -0.875l0 -2.296875zm7.062561 2.96875q0 -0.265625 -0.21875 -0.4375q-0.21875 -0.171875 -0.546875 -0.296875q-0.3125 -0.125 -0.703125 -0.25q-0.375 -0.125 -0.703125 -0.296875q-0.328125 -0.1875 -0.546875 -0.453125q-0.21875 -0.265625 -0.21875 -0.703125q0 -0.59375 0.484375 -0.984375q0.484375 -0.40625 1.515625 -0.40625q0.40625 0 0.84375 0.0625q0.4375 0.0625 0.734375 0.15625l-0.15625 0.78125q-0.078125 -0.046875 -0.234375 -0.09375q-0.140625 -0.046875 -0.34375 -0.078125q-0.1875 -0.03125 -0.40625 -0.046875q-0.21875 -0.03125 -0.421875 -0.03125q-1.15625 0 -1.15625 0.625q0 0.21875 0.21875 0.375q0.21875 0.15625 0.546875 0.28125q0.34375 0.125 0.71875 0.265625q0.390625 0.140625 0.71875 0.328125q0.328125 0.1875 0.546875 0.46875q0.21875 0.265625 0.21875 0.671875q0 0.671875 -0.53125 1.046875q-0.515625 0.375 -1.640625 0.375q-0.515625 0 -0.9375 -0.09375q-0.421875 -0.078125 -0.8125 -0.25l0.171875 -0.796875q0.375 0.15625 0.78125 0.28125q0.40625 0.109375 0.875 0.109375q1.203125 0 1.203125 -0.609375zm2.109436 -1.234375q0 -0.671875 0.21875 -1.15625q0.21875 -0.484375 0.578125 -0.796875q0.375 -0.328125 0.875 -0.484375q0.5 -0.15625 1.0625 -0.15625q0.359375 0 0.71875 0.046875q0.359375 0.046875 0.765625 0.171875l-0.203125 0.765625q-0.359375 -0.125 -0.65625 -0.15625q-0.28125 -0.046875 -0.578125 -0.046875q-0.390625 0 -0.734375 0.109375q-0.328125 0.09375 -0.59375 0.3125q-0.25 0.21875 -0.40625 0.5625q-0.140625 0.34375 -0.140625 0.828125q0 0.46875 0.140625 0.8125q0.140625 0.328125 0.390625 0.546875q0.25 0.21875 0.59375 0.328125q0.359375 0.109375 0.78125 0.109375q0.34375 0 0.65625 -0.03125q0.328125 -0.046875 0.6875 -0.171875l0.140625 0.734375q-0.375 0.140625 -0.765625 0.203125q-0.375 0.0625 -0.828125 0.0625q-0.59375 0 -1.09375 -0.171875q-0.5 -0.171875 -0.859375 -0.484375q-0.34375 -0.328125 -0.546875 -0.8125q-0.203125 -0.484375 -0.203125 -1.125zm8.546936 1.234375q0 -0.265625 -0.21875 -0.4375q-0.21875 -0.171875 -0.546875 -0.296875q-0.3125 -0.125 -0.703125 -0.25q-0.375 -0.125 -0.703125 -0.296875q-0.328125 -0.1875 -0.546875 -0.453125q-0.21875 -0.265625 -0.21875 -0.703125q0 -0.59375 0.484375 -0.984375q0.484375 -0.40625 1.515625 -0.40625q0.40625 0 0.84375 0.0625q0.4375 0.0625 0.734375 0.15625l-0.15625 0.78125q-0.078125 -0.046875 -0.234375 -0.09375q-0.140625 -0.046875 -0.34375 -0.078125q-0.1875 -0.03125 -0.40625 -0.046875q-0.21875 -0.03125 -0.421875 -0.03125q-1.15625 0 -1.15625 0.625q0 0.21875 0.21875 0.375q0.21875 0.15625 0.546875 0.28125q0.34375 0.125 0.71875 0.265625q0.390625 0.140625 0.71875 0.328125q0.328125 0.1875 0.546875 0.46875q0.21875 0.265625 0.21875 0.671875q0 0.671875 -0.53125 1.046875q-0.515625 0.375 -1.640625 0.375q-0.515625 0 -0.9375 -0.09375q-0.421875 -0.078125 -0.8125 -0.25l0.171875 -0.796875q0.375 0.15625 0.78125 0.28125q0.40625 0.109375 0.875 0.109375q1.203125 0 1.203125 -0.609375zm3.828186 -4.484375q-0.28125 0 -0.484375 -0.1875q-0.203125 -0.1875 -0.203125 -0.515625q0 -0.328125 0.203125 -0.515625q0.203125 -0.203125 0.484375 -0.203125q0.28125 0 0.46875 0.203125q0.203125 0.1875 0.203125 0.515625q0 0.328125 -0.203125 0.515625q-0.1875 0.1875 -0.46875 0.1875zm-0.234375 1.515625l-1.421875 0l0 -0.734375l2.296875 0l0 3.03125q0 0.734375 0.203125 0.984375q0.203125 0.25 0.609375 0.25q0.3125 0 0.5625 -0.078125q0.265625 -0.078125 0.421875 -0.15625l0.125 0.75q-0.0625 0.03125 -0.1875 0.078125q-0.109375 0.046875 -0.265625 0.078125q-0.15625 0.046875 -0.34375 0.078125q-0.1875 0.046875 -0.390625 0.046875q-0.46875 0 -0.78125 -0.125q-0.296875 -0.140625 -0.484375 -0.390625q-0.1875 -0.265625 -0.265625 -0.640625q-0.078125 -0.375 -0.078125 -0.875l0 -2.296875zm4.812561 1.078125l2.359375 0l0 0.828125l-2.359375 0l0 -0.828125zm4.359436 0.65625q0 -0.671875 0.21875 -1.15625q0.21875 -0.484375 0.578125 -0.796875q0.375 -0.328125 0.875 -0.484375q0.5 -0.15625 1.0625 -0.15625q0.359375 0 0.71875 0.046875q0.359375 0.046875 0.765625 0.171875l-0.203125 0.765625q-0.359375 -0.125 -0.65625 -0.15625q-0.28125 -0.046875 -0.578125 -0.046875q-0.390625 0 -0.734375 0.109375q-0.328125 0.09375 -0.59375 0.3125q-0.25 0.21875 -0.40625 0.5625q-0.140625 0.34375 -0.140625 0.828125q0 0.46875 0.140625 0.8125q0.140625 0.328125 0.390625 0.546875q0.25 0.21875 0.59375 0.328125q0.359375 0.109375 0.78125 0.109375q0.34375 0 0.65625 -0.03125q0.328125 -0.046875 0.6875 -0.171875l0.140625 0.734375q-0.375 0.140625 -0.765625 0.203125q-0.375 0.0625 -0.828125 0.0625q-0.59375 0 -1.09375 -0.171875q-0.5 -0.171875 -0.859375 -0.484375q-0.34375 -0.328125 -0.546875 -0.8125q-0.203125 -0.484375 -0.203125 -1.125zm8.421936 2.59375q-0.46875 0 -0.78125 -0.125q-0.3125 -0.140625 -0.5 -0.390625q-0.171875 -0.265625 -0.25 -0.640625q-0.078125 -0.375 -0.078125 -0.875l0 -4.671875l-1.421875 0l0 -0.75l2.296875 0l0 5.421875q0 0.375 0.046875 0.609375q0.046875 0.234375 0.140625 0.375q0.109375 0.140625 0.25 0.203125q0.15625 0.046875 0.359375 0.046875q0.3125 0 0.578125 -0.078125q0.265625 -0.078125 0.421875 -0.15625l0.125 0.75q-0.0625 0.03125 -0.1875 0.078125q-0.109375 0.046875 -0.28125 0.078125q-0.15625 0.046875 -0.34375 0.078125q-0.1875 0.046875 -0.375 0.046875zm3.953186 -5.84375q-0.28125 0 -0.484375 -0.1875q-0.203125 -0.1875 -0.203125 -0.515625q0 -0.328125 0.203125 -0.515625q0.203125 -0.203125 0.484375 -0.203125q0.28125 0 0.46875 0.203125q0.203125 0.1875 0.203125 0.515625q0 0.328125 -0.203125 0.515625q-0.1875 0.1875 -0.46875 0.1875zm-0.234375 1.515625l-1.421875 0l0 -0.734375l2.296875 0l0 3.03125q0 0.734375 0.203125 0.984375q0.203125 0.25 0.609375 0.25q0.3125 0 0.5625 -0.078125q0.265625 -0.078125 0.421875 -0.15625l0.125 0.75q-0.0625 0.03125 -0.1875 0.078125q-0.109375 0.046875 -0.265625 0.078125q-0.15625 0.046875 -0.34375 0.078125q-0.1875 0.046875 -0.390625 0.046875q-0.46875 0 -0.78125 -0.125q-0.296875 -0.140625 -0.484375 -0.390625q-0.1875 -0.265625 -0.265625 -0.640625q-0.078125 -0.375 -0.078125 -0.875l0 -2.296875zm6.093811 -0.859375q1.0 0 1.53125 0.625q0.546875 0.625 0.546875 1.890625l0 0.3125l-3.53125 0q0.046875 0.765625 0.5 1.171875q0.453125 0.390625 1.28125 0.390625q0.46875 0 0.796875 -0.078125q0.328125 -0.078125 0.5 -0.15625l0.109375 0.75q-0.15625 0.078125 -0.578125 0.171875q-0.40625 0.109375 -0.921875 0.109375q-0.640625 0 -1.125 -0.203125q-0.484375 -0.203125 -0.8125 -0.53125q-0.3125 -0.34375 -0.484375 -0.8125q-0.15625 -0.484375 -0.15625 -1.046875q0 -0.65625 0.203125 -1.140625q0.203125 -0.5 0.53125 -0.8125q0.328125 -0.3125 0.75 -0.46875q0.421875 -0.171875 0.859375 -0.171875zm1.1875 2.109375q0 -0.625 -0.328125 -0.984375q-0.328125 -0.375 -0.875 -0.375q-0.3125 0 -0.5625 0.125q-0.25 0.109375 -0.4375 0.296875q-0.171875 0.1875 -0.28125 0.4375q-0.109375 0.25 -0.140625 0.5l2.625 0zm2.125061 -1.859375q0.484375 -0.109375 0.953125 -0.171875q0.484375 -0.0625 0.890625 -0.0625q1.0 0 1.5 0.515625q0.515625 0.5 0.515625 1.625l0 2.90625l-0.875 0l0 -2.734375q0 -0.484375 -0.09375 -0.78125q-0.078125 -0.296875 -0.234375 -0.453125q-0.15625 -0.171875 -0.375 -0.234375q-0.21875 -0.0625 -0.46875 -0.0625q-0.21875 0 -0.46875 0.03125q-0.234375 0.015625 -0.453125 0.0625l0 4.171875l-0.890625 0l0 -4.8125zm7.171936 -0.125l2.078125 0l0 0.734375l-2.078125 0l0 2.296875q0 0.375 0.046875 0.609375q0.0625 0.234375 0.171875 0.375q0.125 0.140625 0.3125 0.203125q0.203125 0.046875 0.484375 0.046875q0.375 0 0.609375 -0.0625q0.234375 -0.0625 0.453125 -0.171875l0.125 0.75q-0.15625 0.0625 -0.484375 0.171875q-0.3125 0.109375 -0.796875 0.109375q-0.546875 0 -0.90625 -0.125q-0.34375 -0.140625 -0.546875 -0.390625q-0.203125 -0.265625 -0.28125 -0.640625q-0.0625 -0.375 -0.0625 -0.875l0 -2.296875l-1.046875 0l0 -0.734375l1.046875 0l0 -1.390625l0.875 -0.15625l0 1.546875zm4.218811 1.8125l2.359375 0l0 0.828125l-2.359375 0l0 -0.828125zm7.531311 -0.78125q-0.15625 -0.125 -0.4375 -0.25q-0.28125 -0.125 -0.59375 -0.125q-0.359375 0 -0.609375 0.140625q-0.25 0.140625 -0.40625 0.375q-0.15625 0.234375 -0.234375 0.578125q-0.078125 0.328125 -0.078125 0.71875q0 0.859375 0.40625 1.328125q0.40625 0.46875 1.0625 0.46875q0.328125 0 0.546875 -0.03125q0.234375 -0.03125 0.34375 -0.0625l0 -3.140625zm0 -3.328125l0.890625 -0.15625l0 7.25q-0.296875 0.09375 -0.75 0.171875q-0.4375 0.09375 -1.03125 0.09375q-0.53125 0 -0.96875 -0.1875q-0.4375 -0.1875 -0.75 -0.515625q-0.3125 -0.34375 -0.484375 -0.8125q-0.171875 -0.484375 -0.171875 -1.078125q0 -0.578125 0.140625 -1.046875q0.15625 -0.484375 0.421875 -0.8125q0.28125 -0.34375 0.671875 -0.53125q0.390625 -0.203125 0.890625 -0.203125q0.390625 0 0.6875 0.09375q0.296875 0.09375 0.453125 0.203125l0 -2.46875zm4.406311 2.171875q1.0 0 1.5312576 0.625q0.546875 0.625 0.546875 1.890625l0 0.3125l-3.5312576 0q0.046875 0.765625 0.5 1.171875q0.453125 0.390625 1.28125 0.390625q0.46875 0 0.796875 -0.078125q0.32813263 -0.078125 0.5000076 -0.15625l0.109375 0.75q-0.15625 0.078125 -0.578125 0.171875q-0.40625763 0.109375 -0.9218826 0.109375q-0.640625 0 -1.125 -0.203125q-0.484375 -0.203125 -0.8125 -0.53125q-0.3125 -0.34375 -0.484375 -0.8125q-0.15625 -0.484375 -0.15625 -1.046875q0 -0.65625 0.203125 -1.140625q0.203125 -0.5 0.53125 -0.8125q0.328125 -0.3125 0.75 -0.46875q0.421875 -0.171875 0.859375 -0.171875zm1.1875076 2.109375q0 -0.625 -0.32813263 -0.984375q-0.328125 -0.375 -0.875 -0.375q-0.3125 0 -0.5625 0.125q-0.25 0.109375 -0.4375 0.296875q-0.171875 0.1875 -0.28125 0.4375q-0.109375 0.25 -0.140625 0.5l2.6250076 0zm3.968811 -1.984375l2.078125 0l0 0.734375l-2.078125 0l0 2.296875q0 0.375 0.046875 0.609375q0.0625 0.234375 0.171875 0.375q0.125 0.140625 0.3125 0.203125q0.203125 0.046875 0.484375 0.046875q0.375 0 0.609375 -0.0625q0.234375 -0.0625 0.453125 -0.171875l0.125 0.75q-0.15625 0.0625 -0.484375 0.171875q-0.3125 0.109375 -0.796875 0.109375q-0.546875 0 -0.90625 -0.125q-0.34375 -0.140625 -0.546875 -0.390625q-0.203125 -0.265625 -0.28125 -0.640625q-0.0625 -0.375 -0.0625 -0.875l0 -2.296875l-1.046875 0l0 -0.734375l1.046875 0l0 -1.390625l0.875 -0.15625l0 1.546875zm5.453186 4.3125q0.328125 0 0.578125 -0.015625q0.265625 -0.03125 0.4375 -0.0625l0 -1.46875q-0.171875 -0.0625 -0.40625 -0.09375q-0.234375 -0.03125 -0.5 -0.03125q-0.25 0 -0.484375 0.046875q-0.234375 0.03125 -0.421875 0.125q-0.171875 0.09375 -0.296875 0.25q-0.109375 0.15625 -0.109375 0.390625q0 0.484375 0.3125 0.671875q0.328125 0.1875 0.890625 0.1875zm-0.09375 -4.4375q0.5625 0 0.9375 0.140625q0.375 0.140625 0.609375 0.390625q0.234375 0.234375 0.328125 0.59375q0.109375 0.34375 0.109375 0.765625l0 3.09375q-0.3125 0.046875 -0.828125 0.125q-0.5 0.078125 -1.03125 0.078125q-0.40625 0 -0.796875 -0.078125q-0.375 -0.0625 -0.671875 -0.234375q-0.296875 -0.1875 -0.484375 -0.484375q-0.171875 -0.3125 -0.171875 -0.796875q0 -0.421875 0.171875 -0.71875q0.1875 -0.296875 0.484375 -0.46875q0.296875 -0.1875 0.671875 -0.265625q0.375 -0.078125 0.765625 -0.078125q0.515625 0 1.015625 0.109375l0 -0.25q0 -0.21875 -0.046875 -0.421875q-0.046875 -0.203125 -0.1875 -0.375q-0.125 -0.171875 -0.359375 -0.265625q-0.21875 -0.109375 -0.578125 -0.109375q-0.46875 0 -0.8125 0.0625q-0.328125 0.0625 -0.515625 0.125l-0.109375 -0.71875q0.1875 -0.09375 0.609375 -0.15625q0.421875 -0.0625 0.890625 -0.0625zm4.937561 -0.65625q-0.28125 0 -0.484375 -0.1875q-0.203125 -0.1875 -0.203125 -0.515625q0 -0.328125 0.203125 -0.515625q0.203125 -0.203125 0.484375 -0.203125q0.28125 0 0.46875 0.203125q0.203125 0.1875 0.203125 0.515625q0 0.328125 -0.203125 0.515625q-0.1875 0.1875 -0.46875 0.1875zm-0.234375 1.515625l-1.421875 0l0 -0.734375l2.296875 0l0 3.03125q0 0.734375 0.203125 0.984375q0.203125 0.25 0.609375 0.25q0.3125 0 0.5625 -0.078125q0.265625 -0.078125 0.421875 -0.15625l0.125 0.75q-0.0625 0.03125 -0.1875 0.078125q-0.109375 0.046875 -0.265625 0.078125q-0.15625 0.046875 -0.34375 0.078125q-0.1875 0.046875 -0.390625 0.046875q-0.46875 0 -0.78125 -0.125q-0.296875 -0.140625 -0.484375 -0.390625q-0.1875 -0.265625 -0.265625 -0.640625q-0.078125 -0.375 -0.078125 -0.875l0 -2.296875zm6.937561 4.328125q-0.46875 0 -0.78125 -0.125q-0.3125 -0.140625 -0.5 -0.390625q-0.171875 -0.265625 -0.25 -0.640625q-0.078125 -0.375 -0.078125 -0.875l0 -4.671875l-1.421875 0l0 -0.75l2.296875 0l0 5.421875q0 0.375 0.046875 0.609375q0.046875 0.234375 0.140625 0.375q0.109375 0.140625 0.25 0.203125q0.15625 0.046875 0.359375 0.046875q0.3125 0 0.578125 -0.078125q0.265625 -0.078125 0.421875 -0.15625l0.125 0.75q-0.0625 0.03125 -0.1875 0.078125q-0.109375 0.046875 -0.28125 0.078125q-0.15625 0.046875 -0.34375 0.078125q-0.1875 0.046875 -0.375 0.046875zm5.453186 -1.359375q0 -0.265625 -0.21875 -0.4375q-0.21875 -0.171875 -0.546875 -0.296875q-0.3125 -0.125 -0.703125 -0.25q-0.375 -0.125 -0.703125 -0.296875q-0.328125 -0.1875 -0.546875 -0.453125q-0.21875 -0.265625 -0.21875 -0.703125q0 -0.59375 0.484375 -0.984375q0.484375 -0.40625 1.515625 -0.40625q0.40625 0 0.84375 0.0625q0.4375 0.0625 0.734375 0.15625l-0.15625 0.78125q-0.078125 -0.046875 -0.234375 -0.09375q-0.140625 -0.046875 -0.34375 -0.078125q-0.1875 -0.03125 -0.40625 -0.046875q-0.21875 -0.03125 -0.421875 -0.03125q-1.15625 0 -1.15625 0.625q0 0.21875 0.21875 0.375q0.21875 0.15625 0.546875 0.28125q0.34375 0.125 0.71875 0.265625q0.390625 0.140625 0.71875 0.328125q0.328125 0.1875 0.546875 0.46875q0.21875 0.265625 0.21875 0.671875q0 0.671875 -0.53125 1.046875q-0.515625 0.375 -1.640625 0.375q-0.515625 0 -0.9375 -0.09375q-0.421875 -0.078125 -0.8125 -0.25l0.171875 -0.796875q0.375 0.15625 0.78125 0.28125q0.40625 0.109375 0.875 0.109375q1.203125 0 1.203125 -0.609375zm5.046936 0.546875q0 0.328125 -0.21875 0.578125q-0.203125 0.234375 -0.5625 0.234375q-0.359375 0 -0.578125 -0.234375q-0.203125 -0.25 -0.203125 -0.578125q0 -0.328125 0.203125 -0.5625q0.21875 -0.25 0.578125 -0.25q0.359375 0 0.5625 0.25q0.21875 0.234375 0.21875 0.5625zm5.156296 -5.03125q-0.28123474 0 -0.48435974 -0.1875q-0.203125 -0.1875 -0.203125 -0.515625q0 -0.328125 0.203125 -0.515625q0.203125 -0.203125 0.48435974 -0.203125q0.28125 0 0.484375 0.203125q0.203125 0.1875 0.203125 0.515625q0 0.328125 -0.203125 0.515625q-0.203125 0.1875 -0.484375 0.1875zm-2.0624847 1.515625l0 -0.734375l2.8749847 0l0 4.890625q0 0.5 -0.15625 0.859375q-0.140625 0.359375 -0.375 0.578125q-0.234375 0.234375 -0.54685974 0.328125q-0.3125 0.09375 -0.671875 0.09375q-0.40625 0 -0.8125 -0.09375q-0.40625 -0.078125 -0.78125 -0.265625l0.265625 -0.734375q0.28125 0.125 0.59375 0.203125q0.328125 0.09375 0.625 0.09375q0.4375 0 0.703125 -0.21875q0.28123474 -0.203125 0.28123474 -0.84375l0 -4.15625l-1.9999847 0zm7.843796 2.96875q0 -0.265625 -0.21875 -0.4375q-0.21875 -0.171875 -0.546875 -0.296875q-0.3125 -0.125 -0.703125 -0.25q-0.375 -0.125 -0.703125 -0.296875q-0.328125 -0.1875 -0.546875 -0.453125q-0.21875 -0.265625 -0.21875 -0.703125q0 -0.59375 0.484375 -0.984375q0.484375 -0.40625 1.515625 -0.40625q0.40625 0 0.84375 0.0625q0.4375 0.0625 0.734375 0.15625l-0.15625 0.78125q-0.078125 -0.046875 -0.234375 -0.09375q-0.140625 -0.046875 -0.34375 -0.078125q-0.1875 -0.03125 -0.40625 -0.046875q-0.21875 -0.03125 -0.421875 -0.03125q-1.15625 0 -1.15625 0.625q0 0.21875 0.21875 0.375q0.21875 0.15625 0.546875 0.28125q0.34375 0.125 0.71875 0.265625q0.390625 0.140625 0.71875 0.328125q0.328125 0.1875 0.546875 0.46875q0.21875 0.265625 0.21875 0.671875q0 0.671875 -0.53125 1.046875q-0.515625 0.375 -1.640625 0.375q-0.515625 0 -0.9375 -0.09375q-0.421875 -0.078125 -0.8125 -0.25l0.171875 -0.796875q0.375 0.15625 0.78125 0.28125q0.40625 0.109375 0.875 0.109375q1.203125 0 1.203125 -0.609375zm6.500061 -1.234375q0 0.578125 -0.171875 1.0625q-0.15625 0.46875 -0.46875 0.8125q-0.296875 0.34375 -0.71875 0.53125q-0.40625 0.1875 -0.890625 0.1875q-0.484375 0 -0.890625 -0.1875q-0.40625 -0.1875 -0.71875 -0.53125q-0.296875 -0.34375 -0.46875 -0.8125q-0.15625 -0.484375 -0.15625 -1.0625q0 -0.59375 0.15625 -1.0625q0.171875 -0.484375 0.46875 -0.8125q0.3125 -0.34375 0.71875 -0.53125q0.40625 -0.1875 0.890625 -0.1875q0.484375 0 0.890625 0.1875q0.421875 0.1875 0.71875 0.53125q0.3125 0.328125 0.46875 0.8125q0.171875 0.46875 0.171875 1.0625zm-0.90625 0q0 -0.84375 -0.375 -1.328125q-0.359375 -0.484375 -0.96875 -0.484375q-0.609375 0 -0.96875 0.484375q-0.359375 0.484375 -0.359375 1.328125q0 0.828125 0.359375 1.3125q0.359375 0.484375 0.96875 0.484375q0.609375 0 0.96875 -0.484375q0.375 -0.484375 0.375 -1.3125zm2.078186 -2.34375q0.484375 -0.109375 0.953125 -0.171875q0.484375 -0.0625 0.890625 -0.0625q1.0 0 1.5 0.515625q0.515625 0.5 0.515625 1.625l0 2.90625l-0.875 0l0 -2.734375q0 -0.484375 -0.09375 -0.78125q-0.078125 -0.296875 -0.234375 -0.453125q-0.15625 -0.171875 -0.375 -0.234375q-0.21875 -0.0625 -0.46875 -0.0625q-0.21875 0 -0.46875 0.03125q-0.234375 0.015625 -0.453125 0.0625l0 4.171875l-0.890625 0l0 -4.8125z" fill-rule="nonzero"/><path fill="#6aa84f" d="m365.3832 644.1417l178.04721 0l0 42.204712l-178.04721 0z" fill-rule="evenodd"/><path stroke="#38761d" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m365.3832 644.1417l178.04721 0l0 42.204712l-178.04721 0z" fill-rule="evenodd"/><path fill="#ffffff" d="m379.07727 665.66406l0 -13.359375l2.65625 0l3.15625 9.453125q0.4375 1.328125 0.640625 1.984375q0.234375 -0.734375 0.703125 -2.140625l3.203125 -9.296875l2.375 0l0 13.359375l-1.703125 0l0 -11.171875l-3.875 11.171875l-1.59375 0l-3.859375 -11.375l0 11.375l-1.703125 0zm15.587677 0l0 -13.359375l4.609375 0q1.546875 0 2.375 0.203125q1.140625 0.25 1.953125 0.953125q1.0625 0.890625 1.578125 2.28125q0.53125 1.390625 0.53125 3.171875q0 1.515625 -0.359375 2.703125q-0.359375 1.171875 -0.921875 1.9375q-0.546875 0.765625 -1.203125 1.21875q-0.65625 0.4375 -1.59375 0.671875q-0.9375 0.21875 -2.140625 0.21875l-4.828125 0zm1.765625 -1.578125l2.859375 0q1.3125 0 2.0625 -0.234375q0.75 -0.25 1.203125 -0.703125q0.625 -0.625 0.96875 -1.6875q0.359375 -1.0625 0.359375 -2.578125q0 -2.09375 -0.6875 -3.21875q-0.6875 -1.125 -1.671875 -1.5q-0.703125 -0.28125 -2.28125 -0.28125l-2.8125 0l0 10.203125zm11.113556 -2.71875l1.65625 -0.140625q0.125 1.0 0.546875 1.640625q0.4375 0.640625 1.34375 1.046875q0.921875 0.390625 2.0625 0.390625q1.0 0 1.78125 -0.296875q0.78125 -0.296875 1.15625 -0.8125q0.375 -0.53125 0.375 -1.15625q0 -0.625 -0.375 -1.09375q-0.359375 -0.46875 -1.1875 -0.796875q-0.546875 -0.203125 -2.390625 -0.640625q-1.828125 -0.453125 -2.5625 -0.84375q-0.96875 -0.5 -1.4375 -1.234375q-0.46875 -0.75 -0.46875 -1.671875q0 -1.0 0.578125 -1.875q0.578125 -0.890625 1.671875 -1.34375q1.109375 -0.453125 2.453125 -0.453125q1.484375 0 2.609375 0.484375q1.140625 0.46875 1.75 1.40625q0.609375 0.921875 0.65625 2.09375l-1.6875 0.125q-0.140625 -1.265625 -0.9375 -1.90625q-0.78125 -0.65625 -2.3125 -0.65625q-1.609375 0 -2.34375 0.59375q-0.734375 0.59375 -0.734375 1.421875q0 0.71875 0.53125 1.171875q0.5 0.46875 2.65625 0.96875q2.15625 0.484375 2.953125 0.84375q1.171875 0.53125 1.71875 1.359375q0.5625 0.828125 0.5625 1.90625q0 1.0625 -0.609375 2.015625q-0.609375 0.9375 -1.75 1.46875q-1.140625 0.515625 -2.578125 0.515625q-1.8125 0 -3.046875 -0.53125q-1.21875 -0.53125 -1.921875 -1.59375q-0.6875 -1.0625 -0.71875 -2.40625zm18.220642 4.296875l0 -13.359375l5.046875 0q1.328125 0 2.03125 0.125q0.96875 0.171875 1.640625 0.640625q0.671875 0.453125 1.078125 1.28125q0.40625 0.828125 0.40625 1.828125q0 1.703125 -1.09375 2.890625q-1.078125 1.171875 -3.921875 1.171875l-3.421875 0l0 5.421875l-1.765625 0zm1.765625 -7.0l3.453125 0q1.71875 0 2.4375 -0.640625q0.71875 -0.640625 0.71875 -1.796875q0 -0.84375 -0.421875 -1.4375q-0.421875 -0.59375 -1.125 -0.78125q-0.4375 -0.125 -1.640625 -0.125l-3.421875 0l0 4.78125zm17.099823 3.890625l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.125702 5.765625l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm6.618927 0l0 -8.40625l-1.453125 0l0 -1.265625l1.453125 0l0 -1.03125q0 -0.96875 0.171875 -1.453125q0.234375 -0.640625 0.828125 -1.03125q0.59375 -0.390625 1.671875 -0.390625q0.6875 0 1.53125 0.15625l-0.25 1.4375q-0.5 -0.09375 -0.953125 -0.09375q-0.75 0 -1.0625 0.328125q-0.3125 0.3125 -0.3125 1.1875l0 0.890625l1.890625 0l0 1.265625l-1.890625 0l0 8.40625l-1.625 0zm4.183319 -4.84375q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm9.281952 4.84375l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm6.228302 0l0 -9.671875l1.46875 0l0 1.359375q0.453125 -0.71875 1.203125 -1.140625q0.765625 -0.4375 1.71875 -0.4375q1.078125 0 1.765625 0.453125q0.6875 0.4375 0.96875 1.234375q1.15625 -1.6875 2.984375 -1.6875q1.453125 0 2.21875 0.796875q0.78125 0.796875 0.78125 2.453125l0 6.640625l-1.640625 0l0 -6.09375q0 -0.984375 -0.15625 -1.40625q-0.15625 -0.4375 -0.578125 -0.703125q-0.421875 -0.265625 -0.984375 -0.265625q-1.015625 0 -1.6875 0.6875q-0.671875 0.671875 -0.671875 2.15625l0 5.625l-1.640625 0l0 -6.28125q0 -1.09375 -0.40625 -1.640625q-0.40625 -0.546875 -1.3125 -0.546875q-0.6875 0 -1.28125 0.359375q-0.59375 0.359375 -0.859375 1.0625q-0.25 0.703125 -0.25 2.03125l0 5.015625l-1.640625 0zm21.853302 -1.1875q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm4.2038574 4.859375l0 -9.671875l1.46875 0l0 1.375q1.0625 -1.59375 3.078125 -1.59375q0.875 0 1.609375 0.3125q0.734375 0.3125 1.09375 0.828125q0.375 0.5 0.515625 1.203125q0.09375 0.453125 0.09375 1.59375l0 5.953125l-1.640625 0l0 -5.890625q0 -1.0 -0.203125 -1.484375q-0.1875 -0.5 -0.671875 -0.796875q-0.484375 -0.296875 -1.140625 -0.296875q-1.046875 0 -1.8125 0.671875q-0.75 0.65625 -0.75 2.515625l0 5.28125l-1.640625 0zm16.688202 -3.546875l1.609375 0.21875q-0.265625 1.65625 -1.359375 2.609375q-1.078125 0.9375 -2.671875 0.9375q-1.984375 0 -3.1875 -1.296875q-1.203125 -1.296875 -1.203125 -3.71875q0 -1.578125 0.515625 -2.75q0.515625 -1.171875 1.578125 -1.75q1.0625 -0.59375 2.3125 -0.59375q1.578125 0 2.578125 0.796875q1.0 0.796875 1.28125 2.265625l-1.59375 0.234375q-0.234375 -0.96875 -0.8125 -1.453125q-0.578125 -0.5 -1.390625 -0.5q-1.234375 0 -2.015625 0.890625q-0.78125 0.890625 -0.78125 2.8125q0 1.953125 0.75 2.84375q0.75 0.875 1.953125 0.875q0.96875 0 1.609375 -0.59375q0.65625 -0.59375 0.828125 -1.828125zm9.640625 0.4375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625z" fill-rule="nonzero"/><path fill="#ffffff" d="m401.56247 675.1716q0.640625 -0.234375 1.203125 -0.234375q0.3125 0 0.578125 0.09375q0.28125 0.078125 0.46875 0.28125q0.453125 -0.375 0.984375 -0.375q0.25 0 0.46875 0.09375q0.234375 0.09375 0.40625 0.296875q0.1875 0.1875 0.28125 0.46875q0.109375 0.28125 0.109375 0.671875l0 3.515625l-0.796875 0l0 -3.53125q0 -0.390625 -0.171875 -0.59375q-0.171875 -0.203125 -0.421875 -0.203125q-0.125 0 -0.265625 0.0625q-0.140625 0.0625 -0.25 0.203125q0.0625 0.25 0.0625 0.546875l0 1.609375l-0.796875 0l0 -1.625q0 -0.375 -0.125 -0.578125q-0.109375 -0.21875 -0.453125 -0.21875q-0.21875 0 -0.484375 0.09375l0 4.234375l-0.796875 0l0 -4.8125zm8.578186 0.90625q-0.15625 -0.125 -0.4375 -0.25q-0.28125 -0.125 -0.59375 -0.125q-0.359375 0 -0.609375 0.140625q-0.25 0.140625 -0.40625 0.375q-0.15625 0.234375 -0.234375 0.578125q-0.078125 0.328125 -0.078125 0.71875q0 0.859375 0.40625 1.328125q0.40625 0.46875 1.0625 0.46875q0.328125 0 0.546875 -0.03125q0.234375 -0.03125 0.34375 -0.0625l0 -3.140625zm0 -3.328125l0.890625 -0.15625l0 7.25q-0.296875 0.09375 -0.75 0.171875q-0.4375 0.09375 -1.03125 0.09375q-0.53125 0 -0.96875 -0.1875q-0.4375 -0.1875 -0.75 -0.515625q-0.3125 -0.34375 -0.484375 -0.8125q-0.171875 -0.484375 -0.171875 -1.078125q0 -0.578125 0.140625 -1.046875q0.15625 -0.484375 0.421875 -0.8125q0.28125 -0.34375 0.671875 -0.53125q0.390625 -0.203125 0.890625 -0.203125q0.390625 0 0.6875 0.09375q0.296875 0.09375 0.453125 0.203125l0 -2.46875zm5.375061 6.0q0 -0.265625 -0.21875 -0.4375q-0.21875 -0.171875 -0.546875 -0.296875q-0.3125 -0.125 -0.703125 -0.25q-0.375 -0.125 -0.703125 -0.296875q-0.328125 -0.1875 -0.546875 -0.453125q-0.21875 -0.265625 -0.21875 -0.703125q0 -0.59375 0.484375 -0.984375q0.484375 -0.40625 1.515625 -0.40625q0.40625 0 0.84375 0.0625q0.4375 0.0625 0.734375 0.15625l-0.15625 0.78125q-0.078125 -0.046875 -0.234375 -0.09375q-0.140625 -0.046875 -0.34375 -0.078125q-0.1875 -0.03125 -0.40625 -0.046875q-0.21875 -0.03125 -0.421875 -0.03125q-1.15625 0 -1.15625 0.625q0 0.21875 0.21875 0.375q0.21875 0.15625 0.546875 0.28125q0.34375 0.125 0.71875 0.265625q0.390625 0.140625 0.71875 0.328125q0.328125 0.1875 0.546875 0.46875q0.21875 0.265625 0.21875 0.671875q0 0.671875 -0.53125 1.046875q-0.515625 0.375 -1.640625 0.375q-0.515625 0 -0.9375 -0.09375q-0.421875 -0.078125 -0.8125 -0.25l0.171875 -0.796875q0.375 0.15625 0.78125 0.28125q0.40625 0.109375 0.875 0.109375q1.203125 0 1.203125 -0.609375zm3.078186 -1.890625l2.359375 0l0 0.828125l-2.359375 0l0 -0.828125zm7.843811 0.65625q0 -0.859375 -0.40625 -1.328125q-0.40625 -0.46875 -1.0625 -0.46875q-0.359375 0 -0.5625 0.03125q-0.203125 0.03125 -0.328125 0.0625l0 3.125q0.15625 0.140625 0.4375 0.265625q0.28125 0.109375 0.59375 0.109375q0.359375 0 0.609375 -0.140625q0.25 -0.140625 0.40625 -0.375q0.15625 -0.234375 0.234375 -0.5625q0.078125 -0.328125 0.078125 -0.71875zm0.90625 0q0 0.578125 -0.15625 1.046875q-0.140625 0.46875 -0.40625 0.8125q-0.265625 0.34375 -0.671875 0.546875q-0.390625 0.1875 -0.890625 0.1875q-0.390625 0 -0.6875 -0.109375q-0.296875 -0.09375 -0.453125 -0.203125l0 1.953125l-0.890625 0l0 -6.5625q0.296875 -0.078125 0.75 -0.15625q0.453125 -0.09375 1.03125 -0.09375q0.53125 0 0.96875 0.1875q0.4375 0.171875 0.75 0.515625q0.3125 0.328125 0.484375 0.8125q0.171875 0.46875 0.171875 1.0625zm3.187561 -2.59375q1.0 0 1.53125 0.625q0.546875 0.625 0.546875 1.890625l0 0.3125l-3.53125 0q0.046875 0.765625 0.5 1.171875q0.453125 0.390625 1.28125 0.390625q0.46875 0 0.796875 -0.078125q0.328125 -0.078125 0.5 -0.15625l0.109375 0.75q-0.15625 0.078125 -0.578125 0.171875q-0.40625 0.109375 -0.921875 0.109375q-0.640625 0 -1.125 -0.203125q-0.484375 -0.203125 -0.8125 -0.53125q-0.3125 -0.34375 -0.484375 -0.8125q-0.15625 -0.484375 -0.15625 -1.046875q0 -0.65625 0.203125 -1.140625q0.203125 -0.5 0.53125 -0.8125q0.328125 -0.3125 0.75 -0.46875q0.421875 -0.171875 0.859375 -0.171875zm1.1875 2.109375q0 -0.625 -0.328125 -0.984375q-0.328125 -0.375 -0.875 -0.375q-0.3125 0 -0.5625 0.125q-0.25 0.109375 -0.4375 0.296875q-0.171875 0.1875 -0.28125 0.4375q-0.109375 0.25 -0.140625 0.5l2.625 0zm2.515686 2.953125l0 -4.671875q1.09375 -0.375 2.1875 -0.375q0.34375 0 0.65625 0.03125q0.3125 0.015625 0.6875 0.109375l-0.171875 0.765625q-0.328125 -0.09375 -0.59375 -0.109375q-0.265625 -0.03125 -0.578125 -0.03125q-0.640625 0 -1.3125 0.171875l0 4.109375l-0.875 0zm5.906311 0l0 -4.203125l-1.046875 0l0 -0.734375l1.046875 0l0 -0.453125q0 -0.578125 0.15625 -0.953125q0.15625 -0.375 0.421875 -0.609375q0.265625 -0.234375 0.609375 -0.328125q0.34375 -0.109375 0.734375 -0.109375q0.375 0 0.765625 0.09375q0.390625 0.078125 0.734375 0.203125l-0.171875 0.75q-0.234375 -0.109375 -0.59375 -0.1875q-0.34375 -0.09375 -0.703125 -0.09375q-0.21875 0 -0.421875 0.0625q-0.1875 0.046875 -0.34375 0.203125q-0.140625 0.140625 -0.234375 0.375q-0.078125 0.234375 -0.078125 0.609375l0 0.4375l1.984375 0l0 0.734375l-1.984375 0l0 4.203125l-0.875 0zm8.515686 -2.46875q0 0.578125 -0.171875 1.0625q-0.15625 0.46875 -0.46875 0.8125q-0.296875 0.34375 -0.71875 0.53125q-0.40625 0.1875 -0.890625 0.1875q-0.484375 0 -0.890625 -0.1875q-0.40625 -0.1875 -0.71875 -0.53125q-0.296875 -0.34375 -0.46875 -0.8125q-0.15625 -0.484375 -0.15625 -1.0625q0 -0.59375 0.15625 -1.0625q0.171875 -0.484375 0.46875 -0.8125q0.3125 -0.34375 0.71875 -0.53125q0.40625 -0.1875 0.890625 -0.1875q0.484375 0 0.890625 0.1875q0.421875 0.1875 0.71875 0.53125q0.3125 0.328125 0.46875 0.8125q0.171875 0.46875 0.171875 1.0625zm-0.90625 0q0 -0.84375 -0.375 -1.328125q-0.359375 -0.484375 -0.96875 -0.484375q-0.609375 0 -0.96875 0.484375q-0.359375 0.484375 -0.359375 1.328125q0 0.828125 0.359375 1.3125q0.359375 0.484375 0.96875 0.484375q0.609375 0 0.96875 -0.484375q0.375 -0.484375 0.375 -1.3125zm2.468811 2.46875l0 -4.671875q1.09375 -0.375 2.1875 -0.375q0.34375 0 0.65625 0.03125q0.3125 0.015625 0.6875 0.109375l-0.171875 0.765625q-0.328125 -0.09375 -0.59375 -0.109375q-0.265625 -0.03125 -0.578125 -0.03125q-0.640625 0 -1.3125 0.171875l0 4.109375l-0.875 0zm4.625061 -4.8125q0.640625 -0.234375 1.203125 -0.234375q0.3125 0 0.578125 0.09375q0.28125 0.078125 0.46875 0.28125q0.453125 -0.375 0.984375 -0.375q0.25 0 0.46875 0.09375q0.234375 0.09375 0.40625 0.296875q0.1875 0.1875 0.28125 0.46875q0.109375 0.28125 0.109375 0.671875l0 3.515625l-0.796875 0l0 -3.53125q0 -0.390625 -0.171875 -0.59375q-0.171875 -0.203125 -0.421875 -0.203125q-0.125 0 -0.265625 0.0625q-0.140625 0.0625 -0.25 0.203125q0.0625 0.25 0.0625 0.546875l0 1.609375l-0.796875 0l0 -1.625q0 -0.375 -0.125 -0.578125q-0.109375 -0.21875 -0.453125 -0.21875q-0.21875 0 -0.484375 0.09375l0 4.234375l-0.796875 0l0 -4.8125zm7.609436 4.1875q0.328125 0 0.578125 -0.015625q0.265625 -0.03125 0.4375 -0.0625l0 -1.46875q-0.171875 -0.0625 -0.40625 -0.09375q-0.234375 -0.03125 -0.5 -0.03125q-0.25 0 -0.484375 0.046875q-0.234375 0.03125 -0.421875 0.125q-0.171875 0.09375 -0.296875 0.25q-0.109375 0.15625 -0.109375 0.390625q0 0.484375 0.3125 0.671875q0.328125 0.1875 0.890625 0.1875zm-0.09375 -4.4375q0.5625 0 0.9375 0.140625q0.375 0.140625 0.609375 0.390625q0.234375 0.234375 0.328125 0.59375q0.109375 0.34375 0.109375 0.765625l0 3.09375q-0.3125 0.046875 -0.828125 0.125q-0.5 0.078125 -1.03125 0.078125q-0.40625 0 -0.796875 -0.078125q-0.375 -0.0625 -0.671875 -0.234375q-0.296875 -0.1875 -0.484375 -0.484375q-0.171875 -0.3125 -0.171875 -0.796875q0 -0.421875 0.171875 -0.71875q0.1875 -0.296875 0.484375 -0.46875q0.296875 -0.1875 0.671875 -0.265625q0.375 -0.078125 0.765625 -0.078125q0.515625 0 1.015625 0.109375l0 -0.25q0 -0.21875 -0.046875 -0.421875q-0.046875 -0.203125 -0.1875 -0.375q-0.125 -0.171875 -0.359375 -0.265625q-0.21875 -0.109375 -0.578125 -0.109375q-0.46875 0 -0.8125 0.0625q-0.328125 0.0625 -0.515625 0.125l-0.109375 -0.71875q0.1875 -0.09375 0.609375 -0.15625q0.421875 -0.0625 0.890625 -0.0625zm3.453186 0.25q0.484375 -0.109375 0.953125 -0.171875q0.484375 -0.0625 0.890625 -0.0625q1.0 0 1.5 0.515625q0.515625 0.5 0.515625 1.625l0 2.90625l-0.875 0l0 -2.734375q0 -0.484375 -0.09375 -0.78125q-0.078125 -0.296875 -0.234375 -0.453125q-0.15625 -0.171875 -0.375 -0.234375q-0.21875 -0.0625 -0.46875 -0.0625q-0.21875 0 -0.46875 0.03125q-0.234375 0.015625 -0.453125 0.0625l0 4.171875l-0.890625 0l0 -4.8125zm5.093811 2.34375q0 -0.671875 0.21875 -1.15625q0.21875 -0.484375 0.578125 -0.796875q0.375 -0.328125 0.875 -0.484375q0.5 -0.15625 1.0625 -0.15625q0.359375 0 0.71875 0.046875q0.359375 0.046875 0.765625 0.171875l-0.203125 0.765625q-0.359375 -0.125 -0.65625 -0.15625q-0.28125 -0.046875 -0.578125 -0.046875q-0.390625 0 -0.734375 0.109375q-0.328125 0.09375 -0.59375 0.3125q-0.25 0.21875 -0.40625 0.5625q-0.140625 0.34375 -0.140625 0.828125q0 0.46875 0.140625 0.8125q0.140625 0.328125 0.390625 0.546875q0.25 0.21875 0.59375 0.328125q0.359375 0.109375 0.78125 0.109375q0.34375 0 0.65625 -0.03125q0.328125 -0.046875 0.6875 -0.171875l0.140625 0.734375q-0.375 0.140625 -0.765625 0.203125q-0.375 0.0625 -0.828125 0.0625q-0.59375 0 -1.09375 -0.171875q-0.5 -0.171875 -0.859375 -0.484375q-0.34375 -0.328125 -0.546875 -0.8125q-0.203125 -0.484375 -0.203125 -1.125zm7.578186 -2.59375q1.0 0 1.53125 0.625q0.546875 0.625 0.546875 1.890625l0 0.3125l-3.53125 0q0.046875 0.765625 0.5 1.171875q0.453125 0.390625 1.28125 0.390625q0.46875 0 0.796875 -0.078125q0.328125 -0.078125 0.5 -0.15625l0.109375 0.75q-0.15625 0.078125 -0.578125 0.171875q-0.40625 0.109375 -0.921875 0.109375q-0.640625 0 -1.125 -0.203125q-0.484375 -0.203125 -0.8125 -0.53125q-0.3125 -0.34375 -0.484375 -0.8125q-0.15625 -0.484375 -0.15625 -1.046875q0 -0.65625 0.203125 -1.140625q0.203125 -0.5 0.53125 -0.8125q0.328125 -0.3125 0.75 -0.46875q0.421875 -0.171875 0.859375 -0.171875zm1.1875 2.109375q0 -0.625 -0.328125 -0.984375q-0.328125 -0.375 -0.875 -0.375q-0.3125 0 -0.5625 0.125q-0.25 0.109375 -0.4375 0.296875q-0.171875 0.1875 -0.28125 0.4375q-0.109375 0.25 -0.140625 0.5l2.625 0zm4.828186 2.265625q0 0.328125 -0.21875 0.578125q-0.203125 0.234375 -0.5625 0.234375q-0.359375 0 -0.578125 -0.234375q-0.203125 -0.25 -0.203125 -0.578125q0 -0.328125 0.203125 -0.5625q0.21875 -0.25 0.578125 -0.25q0.359375 0 0.5625 0.25q0.21875 0.234375 0.21875 0.5625zm5.156311 -5.03125q-0.28125 0 -0.484375 -0.1875q-0.203125 -0.1875 -0.203125 -0.515625q0 -0.328125 0.203125 -0.515625q0.203125 -0.203125 0.484375 -0.203125q0.28125 0 0.484375 0.203125q0.203125 0.1875 0.203125 0.515625q0 0.328125 -0.203125 0.515625q-0.203125 0.1875 -0.484375 0.1875zm-2.0625 1.515625l0 -0.734375l2.875 0l0 4.890625q0 0.5 -0.15625 0.859375q-0.140625 0.359375 -0.375 0.578125q-0.234375 0.234375 -0.546875 0.328125q-0.3125 0.09375 -0.671875 0.09375q-0.40625 0 -0.8125 -0.09375q-0.40625 -0.078125 -0.78125 -0.265625l0.265625 -0.734375q0.28125 0.125 0.59375 0.203125q0.328125 0.09375 0.625 0.09375q0.4375 0 0.703125 -0.21875q0.28125 -0.203125 0.28125 -0.84375l0 -4.15625l-2.0 0zm7.843811 2.96875q0 -0.265625 -0.21875 -0.4375q-0.21875 -0.171875 -0.546875 -0.296875q-0.3125 -0.125 -0.703125 -0.25q-0.375 -0.125 -0.703125 -0.296875q-0.328125 -0.1875 -0.546875 -0.453125q-0.21875 -0.265625 -0.21875 -0.703125q0 -0.59375 0.484375 -0.984375q0.484375 -0.40625 1.515625 -0.40625q0.40625 0 0.84375 0.0625q0.4375 0.0625 0.734375 0.15625l-0.15625 0.78125q-0.078125 -0.046875 -0.234375 -0.09375q-0.140625 -0.046875 -0.34375 -0.078125q-0.1875 -0.03125 -0.40625 -0.046875q-0.21875 -0.03125 -0.421875 -0.03125q-1.15625 0 -1.15625 0.625q0 0.21875 0.21875 0.375q0.21875 0.15625 0.546875 0.28125q0.34375 0.125 0.71875 0.265625q0.390625 0.140625 0.71875 0.328125q0.328125 0.1875 0.546875 0.46875q0.21875 0.265625 0.21875 0.671875q0 0.671875 -0.53125 1.046875q-0.515625 0.375 -1.640625 0.375q-0.515625 0 -0.9375 -0.09375q-0.421875 -0.078125 -0.8125 -0.25l0.171875 -0.796875q0.375 0.15625 0.78125 0.28125q0.40625 0.109375 0.875 0.109375q1.203125 0 1.203125 -0.609375zm6.500061 -1.234375q0 0.578125 -0.171875 1.0625q-0.15625 0.46875 -0.46875 0.8125q-0.296875 0.34375 -0.71875 0.53125q-0.40625 0.1875 -0.890625 0.1875q-0.484375 0 -0.890625 -0.1875q-0.40625 -0.1875 -0.71875 -0.53125q-0.296875 -0.34375 -0.46875 -0.8125q-0.15625 -0.484375 -0.15625 -1.0625q0 -0.59375 0.15625 -1.0625q0.171875 -0.484375 0.46875 -0.8125q0.3125 -0.34375 0.71875 -0.53125q0.40625 -0.1875 0.890625 -0.1875q0.484375 0 0.890625 0.1875q0.421875 0.1875 0.71875 0.53125q0.3125 0.328125 0.46875 0.8125q0.171875 0.46875 0.171875 1.0625zm-0.90625 0q0 -0.84375 -0.375 -1.328125q-0.359375 -0.484375 -0.96875 -0.484375q-0.609375 0 -0.96875 0.484375q-0.359375 0.484375 -0.359375 1.328125q0 0.828125 0.359375 1.3125q0.359375 0.484375 0.96875 0.484375q0.609375 0 0.96875 -0.484375q0.375 -0.484375 0.375 -1.3125zm2.078186 -2.34375q0.484375 -0.109375 0.953125 -0.171875q0.484375 -0.0625 0.890625 -0.0625q1.0 0 1.5 0.515625q0.515625 0.5 0.515625 1.625l0 2.90625l-0.875 0l0 -2.734375q0 -0.484375 -0.09375 -0.78125q-0.078125 -0.296875 -0.234375 -0.453125q-0.15625 -0.171875 -0.375 -0.234375q-0.21875 -0.0625 -0.46875 -0.0625q-0.21875 0 -0.46875 0.03125q-0.234375 0.015625 -0.453125 0.0625l0 4.171875l-0.890625 0l0 -4.8125z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m311.1391 211.50656c13.560974 0 20.342377 113.433075 27.121918 226.86615c6.7795105 113.433075 13.557159 226.86612 27.114319 226.86612" fill-rule="evenodd"/><path stroke="#666666" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" stroke-dasharray="4.0,3.0" d="m311.1391 211.50656c13.560974 0 20.342377 113.433075 27.121918 226.86615c3.3897705 56.716522 6.7790527 113.433075 11.015564 155.97049c2.118225 21.268677 4.4482727 38.992615 7.0960693 51.399353c1.3239136 6.203369 2.7272644 11.077393 4.2232666 14.400635c0.09350586 0.20776367 0.18737793 0.4093628 0.2816162 0.60491943c0.04711914 0.09777832 0.094329834 0.19396973 0.14163208 0.2886963l0.02520752 0.049621582" fill-rule="evenodd"/><path fill="#666666" stroke="#666666" stroke-width="1.0" stroke-linecap="butt" d="m359.90125 662.2787l4.4188538 1.9484253l-2.1325989 -4.333008z" fill-rule="evenodd"/><path fill="#3c78d8" d="m36.524933 524.1417l159.14961 0l0 42.204712l-159.14961 0z" fill-rule="evenodd"/><path stroke="#38761d" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m36.524933 524.1417l159.14961 0l0 42.204712l-159.14961 0z" fill-rule="evenodd"/><path fill="#ffffff" d="m61.93177 540.58844l1.515625 0.375q-0.46875 1.875 -1.71875 2.859375q-1.234375 0.984375 -3.015625 0.984375q-1.859375 0 -3.015625 -0.75q-1.15625 -0.765625 -1.765625 -2.1875q-0.609375 -1.4375 -0.609375 -3.078125q0 -1.796875 0.6875 -3.125q0.6875 -1.328125 1.9375 -2.015625q1.265625 -0.703125 2.78125 -0.703125q1.71875 0 2.890625 0.875q1.171875 0.875 1.640625 2.46875l-1.5 0.34375q-0.390625 -1.25 -1.15625 -1.8125q-0.75 -0.578125 -1.90625 -0.578125q-1.3125 0 -2.203125 0.640625q-0.890625 0.625 -1.25 1.703125q-0.359375 1.0625 -0.359375 2.1875q0 1.46875 0.421875 2.5625q0.4375 1.078125 1.328125 1.625q0.90625 0.53125 1.953125 0.53125q1.265625 0 2.140625 -0.734375q0.890625 -0.734375 1.203125 -2.171875zm8.8828125 1.34375l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm7.8359375 8.140625l0 -11.484375l1.28125 0l0 1.078125q0.453125 -0.640625 1.015625 -0.953125q0.578125 -0.3125 1.390625 -0.3125q1.0625 0 1.875 0.546875q0.8125 0.546875 1.21875 1.546875q0.421875 0.984375 0.421875 2.171875q0 1.28125 -0.46875 2.296875q-0.453125 1.015625 -1.328125 1.5625q-0.859375 0.546875 -1.828125 0.546875q-0.703125 0 -1.265625 -0.296875q-0.546875 -0.296875 -0.90625 -0.75l0 4.046875l-1.40625 0zm1.265625 -7.296875q0 1.609375 0.640625 2.375q0.65625 0.765625 1.578125 0.765625q0.9375 0 1.609375 -0.796875q0.671875 -0.796875 0.671875 -2.453125q0 -1.59375 -0.65625 -2.375q-0.65625 -0.796875 -1.5625 -0.796875q-0.890625 0 -1.59375 0.84375q-0.6875 0.84375 -0.6875 2.4375zm7.6328125 4.109375l0 -11.453125l1.40625 0l0 4.109375q0.984375 -1.140625 2.484375 -1.140625q0.921875 0 1.59375 0.359375q0.6875 0.359375 0.96875 1.0q0.296875 0.640625 0.296875 1.859375l0 5.265625l-1.40625 0l0 -5.265625q0 -1.046875 -0.453125 -1.53125q-0.453125 -0.484375 -1.296875 -0.484375q-0.625 0 -1.171875 0.328125q-0.546875 0.328125 -0.78125 0.890625q-0.234375 0.546875 -0.234375 1.515625l0 4.546875l-1.40625 0zm8.8984375 0l0 -8.296875l1.25 0l0 1.15625q0.390625 -0.609375 1.03125 -0.96875q0.65625 -0.375 1.484375 -0.375q0.921875 0 1.515625 0.390625q0.59375 0.375 0.828125 1.0625q0.984375 -1.453125 2.5625 -1.453125q1.234375 0 1.890625 0.6875q0.671875 0.671875 0.671875 2.09375l0 5.703125l-1.390625 0l0 -5.234375q0 -0.84375 -0.140625 -1.203125q-0.140625 -0.375 -0.5 -0.59375q-0.359375 -0.234375 -0.84375 -0.234375q-0.875 0 -1.453125 0.578125q-0.578125 0.578125 -0.578125 1.859375l0 4.828125l-1.40625 0l0 -5.390625q0 -0.9375 -0.34375 -1.40625q-0.34375 -0.46875 -1.125 -0.46875q-0.59375 0 -1.09375 0.3125q-0.5 0.3125 -0.734375 0.921875q-0.21875 0.59375 -0.21875 1.71875l0 4.3125l-1.40625 0zm19.0 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm10.8984375 3.6875l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm1.3671875 1.265625l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm5.34375 -9.84375l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm8.960945 -3.046875l1.390625 0.1875q-0.234375 1.421875 -1.171875 2.234375q-0.921875 0.8125 -2.28125 0.8125q-1.703125 0 -2.7500076 -1.109375q-1.03125 -1.125 -1.03125 -3.203125q0 -1.34375 0.4375 -2.34375q0.453125 -1.015625 1.3593826 -1.515625q0.921875 -0.5 1.984375 -0.5q1.359375 0 2.21875 0.6875q0.859375 0.671875 1.09375 1.9375l-1.359375 0.203125q-0.203125 -0.828125 -0.703125 -1.25q-0.484375 -0.421875 -1.1875 -0.421875q-1.0625 0 -1.734375 0.765625q-0.65625 0.75 -0.65625 2.40625q0 1.671875 0.640625 2.4375q0.640625 0.75 1.671875 0.75q0.828125 0 1.375 -0.5q0.5625 -0.515625 0.703125 -1.578125zm2.03125 0.5625l1.390625 -0.21875q0.109375 0.84375 0.640625 1.296875q0.546875 0.4375 1.5 0.4375q0.96875 0 1.4375 -0.390625q0.46875 -0.40625 0.46875 -0.9375q0 -0.46875 -0.40625 -0.75q-0.296875 -0.1875 -1.4375 -0.46875q-1.546875 -0.390625 -2.15625 -0.671875q-0.59375 -0.296875 -0.90625 -0.796875q-0.296875 -0.5 -0.296875 -1.109375q0 -0.5625 0.25 -1.03125q0.25 -0.46875 0.6875 -0.78125q0.328125 -0.25 0.890625 -0.40625q0.578125 -0.171875 1.21875 -0.171875q0.984375 0 1.71875 0.28125q0.734375 0.28125 1.078125 0.765625q0.359375 0.46875 0.5 1.28125l-1.375 0.1875q-0.09375 -0.640625 -0.546875 -1.0q-0.453125 -0.359375 -1.265625 -0.359375q-0.96875 0 -1.390625 0.328125q-0.40625 0.3125 -0.40625 0.734375q0 0.28125 0.171875 0.5q0.171875 0.21875 0.53125 0.375q0.21875 0.078125 1.25 0.359375q1.484375 0.390625 2.078125 0.65625q0.59375 0.25 0.921875 0.734375q0.34375 0.484375 0.34375 1.203125q0 0.703125 -0.421875 1.328125q-0.40625 0.609375 -1.1875 0.953125q-0.765625 0.34375 -1.734375 0.34375q-1.625 0 -2.46875 -0.671875q-0.84375 -0.671875 -1.078125 -2.0zm13.2265625 2.484375l0 -11.453125l1.515625 0l0 4.703125l5.953125 0l0 -4.703125l1.515625 0l0 11.453125l-1.515625 0l0 -5.40625l-5.953125 0l0 5.40625l-1.515625 0zm10.8046875 -4.15625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.7968597 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90623474 0.5 -1.9999847 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.70310974 -0.796875 0.70310974 -2.4375q0 -1.53125 -0.70310974 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.4140472 1.671875l1.390625 -0.21875q0.109375 0.84375 0.640625 1.296875q0.546875 0.4375 1.5 0.4375q0.96875 0 1.4375 -0.390625q0.46875 -0.40625 0.46875 -0.9375q0 -0.46875 -0.40625 -0.75q-0.296875 -0.1875 -1.4375 -0.46875q-1.546875 -0.390625 -2.15625 -0.671875q-0.59375 -0.296875 -0.90625 -0.796875q-0.296875 -0.5 -0.296875 -1.109375q0 -0.5625 0.25 -1.03125q0.25 -0.46875 0.6875 -0.78125q0.328125 -0.25 0.890625 -0.40625q0.578125 -0.171875 1.21875 -0.171875q0.984375 0 1.71875 0.28125q0.734375 0.28125 1.078125 0.765625q0.359375 0.46875 0.5 1.28125l-1.375 0.1875q-0.09375 -0.640625 -0.546875 -1.0q-0.453125 -0.359375 -1.265625 -0.359375q-0.96875 0 -1.390625 0.328125q-0.40625 0.3125 -0.40625 0.734375q0 0.28125 0.171875 0.5q0.171875 0.21875 0.53125 0.375q0.21875 0.078125 1.25 0.359375q1.484375 0.390625 2.078125 0.65625q0.59375 0.25 0.921875 0.734375q0.34375 0.484375 0.34375 1.203125q0 0.703125 -0.421875 1.328125q-0.40625 0.609375 -1.1875 0.953125q-0.765625 0.34375 -1.734375 0.34375q-1.625 0 -2.46875 -0.671875q-0.84375 -0.671875 -1.078125 -2.0zm11.625 1.21875l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625z" fill-rule="nonzero"/><path fill="#ffffff" d="m60.66941 556.0153q0 -0.671875 0.21875 -1.15625q0.21875 -0.484375 0.578125 -0.796875q0.375 -0.328125 0.875 -0.484375q0.5 -0.15625 1.0625 -0.15625q0.359375 0 0.71875 0.046875q0.359375 0.046875 0.765625 0.171875l-0.203125 0.765625q-0.359375 -0.125 -0.65625 -0.15625q-0.28125 -0.046875 -0.578125 -0.046875q-0.390625 0 -0.734375 0.109375q-0.328125 0.09375 -0.59375 0.3125q-0.25 0.21875 -0.40625 0.5625q-0.140625 0.34375 -0.140625 0.828125q0 0.46875 0.140625 0.8125q0.140625 0.328125 0.390625 0.546875q0.25 0.21875 0.59375 0.328125q0.359375 0.109375 0.78125 0.109375q0.34375 0 0.65625 -0.03125q0.328125 -0.046875 0.6875 -0.171875l0.140625 0.734375q-0.375 0.140625 -0.765625 0.203125q-0.375 0.0625 -0.828125 0.0625q-0.59375 0 -1.09375 -0.171875q-0.5 -0.171875 -0.859375 -0.484375q-0.34375 -0.328125 -0.546875 -0.8125q-0.203125 -0.484375 -0.203125 -1.125zm7.578186 -2.59375q1.0 0 1.53125 0.625q0.546875 0.625 0.546875 1.890625l0 0.3125l-3.53125 0q0.046875 0.765625 0.5 1.171875q0.453125 0.390625 1.28125 0.390625q0.46875 0 0.796875 -0.078125q0.328125 -0.078125 0.5 -0.15625l0.109375 0.75q-0.15625 0.078125 -0.578125 0.171875q-0.40625 0.109375 -0.921875 0.109375q-0.640625 0 -1.125 -0.203125q-0.484375 -0.203125 -0.8125 -0.53125q-0.3125 -0.34375 -0.484375 -0.8125q-0.15625 -0.484375 -0.15625 -1.046875q0 -0.65625 0.203125 -1.140625q0.203125 -0.5 0.53125 -0.8125q0.328125 -0.3125 0.75 -0.46875q0.421875 -0.171875 0.859375 -0.171875zm1.1875 2.109375q0 -0.625 -0.328125 -0.984375q-0.328125 -0.375 -0.875 -0.375q-0.3125 0 -0.5625 0.125q-0.25 0.109375 -0.4375 0.296875q-0.171875 0.1875 -0.28125 0.4375q-0.109375 0.25 -0.140625 0.5l2.625 0zm5.375061 0.484375q0 -0.859375 -0.40625 -1.328125q-0.40625 -0.46875 -1.0625 -0.46875q-0.359375 0 -0.5625 0.03125q-0.203125 0.03125 -0.328125 0.0625l0 3.125q0.15625 0.140625 0.4375 0.265625q0.28125 0.109375 0.59375 0.109375q0.359375 0 0.609375 -0.140625q0.25 -0.140625 0.40625 -0.375q0.15625 -0.234375 0.234375 -0.5625q0.078125 -0.328125 0.078125 -0.71875zm0.90625 0q0 0.578125 -0.15625 1.046875q-0.140625 0.46875 -0.40625 0.8125q-0.265625 0.34375 -0.671875 0.546875q-0.390625 0.1875 -0.890625 0.1875q-0.390625 0 -0.6875 -0.109375q-0.296875 -0.09375 -0.453125 -0.203125l0 1.953125l-0.890625 0l0 -6.5625q0.296875 -0.078125 0.75 -0.15625q0.453125 -0.09375 1.03125 -0.09375q0.53125 0 0.96875 0.1875q0.4375 0.171875 0.75 0.515625q0.3125 0.328125 0.484375 0.8125q0.171875 0.46875 0.171875 1.0625zm1.171936 2.46875l0 -7.234375l0.890625 -0.15625l0 2.515625q0.21875 -0.078125 0.484375 -0.125q0.265625 -0.046875 0.515625 -0.046875q0.5625 0 0.9375 0.171875q0.390625 0.15625 0.609375 0.453125q0.21875 0.296875 0.3125 0.71875q0.109375 0.40625 0.109375 0.90625l0 2.796875l-0.875 0l0 -2.59375q0 -0.921875 -0.265625 -1.296875q-0.25 -0.375 -0.90625 -0.375q-0.28125 0 -0.546875 0.0625q-0.25 0.046875 -0.375 0.09375l0 4.109375l-0.890625 0zm5.015686 -4.8125q0.640625 -0.234375 1.203125 -0.234375q0.3125 0 0.578125 0.09375q0.28125 0.078125 0.46875 0.28125q0.453125 -0.375 0.984375 -0.375q0.25 0 0.46875 0.09375q0.234375 0.09375 0.40625 0.296875q0.1875 0.1875 0.28125 0.46875q0.109375 0.28125 0.109375 0.671875l0 3.515625l-0.796875 0l0 -3.53125q0 -0.390625 -0.171875 -0.59375q-0.171875 -0.203125 -0.421875 -0.203125q-0.125 0 -0.265625 0.0625q-0.140625 0.0625 -0.25 0.203125q0.0625 0.25 0.0625 0.546875l0 1.609375l-0.796875 0l0 -1.625q0 -0.375 -0.125 -0.578125q-0.109375 -0.21875 -0.453125 -0.21875q-0.21875 0 -0.484375 0.09375l0 4.234375l-0.796875 0l0 -4.8125zm7.656311 -0.25q1.0 0 1.53125 0.625q0.546875 0.625 0.546875 1.890625l0 0.3125l-3.53125 0q0.046875 0.765625 0.5 1.171875q0.453125 0.390625 1.28125 0.390625q0.46875 0 0.796875 -0.078125q0.328125 -0.078125 0.5 -0.15625l0.109375 0.75q-0.15625 0.078125 -0.578125 0.171875q-0.40625 0.109375 -0.921875 0.109375q-0.640625 0 -1.125 -0.203125q-0.484375 -0.203125 -0.8125 -0.53125q-0.3125 -0.34375 -0.484375 -0.8125q-0.15625 -0.484375 -0.15625 -1.046875q0 -0.65625 0.203125 -1.140625q0.203125 -0.5 0.53125 -0.8125q0.328125 -0.3125 0.75 -0.46875q0.421875 -0.171875 0.859375 -0.171875zm1.1875 2.109375q0 -0.625 -0.328125 -0.984375q-0.328125 -0.375 -0.875 -0.375q-0.3125 0 -0.5625 0.125q-0.25 0.109375 -0.4375 0.296875q-0.171875 0.1875 -0.28125 0.4375q-0.109375 0.25 -0.140625 0.5l2.625 0zm3.968811 -1.984375l2.078125 0l0 0.734375l-2.078125 0l0 2.296875q0 0.375 0.046875 0.609375q0.0625 0.234375 0.171875 0.375q0.125 0.140625 0.3125 0.203125q0.203125 0.046875 0.484375 0.046875q0.375 0 0.609375 -0.0625q0.234375 -0.0625 0.453125 -0.171875l0.125 0.75q-0.15625 0.0625 -0.484375 0.171875q-0.3125 0.109375 -0.796875 0.109375q-0.546875 0 -0.90625 -0.125q-0.34375 -0.140625 -0.546875 -0.390625q-0.203125 -0.265625 -0.28125 -0.640625q-0.0625 -0.375 -0.0625 -0.875l0 -2.296875l-1.046875 0l0 -0.734375l1.046875 0l0 -1.390625l0.875 -0.15625l0 1.546875zm3.875061 4.9375l0 -4.671875q1.09375 -0.375 2.1875 -0.375q0.34375 0 0.65625 0.03125q0.3125 0.015625 0.6875 0.109375l-0.171875 0.765625q-0.328125 -0.09375 -0.59375 -0.109375q-0.265625 -0.03125 -0.578125 -0.03125q-0.640625 0 -1.3125 0.171875l0 4.109375l-0.875 0zm6.421936 -5.71875q-0.28125 0 -0.484375 -0.1875q-0.203125 -0.1875 -0.203125 -0.515625q0 -0.328125 0.203125 -0.515625q0.203125 -0.203125 0.484375 -0.203125q0.28125 0 0.46875 0.203125q0.203125 0.1875 0.203125 0.515625q0 0.328125 -0.203125 0.515625q-0.1875 0.1875 -0.46875 0.1875zm-0.234375 1.515625l-1.421875 0l0 -0.734375l2.296875 0l0 3.03125q0 0.734375 0.203125 0.984375q0.203125 0.25 0.609375 0.25q0.3125 0 0.5625 -0.078125q0.265625 -0.078125 0.421875 -0.15625l0.125 0.75q-0.0625 0.03125 -0.1875 0.078125q-0.109375 0.046875 -0.265625 0.078125q-0.15625 0.046875 -0.34375 0.078125q-0.1875 0.046875 -0.390625 0.046875q-0.46875 0 -0.78125 -0.125q-0.296875 -0.140625 -0.484375 -0.390625q-0.1875 -0.265625 -0.265625 -0.640625q-0.078125 -0.375 -0.078125 -0.875l0 -2.296875zm3.843811 1.734375q0 -0.671875 0.21875 -1.15625q0.21875 -0.484375 0.578125 -0.796875q0.375 -0.328125 0.875 -0.484375q0.5 -0.15625 1.0625 -0.15625q0.359375 0 0.71875 0.046875q0.359375 0.046875 0.765625 0.171875l-0.203125 0.765625q-0.359375 -0.125 -0.65625 -0.15625q-0.28125 -0.046875 -0.578125 -0.046875q-0.390625 0 -0.734375 0.109375q-0.328125 0.09375 -0.59375 0.3125q-0.25 0.21875 -0.40625 0.5625q-0.140625 0.34375 -0.140625 0.828125q0 0.46875 0.140625 0.8125q0.140625 0.328125 0.390625 0.546875q0.25 0.21875 0.59375 0.328125q0.359375 0.109375 0.78125 0.109375q0.34375 0 0.65625 -0.03125q0.328125 -0.046875 0.6875 -0.171875l0.140625 0.734375q-0.375 0.140625 -0.765625 0.203125q-0.375 0.0625 -0.828125 0.0625q-0.59375 0 -1.09375 -0.171875q-0.5 -0.171875 -0.859375 -0.484375q-0.34375 -0.328125 -0.546875 -0.8125q-0.203125 -0.484375 -0.203125 -1.125zm8.546936 1.234375q0 -0.265625 -0.21875 -0.4375q-0.21875 -0.171875 -0.546875 -0.296875q-0.3125 -0.125 -0.703125 -0.25q-0.375 -0.125 -0.703125 -0.296875q-0.328125 -0.1875 -0.546875 -0.453125q-0.21875 -0.265625 -0.21875 -0.703125q0 -0.59375 0.484375 -0.984375q0.484375 -0.40625 1.515625 -0.40625q0.40625 0 0.84375 0.0625q0.4375 0.0625 0.734375 0.15625l-0.15625 0.78125q-0.078125 -0.046875 -0.234375 -0.09375q-0.140625 -0.046875 -0.34375 -0.078125q-0.1875 -0.03125 -0.40625 -0.046875q-0.21875 -0.03125 -0.421875 -0.03125q-1.15625 0 -1.15625 0.625q0 0.21875 0.21875 0.375q0.21875 0.15625 0.546875 0.28125q0.34375 0.125 0.71875 0.265625q0.390625 0.140625 0.71875 0.328125q0.328125 0.1875 0.546875 0.46875q0.21875 0.265625 0.21875 0.671875q0 0.671875 -0.53125 1.046875q-0.515625 0.375 -1.640625 0.375q-0.515625 0 -0.9375 -0.09375q-0.421875 -0.078125 -0.8125 -0.25l0.171875 -0.796875q0.375 0.15625 0.78125 0.28125q0.40625 0.109375 0.875 0.109375q1.203125 0 1.203125 -0.609375zm3.078186 -1.890625l2.359375 0l0 0.828125l-2.359375 0l0 -0.828125zm4.593811 3.125l0 -7.234375l0.890625 -0.15625l0 2.515625q0.21875 -0.078125 0.484375 -0.125q0.265625 -0.046875 0.515625 -0.046875q0.5625 0 0.9375 0.171875q0.39063263 0.15625 0.6093826 0.453125q0.21875 0.296875 0.3125 0.71875q0.109375 0.40625 0.109375 0.90625l0 2.796875l-0.8750076 0l0 -2.59375q0 -0.921875 -0.265625 -1.296875q-0.25 -0.375 -0.90625 -0.375q-0.28125 0 -0.546875 0.0625q-0.25 0.046875 -0.375 0.09375l0 4.109375l-0.890625 0zm9.484444 -2.46875q0 0.578125 -0.171875 1.0625q-0.15625 0.46875 -0.46875 0.8125q-0.296875 0.34375 -0.71875 0.53125q-0.40625 0.1875 -0.890625 0.1875q-0.484375 0 -0.890625 -0.1875q-0.40625 -0.1875 -0.71875 -0.53125q-0.296875 -0.34375 -0.46875 -0.8125q-0.15625 -0.484375 -0.15625 -1.0625q0 -0.59375 0.15625 -1.0625q0.171875 -0.484375 0.46875 -0.8125q0.3125 -0.34375 0.71875 -0.53125q0.40625 -0.1875 0.890625 -0.1875q0.484375 0 0.890625 0.1875q0.421875 0.1875 0.71875 0.53125q0.3125 0.328125 0.46875 0.8125q0.171875 0.46875 0.171875 1.0625zm-0.90625 0q0 -0.84375 -0.375 -1.328125q-0.359375 -0.484375 -0.96875 -0.484375q-0.609375 0 -0.96875 0.484375q-0.359375 0.484375 -0.359375 1.328125q0 0.828125 0.359375 1.3125q0.359375 0.484375 0.96875 0.484375q0.609375 0 0.96875 -0.484375q0.375 -0.484375 0.375 -1.3125zm5.062561 1.234375q0 -0.265625 -0.21875 -0.4375q-0.21875 -0.171875 -0.546875 -0.296875q-0.3125 -0.125 -0.703125 -0.25q-0.375 -0.125 -0.703125 -0.296875q-0.328125 -0.1875 -0.546875 -0.453125q-0.21875 -0.265625 -0.21875 -0.703125q0 -0.59375 0.484375 -0.984375q0.484375 -0.40625 1.515625 -0.40625q0.40625 0 0.84375 0.0625q0.4375 0.0625 0.734375 0.15625l-0.15625 0.78125q-0.078125 -0.046875 -0.234375 -0.09375q-0.140625 -0.046875 -0.34375 -0.078125q-0.1875 -0.03125 -0.40625 -0.046875q-0.21875 -0.03125 -0.421875 -0.03125q-1.15625 0 -1.15625 0.625q0 0.21875 0.21875 0.375q0.21875 0.15625 0.546875 0.28125q0.34375 0.125 0.71875 0.265625q0.390625 0.140625 0.71875 0.328125q0.328125 0.1875 0.546875 0.46875q0.21875 0.265625 0.21875 0.671875q0 0.671875 -0.53125 1.046875q-0.515625 0.375 -1.640625 0.375q-0.515625 0 -0.9375 -0.09375q-0.421875 -0.078125 -0.8125 -0.25l0.171875 -0.796875q0.375 0.15625 0.78125 0.28125q0.40625 0.109375 0.875 0.109375q1.203125 0 1.203125 -0.609375zm4.187561 -3.703125l2.078125 0l0 0.734375l-2.078125 0l0 2.296875q0 0.375 0.046875 0.609375q0.0625 0.234375 0.171875 0.375q0.125 0.140625 0.3125 0.203125q0.203125 0.046875 0.484375 0.046875q0.375 0 0.609375 -0.0625q0.234375 -0.0625 0.453125 -0.171875l0.125 0.75q-0.15625 0.0625 -0.484375 0.171875q-0.3125 0.109375 -0.796875 0.109375q-0.546875 0 -0.90625 -0.125q-0.34375 -0.140625 -0.546875 -0.390625q-0.203125 -0.265625 -0.28125 -0.640625q-0.0625 -0.375 -0.0625 -0.875l0 -2.296875l-1.046875 0l0 -0.734375l1.046875 0l0 -1.390625l0.875 -0.15625l0 1.546875zm6.187561 4.25q0 0.328125 -0.21875 0.578125q-0.203125 0.234375 -0.5625 0.234375q-0.359375 0 -0.578125 -0.234375q-0.203125 -0.25 -0.203125 -0.578125q0 -0.328125 0.203125 -0.5625q0.21875 -0.25 0.578125 -0.25q0.359375 0 0.5625 0.25q0.21875 0.234375 0.21875 0.5625zm5.156311 -5.03125q-0.28125 0 -0.484375 -0.1875q-0.203125 -0.1875 -0.203125 -0.515625q0 -0.328125 0.203125 -0.515625q0.203125 -0.203125 0.484375 -0.203125q0.28125 0 0.484375 0.203125q0.203125 0.1875 0.203125 0.515625q0 0.328125 -0.203125 0.515625q-0.203125 0.1875 -0.484375 0.1875zm-2.0625 1.515625l0 -0.734375l2.875 0l0 4.890625q0 0.5 -0.15625 0.859375q-0.140625 0.359375 -0.375 0.578125q-0.234375 0.234375 -0.546875 0.328125q-0.3125 0.09375 -0.671875 0.09375q-0.40625 0 -0.8125 -0.09375q-0.40625 -0.078125 -0.78125 -0.265625l0.265625 -0.734375q0.28125 0.125 0.59375 0.203125q0.328125 0.09375 0.625 0.09375q0.4375 0 0.703125 -0.21875q0.28125 -0.203125 0.28125 -0.84375l0 -4.15625l-2.0 0zm7.843811 2.96875q0 -0.265625 -0.21875 -0.4375q-0.21875 -0.171875 -0.546875 -0.296875q-0.3125 -0.125 -0.703125 -0.25q-0.375 -0.125 -0.703125 -0.296875q-0.328125 -0.1875 -0.546875 -0.453125q-0.21875 -0.265625 -0.21875 -0.703125q0 -0.59375 0.484375 -0.984375q0.484375 -0.40625 1.515625 -0.40625q0.40625 0 0.84375 0.0625q0.4375 0.0625 0.734375 0.15625l-0.15625 0.78125q-0.078125 -0.046875 -0.234375 -0.09375q-0.140625 -0.046875 -0.34375 -0.078125q-0.1875 -0.03125 -0.40625 -0.046875q-0.21875 -0.03125 -0.421875 -0.03125q-1.15625 0 -1.15625 0.625q0 0.21875 0.21875 0.375q0.21875 0.15625 0.546875 0.28125q0.34375 0.125 0.71875 0.265625q0.390625 0.140625 0.71875 0.328125q0.328125 0.1875 0.546875 0.46875q0.21875 0.265625 0.21875 0.671875q0 0.671875 -0.53125 1.046875q-0.515625 0.375 -1.640625 0.375q-0.515625 0 -0.9375 -0.09375q-0.421875 -0.078125 -0.8125 -0.25l0.171875 -0.796875q0.375 0.15625 0.78125 0.28125q0.40625 0.109375 0.875 0.109375q1.203125 0 1.203125 -0.609375zm6.500046 -1.234375q0 0.578125 -0.171875 1.0625q-0.15625 0.46875 -0.46875 0.8125q-0.296875 0.34375 -0.71875 0.53125q-0.40625 0.1875 -0.89060974 0.1875q-0.484375 0 -0.890625 -0.1875q-0.40625 -0.1875 -0.71875 -0.53125q-0.296875 -0.34375 -0.46875 -0.8125q-0.15625 -0.484375 -0.15625 -1.0625q0 -0.59375 0.15625 -1.0625q0.171875 -0.484375 0.46875 -0.8125q0.3125 -0.34375 0.71875 -0.53125q0.40625 -0.1875 0.890625 -0.1875q0.48435974 0 0.89060974 0.1875q0.421875 0.1875 0.71875 0.53125q0.3125 0.328125 0.46875 0.8125q0.171875 0.46875 0.171875 1.0625zm-0.90625 0q0 -0.84375 -0.375 -1.328125q-0.359375 -0.484375 -0.96873474 -0.484375q-0.609375 0 -0.96875 0.484375q-0.359375 0.484375 -0.359375 1.328125q0 0.828125 0.359375 1.3125q0.359375 0.484375 0.96875 0.484375q0.60935974 0 0.96873474 -0.484375q0.375 -0.484375 0.375 -1.3125zm2.078186 -2.34375q0.484375 -0.109375 0.953125 -0.171875q0.484375 -0.0625 0.890625 -0.0625q1.0 0 1.5 0.515625q0.515625 0.5 0.515625 1.625l0 2.90625l-0.875 0l0 -2.734375q0 -0.484375 -0.09375 -0.78125q-0.078125 -0.296875 -0.234375 -0.453125q-0.15625 -0.171875 -0.375 -0.234375q-0.21875 -0.0625 -0.46875 -0.0625q-0.21875 0 -0.46875 0.03125q-0.234375 0.015625 -0.453125 0.0625l0 4.171875l-0.890625 0l0 -4.8125z" fill-rule="nonzero"/></g></svg>
\ No newline at end of file
--- /dev/null
+{
+ "__inputs": [
+ {
+ "name": "DS_INFLUX",
+ "label": "influx",
+ "description": "",
+ "type": "datasource",
+ "pluginId": "influxdb",
+ "pluginName": "InfluxDB"
+ }
+ ],
+ "__requires": [
+ {
+ "type": "grafana",
+ "id": "grafana",
+ "name": "Grafana",
+ "version": "4.2.0"
+ },
+ {
+ "type": "panel",
+ "id": "graph",
+ "name": "Graph",
+ "version": ""
+ },
+ {
+ "type": "datasource",
+ "id": "influxdb",
+ "name": "InfluxDB",
+ "version": "1.0.0"
+ },
+ {
+ "type": "panel",
+ "id": "singlestat",
+ "name": "Singlestat",
+ "version": ""
+ }
+ ],
+ "annotations": {
+ "list": []
+ },
+ "editable": true,
+ "gnetId": null,
+ "graphTooltip": 0,
+ "hideControls": false,
+ "id": null,
+ "links": [],
+ "refresh": "10s",
+ "rows": [
+ {
+ "collapse": false,
+ "height": 157,
+ "panels": [
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "${DS_INFLUX}",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 1,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 3,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "targets": [
+ {
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.cluster.num_mon",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": []
+ }
+ ],
+ "thresholds": "",
+ "title": "Monitors",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "avg"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "${DS_INFLUX}",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 2,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 3,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "targets": [
+ {
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.cluster.num_osd",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": []
+ }
+ ],
+ "thresholds": "",
+ "title": "OSDs",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "avg"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "${DS_INFLUX}",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 7,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 3,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "targets": [
+ {
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.pools._all_.recovering_bytes_per_sec",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": []
+ }
+ ],
+ "thresholds": "",
+ "title": "Recovery Workload",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "datasource": "${DS_INFLUX}",
+ "format": "bytes",
+ "gauge": {
+ "maxValue": 50465865728,
+ "minValue": 0,
+ "show": true,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 8,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 3,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "targets": [
+ {
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.cluster.osd_bytes_used",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": []
+ }
+ ],
+ "thresholds": "35949672960,42949672960",
+ "title": "Capacity Used",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "Overview",
+ "titleSize": "h6"
+ },
+ {
+ "collapse": false,
+ "height": 250,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "datasource": "${DS_INFLUX}",
+ "fill": 1,
+ "id": 4,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "span": 6,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "reads",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.pools._all_.read_op_per_sec",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": []
+ },
+ {
+ "alias": "writes",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.pools._all_.read_op_per_sec",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM \"collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.pools._all_.write_op_per_sec\" WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": []
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Client IOPS for all Pools",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "datasource": "${DS_INFLUX}",
+ "fill": 1,
+ "id": 6,
+ "legend": {
+ "avg": false,
+ "current": true,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "span": 6,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "Reads",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.pools._all_.read_bytes_sec",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": []
+ },
+ {
+ "alias": "Writes",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.pools._all_.read_bytes_sec",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM \"collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.pools._all_.write_bytes_sec\" WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": []
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Client Throughput - All Pools",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "Pool Overview",
+ "titleSize": "h6"
+ },
+ {
+ "collapse": false,
+ "height": 250,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "datasource": "${DS_INFLUX}",
+ "fill": 1,
+ "id": 3,
+ "legend": {
+ "avg": false,
+ "current": true,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "span": 12,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "Raw Capacity",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.cluster.osd_bytes",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": []
+ },
+ {
+ "alias": "Used",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.cluster.osd_bytes_used",
+ "policy": "default",
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": []
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Cluster Capacity",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": false,
+ "title": "Dashboard Row",
+ "titleSize": "h6"
+ }
+ ],
+ "schemaVersion": 14,
+ "style": "dark",
+ "tags": [],
+ "templating": {
+ "list": []
+ },
+ "time": {
+ "from": "now-1h",
+ "to": "now"
+ },
+ "timepicker": {
+ "refresh_intervals": [
+ "5s",
+ "10s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ],
+ "time_options": [
+ "5m",
+ "15m",
+ "1h",
+ "6h",
+ "12h",
+ "24h",
+ "2d",
+ "7d",
+ "30d"
+ ]
+ },
+ "timezone": "browser",
+ "title": "Ceph Dashboard",
+ "version": 2
+}
\ No newline at end of file
--- /dev/null
+{
+ "__inputs": [
+ {
+ "name": "DS_INFLUX",
+ "label": "influx",
+ "description": "",
+ "type": "datasource",
+ "pluginId": "influxdb",
+ "pluginName": "InfluxDB"
+ },
+ {
+ "name": "VAR_MONITOR",
+ "type": "constant",
+ "label": "monitor",
+ "value": "obj-mon-1.storage.lab",
+ "description": ""
+ },
+ {
+ "name": "VAR_CLUSTER_NAME",
+ "type": "constant",
+ "label": "cluster_name",
+ "value": "ceph",
+ "description": ""
+ }
+ ],
+ "__requires": [
+ {
+ "type": "grafana",
+ "id": "grafana",
+ "name": "Grafana",
+ "version": "4.2.0"
+ },
+ {
+ "type": "panel",
+ "id": "graph",
+ "name": "Graph",
+ "version": ""
+ },
+ {
+ "type": "datasource",
+ "id": "influxdb",
+ "name": "InfluxDB",
+ "version": "1.0.0"
+ },
+ {
+ "type": "panel",
+ "id": "singlestat",
+ "name": "Singlestat",
+ "version": ""
+ },
+ {
+ "type": "panel",
+ "id": "table",
+ "name": "Table",
+ "version": ""
+ },
+ {
+ "type": "panel",
+ "id": "vonage-status-panel",
+ "name": "Status Panel",
+ "version": "1.0.4"
+ }
+ ],
+ "annotations": {
+ "list": []
+ },
+ "editable": true,
+ "gnetId": null,
+ "graphTooltip": 0,
+ "hideControls": false,
+ "id": null,
+ "links": [],
+ "refresh": "10s",
+ "rows": [
+ {
+ "collapse": false,
+ "height": 226,
+ "panels": [
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "${DS_INFLUX}",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 1,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "targets": [
+ {
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.cluster.num_mon",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": []
+ }
+ ],
+ "thresholds": "",
+ "title": "Monitors",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "avg"
+ },
+ {
+ "clusterName": "OSDs",
+ "displayName": "OSDs",
+ "flipCard": false,
+ "flipTime": 5,
+ "id": 20,
+ "isGrayOnNoData": true,
+ "links": [],
+ "minSpan": 1,
+ "namePrefix": "",
+ "span": 1,
+ "targets": [
+ {
+ "aggregation": "Last",
+ "alias": "Total",
+ "displayType": "Annotation",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.cluster.num_osd",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "valueDisplayRegex": "/.*/",
+ "valueHandler": "Text Only"
+ },
+ {
+ "aggregation": "Last",
+ "alias": "Up",
+ "display": true,
+ "displayType": "Regular",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.cluster.num_osd_up",
+ "policy": "default",
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "valueDisplayRegex": "/.*/",
+ "valueHandler": "Text Only"
+ },
+ {
+ "aggregation": "Last",
+ "alias": "In",
+ "displayType": "Regular",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.cluster.num_osd_up",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM \"collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.cluster.num_osd_up\" WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "C",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "valueDisplayRegex": "/.*/",
+ "valueHandler": "Text Only"
+ }
+ ],
+ "title": "",
+ "type": "vonage-status-panel"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "${DS_INFLUX}",
+ "format": "bytes",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 7,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 2,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(193, 106, 31)",
+ "show": true
+ },
+ "targets": [
+ {
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.pools._all_.recovering_bytes_per_sec",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": []
+ }
+ ],
+ "thresholds": "",
+ "title": "Recovery Workload",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "${DS_INFLUX}",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 9,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 2,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": true
+ },
+ "targets": [
+ {
+ "dsType": "influxdb",
+ "groupBy": [],
+ "hide": false,
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.pools._all_.read_op_per_sec",
+ "policy": "default",
+ "query": "SELECT mean(\"value\") FROM \"measurement\" WHERE $timeFilter GROUP BY time($__interval) fill(null)",
+ "rawQuery": false,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": []
+ },
+ {
+ "dsType": "influxdb",
+ "groupBy": [],
+ "hide": true,
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.pools._all_.read_op_per_sec",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM \"collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.pools._all_.write_op_per_sec\" WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": []
+ }
+ ],
+ "thresholds": "",
+ "title": "Client IOPS",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "${DS_INFLUX}",
+ "decimals": null,
+ "format": "bytes",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 23,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 2,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": true
+ },
+ "targets": [
+ {
+ "dsType": "influxdb",
+ "groupBy": [],
+ "hide": false,
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.pools._all_.read_op_per_sec",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM \"collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.pools._all_.read_bytes_sec\" WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": []
+ },
+ {
+ "dsType": "influxdb",
+ "groupBy": [],
+ "hide": true,
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.pools._all_.read_op_per_sec",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM \"collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.pools._all_.write_op_per_sec\" WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": []
+ }
+ ],
+ "thresholds": "",
+ "title": "Client Bandwidth",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "filterNull": false,
+ "fontSize": "100%",
+ "id": 16,
+ "links": [],
+ "pageSize": null,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": 0,
+ "desc": false
+ },
+ "span": 2,
+ "styles": [
+ {
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Time",
+ "type": "date"
+ },
+ {
+ "colorMode": "value",
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "decimals": 0,
+ "pattern": "/.*/",
+ "thresholds": [
+ "1",
+ "50"
+ ],
+ "type": "number",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "alias": "PG's peering",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.cluster.num_pg_peering",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM \"collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.cluster.num_pg_peering\" WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": []
+ },
+ {
+ "alias": "Object Degraded",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.cluster.num_object_degraded",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM \"collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.cluster.num_object_degraded\" WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": []
+ },
+ {
+ "alias": "Objects Unfound",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.cluster.num_object_unfound",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM \"collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.cluster.num_object_unfound\" WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "C",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": []
+ },
+ {
+ "alias": "Objects Recovering",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.pools._all_.recovering_objects_per_sec",
+ "policy": "default",
+ "refId": "D",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": []
+ }
+ ],
+ "title": "Health Indicators",
+ "transform": "timeseries_aggregations",
+ "type": "table"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "datasource": "${DS_INFLUX}",
+ "format": "bytes",
+ "gauge": {
+ "maxValue": 50465865728,
+ "minValue": 0,
+ "show": true,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 8,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 2,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "targets": [
+ {
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.cluster.osd_bytes_used",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": []
+ }
+ ],
+ "thresholds": "35949672960,42949672960",
+ "title": "Capacity Used",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "Overview",
+ "titleSize": "h6"
+ },
+ {
+ "collapse": true,
+ "height": 256,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "datasource": "${DS_INFLUX}",
+ "fill": 1,
+ "id": 3,
+ "legend": {
+ "avg": false,
+ "current": true,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "span": 7,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "Raw Capacity",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.cluster.osd_bytes",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": []
+ },
+ {
+ "alias": "Used",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.cluster.osd_bytes_used",
+ "policy": "default",
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": []
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Cluster Capacity",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "${DS_INFLUX}",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 17,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "targets": [
+ {
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.cluster.num_pool",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": []
+ }
+ ],
+ "thresholds": "",
+ "title": "Pools",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "avg"
+ },
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "filterNull": false,
+ "fontSize": "100%",
+ "id": 18,
+ "links": [],
+ "minSpan": 2,
+ "pageSize": null,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": 0,
+ "desc": true
+ },
+ "span": 2,
+ "styles": [
+ {
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Time",
+ "type": "date"
+ },
+ {
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 0,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "alias": "OSDs",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.cluster.num_osd",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": []
+ },
+ {
+ "alias": "OSD's Active (in)",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.cluster.num_osd_in",
+ "policy": "default",
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": []
+ },
+ {
+ "alias": "OSD's Up",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.cluster.num_osd_in",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM \"collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.cluster.num_osd_up\" WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "C",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": []
+ }
+ ],
+ "title": "OSD State",
+ "transform": "timeseries_aggregations",
+ "type": "table"
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "Cluster Capacity",
+ "titleSize": "h6"
+ },
+ {
+ "collapse": false,
+ "height": 238,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "datasource": "${DS_INFLUX}",
+ "fill": 1,
+ "id": 11,
+ "legend": {
+ "avg": false,
+ "current": true,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "span": 4,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "/collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.pools.$pool_name.read_op_per_sec/",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM /collectd.$monitor.cephmetrics.gauge.$cluster_name.pools.$pool_name.read_op_per_sec/ WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": []
+ },
+ {
+ "alias": "",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.pools._all_.read_op_per_sec",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM /collectd.$monitor.cephmetrics.gauge.$cluster_name.pools.$pool_name.write_op_per_sec/ WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": []
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Client Workload IOPS (pools: $pool_name)",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "IOPS",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "datasource": "${DS_INFLUX}",
+ "fill": 1,
+ "id": 21,
+ "legend": {
+ "avg": false,
+ "current": true,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "span": 4,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "/collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.pools.$pool_name.read_op_per_sec/",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM /collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.pools.$pool_name.read_bytes_sec/ WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": []
+ },
+ {
+ "alias": "",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.pools._all_.read_op_per_sec",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM /collectd.$monitor.cephmetrics.gauge.$cluster_name.pools.$pool_name.write_bytes_sec/ WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": []
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Client Workload Throughput (pools: $pool_name)",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "label": "Bandwidth",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "datasource": "${DS_INFLUX}",
+ "fill": 1,
+ "id": 22,
+ "legend": {
+ "avg": false,
+ "current": true,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "span": 4,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "/collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.pools.$pool_name.read_op_per_sec/",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM /collectd.$monitor.cephmetrics.gauge.$cluster_name.pools.$pool_name.recovering_bytes_per_sec/ WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": []
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Recovery Overhead (pools: $pool_name)",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "label": "Bandwidth",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "Workload by Pool",
+ "titleSize": "h6"
+ },
+ {
+ "collapse": false,
+ "height": 223,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "datasource": "${DS_INFLUX}",
+ "fill": 1,
+ "id": 19,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 3,
+ "nullPointMode": "null as zero",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "span": 3,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "GET",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$interval"
+ ],
+ "type": "time"
+ }
+ ],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.rgw.get_initial_lat",
+ "policy": "default",
+ "query": "SELECT mean(\"value\") FROM /collectd.$rgw_name.cephmetrics.gauge.$cluster_name.rgw.get_initial_lat/ WHERE $timeFilter GROUP BY time($interval)",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": []
+ },
+ {
+ "alias": "PUT",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$interval"
+ ],
+ "type": "time"
+ }
+ ],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.rgw.get_initial_lat",
+ "policy": "default",
+ "query": "SELECT mean(\"value\") FROM /collectd.$rgw_name.cephmetrics.gauge.$cluster_name.rgw.put_initial_lat/ WHERE $timeFilter GROUP BY time($interval)",
+ "rawQuery": true,
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": []
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Request Latency",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "s",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "datasource": "${DS_INFLUX}",
+ "fill": 1,
+ "id": 25,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 3,
+ "nullPointMode": "null as zero",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "span": 3,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "GET",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "collectd.obj-rgw-1.storage.lab.cephmetrics.derive.ceph.rgw.get",
+ "policy": "default",
+ "query": "SELECT mean(\"value\") FROM /collectd.$rgw_name.cephmetrics.derive.ceph.rgw.get$/ WHERE $timeFilter GROUP BY time($__interval) fill(null)",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": []
+ },
+ {
+ "alias": "PUT",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "collectd.obj-rgw-1.storage.lab.cephmetrics.derive.ceph.rgw.get",
+ "policy": "default",
+ "query": "SELECT mean(\"value\") FROM /collectd.$rgw_name.cephmetrics.derive.ceph.rgw.put$/ WHERE $timeFilter GROUP BY time($__interval) fill(null)",
+ "rawQuery": true,
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": []
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Requests/sec",
+ "tooltip": {
+ "shared": true,
+ "sort": 1,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "${DS_INFLUX}",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "height": "",
+ "id": 26,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "targets": [
+ {
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "collectd.obj-rgw-1.storage.lab.cephmetrics.derive.ceph.rgw.qlen",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": []
+ }
+ ],
+ "thresholds": "",
+ "title": "Queue",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "avg"
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "RGW Host (S3/Swift)",
+ "titleSize": "h6"
+ },
+ {
+ "collapse": true,
+ "height": 250,
+ "panels": [
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "datasource": "${DS_INFLUX}",
+ "filterNull": false,
+ "fontSize": "100%",
+ "id": 10,
+ "links": [],
+ "minSpan": 3,
+ "pageSize": null,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": null,
+ "desc": false
+ },
+ "span": 3,
+ "styles": [
+ {
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Time",
+ "type": "date"
+ },
+ {
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 0,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "number",
+ "unit": "none"
+ }
+ ],
+ "targets": [
+ {
+ "alias": "Objects",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.cluster.num_object",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": []
+ },
+ {
+ "alias": "Degraded",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.cluster.num_object_degraded",
+ "policy": "default",
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": []
+ },
+ {
+ "alias": "Misplaced",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.cluster.num_object_misplaced",
+ "policy": "default",
+ "refId": "C",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": []
+ },
+ {
+ "alias": "UnFound",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.cluster.num_object_unfound",
+ "policy": "default",
+ "refId": "D",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": []
+ }
+ ],
+ "title": "Object Summary",
+ "transform": "timeseries_aggregations",
+ "type": "table"
+ },
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "datasource": "${DS_INFLUX}",
+ "filterNull": false,
+ "fontSize": "100%",
+ "id": 13,
+ "links": [],
+ "minSpan": 3,
+ "pageSize": null,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": null,
+ "desc": false
+ },
+ "span": 3,
+ "styles": [
+ {
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Time",
+ "type": "date"
+ },
+ {
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 0,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "number",
+ "unit": "none"
+ }
+ ],
+ "targets": [
+ {
+ "alias": "PG's",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.cluster.num_pg",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": []
+ },
+ {
+ "alias": "Active",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.cluster.num_pg_active",
+ "policy": "default",
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": []
+ },
+ {
+ "alias": "Active/Clean",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.cluster.num_pg_active_clean",
+ "policy": "default",
+ "refId": "C",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": []
+ },
+ {
+ "alias": "Peering",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.cluster.num_pg_peering",
+ "policy": "default",
+ "refId": "D",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": []
+ }
+ ],
+ "title": "PG Summary",
+ "transform": "timeseries_aggregations",
+ "type": "table"
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "RADOS",
+ "titleSize": "h6"
+ },
+ {
+ "collapse": true,
+ "height": 250,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "datasource": "${DS_INFLUX}",
+ "fill": 1,
+ "id": 24,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "span": 12,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {}
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Panel Title",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "OSD Breakdown",
+ "titleSize": "h6"
+ }
+ ],
+ "schemaVersion": 14,
+ "style": "dark",
+ "tags": [],
+ "templating": {
+ "list": [
+ {
+ "current": {
+ "value": "${VAR_MONITOR}",
+ "text": "${VAR_MONITOR}"
+ },
+ "hide": 2,
+ "label": null,
+ "name": "monitor",
+ "options": [
+ {
+ "value": "${VAR_MONITOR}",
+ "text": "${VAR_MONITOR}"
+ }
+ ],
+ "query": "${VAR_MONITOR}",
+ "type": "constant"
+ },
+ {
+ "current": {
+ "value": "${VAR_CLUSTER_NAME}",
+ "text": "${VAR_CLUSTER_NAME}"
+ },
+ "hide": 2,
+ "label": null,
+ "name": "cluster_name",
+ "options": [
+ {
+ "value": "${VAR_CLUSTER_NAME}",
+ "text": "${VAR_CLUSTER_NAME}"
+ }
+ ],
+ "query": "${VAR_CLUSTER_NAME}",
+ "type": "constant"
+ },
+ {
+ "allValue": null,
+ "current": {},
+ "datasource": "${DS_INFLUX}",
+ "hide": 0,
+ "includeAll": false,
+ "label": "Pool Name",
+ "multi": false,
+ "name": "pool_name",
+ "options": [],
+ "query": "show series ",
+ "refresh": 1,
+ "regex": "/collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.pools\\.(\\w+)/",
+ "sort": 0,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ },
+ {
+ "allValue": null,
+ "current": {},
+ "datasource": "${DS_INFLUX}",
+ "hide": 0,
+ "includeAll": false,
+ "label": "RGW Host",
+ "multi": false,
+ "name": "rgw_name",
+ "options": [],
+ "query": "show series",
+ "refresh": 1,
+ "regex": "/collectd\\.(.*)\\.cephmetrics.*\\.rgw/",
+ "sort": 0,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ }
+ ]
+ },
+ "time": {
+ "from": "now-1h",
+ "to": "now"
+ },
+ "timepicker": {
+ "refresh_intervals": [
+ "5s",
+ "10s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ],
+ "time_options": [
+ "5m",
+ "15m",
+ "1h",
+ "6h",
+ "12h",
+ "24h",
+ "2d",
+ "7d",
+ "30d"
+ ]
+ },
+ "timezone": "browser",
+ "title": "Ceph Dashboard",
+ "version": 57
+}
\ No newline at end of file
--- /dev/null
+{
+ "__inputs": [
+ {
+ "name": "DS_LOCAL",
+ "label": "Local",
+ "description": "",
+ "type": "datasource",
+ "pluginId": "graphite",
+ "pluginName": "Graphite"
+ },
+ {
+ "name": "VAR_MONITOR",
+ "type": "constant",
+ "label": "monitor",
+ "value": "obj-mon-1.storage.lab",
+ "description": ""
+ },
+ {
+ "name": "VAR_CLUSTER_NAME",
+ "type": "constant",
+ "label": "cluster_name",
+ "value": "ceph",
+ "description": ""
+ },
+ {
+ "name": "VAR_RGW_NAME",
+ "type": "constant",
+ "label": "RGW Host",
+ "value": "obj-rgw-1",
+ "description": ""
+ },
+ {
+ "name": "VAR_DOMAIN",
+ "type": "constant",
+ "label": "domain",
+ "value": "storage.lab",
+ "description": ""
+ }
+ ],
+ "__requires": [
+ {
+ "type": "grafana",
+ "id": "grafana",
+ "name": "Grafana",
+ "version": "4.2.0"
+ },
+ {
+ "type": "panel",
+ "id": "graph",
+ "name": "Graph",
+ "version": ""
+ },
+ {
+ "type": "datasource",
+ "id": "graphite",
+ "name": "Graphite",
+ "version": "1.0.0"
+ },
+ {
+ "type": "panel",
+ "id": "singlestat",
+ "name": "Singlestat",
+ "version": ""
+ },
+ {
+ "type": "panel",
+ "id": "table",
+ "name": "Table",
+ "version": ""
+ }
+ ],
+ "annotations": {
+ "list": []
+ },
+ "editable": true,
+ "gnetId": null,
+ "graphTooltip": 0,
+ "hideControls": false,
+ "id": null,
+ "links": [],
+ "refresh": "10s",
+ "rows": [
+ {
+ "collapse": false,
+ "height": 243,
+ "panels": [
+ {
+ "cacheTimeout": null,
+ "colorBackground": true,
+ "colorValue": false,
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "datasource": "${DS_LOCAL}",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 28,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "targets": [
+ {
+ "refId": "A",
+ "target": "collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.health"
+ }
+ ],
+ "thresholds": "1",
+ "title": "Health",
+ "type": "singlestat",
+ "valueFontSize": "100%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "OK",
+ "value": "0"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "${DS_LOCAL}",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 1,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "targets": [
+ {
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_mon",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM \"collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_mon\" WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_mon",
+ "textEditor": true
+ }
+ ],
+ "thresholds": "",
+ "title": "Monitors",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "avg"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "${DS_LOCAL}",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 27,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "targets": [
+ {
+ "refId": "A",
+ "target": "collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_osd"
+ }
+ ],
+ "thresholds": "",
+ "title": "OSDs",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "avg"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "${DS_LOCAL}",
+ "format": "bytes",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 7,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 2,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(193, 106, 31)",
+ "show": true
+ },
+ "targets": [
+ {
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools._all_.recovering_bytes_per_sec",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM \"collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools._all_.recovering_bytes_per_sec\" WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools._all_.recovering_bytes_per_sec",
+ "textEditor": true
+ }
+ ],
+ "thresholds": "",
+ "title": "Recovery Workload",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "${DS_LOCAL}",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 9,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 2,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": true
+ },
+ "targets": [
+ {
+ "dsType": "influxdb",
+ "groupBy": [],
+ "hide": true,
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools._all_.read_op_per_sec",
+ "policy": "default",
+ "query": "SELECT mean(\"value\") FROM \"measurement\" WHERE $timeFilter GROUP BY time($__interval) fill(null)",
+ "rawQuery": false,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools._all_.read_op_per_sec"
+ },
+ {
+ "dsType": "influxdb",
+ "groupBy": [],
+ "hide": true,
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools._all_.read_op_per_sec",
+ "policy": "default",
+ "query": "SELECT mean(\"value\") FROM \"measurement\" WHERE $timeFilter GROUP BY time($__interval) fill(null)",
+ "rawQuery": false,
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools._all_.write_op_per_sec"
+ },
+ {
+ "refId": "C",
+ "target": "sumSeries(#A, #B).select metric",
+ "targetFull": "sumSeries(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools._all_.read_op_per_sec, collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools._all_.write_op_per_sec).select metric"
+ }
+ ],
+ "thresholds": "",
+ "title": "Client IOPS",
+ "type": "singlestat",
+ "valueFontSize": "100%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "${DS_LOCAL}",
+ "decimals": 1,
+ "format": "bytes",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 23,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 2,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": true
+ },
+ "targets": [
+ {
+ "dsType": "influxdb",
+ "groupBy": [],
+ "hide": true,
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools._all_.read_op_per_sec",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM \"collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools._all_.read_bytes_sec\" WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools._all_.read_bytes_sec"
+ },
+ {
+ "dsType": "influxdb",
+ "groupBy": [],
+ "hide": true,
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools._all_.read_op_per_sec",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM \"collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools._all_.read_bytes_sec\" WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "collectd.$monitor.cephmetrics.gauge.$cluster_name.pools._all_.write_bytes_sec"
+ },
+ {
+ "refId": "C",
+ "target": "sumSeries(#A,#B).select metric",
+ "targetFull": "sumSeries(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools._all_.read_bytes_sec,collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools._all_.write_bytes_sec).select metric"
+ }
+ ],
+ "thresholds": "",
+ "title": "Client Bandwidth",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "datasource": "${DS_LOCAL}",
+ "decimals": 1,
+ "format": "bytes",
+ "gauge": {
+ "maxValue": 50465865728,
+ "minValue": 0,
+ "show": true,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 8,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 2,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "targets": [
+ {
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.osd_bytes_used",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.osd_bytes_used"
+ }
+ ],
+ "thresholds": "35949672960,42949672960",
+ "title": "Capacity Used",
+ "type": "singlestat",
+ "valueFontSize": "50%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "Overview",
+ "titleSize": "h6"
+ },
+ {
+ "collapse": true,
+ "height": 256,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "datasource": "${DS_LOCAL}",
+ "fill": 1,
+ "id": 3,
+ "legend": {
+ "avg": false,
+ "current": true,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "span": 7,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "Raw Capacity",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.osd_bytes",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.osd_bytes, 'Raw')"
+ },
+ {
+ "alias": "Used",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.osd_bytes_used",
+ "policy": "default",
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.osd_bytes_used, 'Used')"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Cluster Capacity",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "${DS_LOCAL}",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 17,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "targets": [
+ {
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_pool",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_pool"
+ }
+ ],
+ "thresholds": "",
+ "title": "Pools",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "avg"
+ },
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "filterNull": false,
+ "fontSize": "100%",
+ "id": 18,
+ "links": [],
+ "minSpan": 2,
+ "pageSize": null,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": 0,
+ "desc": true
+ },
+ "span": 2,
+ "styles": [
+ {
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Time",
+ "type": "date"
+ },
+ {
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 0,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "alias": "OSD's Up",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_osd_in",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM \"collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_osd_up\" WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "C",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_osd, 'OSDs')"
+ },
+ {
+ "alias": "OSD's Up",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_osd_in",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM \"collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_osd_up\" WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_osd_in, 'OSDs In')"
+ },
+ {
+ "alias": "OSD's Up",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_osd_in",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM \"collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_osd_up\" WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_osd_up, 'OSDs Up')"
+ }
+ ],
+ "title": "OSD State",
+ "transform": "timeseries_aggregations",
+ "type": "table"
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "Cluster Capacity",
+ "titleSize": "h6"
+ },
+ {
+ "collapse": true,
+ "height": 238,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "datasource": "${DS_LOCAL}",
+ "fill": 1,
+ "id": 11,
+ "legend": {
+ "avg": false,
+ "current": true,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "span": 4,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "/collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools.$pool_name.read_op_per_sec/",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM /collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.read_op_per_sec/ WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.read_op_per_sec, 'Reads')"
+ },
+ {
+ "alias": "",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "/collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools.$pool_name.read_op_per_sec/",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM /collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.read_op_per_sec/ WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.write_op_per_sec, 'Writes')"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Client Workload IOPS (pools: $pool_name)",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "IOPS",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "datasource": "${DS_LOCAL}",
+ "fill": 1,
+ "id": 21,
+ "legend": {
+ "avg": false,
+ "current": true,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "span": 4,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "/collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools.$pool_name.read_op_per_sec/",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM /collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools.$pool_name.read_bytes_sec/ WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.read_bytes_sec, 'Read')"
+ },
+ {
+ "alias": "",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "/collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools.$pool_name.read_op_per_sec/",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM /collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools.$pool_name.read_bytes_sec/ WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "C",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.write_bytes_sec, 'Write')"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Client Workload Throughput (pools: $pool_name)",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "label": "Bandwidth",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {
+ "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools._all_.recovering_bytes_per_sec": "#C15C17"
+ },
+ "bars": false,
+ "datasource": "${DS_LOCAL}",
+ "fill": 1,
+ "id": 22,
+ "legend": {
+ "avg": false,
+ "current": true,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "span": 4,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "/collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools.$pool_name.read_op_per_sec/",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM /collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.recovering_bytes_per_sec/ WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.recovering_bytes_per_sec"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Recovery Overhead (pools: $pool_name)",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "label": "Bandwidth",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "Workload by Pool",
+ "titleSize": "h6"
+ },
+ {
+ "collapse": true,
+ "height": 302,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "datasource": "${DS_LOCAL}",
+ "fill": 1,
+ "id": 19,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 5,
+ "nullPointMode": "null as zero",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "span": 5,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "GET",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$interval"
+ ],
+ "type": "time"
+ }
+ ],
+ "hide": true,
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.rgw.get_initial_lat",
+ "policy": "default",
+ "query": "SELECT mean(\"value\") FROM /collectd.$rgw_name.cephmetrics.gauge.$cluster_name.rgw.get_initial_lat/ WHERE $timeFilter GROUP BY time($interval)",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "collectd.$rgw_name.$domain.cephmetrics.derive.$cluster_name.rgw.get_initial_lat_avgcount"
+ },
+ {
+ "alias": "GET",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$interval"
+ ],
+ "type": "time"
+ }
+ ],
+ "hide": true,
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.rgw.get_initial_lat",
+ "policy": "default",
+ "query": "SELECT mean(\"value\") FROM /collectd.$rgw_name.cephmetrics.gauge.$cluster_name.rgw.get_initial_lat/ WHERE $timeFilter GROUP BY time($interval)",
+ "rawQuery": true,
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "collectd.$rgw_name.$domain.cephmetrics.derive.$cluster_name.rgw.get_initial_lat_sum"
+ },
+ {
+ "refId": "C",
+ "target": "alias(divideSeries(#B, #A),\"GET\")",
+ "targetFull": "divideSeries(collectd.$rgw_name.$domain.cephmetrics.derive.$cluster_name.rgw.get_initial_lat_sum, collectd.$rgw_name.$domain.cephmetrics.derive.$cluster_name.rgw.get_initial_lat_avgcount).select metric",
+ "textEditor": true
+ },
+ {
+ "alias": "GET",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$interval"
+ ],
+ "type": "time"
+ }
+ ],
+ "hide": true,
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.rgw.get_initial_lat",
+ "policy": "default",
+ "query": "SELECT mean(\"value\") FROM /collectd.$rgw_name.cephmetrics.gauge.$cluster_name.rgw.get_initial_lat/ WHERE $timeFilter GROUP BY time($interval)",
+ "rawQuery": true,
+ "refId": "D",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "collectd.$rgw_name.$domain.cephmetrics.derive.$cluster_name.rgw.put_initial_lat_avgcount"
+ },
+ {
+ "alias": "GET",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$interval"
+ ],
+ "type": "time"
+ }
+ ],
+ "hide": true,
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.rgw.get_initial_lat",
+ "policy": "default",
+ "query": "SELECT mean(\"value\") FROM /collectd.$rgw_name.cephmetrics.gauge.$cluster_name.rgw.get_initial_lat/ WHERE $timeFilter GROUP BY time($interval)",
+ "rawQuery": true,
+ "refId": "E",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "collectd.$rgw_name.$domain.cephmetrics.derive.$cluster_name.rgw.put_initial_lat_sum"
+ },
+ {
+ "refId": "F",
+ "target": "alias(divideSeries(#E,#D), \"PUT\")",
+ "targetFull": "divideSeries(collectd.$rgw_name.$domain.cephmetrics.derive.$cluster_name.rgw.put_initial_lat_sum,collectd.$rgw_name.$domain.cephmetrics.derive.$cluster_name.rgw.put_initial_lat_avgcount).select metric",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Request Latency",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "s",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "datasource": "${DS_LOCAL}",
+ "fill": 1,
+ "id": 25,
+ "legend": {
+ "alignAsTable": false,
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "rightSide": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 5,
+ "nullPointMode": "null as zero",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "span": 5,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "GET",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "collectd.obj-rgw-1.storage.lab.cephmetrics.derive.ceph.rgw.get",
+ "policy": "default",
+ "query": "SELECT mean(\"value\") FROM /collectd.$rgw_name.cephmetrics.derive.ceph.rgw.get$/ WHERE $timeFilter GROUP BY time($__interval) fill(null)",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$rgw_name.$domain.cephmetrics.derive.$cluster_name.rgw.get, 'GET')"
+ },
+ {
+ "alias": "PUT",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "collectd.obj-rgw-1.storage.lab.cephmetrics.derive.ceph.rgw.get",
+ "policy": "default",
+ "query": "SELECT mean(\"value\") FROM /collectd.$rgw_name.cephmetrics.derive.ceph.rgw.put$/ WHERE $timeFilter GROUP BY time($__interval) fill(null)",
+ "rawQuery": true,
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$rgw_name.$domain.cephmetrics.derive.$cluster_name.rgw.put, 'PUT')"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Requests/sec",
+ "tooltip": {
+ "shared": true,
+ "sort": 1,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "${DS_LOCAL}",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "height": "",
+ "id": 26,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "targets": [
+ {
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "collectd.obj-rgw-1.storage.lab.cephmetrics.derive.ceph.rgw.qlen",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "collectd.$rgw_name.$domain.cephmetrics.derive.$cluster_name.rgw.qlen"
+ }
+ ],
+ "thresholds": "",
+ "title": "Queue",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "avg"
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "RGW Host (S3/Swift)",
+ "titleSize": "h6"
+ },
+ {
+ "collapse": true,
+ "height": 250,
+ "panels": [
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "datasource": "${DS_LOCAL}",
+ "filterNull": false,
+ "fontSize": "100%",
+ "id": 10,
+ "links": [],
+ "minSpan": 3,
+ "pageSize": null,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": null,
+ "desc": false
+ },
+ "span": 3,
+ "styles": [
+ {
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Time",
+ "type": "date"
+ },
+ {
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 0,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "number",
+ "unit": "none"
+ }
+ ],
+ "targets": [
+ {
+ "alias": "Objects",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_object",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_object, 'Objects')"
+ },
+ {
+ "alias": "Objects",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_object",
+ "policy": "default",
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_object_degraded, 'Objects degraded')"
+ },
+ {
+ "alias": "Objects",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_object",
+ "policy": "default",
+ "refId": "C",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_object_misplaced, 'Objects misplaced')"
+ },
+ {
+ "alias": "Objects",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_object",
+ "policy": "default",
+ "refId": "D",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_object_unfound, 'Objects unfound')"
+ }
+ ],
+ "title": "Object Summary",
+ "transform": "timeseries_aggregations",
+ "type": "table"
+ },
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "datasource": "${DS_LOCAL}",
+ "filterNull": false,
+ "fontSize": "100%",
+ "id": 13,
+ "links": [],
+ "minSpan": 3,
+ "pageSize": null,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": null,
+ "desc": false
+ },
+ "span": 3,
+ "styles": [
+ {
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Time",
+ "type": "date"
+ },
+ {
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 0,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "number",
+ "unit": "none"
+ }
+ ],
+ "targets": [
+ {
+ "alias": "PG's",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_pg",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_pg, 'PGs')"
+ },
+ {
+ "alias": "PG's",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_pg",
+ "policy": "default",
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_pg_active, 'Active PGs')"
+ },
+ {
+ "alias": "PG's",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_pg",
+ "policy": "default",
+ "refId": "C",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_pg_active_clean, 'Active+clean PGs')"
+ },
+ {
+ "alias": "PG's",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_pg",
+ "policy": "default",
+ "refId": "D",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_pg_peering, 'PGs peering')"
+ }
+ ],
+ "title": "PG Summary",
+ "transform": "timeseries_aggregations",
+ "type": "table"
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "RADOS",
+ "titleSize": "h6"
+ },
+ {
+ "collapse": true,
+ "height": 250,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "datasource": "${DS_LOCAL}",
+ "fill": 1,
+ "id": 24,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "span": 12,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {}
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Panel Title",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "OSD Breakdown",
+ "titleSize": "h6"
+ },
+ {
+ "collapse": true,
+ "height": 250,
+ "panels": [
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "filterNull": false,
+ "fontSize": "100%",
+ "height": "245px",
+ "id": 16,
+ "links": [],
+ "minSpan": 2,
+ "pageSize": null,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": 0,
+ "desc": false
+ },
+ "span": 12,
+ "styles": [
+ {
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Time",
+ "type": "date"
+ },
+ {
+ "colorMode": "value",
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "decimals": 0,
+ "pattern": "/.*/",
+ "thresholds": [
+ "1",
+ "50"
+ ],
+ "type": "number",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "alias": "PG's peering",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_pg_peering",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM \"collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_pg_peering\" WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_object_degraded, 'Objects degraded')",
+ "textEditor": false
+ },
+ {
+ "alias": "Object Degraded",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_object_degraded",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM \"collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_object_degraded\" WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_pg_peering, 'PGs peering')"
+ },
+ {
+ "alias": "Objects Unfound",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_object_unfound",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM \"collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_object_unfound\" WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "C",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_object_unfound, 'Objects unfound')"
+ },
+ {
+ "alias": "Objects Recovering",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools._all_.recovering_objects_per_sec",
+ "policy": "default",
+ "refId": "D",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools._all_.recovering_objects_per_sec, 'Objects recovering')"
+ }
+ ],
+ "title": "Health Indicators",
+ "transform": "timeseries_aggregations",
+ "type": "table"
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": false,
+ "title": "Dashboard Row",
+ "titleSize": "h6"
+ }
+ ],
+ "schemaVersion": 14,
+ "style": "dark",
+ "tags": [],
+ "templating": {
+ "list": [
+ {
+ "current": {
+ "value": "${VAR_MONITOR}",
+ "text": "${VAR_MONITOR}"
+ },
+ "hide": 2,
+ "label": null,
+ "name": "monitor",
+ "options": [
+ {
+ "value": "${VAR_MONITOR}",
+ "text": "${VAR_MONITOR}"
+ }
+ ],
+ "query": "${VAR_MONITOR}",
+ "type": "constant"
+ },
+ {
+ "current": {
+ "value": "${VAR_CLUSTER_NAME}",
+ "text": "${VAR_CLUSTER_NAME}"
+ },
+ "hide": 2,
+ "label": null,
+ "name": "cluster_name",
+ "options": [
+ {
+ "value": "${VAR_CLUSTER_NAME}",
+ "text": "${VAR_CLUSTER_NAME}"
+ }
+ ],
+ "query": "${VAR_CLUSTER_NAME}",
+ "type": "constant"
+ },
+ {
+ "allValue": null,
+ "current": {},
+ "datasource": "${DS_LOCAL}",
+ "hide": 2,
+ "includeAll": false,
+ "label": "Pool Name",
+ "multi": false,
+ "name": "pool_name_old",
+ "options": [],
+ "query": "show series ",
+ "refresh": 1,
+ "regex": "/collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools\\.(\\w+)/",
+ "sort": 0,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ },
+ {
+ "allValue": null,
+ "current": {},
+ "datasource": "${DS_LOCAL}",
+ "hide": 2,
+ "includeAll": false,
+ "label": "RGW Host",
+ "multi": false,
+ "name": "rgw_name_old",
+ "options": [],
+ "query": "show series",
+ "refresh": 1,
+ "regex": "/collectd\\.(.*)\\.cephmetrics.*\\.rgw/",
+ "sort": 0,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ },
+ {
+ "allValue": null,
+ "current": {},
+ "datasource": "${DS_LOCAL}",
+ "hide": 0,
+ "includeAll": false,
+ "label": "Pool Name",
+ "multi": false,
+ "name": "pool_name",
+ "options": [],
+ "query": "collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools.*",
+ "refresh": 1,
+ "regex": "",
+ "sort": 0,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ },
+ {
+ "current": {
+ "value": "${VAR_RGW_NAME}",
+ "text": "${VAR_RGW_NAME}"
+ },
+ "hide": 0,
+ "label": "RGW Host",
+ "name": "rgw_name",
+ "options": [
+ {
+ "value": "${VAR_RGW_NAME}",
+ "text": "${VAR_RGW_NAME}"
+ }
+ ],
+ "query": "${VAR_RGW_NAME}",
+ "type": "constant"
+ },
+ {
+ "current": {
+ "value": "${VAR_DOMAIN}",
+ "text": "${VAR_DOMAIN}"
+ },
+ "hide": 2,
+ "label": null,
+ "name": "domain",
+ "options": [
+ {
+ "value": "${VAR_DOMAIN}",
+ "text": "${VAR_DOMAIN}"
+ }
+ ],
+ "query": "${VAR_DOMAIN}",
+ "type": "constant"
+ }
+ ]
+ },
+ "time": {
+ "from": "now-1h",
+ "to": "now"
+ },
+ "timepicker": {
+ "refresh_intervals": [
+ "5s",
+ "10s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ],
+ "time_options": [
+ "5m",
+ "15m",
+ "1h",
+ "6h",
+ "12h",
+ "24h",
+ "2d",
+ "7d",
+ "30d"
+ ]
+ },
+ "timezone": "browser",
+ "title": "Ceph Dashboard (Graphite)",
+ "version": 1
+}
\ No newline at end of file
--- /dev/null
+{
+ "__inputs": [
+ {
+ "name": "DS_LOCAL",
+ "label": "Local",
+ "description": "",
+ "type": "datasource",
+ "pluginId": "graphite",
+ "pluginName": "Graphite"
+ },
+ {
+ "name": "VAR_MONITOR",
+ "type": "constant",
+ "label": "monitor",
+ "value": "obj-mon-1.storage.lab",
+ "description": ""
+ },
+ {
+ "name": "VAR_CLUSTER_NAME",
+ "type": "constant",
+ "label": "cluster_name",
+ "value": "ceph",
+ "description": ""
+ },
+ {
+ "name": "VAR_DOMAIN",
+ "type": "constant",
+ "label": "domain",
+ "value": "storage.lab",
+ "description": ""
+ }
+ ],
+ "__requires": [
+ {
+ "type": "grafana",
+ "id": "grafana",
+ "name": "Grafana",
+ "version": "4.2.0"
+ },
+ {
+ "type": "panel",
+ "id": "graph",
+ "name": "Graph",
+ "version": ""
+ },
+ {
+ "type": "datasource",
+ "id": "graphite",
+ "name": "Graphite",
+ "version": "1.0.0"
+ },
+ {
+ "type": "panel",
+ "id": "singlestat",
+ "name": "Singlestat",
+ "version": ""
+ },
+ {
+ "type": "panel",
+ "id": "table",
+ "name": "Table",
+ "version": ""
+ }
+ ],
+ "annotations": {
+ "list": []
+ },
+ "editable": true,
+ "gnetId": null,
+ "graphTooltip": 0,
+ "hideControls": false,
+ "id": null,
+ "links": [],
+ "refresh": "10s",
+ "rows": [
+ {
+ "collapse": false,
+ "height": 243,
+ "panels": [
+ {
+ "cacheTimeout": null,
+ "colorBackground": true,
+ "colorValue": false,
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "datasource": "${DS_LOCAL}",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 28,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "targets": [
+ {
+ "refId": "A",
+ "target": "collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.health"
+ }
+ ],
+ "thresholds": "1",
+ "title": "Health",
+ "type": "singlestat",
+ "valueFontSize": "100%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "OK",
+ "value": "0"
+ },
+ {
+ "op": "=",
+ "text": "Warning",
+ "value": "4"
+ },
+ {
+ "op": "=",
+ "text": "Error",
+ "value": "8"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "${DS_LOCAL}",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 1,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "targets": [
+ {
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_mon",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM \"collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_mon\" WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_mon",
+ "textEditor": true
+ }
+ ],
+ "thresholds": "",
+ "title": "Monitors",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "avg"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "${DS_LOCAL}",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 27,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "targets": [
+ {
+ "refId": "A",
+ "target": "collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_osd"
+ }
+ ],
+ "thresholds": "",
+ "title": "OSDs",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "avg"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "${DS_LOCAL}",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 33,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "targets": [
+ {
+ "refId": "A",
+ "target": "sumSeries(offset(scale(collectd.*.$domain.cephmetrics.derive.$cluster_name.rgw.put,0),1))",
+ "textEditor": true
+ }
+ ],
+ "thresholds": "",
+ "title": "RGW Hosts",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "${DS_LOCAL}",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 34,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "targets": [
+ {
+ "refId": "A",
+ "target": "collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_mds_in"
+ }
+ ],
+ "thresholds": "",
+ "title": "MDS",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "avg"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "${DS_LOCAL}",
+ "format": "bytes",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 7,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(193, 106, 31)",
+ "show": true
+ },
+ "targets": [
+ {
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools._all_.recovering_bytes_per_sec",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM \"collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools._all_.recovering_bytes_per_sec\" WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools._all_.recovering_bytes_per_sec",
+ "textEditor": true
+ }
+ ],
+ "thresholds": "",
+ "title": "Recovery",
+ "type": "singlestat",
+ "valueFontSize": "70%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "${DS_LOCAL}",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 9,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": true
+ },
+ "targets": [
+ {
+ "dsType": "influxdb",
+ "groupBy": [],
+ "hide": true,
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools._all_.read_op_per_sec",
+ "policy": "default",
+ "query": "SELECT mean(\"value\") FROM \"measurement\" WHERE $timeFilter GROUP BY time($__interval) fill(null)",
+ "rawQuery": false,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools._all_.read_op_per_sec"
+ },
+ {
+ "dsType": "influxdb",
+ "groupBy": [],
+ "hide": true,
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools._all_.read_op_per_sec",
+ "policy": "default",
+ "query": "SELECT mean(\"value\") FROM \"measurement\" WHERE $timeFilter GROUP BY time($__interval) fill(null)",
+ "rawQuery": false,
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools._all_.write_op_per_sec"
+ },
+ {
+ "refId": "C",
+ "target": "sumSeries(#A, #B).select metric",
+ "targetFull": "sumSeries(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools._all_.read_op_per_sec, collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools._all_.write_op_per_sec).select metric"
+ }
+ ],
+ "thresholds": "",
+ "title": "Client IOPS",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "${DS_LOCAL}",
+ "decimals": 1,
+ "format": "bytes",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 23,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": true
+ },
+ "targets": [
+ {
+ "dsType": "influxdb",
+ "groupBy": [],
+ "hide": true,
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools._all_.read_op_per_sec",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM \"collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools._all_.read_bytes_sec\" WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools._all_.read_bytes_sec"
+ },
+ {
+ "dsType": "influxdb",
+ "groupBy": [],
+ "hide": true,
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools._all_.read_op_per_sec",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM \"collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools._all_.read_bytes_sec\" WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "collectd.$monitor.cephmetrics.gauge.$cluster_name.pools._all_.write_bytes_sec"
+ },
+ {
+ "refId": "C",
+ "target": "sumSeries(#A,#B).select metric",
+ "targetFull": "sumSeries(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools._all_.read_bytes_sec,collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools._all_.write_bytes_sec).select metric"
+ }
+ ],
+ "thresholds": "",
+ "title": "Client Load",
+ "type": "singlestat",
+ "valueFontSize": "70%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "datasource": "${DS_LOCAL}",
+ "decimals": 1,
+ "format": "bytes",
+ "gauge": {
+ "maxValue": 50465865728,
+ "minValue": 0,
+ "show": true,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 8,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 2,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "targets": [
+ {
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.osd_bytes_used",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.osd_bytes_used"
+ }
+ ],
+ "thresholds": "35949672960,42949672960",
+ "title": "Capacity Used",
+ "type": "singlestat",
+ "valueFontSize": "50%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "Overview",
+ "titleSize": "h6"
+ },
+ {
+ "collapse": false,
+ "height": 256,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "datasource": "${DS_LOCAL}",
+ "fill": 1,
+ "id": 3,
+ "legend": {
+ "avg": false,
+ "current": true,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "span": 7,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "Raw Capacity",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.osd_bytes",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.osd_bytes, 'Raw')"
+ },
+ {
+ "alias": "Used",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.osd_bytes_used",
+ "policy": "default",
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.osd_bytes_used, 'Used')"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Cluster Capacity",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "${DS_LOCAL}",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 17,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "targets": [
+ {
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_pool",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_pool"
+ }
+ ],
+ "thresholds": "",
+ "title": "Pools",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "avg"
+ },
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "filterNull": false,
+ "fontSize": "100%",
+ "id": 18,
+ "links": [],
+ "minSpan": 2,
+ "pageSize": null,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": 0,
+ "desc": true
+ },
+ "span": 2,
+ "styles": [
+ {
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Time",
+ "type": "date"
+ },
+ {
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 0,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "alias": "OSD's Up",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_osd_in",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM \"collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_osd_up\" WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "C",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_osd, 'OSDs')"
+ },
+ {
+ "alias": "OSD's Up",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_osd_in",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM \"collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_osd_up\" WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_osd_in, 'OSDs In')"
+ },
+ {
+ "alias": "OSD's Up",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_osd_in",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM \"collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_osd_up\" WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_osd_up, 'OSDs Up')"
+ }
+ ],
+ "title": "OSD State",
+ "transform": "timeseries_aggregations",
+ "type": "table"
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "Cluster Capacity",
+ "titleSize": "h6"
+ },
+ {
+ "collapse": false,
+ "height": 238,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "datasource": "${DS_LOCAL}",
+ "fill": 1,
+ "id": 11,
+ "legend": {
+ "avg": false,
+ "current": true,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "span": 4,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "/collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools.$pool_name.read_op_per_sec/",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM /collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.read_op_per_sec/ WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.read_op_per_sec, 'Reads')"
+ },
+ {
+ "alias": "",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "/collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools.$pool_name.read_op_per_sec/",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM /collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.read_op_per_sec/ WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.write_op_per_sec, 'Writes')"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Client Workload IOPS (pools: $pool_name)",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "IOPS",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "datasource": "${DS_LOCAL}",
+ "fill": 1,
+ "id": 21,
+ "legend": {
+ "avg": false,
+ "current": true,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "span": 4,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "/collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools.$pool_name.read_op_per_sec/",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM /collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools.$pool_name.read_bytes_sec/ WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.read_bytes_sec, 'Read')"
+ },
+ {
+ "alias": "",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "/collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools.$pool_name.read_op_per_sec/",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM /collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools.$pool_name.read_bytes_sec/ WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "C",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.write_bytes_sec, 'Write')"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Client Workload Throughput (pools: $pool_name)",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "label": "Bandwidth",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {
+ "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools._all_.recovering_bytes_per_sec": "#C15C17"
+ },
+ "bars": false,
+ "datasource": "${DS_LOCAL}",
+ "fill": 1,
+ "id": 22,
+ "legend": {
+ "avg": false,
+ "current": true,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "span": 4,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "/collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools.$pool_name.read_op_per_sec/",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM /collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.recovering_bytes_per_sec/ WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.recovering_bytes_per_sec"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Recovery Overhead (pools: $pool_name)",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "label": "Bandwidth",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "Workload Detail by Pool",
+ "titleSize": "h6"
+ },
+ {
+ "collapse": false,
+ "height": 302,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "datasource": "${DS_LOCAL}",
+ "fill": 1,
+ "id": 19,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 5,
+ "nullPointMode": "null as zero",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "span": 3,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "GET",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$interval"
+ ],
+ "type": "time"
+ }
+ ],
+ "hide": true,
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.rgw.get_initial_lat",
+ "policy": "default",
+ "query": "SELECT mean(\"value\") FROM /collectd.$rgw_name.cephmetrics.gauge.$cluster_name.rgw.get_initial_lat/ WHERE $timeFilter GROUP BY time($interval)",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "collectd.$rgw_name.$domain.cephmetrics.derive.$cluster_name.rgw.get_initial_lat_avgcount"
+ },
+ {
+ "alias": "GET",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$interval"
+ ],
+ "type": "time"
+ }
+ ],
+ "hide": true,
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.rgw.get_initial_lat",
+ "policy": "default",
+ "query": "SELECT mean(\"value\") FROM /collectd.$rgw_name.cephmetrics.gauge.$cluster_name.rgw.get_initial_lat/ WHERE $timeFilter GROUP BY time($interval)",
+ "rawQuery": true,
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "collectd.$rgw_name.$domain.cephmetrics.derive.$cluster_name.rgw.get_initial_lat_sum"
+ },
+ {
+ "refId": "C",
+ "target": "alias(divideSeries(#B, #A),\"GET\")",
+ "targetFull": "divideSeries(collectd.$rgw_name.$domain.cephmetrics.derive.$cluster_name.rgw.get_initial_lat_sum, collectd.$rgw_name.$domain.cephmetrics.derive.$cluster_name.rgw.get_initial_lat_avgcount).select metric",
+ "textEditor": true
+ },
+ {
+ "alias": "GET",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$interval"
+ ],
+ "type": "time"
+ }
+ ],
+ "hide": true,
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.rgw.get_initial_lat",
+ "policy": "default",
+ "query": "SELECT mean(\"value\") FROM /collectd.$rgw_name.cephmetrics.gauge.$cluster_name.rgw.get_initial_lat/ WHERE $timeFilter GROUP BY time($interval)",
+ "rawQuery": true,
+ "refId": "D",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "collectd.$rgw_name.$domain.cephmetrics.derive.$cluster_name.rgw.put_initial_lat_avgcount"
+ },
+ {
+ "alias": "GET",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$interval"
+ ],
+ "type": "time"
+ }
+ ],
+ "hide": true,
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.rgw.get_initial_lat",
+ "policy": "default",
+ "query": "SELECT mean(\"value\") FROM /collectd.$rgw_name.cephmetrics.gauge.$cluster_name.rgw.get_initial_lat/ WHERE $timeFilter GROUP BY time($interval)",
+ "rawQuery": true,
+ "refId": "E",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "collectd.$rgw_name.$domain.cephmetrics.derive.$cluster_name.rgw.put_initial_lat_sum"
+ },
+ {
+ "refId": "F",
+ "target": "alias(divideSeries(#E,#D), \"PUT\")",
+ "targetFull": "divideSeries(collectd.$rgw_name.$domain.cephmetrics.derive.$cluster_name.rgw.put_initial_lat_sum,collectd.$rgw_name.$domain.cephmetrics.derive.$cluster_name.rgw.put_initial_lat_avgcount).select metric",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Request Latency",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "s",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "datasource": "${DS_LOCAL}",
+ "fill": 1,
+ "id": 25,
+ "legend": {
+ "alignAsTable": false,
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "rightSide": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 5,
+ "nullPointMode": "null as zero",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "span": 3,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "GET",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "collectd.obj-rgw-1.storage.lab.cephmetrics.derive.ceph.rgw.get",
+ "policy": "default",
+ "query": "SELECT mean(\"value\") FROM /collectd.$rgw_name.cephmetrics.derive.ceph.rgw.get$/ WHERE $timeFilter GROUP BY time($__interval) fill(null)",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$rgw_name.$domain.cephmetrics.derive.$cluster_name.rgw.get, 'GET')"
+ },
+ {
+ "alias": "PUT",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "collectd.obj-rgw-1.storage.lab.cephmetrics.derive.ceph.rgw.get",
+ "policy": "default",
+ "query": "SELECT mean(\"value\") FROM /collectd.$rgw_name.cephmetrics.derive.ceph.rgw.put$/ WHERE $timeFilter GROUP BY time($__interval) fill(null)",
+ "rawQuery": true,
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$rgw_name.$domain.cephmetrics.derive.$cluster_name.rgw.put, 'PUT')"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Requests/sec",
+ "tooltip": {
+ "shared": true,
+ "sort": 1,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "${DS_LOCAL}",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "height": "",
+ "id": 26,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "targets": [
+ {
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "collectd.obj-rgw-1.storage.lab.cephmetrics.derive.ceph.rgw.qlen",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "collectd.$rgw_name.$domain.cephmetrics.derive.$cluster_name.rgw.qlen"
+ }
+ ],
+ "thresholds": "",
+ "title": "Queue",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "avg"
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "datasource": "${DS_LOCAL}",
+ "fill": 1,
+ "id": 32,
+ "legend": {
+ "avg": false,
+ "current": true,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 2,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "span": 2,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(scale(averageSeries(collectd.$rgw_name.$domain.cpu.*.cpu.idle),0.01), 1)",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "CPU Busy",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "percent",
+ "label": "",
+ "logBase": 1,
+ "max": "100",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "datasource": "${DS_LOCAL}",
+ "fill": 1,
+ "id": 31,
+ "legend": {
+ "avg": false,
+ "current": true,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 3,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "span": 3,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "alias(sumSeries(collectd.$rgw_name.$domain.interface.*.if_octets.rx), 'rx')"
+ },
+ {
+ "refId": "B",
+ "target": "alias(sumSeries(collectd.$rgw_name.$domain.interface.*.if_octets.tx), 'tx')"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Network Load",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "Bps",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "RGW Host (S3/Swift)",
+ "titleSize": "h6"
+ },
+ {
+ "collapse": false,
+ "height": 250,
+ "panels": [
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "datasource": "${DS_LOCAL}",
+ "filterNull": false,
+ "fontSize": "100%",
+ "id": 10,
+ "links": [],
+ "minSpan": 3,
+ "pageSize": null,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": null,
+ "desc": false
+ },
+ "span": 3,
+ "styles": [
+ {
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Time",
+ "type": "date"
+ },
+ {
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 0,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "number",
+ "unit": "none"
+ }
+ ],
+ "targets": [
+ {
+ "alias": "Objects",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_object",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_object, 'Objects')"
+ },
+ {
+ "alias": "Objects",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_object",
+ "policy": "default",
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_object_degraded, 'Objects degraded')"
+ },
+ {
+ "alias": "Objects",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_object",
+ "policy": "default",
+ "refId": "C",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_object_misplaced, 'Objects misplaced')"
+ },
+ {
+ "alias": "Objects",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_object",
+ "policy": "default",
+ "refId": "D",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_object_unfound, 'Objects unfound')"
+ }
+ ],
+ "title": "Object Summary",
+ "transform": "timeseries_aggregations",
+ "type": "table"
+ },
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "datasource": "${DS_LOCAL}",
+ "filterNull": false,
+ "fontSize": "100%",
+ "id": 13,
+ "links": [],
+ "minSpan": 3,
+ "pageSize": null,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": null,
+ "desc": false
+ },
+ "span": 3,
+ "styles": [
+ {
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Time",
+ "type": "date"
+ },
+ {
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 0,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "number",
+ "unit": "none"
+ }
+ ],
+ "targets": [
+ {
+ "alias": "PG's",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_pg",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_pg, 'PGs')"
+ },
+ {
+ "alias": "PG's",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_pg",
+ "policy": "default",
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_pg_active, 'Active PGs')"
+ },
+ {
+ "alias": "PG's",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_pg",
+ "policy": "default",
+ "refId": "C",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_pg_active_clean, 'Active+clean PGs')"
+ },
+ {
+ "alias": "PG's",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_pg",
+ "policy": "default",
+ "refId": "D",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_pg_peering, 'PGs peering')"
+ }
+ ],
+ "title": "PG Summary",
+ "transform": "timeseries_aggregations",
+ "type": "table"
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "RADOS",
+ "titleSize": "h6"
+ },
+ {
+ "collapse": true,
+ "height": 250,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "datasource": "${DS_LOCAL}",
+ "fill": 1,
+ "id": 24,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "span": 12,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {}
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Panel Title",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "OSD Breakdown",
+ "titleSize": "h6"
+ }
+ ],
+ "schemaVersion": 14,
+ "style": "dark",
+ "tags": [],
+ "templating": {
+ "list": [
+ {
+ "current": {
+ "value": "${VAR_MONITOR}",
+ "text": "${VAR_MONITOR}"
+ },
+ "hide": 2,
+ "label": null,
+ "name": "monitor",
+ "options": [
+ {
+ "value": "${VAR_MONITOR}",
+ "text": "${VAR_MONITOR}"
+ }
+ ],
+ "query": "${VAR_MONITOR}",
+ "type": "constant"
+ },
+ {
+ "current": {
+ "value": "${VAR_CLUSTER_NAME}",
+ "text": "${VAR_CLUSTER_NAME}"
+ },
+ "hide": 2,
+ "label": null,
+ "name": "cluster_name",
+ "options": [
+ {
+ "value": "${VAR_CLUSTER_NAME}",
+ "text": "${VAR_CLUSTER_NAME}"
+ }
+ ],
+ "query": "${VAR_CLUSTER_NAME}",
+ "type": "constant"
+ },
+ {
+ "allValue": null,
+ "current": {},
+ "datasource": "${DS_LOCAL}",
+ "hide": 0,
+ "includeAll": false,
+ "label": "Workload Pool Name",
+ "multi": false,
+ "name": "pool_name",
+ "options": [],
+ "query": "collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools.*",
+ "refresh": 1,
+ "regex": "",
+ "sort": 0,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ },
+ {
+ "allValue": null,
+ "current": {},
+ "datasource": "${DS_LOCAL}",
+ "hide": 0,
+ "includeAll": false,
+ "label": "RGW Host",
+ "multi": true,
+ "name": "rgw_name",
+ "options": [],
+ "query": "collectd.*",
+ "refresh": 1,
+ "regex": "",
+ "sort": 0,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ },
+ {
+ "current": {
+ "value": "${VAR_DOMAIN}",
+ "text": "${VAR_DOMAIN}"
+ },
+ "hide": 2,
+ "label": null,
+ "name": "domain",
+ "options": [
+ {
+ "value": "${VAR_DOMAIN}",
+ "text": "${VAR_DOMAIN}"
+ }
+ ],
+ "query": "${VAR_DOMAIN}",
+ "type": "constant"
+ }
+ ]
+ },
+ "time": {
+ "from": "now-1h",
+ "to": "now"
+ },
+ "timepicker": {
+ "refresh_intervals": [
+ "5s",
+ "10s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ],
+ "time_options": [
+ "5m",
+ "15m",
+ "1h",
+ "6h",
+ "12h",
+ "24h",
+ "2d",
+ "7d",
+ "30d"
+ ]
+ },
+ "timezone": "browser",
+ "title": "Ceph Dashboard (Graphite)",
+ "version": 17
+}
\ No newline at end of file
--- /dev/null
+{
+ "__inputs": [
+ {
+ "name": "DS_LOCAL",
+ "label": "Local",
+ "description": "",
+ "type": "datasource",
+ "pluginId": "graphite",
+ "pluginName": "Graphite"
+ },
+ {
+ "name": "VAR_MONITOR",
+ "type": "constant",
+ "label": "monitor",
+ "value": "obj-mon-1.storage.lab",
+ "description": ""
+ },
+ {
+ "name": "VAR_CLUSTER_NAME",
+ "type": "constant",
+ "label": "cluster_name",
+ "value": "ceph",
+ "description": ""
+ },
+ {
+ "name": "VAR_DOMAIN",
+ "type": "constant",
+ "label": "domain",
+ "value": "storage.lab",
+ "description": ""
+ }
+ ],
+ "__requires": [
+ {
+ "type": "grafana",
+ "id": "grafana",
+ "name": "Grafana",
+ "version": "4.2.0"
+ },
+ {
+ "type": "panel",
+ "id": "graph",
+ "name": "Graph",
+ "version": ""
+ },
+ {
+ "type": "datasource",
+ "id": "graphite",
+ "name": "Graphite",
+ "version": "1.0.0"
+ },
+ {
+ "type": "panel",
+ "id": "singlestat",
+ "name": "Singlestat",
+ "version": ""
+ },
+ {
+ "type": "panel",
+ "id": "table",
+ "name": "Table",
+ "version": ""
+ }
+ ],
+ "annotations": {
+ "list": []
+ },
+ "editable": true,
+ "gnetId": null,
+ "graphTooltip": 0,
+ "hideControls": false,
+ "id": null,
+ "links": [],
+ "refresh": "10s",
+ "rows": [
+ {
+ "collapse": false,
+ "height": 243,
+ "panels": [
+ {
+ "cacheTimeout": null,
+ "colorBackground": true,
+ "colorValue": false,
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "datasource": "${DS_LOCAL}",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 28,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "targets": [
+ {
+ "refId": "A",
+ "target": "collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.health"
+ }
+ ],
+ "thresholds": "1",
+ "title": "Health",
+ "type": "singlestat",
+ "valueFontSize": "100%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "OK",
+ "value": "0"
+ },
+ {
+ "op": "=",
+ "text": "Warning",
+ "value": "4"
+ },
+ {
+ "op": "=",
+ "text": "Error",
+ "value": "8"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "${DS_LOCAL}",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 1,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "targets": [
+ {
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_mon",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM \"collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_mon\" WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_mon",
+ "textEditor": true
+ }
+ ],
+ "thresholds": "",
+ "title": "Monitors",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "avg"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "${DS_LOCAL}",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 27,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "targets": [
+ {
+ "refId": "A",
+ "target": "collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_osd"
+ }
+ ],
+ "thresholds": "",
+ "title": "OSDs",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "avg"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "${DS_LOCAL}",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 35,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "targets": [
+ {
+ "refId": "A",
+ "target": "sumSeries(offset(scale(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.vdb.osd_id,0),1))",
+ "textEditor": true
+ }
+ ],
+ "thresholds": "",
+ "title": "OSD Hosts",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "avg"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "${DS_LOCAL}",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 33,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "targets": [
+ {
+ "refId": "A",
+ "target": "sumSeries(offset(scale(collectd.*.$domain.cephmetrics.derive.$cluster_name.rgw.put,0),1))",
+ "textEditor": true
+ }
+ ],
+ "thresholds": "",
+ "title": "RGW Hosts",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "${DS_LOCAL}",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 34,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "targets": [
+ {
+ "refId": "A",
+ "target": "collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_mds_in"
+ }
+ ],
+ "thresholds": "",
+ "title": "MDS",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "avg"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "${DS_LOCAL}",
+ "format": "bytes",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 7,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(193, 106, 31)",
+ "show": true
+ },
+ "targets": [
+ {
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools._all_.recovering_bytes_per_sec",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM \"collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools._all_.recovering_bytes_per_sec\" WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools._all_.recovering_bytes_per_sec",
+ "textEditor": true
+ }
+ ],
+ "thresholds": "",
+ "title": "Recovery",
+ "type": "singlestat",
+ "valueFontSize": "70%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "${DS_LOCAL}",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 9,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": true
+ },
+ "targets": [
+ {
+ "dsType": "influxdb",
+ "groupBy": [],
+ "hide": true,
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools._all_.read_op_per_sec",
+ "policy": "default",
+ "query": "SELECT mean(\"value\") FROM \"measurement\" WHERE $timeFilter GROUP BY time($__interval) fill(null)",
+ "rawQuery": false,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools._all_.read_op_per_sec"
+ },
+ {
+ "dsType": "influxdb",
+ "groupBy": [],
+ "hide": true,
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools._all_.read_op_per_sec",
+ "policy": "default",
+ "query": "SELECT mean(\"value\") FROM \"measurement\" WHERE $timeFilter GROUP BY time($__interval) fill(null)",
+ "rawQuery": false,
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools._all_.write_op_per_sec"
+ },
+ {
+ "refId": "C",
+ "target": "sumSeries(#A, #B).select metric",
+ "targetFull": "sumSeries(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools._all_.read_op_per_sec, collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools._all_.write_op_per_sec).select metric"
+ }
+ ],
+ "thresholds": "",
+ "title": "Client IOPS",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "${DS_LOCAL}",
+ "decimals": 1,
+ "format": "bytes",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 23,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": true
+ },
+ "targets": [
+ {
+ "dsType": "influxdb",
+ "groupBy": [],
+ "hide": true,
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools._all_.read_op_per_sec",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM \"collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools._all_.read_bytes_sec\" WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools._all_.read_bytes_sec"
+ },
+ {
+ "dsType": "influxdb",
+ "groupBy": [],
+ "hide": true,
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools._all_.read_op_per_sec",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM \"collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools._all_.read_bytes_sec\" WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "collectd.$monitor.cephmetrics.gauge.$cluster_name.pools._all_.write_bytes_sec"
+ },
+ {
+ "refId": "C",
+ "target": "sumSeries(#A,#B).select metric",
+ "targetFull": "sumSeries(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools._all_.read_bytes_sec,collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools._all_.write_bytes_sec).select metric"
+ }
+ ],
+ "thresholds": "",
+ "title": "Client Load",
+ "type": "singlestat",
+ "valueFontSize": "70%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": true,
+ "colorValue": false,
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "datasource": "${DS_LOCAL}",
+ "decimals": 1,
+ "format": "short",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 37,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": "",
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 50, 193)",
+ "show": false
+ },
+ "targets": [
+ {
+ "refId": "A",
+ "target": "percentileOfSeries(group(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.perf.util),$percentile)",
+ "textEditor": true
+ }
+ ],
+ "thresholds": "70,90",
+ "title": "Disk Busy",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": true,
+ "colorValue": false,
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "datasource": "${DS_LOCAL}",
+ "decimals": 1,
+ "format": "short",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 36,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": "",
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 50, 193)",
+ "show": false
+ },
+ "targets": [
+ {
+ "refId": "A",
+ "target": "percentileOfSeries(group(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.perf.await),$percentile)",
+ "textEditor": true
+ }
+ ],
+ "thresholds": "20,60",
+ "title": "Latency(ms)",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "${DS_LOCAL}",
+ "format": "bytes",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 38,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "targets": [
+ {
+ "refId": "A",
+ "target": "collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.osd_bytes_avail"
+ }
+ ],
+ "thresholds": "",
+ "title": "Free Space",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "Overview",
+ "titleSize": "h6"
+ },
+ {
+ "collapse": true,
+ "height": 256,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "datasource": "${DS_LOCAL}",
+ "fill": 1,
+ "id": 3,
+ "legend": {
+ "avg": false,
+ "current": true,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "span": 7,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "Raw Capacity",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.osd_bytes",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.osd_bytes, 'Raw')"
+ },
+ {
+ "alias": "Used",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.osd_bytes_used",
+ "policy": "default",
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.osd_bytes_used, 'Used')"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Cluster Capacity",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "${DS_LOCAL}",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 17,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "targets": [
+ {
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_pool",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_pool"
+ }
+ ],
+ "thresholds": "",
+ "title": "Pools",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "avg"
+ },
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "filterNull": false,
+ "fontSize": "100%",
+ "id": 18,
+ "links": [],
+ "minSpan": 2,
+ "pageSize": null,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": 0,
+ "desc": true
+ },
+ "span": 2,
+ "styles": [
+ {
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Time",
+ "type": "date"
+ },
+ {
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 0,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "alias": "OSD's Up",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_osd_in",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM \"collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_osd_up\" WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "C",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_osd, 'OSDs')"
+ },
+ {
+ "alias": "OSD's Up",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_osd_in",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM \"collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_osd_up\" WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_osd_in, 'OSDs In')"
+ },
+ {
+ "alias": "OSD's Up",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_osd_in",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM \"collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_osd_up\" WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_osd_up, 'OSDs Up')"
+ }
+ ],
+ "title": "OSD State",
+ "transform": "timeseries_aggregations",
+ "type": "table"
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "Cluster Capacity",
+ "titleSize": "h6"
+ },
+ {
+ "collapse": true,
+ "height": 238,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "datasource": "${DS_LOCAL}",
+ "fill": 1,
+ "id": 11,
+ "legend": {
+ "avg": false,
+ "current": true,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "span": 4,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "/collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools.$pool_name.read_op_per_sec/",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM /collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.read_op_per_sec/ WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.read_op_per_sec, 'Reads')"
+ },
+ {
+ "alias": "",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "/collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools.$pool_name.read_op_per_sec/",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM /collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.read_op_per_sec/ WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.write_op_per_sec, 'Writes')"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Client Workload IOPS (pools: $pool_name)",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "IOPS",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "datasource": "${DS_LOCAL}",
+ "fill": 1,
+ "id": 21,
+ "legend": {
+ "avg": false,
+ "current": true,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "span": 4,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "/collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools.$pool_name.read_op_per_sec/",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM /collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools.$pool_name.read_bytes_sec/ WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.read_bytes_sec, 'Read')"
+ },
+ {
+ "alias": "",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "/collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools.$pool_name.read_op_per_sec/",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM /collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools.$pool_name.read_bytes_sec/ WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "C",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.write_bytes_sec, 'Write')"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Client Workload Throughput (pools: $pool_name)",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "label": "Bandwidth",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {
+ "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools._all_.recovering_bytes_per_sec": "#C15C17"
+ },
+ "bars": false,
+ "datasource": "${DS_LOCAL}",
+ "fill": 1,
+ "id": 22,
+ "legend": {
+ "avg": false,
+ "current": true,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "span": 4,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "/collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools.$pool_name.read_op_per_sec/",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM /collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.recovering_bytes_per_sec/ WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.recovering_bytes_per_sec"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Recovery Overhead (pools: $pool_name)",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "label": "Bandwidth",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "Workload Detail by Pool",
+ "titleSize": "h6"
+ },
+ {
+ "collapse": false,
+ "height": 302,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "datasource": "${DS_LOCAL}",
+ "fill": 1,
+ "id": 19,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 5,
+ "nullPointMode": "null as zero",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "span": 3,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "GET",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$interval"
+ ],
+ "type": "time"
+ }
+ ],
+ "hide": true,
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.rgw.get_initial_lat",
+ "policy": "default",
+ "query": "SELECT mean(\"value\") FROM /collectd.$rgw_name.cephmetrics.gauge.$cluster_name.rgw.get_initial_lat/ WHERE $timeFilter GROUP BY time($interval)",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "collectd.$rgw_name.$domain.cephmetrics.derive.$cluster_name.rgw.get_initial_lat_avgcount"
+ },
+ {
+ "alias": "GET",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$interval"
+ ],
+ "type": "time"
+ }
+ ],
+ "hide": true,
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.rgw.get_initial_lat",
+ "policy": "default",
+ "query": "SELECT mean(\"value\") FROM /collectd.$rgw_name.cephmetrics.gauge.$cluster_name.rgw.get_initial_lat/ WHERE $timeFilter GROUP BY time($interval)",
+ "rawQuery": true,
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "collectd.$rgw_name.$domain.cephmetrics.derive.$cluster_name.rgw.get_initial_lat_sum"
+ },
+ {
+ "refId": "C",
+ "target": "alias(divideSeries(#B, #A),\"GET\")",
+ "targetFull": "divideSeries(collectd.$rgw_name.$domain.cephmetrics.derive.$cluster_name.rgw.get_initial_lat_sum, collectd.$rgw_name.$domain.cephmetrics.derive.$cluster_name.rgw.get_initial_lat_avgcount).select metric",
+ "textEditor": true
+ },
+ {
+ "alias": "GET",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$interval"
+ ],
+ "type": "time"
+ }
+ ],
+ "hide": true,
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.rgw.get_initial_lat",
+ "policy": "default",
+ "query": "SELECT mean(\"value\") FROM /collectd.$rgw_name.cephmetrics.gauge.$cluster_name.rgw.get_initial_lat/ WHERE $timeFilter GROUP BY time($interval)",
+ "rawQuery": true,
+ "refId": "D",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "collectd.$rgw_name.$domain.cephmetrics.derive.$cluster_name.rgw.put_initial_lat_avgcount"
+ },
+ {
+ "alias": "GET",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$interval"
+ ],
+ "type": "time"
+ }
+ ],
+ "hide": true,
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.rgw.get_initial_lat",
+ "policy": "default",
+ "query": "SELECT mean(\"value\") FROM /collectd.$rgw_name.cephmetrics.gauge.$cluster_name.rgw.get_initial_lat/ WHERE $timeFilter GROUP BY time($interval)",
+ "rawQuery": true,
+ "refId": "E",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "collectd.$rgw_name.$domain.cephmetrics.derive.$cluster_name.rgw.put_initial_lat_sum"
+ },
+ {
+ "refId": "F",
+ "target": "alias(divideSeries(#E,#D), \"PUT\")",
+ "targetFull": "divideSeries(collectd.$rgw_name.$domain.cephmetrics.derive.$cluster_name.rgw.put_initial_lat_sum,collectd.$rgw_name.$domain.cephmetrics.derive.$cluster_name.rgw.put_initial_lat_avgcount).select metric",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Request Latency",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "s",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "datasource": "${DS_LOCAL}",
+ "fill": 1,
+ "id": 25,
+ "legend": {
+ "alignAsTable": false,
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "rightSide": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 5,
+ "nullPointMode": "null as zero",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "span": 3,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "GET",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "collectd.obj-rgw-1.storage.lab.cephmetrics.derive.ceph.rgw.get",
+ "policy": "default",
+ "query": "SELECT mean(\"value\") FROM /collectd.$rgw_name.cephmetrics.derive.ceph.rgw.get$/ WHERE $timeFilter GROUP BY time($__interval) fill(null)",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$rgw_name.$domain.cephmetrics.derive.$cluster_name.rgw.get, 'GET')"
+ },
+ {
+ "alias": "PUT",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "collectd.obj-rgw-1.storage.lab.cephmetrics.derive.ceph.rgw.get",
+ "policy": "default",
+ "query": "SELECT mean(\"value\") FROM /collectd.$rgw_name.cephmetrics.derive.ceph.rgw.put$/ WHERE $timeFilter GROUP BY time($__interval) fill(null)",
+ "rawQuery": true,
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$rgw_name.$domain.cephmetrics.derive.$cluster_name.rgw.put, 'PUT')"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Requests/sec",
+ "tooltip": {
+ "shared": true,
+ "sort": 1,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "${DS_LOCAL}",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "height": "",
+ "id": 26,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "targets": [
+ {
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "collectd.obj-rgw-1.storage.lab.cephmetrics.derive.ceph.rgw.qlen",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "collectd.$rgw_name.$domain.cephmetrics.derive.$cluster_name.rgw.qlen"
+ }
+ ],
+ "thresholds": "",
+ "title": "Queue",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "avg"
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "datasource": "${DS_LOCAL}",
+ "fill": 1,
+ "id": 32,
+ "legend": {
+ "avg": false,
+ "current": true,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 2,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "span": 2,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(scale(averageSeries(collectd.$rgw_name.$domain.cpu.percent.idle),0.01), 1)",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "CPU Busy",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "percent",
+ "label": "",
+ "logBase": 1,
+ "max": "100",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "datasource": "${DS_LOCAL}",
+ "fill": 1,
+ "id": 31,
+ "legend": {
+ "avg": false,
+ "current": true,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 3,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "span": 3,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "alias(sumSeries(collectd.$rgw_name.$domain.interface.*.if_octets.rx), 'rx')"
+ },
+ {
+ "refId": "B",
+ "target": "alias(sumSeries(collectd.$rgw_name.$domain.interface.*.if_octets.tx), 'tx')"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Network Load",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "Bps",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "RGW Host (S3/Swift)",
+ "titleSize": "h6"
+ },
+ {
+ "collapse": true,
+ "height": "300",
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "datasource": "${DS_LOCAL}",
+ "fill": 1,
+ "id": 24,
+ "legend": {
+ "avg": false,
+ "current": true,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 4,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "span": 4,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "alias(sumSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.perf.r_mbps), \"Read Throughput\")",
+ "textEditor": true
+ },
+ {
+ "refId": "B",
+ "target": "alias(sumSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.perf.w_mbps), \"Write Throughput\")",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Backend Disk Load (MB/s) - all OSD's",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "datasource": "${DS_LOCAL}",
+ "fill": 1,
+ "id": 40,
+ "legend": {
+ "avg": false,
+ "current": true,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 4,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "span": 4,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "alias(percentileOfSeries(group(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.perf.r_await),$percentile), \"Read Latency\")",
+ "textEditor": true
+ },
+ {
+ "refId": "C",
+ "target": "alias(percentileOfSeries(group(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.perf.w_await),$percentile), \"Write Latency\")",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Backend Disk Latency (ms) - all OSD's - at $percentile%ile",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "datasource": "${DS_LOCAL}",
+ "fill": 1,
+ "id": 43,
+ "legend": {
+ "avg": false,
+ "current": true,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 4,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "span": 4,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "alias(percentileOfSeries(group(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.perf.util),$percentile), \"disk busy %\")",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Overall Disk Busy at $percentile%ile",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "",
+ "logBase": 1,
+ "max": "100",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "datasource": "${DS_LOCAL}",
+ "fill": 1,
+ "id": 46,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 4,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "span": 4,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "alias(percentileOfSeries(group(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.perf.iops),$percentile),\"IOPS/spindle\")",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "IOPS per Disk @ $percentile%ile - all OSDs",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "datasource": "${DS_LOCAL}",
+ "fill": 1,
+ "id": 47,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 4,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "span": 4,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "alias(sumSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.perf.iops),\"IOPS\")",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Backend IOPS - all OSD's",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "datasource": "${DS_LOCAL}",
+ "fill": 1,
+ "id": 44,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 4,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "span": 4,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(scale(collectd.*.$domain.cpu.percent.idle,0.01),1)",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "CPU Busy",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "percent",
+ "label": "",
+ "logBase": 1,
+ "max": "100",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "Backend OSD Load Summary",
+ "titleSize": "h6"
+ },
+ {
+ "collapse": true,
+ "height": 250,
+ "panels": [
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "filterNull": false,
+ "fontSize": "100%",
+ "id": 39,
+ "links": [],
+ "minSpan": 2,
+ "pageSize": null,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": 1,
+ "desc": false
+ },
+ "span": 2,
+ "styles": [
+ {
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Time",
+ "type": "date"
+ },
+ {
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 0,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.osd_id,1,-2)",
+ "textEditor": true
+ }
+ ],
+ "title": "Host/Disk to OSD ID Mapping",
+ "transform": "timeseries_aggregations",
+ "type": "table"
+ },
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "filterNull": false,
+ "fontSize": "100%",
+ "id": 41,
+ "links": [],
+ "minSpan": 2,
+ "pageSize": null,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": 0,
+ "desc": true
+ },
+ "span": 2,
+ "styles": [
+ {
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Time",
+ "type": "date"
+ },
+ {
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 2,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.perf.await,1,-3)",
+ "textEditor": true
+ }
+ ],
+ "title": "Disk Latency Breakdown (ms)",
+ "transform": "timeseries_aggregations",
+ "type": "table"
+ },
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "filterNull": false,
+ "fontSize": "100%",
+ "id": 42,
+ "links": [],
+ "minSpan": 2,
+ "pageSize": null,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": 0,
+ "desc": true
+ },
+ "span": 2,
+ "styles": [
+ {
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Time",
+ "type": "date"
+ },
+ {
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 2,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.perf.mbps,1,-3)",
+ "textEditor": true
+ }
+ ],
+ "title": "Disk Bandwidth (MB/s)",
+ "transform": "timeseries_aggregations",
+ "type": "table"
+ },
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "filterNull": false,
+ "fontSize": "100%",
+ "id": 45,
+ "links": [],
+ "minSpan": 2,
+ "pageSize": null,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": 0,
+ "desc": true
+ },
+ "span": 2,
+ "styles": [
+ {
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Time",
+ "type": "date"
+ },
+ {
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 2,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.perf.util,1,-3)",
+ "textEditor": true
+ }
+ ],
+ "title": "Disk %Util",
+ "transform": "timeseries_aggregations",
+ "type": "table"
+ },
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "filterNull": false,
+ "fontSize": "100%",
+ "id": 48,
+ "links": [],
+ "minSpan": 2,
+ "pageSize": null,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": 0,
+ "desc": true
+ },
+ "span": 2,
+ "styles": [
+ {
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Time",
+ "type": "date"
+ },
+ {
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 0,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.perf.iops,1,-3)",
+ "textEditor": true
+ }
+ ],
+ "title": "IOPS/Disk",
+ "transform": "timeseries_aggregations",
+ "type": "table"
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "OSD Detail",
+ "titleSize": "h6"
+ },
+ {
+ "collapse": true,
+ "height": 250,
+ "panels": [
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "datasource": "${DS_LOCAL}",
+ "filterNull": false,
+ "fontSize": "100%",
+ "id": 10,
+ "links": [],
+ "minSpan": 3,
+ "pageSize": null,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": null,
+ "desc": false
+ },
+ "span": 3,
+ "styles": [
+ {
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Time",
+ "type": "date"
+ },
+ {
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 0,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "number",
+ "unit": "none"
+ }
+ ],
+ "targets": [
+ {
+ "alias": "Objects",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_object",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_object, 'Objects')"
+ },
+ {
+ "alias": "Objects",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_object",
+ "policy": "default",
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_object_degraded, 'Objects degraded')"
+ },
+ {
+ "alias": "Objects",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_object",
+ "policy": "default",
+ "refId": "C",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_object_misplaced, 'Objects misplaced')"
+ },
+ {
+ "alias": "Objects",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_object",
+ "policy": "default",
+ "refId": "D",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_object_unfound, 'Objects unfound')"
+ }
+ ],
+ "title": "Object Summary",
+ "transform": "timeseries_aggregations",
+ "type": "table"
+ },
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "datasource": "${DS_LOCAL}",
+ "filterNull": false,
+ "fontSize": "100%",
+ "id": 13,
+ "links": [],
+ "minSpan": 3,
+ "pageSize": null,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": null,
+ "desc": false
+ },
+ "span": 3,
+ "styles": [
+ {
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Time",
+ "type": "date"
+ },
+ {
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 0,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "number",
+ "unit": "none"
+ }
+ ],
+ "targets": [
+ {
+ "alias": "PG's",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_pg",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_pg, 'PGs')"
+ },
+ {
+ "alias": "PG's",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_pg",
+ "policy": "default",
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_pg_active, 'Active PGs')"
+ },
+ {
+ "alias": "PG's",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_pg",
+ "policy": "default",
+ "refId": "C",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_pg_active_clean, 'Active+clean PGs')"
+ },
+ {
+ "alias": "PG's",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_pg",
+ "policy": "default",
+ "refId": "D",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_pg_peering, 'PGs peering')"
+ }
+ ],
+ "title": "PG Summary",
+ "transform": "timeseries_aggregations",
+ "type": "table"
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "RADOS",
+ "titleSize": "h6"
+ }
+ ],
+ "schemaVersion": 14,
+ "style": "dark",
+ "tags": [],
+ "templating": {
+ "list": [
+ {
+ "current": {
+ "value": "${VAR_MONITOR}",
+ "text": "${VAR_MONITOR}"
+ },
+ "hide": 2,
+ "label": null,
+ "name": "monitor",
+ "options": [
+ {
+ "value": "${VAR_MONITOR}",
+ "text": "${VAR_MONITOR}"
+ }
+ ],
+ "query": "${VAR_MONITOR}",
+ "type": "constant"
+ },
+ {
+ "current": {
+ "value": "${VAR_CLUSTER_NAME}",
+ "text": "${VAR_CLUSTER_NAME}"
+ },
+ "hide": 2,
+ "label": null,
+ "name": "cluster_name",
+ "options": [
+ {
+ "value": "${VAR_CLUSTER_NAME}",
+ "text": "${VAR_CLUSTER_NAME}"
+ }
+ ],
+ "query": "${VAR_CLUSTER_NAME}",
+ "type": "constant"
+ },
+ {
+ "allValue": null,
+ "current": {},
+ "datasource": "${DS_LOCAL}",
+ "hide": 0,
+ "includeAll": false,
+ "label": "Workload Pool Name",
+ "multi": false,
+ "name": "pool_name",
+ "options": [],
+ "query": "collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools.*",
+ "refresh": 1,
+ "regex": "",
+ "sort": 0,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ },
+ {
+ "allValue": null,
+ "current": {},
+ "datasource": "${DS_LOCAL}",
+ "hide": 0,
+ "includeAll": false,
+ "label": "RGW Host",
+ "multi": true,
+ "name": "rgw_name",
+ "options": [],
+ "query": "collectd.*",
+ "refresh": 1,
+ "regex": "",
+ "sort": 0,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ },
+ {
+ "current": {
+ "value": "${VAR_DOMAIN}",
+ "text": "${VAR_DOMAIN}"
+ },
+ "hide": 2,
+ "label": null,
+ "name": "domain",
+ "options": [
+ {
+ "value": "${VAR_DOMAIN}",
+ "text": "${VAR_DOMAIN}"
+ }
+ ],
+ "query": "${VAR_DOMAIN}",
+ "type": "constant"
+ },
+ {
+ "allValue": null,
+ "current": {
+ "tags": [],
+ "text": "95",
+ "value": "95"
+ },
+ "hide": 0,
+ "includeAll": false,
+ "label": "Percentile",
+ "multi": false,
+ "name": "percentile",
+ "options": [
+ {
+ "selected": false,
+ "text": "80",
+ "value": "80"
+ },
+ {
+ "selected": false,
+ "text": "90",
+ "value": "90"
+ },
+ {
+ "selected": true,
+ "text": "95",
+ "value": "95"
+ },
+ {
+ "selected": false,
+ "text": "98",
+ "value": "98"
+ }
+ ],
+ "query": "80,90,95,98",
+ "type": "custom"
+ }
+ ]
+ },
+ "time": {
+ "from": "now-1h",
+ "to": "now"
+ },
+ "timepicker": {
+ "refresh_intervals": [
+ "5s",
+ "10s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ],
+ "time_options": [
+ "5m",
+ "15m",
+ "1h",
+ "6h",
+ "12h",
+ "24h",
+ "2d",
+ "7d",
+ "30d"
+ ]
+ },
+ "timezone": "browser",
+ "title": "Ceph Dashboard (Graphite)",
+ "version": 37
+}
\ No newline at end of file
--- /dev/null
+{
+ "__inputs": [
+ {
+ "name": "DS_LOCAL",
+ "label": "Local",
+ "description": "",
+ "type": "datasource",
+ "pluginId": "graphite",
+ "pluginName": "Graphite"
+ },
+ {
+ "name": "VAR_MONITOR",
+ "type": "constant",
+ "label": "monitor",
+ "value": "obj-mon-1.storage.lab",
+ "description": ""
+ },
+ {
+ "name": "VAR_CLUSTER_NAME",
+ "type": "constant",
+ "label": "cluster_name",
+ "value": "ceph",
+ "description": ""
+ },
+ {
+ "name": "VAR_DOMAIN",
+ "type": "constant",
+ "label": "domain",
+ "value": "storage.lab",
+ "description": ""
+ }
+ ],
+ "__requires": [
+ {
+ "type": "grafana",
+ "id": "grafana",
+ "name": "Grafana",
+ "version": "4.3.1"
+ },
+ {
+ "type": "panel",
+ "id": "graph",
+ "name": "Graph",
+ "version": ""
+ },
+ {
+ "type": "datasource",
+ "id": "graphite",
+ "name": "Graphite",
+ "version": "1.0.0"
+ },
+ {
+ "type": "panel",
+ "id": "singlestat",
+ "name": "Singlestat",
+ "version": ""
+ },
+ {
+ "type": "panel",
+ "id": "table",
+ "name": "Table",
+ "version": ""
+ }
+ ],
+ "annotations": {
+ "list": []
+ },
+ "editable": true,
+ "gnetId": null,
+ "graphTooltip": 0,
+ "hideControls": false,
+ "id": null,
+ "links": [],
+ "refresh": "10s",
+ "rows": [
+ {
+ "collapse": false,
+ "height": 243,
+ "panels": [
+ {
+ "cacheTimeout": null,
+ "colorBackground": true,
+ "colorValue": false,
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "datasource": "${DS_LOCAL}",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 28,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "refId": "A",
+ "target": "collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.health"
+ }
+ ],
+ "thresholds": "1",
+ "title": "Health",
+ "type": "singlestat",
+ "valueFontSize": "100%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "OK",
+ "value": "0"
+ },
+ {
+ "op": "=",
+ "text": "Warning",
+ "value": "4"
+ },
+ {
+ "op": "=",
+ "text": "Error",
+ "value": "8"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "${DS_LOCAL}",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 1,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_mon",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM \"collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_mon\" WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_mon",
+ "textEditor": true
+ }
+ ],
+ "thresholds": "",
+ "title": "Monitors",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "avg"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "${DS_LOCAL}",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 27,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "refId": "A",
+ "target": "collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_osd"
+ }
+ ],
+ "thresholds": "",
+ "title": "OSDs",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "avg"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "${DS_LOCAL}",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 35,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "refId": "A",
+ "target": "sumSeries(offset(scale(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.vdb.osd_id,0),1))",
+ "textEditor": true
+ }
+ ],
+ "thresholds": "",
+ "title": "OSD Hosts",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "avg"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "${DS_LOCAL}",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 33,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "refId": "A",
+ "target": "sumSeries(offset(scale(collectd.*.$domain.cephmetrics.derive.$cluster_name.rgw.put,0),1))",
+ "textEditor": true
+ }
+ ],
+ "thresholds": "",
+ "title": "RGW Hosts",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "${DS_LOCAL}",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 34,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "refId": "A",
+ "target": "collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_mds_in"
+ }
+ ],
+ "thresholds": "",
+ "title": "MDS",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "avg"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "${DS_LOCAL}",
+ "format": "bytes",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 7,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(193, 106, 31)",
+ "show": true
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools._all_.recovering_bytes_per_sec",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM \"collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools._all_.recovering_bytes_per_sec\" WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools._all_.recovering_bytes_per_sec",
+ "textEditor": true
+ }
+ ],
+ "thresholds": "",
+ "title": "Recovery",
+ "type": "singlestat",
+ "valueFontSize": "70%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "${DS_LOCAL}",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 9,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": true
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "dsType": "influxdb",
+ "groupBy": [],
+ "hide": true,
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools._all_.read_op_per_sec",
+ "policy": "default",
+ "query": "SELECT mean(\"value\") FROM \"measurement\" WHERE $timeFilter GROUP BY time($__interval) fill(null)",
+ "rawQuery": false,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools._all_.read_op_per_sec"
+ },
+ {
+ "dsType": "influxdb",
+ "groupBy": [],
+ "hide": true,
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools._all_.read_op_per_sec",
+ "policy": "default",
+ "query": "SELECT mean(\"value\") FROM \"measurement\" WHERE $timeFilter GROUP BY time($__interval) fill(null)",
+ "rawQuery": false,
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools._all_.write_op_per_sec"
+ },
+ {
+ "refId": "C",
+ "target": "sumSeries(#A, #B).select metric",
+ "targetFull": "sumSeries(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools._all_.read_op_per_sec, collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools._all_.write_op_per_sec).select metric"
+ }
+ ],
+ "thresholds": "",
+ "title": "Client IOPS",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "${DS_LOCAL}",
+ "decimals": 1,
+ "format": "bytes",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 23,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": true
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "dsType": "influxdb",
+ "groupBy": [],
+ "hide": true,
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools._all_.read_op_per_sec",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM \"collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools._all_.read_bytes_sec\" WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools._all_.read_bytes_sec"
+ },
+ {
+ "dsType": "influxdb",
+ "groupBy": [],
+ "hide": true,
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools._all_.read_op_per_sec",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM \"collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools._all_.read_bytes_sec\" WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "collectd.$monitor.cephmetrics.gauge.$cluster_name.pools._all_.write_bytes_sec"
+ },
+ {
+ "refId": "C",
+ "target": "sumSeries(#A,#B).select metric",
+ "targetFull": "sumSeries(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools._all_.read_bytes_sec,collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools._all_.write_bytes_sec).select metric"
+ }
+ ],
+ "thresholds": "",
+ "title": "Client Load",
+ "type": "singlestat",
+ "valueFontSize": "70%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": true,
+ "colorValue": false,
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "datasource": "${DS_LOCAL}",
+ "decimals": 1,
+ "format": "short",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 37,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": "",
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 50, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "refId": "A",
+ "target": "percentileOfSeries(group(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.perf.util),$percentile)",
+ "textEditor": true
+ }
+ ],
+ "thresholds": "70,90",
+ "title": "Disk Busy",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": true,
+ "colorValue": false,
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "datasource": "${DS_LOCAL}",
+ "decimals": 1,
+ "format": "short",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 36,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": "",
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 50, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "refId": "A",
+ "target": "percentileOfSeries(group(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.perf.await),$percentile)",
+ "textEditor": true
+ }
+ ],
+ "thresholds": "20,60",
+ "title": "Latency(ms)",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "${DS_LOCAL}",
+ "format": "bytes",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 38,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "refId": "A",
+ "target": "collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.osd_bytes_avail"
+ }
+ ],
+ "thresholds": "",
+ "title": "Free Space",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "Overview",
+ "titleSize": "h6"
+ },
+ {
+ "collapse": true,
+ "height": 256,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_LOCAL}",
+ "fill": 1,
+ "id": 3,
+ "legend": {
+ "avg": false,
+ "current": true,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 7,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "Raw Capacity",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.osd_bytes",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.osd_bytes, 'Raw')"
+ },
+ {
+ "alias": "Used",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.osd_bytes_used",
+ "policy": "default",
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.osd_bytes_used, 'Used')"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Cluster Capacity",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "${DS_LOCAL}",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 17,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_pool",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_pool"
+ }
+ ],
+ "thresholds": "",
+ "title": "Pools",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "avg"
+ },
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "filterNull": false,
+ "fontSize": "100%",
+ "id": 18,
+ "links": [],
+ "minSpan": 2,
+ "pageSize": null,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": 0,
+ "desc": true
+ },
+ "span": 2,
+ "styles": [
+ {
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Time",
+ "type": "date"
+ },
+ {
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 0,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "alias": "OSD's Up",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_osd_in",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM \"collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_osd_up\" WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "C",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_osd, 'OSDs')"
+ },
+ {
+ "alias": "OSD's Up",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_osd_in",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM \"collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_osd_up\" WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_osd_in, 'OSDs In')"
+ },
+ {
+ "alias": "OSD's Up",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_osd_in",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM \"collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_osd_up\" WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_osd_up, 'OSDs Up')"
+ }
+ ],
+ "title": "OSD State",
+ "transform": "timeseries_aggregations",
+ "type": "table"
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "Cluster Capacity",
+ "titleSize": "h6"
+ },
+ {
+ "collapse": true,
+ "height": 238,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "datasource": "${DS_LOCAL}",
+ "fill": 1,
+ "id": 11,
+ "legend": {
+ "avg": false,
+ "current": true,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "span": 4,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "/collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools.$pool_name.read_op_per_sec/",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM /collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.read_op_per_sec/ WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.read_op_per_sec, 'Reads')"
+ },
+ {
+ "alias": "",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "/collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools.$pool_name.read_op_per_sec/",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM /collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.read_op_per_sec/ WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.write_op_per_sec, 'Writes')"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Client Workload IOPS (pools: $pool_name)",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "IOPS",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "datasource": "${DS_LOCAL}",
+ "fill": 1,
+ "id": 21,
+ "legend": {
+ "avg": false,
+ "current": true,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "span": 4,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "/collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools.$pool_name.read_op_per_sec/",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM /collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools.$pool_name.read_bytes_sec/ WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.read_bytes_sec, 'Read')"
+ },
+ {
+ "alias": "",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "/collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools.$pool_name.read_op_per_sec/",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM /collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools.$pool_name.read_bytes_sec/ WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "C",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.write_bytes_sec, 'Write')"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Client Workload Throughput (pools: $pool_name)",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "label": "Bandwidth",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {
+ "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools._all_.recovering_bytes_per_sec": "#C15C17"
+ },
+ "bars": false,
+ "datasource": "${DS_LOCAL}",
+ "fill": 1,
+ "id": 22,
+ "legend": {
+ "avg": false,
+ "current": true,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "span": 4,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "",
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "/collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools.$pool_name.read_op_per_sec/",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM /collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.recovering_bytes_per_sec/ WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.recovering_bytes_per_sec"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Recovery Overhead (pools: $pool_name)",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "label": "Bandwidth",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "Workload Detail by Pool",
+ "titleSize": "h6"
+ },
+ {
+ "collapse": true,
+ "height": 302,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_LOCAL}",
+ "fill": 1,
+ "id": 19,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 5,
+ "nullPointMode": "null as zero",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 3,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "GET",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$interval"
+ ],
+ "type": "time"
+ }
+ ],
+ "hide": true,
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.rgw.get_initial_lat",
+ "policy": "default",
+ "query": "SELECT mean(\"value\") FROM /collectd.$rgw_name.cephmetrics.gauge.$cluster_name.rgw.get_initial_lat/ WHERE $timeFilter GROUP BY time($interval)",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "collectd.$rgw_name.$domain.cephmetrics.derive.$cluster_name.rgw.get_initial_lat_avgcount"
+ },
+ {
+ "alias": "GET",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$interval"
+ ],
+ "type": "time"
+ }
+ ],
+ "hide": true,
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.rgw.get_initial_lat",
+ "policy": "default",
+ "query": "SELECT mean(\"value\") FROM /collectd.$rgw_name.cephmetrics.gauge.$cluster_name.rgw.get_initial_lat/ WHERE $timeFilter GROUP BY time($interval)",
+ "rawQuery": true,
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "collectd.$rgw_name.$domain.cephmetrics.derive.$cluster_name.rgw.get_initial_lat_sum"
+ },
+ {
+ "refId": "C",
+ "target": "alias(divideSeries(#B, #A),\"GET\")",
+ "targetFull": "divideSeries(collectd.$rgw_name.$domain.cephmetrics.derive.$cluster_name.rgw.get_initial_lat_sum, collectd.$rgw_name.$domain.cephmetrics.derive.$cluster_name.rgw.get_initial_lat_avgcount).select metric",
+ "textEditor": true
+ },
+ {
+ "alias": "GET",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$interval"
+ ],
+ "type": "time"
+ }
+ ],
+ "hide": true,
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.rgw.get_initial_lat",
+ "policy": "default",
+ "query": "SELECT mean(\"value\") FROM /collectd.$rgw_name.cephmetrics.gauge.$cluster_name.rgw.get_initial_lat/ WHERE $timeFilter GROUP BY time($interval)",
+ "rawQuery": true,
+ "refId": "D",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "collectd.$rgw_name.$domain.cephmetrics.derive.$cluster_name.rgw.put_initial_lat_avgcount"
+ },
+ {
+ "alias": "GET",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$interval"
+ ],
+ "type": "time"
+ }
+ ],
+ "hide": true,
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.rgw.get_initial_lat",
+ "policy": "default",
+ "query": "SELECT mean(\"value\") FROM /collectd.$rgw_name.cephmetrics.gauge.$cluster_name.rgw.get_initial_lat/ WHERE $timeFilter GROUP BY time($interval)",
+ "rawQuery": true,
+ "refId": "E",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "collectd.$rgw_name.$domain.cephmetrics.derive.$cluster_name.rgw.put_initial_lat_sum"
+ },
+ {
+ "refId": "F",
+ "target": "alias(divideSeries(#E,#D), \"PUT\")",
+ "targetFull": "divideSeries(collectd.$rgw_name.$domain.cephmetrics.derive.$cluster_name.rgw.put_initial_lat_sum,collectd.$rgw_name.$domain.cephmetrics.derive.$cluster_name.rgw.put_initial_lat_avgcount).select metric",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Request Latency",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "s",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_LOCAL}",
+ "fill": 1,
+ "id": 25,
+ "legend": {
+ "alignAsTable": false,
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "rightSide": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 5,
+ "nullPointMode": "null as zero",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 3,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "GET",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "collectd.obj-rgw-1.storage.lab.cephmetrics.derive.ceph.rgw.get",
+ "policy": "default",
+ "query": "SELECT mean(\"value\") FROM /collectd.$rgw_name.cephmetrics.derive.ceph.rgw.get$/ WHERE $timeFilter GROUP BY time($__interval) fill(null)",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$rgw_name.$domain.cephmetrics.derive.$cluster_name.rgw.get, 'GET')"
+ },
+ {
+ "alias": "PUT",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "collectd.obj-rgw-1.storage.lab.cephmetrics.derive.ceph.rgw.get",
+ "policy": "default",
+ "query": "SELECT mean(\"value\") FROM /collectd.$rgw_name.cephmetrics.derive.ceph.rgw.put$/ WHERE $timeFilter GROUP BY time($__interval) fill(null)",
+ "rawQuery": true,
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$rgw_name.$domain.cephmetrics.derive.$cluster_name.rgw.put, 'PUT')"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Requests/sec",
+ "tooltip": {
+ "shared": true,
+ "sort": 1,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "${DS_LOCAL}",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "height": "",
+ "id": 26,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "collectd.obj-rgw-1.storage.lab.cephmetrics.derive.ceph.rgw.qlen",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "collectd.$rgw_name.$domain.cephmetrics.derive.$cluster_name.rgw.qlen"
+ }
+ ],
+ "thresholds": "",
+ "title": "Queue",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "avg"
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_LOCAL}",
+ "fill": 1,
+ "id": 32,
+ "legend": {
+ "avg": false,
+ "current": true,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 2,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 2,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(scale(averageSeries(collectd.$rgw_name.$domain.cpu.percent.idle),0.01), 1)",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "CPU Busy",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "percent",
+ "label": "",
+ "logBase": 1,
+ "max": "100",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_LOCAL}",
+ "fill": 1,
+ "id": 31,
+ "legend": {
+ "avg": false,
+ "current": true,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 3,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 3,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "alias(sumSeries(collectd.$rgw_name.$domain.interface.*.if_octets.rx), 'rx')"
+ },
+ {
+ "refId": "B",
+ "target": "alias(sumSeries(collectd.$rgw_name.$domain.interface.*.if_octets.tx), 'tx')"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Network Load",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "Bps",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "RGW Host (S3/Swift)",
+ "titleSize": "h6"
+ },
+ {
+ "collapse": false,
+ "height": "300",
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_LOCAL}",
+ "fill": 1,
+ "id": 24,
+ "legend": {
+ "avg": false,
+ "current": true,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 4,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 4,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "alias(sumSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.perf.r_mbps), \"Read Throughput\")",
+ "textEditor": true
+ },
+ {
+ "refId": "B",
+ "target": "alias(sumSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.perf.w_mbps), \"Write Throughput\")",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Backend Disk Load (MB/s) - all OSD's",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_LOCAL}",
+ "fill": 1,
+ "id": 40,
+ "legend": {
+ "avg": false,
+ "current": true,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [
+ {
+ "dashUri": "db/latency-by-server",
+ "dashboard": "Latency by Server",
+ "includeVars": true,
+ "keepTime": true,
+ "targetBlank": true,
+ "title": "Latency by Server",
+ "type": "dashboard"
+ }
+ ],
+ "minSpan": 4,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 4,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "alias(percentileOfSeries(group(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.perf.r_await),$percentile), \"Read Latency\")",
+ "textEditor": true
+ },
+ {
+ "refId": "C",
+ "target": "alias(percentileOfSeries(group(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.perf.w_await),$percentile), \"Write Latency\")",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Backend Disk Latency (ms) - all OSD's - at $percentile%ile",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_LOCAL}",
+ "fill": 1,
+ "id": 43,
+ "legend": {
+ "avg": false,
+ "current": true,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [
+ {
+ "dashUri": "db/disk-busy-by-server",
+ "dashboard": "Disk Busy by Server",
+ "includeVars": true,
+ "keepTime": true,
+ "targetBlank": true,
+ "title": "Disk Busy by Server",
+ "type": "dashboard"
+ }
+ ],
+ "minSpan": 4,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 4,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "alias(percentileOfSeries(group(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.perf.util),$percentile), \"disk busy %\")",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Overall Disk Busy at $percentile%ile",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "",
+ "logBase": 1,
+ "max": "100",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_LOCAL}",
+ "fill": 1,
+ "id": 46,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 4,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 4,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "alias(percentileOfSeries(group(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.perf.iops),$percentile),\"IOPS/spindle\")",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "IOPS per Disk @ $percentile%ile - all OSDs",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_LOCAL}",
+ "fill": 1,
+ "id": 47,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [
+ {
+ "dashUri": "db/iops-by-server",
+ "dashboard": "IOPS by Server",
+ "includeVars": true,
+ "keepTime": true,
+ "targetBlank": true,
+ "title": "IOPS by Server",
+ "type": "dashboard"
+ }
+ ],
+ "minSpan": 4,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 4,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "alias(sumSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.perf.iops),\"IOPS\")",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Backend IOPS - all OSD's",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_LOCAL}",
+ "fill": 1,
+ "id": 44,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 4,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 4,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(scale(collectd.*.$domain.cpu.percent.idle,0.01),1)",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "CPU Busy",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "percent",
+ "label": "",
+ "logBase": 1,
+ "max": "100",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "Backend OSD Load Summary",
+ "titleSize": "h6"
+ },
+ {
+ "collapse": true,
+ "height": 250,
+ "panels": [
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "filterNull": false,
+ "fontSize": "100%",
+ "id": 39,
+ "links": [],
+ "minSpan": 2,
+ "pageSize": null,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": 1,
+ "desc": false
+ },
+ "span": 2,
+ "styles": [
+ {
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Time",
+ "type": "date"
+ },
+ {
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 0,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.osd_id,1,-2)",
+ "textEditor": true
+ }
+ ],
+ "title": "Host/Disk to OSD ID Mapping",
+ "transform": "timeseries_aggregations",
+ "type": "table"
+ },
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "filterNull": false,
+ "fontSize": "100%",
+ "id": 41,
+ "links": [],
+ "minSpan": 2,
+ "pageSize": null,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": 0,
+ "desc": true
+ },
+ "span": 2,
+ "styles": [
+ {
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Time",
+ "type": "date"
+ },
+ {
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 2,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.perf.await,1,-3)",
+ "textEditor": true
+ }
+ ],
+ "title": "Disk Latency Breakdown (ms)",
+ "transform": "timeseries_aggregations",
+ "type": "table"
+ },
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "filterNull": false,
+ "fontSize": "100%",
+ "id": 42,
+ "links": [],
+ "minSpan": 2,
+ "pageSize": null,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": 0,
+ "desc": true
+ },
+ "span": 2,
+ "styles": [
+ {
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Time",
+ "type": "date"
+ },
+ {
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 2,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.perf.mbps,1,-3)",
+ "textEditor": true
+ }
+ ],
+ "title": "Disk Bandwidth (MB/s)",
+ "transform": "timeseries_aggregations",
+ "type": "table"
+ },
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "filterNull": false,
+ "fontSize": "100%",
+ "id": 45,
+ "links": [],
+ "minSpan": 2,
+ "pageSize": null,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": 0,
+ "desc": true
+ },
+ "span": 2,
+ "styles": [
+ {
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Time",
+ "type": "date"
+ },
+ {
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 2,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.perf.util,1,-3)",
+ "textEditor": true
+ }
+ ],
+ "title": "Disk %Util",
+ "transform": "timeseries_aggregations",
+ "type": "table"
+ },
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "filterNull": false,
+ "fontSize": "100%",
+ "id": 48,
+ "links": [],
+ "minSpan": 2,
+ "pageSize": null,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": 0,
+ "desc": true
+ },
+ "span": 2,
+ "styles": [
+ {
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Time",
+ "type": "date"
+ },
+ {
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 0,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.perf.iops,1,-3)",
+ "textEditor": true
+ }
+ ],
+ "title": "IOPS/Disk",
+ "transform": "timeseries_aggregations",
+ "type": "table"
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "OSD Detail",
+ "titleSize": "h6"
+ },
+ {
+ "collapse": true,
+ "height": 250,
+ "panels": [
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "datasource": "${DS_LOCAL}",
+ "filterNull": false,
+ "fontSize": "100%",
+ "id": 10,
+ "links": [],
+ "minSpan": 3,
+ "pageSize": null,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": null,
+ "desc": false
+ },
+ "span": 3,
+ "styles": [
+ {
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Time",
+ "type": "date"
+ },
+ {
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 0,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "number",
+ "unit": "none"
+ }
+ ],
+ "targets": [
+ {
+ "alias": "Objects",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_object",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_object, 'Objects')"
+ },
+ {
+ "alias": "Objects",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_object",
+ "policy": "default",
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_object_degraded, 'Objects degraded')"
+ },
+ {
+ "alias": "Objects",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_object",
+ "policy": "default",
+ "refId": "C",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_object_misplaced, 'Objects misplaced')"
+ },
+ {
+ "alias": "Objects",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_object",
+ "policy": "default",
+ "refId": "D",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_object_unfound, 'Objects unfound')"
+ }
+ ],
+ "title": "Object Summary",
+ "transform": "timeseries_aggregations",
+ "type": "table"
+ },
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "datasource": "${DS_LOCAL}",
+ "filterNull": false,
+ "fontSize": "100%",
+ "id": 13,
+ "links": [],
+ "minSpan": 3,
+ "pageSize": null,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": null,
+ "desc": false
+ },
+ "span": 3,
+ "styles": [
+ {
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Time",
+ "type": "date"
+ },
+ {
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 0,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "number",
+ "unit": "none"
+ }
+ ],
+ "targets": [
+ {
+ "alias": "PG's",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_pg",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_pg, 'PGs')"
+ },
+ {
+ "alias": "PG's",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_pg",
+ "policy": "default",
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_pg_active, 'Active PGs')"
+ },
+ {
+ "alias": "PG's",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_pg",
+ "policy": "default",
+ "refId": "C",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_pg_active_clean, 'Active+clean PGs')"
+ },
+ {
+ "alias": "PG's",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_pg",
+ "policy": "default",
+ "refId": "D",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.num_pg_peering, 'PGs peering')"
+ }
+ ],
+ "title": "PG Summary",
+ "transform": "timeseries_aggregations",
+ "type": "table"
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "RADOS",
+ "titleSize": "h6"
+ }
+ ],
+ "schemaVersion": 14,
+ "style": "dark",
+ "tags": [],
+ "templating": {
+ "list": [
+ {
+ "current": {
+ "value": "${VAR_MONITOR}",
+ "text": "${VAR_MONITOR}"
+ },
+ "hide": 2,
+ "label": null,
+ "name": "monitor",
+ "options": [
+ {
+ "value": "${VAR_MONITOR}",
+ "text": "${VAR_MONITOR}"
+ }
+ ],
+ "query": "${VAR_MONITOR}",
+ "type": "constant"
+ },
+ {
+ "current": {
+ "value": "${VAR_CLUSTER_NAME}",
+ "text": "${VAR_CLUSTER_NAME}"
+ },
+ "hide": 2,
+ "label": null,
+ "name": "cluster_name",
+ "options": [
+ {
+ "value": "${VAR_CLUSTER_NAME}",
+ "text": "${VAR_CLUSTER_NAME}"
+ }
+ ],
+ "query": "${VAR_CLUSTER_NAME}",
+ "type": "constant"
+ },
+ {
+ "allValue": null,
+ "current": {},
+ "datasource": "${DS_LOCAL}",
+ "hide": 0,
+ "includeAll": false,
+ "label": "Workload Pool Name",
+ "multi": false,
+ "name": "pool_name",
+ "options": [],
+ "query": "collectd.$monitor.cephmetrics.gauge.$cluster_name.mon.pools.*",
+ "refresh": 1,
+ "regex": "",
+ "sort": 0,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ },
+ {
+ "allValue": null,
+ "current": {},
+ "datasource": "${DS_LOCAL}",
+ "hide": 0,
+ "includeAll": false,
+ "label": "RGW Host",
+ "multi": false,
+ "name": "rgw_name",
+ "options": [],
+ "query": "collectd.*",
+ "refresh": 1,
+ "regex": "",
+ "sort": 0,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ },
+ {
+ "current": {
+ "value": "${VAR_DOMAIN}",
+ "text": "${VAR_DOMAIN}"
+ },
+ "hide": 2,
+ "label": null,
+ "name": "domain",
+ "options": [
+ {
+ "value": "${VAR_DOMAIN}",
+ "text": "${VAR_DOMAIN}"
+ }
+ ],
+ "query": "${VAR_DOMAIN}",
+ "type": "constant"
+ },
+ {
+ "allValue": null,
+ "current": {
+ "tags": [],
+ "text": "95",
+ "value": "95"
+ },
+ "hide": 0,
+ "includeAll": false,
+ "label": "Percentile",
+ "multi": false,
+ "name": "percentile",
+ "options": [
+ {
+ "selected": false,
+ "text": "80",
+ "value": "80"
+ },
+ {
+ "selected": false,
+ "text": "90",
+ "value": "90"
+ },
+ {
+ "selected": true,
+ "text": "95",
+ "value": "95"
+ },
+ {
+ "selected": false,
+ "text": "98",
+ "value": "98"
+ }
+ ],
+ "query": "80,90,95,98",
+ "type": "custom"
+ }
+ ]
+ },
+ "time": {
+ "from": "now-1h",
+ "to": "now"
+ },
+ "timepicker": {
+ "refresh_intervals": [
+ "5s",
+ "10s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ],
+ "time_options": [
+ "5m",
+ "15m",
+ "1h",
+ "6h",
+ "12h",
+ "24h",
+ "2d",
+ "7d",
+ "30d"
+ ]
+ },
+ "timezone": "browser",
+ "title": "Ceph Dashboard (Graphite)",
+ "version": 43
+}
\ No newline at end of file
--- /dev/null
+{
+ "__inputs": [
+ {
+ "name": "DS_LOCAL",
+ "label": "Local",
+ "description": "",
+ "type": "datasource",
+ "pluginId": "graphite",
+ "pluginName": "Graphite"
+ },
+ {
+ "name": "VAR_DOMAIN",
+ "type": "constant",
+ "label": "domain",
+ "value": "storage.lab",
+ "description": ""
+ },
+ {
+ "name": "VAR_CEPH_CLUSTER",
+ "type": "constant",
+ "label": "ceph_cluster",
+ "value": "ceph",
+ "description": ""
+ }
+ ],
+ "__requires": [
+ {
+ "type": "grafana",
+ "id": "grafana",
+ "name": "Grafana",
+ "version": "4.3.1"
+ },
+ {
+ "type": "panel",
+ "id": "graph",
+ "name": "Graph",
+ "version": ""
+ },
+ {
+ "type": "datasource",
+ "id": "graphite",
+ "name": "Graphite",
+ "version": "1.0.0"
+ }
+ ],
+ "annotations": {
+ "list": []
+ },
+ "editable": true,
+ "gnetId": null,
+ "graphTooltip": 0,
+ "hideControls": false,
+ "id": null,
+ "links": [],
+ "refresh": "10s",
+ "rows": [
+ {
+ "collapse": false,
+ "height": 250,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_LOCAL}",
+ "fill": 1,
+ "id": 8,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 12,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "repeat": null,
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 12,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "groupByNode(collectd.$osd_servers.$domain.cephmetrics.gauge.$ceph_cluster.osd.*.perf.util,1,\"maxSeries\")",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "$osd_servers OSD Servers Disk Utilization Peak",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "",
+ "logBase": 1,
+ "max": "100",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "All Servers by Highest Disk %Util",
+ "titleSize": "h6"
+ },
+ {
+ "collapse": false,
+ "height": 250,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_LOCAL}",
+ "fill": 1,
+ "id": 5,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [
+ {
+ "dashUri": "db/osd-node-detail",
+ "dashboard": "OSD Node Detail",
+ "includeVars": true,
+ "keepTime": true,
+ "targetBlank": true,
+ "title": "OSD Node Details",
+ "type": "dashboard"
+ }
+ ],
+ "minSpan": 3,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "repeat": "osd_servers",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 4,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "alias(percentileOfSeries(group(collectd.$osd_servers.$domain.cephmetrics.gauge.$ceph_cluster.osd.*.perf.util),$percentile),\"all disk busy @$percentile%ile\")",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "$osd_servers Disk Utilisation @ $percentile%ile",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": "100",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "Each OSD Node's $percentile%ile Utilisation",
+ "titleSize": "h6"
+ },
+ {
+ "collapse": false,
+ "height": 250,
+ "panels": [],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": false,
+ "title": "Dashboard Row",
+ "titleSize": "h6"
+ }
+ ],
+ "schemaVersion": 14,
+ "style": "dark",
+ "tags": [],
+ "templating": {
+ "list": [
+ {
+ "current": {
+ "value": "${VAR_DOMAIN}",
+ "text": "${VAR_DOMAIN}"
+ },
+ "hide": 2,
+ "label": null,
+ "name": "domain",
+ "options": [
+ {
+ "value": "${VAR_DOMAIN}",
+ "text": "${VAR_DOMAIN}"
+ }
+ ],
+ "query": "${VAR_DOMAIN}",
+ "type": "constant"
+ },
+ {
+ "current": {
+ "value": "${VAR_CEPH_CLUSTER}",
+ "text": "${VAR_CEPH_CLUSTER}"
+ },
+ "hide": 2,
+ "label": null,
+ "name": "ceph_cluster",
+ "options": [
+ {
+ "value": "${VAR_CEPH_CLUSTER}",
+ "text": "${VAR_CEPH_CLUSTER}"
+ }
+ ],
+ "query": "${VAR_CEPH_CLUSTER}",
+ "type": "constant"
+ },
+ {
+ "allValue": null,
+ "current": {
+ "text": "95",
+ "value": "95"
+ },
+ "hide": 2,
+ "includeAll": false,
+ "label": null,
+ "multi": false,
+ "name": "percentile",
+ "options": [
+ {
+ "selected": false,
+ "text": "80",
+ "value": "80"
+ },
+ {
+ "selected": false,
+ "text": "85",
+ "value": "85"
+ },
+ {
+ "selected": false,
+ "text": "90",
+ "value": "90"
+ },
+ {
+ "selected": true,
+ "text": "95",
+ "value": "95"
+ },
+ {
+ "selected": false,
+ "text": "98",
+ "value": "98"
+ }
+ ],
+ "query": "80,85,90,95,98",
+ "type": "custom"
+ },
+ {
+ "allValue": null,
+ "current": {
+ "selected": true,
+ "text": "All",
+ "value": "$__all"
+ },
+ "hide": 2,
+ "includeAll": true,
+ "label": null,
+ "multi": true,
+ "name": "osd_servers",
+ "options": [
+ {
+ "selected": true,
+ "text": "All",
+ "value": "$__all"
+ },
+ {
+ "selected": false,
+ "text": "obj-osd-1",
+ "value": "obj-osd-1"
+ },
+ {
+ "selected": false,
+ "text": "obj-osd-2",
+ "value": "obj-osd-2"
+ },
+ {
+ "selected": false,
+ "text": "obj-osd-3",
+ "value": "obj-osd-3"
+ }
+ ],
+ "query": "obj-osd-1,obj-osd-2,obj-osd-3",
+ "type": "custom"
+ }
+ ]
+ },
+ "time": {
+ "from": "now-1h",
+ "to": "now"
+ },
+ "timepicker": {
+ "refresh_intervals": [
+ "5s",
+ "10s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ],
+ "time_options": [
+ "5m",
+ "15m",
+ "1h",
+ "6h",
+ "12h",
+ "24h",
+ "2d",
+ "7d",
+ "30d"
+ ]
+ },
+ "timezone": "browser",
+ "title": "Disk Busy by Server",
+ "version": 25
+}
\ No newline at end of file
--- /dev/null
+{
+ "__inputs": [
+ {
+ "name": "DS_LOCAL",
+ "label": "Local",
+ "description": "",
+ "type": "datasource",
+ "pluginId": "graphite",
+ "pluginName": "Graphite"
+ },
+ {
+ "name": "VAR_DOMAIN",
+ "type": "constant",
+ "label": "domain",
+ "value": "storage.lab",
+ "description": ""
+ },
+ {
+ "name": "VAR_CEPH_CLUSTER",
+ "type": "constant",
+ "label": "ceph_cluster",
+ "value": "ceph",
+ "description": ""
+ }
+ ],
+ "__requires": [
+ {
+ "type": "grafana",
+ "id": "grafana",
+ "name": "Grafana",
+ "version": "4.3.1"
+ },
+ {
+ "type": "panel",
+ "id": "graph",
+ "name": "Graph",
+ "version": ""
+ },
+ {
+ "type": "datasource",
+ "id": "graphite",
+ "name": "Graphite",
+ "version": "1.0.0"
+ }
+ ],
+ "annotations": {
+ "list": []
+ },
+ "editable": true,
+ "gnetId": null,
+ "graphTooltip": 0,
+ "hideControls": false,
+ "id": null,
+ "links": [],
+ "refresh": "10s",
+ "rows": [
+ {
+ "collapse": false,
+ "height": 250,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_LOCAL}",
+ "fill": 1,
+ "id": 8,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 12,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "repeat": null,
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 12,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "groupByNode(collectd.$osd_servers.$domain.cephmetrics.gauge.$ceph_cluster.osd.*.perf.iops,1,\"sumSeries\")",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "$osd_servers OSD Server IOPS",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "",
+ "logBase": 1,
+ "max": "100",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "All Servers by IOPS",
+ "titleSize": "h6"
+ },
+ {
+ "collapse": false,
+ "height": 250,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_LOCAL}",
+ "fill": 1,
+ "id": 5,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [
+ {
+ "dashUri": "db/osd-node-detail",
+ "dashboard": "OSD Node Detail",
+ "includeVars": true,
+ "keepTime": true,
+ "targetBlank": true,
+ "title": "OSD Node Details",
+ "type": "dashboard"
+ }
+ ],
+ "minSpan": 3,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "repeat": "osd_servers",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 4,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "group(collectd.$osd_servers.$domain.cephmetrics.gauge.$ceph_cluster.osd.*.perf.iops)",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "$osd_servers Total OSD IOPS",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": "100",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "Each OSD Node's IOPS Load",
+ "titleSize": "h6"
+ },
+ {
+ "collapse": false,
+ "height": 250,
+ "panels": [],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": false,
+ "title": "Dashboard Row",
+ "titleSize": "h6"
+ }
+ ],
+ "schemaVersion": 14,
+ "style": "dark",
+ "tags": [],
+ "templating": {
+ "list": [
+ {
+ "current": {
+ "value": "${VAR_DOMAIN}",
+ "text": "${VAR_DOMAIN}"
+ },
+ "hide": 2,
+ "label": null,
+ "name": "domain",
+ "options": [
+ {
+ "value": "${VAR_DOMAIN}",
+ "text": "${VAR_DOMAIN}"
+ }
+ ],
+ "query": "${VAR_DOMAIN}",
+ "type": "constant"
+ },
+ {
+ "current": {
+ "value": "${VAR_CEPH_CLUSTER}",
+ "text": "${VAR_CEPH_CLUSTER}"
+ },
+ "hide": 2,
+ "label": null,
+ "name": "ceph_cluster",
+ "options": [
+ {
+ "value": "${VAR_CEPH_CLUSTER}",
+ "text": "${VAR_CEPH_CLUSTER}"
+ }
+ ],
+ "query": "${VAR_CEPH_CLUSTER}",
+ "type": "constant"
+ },
+ {
+ "allValue": null,
+ "current": {
+ "selected": true,
+ "text": "All",
+ "value": "$__all"
+ },
+ "hide": 2,
+ "includeAll": true,
+ "label": null,
+ "multi": true,
+ "name": "osd_servers",
+ "options": [
+ {
+ "selected": true,
+ "text": "All",
+ "value": "$__all"
+ },
+ {
+ "selected": false,
+ "text": "obj-osd-1",
+ "value": "obj-osd-1"
+ },
+ {
+ "selected": false,
+ "text": "obj-osd-2",
+ "value": "obj-osd-2"
+ },
+ {
+ "selected": false,
+ "text": "obj-osd-3",
+ "value": "obj-osd-3"
+ }
+ ],
+ "query": "obj-osd-1,obj-osd-2,obj-osd-3",
+ "type": "custom"
+ }
+ ]
+ },
+ "time": {
+ "from": "now-1h",
+ "to": "now"
+ },
+ "timepicker": {
+ "refresh_intervals": [
+ "5s",
+ "10s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ],
+ "time_options": [
+ "5m",
+ "15m",
+ "1h",
+ "6h",
+ "12h",
+ "24h",
+ "2d",
+ "7d",
+ "30d"
+ ]
+ },
+ "timezone": "browser",
+ "title": "IOPS by Server",
+ "version": 2
+}
\ No newline at end of file
--- /dev/null
+{
+ "__inputs": [
+ {
+ "name": "DS_LOCAL",
+ "label": "Local",
+ "description": "",
+ "type": "datasource",
+ "pluginId": "graphite",
+ "pluginName": "Graphite"
+ },
+ {
+ "name": "VAR_DOMAIN",
+ "type": "constant",
+ "label": "domain",
+ "value": "storage.lab",
+ "description": ""
+ },
+ {
+ "name": "VAR_CEPH_CLUSTER",
+ "type": "constant",
+ "label": "ceph_cluster",
+ "value": "ceph",
+ "description": ""
+ }
+ ],
+ "__requires": [
+ {
+ "type": "grafana",
+ "id": "grafana",
+ "name": "Grafana",
+ "version": "4.3.1"
+ },
+ {
+ "type": "panel",
+ "id": "graph",
+ "name": "Graph",
+ "version": ""
+ },
+ {
+ "type": "datasource",
+ "id": "graphite",
+ "name": "Graphite",
+ "version": "1.0.0"
+ }
+ ],
+ "annotations": {
+ "list": []
+ },
+ "editable": true,
+ "gnetId": null,
+ "graphTooltip": 0,
+ "hideControls": false,
+ "id": null,
+ "links": [],
+ "refresh": "10s",
+ "rows": [
+ {
+ "collapse": false,
+ "height": 250,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_LOCAL}",
+ "fill": 1,
+ "id": 8,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 12,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "repeat": null,
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 12,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "groupByNode(collectd.$osd_servers.$domain.cephmetrics.gauge.$ceph_cluster.osd.*.perf.await,1,\"maxSeries\")",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "$osd_servers OSD Servers - Highest Latency",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "",
+ "logBase": 1,
+ "max": "100",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "All Servers by IOPS",
+ "titleSize": "h6"
+ },
+ {
+ "collapse": false,
+ "height": 250,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_LOCAL}",
+ "fill": 1,
+ "id": 5,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [
+ {
+ "dashUri": "db/osd-node-detail",
+ "dashboard": "OSD Node Detail",
+ "includeVars": true,
+ "keepTime": true,
+ "targetBlank": true,
+ "title": "OSD Node Details",
+ "type": "dashboard"
+ }
+ ],
+ "minSpan": 3,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "repeat": "osd_servers",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 4,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "group(collectd.$osd_servers.$domain.cephmetrics.gauge.$ceph_cluster.osd.*.perf.await)",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "$osd_servers Latency",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": "100",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "Each OSD Node's IOPS Load",
+ "titleSize": "h6"
+ },
+ {
+ "collapse": false,
+ "height": 250,
+ "panels": [],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": false,
+ "title": "Dashboard Row",
+ "titleSize": "h6"
+ }
+ ],
+ "schemaVersion": 14,
+ "style": "dark",
+ "tags": [],
+ "templating": {
+ "list": [
+ {
+ "current": {
+ "value": "${VAR_DOMAIN}",
+ "text": "${VAR_DOMAIN}"
+ },
+ "hide": 2,
+ "label": null,
+ "name": "domain",
+ "options": [
+ {
+ "value": "${VAR_DOMAIN}",
+ "text": "${VAR_DOMAIN}"
+ }
+ ],
+ "query": "${VAR_DOMAIN}",
+ "type": "constant"
+ },
+ {
+ "current": {
+ "value": "${VAR_CEPH_CLUSTER}",
+ "text": "${VAR_CEPH_CLUSTER}"
+ },
+ "hide": 2,
+ "label": null,
+ "name": "ceph_cluster",
+ "options": [
+ {
+ "value": "${VAR_CEPH_CLUSTER}",
+ "text": "${VAR_CEPH_CLUSTER}"
+ }
+ ],
+ "query": "${VAR_CEPH_CLUSTER}",
+ "type": "constant"
+ },
+ {
+ "allValue": null,
+ "current": {
+ "selected": true,
+ "text": "All",
+ "value": "$__all"
+ },
+ "hide": 2,
+ "includeAll": true,
+ "label": null,
+ "multi": true,
+ "name": "osd_servers",
+ "options": [
+ {
+ "selected": true,
+ "text": "All",
+ "value": "$__all"
+ },
+ {
+ "selected": false,
+ "text": "obj-osd-1",
+ "value": "obj-osd-1"
+ },
+ {
+ "selected": false,
+ "text": "obj-osd-2",
+ "value": "obj-osd-2"
+ },
+ {
+ "selected": false,
+ "text": "obj-osd-3",
+ "value": "obj-osd-3"
+ }
+ ],
+ "query": "obj-osd-1,obj-osd-2,obj-osd-3",
+ "type": "custom"
+ },
+ {
+ "allValue": null,
+ "current": {
+ "text": "95",
+ "value": "95"
+ },
+ "hide": 2,
+ "includeAll": false,
+ "label": null,
+ "multi": false,
+ "name": "percentile",
+ "options": [
+ {
+ "selected": true,
+ "text": "95",
+ "value": "95"
+ }
+ ],
+ "query": "95",
+ "type": "custom"
+ }
+ ]
+ },
+ "time": {
+ "from": "now-1h",
+ "to": "now"
+ },
+ "timepicker": {
+ "refresh_intervals": [
+ "5s",
+ "10s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ],
+ "time_options": [
+ "5m",
+ "15m",
+ "1h",
+ "6h",
+ "12h",
+ "24h",
+ "2d",
+ "7d",
+ "30d"
+ ]
+ },
+ "timezone": "browser",
+ "title": "Latency by Server",
+ "version": 1
+}
\ No newline at end of file
--- /dev/null
+{
+ "meta": {
+ "canSave": true,
+ "created": "2017-08-03T21:42:28Z",
+ "canStar": true,
+ "expires": "0001-01-01T00:00:00Z",
+ "updated": "2017-08-18T05:26:10Z",
+ "slug": "alert-status",
+ "version": 15,
+ "createdBy": "admin",
+ "updatedBy": "admin",
+ "type": "db",
+ "canEdit": true
+ },
+ "dashboard": {
+ "style": "dark",
+ "rows": [
+ {
+ "repeat": null,
+ "titleSize": "h6",
+ "collapse": false,
+ "title": "Dashboard Row",
+ "height": "250px",
+ "repeatRowId": null,
+ "panels": [
+ {
+ "span": 12,
+ "stateFilter": [
+ "alerting"
+ ],
+ "links": [],
+ "show": "current",
+ "title": "Active Ceph Alert List",
+ "onlyAlertsOnDashboard": true,
+ "limit": "20",
+ "sortOrder": 3,
+ "type": "alertlist",
+ "id": 1
+ }
+ ],
+ "showTitle": false,
+ "repeatIteration": null
+ },
+ {
+ "repeat": null,
+ "titleSize": "h5",
+ "collapse": false,
+ "title": "Health Checks",
+ "height": 250,
+ "repeatRowId": null,
+ "panels": [
+ {
+ "bars": false,
+ "timeFrom": null,
+ "links": [],
+ "thresholds": [
+ {
+ "colorMode": "critical",
+ "line": true,
+ "fill": true,
+ "value": 0,
+ "op": "gt"
+ }
+ ],
+ "spaceLength": 10,
+ "nullPointMode": "null",
+ "renderer": "flot",
+ "linewidth": 2,
+ "steppedLine": true,
+ "id": 2,
+ "maxDataPoints": "360",
+ "fill": 1,
+ "span": 2,
+ "title": "Overall Ceph Health",
+ "tooltip": {
+ "sort": 1,
+ "shared": false,
+ "value_type": "individual"
+ },
+ "targets": [
+ {
+ "textEditor": true,
+ "target": "alias(maxSeries(consolidateBy(keepLastValue(transformNull(collectd.*.$domain.cephmetrics.gauge.*.mon.health,0)),\"max\")),\"Ceph Health\")",
+ "refId": "A"
+ }
+ ],
+ "yaxes": [
+ {
+ "logBase": 1,
+ "format": "short",
+ "max": "10",
+ "min": "0",
+ "label": "",
+ "show": true
+ },
+ {
+ "logBase": 1,
+ "show": false,
+ "max": null,
+ "format": "short",
+ "label": null,
+ "min": null
+ }
+ ],
+ "xaxis": {
+ "buckets": null,
+ "show": true,
+ "values": [],
+ "mode": "time",
+ "name": null
+ },
+ "seriesOverrides": [],
+ "percentage": false,
+ "type": "graph",
+ "dashes": false,
+ "description": "The chart plots the clusters health, over time. Health is depicted as a integer; 0, 4 or 8 where 0 is OK, 4 is WARN and 8 represents an ERROR state.",
+ "alert": {
+ "noDataState": "no_data",
+ "name": "Overall Ceph Health",
+ "frequency": "10s",
+ "notifications": [
+ {
+ "id": 1
+ }
+ ],
+ "handler": 1,
+ "executionErrorState": "keep_state",
+ "message": "Cluster Health is not OK",
+ "conditions": [
+ {
+ "operator": {
+ "type": "and"
+ },
+ "query": {
+ "params": [
+ "A",
+ "20s",
+ "now"
+ ]
+ },
+ "evaluator": {
+ "type": "gt",
+ "params": [
+ 0
+ ]
+ },
+ "reducer": {
+ "params": [],
+ "type": "max"
+ },
+ "type": "query"
+ }
+ ]
+ },
+ "hideTimeOverride": false,
+ "dashLength": 10,
+ "stack": false,
+ "timeShift": null,
+ "aliasColors": {
+ "Ceph Health (0:OK, 4:Warning,8:Error)": "#DEDAF7",
+ "Ceph Health": "#890F02",
+ "ceph health": "#890F02"
+ },
+ "lines": true,
+ "legend": {
+ "total": false,
+ "min": false,
+ "max": false,
+ "show": true,
+ "current": false,
+ "values": false,
+ "avg": false
+ },
+ "points": false,
+ "datasource": "Local",
+ "pointradius": 5,
+ "minSpan": 2
+ },
+ {
+ "bars": false,
+ "timeFrom": null,
+ "links": [],
+ "thresholds": [
+ {
+ "colorMode": "critical",
+ "line": true,
+ "fill": true,
+ "value": 0,
+ "op": "gt"
+ }
+ ],
+ "spaceLength": 10,
+ "nullPointMode": "null",
+ "renderer": "flot",
+ "linewidth": 1,
+ "steppedLine": false,
+ "targets": [
+ {
+ "textEditor": true,
+ "hide": true,
+ "target": "currentAbove(transformNull(keepLastValue(collectd.*.$domain.cephmetrics.gauge.*.osd.*.osd_percent_used),0),85)",
+ "refId": "A"
+ },
+ {
+ "targetFull": "alias(countSeries(currentAbove(transformNull(keepLastValue(collectd.*.$domain.cephmetrics.gauge.*.osd.*.osd_percent_used),0),85)),\"OSDs Near Full\")",
+ "textEditor": true,
+ "target": "alias(countSeries(#A),\"OSDs Near Full\")",
+ "refId": "B"
+ }
+ ],
+ "fill": 1,
+ "span": 2,
+ "title": "Disks Near Full",
+ "tooltip": {
+ "sort": 0,
+ "shared": true,
+ "value_type": "individual"
+ },
+ "id": 3,
+ "yaxes": [
+ {
+ "logBase": 1,
+ "min": "0",
+ "max": null,
+ "format": "short",
+ "label": null,
+ "show": true
+ },
+ {
+ "logBase": 1,
+ "min": null,
+ "max": null,
+ "format": "short",
+ "show": false,
+ "label": null
+ }
+ ],
+ "xaxis": {
+ "buckets": null,
+ "values": [],
+ "mode": "time",
+ "name": null,
+ "show": true
+ },
+ "seriesOverrides": [],
+ "percentage": false,
+ "type": "graph",
+ "dashes": false,
+ "description": "This shows how many disks are at or above 80% full. Performance may degrade beyond this threshold on filestore (XFS) backed OSD's.",
+ "alert": {
+ "noDataState": "ok",
+ "name": "Disks Near Full",
+ "frequency": "60s",
+ "notifications": [
+ {
+ "id": 1
+ }
+ ],
+ "handler": 1,
+ "executionErrorState": "keep_state",
+ "message": "DIsks Near full detected within the cluster. Warning threshold is 80% full.",
+ "conditions": [
+ {
+ "operator": {
+ "type": "and"
+ },
+ "query": {
+ "params": [
+ "A",
+ "1m",
+ "now"
+ ]
+ },
+ "evaluator": {
+ "params": [
+ 0
+ ],
+ "type": "gt"
+ },
+ "reducer": {
+ "type": "max",
+ "params": []
+ },
+ "type": "query"
+ }
+ ]
+ },
+ "dashLength": 10,
+ "stack": false,
+ "timeShift": null,
+ "aliasColors": {},
+ "lines": true,
+ "legend": {
+ "total": false,
+ "show": false,
+ "max": false,
+ "min": false,
+ "current": false,
+ "values": false,
+ "avg": false
+ },
+ "points": false,
+ "datasource": "Local",
+ "pointradius": 5,
+ "minSpan": 2
+ },
+ {
+ "bars": true,
+ "timeFrom": "5m",
+ "links": [],
+ "thresholds": [
+ {
+ "colorMode": "critical",
+ "line": true,
+ "op": "gt",
+ "value": 0,
+ "fill": true
+ }
+ ],
+ "spaceLength": 10,
+ "nullPointMode": "null",
+ "renderer": "flot",
+ "linewidth": 2,
+ "steppedLine": true,
+ "targets": [
+ {
+ "textEditor": true,
+ "hide": true,
+ "target": "alias(keepLastValue(consolidateBy(maxSeries(collectd.*.$domain.cephmetrics.gauge.*.mon.num_osd), \"max\")),\"total\")",
+ "refId": "A"
+ },
+ {
+ "hide": true,
+ "textEditor": true,
+ "refId": "B",
+ "target": "alias(keepLastValue(consolidateBy(maxSeries(collectd.*.$domain.cephmetrics.gauge.*.mon.num_osd_up), \"max\")),\"up\")"
+ },
+ {
+ "hide": false,
+ "targetFull": "alias(diffSeries(alias(keepLastValue(consolidateBy(maxSeries(collectd.*.$domain.cephmetrics.gauge.*.mon.num_osd), \"max\")),\"total\"),alias(keepLastValue(consolidateBy(maxSeries(collectd.*.$domain.cephmetrics.gauge.*.mon.num_osd_up), \"max\")),\"up\")), \"down\")",
+ "textEditor": true,
+ "refId": "C",
+ "target": "alias(diffSeries(#A,#B), \"down\")"
+ }
+ ],
+ "fill": 2,
+ "span": 2,
+ "title": "OSDs Down",
+ "tooltip": {
+ "sort": 0,
+ "shared": true,
+ "value_type": "individual"
+ },
+ "id": 4,
+ "yaxes": [
+ {
+ "logBase": 1,
+ "format": "short",
+ "max": null,
+ "min": "0",
+ "label": null,
+ "show": true
+ },
+ {
+ "logBase": 1,
+ "min": null,
+ "max": null,
+ "format": "short",
+ "show": false,
+ "label": null
+ }
+ ],
+ "xaxis": {
+ "buckets": null,
+ "show": true,
+ "values": [],
+ "mode": "time",
+ "name": null
+ },
+ "seriesOverrides": [],
+ "percentage": false,
+ "type": "graph",
+ "dashes": false,
+ "description": "Count of OSDs currently in a DOWN state",
+ "alert": {
+ "noDataState": "ok",
+ "name": "OSDs Down",
+ "frequency": "10s",
+ "notifications": [
+ {
+ "id": 1
+ }
+ ],
+ "handler": 1,
+ "executionErrorState": "alerting",
+ "message": "OSD Down event",
+ "conditions": [
+ {
+ "operator": {
+ "type": "and"
+ },
+ "query": {
+ "params": [
+ "C",
+ "30s",
+ "now"
+ ]
+ },
+ "evaluator": {
+ "type": "gt",
+ "params": [
+ 0
+ ]
+ },
+ "reducer": {
+ "params": [],
+ "type": "max"
+ },
+ "type": "query"
+ }
+ ]
+ },
+ "hideTimeOverride": true,
+ "dashLength": 10,
+ "stack": false,
+ "timeShift": null,
+ "aliasColors": {},
+ "lines": false,
+ "legend": {
+ "rightSide": false,
+ "total": false,
+ "min": false,
+ "max": false,
+ "show": false,
+ "current": false,
+ "values": false,
+ "alignAsTable": false,
+ "avg": false,
+ "hideZero": false
+ },
+ "points": false,
+ "datasource": "Local",
+ "pointradius": 5,
+ "minSpan": 2
+ },
+ {
+ "bars": false,
+ "timeFrom": null,
+ "links": [],
+ "thresholds": [
+ {
+ "colorMode": "critical",
+ "line": true,
+ "op": "gt",
+ "value": 85,
+ "fill": true
+ }
+ ],
+ "spaceLength": 10,
+ "nullPointMode": "null",
+ "renderer": "flot",
+ "stack": false,
+ "linewidth": 1,
+ "steppedLine": false,
+ "targets": [
+ {
+ "hide": true,
+ "textEditor": true,
+ "refId": "A",
+ "target": "alias(maxSeries(groupByNode(collectd.*.$domain.cephmetrics.gauge.*.mon.osd_bytes,1, \"maxSeries\")), \"Raw Capacity\")"
+ },
+ {
+ "hide": true,
+ "textEditor": true,
+ "refId": "B",
+ "target": "alias(maxSeries(groupByNode(collectd.*.$domain.cephmetrics.gauge.*.mon.osd_bytes_used,1, \"maxSeries\")), \"Used Raw\")"
+ },
+ {
+ "targetFull": "alias(asPercent(alias(maxSeries(groupByNode(collectd.*.$domain.cephmetrics.gauge.*.mon.osd_bytes_used,1, \"maxSeries\")), \"Used Raw\"), alias(maxSeries(groupByNode(collectd.*.$domain.cephmetrics.gauge.*.mon.osd_bytes,1, \"maxSeries\")), \"Raw Capacity\")), \"Raw Capacity Used %\")",
+ "textEditor": true,
+ "target": "alias(asPercent(#B, #A), \"Raw Capacity Used %\")",
+ "refId": "C"
+ }
+ ],
+ "fill": 1,
+ "span": 2,
+ "title": "Cluster Capacity",
+ "tooltip": {
+ "sort": 0,
+ "shared": true,
+ "value_type": "individual"
+ },
+ "id": 5,
+ "points": false,
+ "xaxis": {
+ "buckets": null,
+ "show": true,
+ "values": [],
+ "mode": "time",
+ "name": null
+ },
+ "seriesOverrides": [],
+ "percentage": false,
+ "type": "graph",
+ "dashes": false,
+ "description": "This trigger raises a notification if the raw used crosses the 85% capacity threshold of the ceph cluster",
+ "alert": {
+ "noDataState": "keep_state",
+ "name": "Cluster Capacity",
+ "frequency": "60s",
+ "notifications": [
+ {
+ "id": 1
+ }
+ ],
+ "handler": 1,
+ "executionErrorState": "alerting",
+ "message": "Cluster Capacity Limit Warning",
+ "conditions": [
+ {
+ "operator": {
+ "type": "and"
+ },
+ "query": {
+ "params": [
+ "C",
+ "1h",
+ "now"
+ ]
+ },
+ "evaluator": {
+ "params": [
+ 85
+ ],
+ "type": "gt"
+ },
+ "reducer": {
+ "params": [],
+ "type": "avg"
+ },
+ "type": "query"
+ }
+ ]
+ },
+ "dashLength": 10,
+ "legend": {
+ "total": false,
+ "min": false,
+ "max": false,
+ "show": true,
+ "current": false,
+ "values": false,
+ "avg": false
+ },
+ "timeShift": null,
+ "aliasColors": {},
+ "lines": true,
+ "yaxes": [
+ {
+ "logBase": 1,
+ "min": "0",
+ "max": "100",
+ "format": "percent",
+ "show": true,
+ "label": ""
+ },
+ {
+ "logBase": 1,
+ "min": null,
+ "max": null,
+ "format": "short",
+ "show": false,
+ "label": null
+ }
+ ],
+ "datasource": "Local",
+ "pointradius": 5,
+ "minSpan": 2
+ },
+ {
+ "bars": false,
+ "timeFrom": "6h",
+ "links": [],
+ "thresholds": [
+ {
+ "colorMode": "critical",
+ "line": true,
+ "fill": true,
+ "value": 0,
+ "op": "gt"
+ }
+ ],
+ "spaceLength": 10,
+ "nullPointMode": "null",
+ "renderer": "flot",
+ "linewidth": 2,
+ "steppedLine": false,
+ "targets": [
+ {
+ "textEditor": true,
+ "refId": "A",
+ "target": "alias(maxSeries(consolidateBy(collectd.*.$domain.cephmetrics.gauge.*.mon.num_pgs_stuck, \"maxSeries\")), \"# pg's stuck inactive\")"
+ }
+ ],
+ "fill": 2,
+ "span": 2,
+ "title": "PG's Stuck",
+ "tooltip": {
+ "sort": 0,
+ "shared": false,
+ "value_type": "individual"
+ },
+ "id": 8,
+ "yaxes": [
+ {
+ "logBase": 1,
+ "min": "0",
+ "max": null,
+ "format": "short",
+ "show": true,
+ "label": null
+ },
+ {
+ "logBase": 1,
+ "show": false,
+ "max": null,
+ "format": "short",
+ "min": null,
+ "label": null
+ }
+ ],
+ "xaxis": {
+ "buckets": null,
+ "show": true,
+ "values": [
+ "total"
+ ],
+ "mode": "time",
+ "name": null
+ },
+ "seriesOverrides": [],
+ "percentage": false,
+ "type": "graph",
+ "dashes": false,
+ "description": "This chart shows whether there are pg's in a stuck state, that need manual intervention to resolve.",
+ "alert": {
+ "noDataState": "no_data",
+ "name": "PG's Stuck",
+ "frequency": "60s",
+ "notifications": [
+ {
+ "id": 1
+ }
+ ],
+ "handler": 1,
+ "executionErrorState": "alerting",
+ "message": "PG's stuck inactive",
+ "conditions": [
+ {
+ "operator": {
+ "type": "and"
+ },
+ "query": {
+ "params": [
+ "A",
+ "1m",
+ "now"
+ ]
+ },
+ "evaluator": {
+ "params": [
+ 0
+ ],
+ "type": "gt"
+ },
+ "reducer": {
+ "type": "last",
+ "params": []
+ },
+ "type": "query"
+ }
+ ]
+ },
+ "hideTimeOverride": true,
+ "dashLength": 10,
+ "stack": false,
+ "timeShift": null,
+ "aliasColors": {},
+ "lines": true,
+ "legend": {
+ "total": false,
+ "min": false,
+ "max": false,
+ "show": true,
+ "current": false,
+ "values": false,
+ "avg": false
+ },
+ "points": false,
+ "datasource": "Local",
+ "pointradius": 5,
+ "minSpan": 2
+ },
+ {
+ "bars": false,
+ "timeFrom": null,
+ "links": [],
+ "thresholds": [
+ {
+ "colorMode": "critical",
+ "line": true,
+ "op": "lt",
+ "value": 0,
+ "fill": true
+ }
+ ],
+ "spaceLength": 10,
+ "nullPointMode": "null",
+ "renderer": "flot",
+ "linewidth": 1,
+ "steppedLine": false,
+ "targets": [
+ {
+ "hide": true,
+ "textEditor": true,
+ "refId": "A",
+ "target": "alias(scale(maxSeries(groupByNode(collectd.*.$domain.cephmetrics.gauge.*.mon.osd_bytes_avail,1, \"maxSeries\")),0.9), \"Raw Freespace\")"
+ },
+ {
+ "textEditor": true,
+ "hide": true,
+ "target": "alias(maxSeries(groupByNode(keepLastValue(collectd.*.$domain.cephmetrics.gauge.*.osd.*.stat_bytes),1,\"sumSeries\")), \"Largest OSD Host\")",
+ "refId": "B"
+ },
+ {
+ "targetFull": "alias(diffSeries(alias(scale(maxSeries(groupByNode(collectd.*.$domain.cephmetrics.gauge.*.mon.osd_bytes_avail,1, \"maxSeries\")),0.9), \"Raw Freespace\"),alias(maxSeries(groupByNode(keepLastValue(collectd.*.$domain.cephmetrics.gauge.*.osd.*.stat_bytes),1,\"sumSeries\")), \"Largest OSD Host\")),\"freespace after Node loss\")",
+ "textEditor": true,
+ "refId": "C",
+ "target": "alias(diffSeries(#A,#B),\"freespace after Node loss\")"
+ }
+ ],
+ "fill": 1,
+ "span": 2,
+ "title": "OSD Host Loss Check",
+ "tooltip": {
+ "sort": 0,
+ "shared": true,
+ "value_type": "individual"
+ },
+ "id": 9,
+ "yaxes": [
+ {
+ "logBase": 1,
+ "show": true,
+ "max": null,
+ "format": "decbytes",
+ "min": "0",
+ "label": null
+ },
+ {
+ "logBase": 1,
+ "show": true,
+ "max": null,
+ "format": "short",
+ "min": null,
+ "label": null
+ }
+ ],
+ "xaxis": {
+ "buckets": null,
+ "show": true,
+ "values": [],
+ "mode": "time",
+ "name": null
+ },
+ "seriesOverrides": [],
+ "percentage": false,
+ "type": "graph",
+ "dashes": false,
+ "description": "This graph checks the cluster @ 90% full is enough to support the loss of the largest OSD host",
+ "alert": {
+ "noDataState": "ok",
+ "name": "OSD Host Loss Check",
+ "frequency": "60s",
+ "notifications": [
+ {
+ "id": 1
+ }
+ ],
+ "handler": 1,
+ "executionErrorState": "alerting",
+ "message": "OSD Host Loss Free Space Check Failed",
+ "conditions": [
+ {
+ "operator": {
+ "type": "and"
+ },
+ "query": {
+ "params": [
+ "A",
+ "5m",
+ "now"
+ ]
+ },
+ "evaluator": {
+ "type": "lt",
+ "params": [
+ 0
+ ]
+ },
+ "reducer": {
+ "type": "min",
+ "params": []
+ },
+ "type": "query"
+ }
+ ]
+ },
+ "dashLength": 10,
+ "stack": false,
+ "timeShift": null,
+ "aliasColors": {
+ "Largest OSD Host": "#890F02"
+ },
+ "lines": true,
+ "legend": {
+ "total": false,
+ "show": false,
+ "max": false,
+ "min": false,
+ "current": false,
+ "values": false,
+ "avg": false
+ },
+ "points": false,
+ "datasource": "Local",
+ "pointradius": 5,
+ "minSpan": 2
+ },
+ {
+ "bars": false,
+ "timeFrom": "1h",
+ "links": [],
+ "thresholds": [
+ {
+ "colorMode": "critical",
+ "line": true,
+ "fill": true,
+ "value": 1000,
+ "op": "gt"
+ }
+ ],
+ "spaceLength": 10,
+ "nullPointMode": "null",
+ "renderer": "flot",
+ "stack": false,
+ "linewidth": 1,
+ "steppedLine": false,
+ "targets": [
+ {
+ "textEditor": true,
+ "refId": "A",
+ "target": "aliasByNode(currentAbove(keepLastValue(transformNull(collectd.*.$domain.cephmetrics.gauge.*.osd.*.perf.await,-1)),1000),1,-3)"
+ }
+ ],
+ "maxDataPoints": "",
+ "fill": 1,
+ "span": 2,
+ "title": "Slow OSD responses",
+ "tooltip": {
+ "sort": 0,
+ "shared": true,
+ "value_type": "individual"
+ },
+ "id": 10,
+ "yaxes": [
+ {
+ "logBase": 1,
+ "min": "0",
+ "max": null,
+ "format": "none",
+ "label": "ms",
+ "show": true
+ },
+ {
+ "logBase": 1,
+ "format": "short",
+ "max": null,
+ "min": null,
+ "label": null,
+ "show": false
+ }
+ ],
+ "xaxis": {
+ "buckets": null,
+ "show": true,
+ "values": [],
+ "mode": "time",
+ "name": null
+ },
+ "seriesOverrides": [],
+ "percentage": false,
+ "type": "graph",
+ "dashes": false,
+ "description": "Graph checking for OSD Latencies that are above 1s.",
+ "alert": {
+ "noDataState": "ok",
+ "name": "Slow OSD responses alert",
+ "frequency": "30s",
+ "notifications": [
+ {
+ "id": 1
+ }
+ ],
+ "handler": 1,
+ "executionErrorState": "alerting",
+ "message": "OSD Response time is > 1s",
+ "conditions": [
+ {
+ "operator": {
+ "type": "and"
+ },
+ "query": {
+ "params": [
+ "A",
+ "1m",
+ "now"
+ ]
+ },
+ "evaluator": {
+ "type": "gt",
+ "params": [
+ 1000
+ ]
+ },
+ "reducer": {
+ "type": "max",
+ "params": []
+ },
+ "type": "query"
+ }
+ ]
+ },
+ "hideTimeOverride": true,
+ "dashLength": 10,
+ "legend": {
+ "total": false,
+ "show": true,
+ "max": false,
+ "min": false,
+ "current": false,
+ "values": false,
+ "avg": false
+ },
+ "timeShift": null,
+ "aliasColors": {
+ "Largest OSD Host": "#890F02"
+ },
+ "lines": true,
+ "points": false,
+ "datasource": "Local",
+ "pointradius": 5,
+ "minSpan": 2
+ },
+ {
+ "bars": false,
+ "timeFrom": null,
+ "links": [],
+ "thresholds": [
+ {
+ "colorMode": "critical",
+ "line": true,
+ "op": "gt",
+ "value": 10,
+ "fill": true
+ }
+ ],
+ "spaceLength": 10,
+ "nullPointMode": "null",
+ "renderer": "flot",
+ "linewidth": 1,
+ "steppedLine": false,
+ "id": 11,
+ "fill": 1,
+ "span": 2,
+ "title": "Network Errors",
+ "tooltip": {
+ "sort": 0,
+ "shared": true,
+ "value_type": "individual"
+ },
+ "targets": [
+ {
+ "textEditor": true,
+ "target": "groupByNode(collectd.*.$domain.interface.*.if_{dropped,errors}.*,1,\"sumSeries\")",
+ "refId": "A"
+ }
+ ],
+ "points": false,
+ "xaxis": {
+ "buckets": null,
+ "show": true,
+ "values": [],
+ "mode": "time",
+ "name": null
+ },
+ "seriesOverrides": [],
+ "percentage": false,
+ "type": "graph",
+ "dashes": false,
+ "description": "Checks all interfaces for dropped/error packets, and alerts if more than 10 are seen in a 5m interval",
+ "alert": {
+ "noDataState": "no_data",
+ "name": "Network Errors alert",
+ "frequency": "30s",
+ "notifications": [
+ {
+ "id": 1
+ }
+ ],
+ "handler": 1,
+ "executionErrorState": "keep_state",
+ "message": "Network rx/tx issues detected",
+ "conditions": [
+ {
+ "operator": {
+ "type": "and"
+ },
+ "query": {
+ "params": [
+ "A",
+ "5m",
+ "now"
+ ]
+ },
+ "evaluator": {
+ "type": "gt",
+ "params": [
+ 10
+ ]
+ },
+ "reducer": {
+ "type": "max",
+ "params": []
+ },
+ "type": "query"
+ }
+ ]
+ },
+ "dashLength": 10,
+ "stack": false,
+ "timeShift": null,
+ "aliasColors": {},
+ "lines": true,
+ "legend": {
+ "total": false,
+ "min": false,
+ "max": false,
+ "show": false,
+ "current": false,
+ "values": false,
+ "avg": false
+ },
+ "yaxes": [
+ {
+ "logBase": 1,
+ "format": "none",
+ "max": null,
+ "min": "0",
+ "label": null,
+ "show": true
+ },
+ {
+ "logBase": 1,
+ "min": null,
+ "max": null,
+ "format": "short",
+ "show": false,
+ "label": null
+ }
+ ],
+ "datasource": null,
+ "pointradius": 5,
+ "minSpan": 2
+ },
+ {
+ "bars": false,
+ "timeFrom": null,
+ "links": [],
+ "thresholds": [
+ {
+ "colorMode": "critical",
+ "line": true,
+ "fill": true,
+ "value": 85,
+ "op": "gt"
+ }
+ ],
+ "spaceLength": 10,
+ "nullPointMode": "null",
+ "renderer": "flot",
+ "linewidth": 2,
+ "steppedLine": false,
+ "targets": [
+ {
+ "textEditor": true,
+ "refId": "A",
+ "target": "groupByNode(collectd.*.$domain.cephmetrics.gauge.*.mon.pools.*.percent_used,-2,'maxSeries')"
+ }
+ ],
+ "fill": 5,
+ "span": 2,
+ "title": "Pool Capacity",
+ "tooltip": {
+ "sort": 0,
+ "shared": true,
+ "value_type": "individual"
+ },
+ "id": 12,
+ "points": false,
+ "xaxis": {
+ "buckets": null,
+ "values": [],
+ "mode": "time",
+ "name": null,
+ "show": true
+ },
+ "seriesOverrides": [],
+ "percentage": false,
+ "type": "graph",
+ "dashes": false,
+ "repeat": null,
+ "alert": {
+ "noDataState": "keep_state",
+ "name": "Pool Capacity",
+ "frequency": "60s",
+ "notifications": [],
+ "handler": 1,
+ "executionErrorState": "alerting",
+ "conditions": [
+ {
+ "operator": {
+ "type": "and"
+ },
+ "query": {
+ "params": [
+ "A",
+ "5m",
+ "now"
+ ]
+ },
+ "evaluator": {
+ "params": [
+ 85
+ ],
+ "type": "gt"
+ },
+ "reducer": {
+ "params": [],
+ "type": "avg"
+ },
+ "type": "query"
+ }
+ ]
+ },
+ "dashLength": 10,
+ "stack": false,
+ "timeShift": null,
+ "aliasColors": {},
+ "lines": true,
+ "legend": {
+ "avg": false,
+ "min": false,
+ "max": false,
+ "show": true,
+ "current": false,
+ "values": false,
+ "total": false
+ },
+ "yaxes": [
+ {
+ "logBase": 1,
+ "format": "percent",
+ "max": null,
+ "min": null,
+ "label": null,
+ "show": true
+ },
+ {
+ "logBase": 1,
+ "show": true,
+ "max": null,
+ "format": "short",
+ "label": null,
+ "min": null
+ }
+ ],
+ "datasource": "Local",
+ "pointradius": 5,
+ "minSpan": 2
+ }
+ ],
+ "showTitle": true,
+ "repeatIteration": null
+ }
+ ],
+ "templating": {
+ "list": []
+ },
+ "links": [],
+ "tags": [],
+ "graphTooltip": 0,
+ "hideControls": true,
+ "title": "Alert Status",
+ "editable": false,
+ "refresh": "10s",
+ "annotations": {
+ "list": []
+ },
+ "gnetId": null,
+ "version": 15,
+ "time": {
+ "to": "now",
+ "from": "now-1h"
+ },
+ "timezone": "browser",
+ "schemaVersion": 14,
+ "timepicker": {
+ "time_options": [
+ "5m",
+ "15m",
+ "1h",
+ "6h",
+ "12h",
+ "24h",
+ "2d",
+ "7d",
+ "30d"
+ ],
+ "refresh_intervals": [
+ "5s",
+ "10s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ]
+ },
+ "id": 24
+ }
+}
--- /dev/null
+{
+ "dashboard": {
+ "annotations": {
+ "list": []
+ },
+ "editable": false,
+ "gnetId": null,
+ "graphTooltip": 0,
+ "hideControls": true,
+ "id": 64,
+ "links": [
+ {
+ "asDropdown": true,
+ "icon": "external link",
+ "includeVars": true,
+ "keepTime": true,
+ "tags": [
+ "overview"
+ ],
+ "targetBlank": true,
+ "title": "Shortcuts",
+ "type": "dashboards"
+ }
+ ],
+ "refresh": "10s",
+ "rows": [
+ {
+ "collapse": false,
+ "height": "145",
+ "panels": [
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "Local",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "height": "50px",
+ "id": 86,
+ "interval": null,
+ "links": [
+ {
+ "dashUri": "db/ceph-cluster",
+ "dashboard": "Ceph Cluster",
+ "includeVars": true,
+ "keepTime": true,
+ "targetBlank": true,
+ "title": "Ceph Cluster",
+ "type": "dashboard"
+ }
+ ],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "10%",
+ "prefix": "",
+ "prefixFontSize": "10%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "refId": "A",
+ "target": ""
+ }
+ ],
+ "thresholds": "",
+ "title": "",
+ "transparent": true,
+ "type": "singlestat",
+ "valueFontSize": "35%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "Cluster",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "Local",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "height": "50px",
+ "id": 82,
+ "interval": null,
+ "links": [
+ {
+ "dashUri": "db/ceph-pools",
+ "dashboard": "Ceph Pools",
+ "includeVars": true,
+ "keepTime": true,
+ "targetBlank": true,
+ "title": "Ceph Pools",
+ "type": "dashboard"
+ }
+ ],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "10%",
+ "prefix": "",
+ "prefixFontSize": "10%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "refId": "A",
+ "target": ""
+ }
+ ],
+ "thresholds": "",
+ "title": "",
+ "transparent": true,
+ "type": "singlestat",
+ "valueFontSize": "35%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "Pools",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "Local",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "height": "50px",
+ "id": 91,
+ "interval": null,
+ "links": [
+ {
+ "dashUri": "db/ceph-osd-information",
+ "dashboard": "Ceph OSD Information",
+ "includeVars": true,
+ "keepTime": true,
+ "targetBlank": true,
+ "title": "Ceph OSD Information",
+ "type": "dashboard"
+ }
+ ],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "10%",
+ "prefix": "",
+ "prefixFontSize": "10%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "refId": "A",
+ "target": ""
+ }
+ ],
+ "thresholds": "",
+ "title": "",
+ "transparent": true,
+ "type": "singlestat",
+ "valueFontSize": "35%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "OSDs",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "Local",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "height": "50px",
+ "id": 84,
+ "interval": null,
+ "links": [
+ {
+ "dashUri": "db/ceph-rgw-workload",
+ "dashboard": "Ceph - RGW Workload",
+ "includeVars": true,
+ "keepTime": true,
+ "targetBlank": true,
+ "title": "Ceph RADOSGW Performance",
+ "type": "dashboard"
+ }
+ ],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "10%",
+ "prefix": "",
+ "prefixFontSize": "10%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "refId": "A",
+ "target": ""
+ }
+ ],
+ "thresholds": "",
+ "title": "",
+ "transparent": true,
+ "type": "singlestat",
+ "valueFontSize": "35%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "S3/Swift",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "Local",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "height": "50px",
+ "id": 83,
+ "interval": null,
+ "links": [
+ {
+ "dashUri": "db/ceph-backend-storage",
+ "dashboard": "Ceph Backend Storage",
+ "includeVars": true,
+ "keepTime": true,
+ "targetBlank": true,
+ "title": "OSD Host Performance",
+ "type": "dashboard"
+ }
+ ],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "10%",
+ "prefix": "",
+ "prefixFontSize": "10%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "refId": "A",
+ "target": ""
+ }
+ ],
+ "thresholds": "",
+ "title": "",
+ "transparent": true,
+ "type": "singlestat",
+ "valueFontSize": "35%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "OSD Hosts",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "Local",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "height": "50px",
+ "id": 85,
+ "interval": null,
+ "links": [
+ {
+ "dashUri": "db/network-usage-by-node",
+ "dashboard": "Network Usage by Node",
+ "includeVars": true,
+ "keepTime": true,
+ "targetBlank": true,
+ "title": "Network Usage by Host",
+ "type": "dashboard"
+ }
+ ],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "10%",
+ "prefix": "",
+ "prefixFontSize": "10%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "refId": "A",
+ "target": ""
+ }
+ ],
+ "thresholds": "",
+ "title": "",
+ "transparent": true,
+ "type": "singlestat",
+ "valueFontSize": "35%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "Network",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "content": "",
+ "id": 95,
+ "links": [],
+ "minSpan": 4,
+ "mode": "markdown",
+ "span": 4,
+ "title": "",
+ "transparent": true,
+ "type": "text"
+ },
+ {
+ "id": 94,
+ "limit": 10,
+ "links": [
+ {
+ "dashUri": "db/alert-status",
+ "dashboard": "Alert Status",
+ "targetBlank": true,
+ "title": "Alert Status",
+ "type": "dashboard"
+ }
+ ],
+ "minSpan": 2,
+ "onlyAlertsOnDashboard": false,
+ "show": "current",
+ "sortOrder": 3,
+ "span": 2,
+ "stateFilter": [
+ "alerting"
+ ],
+ "title": "Active Alerts",
+ "type": "alertlist"
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": false,
+ "title": "Dashboard Row",
+ "titleSize": "h6"
+ },
+ {
+ "collapse": false,
+ "height": "225",
+ "panels": [
+ {
+ "cacheTimeout": null,
+ "colorBackground": true,
+ "colorValue": false,
+ "colors": [
+ "rgba(1, 167, 1, 1)",
+ "rgba(255,165,0, 1)",
+ "rgba(255, 0, 0, 1)"
+ ],
+ "datasource": "Local",
+ "description": "Shows the overall health of the ceph cluster",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "hideTimeOverride": true,
+ "id": 28,
+ "interval": null,
+ "links": [
+ {
+ "dashUri": "db/ceph-health",
+ "dashboard": "Ceph Health",
+ "includeVars": true,
+ "keepTime": false,
+ "targetBlank": true,
+ "title": "Ceph Health",
+ "type": "dashboard"
+ }
+ ],
+ "mappingType": 2,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": "",
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "0",
+ "text": "OK",
+ "to": "1"
+ },
+ {
+ "from": "1",
+ "text": "WARN",
+ "to": "4"
+ },
+ {
+ "from": "5",
+ "text": "ERROR",
+ "to": "99"
+ },
+ {
+ "from": "-10",
+ "text": "NODATA",
+ "to": "0"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "refId": "A",
+ "target": "consolidateBy(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.health),\"max\")",
+ "textEditor": true
+ }
+ ],
+ "thresholds": "1,5",
+ "timeFrom": "1m",
+ "timeShift": null,
+ "title": "Health",
+ "type": "singlestat",
+ "valueFontSize": "50%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "OK",
+ "value": "0"
+ },
+ {
+ "op": "=",
+ "text": "WARN",
+ "value": "4"
+ },
+ {
+ "op": "=",
+ "text": "ERROR",
+ "value": "8"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "clusterName": "MONs",
+ "displayName": "MONs",
+ "flipCard": false,
+ "flipTime": 5,
+ "hideTimeOverride": true,
+ "id": 75,
+ "isGrayOnNoData": true,
+ "links": [],
+ "minSpan": 1,
+ "namePrefix": "",
+ "span": 1,
+ "targets": [
+ {
+ "aggregation": "Last",
+ "alias": "total",
+ "displayType": "Regular",
+ "refId": "D",
+ "target": "alias(keepLastValue(consolidateBy(maxSeries(collectd.$mon_servers.$domain.cephmetrics.gauge.$cluster_name.mon.num_mon), \"max\")),\"total\")",
+ "textEditor": true,
+ "valueHandler": "Text Only"
+ },
+ {
+ "aggregation": "Last",
+ "alias": "quorum",
+ "display": true,
+ "displayType": "Regular",
+ "refId": "E",
+ "target": "alias(keepLastValue(consolidateBy(maxSeries(collectd.$mon_servers.$domain.cephmetrics.gauge.$cluster_name.mon.num_mon_quorum), \"max\")),\"quorum\")",
+ "textEditor": true,
+ "valueHandler": "Threshold",
+ "warn": "1"
+ },
+ {
+ "aggregation": "Last",
+ "alias": "down",
+ "display": true,
+ "displayType": "Regular",
+ "refId": "A",
+ "target": "alias(diffSeries(#D,#E), \"down\")",
+ "targetFull": "alias(diffSeries(alias(keepLastValue(consolidateBy(maxSeries(collectd.$mon_servers.$domain.cephmetrics.gauge.$cluster_name.mon.num_mon), \"max\")),\"total\"),alias(keepLastValue(consolidateBy(maxSeries(collectd.$mon_servers.$domain.cephmetrics.gauge.$cluster_name.mon.num_mon_quorum), \"max\")),\"quorum\")), \"down\")",
+ "textEditor": true,
+ "valueHandler": "Threshold",
+ "warn": "1"
+ }
+ ],
+ "timeFrom": "1m",
+ "timeShift": null,
+ "title": "",
+ "type": "vonage-status-panel"
+ },
+ {
+ "clusterName": "OSDs",
+ "displayName": "OSDs",
+ "flipCard": false,
+ "flipTime": 5,
+ "hideTimeOverride": true,
+ "id": 65,
+ "links": [
+ {
+ "dashUri": "db/ceph-osd-information",
+ "dashboard": "Ceph OSD Information",
+ "targetBlank": true,
+ "title": "Ceph OSD Information",
+ "type": "dashboard"
+ }
+ ],
+ "minSpan": 1,
+ "namePrefix": "",
+ "span": 1,
+ "targets": [
+ {
+ "aggregation": "Last",
+ "alias": "total",
+ "displayType": "Regular",
+ "hide": false,
+ "refId": "E",
+ "target": "alias(keepLastValue(consolidateBy(maxSeries(collectd.$mon_servers.$domain.cephmetrics.gauge.$cluster_name.mon.num_osd), \"max\")),\"total\")",
+ "textEditor": true,
+ "valueHandler": "Text Only"
+ },
+ {
+ "aggregation": "Last",
+ "alias": "in",
+ "displayType": "Regular",
+ "hide": false,
+ "refId": "F",
+ "target": "alias(keepLastValue(consolidateBy(maxSeries(collectd.$mon_servers.$domain.cephmetrics.gauge.$cluster_name.mon.num_osd_up), \"max\")),\"up\")",
+ "textEditor": true,
+ "valueHandler": "Text Only"
+ },
+ {
+ "aggregation": "Last",
+ "alias": "up",
+ "displayType": "Regular",
+ "hide": false,
+ "refId": "A",
+ "target": "alias(keepLastValue(consolidateBy(maxSeries(collectd.$mon_servers.$domain.cephmetrics.gauge.$cluster_name.mon.num_osd_in), \"max\")),\"in\")",
+ "textEditor": true,
+ "valueHandler": "Text Only"
+ },
+ {
+ "aggregation": "Last",
+ "alias": "out",
+ "displayType": "Regular",
+ "refId": "C",
+ "target": "alias(countSeries(currentBelow(groupByNode(transformNull(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.osd_state.*.in,99),-2,\"maxSeries\"),0.5)),\"out\")",
+ "textEditor": true,
+ "valueHandler": "Text Only"
+ },
+ {
+ "aggregation": "Last",
+ "alias": "down",
+ "crit": "5",
+ "display": true,
+ "displayType": "Regular",
+ "refId": "B",
+ "target": "alias(countSeries(currentBelow(groupByNode(transformNull(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.osd_state.*.up,99),-2,\"maxSeries\"),0.5)),\"down\")",
+ "textEditor": true,
+ "valueHandler": "Threshold",
+ "warn": "1"
+ }
+ ],
+ "timeFrom": "1m",
+ "timeShift": null,
+ "title": "",
+ "type": "vonage-status-panel"
+ },
+ {
+ "clusterName": "OSD Hosts",
+ "displayName": "OSD Hosts",
+ "flipTime": 5,
+ "hideTimeOverride": true,
+ "id": 100,
+ "links": [],
+ "minSpan": 1,
+ "span": 1,
+ "targets": [
+ {
+ "aggregation": "Last",
+ "alias": "total",
+ "displayType": "Regular",
+ "refId": "A",
+ "target": "alias(countSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.num_osds),\"total\")",
+ "textEditor": true,
+ "valueHandler": "Text Only"
+ },
+ {
+ "aggregation": "Last",
+ "alias": "up",
+ "displayType": "Regular",
+ "refId": "B",
+ "target": "alias(countSeries(currentAbove(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.num_osds,0)),\"up\")",
+ "textEditor": true,
+ "valueHandler": "Text Only"
+ },
+ {
+ "aggregation": "Last",
+ "alias": "down",
+ "crit": "2",
+ "display": true,
+ "displayType": "Regular",
+ "refId": "C",
+ "target": "alias(diffSeries(#A, #B), \"down\")",
+ "targetFull": "alias(diffSeries(alias(countSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.num_osds),\"total\"), alias(countSeries(currentAbove(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.num_osds,0)),\"up\")), \"down\")",
+ "textEditor": true,
+ "valueHandler": "Threshold",
+ "warn": "1"
+ }
+ ],
+ "timeFrom": "30s",
+ "timeShift": null,
+ "title": "",
+ "type": "vonage-status-panel"
+ },
+ {
+ "clusterName": "RGWs",
+ "displayName": "RGWs",
+ "flipTime": 5,
+ "hideTimeOverride": true,
+ "id": 101,
+ "isGrayOnNoData": false,
+ "links": [],
+ "span": 1,
+ "targets": [
+ {
+ "aggregation": "Last",
+ "alias": "total",
+ "displayType": "Regular",
+ "hide": true,
+ "refId": "A",
+ "target": "constantLine(0)",
+ "textEditor": true,
+ "valueHandler": "Text Only"
+ },
+ {
+ "aggregation": "Last",
+ "displayType": "Regular",
+ "hide": true,
+ "refId": "B",
+ "target": "countSeries(collectd.*.$domain.cephmetrics.derive.$cluster_name.rgw.put)",
+ "textEditor": true,
+ "valueHandler": "Regular"
+ },
+ {
+ "aggregation": "Last",
+ "alias": "total",
+ "displayType": "Regular",
+ "hide": false,
+ "refId": "C",
+ "target": "alias(limit(sortByMaxima(group(#A,#B)),1),\"total\")",
+ "targetFull": "alias(limit(sortByMaxima(group(constantLine(0),countSeries(collectd.*.$domain.cephmetrics.derive.$cluster_name.rgw.put))),1),\"total\")",
+ "textEditor": true,
+ "valueHandler": "Text Only"
+ },
+ {
+ "displayType": "Regular",
+ "hide": true,
+ "refId": "D",
+ "target": "countSeries(currentAbove(collectd.*.$domain.cephmetrics.derive.$cluster_name.rgw.put,0))",
+ "textEditor": true,
+ "valueHandler": "Regular"
+ },
+ {
+ "aggregation": "Last",
+ "alias": "up",
+ "displayType": "Regular",
+ "hide": false,
+ "refId": "E",
+ "target": "alias(limit(sortByMaxima(group(#A,#D)),1), \"up\")",
+ "targetFull": "alias(limit(sortByMaxima(group(constantLine(0),countSeries(currentAbove(collectd.*.$domain.cephmetrics.derive.$cluster_name.rgw.put,0)))),1), \"up\")",
+ "textEditor": true,
+ "valueHandler": "Text Only"
+ },
+ {
+ "aggregation": "Last",
+ "alias": "down",
+ "crit": "6",
+ "display": true,
+ "displayType": "Regular",
+ "hide": false,
+ "refId": "F",
+ "target": "alias(diffSeries(#B, #D),\"down\")",
+ "targetFull": "alias(diffSeries(countSeries(collectd.*.$domain.cephmetrics.derive.$cluster_name.rgw.put), countSeries(currentAbove(collectd.*.$domain.cephmetrics.derive.$cluster_name.rgw.put,0))),\"down\")",
+ "textEditor": true,
+ "valueHandler": "Threshold",
+ "warn": "1"
+ }
+ ],
+ "timeFrom": "30s",
+ "timeShift": null,
+ "title": "",
+ "transparent": false,
+ "type": "vonage-status-panel"
+ },
+ {
+ "clusterName": "MDS",
+ "displayName": "MDS",
+ "flipCard": false,
+ "flipTime": 5,
+ "hideTimeOverride": true,
+ "id": 99,
+ "links": [],
+ "minSpan": 1,
+ "namePrefix": "",
+ "span": 1,
+ "targets": [
+ {
+ "aggregation": "Last",
+ "alias": "up",
+ "displayType": "Regular",
+ "hide": false,
+ "refId": "A",
+ "target": "alias(keepLastValue(consolidateBy(maxSeries(collectd.$mon_servers.$domain.cephmetrics.gauge.$cluster_name.mon.num_mds_up), \"max\")),\"up\")",
+ "textEditor": true,
+ "valueHandler": "Text Only"
+ },
+ {
+ "aggregation": "Last",
+ "alias": "in",
+ "displayType": "Regular",
+ "hide": false,
+ "refId": "E",
+ "target": "alias(keepLastValue(consolidateBy(maxSeries(collectd.$mon_servers.$domain.cephmetrics.gauge.$cluster_name.mon.num_mds_in), \"max\")),\"in\")",
+ "textEditor": true,
+ "valueHandler": "Text Only"
+ },
+ {
+ "aggregation": "Last",
+ "alias": "down",
+ "crit": "2",
+ "display": true,
+ "displayType": "Regular",
+ "hide": false,
+ "refId": "B",
+ "target": "alias(keepLastValue(consolidateBy(maxSeries(collectd.$mon_servers.$domain.cephmetrics.gauge.$cluster_name.mon.num_mds_failed), \"max\")),\"down\")",
+ "textEditor": true,
+ "valueHandler": "Threshold",
+ "warn": "1"
+ }
+ ],
+ "timeFrom": "1m",
+ "timeShift": null,
+ "title": "",
+ "type": "vonage-status-panel"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(1, 167, 1, 1)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "datasource": "Local",
+ "decimals": 0,
+ "format": "short",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": true,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "hideTimeOverride": true,
+ "id": 38,
+ "interval": null,
+ "links": [
+ {
+ "dashUri": "db/ceph-cluster",
+ "dashboard": "Ceph Cluster",
+ "params": "panelId=3&fullscreen&orgId=1",
+ "targetBlank": true,
+ "title": "Cluster Capacity Information",
+ "type": "dashboard"
+ }
+ ],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "%",
+ "postfixFontSize": "40%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 2,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "hide": true,
+ "refId": "A",
+ "target": "alias(maxSeries(groupByNode(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.osd_bytes, 1,\"maxSeries\")), \"raw capacity\")",
+ "textEditor": true
+ },
+ {
+ "hide": true,
+ "refId": "B",
+ "target": "alias(maxSeries(groupByNode(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.osd_bytes_used, 1,\"maxSeries\")), \"used raw\")",
+ "textEditor": true
+ },
+ {
+ "refId": "C",
+ "target": "asPercent(#B,#A)",
+ "targetFull": "asPercent(alias(maxSeries(groupByNode(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.osd_bytes_used, 1,\"maxSeries\")), \"used raw\"),alias(maxSeries(groupByNode(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.osd_bytes, 1,\"maxSeries\")), \"raw capacity\"))",
+ "textEditor": true
+ }
+ ],
+ "thresholds": "70,90",
+ "timeFrom": "1m",
+ "timeShift": null,
+ "title": "Capacity Utilization",
+ "type": "singlestat",
+ "valueFontSize": "70%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "Local",
+ "decimals": 1,
+ "description": "Shows the growth rate based on osd usage over the past $growth_window.",
+ "format": "decbytes",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 80,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "hide": true,
+ "refId": "D",
+ "target": "alias(consolidateBy(maxSeries(timeShift(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.osd_bytes_used,\"7d\")), \"max\"),\"-$growth_window ago\")",
+ "textEditor": true
+ },
+ {
+ "hide": true,
+ "refId": "E",
+ "target": "alias(consolidateBy(maxSeries(timeShift(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.osd_bytes_used,\"1d\")), \"max\"),\"-1d ago\")",
+ "textEditor": true
+ },
+ {
+ "refId": "C",
+ "target": "alias(diffSeries(#E, #D), 'Growth over last $growth_window')",
+ "targetFull": "alias(diffSeries(alias(consolidateBy(maxSeries(timeShift(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.osd_bytes_used,\"1d\")), \"max\"),\"-1d ago\"), alias(consolidateBy(maxSeries(timeShift(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.osd_bytes_used,\"7d\")), \"max\"),\"-$growth_window ago\")), 'Growth over last $growth_window')",
+ "textEditor": true
+ }
+ ],
+ "thresholds": "",
+ "title": "$growth_window Growth Rate",
+ "type": "singlestat",
+ "valueFontSize": "70%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "Local",
+ "decimals": 0,
+ "description": "Shows the estimated number of weeks left, based on consumption over the past $growth_window.",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 81,
+ "interval": null,
+ "links": [],
+ "mappingType": 2,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ },
+ {
+ "from": "-99999",
+ "text": "N/A",
+ "to": "0"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "hide": true,
+ "refId": "A",
+ "target": "alias(consolidateBy(maxSeries(timeShift(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.osd_bytes_used,\"7d\")), \"max\"),\"-$growth_window ago\")",
+ "textEditor": true
+ },
+ {
+ "hide": true,
+ "refId": "B",
+ "target": "alias(consolidateBy(maxSeries(timeShift(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.osd_bytes_used,\"1d\")), \"max\"),\"-1d ago\")",
+ "textEditor": true
+ },
+ {
+ "hide": true,
+ "refId": "C",
+ "target": "keepLastValue(diffSeries(#B, #A))",
+ "targetFull": "keepLastValue(diffSeries(alias(consolidateBy(maxSeries(timeShift(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.osd_bytes_used,\"1d\")), \"max\"),\"-1d ago\"), alias(consolidateBy(maxSeries(timeShift(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.osd_bytes_used,\"7d\")), \"max\"),\"-$growth_window ago\")))",
+ "textEditor": true
+ },
+ {
+ "hide": true,
+ "refId": "D",
+ "target": "consolidateBy(minSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.osd_bytes_avail), \"min\")",
+ "textEditor": true
+ },
+ {
+ "hide": false,
+ "refId": "E",
+ "target": "alias(divideSeries(#D, #C), 'Weeks Left till full')",
+ "targetFull": "alias(divideSeries(consolidateBy(minSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.osd_bytes_avail), \"min\"), keepLastValue(diffSeries(alias(consolidateBy(maxSeries(timeShift(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.osd_bytes_used,\"1d\")), \"max\"),\"-1d ago\"), alias(consolidateBy(maxSeries(timeShift(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.osd_bytes_used,\"7d\")), \"max\"),\"-$growth_window ago\")))), 'Weeks Left till full')",
+ "textEditor": true
+ }
+ ],
+ "thresholds": "",
+ "title": "Weeks Remaining",
+ "type": "singlestat",
+ "valueFontSize": "70%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "aliasColors": {
+ "active + clean": "#01a701",
+ "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_pg_active_clean": "#01a701",
+ "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_pg_peering": "#ffa500",
+ "peering": "#0A50A1"
+ },
+ "cacheTimeout": null,
+ "combine": {
+ "label": "Others",
+ "threshold": ""
+ },
+ "datasource": "Local",
+ "fontSize": "100%",
+ "format": "none",
+ "height": "210",
+ "hideTimeOverride": true,
+ "id": 74,
+ "interval": null,
+ "legend": {
+ "percentage": false,
+ "show": true,
+ "values": true
+ },
+ "legendType": "Under graph",
+ "links": [
+ {
+ "dashUri": "db/ceph-cluster",
+ "dashboard": "Ceph Cluster",
+ "includeVars": false,
+ "keepTime": false,
+ "targetBlank": true,
+ "title": "Ceph Cluster Information",
+ "type": "dashboard"
+ }
+ ],
+ "maxDataPoints": "1",
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "pieType": "pie",
+ "span": 2,
+ "strokeWidth": "0",
+ "targets": [
+ {
+ "refId": "A",
+ "target": "alias(keepLastValue(consolidateBy(maxSeries(collectd.$mon_servers.$domain.cephmetrics.gauge.$cluster_name.mon.num_pg_active_clean), \"max\")),\"active + clean\")",
+ "textEditor": true
+ },
+ {
+ "hide": true,
+ "refId": "B",
+ "target": "alias(keepLastValue(consolidateBy(maxSeries(collectd.$mon_servers.$domain.cephmetrics.gauge.$cluster_name.mon.num_pg_active), \"max\")),\"active\")",
+ "textEditor": true
+ },
+ {
+ "refId": "C",
+ "target": "alias(diffSeries(#B,#A),\"active + degraded\")",
+ "targetFull": "alias(diffSeries(alias(keepLastValue(consolidateBy(maxSeries(collectd.$mon_servers.$domain.cephmetrics.gauge.$cluster_name.mon.num_pg_active), \"max\")),\"active\"),alias(keepLastValue(consolidateBy(maxSeries(collectd.$mon_servers.$domain.cephmetrics.gauge.$cluster_name.mon.num_pg_active_clean), \"max\")),\"active + clean\")),\"active + degraded\")",
+ "textEditor": true
+ },
+ {
+ "hide": false,
+ "refId": "D",
+ "target": "alias(consolidateBy(maxSeries(collectd.$mon_servers.$domain.cephmetrics.gauge.$cluster_name.mon.num_pg_peering), \"max\"),\"peering\")",
+ "textEditor": true
+ }
+ ],
+ "timeFrom": "1m",
+ "timeShift": null,
+ "title": "Placement Group Status",
+ "type": "grafana-piechart-panel",
+ "valueName": "current"
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "At a Glance",
+ "titleSize": "h5"
+ },
+ {
+ "collapse": false,
+ "height": "230",
+ "panels": [
+ {
+ "cacheTimeout": null,
+ "colorBackground": true,
+ "colorValue": false,
+ "colors": [
+ "rgba(251,251,251, 0.97)",
+ "rgba(255,0,0,1)",
+ "rgba(255, 0, 0, 1)"
+ ],
+ "datasource": "Local",
+ "description": "This panel indicate whether scrub/deep scrub is running within the cluster. NB. If either of these features are turned off, the cluster will enter a WARN state. Click on the panel or the link below to look at cluster information in more detail",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 97,
+ "interval": null,
+ "links": [
+ {
+ "dashUri": "db/ceph-cluster",
+ "dashboard": "Ceph Cluster",
+ "includeVars": false,
+ "keepTime": false,
+ "targetBlank": true,
+ "title": "Ceph Cluster",
+ "type": "dashboard"
+ }
+ ],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": "",
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "hide": true,
+ "refId": "A",
+ "target": "consolidateBy(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.features.deep_scrub),\"max\")",
+ "textEditor": true
+ },
+ {
+ "hide": true,
+ "refId": "B",
+ "target": "consolidateBy(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.features.scrub),\"max\")",
+ "textEditor": true
+ },
+ {
+ "refId": "C",
+ "target": "maxSeries(group(#A, #B))",
+ "targetFull": "maxSeries(group(consolidateBy(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.features.deep_scrub),\"max\"), consolidateBy(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.features.scrub),\"max\")))",
+ "textEditor": true
+ }
+ ],
+ "thresholds": "2",
+ "title": "Scrub",
+ "type": "singlestat",
+ "valueFontSize": "50%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ },
+ {
+ "op": "=",
+ "text": "INACTIVE",
+ "value": "0"
+ },
+ {
+ "op": "=",
+ "text": "ACTIVE",
+ "value": "1"
+ },
+ {
+ "op": "=",
+ "text": "DISABLED",
+ "value": "2"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(251,251,251, 0.97)",
+ "rgba(255,165,0, 0.89)",
+ "rgba(255, 0, 0, 1)"
+ ],
+ "datasource": "Local",
+ "decimals": 1,
+ "format": "decbytes",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 96,
+ "interval": null,
+ "links": [
+ {
+ "dashUri": "db/ceph-pools",
+ "dashboard": "Ceph Pools",
+ "includeVars": true,
+ "keepTime": true,
+ "targetBlank": true,
+ "title": "Ceph Pools",
+ "type": "dashboard"
+ }
+ ],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": "90",
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "/s",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": true
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "refId": "A",
+ "target": "sumSeries(groupByNode(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.*.recovering_bytes_per_sec,-2,\"avg\"))",
+ "textEditor": true
+ }
+ ],
+ "thresholds": "1,2",
+ "title": "Recovery",
+ "type": "singlestat",
+ "valueFontSize": "50%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "Local",
+ "decimals": 0,
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 9,
+ "interval": null,
+ "links": [
+ {
+ "dashUri": "db/ceph-pools",
+ "dashboard": "Ceph Pools",
+ "includeVars": true,
+ "keepTime": true,
+ "targetBlank": true,
+ "title": "Ceph Pools",
+ "type": "dashboard"
+ }
+ ],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": "90",
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 2,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": true
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "dsType": "influxdb",
+ "groupBy": [],
+ "hide": false,
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools._all_.read_op_per_sec",
+ "policy": "default",
+ "query": "SELECT mean(\"value\") FROM \"measurement\" WHERE $timeFilter GROUP BY time($__interval) fill(null)",
+ "rawQuery": false,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "sumSeries(groupByNode(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.*.op_per_sec,-2,\"maxSeries\"))",
+ "textEditor": true
+ }
+ ],
+ "thresholds": "",
+ "title": "Client IOPS",
+ "type": "singlestat",
+ "valueFontSize": "100%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "Local",
+ "decimals": 1,
+ "format": "decbytes",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 23,
+ "interval": null,
+ "links": [
+ {
+ "dashUri": "db/ceph-pools",
+ "dashboard": "Ceph Pools",
+ "includeVars": true,
+ "keepTime": true,
+ "targetBlank": true,
+ "title": "Ceph Pools",
+ "type": "dashboard"
+ }
+ ],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": "90",
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "/s",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 2,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": true
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "dsType": "influxdb",
+ "groupBy": [],
+ "hide": false,
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools._all_.read_op_per_sec",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM \"collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools._all_.read_bytes_sec\" WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "sumSeries(groupByNode(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.*.bytes_sec,-2,\"maxSeries\"))",
+ "textEditor": true
+ }
+ ],
+ "thresholds": "",
+ "title": "Client Throughput",
+ "type": "singlestat",
+ "valueFontSize": "70%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "Local",
+ "decimals": 0,
+ "format": "short",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 76,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "dsType": "influxdb",
+ "groupBy": [],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_pool",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.num_pool)",
+ "textEditor": true
+ }
+ ],
+ "thresholds": "",
+ "title": "Pools",
+ "type": "singlestat",
+ "valueFontSize": "70%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "Local",
+ "decimals": 0,
+ "format": "short",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 77,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "refId": "B",
+ "target": "alias(sumSeries(consolidateBy(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.num_rbds,6),\"max\")),\"# rbds\")",
+ "textEditor": true
+ }
+ ],
+ "thresholds": "",
+ "title": "RBDs",
+ "type": "singlestat",
+ "valueFontSize": "70%",
+ "valueMaps": [],
+ "valueName": "current"
+ },
+ {
+ "aliasColors": {
+ "Reads": "#01a701",
+ "Writes": "#82B5D8"
+ },
+ "cacheTimeout": null,
+ "combine": {
+ "label": "Others",
+ "threshold": 0
+ },
+ "datasource": "Local",
+ "description": "Shows the read/write threshold of client IOPS serviced by the ceph cluster",
+ "fontSize": "80%",
+ "format": "none",
+ "height": "230",
+ "id": 93,
+ "interval": null,
+ "legend": {
+ "percentage": false,
+ "show": true,
+ "values": true
+ },
+ "legendType": "Under graph",
+ "links": [],
+ "maxDataPoints": "90",
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "pieType": "pie",
+ "span": 2,
+ "strokeWidth": 1,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "alias(sumSeries(groupByNode(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.*.read_op_per_sec,-2,\"maxSeries\")), \"Reads\")",
+ "textEditor": true
+ },
+ {
+ "refId": "B",
+ "target": "alias(sumSeries(groupByNode(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.*.write_op_per_sec,-2,\"maxSeries\")), \"Writes\")",
+ "textEditor": true
+ }
+ ],
+ "title": "Client Read/Write Ratio",
+ "type": "grafana-piechart-panel",
+ "valueName": "current"
+ },
+ {
+ "aliasColors": {
+ "95%ile Commit Latency": "#447EBC",
+ "Apply Latency Max": "#890F02",
+ "Commit Latency": "#447EBC"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "description": "Shows the OSD apply and commit latency at the $percentile%ile across the cluster over the past 15 minutes",
+ "fill": 0,
+ "hideTimeOverride": true,
+ "id": 92,
+ "legend": {
+ "alignAsTable": false,
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "rightSide": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 2,
+ "links": [
+ {
+ "dashUri": "db/ceph-osd-information",
+ "dashboard": "Ceph OSD Information",
+ "includeVars": true,
+ "keepTime": true,
+ "targetBlank": true,
+ "title": "Ceph OSD Information",
+ "type": "dashboard"
+ }
+ ],
+ "minSpan": 2,
+ "nullPointMode": "null as zero",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 2,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "alias(percentileOfSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.apply_latency,$percentile), \"Apply Latency\")",
+ "textEditor": true
+ },
+ {
+ "refId": "B",
+ "target": "alias(percentileOfSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.commitcycle_latency, $percentile), \"Commit Latency\")",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": "15m",
+ "timeShift": null,
+ "title": "OSD Apply vs Commit Latency",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": false,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "s",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": false,
+ "title": "Performance",
+ "titleSize": "h5"
+ },
+ {
+ "collapse": false,
+ "height": "230px",
+ "panels": [
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "datasource": "Local",
+ "decimals": 0,
+ "description": "CPU usage is presented based on the $percentile%ile across all OSD hosts",
+ "format": "short",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 59,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": "90",
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": " %",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 2,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": true
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "refId": "A",
+ "target": "percentileOfSeries(groupByNode(collectd.$osd_servers.$domain.cpu.percent.{system,user,wait},1,\"sumSeries\"),$percentile)",
+ "textEditor": true
+ }
+ ],
+ "thresholds": "70,90",
+ "title": "OSD Hosts CPU Busy",
+ "type": "singlestat",
+ "valueFontSize": "100%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "Local",
+ "decimals": 0,
+ "description": "Total IOPS from all OSDs in the cluster",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 72,
+ "interval": null,
+ "links": [
+ {
+ "dashUri": "db/ceph-backend-storage",
+ "dashboard": "Ceph Backend Storage",
+ "includeVars": true,
+ "keepTime": true,
+ "targetBlank": true,
+ "title": "Ceph OSD Host Performance",
+ "type": "dashboard"
+ }
+ ],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": "90",
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 2,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": true
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "dsType": "influxdb",
+ "groupBy": [],
+ "hide": false,
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools._all_.read_op_per_sec",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM \"collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools._all_.read_bytes_sec\" WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(sumSeries(collectd.$osd_servers.$domain.cephmetrics.gauge.$cluster_name.osd.*.perf.iops),\"IOPS\")",
+ "textEditor": true
+ }
+ ],
+ "thresholds": "",
+ "title": "Disk IOPS",
+ "type": "singlestat",
+ "valueFontSize": "100%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "Local",
+ "decimals": 1,
+ "format": "decbytes",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 73,
+ "interval": null,
+ "links": [
+ {
+ "dashUri": "db/ceph-backend-storage",
+ "dashboard": "Ceph Backend Storage",
+ "includeVars": true,
+ "keepTime": true,
+ "targetBlank": true,
+ "title": "Ceph OSD Host Performance",
+ "type": "dashboard"
+ }
+ ],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": "90",
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "/s",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 2,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": true
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "dsType": "influxdb",
+ "groupBy": [],
+ "hide": false,
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools._all_.read_op_per_sec",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM \"collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools._all_.read_bytes_sec\" WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "sumSeries(collectd.$osd_servers.$domain.cephmetrics.gauge.$cluster_name.osd.*.perf.bytes_per_sec)",
+ "textEditor": true
+ }
+ ],
+ "thresholds": "",
+ "title": "Disk Throughput",
+ "type": "singlestat",
+ "valueFontSize": "70%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "Local",
+ "decimals": 0,
+ "description": "The count of the number of disks in the cluster that are over $disk_full_threshold% full.",
+ "format": "short",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 79,
+ "interval": null,
+ "links": [
+ {
+ "dashUri": "db/ceph-backend-storage",
+ "dashboard": "Ceph Backend Storage",
+ "includeVars": true,
+ "keepTime": true,
+ "targetBlank": true,
+ "title": "Ceph OSD Host Performance",
+ "type": "dashboard"
+ }
+ ],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "refId": "A",
+ "target": "countSeries(currentAbove(transformNull(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.osd_percent_used),0),$disk_full_threshold))",
+ "textEditor": true
+ }
+ ],
+ "thresholds": "",
+ "title": "Nearly Full Disks",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "0",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "Local",
+ "decimals": 0,
+ "description": "RAM Usage shows the $percentile%ile of RAM used across all OSD hosts",
+ "format": "short",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 78,
+ "interval": null,
+ "links": [
+ {
+ "dashUri": "db/ceph-backend-storage",
+ "dashboard": "Ceph Backend Storage",
+ "includeVars": true,
+ "keepTime": true,
+ "targetBlank": true,
+ "title": "Ceph OSD Host Performance",
+ "type": "dashboard"
+ }
+ ],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": "",
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": " %",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(46, 161, 15, 0)",
+ "full": false,
+ "lineColor": "rgb(164, 139, 4)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "dsType": "influxdb",
+ "groupBy": [],
+ "hide": false,
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools._all_.read_op_per_sec",
+ "policy": "default",
+ "query": "SELECT \"value\" FROM \"collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.pools._all_.read_bytes_sec\" WHERE $timeFilter",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "percentileOfSeries(collectd.$osd_servers.$domain.memory.percent.used,$percentile)",
+ "textEditor": true
+ }
+ ],
+ "thresholds": "",
+ "title": "RAM Util.",
+ "type": "singlestat",
+ "valueFontSize": "70%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(1, 167, 1,1)",
+ "rgba(255,165,0,1)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "datasource": "Local",
+ "decimals": 0,
+ "description": "This panel shows the $percentile%ile disk await time across all OSDs in the cliuster",
+ "format": "short",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 36,
+ "interval": null,
+ "links": [
+ {
+ "dashUri": "db/latency-by-server",
+ "dashboard": "Latency by Server",
+ "includeVars": true,
+ "targetBlank": true,
+ "title": "Latency by Server",
+ "type": "dashboard"
+ }
+ ],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": "90",
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": " ms",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 2,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": true
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "refId": "A",
+ "target": "percentileOfSeries(group(collectd.$osd_servers.$domain.cephmetrics.gauge.$cluster_name.osd.*.perf.await),$percentile)",
+ "textEditor": true
+ }
+ ],
+ "thresholds": "20,60",
+ "title": "Disk Latency",
+ "type": "singlestat",
+ "valueFontSize": "100%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "aliasColors": {
+ "average %util": "#1f78c1"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "description": "Chart shows the disk utilization over the past 15 mins expressed as an average across all OSDs, and at the $percentile%ile.",
+ "fill": 1,
+ "hideTimeOverride": true,
+ "id": 98,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 2,
+ "links": [
+ {
+ "dashUri": "db/disk-busy-by-server",
+ "dashboard": "Disk Busy by Server",
+ "includeVars": true,
+ "targetBlank": true,
+ "title": "Disk Busy by Server",
+ "type": "dashboard"
+ }
+ ],
+ "minSpan": 2,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "alias": "%util @ 95%ile",
+ "fill": 0
+ }
+ ],
+ "spaceLength": 10,
+ "span": 2,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "alias(averageSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.perf.util), 'average %util')",
+ "textEditor": false
+ },
+ {
+ "refId": "B",
+ "target": "alias(percentileOfSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.perf.util, $percentile, 'false'), '%util @ $percentile%ile')"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": "15m",
+ "timeShift": null,
+ "title": "Disk Utilization",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "percent",
+ "label": "",
+ "logBase": 1,
+ "max": "100",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": false,
+ "title": "Dashboard Row",
+ "titleSize": "h6"
+ }
+ ],
+ "schemaVersion": 14,
+ "style": "dark",
+ "tags": [
+ "overview"
+ ],
+ "templating": {
+ "list": [
+ {
+ "allValue": null,
+ "current": {
+ "text": "ceph",
+ "value": "ceph"
+ },
+ "datasource": "Local",
+ "hide": 0,
+ "includeAll": false,
+ "label": "Cluster Name",
+ "multi": false,
+ "name": "cluster_name",
+ "options": [],
+ "query": "collectd.*.$domain.cephmetrics.gauge.*",
+ "refresh": 1,
+ "regex": "",
+ "sort": 0,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ },
+ {
+ "allValue": null,
+ "current": {
+ "text": "storage.lab",
+ "value": "storage.lab"
+ },
+ "hide": 2,
+ "includeAll": false,
+ "label": null,
+ "multi": false,
+ "name": "domain",
+ "options": [
+ {
+ "selected": true,
+ "text": "storage.lab",
+ "value": "storage.lab"
+ }
+ ],
+ "query": "storage.lab",
+ "type": "custom"
+ },
+ {
+ "allValue": null,
+ "current": {
+ "selected": true,
+ "text": "95",
+ "value": "95"
+ },
+ "hide": 0,
+ "includeAll": false,
+ "label": "Percentile",
+ "multi": false,
+ "name": "percentile",
+ "options": [
+ {
+ "selected": false,
+ "text": "80",
+ "value": "80"
+ },
+ {
+ "selected": false,
+ "text": "85",
+ "value": "85"
+ },
+ {
+ "selected": false,
+ "text": "90",
+ "value": "90"
+ },
+ {
+ "selected": true,
+ "text": "95",
+ "value": "95"
+ },
+ {
+ "selected": false,
+ "text": "98",
+ "value": "98"
+ }
+ ],
+ "query": "80,85,90,95,98",
+ "type": "custom"
+ },
+ {
+ "allValue": null,
+ "current": {
+ "selected": true,
+ "text": "All",
+ "value": "$__all"
+ },
+ "hide": 2,
+ "includeAll": true,
+ "label": null,
+ "multi": true,
+ "name": "osd_servers",
+ "options": [
+ {
+ "selected": true,
+ "text": "All",
+ "value": "$__all"
+ },
+ {
+ "selected": false,
+ "text": "obj-osd-1",
+ "value": "obj-osd-1"
+ },
+ {
+ "selected": false,
+ "text": "obj-osd-2",
+ "value": "obj-osd-2"
+ },
+ {
+ "selected": false,
+ "text": "obj-osd-3",
+ "value": "obj-osd-3"
+ }
+ ],
+ "query": "obj-osd-1,obj-osd-2,obj-osd-3",
+ "type": "custom"
+ },
+ {
+ "allValue": null,
+ "current": {
+ "text": "obj-rgw-1",
+ "value": "obj-rgw-1"
+ },
+ "hide": 2,
+ "includeAll": false,
+ "label": null,
+ "multi": true,
+ "name": "rgw_servers",
+ "options": [
+ {
+ "selected": true,
+ "text": "obj-rgw-1",
+ "value": "obj-rgw-1"
+ }
+ ],
+ "query": "obj-rgw-1",
+ "type": "custom"
+ },
+ {
+ "allValue": null,
+ "current": {
+ "text": "All",
+ "value": "$__all"
+ },
+ "datasource": "Local",
+ "hide": 2,
+ "includeAll": true,
+ "label": null,
+ "multi": true,
+ "name": "mon_servers",
+ "options": [],
+ "query": "collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.mon_status.*",
+ "refresh": 1,
+ "regex": "",
+ "sort": 0,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ },
+ {
+ "allValue": null,
+ "current": {
+ "text": "85",
+ "value": "85"
+ },
+ "hide": 2,
+ "includeAll": false,
+ "label": null,
+ "multi": false,
+ "name": "disk_full_threshold",
+ "options": [
+ {
+ "selected": true,
+ "text": "85",
+ "value": "85"
+ }
+ ],
+ "query": "85",
+ "type": "custom"
+ },
+ {
+ "allValue": null,
+ "current": {
+ "text": "7d",
+ "value": "7d"
+ },
+ "hide": 2,
+ "includeAll": false,
+ "label": null,
+ "multi": false,
+ "name": "growth_window",
+ "options": [
+ {
+ "selected": true,
+ "text": "7d",
+ "value": "7d"
+ }
+ ],
+ "query": "7d",
+ "type": "custom"
+ }
+ ]
+ },
+ "time": {
+ "from": "now-1h",
+ "to": "now"
+ },
+ "timepicker": {
+ "refresh_intervals": [
+ "5s",
+ "10s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ],
+ "time_options": [
+ "5m",
+ "15m",
+ "1h",
+ "6h",
+ "12h",
+ "24h",
+ "2d",
+ "7d",
+ "30d"
+ ]
+ },
+ "timezone": "browser",
+ "title": "Ceph - At A Glance",
+ "version": 3
+ },
+ "meta": {
+ "canEdit": true,
+ "canSave": true,
+ "canStar": true,
+ "created": "2017-10-11T02:45:33Z",
+ "createdBy": "admin@localhost",
+ "expires": "0001-01-01T00:00:00Z",
+ "isStarred": true,
+ "slug": "ceph-at-a-glance",
+ "type": "db",
+ "updated": "2017-10-11T02:51:00Z",
+ "updatedBy": "admin@localhost",
+ "version": 3
+ }
+}
--- /dev/null
+{
+ "dashboard": {
+ "annotations": {
+ "list": []
+ },
+ "editable": false,
+ "gnetId": null,
+ "graphTooltip": 0,
+ "hideControls": true,
+ "id": 13,
+ "links": [
+ {
+ "asDropdown": true,
+ "icon": "external link",
+ "includeVars": true,
+ "keepTime": true,
+ "tags": [
+ "overview"
+ ],
+ "targetBlank": true,
+ "title": "Shortcuts",
+ "type": "dashboards"
+ }
+ ],
+ "refresh": "10s",
+ "rows": [
+ {
+ "collapse": false,
+ "height": 250,
+ "panels": [
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "fontSize": "100%",
+ "hideTimeOverride": true,
+ "id": 56,
+ "links": [],
+ "minSpan": 1,
+ "pageSize": 100,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": null,
+ "desc": false
+ },
+ "span": 1,
+ "styles": [
+ {
+ "alias": "OSD Id",
+ "colorMode": null,
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 0,
+ "pattern": "Metric",
+ "sanitize": false,
+ "thresholds": [
+ ""
+ ],
+ "type": "number",
+ "unit": "short"
+ },
+ {
+ "alias": "Status",
+ "colorMode": "cell",
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 0,
+ "pattern": "Current",
+ "thresholds": [
+ "0"
+ ],
+ "type": "hidden",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "hide": false,
+ "refId": "B",
+ "target": "currentBelow(groupByNode(transformNull(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.osd_state.*.up,99),-2,\"maxSeries\"),0.5)",
+ "textEditor": true
+ }
+ ],
+ "timeFrom": "1m",
+ "timeShift": null,
+ "title": "OSD's Down",
+ "transform": "timeseries_aggregations",
+ "type": "table"
+ },
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "fontSize": "100%",
+ "id": 57,
+ "links": [],
+ "minSpan": 2,
+ "pageSize": null,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": 0,
+ "desc": true
+ },
+ "span": 2,
+ "styles": [
+ {
+ "alias": "Time",
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Time",
+ "type": "date"
+ },
+ {
+ "alias": "% Full",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 0,
+ "pattern": "Host and Disk",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ },
+ {
+ "alias": "% Full",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 0,
+ "pattern": "Current",
+ "thresholds": [],
+ "type": "number",
+ "unit": "none"
+ },
+ {
+ "alias": "Host.OSD Id",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "Metric",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ },
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 2,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(currentAbove(transformNull(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.osd_percent_used),0),$disk_full_threshold),1,-2)",
+ "textEditor": true
+ }
+ ],
+ "title": "Disks Near Full",
+ "transform": "timeseries_aggregations",
+ "type": "table"
+ },
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "fontSize": "100%",
+ "id": 58,
+ "links": [],
+ "maxDataPoints": "1",
+ "minSpan": 3,
+ "pageSize": null,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": 0,
+ "desc": false
+ },
+ "span": 3,
+ "styles": [
+ {
+ "alias": "Time",
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Time",
+ "type": "date"
+ },
+ {
+ "alias": "Total OSD Capacity",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "Current",
+ "thresholds": [],
+ "type": "number",
+ "unit": "decbytes"
+ },
+ {
+ "alias": "Host Name",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "Metric",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ },
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 2,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "refId": "A",
+ "target": "groupByNode(keepLastValue(collectd.$osd_servers.$domain.cephmetrics.gauge.$cluster_name.osd.*.stat_bytes),1,\"sumSeries\")",
+ "textEditor": true
+ }
+ ],
+ "title": "Host OSD Raw Capacity",
+ "transform": "timeseries_aggregations",
+ "type": "table"
+ },
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "fontSize": "100%",
+ "id": 59,
+ "links": [],
+ "maxDataPoints": "10",
+ "minSpan": 3,
+ "pageSize": null,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": 0,
+ "desc": false
+ },
+ "span": 3,
+ "styles": [
+ {
+ "alias": "Time",
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Time",
+ "type": "date"
+ },
+ {
+ "alias": "# OSDs",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 0,
+ "pattern": "Current",
+ "thresholds": [],
+ "type": "number",
+ "unit": "none"
+ },
+ {
+ "alias": "Host Name",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "Metric",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ },
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 2,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(keepLastValue(collectd.$osd_servers.$domain.cephmetrics.gauge.$cluster_name.osd.num_osds,6),1)",
+ "textEditor": true
+ }
+ ],
+ "title": "Host OSD Capacity Breakdown",
+ "transform": "timeseries_aggregations",
+ "type": "table"
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "Disk/OSD Host Summary",
+ "titleSize": "h5"
+ },
+ {
+ "collapse": true,
+ "height": "300",
+ "panels": [
+ {
+ "cards": {
+ "cardPadding": null,
+ "cardRound": null
+ },
+ "color": {
+ "cardColor": "#b4ff00",
+ "colorScale": "sqrt",
+ "colorScheme": "interpolateRdYlGn",
+ "exponent": 0.5,
+ "mode": "spectrum"
+ },
+ "dataFormat": "timeseries",
+ "description": "The heatmap categorizes disk utilization into discrete buckets (e.g util 0-5) and shows the frequency of the number of disks that fall within that range as a color. The color chosen depends on the number of disks in the 'bucket', ranging from green (low) to red (high). Hover over a colored block to show the count of disk utilization observations at that point.",
+ "heatmap": {},
+ "highlightCards": true,
+ "id": 53,
+ "links": [],
+ "minSpan": 6,
+ "span": 6,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "collectd.$osd_servers.$domain.cephmetrics.gauge.$cluster_name.osd.*.perf.util",
+ "textEditor": true
+ }
+ ],
+ "title": "Disk Drive Utilization Heatmap - $osd_servers",
+ "tooltip": {
+ "show": true,
+ "showHistogram": false
+ },
+ "type": "heatmap",
+ "xAxis": {
+ "show": true
+ },
+ "xBucketNumber": 180,
+ "xBucketSize": "",
+ "yAxis": {
+ "decimals": null,
+ "format": "short",
+ "logBase": 1,
+ "max": "100",
+ "min": "0",
+ "show": true,
+ "splitFactor": null
+ },
+ "yBucketNumber": null,
+ "yBucketSize": 5
+ },
+ {
+ "aliasColors": {
+ "Read Throughput": "#629E51",
+ "Write Throughput": "#E0752D"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "fill": 1,
+ "id": 24,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 6,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "alias(sumSeries(collectd.$osd_servers.$domain.cephmetrics.gauge.$cluster_name.osd.*.perf.r_bytes_per_sec), \"Read Throughput\")",
+ "textEditor": true
+ },
+ {
+ "refId": "B",
+ "target": "alias(sumSeries(collectd.$osd_servers.$domain.cephmetrics.gauge.$cluster_name.osd.*.perf.w_bytes_per_sec), \"Write Throughput\")",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Disk Throughput - $osd_servers",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "decbytes",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {
+ "Read Latency": "#629E51",
+ "Write Latency": "#E0752D"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "fill": 1,
+ "id": 40,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [
+ {
+ "dashUri": "db/latency-by-server",
+ "dashboard": "Latency by Server",
+ "includeVars": true,
+ "keepTime": true,
+ "targetBlank": true,
+ "title": "Latency by Server",
+ "type": "dashboard"
+ }
+ ],
+ "minSpan": 6,
+ "nullPointMode": "null as zero",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "alias(percentileOfSeries(group(collectd.$osd_servers.$domain.cephmetrics.gauge.$cluster_name.osd.*.perf.r_await),$percentile), \"Read Latency\")",
+ "textEditor": true
+ },
+ {
+ "refId": "C",
+ "target": "alias(percentileOfSeries(group(collectd.$osd_servers.$domain.cephmetrics.gauge.$cluster_name.osd.*.perf.w_await),$percentile), \"Write Latency\")",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [
+ {
+ "colorMode": "custom",
+ "fill": false,
+ "line": true,
+ "lineColor": "rgba(178, 0, 0, 0.29)",
+ "op": "gt",
+ "value": 50
+ }
+ ],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Disk Latency - $osd_servers OSDs @ $percentile%ile",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "ms",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {
+ "disk busy %": "#3F6833"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "fill": 1,
+ "id": 43,
+ "legend": {
+ "avg": false,
+ "current": true,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [
+ {
+ "dashUri": "db/disk-busy-by-server",
+ "dashboard": "Disk Busy by Server",
+ "includeVars": true,
+ "keepTime": true,
+ "targetBlank": true,
+ "title": "Disk Busy by Server",
+ "type": "dashboard"
+ }
+ ],
+ "minSpan": 6,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "alias(percentileOfSeries(group(collectd.$osd_servers.$domain.cephmetrics.gauge.$cluster_name.osd.*.perf.util),$percentile), \"disk busy %\")",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [
+ {
+ "colorMode": "custom",
+ "fill": false,
+ "line": true,
+ "lineColor": "rgba(178, 0, 0, 0.29)",
+ "op": "gt",
+ "value": 80
+ }
+ ],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Disk Utilization - $osd_servers OSDs at $percentile%ile",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "",
+ "logBase": 1,
+ "max": "100",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "aliasColors": {
+ "IOPS/spindle": "#3F6833"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "fill": 1,
+ "id": 46,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 6,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "alias(percentileOfSeries(group(collectd.$osd_servers.$domain.cephmetrics.gauge.$cluster_name.osd.*.perf.iops),$percentile),\"IOPS/spindle\")",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "IOPS per Disk @ $percentile%ile - $osd_servers OSDs",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {
+ "IOPS": "#3F6833"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "fill": 1,
+ "id": 47,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [
+ {
+ "dashUri": "db/iops-by-server",
+ "dashboard": "IOPS by Server",
+ "includeVars": true,
+ "keepTime": true,
+ "targetBlank": true,
+ "title": "IOPS by Server",
+ "type": "dashboard"
+ }
+ ],
+ "minSpan": 6,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "alias(sumSeries(collectd.$osd_servers.$domain.cephmetrics.gauge.$cluster_name.osd.*.perf.iops),\"IOPS\")",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Total Disk IOPS - $osd_servers OSDs",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "Disk/OSD Load Summary",
+ "titleSize": "h5"
+ },
+ {
+ "collapse": false,
+ "height": 250,
+ "panels": [
+ {
+ "aliasColors": {
+ "CPU Busy": "#447EBC",
+ "CPU Busy @ 95%ile": "#890F02",
+ "Cluster-wide CPU Busy @ 95%ile": "#890F02",
+ "Max CPU Busy": "#BF1B00",
+ "Max CPU Busy - all OSD Hosts": "#BF1B00"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "fill": 3,
+ "id": 44,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 6,
+ "nullPointMode": "null as zero",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "alias": "Cluster-wide CPU Busy @ 95%ile",
+ "fill": 0
+ }
+ ],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "alias(percentileOfSeries(groupByNode(collectd.*.$domain.cpu.percent.{wait,interrupt,nice,user,system}, 1, \"sumSeries\"),$percentile),\"Cluster-wide CPU Busy @ $percentile%ile\")",
+ "textEditor": true
+ },
+ {
+ "hide": false,
+ "refId": "B",
+ "target": "alias(averageSeries(groupByNode(collectd.$osd_servers.$domain.cpu.percent.{wait,interrupt,nice,user,system}, 1, \"sumSeries\")),\"Average OSD Host(s) CPU Busy\")",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "CPU Utilization - $osd_servers",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "",
+ "logBase": 1,
+ "max": "100",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {
+ "Network load (rx+tx)": "#3F6833"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "fill": 1,
+ "id": 49,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [
+ {
+ "dashUri": "db/network-usage-by-node",
+ "dashboard": "Network Usage by Node",
+ "includeVars": true,
+ "keepTime": true,
+ "targetBlank": true,
+ "title": "Network Load by Node",
+ "type": "dashboard"
+ }
+ ],
+ "minSpan": 6,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "hide": true,
+ "refId": "A",
+ "target": "collectd.$osd_servers.$domain.interface.{en,eth,bond}*.if_octets.rx"
+ },
+ {
+ "hide": true,
+ "refId": "B",
+ "target": "collectd.$osd_servers.$domain.interface.{en,eth,bond}*.if_octets.tx"
+ },
+ {
+ "refId": "C",
+ "target": "alias(sumSeries(#A,#B), \"Network load (rx+tx)\")",
+ "targetFull": "alias(sumSeries(collectd.$osd_servers.$domain.interface.{en,eth,bond}*.if_octets.rx,collectd.$osd_servers.$domain.interface.{en,eth,bond}*.if_octets.tx), \"Network load (rx+tx)\")",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Network Load - $osd_servers",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "OSD Host CPU and Network Load",
+ "titleSize": "h5"
+ }
+ ],
+ "schemaVersion": 14,
+ "style": "dark",
+ "tags": [],
+ "templating": {
+ "list": [
+ {
+ "allValue": null,
+ "current": {
+ "selected": true,
+ "text": "ceph",
+ "value": "ceph"
+ },
+ "datasource": "Local",
+ "hide": 2,
+ "includeAll": false,
+ "label": null,
+ "multi": false,
+ "name": "cluster_name",
+ "options": [],
+ "query": "collectd.*.$domain.cephmetrics.gauge.*",
+ "refresh": 1,
+ "regex": "",
+ "sort": 0,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ },
+ {
+ "allValue": null,
+ "current": {
+ "selected": true,
+ "text": "test.lab",
+ "value": "test.lab"
+ },
+ "hide": 2,
+ "includeAll": false,
+ "label": null,
+ "multi": false,
+ "name": "domain",
+ "options": [
+ {
+ "selected": true,
+ "text": "test.lab",
+ "value": "test.lab"
+ }
+ ],
+ "query": "test.lab",
+ "type": "custom"
+ },
+ {
+ "allValue": null,
+ "current": {
+ "selected": true,
+ "text": "95",
+ "value": "95"
+ },
+ "hide": 0,
+ "includeAll": false,
+ "label": "Percentile",
+ "multi": false,
+ "name": "percentile",
+ "options": [
+ {
+ "selected": false,
+ "text": "80",
+ "value": "80"
+ },
+ {
+ "selected": false,
+ "text": "85",
+ "value": "85"
+ },
+ {
+ "selected": false,
+ "text": "90",
+ "value": "90"
+ },
+ {
+ "selected": true,
+ "text": "95",
+ "value": "95"
+ },
+ {
+ "selected": false,
+ "text": "98",
+ "value": "98"
+ }
+ ],
+ "query": "80,85,90,95,98",
+ "type": "custom"
+ },
+ {
+ "allValue": "",
+ "current": {
+ "selected": true,
+ "text": "All",
+ "value": "$__all"
+ },
+ "hide": 0,
+ "includeAll": true,
+ "label": "OSD Hostname",
+ "multi": true,
+ "name": "osd_servers",
+ "options": [
+ {
+ "selected": true,
+ "text": "All",
+ "value": "$__all"
+ },
+ {
+ "selected": false,
+ "text": "ceph-1",
+ "value": "ceph-1"
+ },
+ {
+ "selected": false,
+ "text": "ceph-2",
+ "value": "ceph-2"
+ },
+ {
+ "selected": false,
+ "text": "ceph-3",
+ "value": "ceph-3"
+ }
+ ],
+ "query": "ceph-1,ceph-2,ceph-3",
+ "type": "custom"
+ },
+ {
+ "allValue": null,
+ "current": {
+ "selected": true,
+ "text": "85",
+ "value": "85"
+ },
+ "hide": 2,
+ "includeAll": false,
+ "label": null,
+ "multi": false,
+ "name": "disk_full_threshold",
+ "options": [
+ {
+ "selected": true,
+ "text": "85",
+ "value": "85"
+ }
+ ],
+ "query": "85",
+ "type": "custom"
+ }
+ ]
+ },
+ "time": {
+ "from": "now-1h",
+ "to": "now"
+ },
+ "timepicker": {
+ "refresh_intervals": [
+ "5s",
+ "10s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ],
+ "time_options": [
+ "5m",
+ "15m",
+ "1h",
+ "6h",
+ "12h",
+ "24h",
+ "2d",
+ "7d",
+ "30d"
+ ]
+ },
+ "timezone": "browser",
+ "title": "Ceph Backend Storage",
+ "version": 26
+ },
+ "meta": {
+ "canEdit": true,
+ "canSave": true,
+ "canStar": true,
+ "created": "2017-08-03T21:42:28Z",
+ "createdBy": "admin",
+ "expires": "0001-01-01T00:00:00Z",
+ "slug": "ceph-backend-storage",
+ "type": "db",
+ "updated": "2017-09-12T23:43:51Z",
+ "updatedBy": "admin",
+ "version": 26
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "meta": {
+ "updated": "2017-08-21T04:31:01Z",
+ "created": "2017-08-03T21:42:28Z",
+ "canStar": true,
+ "expires": "0001-01-01T00:00:00Z",
+ "canSave": true,
+ "canEdit": true,
+ "version": 30,
+ "createdBy": "admin",
+ "updatedBy": "admin",
+ "type": "db",
+ "slug": "ceph-cluster"
+ },
+ "dashboard": {
+ "style": "dark",
+ "rows": [
+ {
+ "repeat": null,
+ "titleSize": "h5",
+ "repeatIteration": null,
+ "title": "Cluster Configuration",
+ "height": "100",
+ "repeatRowId": null,
+ "panels": [
+ {
+ "span": 1,
+ "links": [],
+ "title": "",
+ "transparent": true,
+ "content": "",
+ "mode": "markdown",
+ "minSpan": 1,
+ "type": "text",
+ "id": 74
+ },
+ {
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "links": [],
+ "valueMaps": [
+ {
+ "text": "N/A",
+ "value": "null",
+ "op": "="
+ }
+ ],
+ "tableColumn": "",
+ "thresholds": "",
+ "rangeMaps": [
+ {
+ "to": "null",
+ "from": "null",
+ "text": "N/A"
+ }
+ ],
+ "nullPointMode": "connected",
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "gauge": {
+ "thresholdMarkers": true,
+ "thresholdLabels": false,
+ "minValue": 0,
+ "maxValue": 100,
+ "show": false
+ },
+ "targets": [
+ {
+ "dsType": "influxdb",
+ "target": "alias(keepLastValue(consolidateBy(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.num_mon), \"max\")),\"mons\")",
+ "tags": [],
+ "groupBy": [],
+ "textEditor": true,
+ "resultFormat": "time_series",
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_pool",
+ "policy": "default",
+ "refId": "A",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ]
+ }
+ ],
+ "maxDataPoints": 100,
+ "mappingType": 1,
+ "span": 1,
+ "colorBackground": false,
+ "title": "MONs",
+ "sparkline": {
+ "full": false,
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "id": 73,
+ "prefixFontSize": "50%",
+ "valueName": "current",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "format": "none",
+ "cacheTimeout": null,
+ "postfix": "",
+ "decimals": 0,
+ "interval": null,
+ "prefix": "",
+ "datasource": "Local",
+ "nullText": null,
+ "minSpan": 1,
+ "postfixFontSize": "50%",
+ "colorValue": false
+ },
+ {
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "links": [],
+ "valueMaps": [
+ {
+ "text": "N/A",
+ "value": "null",
+ "op": "="
+ }
+ ],
+ "tableColumn": "",
+ "thresholds": "",
+ "rangeMaps": [
+ {
+ "text": "N/A",
+ "from": "null",
+ "to": "null"
+ }
+ ],
+ "nullPointMode": "connected",
+ "prefix": "",
+ "gauge": {
+ "thresholdMarkers": true,
+ "thresholdLabels": false,
+ "minValue": 0,
+ "maxValue": 100,
+ "show": false
+ },
+ "id": 68,
+ "maxDataPoints": "",
+ "mappingType": 1,
+ "span": 1,
+ "colorBackground": false,
+ "title": "OSD Hosts",
+ "sparkline": {
+ "full": false,
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "targets": [
+ {
+ "textEditor": true,
+ "target": "maxSeries(consolidateBy(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.num_osd_hosts, \"max\"))",
+ "refId": "A"
+ }
+ ],
+ "prefixFontSize": "50%",
+ "valueName": "current",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "format": "none",
+ "cacheTimeout": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "interval": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "Local",
+ "nullText": null,
+ "minSpan": 1,
+ "decimals": 0,
+ "colorValue": false
+ },
+ {
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "colorBackground": false,
+ "valueMaps": [
+ {
+ "text": "N/A",
+ "value": "null",
+ "op": "="
+ }
+ ],
+ "tableColumn": "",
+ "thresholds": "",
+ "rangeMaps": [
+ {
+ "text": "N/A",
+ "from": "null",
+ "to": "null"
+ }
+ ],
+ "nullPointMode": "connected",
+ "prefix": "",
+ "gauge": {
+ "thresholdMarkers": true,
+ "thresholdLabels": false,
+ "minValue": 0,
+ "maxValue": 100,
+ "show": false
+ },
+ "id": 72,
+ "maxDataPoints": 100,
+ "mappingType": 1,
+ "span": 1,
+ "links": [],
+ "title": "MDS",
+ "sparkline": {
+ "full": false,
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "targets": [
+ {
+ "dsType": "influxdb",
+ "target": "alias(keepLastValue(consolidateBy(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.num_mds_up), \"max\")),\"mds\")",
+ "tags": [],
+ "refId": "A",
+ "textEditor": true,
+ "resultFormat": "time_series",
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_pool",
+ "policy": "default",
+ "groupBy": [],
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ]
+ }
+ ],
+ "prefixFontSize": "50%",
+ "valueName": "current",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "format": "none",
+ "cacheTimeout": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "interval": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "Local",
+ "nullText": null,
+ "minSpan": 1,
+ "decimals": 0,
+ "colorValue": false
+ },
+ {
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "links": [],
+ "valueMaps": [
+ {
+ "text": "0",
+ "value": "null",
+ "op": "="
+ }
+ ],
+ "tableColumn": "",
+ "thresholds": "",
+ "rangeMaps": [
+ {
+ "text": "N/A",
+ "from": "null",
+ "to": "null"
+ }
+ ],
+ "nullPointMode": "connected",
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "gauge": {
+ "thresholdMarkers": true,
+ "thresholdLabels": false,
+ "minValue": 0,
+ "maxValue": 100,
+ "show": false
+ },
+ "targets": [
+ {
+ "textEditor": true,
+ "refId": "A",
+ "target": "countSeries(collectd.*.$domain.cephmetrics.derive.$cluster_name.rgw.put)"
+ }
+ ],
+ "maxDataPoints": "",
+ "mappingType": 1,
+ "span": 1,
+ "colorBackground": false,
+ "title": "RGW Hosts",
+ "sparkline": {
+ "full": false,
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "id": 69,
+ "prefixFontSize": "50%",
+ "valueName": "current",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "format": "none",
+ "cacheTimeout": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "interval": null,
+ "prefix": "",
+ "datasource": "Local",
+ "nullText": null,
+ "minSpan": 1,
+ "decimals": 0,
+ "colorValue": false
+ },
+ {
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "links": [],
+ "valueMaps": [
+ {
+ "text": "0",
+ "value": "null",
+ "op": "="
+ }
+ ],
+ "tableColumn": "",
+ "thresholds": "",
+ "rangeMaps": [
+ {
+ "text": "N/A",
+ "from": "null",
+ "to": "null"
+ }
+ ],
+ "nullPointMode": "connected",
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "gauge": {
+ "thresholdMarkers": true,
+ "thresholdLabels": false,
+ "minValue": 0,
+ "maxValue": 100,
+ "show": false
+ },
+ "id": 71,
+ "maxDataPoints": "",
+ "mappingType": 1,
+ "span": 1,
+ "colorBackground": false,
+ "title": "iSCSI Hosts",
+ "sparkline": {
+ "full": false,
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "targets": [
+ {
+ "textEditor": true,
+ "refId": "A",
+ "target": "countSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.iscsi.gw_name.*)"
+ }
+ ],
+ "prefixFontSize": "50%",
+ "valueName": "current",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "format": "none",
+ "cacheTimeout": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "interval": null,
+ "prefix": "",
+ "datasource": "Local",
+ "nullText": null,
+ "minSpan": 1,
+ "decimals": 0,
+ "colorValue": false
+ },
+ {
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "links": [],
+ "valueMaps": [
+ {
+ "text": "N/A",
+ "value": "null",
+ "op": "="
+ }
+ ],
+ "tableColumn": "",
+ "thresholds": "",
+ "rangeMaps": [
+ {
+ "text": "N/A",
+ "from": "null",
+ "to": "null"
+ }
+ ],
+ "nullPointMode": "connected",
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "gauge": {
+ "thresholdMarkers": true,
+ "show": false,
+ "minValue": 0,
+ "maxValue": 100,
+ "thresholdLabels": false
+ },
+ "id": 67,
+ "maxDataPoints": 100,
+ "mappingType": 1,
+ "span": 2,
+ "colorBackground": false,
+ "title": "OSDs",
+ "sparkline": {
+ "full": false,
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "targets": [
+ {
+ "dsType": "influxdb",
+ "target": "alias(keepLastValue(consolidateBy(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.num_osd), \"max\")),\"total\")",
+ "tags": [],
+ "refId": "A",
+ "textEditor": true,
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_pool",
+ "policy": "default",
+ "groupBy": [],
+ "resultFormat": "time_series"
+ }
+ ],
+ "prefixFontSize": "50%",
+ "valueName": "current",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "format": "none",
+ "cacheTimeout": null,
+ "postfix": "",
+ "decimals": 0,
+ "interval": null,
+ "prefix": "",
+ "datasource": "Local",
+ "nullText": null,
+ "minSpan": 2,
+ "postfixFontSize": "50%",
+ "colorValue": false
+ },
+ {
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "colorBackground": false,
+ "valueMaps": [
+ {
+ "text": "N/A",
+ "value": "null",
+ "op": "="
+ }
+ ],
+ "tableColumn": "",
+ "thresholds": "",
+ "rangeMaps": [
+ {
+ "text": "N/A",
+ "from": "null",
+ "to": "null"
+ }
+ ],
+ "nullPointMode": "connected",
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "gauge": {
+ "thresholdMarkers": true,
+ "thresholdLabels": false,
+ "minValue": 0,
+ "maxValue": 100,
+ "show": false
+ },
+ "id": 17,
+ "maxDataPoints": 100,
+ "mappingType": 1,
+ "span": 1,
+ "links": [],
+ "title": "Pools",
+ "sparkline": {
+ "full": false,
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "targets": [
+ {
+ "dsType": "influxdb",
+ "target": "maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.num_pool)",
+ "tags": [],
+ "groupBy": [],
+ "textEditor": true,
+ "select": [
+ [
+ {
+ "type": "field",
+ "params": [
+ "value"
+ ]
+ }
+ ]
+ ],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_pool",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series"
+ }
+ ],
+ "prefixFontSize": "50%",
+ "valueName": "current",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "format": "none",
+ "cacheTimeout": null,
+ "postfix": "",
+ "interval": null,
+ "prefix": "",
+ "datasource": "Local",
+ "nullText": null,
+ "minSpan": 1,
+ "postfixFontSize": "50%",
+ "colorValue": false
+ },
+ {
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "links": [],
+ "valueMaps": [
+ {
+ "text": "N/A",
+ "value": "null",
+ "op": "="
+ }
+ ],
+ "tableColumn": "",
+ "thresholds": "",
+ "rangeMaps": [
+ {
+ "text": "N/A",
+ "from": "null",
+ "to": "null"
+ }
+ ],
+ "nullPointMode": "connected",
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "gauge": {
+ "show": false,
+ "thresholdMarkers": true,
+ "minValue": 0,
+ "maxValue": 100,
+ "thresholdLabels": false
+ },
+ "targets": [
+ {
+ "textEditor": true,
+ "refId": "A",
+ "target": "alias(keepLastValue(consolidateBy(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.osd_bytes_avail), \"max\")),\"freespacel\")"
+ }
+ ],
+ "maxDataPoints": 100,
+ "mappingType": 1,
+ "span": 2,
+ "colorBackground": false,
+ "title": "Unused Capacity",
+ "sparkline": {
+ "full": false,
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "id": 70,
+ "prefixFontSize": "50%",
+ "valueName": "current",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "format": "decbytes",
+ "cacheTimeout": null,
+ "postfix": "",
+ "decimals": 1,
+ "interval": null,
+ "prefix": "",
+ "datasource": null,
+ "nullText": null,
+ "minSpan": 2,
+ "postfixFontSize": "50%",
+ "colorValue": false
+ }
+ ],
+ "showTitle": true,
+ "collapse": false
+ },
+ {
+ "repeat": null,
+ "titleSize": "h5",
+ "repeatIteration": null,
+ "title": "Cluster Flags",
+ "height": "100",
+ "repeatRowId": null,
+ "panels": [
+ {
+ "span": 2,
+ "links": [],
+ "title": "",
+ "id": 66,
+ "content": "",
+ "mode": "markdown",
+ "minSpan": 2,
+ "type": "text",
+ "transparent": true
+ },
+ {
+ "span": 1,
+ "links": [],
+ "title": "",
+ "height": "95",
+ "content": "<h2 style=\"text-align: center;\">Cluster Flags:</h2>",
+ "mode": "html",
+ "minSpan": 1,
+ "type": "text",
+ "id": 58,
+ "transparent": true
+ },
+ {
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "timeFrom": "1m",
+ "links": [],
+ "valueMaps": [
+ {
+ "text": "N/A",
+ "value": "null",
+ "op": "="
+ },
+ {
+ "text": "ENABLED",
+ "value": "0",
+ "op": "="
+ },
+ {
+ "text": "ACTIVE",
+ "value": "1",
+ "op": "="
+ },
+ {
+ "text": "DISABLED",
+ "value": "2",
+ "op": "="
+ },
+ {
+ "text": "NODATA",
+ "value": "-1",
+ "op": "="
+ }
+ ],
+ "tableColumn": "",
+ "thresholds": "1,2",
+ "rangeMaps": [
+ {
+ "text": "N/A",
+ "from": "null",
+ "to": "null"
+ }
+ ],
+ "nullPointMode": "connected",
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "gauge": {
+ "thresholdMarkers": true,
+ "minValue": 0,
+ "maxValue": 100,
+ "thresholdLabels": false,
+ "show": false
+ },
+ "id": 57,
+ "maxDataPoints": "",
+ "mappingType": 1,
+ "span": 1,
+ "colorBackground": true,
+ "title": "SCRUB",
+ "sparkline": {
+ "full": false,
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "targets": [
+ {
+ "textEditor": true,
+ "refId": "A",
+ "target": "maxSeries(consolidateBy(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.features.scrub),\"maxSeries\"))"
+ }
+ ],
+ "prefixFontSize": "50%",
+ "valueName": "current",
+ "type": "singlestat",
+ "valueFontSize": "40%",
+ "description": "Scrub activity takes place daily basis across the OSD's and performs object size and attribute checks. Scrub activity can be controlled with the \"ceph osd scrub\" command.",
+ "format": "none",
+ "cacheTimeout": null,
+ "height": "95",
+ "timeShift": null,
+ "interval": null,
+ "prefix": "",
+ "postfix": "",
+ "hideTimeOverride": true,
+ "datasource": "Local",
+ "nullText": null,
+ "minSpan": 1,
+ "postfixFontSize": "50%",
+ "colorValue": false
+ },
+ {
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "timeFrom": "1m",
+ "colorBackground": true,
+ "valueMaps": [
+ {
+ "text": "N/A",
+ "value": "null",
+ "op": "="
+ },
+ {
+ "text": "ENABLED",
+ "value": "0",
+ "op": "="
+ },
+ {
+ "text": "ACTIVE",
+ "value": "1",
+ "op": "="
+ },
+ {
+ "text": "DISABLED",
+ "value": "2",
+ "op": "="
+ },
+ {
+ "text": "NODATA",
+ "value": "-1",
+ "op": "="
+ }
+ ],
+ "tableColumn": "",
+ "thresholds": "1,2",
+ "rangeMaps": [
+ {
+ "text": "N/A",
+ "from": "null",
+ "to": "null"
+ }
+ ],
+ "height": "95",
+ "prefix": "",
+ "gauge": {
+ "thresholdMarkers": true,
+ "thresholdLabels": false,
+ "minValue": 0,
+ "maxValue": 100,
+ "show": false
+ },
+ "targets": [
+ {
+ "textEditor": true,
+ "refId": "A",
+ "target": "maxSeries(consolidateBy(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.features.deep_scrub),\"maxSeries\"))"
+ }
+ ],
+ "maxDataPoints": "",
+ "mappingType": 1,
+ "span": 1,
+ "links": [],
+ "title": "DEEP SCRUB",
+ "sparkline": {
+ "full": false,
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "id": 59,
+ "prefixFontSize": "50%",
+ "valueName": "current",
+ "type": "singlestat",
+ "valueFontSize": "40%",
+ "description": "Deep scrub acts on the objects within placement groups (PGs). Objects are read, and checksum's compared to protect against silent bit-rot events. Although a weekly activity, in large clusters is normal to see deep-scrub active on a daily basis. Scrub activity can be controlled with the \"ceph osd scrub\" command.",
+ "format": "none",
+ "hideTimeOverride": true,
+ "nullPointMode": "connected",
+ "postfix": "",
+ "interval": null,
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "cacheTimeout": null,
+ "datasource": "Local",
+ "nullText": null,
+ "minSpan": 1,
+ "postfixFontSize": "50%",
+ "colorValue": false
+ },
+ {
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "timeFrom": "1m",
+ "links": [],
+ "valueMaps": [
+ {
+ "text": "N/A",
+ "value": "null",
+ "op": "="
+ },
+ {
+ "text": "ENABLED",
+ "value": "0",
+ "op": "="
+ },
+ {
+ "text": "ACTIVE",
+ "value": "1",
+ "op": "="
+ },
+ {
+ "text": "DISABLED",
+ "value": "2",
+ "op": "="
+ },
+ {
+ "text": "NODATA",
+ "value": "-1",
+ "op": "="
+ }
+ ],
+ "tableColumn": "",
+ "thresholds": "1,2",
+ "rangeMaps": [
+ {
+ "text": "N/A",
+ "from": "null",
+ "to": "null"
+ }
+ ],
+ "nullPointMode": "connected",
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "gauge": {
+ "show": false,
+ "thresholdMarkers": true,
+ "minValue": 0,
+ "maxValue": 100,
+ "thresholdLabels": false
+ },
+ "id": 60,
+ "maxDataPoints": "",
+ "mappingType": 1,
+ "span": 1,
+ "colorBackground": true,
+ "title": "RECOVERY",
+ "sparkline": {
+ "full": false,
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "targets": [
+ {
+ "textEditor": true,
+ "target": "maxSeries(consolidateBy(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.features.recovery),\"maxSeries\"))",
+ "refId": "A"
+ }
+ ],
+ "prefixFontSize": "50%",
+ "valueName": "current",
+ "type": "singlestat",
+ "valueFontSize": "40%",
+ "description": "With the recovery flag enabled, disruption in the cluster will result in data being recreated to freespace within the cluster to honor the pool's protection schema. Under some circumstances, you may use the norecover flag to prevent automatic recovery.",
+ "format": "none",
+ "cacheTimeout": null,
+ "height": "95",
+ "postfix": "",
+ "interval": null,
+ "prefix": "",
+ "hideTimeOverride": true,
+ "datasource": "Local",
+ "nullText": null,
+ "minSpan": 1,
+ "postfixFontSize": "50%",
+ "colorValue": false
+ },
+ {
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "timeFrom": "1m",
+ "links": [],
+ "valueMaps": [
+ {
+ "text": "N/A",
+ "value": "null",
+ "op": "="
+ },
+ {
+ "text": "ENABLED",
+ "value": "0",
+ "op": "="
+ },
+ {
+ "text": "ACTIVE",
+ "value": "1",
+ "op": "="
+ },
+ {
+ "text": "DISABLED",
+ "value": "2",
+ "op": "="
+ }
+ ],
+ "tableColumn": "",
+ "thresholds": "1,2",
+ "rangeMaps": [
+ {
+ "to": "null",
+ "from": "null",
+ "text": "N/A"
+ }
+ ],
+ "height": "95",
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "gauge": {
+ "thresholdMarkers": true,
+ "minValue": 0,
+ "maxValue": 100,
+ "thresholdLabels": false,
+ "show": false
+ },
+ "id": 64,
+ "maxDataPoints": "",
+ "mappingType": 1,
+ "span": 1,
+ "colorBackground": true,
+ "title": "BACKFILL",
+ "sparkline": {
+ "full": false,
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "targets": [
+ {
+ "textEditor": true,
+ "target": "maxSeries(consolidateBy(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.features.backfill),\"maxSeries\"))",
+ "refId": "A"
+ }
+ ],
+ "prefixFontSize": "50%",
+ "valueName": "current",
+ "type": "singlestat",
+ "valueFontSize": "40%",
+ "format": "none",
+ "cacheTimeout": null,
+ "nullPointMode": "connected",
+ "postfix": "",
+ "interval": null,
+ "prefix": "",
+ "hideTimeOverride": true,
+ "datasource": "Local",
+ "nullText": null,
+ "minSpan": 1,
+ "postfixFontSize": "50%",
+ "colorValue": false
+ },
+ {
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "timeFrom": "1m",
+ "colorBackground": true,
+ "valueMaps": [
+ {
+ "text": "N/A",
+ "value": "null",
+ "op": "="
+ },
+ {
+ "text": "ENABLED",
+ "value": "0",
+ "op": "="
+ },
+ {
+ "text": "ACTIVE",
+ "value": "1",
+ "op": "="
+ },
+ {
+ "text": "DISABLED",
+ "value": "2",
+ "op": "="
+ },
+ {
+ "text": "NODATA",
+ "value": "-1",
+ "op": "="
+ }
+ ],
+ "tableColumn": "",
+ "thresholds": "1,2",
+ "rangeMaps": [
+ {
+ "text": "N/A",
+ "from": "null",
+ "to": "null"
+ }
+ ],
+ "height": "95",
+ "prefix": "",
+ "gauge": {
+ "thresholdMarkers": true,
+ "show": false,
+ "minValue": 0,
+ "maxValue": 100,
+ "thresholdLabels": false
+ },
+ "targets": [
+ {
+ "textEditor": true,
+ "refId": "A",
+ "target": "maxSeries(consolidateBy(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.features.rebalance),\"maxSeries\"))"
+ }
+ ],
+ "maxDataPoints": "",
+ "mappingType": 1,
+ "span": 1,
+ "links": [],
+ "title": "REBALANCE",
+ "sparkline": {
+ "full": false,
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "id": 61,
+ "prefixFontSize": "50%",
+ "valueName": "current",
+ "type": "singlestat",
+ "valueFontSize": "40%",
+ "format": "none",
+ "hideTimeOverride": true,
+ "nullPointMode": "connected",
+ "postfix": "",
+ "interval": null,
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "cacheTimeout": null,
+ "datasource": "Local",
+ "nullText": null,
+ "minSpan": 1,
+ "postfixFontSize": "50%",
+ "colorValue": false
+ },
+ {
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "timeFrom": "1m",
+ "colorBackground": true,
+ "valueMaps": [
+ {
+ "text": "N/A",
+ "value": "null",
+ "op": "="
+ },
+ {
+ "text": "ENABLED",
+ "value": "0",
+ "op": "="
+ },
+ {
+ "text": "ACTIVE",
+ "value": "1",
+ "op": "="
+ },
+ {
+ "text": "DISABLED",
+ "value": "2",
+ "op": "="
+ },
+ {
+ "text": "NODATA",
+ "value": "-1",
+ "op": "="
+ }
+ ],
+ "tableColumn": "",
+ "thresholds": "1,2",
+ "rangeMaps": [
+ {
+ "to": "null",
+ "from": "null",
+ "text": "N/A"
+ }
+ ],
+ "height": "95",
+ "prefix": "",
+ "gauge": {
+ "thresholdMarkers": true,
+ "thresholdLabels": false,
+ "minValue": 0,
+ "maxValue": 100,
+ "show": false
+ },
+ "targets": [
+ {
+ "textEditor": true,
+ "target": "maxSeries(consolidateBy(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.features.out),\"maxSeries\"))",
+ "refId": "A"
+ }
+ ],
+ "maxDataPoints": "",
+ "mappingType": 1,
+ "span": 1,
+ "links": [],
+ "title": "OUT",
+ "sparkline": {
+ "full": false,
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "id": 62,
+ "prefixFontSize": "50%",
+ "valueName": "current",
+ "type": "singlestat",
+ "valueFontSize": "40%",
+ "description": "The OUT flag setting allows the mon's to mark OSD's as out of the configuration when they stop sending hearbeats to the mon's. By marking them OUT, recovery takes place. However, for planned maintenance you can set the cluster to noout to disable this behavior.",
+ "format": "none",
+ "hideTimeOverride": true,
+ "nullPointMode": "connected",
+ "postfix": "",
+ "interval": null,
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "cacheTimeout": null,
+ "datasource": "Local",
+ "nullText": null,
+ "minSpan": 1,
+ "postfixFontSize": "50%",
+ "colorValue": false
+ },
+ {
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "timeFrom": "1m",
+ "links": [],
+ "valueMaps": [
+ {
+ "text": "N/A",
+ "value": "null",
+ "op": "="
+ },
+ {
+ "text": "ENABLED",
+ "value": "0",
+ "op": "="
+ },
+ {
+ "text": "ACTIVE",
+ "value": "1",
+ "op": "="
+ },
+ {
+ "text": "DISABLED",
+ "value": "2",
+ "op": "="
+ },
+ {
+ "text": "NODATA",
+ "value": "-1",
+ "op": "="
+ }
+ ],
+ "tableColumn": "",
+ "thresholds": "1,2",
+ "rangeMaps": [
+ {
+ "to": "null",
+ "from": "null",
+ "text": "N/A"
+ }
+ ],
+ "height": "95",
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "gauge": {
+ "thresholdMarkers": true,
+ "thresholdLabels": false,
+ "minValue": 0,
+ "maxValue": 100,
+ "show": false
+ },
+ "id": 63,
+ "maxDataPoints": "",
+ "mappingType": 1,
+ "span": 1,
+ "colorBackground": true,
+ "title": "DOWN",
+ "sparkline": {
+ "full": false,
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "targets": [
+ {
+ "textEditor": true,
+ "refId": "A",
+ "target": "maxSeries(consolidateBy(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.features.down),\"maxSeries\"))"
+ }
+ ],
+ "prefixFontSize": "50%",
+ "valueName": "current",
+ "type": "singlestat",
+ "valueFontSize": "40%",
+ "description": "The down feature allows OSD's to mark their peers as DOWN when they are not reachable. However, if there is a poor network or planned outages, you may want to set this flag to nodown to prevent OSD's flapping between up/down states",
+ "format": "none",
+ "cacheTimeout": null,
+ "nullPointMode": "connected",
+ "postfix": "",
+ "interval": null,
+ "prefix": "",
+ "hideTimeOverride": true,
+ "datasource": "Local",
+ "nullText": null,
+ "minSpan": 1,
+ "postfixFontSize": "50%",
+ "colorValue": false
+ }
+ ],
+ "showTitle": false,
+ "collapse": false
+ },
+ {
+ "repeat": null,
+ "titleSize": "h5",
+ "collapse": true,
+ "title": "Cluster Capacity",
+ "height": "250",
+ "repeatRowId": null,
+ "panels": [
+ {
+ "bars": false,
+ "timeFrom": "7d",
+ "links": [],
+ "thresholds": [],
+ "spaceLength": 10,
+ "nullPointMode": "connected",
+ "renderer": "flot",
+ "linewidth": 1,
+ "steppedLine": false,
+ "targets": [
+ {
+ "dsType": "influxdb",
+ "target": "alias(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.osd_bytes_used), 'Used')",
+ "tags": [],
+ "groupBy": [],
+ "alias": "Used",
+ "textEditor": true,
+ "resultFormat": "time_series",
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.osd_bytes_used",
+ "policy": "default",
+ "refId": "B",
+ "select": [
+ [
+ {
+ "type": "field",
+ "params": [
+ "value"
+ ]
+ }
+ ]
+ ]
+ },
+ {
+ "dsType": "influxdb",
+ "target": "alias(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.osd_bytes), 'Raw')",
+ "tags": [],
+ "refId": "A",
+ "alias": "Raw Capacity",
+ "textEditor": true,
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.osd_bytes",
+ "policy": "default",
+ "groupBy": [],
+ "resultFormat": "time_series"
+ }
+ ],
+ "fill": 1,
+ "span": 4,
+ "title": "Cluster Capacity - Past 7 Days",
+ "tooltip": {
+ "sort": 1,
+ "shared": true,
+ "value_type": "individual"
+ },
+ "id": 3,
+ "yaxes": [
+ {
+ "logBase": 1,
+ "show": true,
+ "max": null,
+ "format": "decbytes",
+ "min": "0",
+ "label": null
+ },
+ {
+ "logBase": 1,
+ "min": null,
+ "max": null,
+ "format": "short",
+ "label": null,
+ "show": false
+ }
+ ],
+ "xaxis": {
+ "buckets": null,
+ "show": true,
+ "values": [],
+ "mode": "time",
+ "name": null
+ },
+ "seriesOverrides": [],
+ "percentage": false,
+ "type": "graph",
+ "dashes": false,
+ "description": "Shows the Capacity within the cluster over the past 7 days",
+ "hideTimeOverride": true,
+ "dashLength": 10,
+ "stack": false,
+ "timeShift": null,
+ "aliasColors": {
+ "Raw": "#3F6833",
+ "Used": "#E0752D"
+ },
+ "lines": true,
+ "legend": {
+ "avg": false,
+ "show": true,
+ "max": false,
+ "min": false,
+ "current": true,
+ "values": true,
+ "total": false
+ },
+ "points": false,
+ "datasource": "Local",
+ "pointradius": 5,
+ "minSpan": 6
+ },
+ {
+ "bars": false,
+ "timeFrom": "7d",
+ "links": [],
+ "thresholds": [],
+ "spaceLength": 10,
+ "nullPointMode": "connected",
+ "renderer": "flot",
+ "linewidth": 1,
+ "steppedLine": false,
+ "targets": [
+ {
+ "dsType": "influxdb",
+ "target": "groupByNode(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.*.percent_used, -2, 'maxSeries')",
+ "tags": [],
+ "refId": "A",
+ "alias": "Used",
+ "textEditor": true,
+ "resultFormat": "time_series",
+ "policy": "default",
+ "groupBy": [],
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ]
+ }
+ ],
+ "fill": 1,
+ "span": 4,
+ "title": "Pool Capacity - Past 7 Days",
+ "tooltip": {
+ "sort": 2,
+ "shared": true,
+ "value_type": "individual"
+ },
+ "id": 82,
+ "points": false,
+ "xaxis": {
+ "buckets": null,
+ "values": [],
+ "mode": "time",
+ "name": null,
+ "show": true
+ },
+ "seriesOverrides": [],
+ "percentage": false,
+ "type": "graph",
+ "dashes": false,
+ "description": "Shows the Capacity within each pool over the past 7 days",
+ "hideTimeOverride": true,
+ "dashLength": 10,
+ "stack": false,
+ "timeShift": null,
+ "aliasColors": {
+ "Raw": "#3F6833",
+ "Used": "#E0752D"
+ },
+ "lines": true,
+ "legend": {
+ "avg": false,
+ "min": false,
+ "max": false,
+ "show": true,
+ "current": false,
+ "values": false,
+ "alignAsTable": false,
+ "total": false
+ },
+ "yaxes": [
+ {
+ "logBase": 1,
+ "format": "percent",
+ "max": "100",
+ "min": "0",
+ "label": "",
+ "show": true
+ },
+ {
+ "logBase": 1,
+ "format": "short",
+ "max": null,
+ "min": null,
+ "label": null,
+ "show": false
+ }
+ ],
+ "datasource": "Local",
+ "pointradius": 5,
+ "minSpan": 6,
+ "decimals": 2
+ },
+ {
+ "bars": false,
+ "timeFrom": "7d",
+ "links": [],
+ "thresholds": [],
+ "spaceLength": 10,
+ "nullPointMode": "connected",
+ "renderer": "flot",
+ "linewidth": 1,
+ "steppedLine": false,
+ "targets": [
+ {
+ "dsType": "influxdb",
+ "target": "alias(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.num_object), 'RADOS Objects')",
+ "tags": [],
+ "groupBy": [],
+ "alias": "Used",
+ "textEditor": true,
+ "resultFormat": "time_series",
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.osd_bytes_used",
+ "policy": "default",
+ "refId": "B",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ]
+ }
+ ],
+ "fill": 1,
+ "span": 4,
+ "title": "RADOS Object History - Past 7 Days",
+ "tooltip": {
+ "sort": 1,
+ "shared": true,
+ "value_type": "individual"
+ },
+ "id": 65,
+ "yaxes": [
+ {
+ "logBase": 1,
+ "min": "0",
+ "max": null,
+ "format": "short",
+ "label": "RADOS Object Count",
+ "show": true
+ },
+ {
+ "logBase": 1,
+ "min": null,
+ "max": null,
+ "format": "short",
+ "show": false,
+ "label": null
+ }
+ ],
+ "xaxis": {
+ "mode": "time",
+ "buckets": null,
+ "values": [],
+ "name": null,
+ "show": true
+ },
+ "seriesOverrides": [],
+ "percentage": false,
+ "type": "graph",
+ "dashes": false,
+ "description": "Shows the Capacity within the cluster over the past 7 days",
+ "hideTimeOverride": true,
+ "dashLength": 10,
+ "stack": false,
+ "timeShift": null,
+ "aliasColors": {
+ "Raw": "#3F6833",
+ "Used": "#E0752D"
+ },
+ "lines": true,
+ "legend": {
+ "total": false,
+ "min": false,
+ "max": false,
+ "show": true,
+ "current": true,
+ "values": true,
+ "avg": false
+ },
+ "points": false,
+ "datasource": "Local",
+ "pointradius": 5,
+ "minSpan": 6,
+ "decimals": 2
+ }
+ ],
+ "showTitle": true,
+ "repeatIteration": null
+ },
+ {
+ "repeat": null,
+ "titleSize": "h5",
+ "repeatIteration": null,
+ "title": "Ceph Version Configuration",
+ "height": 250,
+ "repeatRowId": null,
+ "panels": [
+ {
+ "styles": [
+ {
+ "alias": "Time",
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "type": "date",
+ "pattern": "Time"
+ },
+ {
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "colorMode": null,
+ "thresholds": [],
+ "alias": "Version",
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 1,
+ "pattern": "Current",
+ "type": "number",
+ "unit": "short"
+ },
+ {
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Metric",
+ "thresholds": [],
+ "alias": "Host",
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 2,
+ "colorMode": null,
+ "type": "number",
+ "unit": "short"
+ },
+ {
+ "pattern": "/.*/",
+ "thresholds": [],
+ "alias": "",
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 2,
+ "colorMode": null,
+ "type": "number",
+ "unit": "short"
+ }
+ ],
+ "sort": {
+ "col": 0,
+ "desc": true
+ },
+ "timeFrom": "2m",
+ "span": 2,
+ "pageSize": 10,
+ "links": [],
+ "title": "MON Versions",
+ "timeShift": null,
+ "transform": "timeseries_aggregations",
+ "showHeader": true,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.ceph_version, 1)"
+ }
+ ],
+ "hideTimeOverride": true,
+ "fontSize": "100%",
+ "id": 75,
+ "minSpan": 2,
+ "type": "table",
+ "scroll": true,
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ]
+ },
+ {
+ "span": 1,
+ "links": [],
+ "title": "",
+ "transparent": true,
+ "content": "",
+ "mode": "markdown",
+ "minSpan": 1,
+ "type": "text",
+ "id": 79
+ },
+ {
+ "styles": [
+ {
+ "pattern": "Time",
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "type": "date",
+ "alias": "Time"
+ },
+ {
+ "type": "number",
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "colorMode": null,
+ "thresholds": [],
+ "alias": "Version",
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "pattern": "Current",
+ "decimals": 1,
+ "unit": "short"
+ },
+ {
+ "type": "number",
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Metric",
+ "thresholds": [],
+ "alias": "Host",
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "colorMode": null,
+ "decimals": 2,
+ "unit": "short"
+ },
+ {
+ "pattern": "/.*/",
+ "thresholds": [],
+ "alias": "",
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 2,
+ "colorMode": null,
+ "type": "number",
+ "unit": "short"
+ }
+ ],
+ "sort": {
+ "col": 0,
+ "desc": true
+ },
+ "timeFrom": "2m",
+ "span": 2,
+ "pageSize": 10,
+ "links": [],
+ "title": "OSD Versions",
+ "timeShift": null,
+ "transform": "timeseries_aggregations",
+ "showHeader": true,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.ceph_version, 1)"
+ }
+ ],
+ "hideTimeOverride": true,
+ "fontSize": "100%",
+ "id": 76,
+ "minSpan": 2,
+ "type": "table",
+ "scroll": true,
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ]
+ },
+ {
+ "span": 1,
+ "links": [],
+ "title": "",
+ "transparent": true,
+ "content": "",
+ "mode": "markdown",
+ "minSpan": 1,
+ "type": "text",
+ "id": 80
+ },
+ {
+ "styles": [
+ {
+ "alias": "Time",
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "type": "date",
+ "pattern": "Time"
+ },
+ {
+ "type": "number",
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Current",
+ "thresholds": [],
+ "alias": "Version",
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "colorMode": null,
+ "decimals": 1,
+ "unit": "short"
+ },
+ {
+ "type": "number",
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Metric",
+ "thresholds": [],
+ "alias": "Host",
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "colorMode": null,
+ "decimals": 2,
+ "unit": "short"
+ },
+ {
+ "type": "number",
+ "pattern": "/.*/",
+ "thresholds": [],
+ "alias": "",
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "colorMode": null,
+ "decimals": 2,
+ "unit": "short"
+ }
+ ],
+ "sort": {
+ "col": 0,
+ "desc": true
+ },
+ "timeFrom": "2m",
+ "span": 2,
+ "pageSize": 10,
+ "links": [],
+ "title": "RGW Versions",
+ "transform": "timeseries_aggregations",
+ "showHeader": true,
+ "targets": [
+ {
+ "textEditor": true,
+ "target": "aliasByNode(collectd.*.$domain.cephmetrics.gauge.$cluster_name.rgw.ceph_version, 1)",
+ "refId": "A"
+ }
+ ],
+ "hideTimeOverride": true,
+ "fontSize": "100%",
+ "id": 77,
+ "minSpan": 2,
+ "type": "table",
+ "scroll": true,
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ]
+ },
+ {
+ "span": 1,
+ "links": [],
+ "title": "",
+ "id": 81,
+ "content": "",
+ "mode": "markdown",
+ "minSpan": 1,
+ "type": "text",
+ "transparent": true
+ },
+ {
+ "styles": [
+ {
+ "pattern": "Time",
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "type": "date",
+ "alias": "Time"
+ },
+ {
+ "type": "number",
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Current",
+ "thresholds": [],
+ "alias": "Version",
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "colorMode": null,
+ "decimals": 1,
+ "unit": "short"
+ },
+ {
+ "type": "number",
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "colorMode": null,
+ "thresholds": [],
+ "alias": "Host",
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "pattern": "Metric",
+ "decimals": 2,
+ "unit": "short"
+ },
+ {
+ "pattern": "/.*/",
+ "thresholds": [],
+ "alias": "",
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 2,
+ "colorMode": null,
+ "type": "number",
+ "unit": "short"
+ }
+ ],
+ "sort": {
+ "col": 0,
+ "desc": true
+ },
+ "timeFrom": "2m",
+ "span": 2,
+ "links": [],
+ "pageSize": 10,
+ "title": "iSCSI Versions",
+ "scroll": true,
+ "transform": "timeseries_aggregations",
+ "showHeader": true,
+ "id": 78,
+ "hideTimeOverride": true,
+ "fontSize": "100%",
+ "minSpan": 2,
+ "type": "table",
+ "targets": [
+ {
+ "textEditor": true,
+ "refId": "A",
+ "target": "aliasByNode(collectd.*.$domain.cephmetrics.gauge.$cluster_name.iscsi.ceph_version, 1)"
+ }
+ ],
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ]
+ }
+ ],
+ "showTitle": true,
+ "collapse": false
+ }
+ ],
+ "templating": {
+ "list": [
+ {
+ "regex": "",
+ "current": {
+ "text": "ceph",
+ "selected": true,
+ "value": "ceph"
+ },
+ "multi": false,
+ "hide": 2,
+ "name": "cluster_name",
+ "tags": [],
+ "allValue": null,
+ "type": "query",
+ "refresh": 1,
+ "label": null,
+ "tagValuesQuery": "",
+ "sort": 0,
+ "datasource": "Local",
+ "query": "collectd.*.$domain.cephmetrics.gauge.*",
+ "useTags": false,
+ "tagsQuery": "",
+ "options": [],
+ "includeAll": false
+ },
+ {
+ "multi": false,
+ "hide": 2,
+ "name": "domain",
+ "allValue": null,
+ "label": null,
+ "current": {
+ "text": "test.lab",
+ "selected": true,
+ "value": "test.lab"
+ },
+ "query": "test.lab",
+ "type": "custom",
+ "options": [
+ {
+ "text": "test.lab",
+ "selected": true,
+ "value": "test.lab"
+ }
+ ],
+ "includeAll": false
+ }
+ ]
+ },
+ "links": [
+ {
+ "keepTime": true,
+ "tags": [
+ "overview"
+ ],
+ "title": "Shortcuts",
+ "includeVars": true,
+ "targetBlank": true,
+ "asDropdown": true,
+ "type": "dashboards",
+ "icon": "external link"
+ }
+ ],
+ "tags": [
+ "overview"
+ ],
+ "graphTooltip": 0,
+ "hideControls": true,
+ "title": "Ceph Cluster",
+ "editable": false,
+ "refresh": "10s",
+ "id": 25,
+ "gnetId": null,
+ "timepicker": {
+ "time_options": [
+ "5m",
+ "15m",
+ "1h",
+ "6h",
+ "12h",
+ "24h",
+ "2d",
+ "7d",
+ "30d"
+ ],
+ "refresh_intervals": [
+ "5s",
+ "10s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ]
+ },
+ "version": 30,
+ "time": {
+ "to": "now",
+ "from": "now-1h"
+ },
+ "timezone": "browser",
+ "schemaVersion": 14,
+ "annotations": {
+ "list": []
+ }
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "dashboard" : {
+ "templating" : {
+ "list" : [
+ {
+ "current" : {
+ "value" : "ceph",
+ "text" : "ceph",
+ "selected" : true
+ },
+ "refresh" : 1,
+ "multi" : false,
+ "sort" : 0,
+ "regex" : "",
+ "hide" : 2,
+ "includeAll" : false,
+ "tagValuesQuery" : "",
+ "tagsQuery" : "",
+ "name" : "cluster_name",
+ "datasource" : "Local",
+ "tags" : [],
+ "allValue" : null,
+ "useTags" : false,
+ "options" : [],
+ "query" : "collectd.*.$domain.cephmetrics.gauge.*",
+ "type" : "query",
+ "label" : null
+ },
+ {
+ "allValue" : null,
+ "name" : "domain",
+ "hide" : 2,
+ "includeAll" : false,
+ "current" : {
+ "selected" : true,
+ "text" : "test.lab",
+ "value" : "test.lab"
+ },
+ "multi" : false,
+ "type" : "custom",
+ "label" : null,
+ "query" : "test.lab",
+ "options" : [
+ {
+ "value" : "test.lab",
+ "selected" : true,
+ "text" : "test.lab"
+ }
+ ]
+ },
+ {
+ "current" : {
+ "value" : "$__all",
+ "selected" : true,
+ "text" : "All"
+ },
+ "includeAll" : true,
+ "hide" : 2,
+ "allValue" : null,
+ "name" : "osd_servers",
+ "options" : [
+ {
+ "selected" : true,
+ "text" : "All",
+ "value" : "$__all"
+ },
+ {
+ "text" : "ceph-1",
+ "selected" : false,
+ "value" : "ceph-1"
+ },
+ {
+ "selected" : false,
+ "text" : "ceph-2",
+ "value" : "ceph-2"
+ },
+ {
+ "value" : "ceph-3",
+ "text" : "ceph-3",
+ "selected" : false
+ }
+ ],
+ "multi" : true,
+ "label" : null,
+ "type" : "custom",
+ "query" : "ceph-1,ceph-2,ceph-3"
+ },
+ {
+ "options" : [
+ {
+ "value" : "85",
+ "selected" : true,
+ "text" : "85"
+ }
+ ],
+ "multi" : false,
+ "query" : "85",
+ "type" : "custom",
+ "label" : null,
+ "current" : {
+ "text" : "85",
+ "selected" : true,
+ "value" : "85"
+ },
+ "hide" : 2,
+ "includeAll" : false,
+ "allValue" : null,
+ "name" : "disk_full_threshold"
+ }
+ ]
+ },
+ "rows" : [
+ {
+ "height" : "70",
+ "repeat" : null,
+ "collapse" : false,
+ "repeatRowId" : null,
+ "titleSize" : "h6",
+ "repeatIteration" : null,
+ "panels" : [
+ {
+ "timeShift" : null,
+ "timeFrom" : "1m",
+ "prefixFontSize" : "50%",
+ "gauge" : {
+ "thresholdMarkers" : true,
+ "thresholdLabels" : false,
+ "show" : false,
+ "minValue" : 0,
+ "maxValue" : 100
+ },
+ "mappingTypes" : [
+ {
+ "value" : 1,
+ "name" : "value to text"
+ },
+ {
+ "name" : "range to text",
+ "value" : 2
+ }
+ ],
+ "height" : "70",
+ "postfixFontSize" : "50%",
+ "hideTimeOverride" : true,
+ "maxDataPoints" : "",
+ "rangeMaps" : [
+ {
+ "text" : "HEALTH OK",
+ "from" : "0",
+ "to" : "1"
+ },
+ {
+ "to" : "4",
+ "text" : "HEALTH WARNING",
+ "from" : "1"
+ },
+ {
+ "to" : "99",
+ "text" : "HEALTH ERROR",
+ "from" : "5"
+ },
+ {
+ "text" : "NODATA",
+ "from" : "-10",
+ "to" : "0"
+ }
+ ],
+ "format" : "none",
+ "valueMaps" : [
+ {
+ "text" : "OK",
+ "op" : "=",
+ "value" : "0"
+ },
+ {
+ "text" : "WARN",
+ "op" : "=",
+ "value" : "4"
+ },
+ {
+ "text" : "ERROR",
+ "op" : "=",
+ "value" : "8"
+ }
+ ],
+ "type" : "singlestat",
+ "cacheTimeout" : null,
+ "title" : "",
+ "targets" : [
+ {
+ "target" : "consolidateBy(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.health),\"max\")",
+ "textEditor" : true,
+ "refId" : "A"
+ }
+ ],
+ "prefix" : "",
+ "valueName" : "current",
+ "description" : "Shows the overall health of the ceph cluster. To see specific health messages hover over the annotation in the health chart below.",
+ "datasource" : "Local",
+ "colorValue" : false,
+ "colorBackground" : true,
+ "links" : [],
+ "postfix" : "",
+ "nullText" : null,
+ "minSpan" : 1,
+ "nullPointMode" : "connected",
+ "colors" : [
+ "rgba(1, 167, 1, 1)",
+ "rgba(255,165,0, 1)",
+ "rgba(255, 0, 0, 1)"
+ ],
+ "mappingType" : 2,
+ "interval" : null,
+ "id" : 76,
+ "span" : 12,
+ "valueFontSize" : "50%",
+ "thresholds" : "1,5",
+ "sparkline" : {
+ "lineColor" : "rgb(31, 120, 193)",
+ "show" : false,
+ "fillColor" : "rgba(31, 118, 189, 0.18)",
+ "full" : false
+ },
+ "tableColumn" : ""
+ }
+ ],
+ "title" : "Dashboard Row",
+ "showTitle" : false
+ },
+ {
+ "height" : "350",
+ "repeat" : null,
+ "collapse" : false,
+ "repeatRowId" : null,
+ "titleSize" : "h5",
+ "repeatIteration" : null,
+ "panels" : [
+ {
+ "xaxis" : {
+ "mode" : "time",
+ "buckets" : null,
+ "show" : true,
+ "values" : [],
+ "name" : null
+ },
+ "pointradius" : 5,
+ "thresholds" : [
+ {
+ "value" : 3,
+ "fillColor" : "rgba(222, 226, 0, 0.47)",
+ "lineColor" : "rgb(247, 172, 0)",
+ "line" : true,
+ "fill" : false,
+ "colorMode" : "custom",
+ "op" : "gt"
+ },
+ {
+ "fillColor" : "rgba(246, 3, 3, 0.5)",
+ "value" : 7,
+ "fill" : false,
+ "line" : true,
+ "op" : "gt",
+ "colorMode" : "custom",
+ "lineColor" : "rgb(203, 0, 0)"
+ }
+ ],
+ "span" : 12,
+ "dashLength" : 10,
+ "id" : 55,
+ "description" : "The chart plots the clusters health, over time. Health is depicted as a integer; 0, 4 or 8 where 0 is OK, 4 is WARN and 8 represents an ERROR state. Horizontal thresholds (drawn in yellow and red) indicate when the cluster's health transitions to 'warning' or 'error'. Annotations describing the details of the clusters health may also be shown if the \"EventURL\" setting is defined to the collectd plugin on the mon hosts.",
+ "datasource" : "Local",
+ "bars" : false,
+ "fill" : 1,
+ "yaxes" : [
+ {
+ "logBase" : 1,
+ "format" : "short",
+ "min" : "-1",
+ "show" : false,
+ "label" : "",
+ "max" : "10"
+ },
+ {
+ "format" : "short",
+ "logBase" : 1,
+ "max" : null,
+ "label" : null,
+ "show" : false,
+ "min" : null
+ }
+ ],
+ "nullPointMode" : "null",
+ "minSpan" : 3,
+ "dashes" : false,
+ "links" : [],
+ "aliasColors" : {
+ "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.health" : "#DEDAF7",
+ "Ceph Health (0:OK, 4:Warning,8:Error)" : "#DEDAF7",
+ "Ceph Health" : "#3F6833"
+ },
+ "percentage" : false,
+ "lines" : true,
+ "points" : false,
+ "tooltip" : {
+ "value_type" : "individual",
+ "shared" : false,
+ "sort" : 1
+ },
+ "steppedLine" : true,
+ "seriesOverrides" : [],
+ "title" : "Health History - Last 3 days",
+ "targets" : [
+ {
+ "target" : "alias(maxSeries(summarize(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.health,\"5min\",\"max\")), 'Ceph Health')",
+ "textEditor" : true,
+ "refId" : "A"
+ }
+ ],
+ "hideTimeOverride" : true,
+ "stack" : false,
+ "height" : "350",
+ "spaceLength" : 10,
+ "linewidth" : 2,
+ "timeFrom" : "3d",
+ "renderer" : "flot",
+ "timeShift" : null,
+ "type" : "graph",
+ "maxDataPoints" : "",
+ "legend" : {
+ "total" : false,
+ "current" : false,
+ "avg" : false,
+ "min" : false,
+ "values" : false,
+ "max" : false,
+ "show" : true
+ }
+ }
+ ],
+ "title" : "Cluster Health",
+ "showTitle" : true
+ },
+ {
+ "collapse" : false,
+ "repeatIteration" : null,
+ "titleSize" : "h5",
+ "panels" : [
+ {
+ "content" : "",
+ "transparent" : true,
+ "minSpan" : 1,
+ "type" : "text",
+ "links" : [],
+ "span" : 1,
+ "title" : "",
+ "id" : 69,
+ "mode" : "html"
+ },
+ {
+ "pageSize" : null,
+ "sort" : {
+ "desc" : false,
+ "col" : null
+ },
+ "title" : "Monitor Status",
+ "span" : 3,
+ "targets" : [
+ {
+ "target" : "aliasByNode(groupByNode(transformNull(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.mon_status.*),-1),-1,\"maxSeries\"),-1)",
+ "textEditor" : true,
+ "refId" : "B"
+ }
+ ],
+ "id" : 56,
+ "columns" : [
+ {
+ "text" : "Current",
+ "value" : "current"
+ }
+ ],
+ "showHeader" : true,
+ "scroll" : true,
+ "type" : "table",
+ "minSpan" : 2,
+ "links" : [],
+ "transform" : "timeseries_aggregations",
+ "fontSize" : "100%",
+ "maxDataPoints" : "",
+ "hideTimeOverride" : true,
+ "timeFrom" : "1m",
+ "styles" : [
+ {
+ "pattern" : "Time",
+ "alias" : "Time",
+ "dateFormat" : "YYYY-MM-DD HH:mm:ss",
+ "type" : "date"
+ },
+ {
+ "sanitize" : false,
+ "colors" : [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "pattern" : "Metric",
+ "type" : "number",
+ "thresholds" : [],
+ "unit" : "short",
+ "colorMode" : null,
+ "decimals" : 2,
+ "alias" : "Hostname",
+ "dateFormat" : "YYYY-MM-DD HH:mm:ss"
+ },
+ {
+ "thresholds" : [
+ "0",
+ "3",
+ "7"
+ ],
+ "type" : "number",
+ "alias" : "Status",
+ "dateFormat" : "YYYY-MM-DD HH:mm:ss",
+ "unit" : "short",
+ "colorMode" : "row",
+ "decimals" : 0,
+ "colors" : [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(0, 169, 3, 0.89)",
+ "rgba(249, 190, 0, 0.97)"
+ ],
+ "pattern" : "Current"
+ },
+ {
+ "type" : "number",
+ "thresholds" : [],
+ "unit" : "short",
+ "decimals" : 2,
+ "colorMode" : null,
+ "alias" : "",
+ "colors" : [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "pattern" : "/.*/"
+ }
+ ],
+ "timeShift" : null
+ },
+ {
+ "content" : "",
+ "transparent" : true,
+ "minSpan" : 2,
+ "type" : "text",
+ "links" : [],
+ "span" : 2,
+ "title" : "",
+ "id" : 68,
+ "mode" : "html"
+ },
+ {
+ "transparent" : true,
+ "content" : "<h2 style=\"text-align: center;\">Cluster Flags:</h2>",
+ "minSpan" : 1,
+ "type" : "text",
+ "id" : 58,
+ "mode" : "html",
+ "links" : [],
+ "span" : 1,
+ "title" : ""
+ },
+ {
+ "gauge" : {
+ "show" : false,
+ "minValue" : 0,
+ "maxValue" : 100,
+ "thresholdLabels" : false,
+ "thresholdMarkers" : true
+ },
+ "mappingTypes" : [
+ {
+ "name" : "value to text",
+ "value" : 1
+ },
+ {
+ "value" : 2,
+ "name" : "range to text"
+ }
+ ],
+ "height" : "95",
+ "postfixFontSize" : "50%",
+ "hideTimeOverride" : true,
+ "timeFrom" : "1m",
+ "prefixFontSize" : "50%",
+ "valueMaps" : [
+ {
+ "text" : "N/A",
+ "op" : "=",
+ "value" : "null"
+ },
+ {
+ "value" : "0",
+ "text" : "ENABLED",
+ "op" : "="
+ },
+ {
+ "value" : "1",
+ "op" : "=",
+ "text" : "ACTIVE"
+ },
+ {
+ "text" : "DISABLED",
+ "op" : "=",
+ "value" : "2"
+ }
+ ],
+ "type" : "singlestat",
+ "maxDataPoints" : "",
+ "rangeMaps" : [
+ {
+ "text" : "N/A",
+ "from" : "null",
+ "to" : "null"
+ }
+ ],
+ "format" : "none",
+ "prefix" : "",
+ "cacheTimeout" : null,
+ "title" : "SCRUB",
+ "targets" : [
+ {
+ "refId" : "A",
+ "textEditor" : true,
+ "target" : "maxSeries(consolidateBy(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.features.scrub),\"maxSeries\"))"
+ }
+ ],
+ "description" : "Scrub activity takes place daily basis across the OSD's and performs object size and attribute checks. Scrub activity can be controlled with the \"ceph osd scrub\" command.",
+ "datasource" : "Local",
+ "colorValue" : false,
+ "colorBackground" : true,
+ "valueName" : "current",
+ "nullText" : null,
+ "minSpan" : 1,
+ "nullPointMode" : "connected",
+ "links" : [],
+ "postfix" : "",
+ "colors" : [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "mappingType" : 1,
+ "interval" : null,
+ "thresholds" : "1,2",
+ "sparkline" : {
+ "lineColor" : "rgb(31, 120, 193)",
+ "fillColor" : "rgba(31, 118, 189, 0.18)",
+ "show" : false,
+ "full" : false
+ },
+ "tableColumn" : "",
+ "id" : 57,
+ "span" : 1,
+ "valueFontSize" : "40%"
+ },
+ {
+ "thresholds" : "1,2",
+ "tableColumn" : "",
+ "sparkline" : {
+ "full" : false,
+ "fillColor" : "rgba(31, 118, 189, 0.18)",
+ "show" : false,
+ "lineColor" : "rgb(31, 120, 193)"
+ },
+ "id" : 59,
+ "valueFontSize" : "40%",
+ "span" : 1,
+ "colors" : [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "interval" : null,
+ "mappingType" : 1,
+ "nullText" : null,
+ "nullPointMode" : "connected",
+ "minSpan" : 1,
+ "links" : [],
+ "postfix" : "",
+ "description" : "Deep scrub acts on the objects within placement groups (PGs). Objects are read, and checksum's compared to protect against silent bit-rot events. Although a weekly activity, in large clusters is normal to see deep-scrub active on a daily basis. Scrub activity can be controlled with the \"ceph osd scrub\" command.",
+ "datasource" : "Local",
+ "colorBackground" : true,
+ "colorValue" : false,
+ "valueName" : "current",
+ "prefix" : "",
+ "cacheTimeout" : null,
+ "title" : "DEEP SCRUB",
+ "targets" : [
+ {
+ "target" : "maxSeries(consolidateBy(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.features.deep_scrub),\"maxSeries\"))",
+ "textEditor" : true,
+ "refId" : "A"
+ }
+ ],
+ "valueMaps" : [
+ {
+ "value" : "null",
+ "text" : "N/A",
+ "op" : "="
+ },
+ {
+ "value" : "0",
+ "text" : "ENABLED",
+ "op" : "="
+ },
+ {
+ "value" : "1",
+ "text" : "ACTIVE",
+ "op" : "="
+ },
+ {
+ "value" : "2",
+ "op" : "=",
+ "text" : "DISABLED"
+ }
+ ],
+ "type" : "singlestat",
+ "rangeMaps" : [
+ {
+ "to" : "null",
+ "from" : "null",
+ "text" : "N/A"
+ }
+ ],
+ "maxDataPoints" : "",
+ "format" : "none",
+ "height" : "95",
+ "mappingTypes" : [
+ {
+ "name" : "value to text",
+ "value" : 1
+ },
+ {
+ "name" : "range to text",
+ "value" : 2
+ }
+ ],
+ "gauge" : {
+ "maxValue" : 100,
+ "show" : false,
+ "minValue" : 0,
+ "thresholdMarkers" : true,
+ "thresholdLabels" : false
+ },
+ "postfixFontSize" : "50%",
+ "hideTimeOverride" : true,
+ "prefixFontSize" : "50%",
+ "timeFrom" : "1m"
+ },
+ {
+ "colors" : [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "mappingType" : 1,
+ "interval" : null,
+ "id" : 60,
+ "valueFontSize" : "40%",
+ "span" : 1,
+ "thresholds" : "1,2",
+ "sparkline" : {
+ "lineColor" : "rgb(31, 120, 193)",
+ "show" : false,
+ "fillColor" : "rgba(31, 118, 189, 0.18)",
+ "full" : false
+ },
+ "tableColumn" : "",
+ "valueName" : "current",
+ "datasource" : "Local",
+ "description" : "With the recovery flag enabled, disruption in the cluster will result in data being recreated to freespace within the cluster to honor the pool's protection schema. Under some circumstances, you may use the norecover flag to prevent automatic recovery.",
+ "colorValue" : false,
+ "colorBackground" : true,
+ "postfix" : "",
+ "links" : [],
+ "nullText" : null,
+ "nullPointMode" : "connected",
+ "minSpan" : 1,
+ "cacheTimeout" : null,
+ "targets" : [
+ {
+ "target" : "maxSeries(consolidateBy(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.features.recovery),\"maxSeries\"))",
+ "textEditor" : true,
+ "refId" : "A"
+ }
+ ],
+ "title" : "RECOVERY",
+ "prefix" : "",
+ "timeFrom" : "1m",
+ "prefixFontSize" : "50%",
+ "gauge" : {
+ "minValue" : 0,
+ "show" : false,
+ "maxValue" : 100,
+ "thresholdMarkers" : true,
+ "thresholdLabels" : false
+ },
+ "mappingTypes" : [
+ {
+ "value" : 1,
+ "name" : "value to text"
+ },
+ {
+ "name" : "range to text",
+ "value" : 2
+ }
+ ],
+ "height" : "95",
+ "postfixFontSize" : "50%",
+ "hideTimeOverride" : true,
+ "maxDataPoints" : "",
+ "rangeMaps" : [
+ {
+ "to" : "null",
+ "from" : "null",
+ "text" : "N/A"
+ }
+ ],
+ "format" : "none",
+ "type" : "singlestat",
+ "valueMaps" : [
+ {
+ "value" : "null",
+ "op" : "=",
+ "text" : "N/A"
+ },
+ {
+ "op" : "=",
+ "text" : "ENABLED",
+ "value" : "0"
+ },
+ {
+ "op" : "=",
+ "text" : "ACTIVE",
+ "value" : "1"
+ },
+ {
+ "value" : "2",
+ "op" : "=",
+ "text" : "DISABLED"
+ }
+ ]
+ },
+ {
+ "cacheTimeout" : null,
+ "targets" : [
+ {
+ "refId" : "A",
+ "textEditor" : true,
+ "target" : "maxSeries(consolidateBy(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.features.backfill),\"maxSeries\"))"
+ }
+ ],
+ "title" : "BACKFILL",
+ "prefix" : "",
+ "maxDataPoints" : "",
+ "rangeMaps" : [
+ {
+ "to" : "null",
+ "from" : "null",
+ "text" : "N/A"
+ }
+ ],
+ "format" : "none",
+ "type" : "singlestat",
+ "valueMaps" : [
+ {
+ "op" : "=",
+ "text" : "N/A",
+ "value" : "null"
+ },
+ {
+ "op" : "=",
+ "text" : "ENABLED",
+ "value" : "0"
+ },
+ {
+ "text" : "ACTIVE",
+ "op" : "=",
+ "value" : "1"
+ },
+ {
+ "value" : "2",
+ "op" : "=",
+ "text" : "DISABLED"
+ }
+ ],
+ "timeFrom" : "1m",
+ "prefixFontSize" : "50%",
+ "gauge" : {
+ "thresholdMarkers" : true,
+ "thresholdLabels" : false,
+ "minValue" : 0,
+ "show" : false,
+ "maxValue" : 100
+ },
+ "height" : "95",
+ "mappingTypes" : [
+ {
+ "value" : 1,
+ "name" : "value to text"
+ },
+ {
+ "name" : "range to text",
+ "value" : 2
+ }
+ ],
+ "postfixFontSize" : "50%",
+ "hideTimeOverride" : true,
+ "id" : 64,
+ "span" : 1,
+ "valueFontSize" : "40%",
+ "thresholds" : "1,2",
+ "sparkline" : {
+ "lineColor" : "rgb(31, 120, 193)",
+ "show" : false,
+ "fillColor" : "rgba(31, 118, 189, 0.18)",
+ "full" : false
+ },
+ "tableColumn" : "",
+ "colors" : [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "mappingType" : 1,
+ "interval" : null,
+ "postfix" : "",
+ "links" : [],
+ "nullText" : null,
+ "nullPointMode" : "connected",
+ "minSpan" : 1,
+ "valueName" : "current",
+ "datasource" : "Local",
+ "colorValue" : false,
+ "colorBackground" : true
+ },
+ {
+ "prefix" : "",
+ "targets" : [
+ {
+ "refId" : "A",
+ "target" : "maxSeries(consolidateBy(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.features.rebalance),\"maxSeries\"))",
+ "textEditor" : true
+ }
+ ],
+ "title" : "REBALANCE",
+ "cacheTimeout" : null,
+ "postfixFontSize" : "50%",
+ "hideTimeOverride" : true,
+ "gauge" : {
+ "minValue" : 0,
+ "show" : false,
+ "maxValue" : 100,
+ "thresholdMarkers" : true,
+ "thresholdLabels" : false
+ },
+ "height" : "95",
+ "mappingTypes" : [
+ {
+ "name" : "value to text",
+ "value" : 1
+ },
+ {
+ "value" : 2,
+ "name" : "range to text"
+ }
+ ],
+ "timeFrom" : "1m",
+ "prefixFontSize" : "50%",
+ "valueMaps" : [
+ {
+ "value" : "null",
+ "op" : "=",
+ "text" : "N/A"
+ },
+ {
+ "value" : "0",
+ "text" : "ENABLED",
+ "op" : "="
+ },
+ {
+ "op" : "=",
+ "text" : "ACTIVE",
+ "value" : "1"
+ },
+ {
+ "text" : "DISABLED",
+ "op" : "=",
+ "value" : "2"
+ }
+ ],
+ "type" : "singlestat",
+ "format" : "none",
+ "maxDataPoints" : "",
+ "rangeMaps" : [
+ {
+ "text" : "N/A",
+ "from" : "null",
+ "to" : "null"
+ }
+ ],
+ "mappingType" : 1,
+ "interval" : null,
+ "colors" : [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "sparkline" : {
+ "show" : false,
+ "fillColor" : "rgba(31, 118, 189, 0.18)",
+ "full" : false,
+ "lineColor" : "rgb(31, 120, 193)"
+ },
+ "tableColumn" : "",
+ "thresholds" : "1,2",
+ "valueFontSize" : "40%",
+ "span" : 1,
+ "id" : 61,
+ "colorValue" : false,
+ "colorBackground" : true,
+ "datasource" : "Local",
+ "valueName" : "current",
+ "minSpan" : 1,
+ "nullPointMode" : "connected",
+ "nullText" : null,
+ "links" : [],
+ "postfix" : ""
+ },
+ {
+ "prefixFontSize" : "50%",
+ "timeFrom" : "1m",
+ "timeShift" : null,
+ "postfixFontSize" : "50%",
+ "hideTimeOverride" : true,
+ "height" : "95",
+ "mappingTypes" : [
+ {
+ "name" : "value to text",
+ "value" : 1
+ },
+ {
+ "value" : 2,
+ "name" : "range to text"
+ }
+ ],
+ "gauge" : {
+ "thresholdMarkers" : true,
+ "thresholdLabels" : false,
+ "maxValue" : 100,
+ "minValue" : 0,
+ "show" : false
+ },
+ "format" : "none",
+ "rangeMaps" : [
+ {
+ "to" : "null",
+ "text" : "N/A",
+ "from" : "null"
+ }
+ ],
+ "maxDataPoints" : "",
+ "type" : "singlestat",
+ "valueMaps" : [
+ {
+ "text" : "N/A",
+ "op" : "=",
+ "value" : "null"
+ },
+ {
+ "text" : "ENABLED",
+ "op" : "=",
+ "value" : "0"
+ },
+ {
+ "value" : "1",
+ "text" : "ACTIVE",
+ "op" : "="
+ },
+ {
+ "text" : "DISABLED",
+ "op" : "=",
+ "value" : "2"
+ },
+ {
+ "value" : "-1",
+ "text" : "NODATA",
+ "op" : "="
+ }
+ ],
+ "title" : "OUT",
+ "targets" : [
+ {
+ "refId" : "A",
+ "target" : "maxSeries(consolidateBy(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.features.out),\"maxSeries\"))",
+ "textEditor" : true
+ }
+ ],
+ "cacheTimeout" : null,
+ "prefix" : "",
+ "valueName" : "current",
+ "colorBackground" : true,
+ "colorValue" : false,
+ "description" : "The OUT flag setting allows the mon's to mark OSD's as out of the configuration when they stop sending hearbeats to the mon's. By marking them OUT, recovery takes place. However, for planned maintenance you can set the cluster to noout to disable this behavior.",
+ "datasource" : "Local",
+ "postfix" : "",
+ "links" : [],
+ "nullPointMode" : "connected",
+ "minSpan" : 1,
+ "nullText" : null,
+ "interval" : null,
+ "mappingType" : 1,
+ "colors" : [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "span" : 1,
+ "valueFontSize" : "40%",
+ "id" : 62,
+ "tableColumn" : "",
+ "sparkline" : {
+ "lineColor" : "rgb(31, 120, 193)",
+ "full" : false,
+ "show" : false,
+ "fillColor" : "rgba(31, 118, 189, 0.18)"
+ },
+ "thresholds" : "1,2"
+ },
+ {
+ "sparkline" : {
+ "full" : false,
+ "fillColor" : "rgba(31, 118, 189, 0.18)",
+ "show" : false,
+ "lineColor" : "rgb(31, 120, 193)"
+ },
+ "tableColumn" : "",
+ "thresholds" : "1,2",
+ "span" : 1,
+ "valueFontSize" : "40%",
+ "id" : 63,
+ "mappingType" : 1,
+ "interval" : null,
+ "colors" : [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "minSpan" : 1,
+ "nullPointMode" : "connected",
+ "nullText" : null,
+ "postfix" : "",
+ "links" : [],
+ "colorValue" : false,
+ "colorBackground" : true,
+ "description" : "The down feature allows OSD's to mark their peers as DOWN when they are not reachable. However, if there is a poor network or planned outages, you may want to set this flag to nodown to prevent OSD's flapping between up/down states",
+ "datasource" : "Local",
+ "valueName" : "current",
+ "prefix" : "",
+ "targets" : [
+ {
+ "refId" : "A",
+ "target" : "maxSeries(consolidateBy(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.features.down),\"maxSeries\"))",
+ "textEditor" : true
+ }
+ ],
+ "title" : "DOWN",
+ "cacheTimeout" : null,
+ "valueMaps" : [
+ {
+ "value" : "null",
+ "text" : "N/A",
+ "op" : "="
+ },
+ {
+ "value" : "0",
+ "text" : "ENABLED",
+ "op" : "="
+ },
+ {
+ "value" : "1",
+ "op" : "=",
+ "text" : "ACTIVE"
+ },
+ {
+ "text" : "DISABLED",
+ "op" : "=",
+ "value" : "2"
+ }
+ ],
+ "type" : "singlestat",
+ "format" : "none",
+ "maxDataPoints" : "",
+ "rangeMaps" : [
+ {
+ "from" : "null",
+ "text" : "N/A",
+ "to" : "null"
+ }
+ ],
+ "postfixFontSize" : "50%",
+ "hideTimeOverride" : true,
+ "gauge" : {
+ "thresholdLabels" : false,
+ "thresholdMarkers" : true,
+ "maxValue" : 100,
+ "minValue" : 0,
+ "show" : false
+ },
+ "height" : "95",
+ "mappingTypes" : [
+ {
+ "name" : "value to text",
+ "value" : 1
+ },
+ {
+ "value" : 2,
+ "name" : "range to text"
+ }
+ ],
+ "timeFrom" : "1m",
+ "prefixFontSize" : "50%",
+ "timeShift" : null
+ }
+ ],
+ "repeatRowId" : null,
+ "title" : "Cluster State",
+ "showTitle" : true,
+ "height" : "200",
+ "repeat" : null
+ },
+ {
+ "repeat" : null,
+ "height" : 250,
+ "collapse" : false,
+ "showTitle" : true,
+ "title" : "Storage Information",
+ "repeatRowId" : null,
+ "panels" : [
+ {
+ "scroll" : true,
+ "showHeader" : true,
+ "styles" : [
+ {
+ "pattern" : "Time",
+ "alias" : "Time",
+ "dateFormat" : "YYYY-MM-DD HH:mm:ss",
+ "type" : "date"
+ },
+ {
+ "colors" : [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "pattern" : "Current",
+ "thresholds" : [],
+ "type" : "hidden",
+ "alias" : "% Full",
+ "dateFormat" : "YYYY-MM-DD HH:mm:ss",
+ "unit" : "none",
+ "decimals" : 0,
+ "colorMode" : null
+ },
+ {
+ "colors" : [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "pattern" : "Metric",
+ "dateFormat" : "YYYY-MM-DD HH:mm:ss",
+ "alias" : "Host.OSD Id",
+ "unit" : "short",
+ "decimals" : 2,
+ "colorMode" : null,
+ "thresholds" : [],
+ "type" : "number"
+ },
+ {
+ "pattern" : "/.*/",
+ "colors" : [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "alias" : "",
+ "colorMode" : null,
+ "decimals" : 2,
+ "unit" : "short",
+ "thresholds" : [],
+ "type" : "number"
+ }
+ ],
+ "columns" : [
+ {
+ "value" : "current",
+ "text" : "Current"
+ }
+ ],
+ "transform" : "timeseries_aggregations",
+ "id" : 75,
+ "fontSize" : "100%",
+ "title" : "Disks Near Full",
+ "span" : 1,
+ "targets" : [
+ {
+ "refId" : "A",
+ "textEditor" : true,
+ "target" : "aliasByNode(currentAbove(transformNull(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.osd_percent_used),0),$disk_full_threshold),1,-2)"
+ }
+ ],
+ "links" : [],
+ "sort" : {
+ "desc" : true,
+ "col" : 0
+ },
+ "type" : "table",
+ "pageSize" : null,
+ "minSpan" : 1
+ },
+ {
+ "scroll" : true,
+ "showHeader" : true,
+ "columns" : [
+ {
+ "text" : "Current",
+ "value" : "current"
+ }
+ ],
+ "id" : 71,
+ "title" : "OSD's Down",
+ "span" : 1,
+ "targets" : [
+ {
+ "target" : "currentBelow(groupByNode(transformNull(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.osd_state.*.up,99),-2,\"maxSeries\"),0.5)",
+ "textEditor" : true,
+ "refId" : "B",
+ "hide" : false
+ }
+ ],
+ "sort" : {
+ "col" : null,
+ "desc" : false
+ },
+ "pageSize" : 100,
+ "timeShift" : null,
+ "styles" : [
+ {
+ "type" : "number",
+ "thresholds" : [
+ ""
+ ],
+ "decimals" : 0,
+ "colorMode" : null,
+ "unit" : "short",
+ "dateFormat" : "YYYY-MM-DD HH:mm:ss",
+ "alias" : "OSD Id",
+ "sanitize" : false,
+ "pattern" : "Metric",
+ "colors" : [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ]
+ },
+ {
+ "pattern" : "Current",
+ "colors" : [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "thresholds" : [
+ "0"
+ ],
+ "type" : "hidden",
+ "alias" : "Status",
+ "dateFormat" : "YYYY-MM-DD HH:mm:ss",
+ "colorMode" : "cell",
+ "decimals" : 0,
+ "unit" : "short"
+ }
+ ],
+ "timeFrom" : "1m",
+ "hideTimeOverride" : true,
+ "fontSize" : "100%",
+ "transform" : "timeseries_aggregations",
+ "links" : [],
+ "minSpan" : 1,
+ "type" : "table"
+ },
+ {
+ "fontSize" : "100%",
+ "transform" : "timeseries_aggregations",
+ "links" : [],
+ "minSpan" : 1,
+ "type" : "table",
+ "timeShift" : null,
+ "styles" : [
+ {
+ "pattern" : "Time",
+ "alias" : "Time",
+ "dateFormat" : "YYYY-MM-DD HH:mm:ss",
+ "type" : "date"
+ },
+ {
+ "pattern" : "Current",
+ "colors" : [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "colorMode" : null,
+ "decimals" : 0,
+ "unit" : "none",
+ "alias" : "",
+ "dateFormat" : "YYYY-MM-DD HH:mm:ss",
+ "type" : "hidden",
+ "thresholds" : []
+ },
+ {
+ "type" : "number",
+ "thresholds" : [],
+ "unit" : "short",
+ "decimals" : 2,
+ "colorMode" : null,
+ "alias" : "OSD Id",
+ "dateFormat" : "YYYY-MM-DD HH:mm:ss",
+ "colors" : [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "pattern" : "Metric"
+ },
+ {
+ "colors" : [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "pattern" : "/.*/",
+ "thresholds" : [],
+ "type" : "number",
+ "alias" : "",
+ "unit" : "short",
+ "colorMode" : null,
+ "decimals" : 2
+ }
+ ],
+ "timeFrom" : "5m",
+ "hideTimeOverride" : true,
+ "id" : 74,
+ "title" : "OSDs Out",
+ "targets" : [
+ {
+ "hide" : false,
+ "refId" : "B",
+ "target" : "currentBelow(groupByNode(transformNull(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.osd_state.*.in,99),-2,\"minSeries\"),0.5)",
+ "textEditor" : true
+ }
+ ],
+ "span" : 1,
+ "sort" : {
+ "desc" : true,
+ "col" : 0
+ },
+ "pageSize" : null,
+ "scroll" : true,
+ "showHeader" : true,
+ "columns" : [
+ {
+ "value" : "current",
+ "text" : "Current"
+ }
+ ]
+ },
+ {
+ "minSpan" : 1,
+ "type" : "text",
+ "links" : [],
+ "title" : "",
+ "span" : 1,
+ "id" : 73,
+ "mode" : "html",
+ "content" : "",
+ "transparent" : true
+ },
+ {
+ "title" : "Object Summary",
+ "span" : 4,
+ "targets" : [
+ {
+ "select" : [
+ [
+ {
+ "params" : [
+ "value"
+ ],
+ "type" : "field"
+ },
+ {
+ "type" : "mean",
+ "params" : []
+ }
+ ]
+ ],
+ "textEditor" : true,
+ "target" : "alias(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.num_object), 'Total Objects')",
+ "groupBy" : [
+ {
+ "params" : [
+ "$__interval"
+ ],
+ "type" : "time"
+ },
+ {
+ "params" : [
+ "null"
+ ],
+ "type" : "fill"
+ }
+ ],
+ "policy" : "default",
+ "dsType" : "influxdb",
+ "refId" : "A",
+ "alias" : "Objects",
+ "tags" : [],
+ "resultFormat" : "time_series",
+ "measurement" : "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_object"
+ },
+ {
+ "tags" : [],
+ "resultFormat" : "time_series",
+ "measurement" : "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_object",
+ "select" : [
+ [
+ {
+ "type" : "field",
+ "params" : [
+ "value"
+ ]
+ },
+ {
+ "params" : [],
+ "type" : "mean"
+ }
+ ]
+ ],
+ "textEditor" : true,
+ "dsType" : "influxdb",
+ "groupBy" : [
+ {
+ "params" : [
+ "$__interval"
+ ],
+ "type" : "time"
+ },
+ {
+ "params" : [
+ "null"
+ ],
+ "type" : "fill"
+ }
+ ],
+ "policy" : "default",
+ "target" : "alias(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.num_object_degraded), 'Objects degraded')",
+ "refId" : "B",
+ "alias" : "Objects"
+ },
+ {
+ "resultFormat" : "time_series",
+ "measurement" : "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_object",
+ "tags" : [],
+ "refId" : "C",
+ "alias" : "Objects",
+ "target" : "alias(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.num_object_misplaced), 'Objects misplaced')",
+ "policy" : "default",
+ "dsType" : "influxdb",
+ "groupBy" : [
+ {
+ "params" : [
+ "$__interval"
+ ],
+ "type" : "time"
+ },
+ {
+ "params" : [
+ "null"
+ ],
+ "type" : "fill"
+ }
+ ],
+ "select" : [
+ [
+ {
+ "type" : "field",
+ "params" : [
+ "value"
+ ]
+ },
+ {
+ "type" : "mean",
+ "params" : []
+ }
+ ]
+ ],
+ "textEditor" : true
+ },
+ {
+ "alias" : "Objects",
+ "refId" : "D",
+ "groupBy" : [
+ {
+ "type" : "time",
+ "params" : [
+ "$__interval"
+ ]
+ },
+ {
+ "params" : [
+ "null"
+ ],
+ "type" : "fill"
+ }
+ ],
+ "policy" : "default",
+ "dsType" : "influxdb",
+ "target" : "alias(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.num_object_unfound), 'Objects unfound')",
+ "textEditor" : true,
+ "select" : [
+ [
+ {
+ "params" : [
+ "value"
+ ],
+ "type" : "field"
+ },
+ {
+ "params" : [],
+ "type" : "mean"
+ }
+ ]
+ ],
+ "resultFormat" : "time_series",
+ "measurement" : "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_object",
+ "tags" : []
+ }
+ ],
+ "id" : 10,
+ "pageSize" : null,
+ "sort" : {
+ "desc" : false,
+ "col" : null
+ },
+ "showHeader" : true,
+ "scroll" : true,
+ "columns" : [
+ {
+ "text" : "Current",
+ "value" : "current"
+ }
+ ],
+ "filterNull" : false,
+ "links" : [],
+ "transform" : "timeseries_aggregations",
+ "fontSize" : "100%",
+ "type" : "table",
+ "minSpan" : 3,
+ "styles" : [
+ {
+ "type" : "date",
+ "pattern" : "Time",
+ "dateFormat" : "YYYY-MM-DD HH:mm:ss"
+ },
+ {
+ "thresholds" : [],
+ "type" : "number",
+ "dateFormat" : "YYYY-MM-DD HH:mm:ss",
+ "alias" : "Object State",
+ "unit" : "short",
+ "decimals" : 2,
+ "colorMode" : null,
+ "colors" : [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "pattern" : "Metric"
+ },
+ {
+ "type" : "number",
+ "thresholds" : [],
+ "unit" : "none",
+ "decimals" : 0,
+ "colorMode" : null,
+ "alias" : "Count",
+ "dateFormat" : "YYYY-MM-DD HH:mm:ss",
+ "colors" : [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "pattern" : "Current"
+ },
+ {
+ "thresholds" : [],
+ "type" : "number",
+ "pattern" : "/.*/",
+ "colors" : [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "colorMode" : null,
+ "decimals" : 0,
+ "unit" : "none"
+ }
+ ],
+ "datasource" : "Local"
+ },
+ {
+ "minSpan" : 1,
+ "type" : "text",
+ "links" : [],
+ "span" : 1,
+ "title" : "",
+ "id" : 67,
+ "mode" : "markdown",
+ "content" : "",
+ "transparent" : true
+ },
+ {
+ "minSpan" : 3,
+ "type" : "table",
+ "fontSize" : "100%",
+ "transform" : "timeseries_aggregations",
+ "links" : [],
+ "datasource" : "Local",
+ "styles" : [
+ {
+ "pattern" : "Time",
+ "dateFormat" : "YYYY-MM-DD HH:mm:ss",
+ "type" : "date"
+ },
+ {
+ "decimals" : 2,
+ "colorMode" : null,
+ "unit" : "short",
+ "dateFormat" : "YYYY-MM-DD HH:mm:ss",
+ "alias" : "PG State",
+ "type" : "number",
+ "thresholds" : [],
+ "pattern" : "Metric",
+ "colors" : [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ]
+ },
+ {
+ "colors" : [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "pattern" : "Current",
+ "alias" : "Count",
+ "dateFormat" : "YYYY-MM-DD HH:mm:ss",
+ "unit" : "none",
+ "decimals" : 0,
+ "colorMode" : null,
+ "thresholds" : [],
+ "type" : "number"
+ },
+ {
+ "thresholds" : [],
+ "type" : "number",
+ "colors" : [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "pattern" : "/.*/",
+ "unit" : "none",
+ "colorMode" : null,
+ "decimals" : 0
+ }
+ ],
+ "sort" : {
+ "desc" : false,
+ "col" : null
+ },
+ "pageSize" : null,
+ "id" : 13,
+ "span" : 3,
+ "title" : "PG Summary",
+ "targets" : [
+ {
+ "tags" : [],
+ "measurement" : "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_pg",
+ "resultFormat" : "time_series",
+ "textEditor" : true,
+ "select" : [
+ [
+ {
+ "params" : [
+ "value"
+ ],
+ "type" : "field"
+ },
+ {
+ "params" : [],
+ "type" : "mean"
+ }
+ ]
+ ],
+ "dsType" : "influxdb",
+ "policy" : "default",
+ "groupBy" : [
+ {
+ "type" : "time",
+ "params" : [
+ "$__interval"
+ ]
+ },
+ {
+ "params" : [
+ "null"
+ ],
+ "type" : "fill"
+ }
+ ],
+ "target" : "alias(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.num_pg), 'PGs')",
+ "refId" : "A",
+ "alias" : "PG's"
+ },
+ {
+ "target" : "alias(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.num_pg_active), 'Active PGs')",
+ "policy" : "default",
+ "dsType" : "influxdb",
+ "groupBy" : [
+ {
+ "type" : "time",
+ "params" : [
+ "$__interval"
+ ]
+ },
+ {
+ "type" : "fill",
+ "params" : [
+ "null"
+ ]
+ }
+ ],
+ "textEditor" : true,
+ "select" : [
+ [
+ {
+ "params" : [
+ "value"
+ ],
+ "type" : "field"
+ },
+ {
+ "params" : [],
+ "type" : "mean"
+ }
+ ]
+ ],
+ "refId" : "B",
+ "alias" : "PG's",
+ "tags" : [],
+ "measurement" : "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_pg",
+ "resultFormat" : "time_series"
+ },
+ {
+ "tags" : [],
+ "resultFormat" : "time_series",
+ "measurement" : "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_pg",
+ "select" : [
+ [
+ {
+ "params" : [
+ "value"
+ ],
+ "type" : "field"
+ },
+ {
+ "params" : [],
+ "type" : "mean"
+ }
+ ]
+ ],
+ "textEditor" : true,
+ "target" : "alias(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.num_pg_active_clean), 'Active+clean PGs')",
+ "dsType" : "influxdb",
+ "policy" : "default",
+ "groupBy" : [
+ {
+ "params" : [
+ "$__interval"
+ ],
+ "type" : "time"
+ },
+ {
+ "type" : "fill",
+ "params" : [
+ "null"
+ ]
+ }
+ ],
+ "refId" : "C",
+ "alias" : "PG's"
+ },
+ {
+ "resultFormat" : "time_series",
+ "measurement" : "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_pg",
+ "tags" : [],
+ "alias" : "PG's",
+ "refId" : "D",
+ "textEditor" : true,
+ "select" : [
+ [
+ {
+ "type" : "field",
+ "params" : [
+ "value"
+ ]
+ },
+ {
+ "params" : [],
+ "type" : "mean"
+ }
+ ]
+ ],
+ "groupBy" : [
+ {
+ "type" : "time",
+ "params" : [
+ "$__interval"
+ ]
+ },
+ {
+ "params" : [
+ "null"
+ ],
+ "type" : "fill"
+ }
+ ],
+ "dsType" : "influxdb",
+ "policy" : "default",
+ "target" : "alias(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.num_pg_peering), 'PGs peering')"
+ }
+ ],
+ "filterNull" : false,
+ "columns" : [
+ {
+ "value" : "current",
+ "text" : "Current"
+ }
+ ],
+ "scroll" : true,
+ "showHeader" : true
+ }
+ ],
+ "titleSize" : "h5",
+ "repeatIteration" : null
+ }
+ ],
+ "hideControls" : true,
+ "title" : "Ceph Health",
+ "timepicker" : {
+ "refresh_intervals" : [
+ "5s",
+ "10s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ],
+ "time_options" : [
+ "5m",
+ "15m",
+ "1h",
+ "6h",
+ "12h",
+ "24h",
+ "2d",
+ "7d",
+ "30d"
+ ]
+ },
+ "id" : 29,
+ "annotations" : {
+ "list" : [
+ {
+ "type" : "alert",
+ "iconColor" : "rgba(255, 96, 96, 1)",
+ "showIn" : 0,
+ "enable" : true,
+ "datasource" : "Local",
+ "tags" : "health_alert",
+ "name" : "health_alert",
+ "limit" : 100,
+ "hide" : false
+ },
+ {
+ "datasource" : "Local",
+ "tags" : "health_ok",
+ "enable" : true,
+ "name" : "health_ok",
+ "limit" : 100,
+ "hide" : false,
+ "type" : "alert",
+ "iconColor" : "rgb(1, 195, 0)",
+ "showIn" : 0
+ }
+ ]
+ },
+ "schemaVersion" : 14,
+ "timezone" : "browser",
+ "graphTooltip" : 0,
+ "refresh" : "10s",
+ "version" : 43,
+ "editable" : false,
+ "links" : [
+ {
+ "keepTime" : true,
+ "tags" : [
+ "overview"
+ ],
+ "includeVars" : true,
+ "asDropdown" : true,
+ "targetBlank" : true,
+ "icon" : "external link",
+ "title" : "Shortcuts",
+ "type" : "dashboards"
+ }
+ ],
+ "style" : "dark",
+ "time" : {
+ "to" : "now",
+ "from" : "now-1h"
+ },
+ "gnetId" : null,
+ "tags" : [
+ "overview"
+ ]
+ },
+ "meta" : {
+ "updatedBy" : "admin",
+ "canEdit" : true,
+ "createdBy" : "admin",
+ "type" : "db",
+ "canSave" : true,
+ "updated" : "2017-08-21T03:34:51Z",
+ "expires" : "0001-01-01T00:00:00Z",
+ "canStar" : true,
+ "version" : 43,
+ "created" : "2017-08-08T03:07:37Z",
+ "slug" : "ceph-health"
+ }
+}
--- /dev/null
+{
+ "dashboard": {
+ "annotations": {
+ "list": []
+ },
+ "editable": false,
+ "gnetId": null,
+ "graphTooltip": 0,
+ "hideControls": true,
+ "id": 67,
+ "links": [
+ {
+ "asDropdown": true,
+ "icon": "external link",
+ "tags": [
+ "overview"
+ ],
+ "title": "Shortcuts",
+ "type": "dashboards"
+ }
+ ],
+ "refresh": "10s",
+ "rows": [
+ {
+ "collapse": false,
+ "height": "220px",
+ "panels": [
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "Local",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "hideTimeOverride": true,
+ "id": 11,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": "",
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "refId": "A",
+ "target": "keepLastValue(consolidateBy(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.num_osd), \"max\"))",
+ "textEditor": true
+ }
+ ],
+ "thresholds": "",
+ "timeFrom": "1m",
+ "title": "OSDs",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "avg"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "Local",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "hideTimeOverride": true,
+ "id": 12,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "refId": "A",
+ "target": "keepLastValue(consolidateBy(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.num_osd_up),\"max\"))",
+ "textEditor": true
+ }
+ ],
+ "thresholds": "",
+ "timeFrom": "1m",
+ "title": "OSDs UP",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "avg"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": true,
+ "colorValue": false,
+ "colors": [
+ "rgba(251,251,251,0.97)",
+ "rgba(255,165,0, 1)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "datasource": "Local",
+ "decimals": 0,
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "hideTimeOverride": true,
+ "id": 16,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "hide": true,
+ "refId": "A",
+ "target": "keepLastValue(consolidateBy(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.num_osd_up),\"max\"))",
+ "textEditor": true
+ },
+ {
+ "hide": true,
+ "refId": "B",
+ "target": "keepLastValue(consolidateBy(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.num_osd), \"max\"))",
+ "textEditor": true
+ },
+ {
+ "refId": "C",
+ "target": "diffSeries(#B,#A)",
+ "targetFull": "diffSeries(keepLastValue(consolidateBy(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.num_osd), \"max\")),keepLastValue(consolidateBy(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.num_osd_up),\"max\")))",
+ "textEditor": true
+ }
+ ],
+ "thresholds": "1,3",
+ "timeFrom": "1m",
+ "title": "OSDs DOWN",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "aliasColors": {},
+ "cacheTimeout": null,
+ "combine": {
+ "label": "Others",
+ "threshold": 0
+ },
+ "datasource": "Local",
+ "description": "The pie chart shows the various disk sizes used within the cluster",
+ "fontSize": "80%",
+ "format": "none",
+ "height": "220",
+ "hideTimeOverride": true,
+ "id": 13,
+ "interval": null,
+ "legend": {
+ "percentage": false,
+ "show": true,
+ "sortDesc": true,
+ "values": true
+ },
+ "legendType": "Right side",
+ "links": [],
+ "maxDataPoints": "",
+ "minSpan": 3,
+ "nullPointMode": "connected",
+ "pieType": "pie",
+ "span": 3,
+ "strokeWidth": "1",
+ "targets": [
+ {
+ "hide": true,
+ "refId": "A",
+ "target": "currentAbove(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.stat_bytes),0)",
+ "textEditor": true
+ },
+ {
+ "hide": true,
+ "refId": "B",
+ "target": "alias(currentBelow(#A,1099511627776),\"<1TB\")",
+ "targetFull": "alias(currentBelow(currentAbove(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.stat_bytes),0),1099511627776),\"<1TB\")",
+ "textEditor": true
+ },
+ {
+ "hide": true,
+ "refId": "C",
+ "target": "alias(currentBelow(currentAbove(#A,1099511627776),2199023255552),\"2TB\")",
+ "targetFull": "alias(currentBelow(currentAbove(currentAbove(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.stat_bytes),0),1099511627776),2199023255552),\"2TB\")",
+ "textEditor": true
+ },
+ {
+ "hide": true,
+ "refId": "Q",
+ "target": "alias(currentBelow(currentAbove(#A,2199023255552),3298534883328),\"3TB\")",
+ "targetFull": "alias(currentBelow(currentAbove(currentAbove(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.stat_bytes),0),2199023255552),3298534883328),\"3TB\")",
+ "textEditor": true
+ },
+ {
+ "hide": true,
+ "refId": "D",
+ "target": "alias(currentBelow(currentAbove(#A,3298534883328),4398046511104),\"4TB\")",
+ "targetFull": "alias(currentBelow(currentAbove(currentAbove(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.stat_bytes),0),3298534883328),4398046511104),\"4TB\")",
+ "textEditor": true
+ },
+ {
+ "hide": true,
+ "refId": "E",
+ "target": "alias(currentBelow(currentAbove(#A,4398046511104),6597069766656),\"6TB\")",
+ "targetFull": "alias(currentBelow(currentAbove(currentAbove(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.stat_bytes),0),4398046511104),6597069766656),\"6TB\")",
+ "textEditor": true
+ },
+ {
+ "hide": true,
+ "refId": "F",
+ "target": "alias(currentBelow(currentAbove(#A,6597069766656),8796093022208),\"8TB\")",
+ "targetFull": "alias(currentBelow(currentAbove(currentAbove(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.stat_bytes),0),6597069766656),8796093022208),\"8TB\")",
+ "textEditor": true
+ },
+ {
+ "hide": true,
+ "refId": "G",
+ "target": "alias(currentBelow(currentAbove(#A,8796093022208),10995116277760),\"10TB\")",
+ "targetFull": "alias(currentBelow(currentAbove(currentAbove(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.stat_bytes),0),8796093022208),10995116277760),\"10TB\")",
+ "textEditor": true
+ },
+ {
+ "hide": true,
+ "refId": "H",
+ "target": "alias(currentBelow(currentAbove(#A,10995116277760),13194139533312),\"12TB\")",
+ "targetFull": "alias(currentBelow(currentAbove(currentAbove(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.stat_bytes),0),10995116277760),13194139533312),\"12TB\")",
+ "textEditor": true
+ },
+ {
+ "refId": "I",
+ "target": "alias(countSeries(#B), \"<1TB\")",
+ "targetFull": "alias(countSeries(alias(currentBelow(currentAbove(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.stat_bytes),0),1099511627776),\"<1TB\")), \"<1TB\")",
+ "textEditor": true
+ },
+ {
+ "refId": "J",
+ "target": "alias(countSeries(#C), \"2TB\")",
+ "targetFull": "alias(countSeries(alias(currentBelow(currentAbove(currentAbove(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.stat_bytes),0),1099511627776),2199023255552),\"2TB\")), \"2TB\")",
+ "textEditor": true
+ },
+ {
+ "refId": "K",
+ "target": "alias(countSeries(#D), \"4TB\")",
+ "targetFull": "alias(countSeries(alias(currentBelow(currentAbove(currentAbove(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.stat_bytes),0),3298534883328),4398046511104),\"4TB\")), \"4TB\")",
+ "textEditor": true
+ },
+ {
+ "refId": "L",
+ "target": "alias(countSeries(#E), \"6TB\")",
+ "targetFull": "alias(countSeries(alias(currentBelow(currentAbove(currentAbove(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.stat_bytes),0),4398046511104),6597069766656),\"6TB\")), \"6TB\")",
+ "textEditor": true
+ },
+ {
+ "refId": "M",
+ "target": "alias(countSeries(#F), \"8TB\")",
+ "targetFull": "alias(countSeries(alias(currentBelow(currentAbove(currentAbove(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.stat_bytes),0),6597069766656),8796093022208),\"8TB\")), \"8TB\")",
+ "textEditor": true
+ },
+ {
+ "refId": "N",
+ "target": "alias(countSeries(#G), \"10TB\")",
+ "targetFull": "alias(countSeries(alias(currentBelow(currentAbove(currentAbove(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.stat_bytes),0),8796093022208),10995116277760),\"10TB\")), \"10TB\")",
+ "textEditor": true
+ },
+ {
+ "refId": "O",
+ "target": "alias(countSeries(#H), \"12TB\")",
+ "targetFull": "alias(countSeries(alias(currentBelow(currentAbove(currentAbove(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.stat_bytes),0),10995116277760),13194139533312),\"12TB\")), \"12TB\")",
+ "textEditor": true
+ },
+ {
+ "refId": "P",
+ "target": "alias(countSeries(#Q), \"3TB\")",
+ "targetFull": "alias(countSeries(alias(currentBelow(currentAbove(currentAbove(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.stat_bytes),0),2199023255552),3298534883328),\"3TB\")), \"3TB\")",
+ "textEditor": true
+ }
+ ],
+ "timeFrom": "2m",
+ "timeShift": null,
+ "title": "OSD Disk Size Summary",
+ "type": "grafana-piechart-panel",
+ "valueName": "current"
+ },
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "fontSize": "100%",
+ "hideTimeOverride": true,
+ "id": 18,
+ "links": [],
+ "maxDataPoints": "",
+ "minSpan": 2,
+ "pageSize": 50,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": 0,
+ "desc": false
+ },
+ "span": 2,
+ "styles": [
+ {
+ "alias": "Time",
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Time",
+ "type": "date"
+ },
+ {
+ "alias": "Disk Size",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 0,
+ "pattern": "Current",
+ "thresholds": [],
+ "type": "number",
+ "unit": "decbytes"
+ },
+ {
+ "alias": "Hostname.OSD Id",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "Metric",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ },
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 2,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(currentAbove(transformNull(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.$osd_id.stat_bytes),0),1),1,-2)",
+ "textEditor": true
+ }
+ ],
+ "timeFrom": "1m",
+ "timeShift": null,
+ "title": "OSD Size",
+ "transform": "timeseries_aggregations",
+ "type": "table"
+ },
+ {
+ "aliasColors": {
+ "Non-Encrypted": "#E5AC0E"
+ },
+ "cacheTimeout": null,
+ "combine": {
+ "label": "Others",
+ "threshold": 0
+ },
+ "datasource": null,
+ "fontSize": "80%",
+ "format": "none",
+ "height": "200px",
+ "hideTimeOverride": true,
+ "id": 19,
+ "interval": null,
+ "legend": {
+ "percentage": false,
+ "show": true,
+ "values": true
+ },
+ "legendType": "Under graph",
+ "links": [],
+ "maxDataPoints": "1",
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "pieType": "pie",
+ "span": 2,
+ "strokeWidth": 1,
+ "targets": [
+ {
+ "hide": true,
+ "refId": "C",
+ "target": "currentAbove(transformNull(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.encrypted),-1),0)",
+ "textEditor": true
+ },
+ {
+ "hide": false,
+ "refId": "D",
+ "target": "alias(countSeries(currentAbove(#C,0.5)),\"Encrypted\")",
+ "targetFull": "alias(countSeries(currentAbove(currentAbove(transformNull(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.encrypted),-1),0),0.5)),\"Encrypted\")",
+ "textEditor": true
+ },
+ {
+ "refId": "E",
+ "target": "alias(countSeries(currentBelow(#C,0.5)),\"Non-Encrypted\")",
+ "targetFull": "alias(countSeries(currentBelow(currentAbove(transformNull(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.encrypted),-1),0),0.5)),\"Non-Encrypted\")",
+ "textEditor": true
+ }
+ ],
+ "timeFrom": "2m",
+ "timeShift": null,
+ "title": "OSD Encryption Summary",
+ "type": "grafana-piechart-panel",
+ "valueName": "current"
+ },
+ {
+ "aliasColors": {
+ "Non-Encrypted": "#E5AC0E"
+ },
+ "cacheTimeout": null,
+ "combine": {
+ "label": "Others",
+ "threshold": 0
+ },
+ "datasource": null,
+ "fontSize": "80%",
+ "format": "none",
+ "height": "200px",
+ "hideTimeOverride": true,
+ "id": 20,
+ "interval": null,
+ "legend": {
+ "percentage": false,
+ "show": true,
+ "values": true
+ },
+ "legendType": "Under graph",
+ "links": [],
+ "maxDataPoints": "1",
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "pieType": "pie",
+ "span": 2,
+ "strokeWidth": 1,
+ "targets": [
+ {
+ "hide": true,
+ "refId": "C",
+ "target": "currentAbove(transformNull(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.$osd_id_hidden.osd_type),-1),0)",
+ "textEditor": true
+ },
+ {
+ "hide": false,
+ "refId": "D",
+ "target": "alias(countSeries(currentAbove(#C,0.5)), \"Bluestore\")",
+ "targetFull": "alias(countSeries(currentAbove(currentAbove(transformNull(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.$osd_id_hidden.osd_type),-1),0),0.5)), \"Bluestore\")",
+ "textEditor": true
+ },
+ {
+ "hide": false,
+ "refId": "E",
+ "target": "alias(countSeries(currentBelow(#C,0.5)), \"Filestore\")",
+ "targetFull": "alias(countSeries(currentBelow(currentAbove(transformNull(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.$osd_id_hidden.osd_type),-1),0),0.5)), \"Filestore\")",
+ "textEditor": true
+ }
+ ],
+ "timeFrom": "2m",
+ "timeShift": null,
+ "title": "Summary of OSD Types",
+ "type": "grafana-piechart-panel",
+ "valueName": "current"
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "OSD Summary",
+ "titleSize": "h5"
+ },
+ {
+ "collapse": true,
+ "height": "500",
+ "panels": [
+ {
+ "content": "<h1>Ceph Filestore I/O Process</h1>\n<p style=\"text-align: justify;\">\nA write request is first committed to a journal using direct-io (<i><b>apply</b></i>). Once this write is complete, the data is persisted to HDD by a second 'buffered' write operation (<i><b>commit</b></i>). The commit operation is basically a measure of time taken to perform a <i>syncfs</i> call to flush dirty pages to disk, and is therefore <b>not</b> a time associated with any specific client initiated operation.<p> The tables on the right show the top 10 OSDs with the highest latencies.\n",
+ "height": "300",
+ "id": 10,
+ "links": [],
+ "minSpan": 3,
+ "mode": "html",
+ "span": 3,
+ "title": "",
+ "type": "text"
+ },
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "description": "Filestore OSDs",
+ "fontSize": "100%",
+ "height": "310",
+ "hideTimeOverride": true,
+ "id": 27,
+ "links": [],
+ "minSpan": 1,
+ "pageSize": null,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": 0,
+ "desc": true
+ },
+ "span": 1,
+ "styles": [
+ {
+ "alias": "Time",
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Time",
+ "type": "date"
+ },
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ },
+ {
+ "alias": "OSD Id",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 0,
+ "pattern": "Metric",
+ "thresholds": [],
+ "type": "number",
+ "unit": "none"
+ },
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "Current",
+ "thresholds": [],
+ "type": "hidden",
+ "unit": "short"
+ },
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 2,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(currentBelow(transformNull(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.$osd_id.osd_type),-1),0.5),-2)",
+ "textEditor": true
+ }
+ ],
+ "timeFrom": "2m",
+ "timeShift": null,
+ "title": "",
+ "transform": "timeseries_aggregations",
+ "type": "table"
+ },
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "description": "Time spent in the queue for the journal. Excessive times here may indicate OSD tthrottling is happening. In this scenario you should review the OSD specific settings in \"ceph.conf\"; filestore_queue_max_ops or filestore_queue_max_bytes",
+ "fontSize": "100%",
+ "height": "310",
+ "hideTimeOverride": true,
+ "id": 3,
+ "links": [],
+ "minSpan": 2,
+ "pageSize": 5,
+ "scroll": false,
+ "showHeader": true,
+ "sort": {
+ "col": 1,
+ "desc": true
+ },
+ "span": 2,
+ "styles": [
+ {
+ "alias": "Time",
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Time",
+ "type": "date"
+ },
+ {
+ "alias": "Journal Queue Time",
+ "colorMode": "row",
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "Current",
+ "thresholds": [
+ ".001",
+ ".003"
+ ],
+ "type": "number",
+ "unit": "s"
+ },
+ {
+ "alias": "OSD Id",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "Metric",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ },
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 2,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(limit(transformNull(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.queue_transaction_latency_avg),0),$max_devices),-2)",
+ "textEditor": true
+ }
+ ],
+ "timeFrom": "2m",
+ "title": "",
+ "transform": "timeseries_aggregations",
+ "type": "table"
+ },
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "description": "Time taken for the write request to be safely committed to the journal device",
+ "fontSize": "100%",
+ "height": "310",
+ "hideTimeOverride": true,
+ "id": 4,
+ "links": [],
+ "minSpan": 2,
+ "pageSize": 5,
+ "scroll": false,
+ "showHeader": true,
+ "sort": {
+ "col": 1,
+ "desc": true
+ },
+ "span": 2,
+ "styles": [
+ {
+ "alias": "Time",
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Time",
+ "type": "date"
+ },
+ {
+ "alias": "Journal Latency",
+ "colorMode": "row",
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "Current",
+ "thresholds": [
+ "0.01",
+ "0.1"
+ ],
+ "type": "number",
+ "unit": "s"
+ },
+ {
+ "alias": "OSD Id",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "Metric",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ },
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 2,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(limit(transformNull(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.journal_latency),0),$max_devices),-2)",
+ "textEditor": true
+ }
+ ],
+ "timeFrom": "2m",
+ "title": "",
+ "transform": "timeseries_aggregations",
+ "type": "table"
+ },
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "description": "Apply latency covers the time taken to commit to the journal and complete the transaction",
+ "fontSize": "100%",
+ "height": "310",
+ "hideTimeOverride": true,
+ "id": 5,
+ "links": [],
+ "minSpan": 2,
+ "pageSize": 5,
+ "scroll": false,
+ "showHeader": true,
+ "sort": {
+ "col": 1,
+ "desc": true
+ },
+ "span": 2,
+ "styles": [
+ {
+ "alias": "Time",
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Time",
+ "type": "date"
+ },
+ {
+ "alias": "Apply Latency",
+ "colorMode": "row",
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "Current",
+ "thresholds": [
+ "100",
+ "500"
+ ],
+ "type": "number",
+ "unit": "s"
+ },
+ {
+ "alias": "OSD Id",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "Metric",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ },
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 2,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(limit(transformNull(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.apply_latency),0),$max_devices),-2)",
+ "textEditor": true
+ }
+ ],
+ "timeFrom": "2m",
+ "title": "",
+ "transform": "timeseries_aggregations",
+ "type": "table"
+ },
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "description": "Commit latency is the time taken for writes to be flushed to disk as part of async kernel activity",
+ "fontSize": "100%",
+ "height": "310",
+ "hideTimeOverride": true,
+ "id": 6,
+ "links": [],
+ "minSpan": 2,
+ "pageSize": 5,
+ "scroll": false,
+ "showHeader": true,
+ "sort": {
+ "col": 1,
+ "desc": true
+ },
+ "span": 2,
+ "styles": [
+ {
+ "alias": "Time",
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Time",
+ "type": "date"
+ },
+ {
+ "alias": "Commit Latency",
+ "colorMode": "row",
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "Current",
+ "thresholds": [
+ "1",
+ "3"
+ ],
+ "type": "number",
+ "unit": "s"
+ },
+ {
+ "alias": "OSD Id",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "Metric",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ },
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 2,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(limit(transformNull(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.commitcycle_latency),0),$max_devices),-2)",
+ "textEditor": true
+ }
+ ],
+ "timeFrom": "2m",
+ "title": "",
+ "transform": "timeseries_aggregations",
+ "type": "table"
+ },
+ {
+ "aliasColors": {
+ "95%ile Commit Latency": "#447EBC",
+ "Apply Latency Max": "#890F02"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "description": "Shows the latency for a given OSD, allowing you to compare a specific OSD against the $percentile%ile graph. Note that when the \"OSD Id\" pull-down shows **ALL**, only the **first** OSD is shown to prevent the graph from being unreadable!",
+ "fill": 0,
+ "height": "300px",
+ "id": 1,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxDataPoints": "",
+ "minSpan": 6,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "alias": "Apply Latency Max",
+ "fill": 0
+ },
+ {
+ "alias": "95%ile Apply Latency",
+ "fill": 2
+ }
+ ],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "alias(limit(transformNull(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.$osd_id.queue_transaction_latency_avg),0),1),\"Journal queue avg\")",
+ "textEditor": true
+ },
+ {
+ "refId": "B",
+ "target": "alias(limit(transformNull(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.$osd_id.journal_latency),0),1),\"Journal latency avg\")",
+ "textEditor": true
+ },
+ {
+ "refId": "C",
+ "target": "alias(limit(transformNull(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.$osd_id.apply_latency),0),1), \"Apply latency avg\")",
+ "textEditor": true
+ },
+ {
+ "refId": "D",
+ "target": "alias(limit(transformNull(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.$osd_id.commitcycle_latency),0),1),\"Commit latency avg\")",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Filestore Latency for OSD '$osd_id'",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "s",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "fill": 1,
+ "height": "300px",
+ "id": 9,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 6,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "alias(percentileOfSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.queue_transaction_latency_avg,$percentile), \"journal Queue time\")",
+ "textEditor": true
+ },
+ {
+ "refId": "B",
+ "target": "alias(percentileOfSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.journal_latency,$percentile), \"journal Latency\")",
+ "textEditor": true
+ },
+ {
+ "refId": "C",
+ "target": "alias(percentileOfSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.apply_latency,$percentile), \"apply Latency\")",
+ "textEditor": true
+ },
+ {
+ "refId": "D",
+ "target": "alias(percentileOfSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.commitcycle_latency,$percentile), \"commit/flush Latency\")",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Filestore IO Summary - all OSD's @ $percentile%ile",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "s",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "Filestore OSD Latencies",
+ "titleSize": "h5"
+ },
+ {
+ "collapse": true,
+ "height": 250,
+ "panels": [
+ {
+ "content": "<h1>Ceph Bluestore I/O Process</h1>\n<p style=\"text-align: justify;\">\nUnlike filestore, bluestore does not suffer from a double-write penalty (i.e write to journal then write to HDD). With bluestore, once a write is scheduled (<b>submit</b> and <b>throttle</b> latencies), it is done directly to the disk (<b>AIO wait</b>), and then the metadata relating to the object is changed (<b>kv_commit</b>). Writes are not considered complete until the kv store is updated. <p> The tables on the right focus on the top 10 Bluestore OSDs with the highest latencies.\n",
+ "height": "300",
+ "id": 22,
+ "links": [],
+ "minSpan": 3,
+ "mode": "html",
+ "span": 3,
+ "title": "",
+ "type": "text"
+ },
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "description": "Bluestore OSDs",
+ "fontSize": "100%",
+ "height": "310",
+ "hideTimeOverride": true,
+ "id": 26,
+ "links": [],
+ "minSpan": 1,
+ "pageSize": null,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": 0,
+ "desc": true
+ },
+ "span": 1,
+ "styles": [
+ {
+ "alias": "Time",
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Time",
+ "type": "date"
+ },
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ },
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "Current",
+ "thresholds": [],
+ "type": "hidden",
+ "unit": "short"
+ },
+ {
+ "alias": "OSD Id",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 0,
+ "pattern": "Metric",
+ "thresholds": [],
+ "type": "number",
+ "unit": "none"
+ },
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 2,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(currentAbove(transformNull(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.$osd_id.osd_type),-1),0.5),-2)",
+ "textEditor": true
+ }
+ ],
+ "timeFrom": "2m",
+ "timeShift": null,
+ "title": "",
+ "transform": "timeseries_aggregations",
+ "type": "table"
+ },
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "description": "Time spent preparing the request (transaction)",
+ "fontSize": "100%",
+ "height": "310",
+ "hideTimeOverride": true,
+ "id": 23,
+ "links": [],
+ "minSpan": 2,
+ "pageSize": 5,
+ "scroll": false,
+ "showHeader": true,
+ "sort": {
+ "col": 1,
+ "desc": false
+ },
+ "span": 2,
+ "styles": [
+ {
+ "alias": "Time",
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Time",
+ "type": "date"
+ },
+ {
+ "alias": "Submit Latency",
+ "colorMode": "row",
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "Current",
+ "thresholds": [
+ ".001",
+ ".003"
+ ],
+ "type": "number",
+ "unit": "s"
+ },
+ {
+ "alias": "OSD Id",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "Metric",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ },
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 2,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(limit(transformNull(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.submit_lat),0),$max_devices),-2)",
+ "textEditor": true
+ }
+ ],
+ "timeFrom": "2m",
+ "title": "",
+ "transform": "timeseries_aggregations",
+ "type": "table"
+ },
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "description": "Time requests wait due to throttling or busy conditions",
+ "fontSize": "100%",
+ "height": "310",
+ "hideTimeOverride": true,
+ "id": 24,
+ "links": [],
+ "minSpan": 2,
+ "pageSize": 5,
+ "scroll": false,
+ "showHeader": true,
+ "sort": {
+ "col": 1,
+ "desc": true
+ },
+ "span": 2,
+ "styles": [
+ {
+ "alias": "Time",
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Time",
+ "type": "date"
+ },
+ {
+ "alias": "Throttle Latency",
+ "colorMode": "row",
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "Current",
+ "thresholds": [
+ ".002",
+ ".005"
+ ],
+ "type": "number",
+ "unit": "s"
+ },
+ {
+ "alias": "OSD Id",
+ "colorMode": null,
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "Metric",
+ "thresholds": [
+ ""
+ ],
+ "type": "number",
+ "unit": "short"
+ },
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 2,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(limit(transformNull(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.throttle_lat),0),$max_devices),-2)",
+ "textEditor": true
+ }
+ ],
+ "timeFrom": "2m",
+ "title": "",
+ "transform": "timeseries_aggregations",
+ "type": "table"
+ },
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "description": "Time spent waiting for the physical I/O request to complete",
+ "fontSize": "100%",
+ "height": "310",
+ "hideTimeOverride": true,
+ "id": 29,
+ "links": [],
+ "minSpan": 2,
+ "pageSize": 5,
+ "scroll": false,
+ "showHeader": true,
+ "sort": {
+ "col": 1,
+ "desc": true
+ },
+ "span": 2,
+ "styles": [
+ {
+ "alias": "Time",
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Time",
+ "type": "date"
+ },
+ {
+ "alias": "AIO Wait Time",
+ "colorMode": "row",
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "Current",
+ "thresholds": [
+ ".020",
+ ".050"
+ ],
+ "type": "number",
+ "unit": "s"
+ },
+ {
+ "alias": "OSD Id",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "Metric",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ },
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 2,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(limit(transformNull(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.state_aio_wait_lat),0),$max_devices),-2)",
+ "textEditor": true
+ }
+ ],
+ "timeFrom": "2m",
+ "title": "",
+ "transform": "timeseries_aggregations",
+ "type": "table"
+ },
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "description": "Time spent waiting for rocksdb (metadata store) to commit meta data",
+ "fontSize": "100%",
+ "height": "310",
+ "hideTimeOverride": true,
+ "id": 25,
+ "links": [],
+ "minSpan": 2,
+ "pageSize": 5,
+ "scroll": false,
+ "showHeader": true,
+ "sort": {
+ "col": 1,
+ "desc": true
+ },
+ "span": 2,
+ "styles": [
+ {
+ "alias": "Time",
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Time",
+ "type": "date"
+ },
+ {
+ "alias": "KV Commit ",
+ "colorMode": "row",
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "Current",
+ "thresholds": [
+ ".003",
+ ".005"
+ ],
+ "type": "number",
+ "unit": "s"
+ },
+ {
+ "alias": "OSD Id",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "Metric",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ },
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 2,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(limit(transformNull(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.kv_commit_lat),0),$max_devices),-2)",
+ "textEditor": true
+ }
+ ],
+ "timeFrom": "2m",
+ "title": "",
+ "transform": "timeseries_aggregations",
+ "type": "table"
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "height": "300",
+ "id": 21,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 6,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "alias(limit(transformNull(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.$osd_id.submit_lat),0),$max_devices),\"submit latency\")",
+ "textEditor": true
+ },
+ {
+ "refId": "B",
+ "target": "alias(limit(transformNull(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.$osd_id.throttle_lat),0),$max_devices),\"throttle latency\")",
+ "textEditor": true
+ },
+ {
+ "refId": "C",
+ "target": "alias(limit(transformNull(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.$osd_id.state_aio_wait_lat),0),$max_devices),\"AIO Wait latency\")",
+ "textEditor": true
+ },
+ {
+ "refId": "D",
+ "target": "alias(limit(transformNull(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.$osd_id.kv_commit_lat),0),$max_devices),\"KV Commit Latency\")",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Bluestore Latency for OSD '$osd_id'",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "s",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "description": "This charts shows the $percentile%ile latencies across all OSDs, which indicates overall performance, but does not represent any specific OSD",
+ "fill": 1,
+ "height": "300px",
+ "id": 28,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 6,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "alias(percentileOfSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.submit_lat,$percentile), \"Submit Latency\")",
+ "textEditor": true
+ },
+ {
+ "refId": "B",
+ "target": "alias(percentileOfSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.throttle_lat,$percentile), \"Throttle Latency\")",
+ "textEditor": true
+ },
+ {
+ "refId": "C",
+ "target": "alias(percentileOfSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.state_aio_wait_lat,$percentile), \"IO Wait Latency\")",
+ "textEditor": true
+ },
+ {
+ "refId": "D",
+ "target": "alias(percentileOfSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*.kv_commit_lat,$percentile), \"KV Commit Latency\")",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "BlueStore IO Summary - all OSD's @ $percentile%ile",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "s",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "Bluestore OSD Latencies",
+ "titleSize": "h5"
+ }
+ ],
+ "schemaVersion": 14,
+ "style": "dark",
+ "tags": [
+ "overview"
+ ],
+ "templating": {
+ "list": [
+ {
+ "allValue": null,
+ "current": {
+ "selected": true,
+ "text": "storage.lab",
+ "value": "storage.lab"
+ },
+ "hide": 2,
+ "includeAll": false,
+ "label": null,
+ "multi": false,
+ "name": "domain",
+ "options": [
+ {
+ "selected": true,
+ "text": "storage.lab",
+ "value": "storage.lab"
+ }
+ ],
+ "query": "storage.lab",
+ "type": "custom"
+ },
+ {
+ "allValue": null,
+ "current": {
+ "selected": true,
+ "text": "ceph",
+ "value": "ceph"
+ },
+ "datasource": "Local",
+ "hide": 2,
+ "includeAll": false,
+ "label": null,
+ "multi": false,
+ "name": "cluster_name",
+ "options": [],
+ "query": "collectd.*.$domain.cephmetrics.gauge.*",
+ "refresh": 1,
+ "regex": "",
+ "sort": 0,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ },
+ {
+ "allValue": null,
+ "current": {
+ "selected": true,
+ "text": "95",
+ "value": "95"
+ },
+ "hide": 0,
+ "includeAll": false,
+ "label": null,
+ "multi": false,
+ "name": "percentile",
+ "options": [
+ {
+ "selected": true,
+ "text": "95",
+ "value": "95"
+ },
+ {
+ "selected": false,
+ "text": "96",
+ "value": "96"
+ },
+ {
+ "selected": false,
+ "text": "97",
+ "value": "97"
+ },
+ {
+ "selected": false,
+ "text": "98",
+ "value": "98"
+ },
+ {
+ "selected": false,
+ "text": "99",
+ "value": "99"
+ }
+ ],
+ "query": "95,96,97,98,99",
+ "type": "custom"
+ },
+ {
+ "allValue": null,
+ "current": {
+ "selected": true,
+ "text": "10",
+ "value": "10"
+ },
+ "hide": 2,
+ "includeAll": false,
+ "label": null,
+ "multi": false,
+ "name": "max_devices",
+ "options": [
+ {
+ "selected": true,
+ "text": "10",
+ "value": "10"
+ }
+ ],
+ "query": "10",
+ "type": "custom"
+ },
+ {
+ "allValue": null,
+ "current": {
+ "text": "All",
+ "value": "$__all"
+ },
+ "datasource": "Local",
+ "hide": 0,
+ "includeAll": true,
+ "label": "OSD Id",
+ "multi": false,
+ "name": "osd_id",
+ "options": [],
+ "query": "collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*",
+ "refresh": 1,
+ "regex": "/^\\d+$/",
+ "sort": 0,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ },
+ {
+ "allValue": null,
+ "current": {
+ "text": "All",
+ "value": "$__all"
+ },
+ "datasource": "Local",
+ "hide": 2,
+ "includeAll": true,
+ "label": "OSD Id",
+ "multi": false,
+ "name": "osd_id_hidden",
+ "options": [],
+ "query": "collectd.*.$domain.cephmetrics.gauge.$cluster_name.osd.*",
+ "refresh": 1,
+ "regex": "/^\\d+$/",
+ "sort": 0,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ }
+ ]
+ },
+ "time": {
+ "from": "now-1h",
+ "to": "now"
+ },
+ "timepicker": {
+ "refresh_intervals": [
+ "5s",
+ "10s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ],
+ "time_options": [
+ "5m",
+ "15m",
+ "1h",
+ "6h",
+ "12h",
+ "24h",
+ "2d",
+ "7d",
+ "30d"
+ ]
+ },
+ "timezone": "browser",
+ "title": "Ceph OSD Information",
+ "version": 3
+ },
+ "meta": {
+ "canEdit": true,
+ "canSave": true,
+ "canStar": true,
+ "created": "2017-10-11T02:45:33Z",
+ "createdBy": "admin@localhost",
+ "expires": "0001-01-01T00:00:00Z",
+ "slug": "ceph-osd-information",
+ "type": "db",
+ "updated": "2017-10-11T03:22:46Z",
+ "updatedBy": "admin@localhost",
+ "version": 3
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "dashboard": {
+ "annotations": {
+ "list": []
+ },
+ "editable": false,
+ "gnetId": null,
+ "graphTooltip": 0,
+ "hideControls": true,
+ "id": 68,
+ "links": [],
+ "refresh": "10s",
+ "rows": [
+ {
+ "collapse": false,
+ "height": "250px",
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "fill": 5,
+ "id": 1,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 2,
+ "links": [],
+ "minSpan": 6,
+ "nullPointMode": "connected",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 4,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "groupByNode(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.op_per_sec,-2,\"maxSeries\")",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Client IOPS by Pool",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "none",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "fill": 5,
+ "id": 2,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 2,
+ "links": [],
+ "minSpan": 6,
+ "nullPointMode": "connected",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 4,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "groupByNode(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.bytes_sec,-2,\"maxSeries\")",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Throughput by Pool",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "decbytes",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "fill": 3,
+ "id": 52,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 6,
+ "nullPointMode": "connected",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 4,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "groupByNode(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.recovering_bytes_per_sec,-2,\"maxSeries\")",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Recovery Workload by Pool",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "decbytes",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "Pool Overview : $pool_name",
+ "titleSize": "h5"
+ },
+ {
+ "collapse": false,
+ "height": 250,
+ "panels": [
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "fontSize": "100%",
+ "id": 3,
+ "links": [],
+ "minSpan": 6,
+ "pageSize": null,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": 1,
+ "desc": true
+ },
+ "span": 4,
+ "styles": [
+ {
+ "alias": "Time",
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Time",
+ "type": "date"
+ },
+ {
+ "alias": "Pool Name",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "Metric",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ },
+ {
+ "alias": "IOPS",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 0,
+ "pattern": "Current",
+ "thresholds": [],
+ "type": "number",
+ "unit": "none"
+ },
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 2,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "refId": "A",
+ "target": "limit(sortByMaxima(groupByNode(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.*.op_per_sec,-2,\"maxSeries\")),5)",
+ "textEditor": true
+ }
+ ],
+ "title": "Top 5 Pools by Client IOPS",
+ "transform": "timeseries_aggregations",
+ "type": "table"
+ },
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "fontSize": "100%",
+ "id": 4,
+ "links": [],
+ "minSpan": 6,
+ "pageSize": null,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": 1,
+ "desc": true
+ },
+ "span": 4,
+ "styles": [
+ {
+ "alias": "Time",
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Time",
+ "type": "date"
+ },
+ {
+ "alias": "Pool Name",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "Metric",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ },
+ {
+ "alias": "Throughput",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "Current",
+ "thresholds": [],
+ "type": "number",
+ "unit": "decbytes"
+ },
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 2,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "number",
+ "unit": "bytes"
+ }
+ ],
+ "targets": [
+ {
+ "refId": "A",
+ "target": "limit(sortByMaxima(groupByNode(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.*.bytes_sec,-2,\"maxSeries\")),5)",
+ "textEditor": true
+ }
+ ],
+ "title": "Top 5 Pools by Throughput",
+ "transform": "timeseries_aggregations",
+ "type": "table"
+ },
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "fontSize": "100%",
+ "id": 59,
+ "links": [],
+ "minSpan": 6,
+ "pageSize": null,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": 1,
+ "desc": true
+ },
+ "span": 4,
+ "styles": [
+ {
+ "alias": "Time",
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Time",
+ "type": "date"
+ },
+ {
+ "alias": "Pool Name",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "Metric",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ },
+ {
+ "alias": "Capacity Used",
+ "colorMode": "value",
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "Current",
+ "thresholds": [
+ "70",
+ "85"
+ ],
+ "type": "number",
+ "unit": "percent"
+ },
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 2,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "number",
+ "unit": "bytes"
+ }
+ ],
+ "targets": [
+ {
+ "refId": "A",
+ "target": "limit(sortByMaxima(groupByNode(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.*.percent_used,-2,'maxSeries')),5)",
+ "textEditor": true
+ }
+ ],
+ "title": "Top 5 Pools by Capacity Used",
+ "transform": "timeseries_aggregations",
+ "type": "table"
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "Top 5",
+ "titleSize": "h5"
+ },
+ {
+ "collapse": true,
+ "height": 250,
+ "panels": [
+ {
+ "aliasColors": {
+ "read_op_per_sec": "#3F6833",
+ "write_op_per_sec": "#E5AC0E"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "fill": 1,
+ "id": 5,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 6,
+ "nullPointMode": "null as zero",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "scopedVars": {
+ "pool_name": {
+ "selected": false,
+ "text": "_rgw_root",
+ "value": "_rgw_root"
+ }
+ },
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.read_op_per_sec), -1)"
+ },
+ {
+ "refId": "B",
+ "target": "aliasByNode(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.write_op_per_sec), -1)"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Pool '$pool_name' Client IOPS",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {
+ "read_op_per_sec": "#3F6833",
+ "write_op_per_sec": "#E5AC0E"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "fill": 1,
+ "id": 7,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 6,
+ "nullPointMode": "null as zero",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "scopedVars": {
+ "pool_name": {
+ "selected": false,
+ "text": "_rgw_root",
+ "value": "_rgw_root"
+ }
+ },
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.read_bytes_sec), -1)"
+ },
+ {
+ "refId": "B",
+ "target": "aliasByNode(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.write_bytes_sec), -1)"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Pool '$pool_name' Client Throughput",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "decbytes",
+ "label": "",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "repeat": "pool_name",
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "Pool '$pool_name' Performance Details",
+ "titleSize": "h5"
+ },
+ {
+ "collapse": true,
+ "height": 250,
+ "panels": [
+ {
+ "aliasColors": {
+ "read_op_per_sec": "#3F6833",
+ "write_op_per_sec": "#E5AC0E"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "fill": 1,
+ "id": 60,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 6,
+ "nullPointMode": "null as zero",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "scopedVars": {
+ "pool_name": {
+ "selected": false,
+ "text": "default_rgw_buckets_data",
+ "value": "default_rgw_buckets_data"
+ }
+ },
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.read_op_per_sec), -1)"
+ },
+ {
+ "refId": "B",
+ "target": "aliasByNode(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.write_op_per_sec), -1)"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Pool '$pool_name' Client IOPS",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {
+ "read_op_per_sec": "#3F6833",
+ "write_op_per_sec": "#E5AC0E"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "fill": 1,
+ "id": 61,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 6,
+ "nullPointMode": "null as zero",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "scopedVars": {
+ "pool_name": {
+ "selected": false,
+ "text": "default_rgw_buckets_data",
+ "value": "default_rgw_buckets_data"
+ }
+ },
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.read_bytes_sec), -1)"
+ },
+ {
+ "refId": "B",
+ "target": "aliasByNode(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.write_bytes_sec), -1)"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Pool '$pool_name' Client Throughput",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "decbytes",
+ "label": "",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": 1507692845646,
+ "repeatRowId": 3,
+ "showTitle": true,
+ "title": "Pool '$pool_name' Performance Details",
+ "titleSize": "h5"
+ },
+ {
+ "collapse": true,
+ "height": 250,
+ "panels": [
+ {
+ "aliasColors": {
+ "read_op_per_sec": "#3F6833",
+ "write_op_per_sec": "#E5AC0E"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "fill": 1,
+ "id": 62,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 6,
+ "nullPointMode": "null as zero",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "scopedVars": {
+ "pool_name": {
+ "selected": false,
+ "text": "default_rgw_buckets_index",
+ "value": "default_rgw_buckets_index"
+ }
+ },
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.read_op_per_sec), -1)"
+ },
+ {
+ "refId": "B",
+ "target": "aliasByNode(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.write_op_per_sec), -1)"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Pool '$pool_name' Client IOPS",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {
+ "read_op_per_sec": "#3F6833",
+ "write_op_per_sec": "#E5AC0E"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "fill": 1,
+ "id": 63,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 6,
+ "nullPointMode": "null as zero",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "scopedVars": {
+ "pool_name": {
+ "selected": false,
+ "text": "default_rgw_buckets_index",
+ "value": "default_rgw_buckets_index"
+ }
+ },
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.read_bytes_sec), -1)"
+ },
+ {
+ "refId": "B",
+ "target": "aliasByNode(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.write_bytes_sec), -1)"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Pool '$pool_name' Client Throughput",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "decbytes",
+ "label": "",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": 1507692845646,
+ "repeatRowId": 3,
+ "showTitle": true,
+ "title": "Pool '$pool_name' Performance Details",
+ "titleSize": "h5"
+ },
+ {
+ "collapse": true,
+ "height": 250,
+ "panels": [
+ {
+ "aliasColors": {
+ "read_op_per_sec": "#3F6833",
+ "write_op_per_sec": "#E5AC0E"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "fill": 1,
+ "id": 64,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 6,
+ "nullPointMode": "null as zero",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "scopedVars": {
+ "pool_name": {
+ "selected": false,
+ "text": "default_rgw_control",
+ "value": "default_rgw_control"
+ }
+ },
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.read_op_per_sec), -1)"
+ },
+ {
+ "refId": "B",
+ "target": "aliasByNode(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.write_op_per_sec), -1)"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Pool '$pool_name' Client IOPS",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {
+ "read_op_per_sec": "#3F6833",
+ "write_op_per_sec": "#E5AC0E"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "fill": 1,
+ "id": 65,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 6,
+ "nullPointMode": "null as zero",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "scopedVars": {
+ "pool_name": {
+ "selected": false,
+ "text": "default_rgw_control",
+ "value": "default_rgw_control"
+ }
+ },
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.read_bytes_sec), -1)"
+ },
+ {
+ "refId": "B",
+ "target": "aliasByNode(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.write_bytes_sec), -1)"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Pool '$pool_name' Client Throughput",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "decbytes",
+ "label": "",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": 1507692845646,
+ "repeatRowId": 3,
+ "showTitle": true,
+ "title": "Pool '$pool_name' Performance Details",
+ "titleSize": "h5"
+ },
+ {
+ "collapse": true,
+ "height": 250,
+ "panels": [
+ {
+ "aliasColors": {
+ "read_op_per_sec": "#3F6833",
+ "write_op_per_sec": "#E5AC0E"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "fill": 1,
+ "id": 66,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 6,
+ "nullPointMode": "null as zero",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "scopedVars": {
+ "pool_name": {
+ "selected": false,
+ "text": "default_rgw_data_root",
+ "value": "default_rgw_data_root"
+ }
+ },
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.read_op_per_sec), -1)"
+ },
+ {
+ "refId": "B",
+ "target": "aliasByNode(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.write_op_per_sec), -1)"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Pool '$pool_name' Client IOPS",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {
+ "read_op_per_sec": "#3F6833",
+ "write_op_per_sec": "#E5AC0E"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "fill": 1,
+ "id": 67,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 6,
+ "nullPointMode": "null as zero",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "scopedVars": {
+ "pool_name": {
+ "selected": false,
+ "text": "default_rgw_data_root",
+ "value": "default_rgw_data_root"
+ }
+ },
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.read_bytes_sec), -1)"
+ },
+ {
+ "refId": "B",
+ "target": "aliasByNode(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.write_bytes_sec), -1)"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Pool '$pool_name' Client Throughput",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "decbytes",
+ "label": "",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": 1507692845646,
+ "repeatRowId": 3,
+ "showTitle": true,
+ "title": "Pool '$pool_name' Performance Details",
+ "titleSize": "h5"
+ },
+ {
+ "collapse": true,
+ "height": 250,
+ "panels": [
+ {
+ "aliasColors": {
+ "read_op_per_sec": "#3F6833",
+ "write_op_per_sec": "#E5AC0E"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "fill": 1,
+ "id": 68,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 6,
+ "nullPointMode": "null as zero",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "scopedVars": {
+ "pool_name": {
+ "selected": false,
+ "text": "default_rgw_gc",
+ "value": "default_rgw_gc"
+ }
+ },
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.read_op_per_sec), -1)"
+ },
+ {
+ "refId": "B",
+ "target": "aliasByNode(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.write_op_per_sec), -1)"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Pool '$pool_name' Client IOPS",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {
+ "read_op_per_sec": "#3F6833",
+ "write_op_per_sec": "#E5AC0E"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "fill": 1,
+ "id": 69,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 6,
+ "nullPointMode": "null as zero",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "scopedVars": {
+ "pool_name": {
+ "selected": false,
+ "text": "default_rgw_gc",
+ "value": "default_rgw_gc"
+ }
+ },
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.read_bytes_sec), -1)"
+ },
+ {
+ "refId": "B",
+ "target": "aliasByNode(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.write_bytes_sec), -1)"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Pool '$pool_name' Client Throughput",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "decbytes",
+ "label": "",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": 1507692845646,
+ "repeatRowId": 3,
+ "showTitle": true,
+ "title": "Pool '$pool_name' Performance Details",
+ "titleSize": "h5"
+ },
+ {
+ "collapse": true,
+ "height": 250,
+ "panels": [
+ {
+ "aliasColors": {
+ "read_op_per_sec": "#3F6833",
+ "write_op_per_sec": "#E5AC0E"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "fill": 1,
+ "id": 70,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 6,
+ "nullPointMode": "null as zero",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "scopedVars": {
+ "pool_name": {
+ "selected": false,
+ "text": "default_rgw_log",
+ "value": "default_rgw_log"
+ }
+ },
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.read_op_per_sec), -1)"
+ },
+ {
+ "refId": "B",
+ "target": "aliasByNode(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.write_op_per_sec), -1)"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Pool '$pool_name' Client IOPS",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {
+ "read_op_per_sec": "#3F6833",
+ "write_op_per_sec": "#E5AC0E"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "fill": 1,
+ "id": 71,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 6,
+ "nullPointMode": "null as zero",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "scopedVars": {
+ "pool_name": {
+ "selected": false,
+ "text": "default_rgw_log",
+ "value": "default_rgw_log"
+ }
+ },
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.read_bytes_sec), -1)"
+ },
+ {
+ "refId": "B",
+ "target": "aliasByNode(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.write_bytes_sec), -1)"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Pool '$pool_name' Client Throughput",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "decbytes",
+ "label": "",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": 1507692845646,
+ "repeatRowId": 3,
+ "showTitle": true,
+ "title": "Pool '$pool_name' Performance Details",
+ "titleSize": "h5"
+ },
+ {
+ "collapse": true,
+ "height": 250,
+ "panels": [
+ {
+ "aliasColors": {
+ "read_op_per_sec": "#3F6833",
+ "write_op_per_sec": "#E5AC0E"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "fill": 1,
+ "id": 72,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 6,
+ "nullPointMode": "null as zero",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "scopedVars": {
+ "pool_name": {
+ "selected": false,
+ "text": "default_rgw_meta",
+ "value": "default_rgw_meta"
+ }
+ },
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.read_op_per_sec), -1)"
+ },
+ {
+ "refId": "B",
+ "target": "aliasByNode(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.write_op_per_sec), -1)"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Pool '$pool_name' Client IOPS",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {
+ "read_op_per_sec": "#3F6833",
+ "write_op_per_sec": "#E5AC0E"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "fill": 1,
+ "id": 73,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 6,
+ "nullPointMode": "null as zero",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "scopedVars": {
+ "pool_name": {
+ "selected": false,
+ "text": "default_rgw_meta",
+ "value": "default_rgw_meta"
+ }
+ },
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.read_bytes_sec), -1)"
+ },
+ {
+ "refId": "B",
+ "target": "aliasByNode(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.write_bytes_sec), -1)"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Pool '$pool_name' Client Throughput",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "decbytes",
+ "label": "",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": 1507692845646,
+ "repeatRowId": 3,
+ "showTitle": true,
+ "title": "Pool '$pool_name' Performance Details",
+ "titleSize": "h5"
+ },
+ {
+ "collapse": true,
+ "height": 250,
+ "panels": [
+ {
+ "aliasColors": {
+ "read_op_per_sec": "#3F6833",
+ "write_op_per_sec": "#E5AC0E"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "fill": 1,
+ "id": 74,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 6,
+ "nullPointMode": "null as zero",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "scopedVars": {
+ "pool_name": {
+ "selected": false,
+ "text": "default_rgw_users_keys",
+ "value": "default_rgw_users_keys"
+ }
+ },
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.read_op_per_sec), -1)"
+ },
+ {
+ "refId": "B",
+ "target": "aliasByNode(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.write_op_per_sec), -1)"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Pool '$pool_name' Client IOPS",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {
+ "read_op_per_sec": "#3F6833",
+ "write_op_per_sec": "#E5AC0E"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "fill": 1,
+ "id": 75,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 6,
+ "nullPointMode": "null as zero",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "scopedVars": {
+ "pool_name": {
+ "selected": false,
+ "text": "default_rgw_users_keys",
+ "value": "default_rgw_users_keys"
+ }
+ },
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.read_bytes_sec), -1)"
+ },
+ {
+ "refId": "B",
+ "target": "aliasByNode(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.write_bytes_sec), -1)"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Pool '$pool_name' Client Throughput",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "decbytes",
+ "label": "",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": 1507692845646,
+ "repeatRowId": 3,
+ "showTitle": true,
+ "title": "Pool '$pool_name' Performance Details",
+ "titleSize": "h5"
+ },
+ {
+ "collapse": true,
+ "height": 250,
+ "panels": [
+ {
+ "aliasColors": {
+ "read_op_per_sec": "#3F6833",
+ "write_op_per_sec": "#E5AC0E"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "fill": 1,
+ "id": 76,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 6,
+ "nullPointMode": "null as zero",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "scopedVars": {
+ "pool_name": {
+ "selected": false,
+ "text": "default_rgw_users_swift",
+ "value": "default_rgw_users_swift"
+ }
+ },
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.read_op_per_sec), -1)"
+ },
+ {
+ "refId": "B",
+ "target": "aliasByNode(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.write_op_per_sec), -1)"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Pool '$pool_name' Client IOPS",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {
+ "read_op_per_sec": "#3F6833",
+ "write_op_per_sec": "#E5AC0E"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "fill": 1,
+ "id": 77,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 6,
+ "nullPointMode": "null as zero",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "scopedVars": {
+ "pool_name": {
+ "selected": false,
+ "text": "default_rgw_users_swift",
+ "value": "default_rgw_users_swift"
+ }
+ },
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.read_bytes_sec), -1)"
+ },
+ {
+ "refId": "B",
+ "target": "aliasByNode(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.write_bytes_sec), -1)"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Pool '$pool_name' Client Throughput",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "decbytes",
+ "label": "",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": 1507692845646,
+ "repeatRowId": 3,
+ "showTitle": true,
+ "title": "Pool '$pool_name' Performance Details",
+ "titleSize": "h5"
+ },
+ {
+ "collapse": true,
+ "height": 250,
+ "panels": [
+ {
+ "aliasColors": {
+ "read_op_per_sec": "#3F6833",
+ "write_op_per_sec": "#E5AC0E"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "fill": 1,
+ "id": 78,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 6,
+ "nullPointMode": "null as zero",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "scopedVars": {
+ "pool_name": {
+ "selected": false,
+ "text": "default_rgw_users_uid",
+ "value": "default_rgw_users_uid"
+ }
+ },
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.read_op_per_sec), -1)"
+ },
+ {
+ "refId": "B",
+ "target": "aliasByNode(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.write_op_per_sec), -1)"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Pool '$pool_name' Client IOPS",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {
+ "read_op_per_sec": "#3F6833",
+ "write_op_per_sec": "#E5AC0E"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "fill": 1,
+ "id": 79,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 6,
+ "nullPointMode": "null as zero",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "scopedVars": {
+ "pool_name": {
+ "selected": false,
+ "text": "default_rgw_users_uid",
+ "value": "default_rgw_users_uid"
+ }
+ },
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.read_bytes_sec), -1)"
+ },
+ {
+ "refId": "B",
+ "target": "aliasByNode(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.write_bytes_sec), -1)"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Pool '$pool_name' Client Throughput",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "decbytes",
+ "label": "",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": 1507692845646,
+ "repeatRowId": 3,
+ "showTitle": true,
+ "title": "Pool '$pool_name' Performance Details",
+ "titleSize": "h5"
+ },
+ {
+ "collapse": true,
+ "height": 250,
+ "panels": [
+ {
+ "aliasColors": {
+ "read_op_per_sec": "#3F6833",
+ "write_op_per_sec": "#E5AC0E"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "fill": 1,
+ "id": 80,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 6,
+ "nullPointMode": "null as zero",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "scopedVars": {
+ "pool_name": {
+ "selected": false,
+ "text": "rbd",
+ "value": "rbd"
+ }
+ },
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.read_op_per_sec), -1)"
+ },
+ {
+ "refId": "B",
+ "target": "aliasByNode(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.write_op_per_sec), -1)"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Pool '$pool_name' Client IOPS",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {
+ "read_op_per_sec": "#3F6833",
+ "write_op_per_sec": "#E5AC0E"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "fill": 1,
+ "id": 81,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 6,
+ "nullPointMode": "null as zero",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "scopedVars": {
+ "pool_name": {
+ "selected": false,
+ "text": "rbd",
+ "value": "rbd"
+ }
+ },
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.read_bytes_sec), -1)"
+ },
+ {
+ "refId": "B",
+ "target": "aliasByNode(maxSeries(collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.$pool_name.write_bytes_sec), -1)"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Pool '$pool_name' Client Throughput",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "decbytes",
+ "label": "",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": 1507692845646,
+ "repeatRowId": 3,
+ "showTitle": true,
+ "title": "Pool '$pool_name' Performance Details",
+ "titleSize": "h5"
+ }
+ ],
+ "schemaVersion": 14,
+ "style": "dark",
+ "tags": [],
+ "templating": {
+ "list": [
+ {
+ "allValue": null,
+ "current": {
+ "selected": true,
+ "text": "ceph",
+ "value": "ceph"
+ },
+ "datasource": "Local",
+ "hide": 0,
+ "includeAll": false,
+ "label": "Cluster Name",
+ "multi": false,
+ "name": "cluster_name",
+ "options": [],
+ "query": "collectd.*.$domain.cephmetrics.gauge.*",
+ "refresh": 1,
+ "regex": "",
+ "sort": 0,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ },
+ {
+ "allValue": null,
+ "current": {
+ "selected": true,
+ "text": "storage.lab",
+ "value": "storage.lab"
+ },
+ "hide": 2,
+ "includeAll": false,
+ "label": null,
+ "multi": false,
+ "name": "domain",
+ "options": [
+ {
+ "selected": true,
+ "text": "storage.lab",
+ "value": "storage.lab"
+ }
+ ],
+ "query": "storage.lab",
+ "type": "custom"
+ },
+ {
+ "allValue": null,
+ "current": {
+ "tags": [],
+ "text": "All",
+ "value": [
+ "$__all"
+ ]
+ },
+ "datasource": "Local",
+ "hide": 0,
+ "includeAll": true,
+ "label": "Pool Name",
+ "multi": true,
+ "name": "pool_name",
+ "options": [],
+ "query": "collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.pools.*",
+ "refresh": 1,
+ "regex": "",
+ "sort": 0,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ }
+ ]
+ },
+ "time": {
+ "from": "now-1h",
+ "to": "now"
+ },
+ "timepicker": {
+ "refresh_intervals": [
+ "5s",
+ "10s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ],
+ "time_options": [
+ "5m",
+ "15m",
+ "1h",
+ "6h",
+ "12h",
+ "24h",
+ "2d",
+ "7d",
+ "30d"
+ ]
+ },
+ "timezone": "browser",
+ "title": "Ceph Pools",
+ "version": 5
+ },
+ "meta": {
+ "canEdit": true,
+ "canSave": true,
+ "canStar": true,
+ "created": "2017-10-11T02:45:33Z",
+ "createdBy": "admin@localhost",
+ "expires": "0001-01-01T00:00:00Z",
+ "slug": "ceph-pools",
+ "type": "db",
+ "updated": "2017-10-11T03:35:11Z",
+ "updatedBy": "admin@localhost",
+ "version": 5
+ }
+}
--- /dev/null
+{
+ "dashboard": {
+ "annotations": {
+ "list": []
+ },
+ "editable": false,
+ "gnetId": null,
+ "graphTooltip": 0,
+ "hideControls": false,
+ "id": 18,
+ "links": [
+ {
+ "asDropdown": true,
+ "icon": "external link",
+ "includeVars": true,
+ "keepTime": true,
+ "tags": [
+ "overview"
+ ],
+ "targetBlank": true,
+ "title": "Shortcuts",
+ "type": "dashboards"
+ }
+ ],
+ "refresh": "10s",
+ "rows": [
+ {
+ "collapse": false,
+ "height": 267,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "fill": 1,
+ "height": "250",
+ "id": 35,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 6,
+ "nullPointMode": "null as zero",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "GET",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$interval"
+ ],
+ "type": "time"
+ }
+ ],
+ "hide": true,
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.rgw.get_initial_lat",
+ "policy": "default",
+ "query": "SELECT mean(\"value\") FROM /collectd.$rgw_name.cephmetrics.gauge.$cluster_name.rgw.get_initial_lat/ WHERE $timeFilter GROUP BY time($interval)",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "sumSeries(collectd.*.$domain.cephmetrics.derive.$cluster_name.rgw.get_initial_lat_avgcount)",
+ "textEditor": true
+ },
+ {
+ "alias": "GET",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$interval"
+ ],
+ "type": "time"
+ }
+ ],
+ "hide": true,
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.rgw.get_initial_lat",
+ "policy": "default",
+ "query": "SELECT mean(\"value\") FROM /collectd.$rgw_name.cephmetrics.gauge.$cluster_name.rgw.get_initial_lat/ WHERE $timeFilter GROUP BY time($interval)",
+ "rawQuery": true,
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "sumSeries(collectd.*.$domain.cephmetrics.derive.$cluster_name.rgw.get_initial_lat_sum)",
+ "textEditor": true
+ },
+ {
+ "refId": "C",
+ "target": "alias(divideSeries(#B, #A),\"GET\")",
+ "targetFull": "alias(divideSeries(sumSeries(collectd.*.$domain.cephmetrics.derive.$cluster_name.rgw.get_initial_lat_sum), sumSeries(collectd.*.$domain.cephmetrics.derive.$cluster_name.rgw.get_initial_lat_avgcount)),\"GET\")",
+ "textEditor": true
+ },
+ {
+ "alias": "GET",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$interval"
+ ],
+ "type": "time"
+ }
+ ],
+ "hide": true,
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.rgw.get_initial_lat",
+ "policy": "default",
+ "query": "SELECT mean(\"value\") FROM /collectd.$rgw_name.cephmetrics.gauge.$cluster_name.rgw.get_initial_lat/ WHERE $timeFilter GROUP BY time($interval)",
+ "rawQuery": true,
+ "refId": "D",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "sumSeries(collectd.*.$domain.cephmetrics.derive.$cluster_name.rgw.put_initial_lat_avgcount)",
+ "textEditor": true
+ },
+ {
+ "alias": "GET",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$interval"
+ ],
+ "type": "time"
+ }
+ ],
+ "hide": true,
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.rgw.get_initial_lat",
+ "policy": "default",
+ "query": "SELECT mean(\"value\") FROM /collectd.$rgw_name.cephmetrics.gauge.$cluster_name.rgw.get_initial_lat/ WHERE $timeFilter GROUP BY time($interval)",
+ "rawQuery": true,
+ "refId": "E",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "sumSeries(collectd.*.$domain.cephmetrics.derive.$cluster_name.rgw.put_initial_lat_sum)",
+ "textEditor": true
+ },
+ {
+ "refId": "F",
+ "target": "alias(divideSeries(#E,#D), \"PUT\")",
+ "targetFull": "alias(divideSeries(sumSeries(collectd.*.$domain.cephmetrics.derive.$cluster_name.rgw.put_initial_lat_sum),sumSeries(collectd.*.$domain.cephmetrics.derive.$cluster_name.rgw.put_initial_lat_avgcount)), \"PUT\")",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Average Request Latency - All RADOS Gateways",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "s",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "datasource": null,
+ "decimals": 0,
+ "description": "CPU Busy at $percentile%ile across all radosgw hosts",
+ "format": "short",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "height": "250",
+ "id": 38,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": "",
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": " %",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 2,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": true
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "refId": "A",
+ "target": "percentileOfSeries(groupByNode(collectd.$rgw_servers.$domain.cpu.percent.{system,user,wait,interrupt},1,\"sumSeries\"),$percentile)",
+ "textEditor": true
+ }
+ ],
+ "thresholds": "70,90",
+ "title": "RGW Hosts CPU Busy",
+ "type": "singlestat",
+ "valueFontSize": "100%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "aliasColors": {
+ "Failed HTTP Requests": "#0A437C"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "description": "Shows the number of failed/aborted requests across all rados gateways during the last 10secs",
+ "fill": 3,
+ "height": "250",
+ "id": 152,
+ "legend": {
+ "alignAsTable": false,
+ "avg": false,
+ "current": false,
+ "hideEmpty": false,
+ "hideZero": false,
+ "max": false,
+ "min": false,
+ "rightSide": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 2,
+ "links": [],
+ "minSpan": 2,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 2,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "groupByNode(collectd.$rgw_servers.$domain.cephmetrics.derive.$cluster_name.rgw.failed_req, 1, \"maxSeries\")",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Failed HTTP Requests",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": false,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "none",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": null,
+ "decimals": 0,
+ "description": "",
+ "format": "short",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "height": "250",
+ "id": 45,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 2,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": true
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "refId": "A",
+ "target": "sumSeries(collectd.*.$domain.cephmetrics.derive.$cluster_name.rgw.qlen)",
+ "textEditor": true
+ }
+ ],
+ "thresholds": "",
+ "title": "Request Queue Length",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "fill": 1,
+ "height": "290",
+ "id": 34,
+ "legend": {
+ "alignAsTable": false,
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "rightSide": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 6,
+ "nullPointMode": "connected",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "C",
+ "target": "groupByNode(collectd.*.$domain.cephmetrics.derive.$cluster_name.rgw.{get,put}, 1, \"sumSeries\")",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Total Requests/sec - All RADOS Gateways",
+ "tooltip": {
+ "shared": true,
+ "sort": 1,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "description": "Total of GET/PUT HTTP traffic through all radosgw hosts",
+ "fill": 1,
+ "height": "290",
+ "id": 39,
+ "legend": {
+ "alignAsTable": false,
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "rightSide": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 6,
+ "nullPointMode": "connected",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "hide": false,
+ "refId": "C",
+ "target": "groupByNode(collectd.*.$domain.cephmetrics.derive.$cluster_name.rgw.{get_b,put_b}, 1, \"sumSeries\")",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Total Request Size - All RADOS Gateways",
+ "tooltip": {
+ "shared": true,
+ "sort": 1,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "decbytes",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "RadosGW Overview - All Gateways",
+ "titleSize": "h5"
+ },
+ {
+ "collapse": true,
+ "height": "300",
+ "panels": [
+ {
+ "content": "",
+ "height": "150",
+ "id": 50,
+ "links": [],
+ "minSpan": 1,
+ "mode": "markdown",
+ "scopedVars": {
+ "rgw_servers": {
+ "selected": true,
+ "text": "obj-rgw-1",
+ "value": "obj-rgw-1"
+ }
+ },
+ "span": 1,
+ "title": "",
+ "transparent": true,
+ "type": "text"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": null,
+ "decimals": 0,
+ "format": "short",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "height": "180",
+ "id": 43,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": " %",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "scopedVars": {
+ "rgw_servers": {
+ "selected": true,
+ "text": "obj-rgw-1",
+ "value": "obj-rgw-1"
+ }
+ },
+ "span": 2,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": true
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "refId": "A",
+ "target": "sumSeries(collectd.$rgw_servers.$domain.cpu.percent.{user,system,wait,steal,softirq,interrupt})",
+ "textEditor": true
+ }
+ ],
+ "thresholds": "",
+ "title": "CPU Utilization",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": null,
+ "decimals": 0,
+ "description": "RAM Utilization on $rgw_servers - including a usage history covering the 12 hours",
+ "format": "short",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "height": "180",
+ "hideTimeOverride": true,
+ "id": 46,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": "",
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": " %",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "scopedVars": {
+ "rgw_servers": {
+ "selected": true,
+ "text": "obj-rgw-1",
+ "value": "obj-rgw-1"
+ }
+ },
+ "span": 2,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": true
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "refId": "A",
+ "target": "collectd.$rgw_servers.$domain.memory.percent.used",
+ "textEditor": true
+ }
+ ],
+ "thresholds": "",
+ "timeFrom": "12h",
+ "timeShift": null,
+ "title": "RAM Utilization",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "description": "Shows the total network load on the rados gw host",
+ "fill": 1,
+ "height": "180",
+ "id": 150,
+ "legend": {
+ "alignAsTable": false,
+ "avg": false,
+ "current": true,
+ "max": false,
+ "min": false,
+ "rightSide": false,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 3,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "scopedVars": {
+ "rgw_servers": {
+ "selected": true,
+ "text": "obj-rgw-1",
+ "value": "obj-rgw-1"
+ }
+ },
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 3,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(sumSeries(consolidateBy(collectd.$rgw_servers.$domain.interface.{en,eth,bond}*.if_octets.rx, \"sum\")),-1)",
+ "textEditor": true
+ },
+ {
+ "refId": "B",
+ "target": "aliasByNode(sumSeries(consolidateBy(collectd.$rgw_servers.$domain.interface.{en,eth,bond}*.if_octets.tx, \"sum\")),-1)",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Network Load",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": false,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "decbytes",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "aliasColors": {
+ "Failed HTTP Requests": "#0A437C"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "description": "Shows the number of failed/aborted requests on this rados gateway during the last 10secs",
+ "fill": 3,
+ "height": "180",
+ "id": 151,
+ "legend": {
+ "alignAsTable": false,
+ "avg": false,
+ "current": true,
+ "hideEmpty": false,
+ "hideZero": false,
+ "max": false,
+ "min": false,
+ "rightSide": false,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 3,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "scopedVars": {
+ "rgw_servers": {
+ "selected": true,
+ "text": "obj-rgw-1",
+ "value": "obj-rgw-1"
+ }
+ },
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 3,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "alias(collectd.$rgw_servers.$domain.cephmetrics.derive.$cluster_name.rgw.failed_req, \"Failed HTTP Requests\")",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Failed HTTP Requests",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": false,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "none",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": false
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "fill": 1,
+ "id": 25,
+ "legend": {
+ "alignAsTable": false,
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "rightSide": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 4,
+ "nullPointMode": "connected",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "scopedVars": {
+ "rgw_servers": {
+ "selected": true,
+ "text": "obj-rgw-1",
+ "value": "obj-rgw-1"
+ }
+ },
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 4,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "GET",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "collectd.obj-rgw-1.storage.lab.cephmetrics.derive.ceph.rgw.get",
+ "policy": "default",
+ "query": "SELECT mean(\"value\") FROM /collectd.$rgw_name.cephmetrics.derive.ceph.rgw.get$/ WHERE $timeFilter GROUP BY time($__interval) fill(null)",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$rgw_servers.$domain.cephmetrics.derive.$cluster_name.rgw.get, 'GET')",
+ "textEditor": true
+ },
+ {
+ "alias": "PUT",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "collectd.obj-rgw-1.storage.lab.cephmetrics.derive.ceph.rgw.get",
+ "policy": "default",
+ "query": "SELECT mean(\"value\") FROM /collectd.$rgw_name.cephmetrics.derive.ceph.rgw.put$/ WHERE $timeFilter GROUP BY time($__interval) fill(null)",
+ "rawQuery": true,
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$rgw_servers.$domain.cephmetrics.derive.$cluster_name.rgw.put, 'PUT')",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Requests",
+ "tooltip": {
+ "shared": true,
+ "sort": 1,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "fill": 1,
+ "id": 19,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 4,
+ "nullPointMode": "null as zero",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "scopedVars": {
+ "rgw_servers": {
+ "selected": true,
+ "text": "obj-rgw-1",
+ "value": "obj-rgw-1"
+ }
+ },
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 4,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "GET",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$interval"
+ ],
+ "type": "time"
+ }
+ ],
+ "hide": true,
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.rgw.get_initial_lat",
+ "policy": "default",
+ "query": "SELECT mean(\"value\") FROM /collectd.$rgw_name.cephmetrics.gauge.$cluster_name.rgw.get_initial_lat/ WHERE $timeFilter GROUP BY time($interval)",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "collectd.$rgw_servers.$domain.cephmetrics.derive.$cluster_name.rgw.get_initial_lat_avgcount",
+ "textEditor": true
+ },
+ {
+ "alias": "GET",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$interval"
+ ],
+ "type": "time"
+ }
+ ],
+ "hide": true,
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.rgw.get_initial_lat",
+ "policy": "default",
+ "query": "SELECT mean(\"value\") FROM /collectd.$rgw_name.cephmetrics.gauge.$cluster_name.rgw.get_initial_lat/ WHERE $timeFilter GROUP BY time($interval)",
+ "rawQuery": true,
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "collectd.$rgw_servers.$domain.cephmetrics.derive.$cluster_name.rgw.get_initial_lat_sum",
+ "textEditor": true
+ },
+ {
+ "refId": "C",
+ "target": "alias(divideSeries(#B, #A),\"GET\")",
+ "targetFull": "alias(divideSeries(collectd.$rgw_servers.$domain.cephmetrics.derive.$cluster_name.rgw.get_initial_lat_sum, collectd.$rgw_servers.$domain.cephmetrics.derive.$cluster_name.rgw.get_initial_lat_avgcount),\"GET\")",
+ "textEditor": true
+ },
+ {
+ "alias": "GET",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$interval"
+ ],
+ "type": "time"
+ }
+ ],
+ "hide": true,
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.rgw.get_initial_lat",
+ "policy": "default",
+ "query": "SELECT mean(\"value\") FROM /collectd.$rgw_name.cephmetrics.gauge.$cluster_name.rgw.get_initial_lat/ WHERE $timeFilter GROUP BY time($interval)",
+ "rawQuery": true,
+ "refId": "D",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "collectd.$rgw_servers.$domain.cephmetrics.derive.$cluster_name.rgw.put_initial_lat_avgcount"
+ },
+ {
+ "alias": "GET",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$interval"
+ ],
+ "type": "time"
+ }
+ ],
+ "hide": true,
+ "measurement": "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.rgw.get_initial_lat",
+ "policy": "default",
+ "query": "SELECT mean(\"value\") FROM /collectd.$rgw_name.cephmetrics.gauge.$cluster_name.rgw.get_initial_lat/ WHERE $timeFilter GROUP BY time($interval)",
+ "rawQuery": true,
+ "refId": "E",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "collectd.$rgw_servers.$domain.cephmetrics.derive.$cluster_name.rgw.put_initial_lat_sum"
+ },
+ {
+ "refId": "F",
+ "target": "alias(divideSeries(#E,#D), \"PUT\")",
+ "targetFull": "alias(divideSeries(collectd.$rgw_servers.$domain.cephmetrics.derive.$cluster_name.rgw.put_initial_lat_sum,collectd.$rgw_servers.$domain.cephmetrics.derive.$cluster_name.rgw.put_initial_lat_avgcount), \"PUT\")",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Request Latency",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "s",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "fill": 1,
+ "id": 40,
+ "legend": {
+ "alignAsTable": false,
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "rightSide": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 4,
+ "nullPointMode": "connected",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "scopedVars": {
+ "rgw_servers": {
+ "selected": true,
+ "text": "obj-rgw-1",
+ "value": "obj-rgw-1"
+ }
+ },
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 4,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "GET",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "collectd.obj-rgw-1.storage.lab.cephmetrics.derive.ceph.rgw.get",
+ "policy": "default",
+ "query": "SELECT mean(\"value\") FROM /collectd.$rgw_name.cephmetrics.derive.ceph.rgw.get$/ WHERE $timeFilter GROUP BY time($__interval) fill(null)",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$rgw_servers.$domain.cephmetrics.derive.$cluster_name.rgw.get_b, 'GET')",
+ "textEditor": true
+ },
+ {
+ "alias": "PUT",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "collectd.obj-rgw-1.storage.lab.cephmetrics.derive.ceph.rgw.get",
+ "policy": "default",
+ "query": "SELECT mean(\"value\") FROM /collectd.$rgw_name.cephmetrics.derive.ceph.rgw.put$/ WHERE $timeFilter GROUP BY time($__interval) fill(null)",
+ "rawQuery": true,
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [],
+ "target": "alias(collectd.$rgw_servers.$domain.cephmetrics.derive.$cluster_name.rgw.put_b, 'PUT')",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "HTTP GET/PUT Request Sizes",
+ "tooltip": {
+ "shared": true,
+ "sort": 1,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "decbytes",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ }
+ ],
+ "repeat": "rgw_servers",
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "RGW Host : $rgw_servers",
+ "titleSize": "h5"
+ }
+ ],
+ "schemaVersion": 14,
+ "style": "dark",
+ "tags": [
+ "overview"
+ ],
+ "templating": {
+ "list": [
+ {
+ "allValue": null,
+ "current": {
+ "text": "ceph",
+ "value": "ceph"
+ },
+ "datasource": "Local",
+ "hide": 2,
+ "includeAll": false,
+ "label": null,
+ "multi": false,
+ "name": "cluster_name",
+ "options": [],
+ "query": "collectd.*.$domain.cephmetrics.gauge.*",
+ "refresh": 1,
+ "regex": "",
+ "sort": 0,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ },
+ {
+ "allValue": null,
+ "current": {
+ "text": "storage.lab",
+ "value": "storage.lab"
+ },
+ "hide": 2,
+ "includeAll": false,
+ "label": null,
+ "multi": false,
+ "name": "domain",
+ "options": [
+ {
+ "selected": true,
+ "text": "storage.lab",
+ "value": "storage.lab"
+ }
+ ],
+ "query": "storage.lab",
+ "type": "custom"
+ },
+ {
+ "allValue": null,
+ "current": {
+ "text": "obj-rgw-1",
+ "value": "obj-rgw-1"
+ },
+ "hide": 2,
+ "includeAll": true,
+ "label": null,
+ "multi": true,
+ "name": "rgw_servers",
+ "options": [
+ {
+ "selected": true,
+ "text": "obj-rgw-1",
+ "value": "obj-rgw-1"
+ }
+ ],
+ "query": "obj-rgw-1",
+ "type": "custom"
+ },
+ {
+ "allValue": null,
+ "current": {
+ "selected": true,
+ "text": "95",
+ "value": "95"
+ },
+ "hide": 2,
+ "includeAll": false,
+ "label": null,
+ "multi": true,
+ "name": "percentile",
+ "options": [
+ {
+ "selected": false,
+ "text": "90",
+ "value": "90"
+ },
+ {
+ "selected": true,
+ "text": "95",
+ "value": "95"
+ },
+ {
+ "selected": false,
+ "text": "98",
+ "value": "98"
+ }
+ ],
+ "query": "90,95,98",
+ "type": "custom"
+ }
+ ]
+ },
+ "time": {
+ "from": "now-1h",
+ "to": "now"
+ },
+ "timepicker": {
+ "refresh_intervals": [
+ "5s",
+ "10s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ],
+ "time_options": [
+ "5m",
+ "15m",
+ "1h",
+ "6h",
+ "12h",
+ "24h",
+ "2d",
+ "7d",
+ "30d"
+ ]
+ },
+ "timezone": "browser",
+ "title": "Ceph RGW Workload",
+ "version": 1
+ },
+ "meta": {
+ "canEdit": true,
+ "canSave": true,
+ "canStar": true,
+ "created": "2017-08-01T05:18:58Z",
+ "createdBy": "admin@localhost",
+ "expires": "0001-01-01T00:00:00Z",
+ "slug": "ceph-rgw-workload",
+ "type": "db",
+ "updated": "2017-08-01T20:58:52Z",
+ "updatedBy": "admin@localhost",
+ "version": 1
+ }
+}
--- /dev/null
+{
+ "dashboard": {
+ "annotations": {
+ "list": []
+ },
+ "editable": false,
+ "gnetId": null,
+ "graphTooltip": 0,
+ "hideControls": true,
+ "id": 10,
+ "links": [
+ {
+ "asDropdown": true,
+ "icon": "external link",
+ "tags": [
+ "overview"
+ ],
+ "title": "Shortcuts",
+ "type": "dashboards"
+ }
+ ],
+ "refresh": "10s",
+ "rows": [
+ {
+ "collapse": false,
+ "height": 250,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "id": 8,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 12,
+ "nullPointMode": "connected",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "repeat": null,
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 12,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "groupByNode(collectd.$osd_servers.$domain.cephmetrics.gauge.$ceph_cluster.osd.*.perf.util,1,\"maxSeries\")",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "$osd_servers OSD Hosts Disk Utilization Peak",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "",
+ "logBase": 1,
+ "max": "100",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "All OSD Hosts",
+ "titleSize": "h5"
+ },
+ {
+ "collapse": false,
+ "height": 250,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "id": 5,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [
+ {
+ "dashUri": "db/osd-node-detail",
+ "dashboard": "OSD Node Detail",
+ "includeVars": true,
+ "keepTime": true,
+ "targetBlank": true,
+ "title": "$osd_servers Node Details",
+ "type": "dashboard"
+ }
+ ],
+ "minSpan": 3,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "repeat": "osd_servers",
+ "scopedVars": {
+ "osd_servers": {
+ "selected": false,
+ "text": "obj-osd-1",
+ "value": "obj-osd-1"
+ }
+ },
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 4,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "alias(percentileOfSeries(group(collectd.$osd_servers.$domain.cephmetrics.gauge.$ceph_cluster.osd.*.perf.util),$percentile),\"all disk busy @$percentile%ile\")",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "$osd_servers Disk Utilisation @ $percentile%ile",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": "100",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "id": 6,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [
+ {
+ "dashUri": "db/osd-node-detail",
+ "dashboard": "OSD Node Detail",
+ "includeVars": true,
+ "keepTime": true,
+ "targetBlank": true,
+ "title": "$osd_servers Node Details",
+ "type": "dashboard"
+ }
+ ],
+ "minSpan": 3,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "repeat": null,
+ "repeatIteration": 1501621235322,
+ "repeatPanelId": 5,
+ "scopedVars": {
+ "osd_servers": {
+ "selected": false,
+ "text": "obj-osd-2",
+ "value": "obj-osd-2"
+ }
+ },
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 4,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "alias(percentileOfSeries(group(collectd.$osd_servers.$domain.cephmetrics.gauge.$ceph_cluster.osd.*.perf.util),$percentile),\"all disk busy @$percentile%ile\")",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "$osd_servers Disk Utilisation @ $percentile%ile",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": "100",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "id": 7,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [
+ {
+ "dashUri": "db/osd-node-detail",
+ "dashboard": "OSD Node Detail",
+ "includeVars": true,
+ "keepTime": true,
+ "targetBlank": true,
+ "title": "$osd_servers Node Details",
+ "type": "dashboard"
+ }
+ ],
+ "minSpan": 3,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "repeat": null,
+ "repeatIteration": 1501621235322,
+ "repeatPanelId": 5,
+ "scopedVars": {
+ "osd_servers": {
+ "selected": false,
+ "text": "obj-osd-3",
+ "value": "obj-osd-3"
+ }
+ },
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 4,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "alias(percentileOfSeries(group(collectd.$osd_servers.$domain.cephmetrics.gauge.$ceph_cluster.osd.*.perf.util),$percentile),\"all disk busy @$percentile%ile\")",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "$osd_servers Disk Utilisation @ $percentile%ile",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": "100",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "Each OSD Host's $percentile%ile Disk Utilisation",
+ "titleSize": "h5"
+ },
+ {
+ "collapse": false,
+ "height": 250,
+ "panels": [],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": false,
+ "title": "Dashboard Row",
+ "titleSize": "h6"
+ }
+ ],
+ "schemaVersion": 14,
+ "style": "dark",
+ "tags": [
+ "overview"
+ ],
+ "templating": {
+ "list": [
+ {
+ "allValue": null,
+ "current": {
+ "selected": true,
+ "text": "storage.lab",
+ "value": "storage.lab"
+ },
+ "hide": 2,
+ "includeAll": false,
+ "label": null,
+ "multi": false,
+ "name": "domain",
+ "options": [
+ {
+ "selected": true,
+ "text": "storage.lab",
+ "value": "storage.lab"
+ }
+ ],
+ "query": "storage.lab",
+ "type": "custom"
+ },
+ {
+ "allValue": null,
+ "current": {
+ "text": "ceph",
+ "value": "ceph"
+ },
+ "datasource": "Local",
+ "hide": 2,
+ "includeAll": false,
+ "label": null,
+ "multi": false,
+ "name": "ceph_cluster",
+ "options": [],
+ "query": "collectd.*.$domain.cephmetrics.gauge.*",
+ "refresh": 1,
+ "regex": "",
+ "sort": 0,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ },
+ {
+ "allValue": null,
+ "current": {
+ "selected": true,
+ "text": "95",
+ "value": "95"
+ },
+ "hide": 2,
+ "includeAll": false,
+ "label": null,
+ "multi": false,
+ "name": "percentile",
+ "options": [
+ {
+ "selected": false,
+ "text": "80",
+ "value": "80"
+ },
+ {
+ "selected": false,
+ "text": "85",
+ "value": "85"
+ },
+ {
+ "selected": false,
+ "text": "90",
+ "value": "90"
+ },
+ {
+ "selected": true,
+ "text": "95",
+ "value": "95"
+ },
+ {
+ "selected": false,
+ "text": "98",
+ "value": "98"
+ }
+ ],
+ "query": "80,85,90,95,98",
+ "type": "custom"
+ },
+ {
+ "allValue": null,
+ "current": {
+ "selected": true,
+ "text": "All",
+ "value": "$__all"
+ },
+ "hide": 2,
+ "includeAll": true,
+ "label": null,
+ "multi": true,
+ "name": "osd_servers",
+ "options": [
+ {
+ "selected": true,
+ "text": "All",
+ "value": "$__all"
+ },
+ {
+ "selected": false,
+ "text": "obj-osd-1",
+ "value": "obj-osd-1"
+ },
+ {
+ "selected": false,
+ "text": "obj-osd-2",
+ "value": "obj-osd-2"
+ },
+ {
+ "selected": false,
+ "text": "obj-osd-3",
+ "value": "obj-osd-3"
+ }
+ ],
+ "query": "obj-osd-1,obj-osd-2,obj-osd-3",
+ "type": "custom"
+ }
+ ]
+ },
+ "time": {
+ "from": "now-1h",
+ "to": "now"
+ },
+ "timepicker": {
+ "refresh_intervals": [
+ "5s",
+ "10s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ],
+ "time_options": [
+ "5m",
+ "15m",
+ "1h",
+ "6h",
+ "12h",
+ "24h",
+ "2d",
+ "7d",
+ "30d"
+ ]
+ },
+ "timezone": "browser",
+ "title": "Disk Busy by Server",
+ "version": 2
+ },
+ "meta": {
+ "canEdit": true,
+ "canSave": true,
+ "canStar": true,
+ "created": "2017-08-01T05:18:58Z",
+ "createdBy": "admin@localhost",
+ "expires": "0001-01-01T00:00:00Z",
+ "slug": "disk-busy-by-server",
+ "type": "db",
+ "updated": "2017-08-01T21:02:25Z",
+ "updatedBy": "admin@localhost",
+ "version": 2
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "dashboard": {
+ "annotations": {
+ "list": []
+ },
+ "editable": false,
+ "gnetId": null,
+ "graphTooltip": 0,
+ "hideControls": true,
+ "id": 12,
+ "links": [
+ {
+ "asDropdown": true,
+ "icon": "external link",
+ "tags": [
+ "overview"
+ ],
+ "title": "Shortcuts",
+ "type": "dashboards"
+ }
+ ],
+ "refresh": "10s",
+ "rows": [
+ {
+ "collapse": false,
+ "height": 250,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "id": 8,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 12,
+ "nullPointMode": "connected",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "repeat": null,
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 12,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "groupByNode(collectd.$osd_servers.$domain.cephmetrics.gauge.$cluster_name.osd.*.perf.iops,1,\"sumSeries\")",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "$osd_servers OSD Server IOPS",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "All Servers by IOPS",
+ "titleSize": "h5"
+ },
+ {
+ "collapse": true,
+ "height": 250,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "id": 5,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [
+ {
+ "dashUri": "db/osd-node-detail",
+ "dashboard": "OSD Node Detail",
+ "includeVars": true,
+ "keepTime": true,
+ "targetBlank": true,
+ "title": "$osd_servers Node Details",
+ "type": "dashboard"
+ }
+ ],
+ "minSpan": 3,
+ "nullPointMode": "connected",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "repeat": "osd_servers",
+ "scopedVars": {
+ "osd_servers": {
+ "selected": false,
+ "text": "obj-osd-1",
+ "value": "obj-osd-1"
+ }
+ },
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 4,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "alias(sumSeries(collectd.$osd_servers.$domain.cephmetrics.gauge.$cluster_name.osd.*.perf.iops),\"total IOPS for all disks on $osd_servers\")",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "$osd_servers Total OSD IOPS",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "id": 6,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [
+ {
+ "dashUri": "db/osd-node-detail",
+ "dashboard": "OSD Node Detail",
+ "includeVars": true,
+ "keepTime": true,
+ "targetBlank": true,
+ "title": "$osd_servers Node Details",
+ "type": "dashboard"
+ }
+ ],
+ "minSpan": 3,
+ "nullPointMode": "connected",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "repeat": null,
+ "repeatIteration": 1501622535508,
+ "repeatPanelId": 5,
+ "scopedVars": {
+ "osd_servers": {
+ "selected": false,
+ "text": "obj-osd-2",
+ "value": "obj-osd-2"
+ }
+ },
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 4,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "alias(sumSeries(collectd.$osd_servers.$domain.cephmetrics.gauge.$cluster_name.osd.*.perf.iops),\"total IOPS for all disks on $osd_servers\")",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "$osd_servers Total OSD IOPS",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "id": 7,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [
+ {
+ "dashUri": "db/osd-node-detail",
+ "dashboard": "OSD Node Detail",
+ "includeVars": true,
+ "keepTime": true,
+ "targetBlank": true,
+ "title": "$osd_servers Node Details",
+ "type": "dashboard"
+ }
+ ],
+ "minSpan": 3,
+ "nullPointMode": "connected",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "repeat": null,
+ "repeatIteration": 1501622535508,
+ "repeatPanelId": 5,
+ "scopedVars": {
+ "osd_servers": {
+ "selected": false,
+ "text": "obj-osd-3",
+ "value": "obj-osd-3"
+ }
+ },
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 4,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "alias(sumSeries(collectd.$osd_servers.$domain.cephmetrics.gauge.$cluster_name.osd.*.perf.iops),\"total IOPS for all disks on $osd_servers\")",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "$osd_servers Total OSD IOPS",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "Each OSD Node's IOPS Load",
+ "titleSize": "h5"
+ },
+ {
+ "collapse": false,
+ "height": 250,
+ "panels": [],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": false,
+ "title": "Dashboard Row",
+ "titleSize": "h6"
+ }
+ ],
+ "schemaVersion": 14,
+ "style": "dark",
+ "tags": [
+ "overview"
+ ],
+ "templating": {
+ "list": [
+ {
+ "allValue": null,
+ "current": {
+ "selected": true,
+ "text": "storage.lab",
+ "value": "storage.lab"
+ },
+ "hide": 2,
+ "includeAll": false,
+ "label": null,
+ "multi": false,
+ "name": "domain",
+ "options": [
+ {
+ "selected": true,
+ "text": "storage.lab",
+ "value": "storage.lab"
+ }
+ ],
+ "query": "storage.lab",
+ "type": "custom"
+ },
+ {
+ "allValue": null,
+ "current": {
+ "selected": true,
+ "text": "ceph",
+ "value": "ceph"
+ },
+ "datasource": "Local",
+ "hide": 2,
+ "includeAll": false,
+ "label": null,
+ "multi": false,
+ "name": "cluster_name",
+ "options": [],
+ "query": "collectd.*.$domain.cephmetrics.gauge.*",
+ "refresh": 1,
+ "regex": "",
+ "sort": 0,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ },
+ {
+ "allValue": null,
+ "current": {
+ "selected": true,
+ "text": "All",
+ "value": "$__all"
+ },
+ "hide": 2,
+ "includeAll": true,
+ "label": null,
+ "multi": true,
+ "name": "osd_servers",
+ "options": [
+ {
+ "selected": true,
+ "text": "All",
+ "value": "$__all"
+ },
+ {
+ "selected": false,
+ "text": "obj-osd-1",
+ "value": "obj-osd-1"
+ },
+ {
+ "selected": false,
+ "text": "obj-osd-2",
+ "value": "obj-osd-2"
+ },
+ {
+ "selected": false,
+ "text": "obj-osd-3",
+ "value": "obj-osd-3"
+ }
+ ],
+ "query": "obj-osd-1,obj-osd-2,obj-osd-3",
+ "type": "custom"
+ }
+ ]
+ },
+ "time": {
+ "from": "now-1h",
+ "to": "now"
+ },
+ "timepicker": {
+ "refresh_intervals": [
+ "5s",
+ "10s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ],
+ "time_options": [
+ "5m",
+ "15m",
+ "1h",
+ "6h",
+ "12h",
+ "24h",
+ "2d",
+ "7d",
+ "30d"
+ ]
+ },
+ "timezone": "browser",
+ "title": "IOPS by Server",
+ "version": 4
+ },
+ "meta": {
+ "canEdit": true,
+ "canSave": true,
+ "canStar": true,
+ "created": "2017-08-01T05:18:58Z",
+ "createdBy": "admin@localhost",
+ "expires": "0001-01-01T00:00:00Z",
+ "slug": "iops-by-server",
+ "type": "db",
+ "updated": "2017-08-01T21:23:04Z",
+ "updatedBy": "admin@localhost",
+ "version": 4
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "dashboard": {
+ "annotations": {
+ "list": []
+ },
+ "editable": false,
+ "gnetId": null,
+ "graphTooltip": 0,
+ "hideControls": true,
+ "id": 28,
+ "links": [
+ {
+ "asDropdown": true,
+ "icon": "external link",
+ "tags": [
+ "overview"
+ ],
+ "title": "Shortcuts",
+ "type": "dashboards"
+ }
+ ],
+ "refresh": "10s",
+ "rows": [
+ {
+ "collapse": false,
+ "height": "200px",
+ "panels": [
+ {
+ "content": "",
+ "height": "100",
+ "id": 19,
+ "links": [],
+ "minSpan": 2,
+ "mode": "markdown",
+ "span": 2,
+ "title": "",
+ "transparent": true,
+ "type": "text"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": null,
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "height": "100",
+ "hideTimeOverride": true,
+ "id": 1,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": "1",
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "refId": "A",
+ "target": "maxSeries(consolidateBy(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.iscsi.gw_stats.tpg_count), \"max\"))",
+ "textEditor": true
+ }
+ ],
+ "thresholds": "",
+ "timeFrom": "1m",
+ "timeShift": null,
+ "title": "Gateways",
+ "type": "singlestat",
+ "valueFontSize": "70%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": null,
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "height": "100",
+ "hideTimeOverride": true,
+ "id": 2,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": "1",
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "refId": "A",
+ "target": "maxSeries(consolidateBy(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.iscsi.gw_stats.client_count), \"max\"))",
+ "textEditor": true
+ }
+ ],
+ "thresholds": "",
+ "timeFrom": "1m",
+ "title": "Clients",
+ "type": "singlestat",
+ "valueFontSize": "70%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": null,
+ "description": "Sessions shows the number of iSCSI clients currently logged in to the gateway group",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "height": "100",
+ "hideTimeOverride": true,
+ "id": 5,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": "",
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "refId": "A",
+ "target": "maxSeries(keepLastValue(consolidateBy(collectd.*.$domain.cephmetrics.gauge.$cluster_name.iscsi.gw_stats.sessions, \"max\")))",
+ "textEditor": true
+ }
+ ],
+ "thresholds": "",
+ "timeFrom": "1m",
+ "timeShift": null,
+ "title": "Sessions",
+ "type": "singlestat",
+ "valueFontSize": "70%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": null,
+ "decimals": 0,
+ "description": "Capacity refers to the total capacity defined within the iSCSI gateway group, and available to iSCSI clients",
+ "format": "bytes",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "height": "100",
+ "hideTimeOverride": true,
+ "id": 4,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": "",
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 2,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "hide": false,
+ "refId": "A",
+ "target": "maxSeries(consolidateBy(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.iscsi.gw_stats.capacity), \"max\"))",
+ "textEditor": true
+ }
+ ],
+ "thresholds": "",
+ "timeFrom": "1m",
+ "timeShift": null,
+ "title": "Defined Capacity",
+ "type": "singlestat",
+ "valueFontSize": "70%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": null,
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "height": "100",
+ "hideTimeOverride": true,
+ "id": 3,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": "",
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "refId": "A",
+ "target": "maxSeries(consolidateBy(collectd.*.$domain.cephmetrics.gauge.$cluster_name.iscsi.gw_stats.lun_count, \"max\"))",
+ "textEditor": true
+ }
+ ],
+ "thresholds": "",
+ "timeFrom": "1m",
+ "timeShift": null,
+ "title": "LUNs",
+ "type": "singlestat",
+ "valueFontSize": "70%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": null,
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "height": "100",
+ "hideTimeOverride": true,
+ "id": 18,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": "",
+ "minSpan": 1,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 1,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "hide": true,
+ "refId": "A",
+ "target": "maxSeries(consolidateBy(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.iscsi.gw_stats.lun_count), \"max\"))",
+ "textEditor": true
+ },
+ {
+ "hide": true,
+ "refId": "B",
+ "target": "alias(countSeries(groupByNode(currentAbove(collectd.$iscsi_gateways.$domain.cephmetrics.gauge.$cluster_name.iscsi.gw_clients.$clients.luns.*.size,0.5),-2,\"maxSeries\")),\"mapped\")",
+ "textEditor": true
+ },
+ {
+ "refId": "C",
+ "target": "diffSeries(#A,#B)",
+ "targetFull": "diffSeries(maxSeries(consolidateBy(keepLastValue(collectd.*.$domain.cephmetrics.gauge.$cluster_name.iscsi.gw_stats.lun_count), \"max\")),alias(countSeries(groupByNode(currentAbove(collectd.$iscsi_gateways.$domain.cephmetrics.gauge.$cluster_name.iscsi.gw_clients.$clients.luns.*.size,0.5),-2,\"maxSeries\")),\"mapped\"))",
+ "textEditor": true
+ }
+ ],
+ "thresholds": "",
+ "timeFrom": "1m",
+ "title": "Unused LUNs",
+ "type": "singlestat",
+ "valueFontSize": "70%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "content": "",
+ "height": "100",
+ "id": 22,
+ "links": [],
+ "minSpan": 3,
+ "mode": "markdown",
+ "span": 3,
+ "title": "",
+ "transparent": true,
+ "type": "text"
+ },
+ {
+ "content": "",
+ "height": "100",
+ "id": 23,
+ "links": [],
+ "minSpan": 1,
+ "mode": "markdown",
+ "span": 1,
+ "title": "",
+ "transparent": true,
+ "type": "text"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": null,
+ "decimals": 0,
+ "description": "Total IOPS across all iSCSI gateways",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "height": "200",
+ "id": 6,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": "",
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 2,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": true
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "refId": "A",
+ "target": "sumSeries(consolidateBy(keepLastValue(collectd.*.$domain.cephmetrics.derive.$cluster_name.iscsi.gw_stats.iops), \"max\"))",
+ "textEditor": true
+ }
+ ],
+ "thresholds": "",
+ "title": "IOPS",
+ "type": "singlestat",
+ "valueFontSize": "70%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": null,
+ "decimals": 0,
+ "description": "Total read/write throughput across all iSCSI gateways",
+ "format": "decbytes",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "height": "200",
+ "id": 7,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": "",
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 2,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": true
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "refId": "A",
+ "target": "sumSeries(consolidateBy(keepLastValue(collectd.*.$domain.cephmetrics.derive.$cluster_name.iscsi.gw_stats.total_bytes_per_sec), \"max\"))",
+ "textEditor": true
+ }
+ ],
+ "thresholds": "",
+ "title": "Throughput",
+ "type": "singlestat",
+ "valueFontSize": "70%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "height": "",
+ "id": 14,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 2,
+ "links": [],
+ "minSpan": 3,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 3,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "groupByNode(collectd.$iscsi_gateways.$domain.interface.{bond,en,eth}*.if_octets.{tx,rx},1, \"sum\")",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Network Load by Gateway",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "decbytes",
+ "label": "",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "cacheTimeout": null,
+ "combine": {
+ "label": "Others",
+ "threshold": 0
+ },
+ "datasource": null,
+ "fontSize": "80%",
+ "format": "short",
+ "height": "200",
+ "hideTimeOverride": true,
+ "id": 26,
+ "interval": null,
+ "legend": {
+ "show": true,
+ "values": true
+ },
+ "legendType": "Right side",
+ "links": [],
+ "maxDataPoints": 3,
+ "minSpan": 3,
+ "nullPointMode": "connected",
+ "pieType": "pie",
+ "span": 3,
+ "strokeWidth": 1,
+ "targets": [
+ {
+ "hide": true,
+ "refId": "A",
+ "target": "currentAbove(keepLastValue(collectd.$iscsi_gateways.$domain.cephmetrics.gauge.$cluster_name.iscsi.gw_clients.*.luns.*.active_path),0.5)",
+ "textEditor": true
+ },
+ {
+ "refId": "B",
+ "target": "groupByNode(#A,1,\"sumSeries\")",
+ "targetFull": "groupByNode(currentAbove(keepLastValue(collectd.$iscsi_gateways.$domain.cephmetrics.gauge.$cluster_name.iscsi.gw_clients.*.luns.*.active_path),0.5),1,\"sumSeries\")",
+ "textEditor": true
+ }
+ ],
+ "timeFrom": "1m",
+ "title": "Primary LUN Paths Per Gateway",
+ "type": "grafana-piechart-panel",
+ "valueName": "current"
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "iSCSI Gateway Group : $gw_name",
+ "titleSize": "h5"
+ },
+ {
+ "collapse": true,
+ "height": 250,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 0,
+ "height": "",
+ "id": 21,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 2,
+ "links": [],
+ "minSpan": 6,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "groupByNode(collectd.$iscsi_gateways.$domain.cephmetrics.derive.$cluster_name.iscsi.gw_stats.iops,1, \"sum\")",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "IOPS Load by Gateway",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "none",
+ "label": "IOPS",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 0,
+ "height": "",
+ "id": 27,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 2,
+ "links": [],
+ "minSpan": 6,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "groupByNode(collectd.$iscsi_gateways.$domain.cephmetrics.derive.$cluster_name.iscsi.gw_stats.total_bytes_per_sec,1, \"sum\")",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Throughput by Gateway",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "decbytes",
+ "label": "Throughput",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 0,
+ "height": "",
+ "id": 12,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 2,
+ "links": [],
+ "minSpan": 6,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "groupByNode(collectd.$iscsi_gateways.$domain.cpu.percent.{interrupt,steal,system,user,wait},1, \"sum\")",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Gateway CPU Load",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "percent",
+ "label": "",
+ "logBase": 1,
+ "max": "100",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 0,
+ "height": "",
+ "id": 24,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 2,
+ "links": [],
+ "minSpan": 6,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "groupByNode(collectd.$iscsi_gateways.$domain.memory.percent.used,1, \"sum\")",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Gateway Memory Usage",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "percent",
+ "label": "",
+ "logBase": 1,
+ "max": "100",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "Gateway Load",
+ "titleSize": "h5"
+ },
+ {
+ "collapse": true,
+ "height": 250,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 0,
+ "id": 8,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 6,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "currentAbove(groupByNode(collectd.*.$domain.cephmetrics.derive.$cluster_name.iscsi.gw_clients.$clients.luns.*.iops,-4,\"sum\"),0)",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "IOPS by Client",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "none",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 0,
+ "id": 11,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 6,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "currentAbove(groupByNode(collectd.*.$domain.cephmetrics.derive.$cluster_name.iscsi.gw_clients.$clients.luns.*.total_bytes_per_sec,-4,\"sum\"),0)",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Throughput by Client",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "decbytes",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 0,
+ "id": 30,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 6,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "limit(groupByNode(currentAbove(collectd.*.$domain.cephmetrics.derive.$cluster_name.iscsi.gw_clients.$clients.luns.*.iops,0),-2,\"sum\"),10)",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "IOPS by RBD Image for Client '$clients'",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "none",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 0,
+ "id": 31,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 6,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "limit(groupByNode(currentAbove(collectd.*.$domain.cephmetrics.derive.$cluster_name.iscsi.gw_clients.$clients.luns.*.total_bytes_per_sec,0),-2,\"sum\"),10)",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Throughput by RBD Image for Client '$clients'",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "decbytes",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "Client Load : '$clients'",
+ "titleSize": "h5"
+ },
+ {
+ "collapse": true,
+ "height": 250,
+ "panels": [
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "fontSize": "100%",
+ "id": 15,
+ "links": [],
+ "minSpan": 4,
+ "pageSize": 10,
+ "scroll": false,
+ "showHeader": true,
+ "sort": {
+ "col": 0,
+ "desc": true
+ },
+ "span": 4,
+ "styles": [
+ {
+ "alias": "Time",
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Time",
+ "type": "date"
+ },
+ {
+ "alias": "Disk (pool-image)",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "Metric",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ },
+ {
+ "alias": "Size",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "Current",
+ "thresholds": [],
+ "type": "number",
+ "unit": "bytes"
+ },
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 2,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "refId": "A",
+ "target": "groupByNode(maximumAbove(collectd.*.$domain.cephmetrics.gauge.$cluster_name.iscsi.gw_clients.$clients.luns.*.size,0),-2,\"maxSeries\")",
+ "textEditor": true
+ }
+ ],
+ "title": "RBD Images Masked to '$clients'",
+ "transform": "timeseries_aggregations",
+ "type": "table"
+ },
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "fontSize": "100%",
+ "id": 16,
+ "links": [],
+ "minSpan": 4,
+ "pageSize": 10,
+ "scroll": false,
+ "showHeader": true,
+ "sort": {
+ "col": 0,
+ "desc": true
+ },
+ "span": 4,
+ "styles": [
+ {
+ "alias": "Time",
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Time",
+ "type": "date"
+ },
+ {
+ "alias": "Client",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "Metric",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ },
+ {
+ "alias": "# Luns Masked",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 0,
+ "pattern": "Current",
+ "thresholds": [],
+ "type": "number",
+ "unit": "none"
+ },
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 2,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "refId": "A",
+ "target": "groupByNode(currentAbove(collectd.*.$domain.cephmetrics.gauge.$cluster_name.iscsi.gw_clients.$clients.lun_count,0),-2,\"maxSeries\")",
+ "textEditor": true
+ }
+ ],
+ "title": "Luns Per Client",
+ "transform": "timeseries_aggregations",
+ "type": "table"
+ },
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "fontSize": "100%",
+ "id": 17,
+ "links": [],
+ "maxDataPoints": "1",
+ "minSpan": 4,
+ "pageSize": 10,
+ "scroll": false,
+ "showHeader": true,
+ "sort": {
+ "col": 0,
+ "desc": true
+ },
+ "span": 4,
+ "styles": [
+ {
+ "alias": "Time",
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Time",
+ "type": "date"
+ },
+ {
+ "alias": "Client",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "Metric",
+ "thresholds": [],
+ "type": "hidden",
+ "unit": "short"
+ },
+ {
+ "alias": "Capacity",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "Current",
+ "thresholds": [],
+ "type": "number",
+ "unit": "bytes"
+ },
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 2,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "refId": "A",
+ "target": "sumSeries(groupByNode(keepLastValue(collectd.$iscsi_gateways.$domain.cephmetrics.gauge.$cluster_name.iscsi.gw_clients.$clients.luns.*.size),-2,\"maxSeries\"))",
+ "textEditor": true
+ }
+ ],
+ "title": "Client '$clients' - Masked Capacity",
+ "transform": "timeseries_aggregations",
+ "type": "table"
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "Client Configuration : '$clients'",
+ "titleSize": "h5"
+ }
+ ],
+ "schemaVersion": 14,
+ "style": "dark",
+ "tags": [],
+ "templating": {
+ "list": [
+ {
+ "allValue": null,
+ "current": {
+ "selected": true,
+ "text": "test.lab",
+ "value": "test.lab"
+ },
+ "hide": 2,
+ "includeAll": false,
+ "label": null,
+ "multi": false,
+ "name": "domain",
+ "options": [
+ {
+ "selected": true,
+ "text": "test.lab",
+ "value": "test.lab"
+ }
+ ],
+ "query": "test.lab",
+ "type": "custom"
+ },
+ {
+ "allValue": null,
+ "current": {
+ "text": "ceph",
+ "value": "ceph"
+ },
+ "datasource": "Local",
+ "hide": 0,
+ "includeAll": false,
+ "label": null,
+ "multi": false,
+ "name": "cluster_name",
+ "options": [],
+ "query": "collectd.*.$domain.cephmetrics.gauge.*",
+ "refresh": 1,
+ "regex": "",
+ "sort": 0,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ },
+ {
+ "allValue": null,
+ "current": {
+ "text": "All",
+ "value": "$__all"
+ },
+ "datasource": "Local",
+ "hide": 0,
+ "includeAll": true,
+ "label": "iSCSI Client",
+ "multi": false,
+ "name": "clients",
+ "options": [],
+ "query": "collectd.*.$domain.cephmetrics.gauge.$cluster_name.iscsi.gw_clients.*",
+ "refresh": 1,
+ "regex": "",
+ "sort": 0,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ },
+ {
+ "allValue": null,
+ "current": {
+ "text": "iqn-2003-01-com-redhat-iscsi-gw_ceph-gw",
+ "value": "iqn-2003-01-com-redhat-iscsi-gw_ceph-gw"
+ },
+ "datasource": "Local",
+ "hide": 2,
+ "includeAll": false,
+ "label": null,
+ "multi": false,
+ "name": "gw_name",
+ "options": [],
+ "query": "collectd.*.$domain.cephmetrics.gauge.$cluster_name.iscsi.gw_name.*",
+ "refresh": 1,
+ "regex": "",
+ "sort": 0,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ },
+ {
+ "allValue": null,
+ "current": {
+ "text": "All",
+ "value": [
+ "$__all"
+ ]
+ },
+ "hide": 2,
+ "includeAll": true,
+ "label": null,
+ "multi": true,
+ "name": "iscsi_gateways",
+ "options": [
+ {
+ "selected": true,
+ "text": "All",
+ "value": "$__all"
+ },
+ {
+ "selected": false,
+ "text": "rh7-gw1",
+ "value": "rh7-gw1"
+ },
+ {
+ "selected": false,
+ "text": "rh7-gw2",
+ "value": "rh7-gw2"
+ }
+ ],
+ "query": "rh7-gw1, rh7-gw2",
+ "type": "custom"
+ }
+ ]
+ },
+ "time": {
+ "from": "now-1h",
+ "to": "now"
+ },
+ "timepicker": {
+ "refresh_intervals": [
+ "5s",
+ "10s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ],
+ "time_options": [
+ "5m",
+ "15m",
+ "1h",
+ "6h",
+ "12h",
+ "24h",
+ "2d",
+ "7d",
+ "30d"
+ ]
+ },
+ "timezone": "browser",
+ "title": "iSCSI Overview",
+ "version": 51
+ },
+ "meta": {
+ "canEdit": true,
+ "canSave": true,
+ "canStar": true,
+ "created": "2017-08-03T23:35:37Z",
+ "createdBy": "admin",
+ "expires": "0001-01-01T00:00:00Z",
+ "slug": "iscsi-overview",
+ "type": "db",
+ "updated": "2017-09-12T04:50:03Z",
+ "updatedBy": "admin",
+ "version": 51
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "dashboard": {
+ "annotations": {
+ "list": []
+ },
+ "editable": false,
+ "gnetId": null,
+ "graphTooltip": 0,
+ "hideControls": true,
+ "id": 13,
+ "links": [
+ {
+ "asDropdown": true,
+ "icon": "external link",
+ "tags": [
+ "overview"
+ ],
+ "title": "Shortcuts",
+ "type": "dashboards"
+ }
+ ],
+ "refresh": "10s",
+ "rows": [
+ {
+ "collapse": false,
+ "height": 250,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "id": 8,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 12,
+ "nullPointMode": "connected",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "repeat": null,
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 12,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "groupByNode(collectd.$osd_servers.$domain.cephmetrics.gauge.$cluster_name.osd.*.perf.await,1,\"maxSeries\")",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "$osd_servers OSD Hosts - Highest Latency",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "ms",
+ "label": "",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "All OSD Hosts",
+ "titleSize": "h5"
+ },
+ {
+ "collapse": true,
+ "height": 250,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "id": 5,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [
+ {
+ "dashUri": "db/osd-node-detail",
+ "dashboard": "OSD Node Detail",
+ "includeVars": true,
+ "keepTime": true,
+ "targetBlank": true,
+ "title": "$osd_servers Node Details",
+ "type": "dashboard"
+ }
+ ],
+ "minSpan": 3,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "repeat": "osd_servers",
+ "scopedVars": {
+ "osd_servers": {
+ "selected": false,
+ "text": "obj-osd-1",
+ "value": "obj-osd-1"
+ }
+ },
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 4,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "alias(maxSeries(collectd.$osd_servers.$domain.cephmetrics.gauge.$cluster_name.osd.*.perf.await),\"$osd_servers Max Latency\")",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "$osd_servers Max Latency",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "ms",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "id": 6,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [
+ {
+ "dashUri": "db/osd-node-detail",
+ "dashboard": "OSD Node Detail",
+ "includeVars": true,
+ "keepTime": true,
+ "targetBlank": true,
+ "title": "$osd_servers Node Details",
+ "type": "dashboard"
+ }
+ ],
+ "minSpan": 3,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "repeat": null,
+ "repeatIteration": 1501621443172,
+ "repeatPanelId": 5,
+ "scopedVars": {
+ "osd_servers": {
+ "selected": false,
+ "text": "obj-osd-2",
+ "value": "obj-osd-2"
+ }
+ },
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 4,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "alias(maxSeries(collectd.$osd_servers.$domain.cephmetrics.gauge.$cluster_name.osd.*.perf.await),\"$osd_servers Max Latency\")",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "$osd_servers Max Latency",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "ms",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "id": 7,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [
+ {
+ "dashUri": "db/osd-node-detail",
+ "dashboard": "OSD Node Detail",
+ "includeVars": true,
+ "keepTime": true,
+ "targetBlank": true,
+ "title": "$osd_servers Node Details",
+ "type": "dashboard"
+ }
+ ],
+ "minSpan": 3,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "repeat": null,
+ "repeatIteration": 1501621443172,
+ "repeatPanelId": 5,
+ "scopedVars": {
+ "osd_servers": {
+ "selected": false,
+ "text": "obj-osd-3",
+ "value": "obj-osd-3"
+ }
+ },
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 4,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "alias(maxSeries(collectd.$osd_servers.$domain.cephmetrics.gauge.$cluster_name.osd.*.perf.await),\"$osd_servers Max Latency\")",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "$osd_servers Max Latency",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "ms",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "Each OSD Host's Max Disk Latency",
+ "titleSize": "h5"
+ },
+ {
+ "collapse": false,
+ "height": 250,
+ "panels": [],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": false,
+ "title": "Dashboard Row",
+ "titleSize": "h6"
+ }
+ ],
+ "schemaVersion": 14,
+ "style": "dark",
+ "tags": [
+ "overview"
+ ],
+ "templating": {
+ "list": [
+ {
+ "allValue": null,
+ "current": {
+ "text": "storage.lab",
+ "value": "storage.lab"
+ },
+ "hide": 2,
+ "includeAll": false,
+ "label": null,
+ "multi": false,
+ "name": "domain",
+ "options": [
+ {
+ "selected": true,
+ "text": "storage.lab",
+ "value": "storage.lab"
+ }
+ ],
+ "query": "storage.lab",
+ "type": "custom"
+ },
+ {
+ "allValue": null,
+ "current": {
+ "text": "ceph",
+ "value": "ceph"
+ },
+ "datasource": "Local",
+ "hide": 2,
+ "includeAll": false,
+ "label": null,
+ "multi": false,
+ "name": "cluster_name",
+ "options": [],
+ "query": "collectd.*.$domain.cephmetrics.gauge.*",
+ "refresh": 1,
+ "regex": "",
+ "sort": 0,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ },
+ {
+ "allValue": null,
+ "current": {
+ "selected": true,
+ "text": "All",
+ "value": "$__all"
+ },
+ "hide": 2,
+ "includeAll": true,
+ "label": null,
+ "multi": true,
+ "name": "osd_servers",
+ "options": [
+ {
+ "selected": true,
+ "text": "All",
+ "value": "$__all"
+ },
+ {
+ "selected": false,
+ "text": "obj-osd-1",
+ "value": "obj-osd-1"
+ },
+ {
+ "selected": false,
+ "text": "obj-osd-2",
+ "value": "obj-osd-2"
+ },
+ {
+ "selected": false,
+ "text": "obj-osd-3",
+ "value": "obj-osd-3"
+ }
+ ],
+ "query": "obj-osd-1,obj-osd-2,obj-osd-3",
+ "type": "custom"
+ },
+ {
+ "allValue": null,
+ "current": {
+ "selected": true,
+ "text": "95",
+ "value": "95"
+ },
+ "hide": 2,
+ "includeAll": false,
+ "label": null,
+ "multi": false,
+ "name": "percentile",
+ "options": [
+ {
+ "selected": true,
+ "text": "95",
+ "value": "95"
+ }
+ ],
+ "query": "95",
+ "type": "custom"
+ }
+ ]
+ },
+ "time": {
+ "from": "now-1h",
+ "to": "now"
+ },
+ "timepicker": {
+ "refresh_intervals": [
+ "5s",
+ "10s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ],
+ "time_options": [
+ "5m",
+ "15m",
+ "1h",
+ "6h",
+ "12h",
+ "24h",
+ "2d",
+ "7d",
+ "30d"
+ ]
+ },
+ "timezone": "browser",
+ "title": "Latency by Server",
+ "version": 3
+ },
+ "meta": {
+ "canEdit": true,
+ "canSave": true,
+ "canStar": true,
+ "created": "2017-08-01T05:18:58Z",
+ "createdBy": "admin@localhost",
+ "expires": "0001-01-01T00:00:00Z",
+ "slug": "latency-by-server",
+ "type": "db",
+ "updated": "2017-08-01T21:04:34Z",
+ "updatedBy": "admin@localhost",
+ "version": 3
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "dashboard": {
+ "annotations": {
+ "list": []
+ },
+ "editable": false,
+ "gnetId": null,
+ "graphTooltip": 0,
+ "hideControls": true,
+ "id": 20,
+ "links": [
+ {
+ "asDropdown": true,
+ "icon": "external link",
+ "tags": [
+ "overview"
+ ],
+ "title": "Shortcuts",
+ "type": "dashboards"
+ }
+ ],
+ "refresh": "10s",
+ "rows": [
+ {
+ "collapse": false,
+ "height": "300px",
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "description": "Shows the total transmit and receive throughput to all interfaces across the Ceph hosts.",
+ "fill": 1,
+ "height": "",
+ "id": 1,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [
+ {
+ "dashUri": "db/osd-node-detail",
+ "dashboard": "OSD Node Detail",
+ "includeVars": true,
+ "keepTime": true,
+ "targetBlank": true,
+ "title": "OSD Host Details",
+ "type": "dashboard"
+ }
+ ],
+ "minSpan": 12,
+ "nullPointMode": "connected",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 12,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "alias(sumSeries(groupByNode(collectd.$osd_servers.$domain.interface.{bond,en,eth}*.if_octets.*,1,\"sumSeries\")),\"OSD Hosts\")",
+ "textEditor": true
+ },
+ {
+ "refId": "B",
+ "target": "alias(sumSeries(groupByNode(collectd.$rgw_servers.$domain.interface.{bond,en,eth}*.if_octets.*,1,\"sumSeries\")),\"RadosGW Hosts\")",
+ "textEditor": true
+ },
+ {
+ "refId": "C",
+ "target": "alias(sumSeries(groupByNode(collectd.$mon_servers.$domain.interface.{bond,en,eth}*.if_octets.*,1,\"sumSeries\")),\"MON Hosts\")",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Cluster Network Load Across MON, OSD and RADOSGW Hosts",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "decbytes",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "Aggregated Network Load",
+ "titleSize": "h5"
+ },
+ {
+ "collapse": true,
+ "height": "250",
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "id": 4,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 12,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "groupByNode(collectd.$mon_servers.$domain.interface.{bond,en,eth}*.if_octets.*,1,\"sumSeries\")",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Ceph MON Network Load",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "decbytes",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "MON Hosts",
+ "titleSize": "h5"
+ },
+ {
+ "collapse": true,
+ "height": "250",
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "id": 2,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 12,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "groupByNode(collectd.$osd_servers.$domain.interface.{bond,en,eth}*.if_octets.*,1,\"sumSeries\")",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "OSD Host Network Load",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "decbytes",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "OSD Hosts",
+ "titleSize": "h5"
+ },
+ {
+ "collapse": true,
+ "height": "250",
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "id": 3,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 12,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "groupByNode(collectd.$rgw_servers.$domain.interface.{bond,en,eth}*.if_octets.*,1,\"sumSeries\")",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "RadosGW Network Load",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "decbytes",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "RadosGW Hosts",
+ "titleSize": "h5"
+ }
+ ],
+ "schemaVersion": 14,
+ "style": "dark",
+ "tags": [
+ "overview"
+ ],
+ "templating": {
+ "list": [
+ {
+ "allValue": null,
+ "current": {
+ "selected": true,
+ "text": "All",
+ "value": "$__all"
+ },
+ "hide": 0,
+ "includeAll": true,
+ "label": "OSD Hostname",
+ "multi": true,
+ "name": "osd_servers",
+ "options": [
+ {
+ "selected": true,
+ "text": "All",
+ "value": "$__all"
+ },
+ {
+ "selected": false,
+ "text": "ceph-1",
+ "value": "ceph-1"
+ },
+ {
+ "selected": false,
+ "text": "ceph-2",
+ "value": "ceph-2"
+ },
+ {
+ "selected": false,
+ "text": "ceph-3",
+ "value": "ceph-3"
+ }
+ ],
+ "query": "ceph-1,ceph-2,ceph-3",
+ "type": "custom"
+ },
+ {
+ "allValue": null,
+ "current": {
+ "selected": true,
+ "text": "test.lab",
+ "value": "test.lab"
+ },
+ "hide": 2,
+ "includeAll": false,
+ "label": null,
+ "multi": false,
+ "name": "domain",
+ "options": [
+ {
+ "selected": true,
+ "text": "test.lab",
+ "value": "test.lab"
+ }
+ ],
+ "query": "test.lab",
+ "type": "custom"
+ },
+ {
+ "allValue": null,
+ "current": {
+ "selected": true,
+ "text": "ceph",
+ "value": "ceph"
+ },
+ "datasource": "Local",
+ "hide": 2,
+ "includeAll": false,
+ "label": null,
+ "multi": false,
+ "name": "cluster_name",
+ "options": [],
+ "query": "collectd.*.$domain.cephmetrics.gauge.*",
+ "refresh": 1,
+ "regex": "",
+ "sort": 0,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ },
+ {
+ "allValue": null,
+ "current": {
+ "selected": false,
+ "text": "All",
+ "value": "$__all"
+ },
+ "datasource": "Local",
+ "hide": 0,
+ "includeAll": true,
+ "label": "Monitor Host",
+ "multi": false,
+ "name": "mon_servers",
+ "options": [],
+ "query": "collectd.*.$domain.cephmetrics.gauge.$cluster_name.mon.mon_status.*",
+ "refresh": 1,
+ "regex": "",
+ "sort": 0,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ },
+ {
+ "allValue": null,
+ "current": {
+ "text": "All",
+ "value": "All"
+ },
+ "hide": 0,
+ "includeAll": true,
+ "label": "RadosGW Host",
+ "multi": false,
+ "name": "rgw_servers",
+ "options": [
+ {
+ "selected": false,
+ "text": "obj-rgw-1",
+ "value": "obj-rgw-1"
+ }
+ ],
+ "query": "obj-rgw-1",
+ "type": "custom"
+ }
+ ]
+ },
+ "time": {
+ "from": "now-1h",
+ "to": "now"
+ },
+ "timepicker": {
+ "refresh_intervals": [
+ "5s",
+ "10s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ],
+ "time_options": [
+ "5m",
+ "15m",
+ "1h",
+ "6h",
+ "12h",
+ "24h",
+ "2d",
+ "7d",
+ "30d"
+ ]
+ },
+ "timezone": "browser",
+ "title": "Network Usage by Node",
+ "version": 5
+ },
+ "meta": {
+ "canEdit": true,
+ "canSave": true,
+ "canStar": true,
+ "created": "2017-08-03T21:42:28Z",
+ "createdBy": "admin",
+ "expires": "0001-01-01T00:00:00Z",
+ "slug": "network-usage-by-node",
+ "type": "db",
+ "updated": "2017-09-12T23:49:40Z",
+ "updatedBy": "admin",
+ "version": 5
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "dashboard": {
+ "annotations": {
+ "list": []
+ },
+ "editable": false,
+ "gnetId": null,
+ "graphTooltip": 0,
+ "hideControls": true,
+ "id": 74,
+ "links": [
+ {
+ "asDropdown": true,
+ "icon": "external link",
+ "tags": [
+ "overview"
+ ],
+ "title": "Shortcuts",
+ "type": "dashboards"
+ }
+ ],
+ "refresh": "10s",
+ "rows": [
+ {
+ "collapse": false,
+ "height": 125,
+ "panels": [
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "Local",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "height": "160",
+ "id": 9,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": "",
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 2,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "refId": "A",
+ "target": "sumSeries(keepLastValue(collectd.$osd_servers.$domain.cephmetrics.gauge.$cluster_name.osd.num_osds,6))",
+ "textEditor": true
+ }
+ ],
+ "thresholds": "",
+ "title": "OSDs",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "Local",
+ "decimals": 0,
+ "description": "Each OSD consists of a Journal/WAL partition and a data partition. The RAW Capacity shown is the sum of the data partitions across all OSDs on the selected OSD hosts.",
+ "format": "decbytes",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "height": "160",
+ "id": 15,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": "",
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 2,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "refId": "A",
+ "target": "sumSeries(consolidateBy(keepLastValue(collectd.$osd_servers.$domain.cephmetrics.gauge.$cluster_name.osd.*.stat_bytes, 6), \"sum\"))",
+ "textEditor": true
+ }
+ ],
+ "thresholds": "",
+ "title": "Raw Capacity",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "description": "",
+ "fontSize": "100%",
+ "height": "160",
+ "id": 14,
+ "links": [],
+ "minSpan": 3,
+ "pageSize": 1000,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": 0,
+ "desc": false
+ },
+ "span": 3,
+ "styles": [
+ {
+ "alias": "Time",
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Time",
+ "type": "date"
+ },
+ {
+ "alias": "Host and Disk",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "Metric",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ },
+ {
+ "alias": "OSD ID",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 0,
+ "pattern": "Current",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(collectd.$osd_servers.$domain.cephmetrics.gauge.$cluster_name.osd.$device_id.osd_id,1,-2)",
+ "textEditor": true
+ }
+ ],
+ "title": "",
+ "transform": "timeseries_aggregations",
+ "type": "table"
+ },
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "description": "",
+ "fontSize": "100%",
+ "height": "160",
+ "hideTimeOverride": true,
+ "id": 16,
+ "links": [],
+ "maxDataPoints": "1",
+ "minSpan": 3,
+ "pageSize": 1000,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": 0,
+ "desc": false
+ },
+ "span": 3,
+ "styles": [
+ {
+ "alias": "Time",
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Time",
+ "type": "date"
+ },
+ {
+ "alias": "Host and Disk",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "Metric",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ },
+ {
+ "alias": "Disk Size",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 0,
+ "pattern": "Current",
+ "thresholds": [],
+ "type": "number",
+ "unit": "decbytes"
+ }
+ ],
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(keepLastValue(collectd.$osd_servers.$domain.cephmetrics.gauge.$cluster_name.osd.$device_id.disk_size),1,-2)",
+ "textEditor": true
+ }
+ ],
+ "timeFrom": "2m",
+ "timeShift": null,
+ "title": "",
+ "transform": "timeseries_aggregations",
+ "type": "table"
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "'$osd_servers' OSD Overview",
+ "titleSize": "h5"
+ },
+ {
+ "collapse": false,
+ "height": 250,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "fill": 1,
+ "id": 1,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 6,
+ "nullPointMode": "connected",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(limit(collectd.$osd_servers.$domain.cephmetrics.gauge.$cluster_name.osd.$device_id.perf.util, $max_devices), -3)",
+ "textEditor": false
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "$osd_servers Disk utilisation",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "%Util",
+ "logBase": 1,
+ "max": "100",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "fill": 1,
+ "id": 5,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 6,
+ "nullPointMode": "connected",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(limit(collectd.$osd_servers.$domain.cephmetrics.gauge.$cluster_name.osd.$device_id.perf.iops, $max_devices), -3)"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "$osd_servers Disk IOPS",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "IOPS",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "fill": 1,
+ "id": 2,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 6,
+ "nullPointMode": "connected",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(limit(collectd.$osd_servers.$domain.cephmetrics.gauge.$cluster_name.osd.$device_id.perf.await, $max_devices), -3)",
+ "textEditor": false
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "$osd_servers Disk Latency",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "none",
+ "label": "ms",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "fill": 1,
+ "id": 3,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 6,
+ "nullPointMode": "connected",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(limit(collectd.$osd_servers.$domain.cephmetrics.gauge.$cluster_name.osd.$device_id.perf.bytes_per_sec, $max_devices), -3)",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "$osd_servers Throughput by Disk",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "decbytes",
+ "label": "",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "aliasColors": {
+ "interrupt": "#447EBC",
+ "steal": "#6D1F62",
+ "system": "#890F02",
+ "user": "#3F6833",
+ "wait": "#C15C17"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "description": "Shows the CPU breakdown. When multiple servers are selected, only the first host's cpu data is shown",
+ "fill": 3,
+ "id": 6,
+ "legend": {
+ "alignAsTable": false,
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 6,
+ "nullPointMode": "connected",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "repeat": null,
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "limit(aliasByMetric(collectd.$osd_servers.$domain.cpu.percent.{system,user,wait,steal,nice,interrupt,softirq}),7)",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "$osd_servers CPU Utilisation",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "",
+ "logBase": 1,
+ "max": "100",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "fill": 1,
+ "id": 7,
+ "legend": {
+ "alignAsTable": false,
+ "avg": false,
+ "current": false,
+ "hideZero": true,
+ "max": false,
+ "min": false,
+ "rightSide": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 6,
+ "nullPointMode": "connected",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "refId": "A",
+ "target": "aliasByNode(limit(collectd.$osd_servers.$domain.interface.{eth,en,bond}*.if_octets.*, 40), -3, -1)",
+ "textEditor": false
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "$osd_servers Network Load",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "'$osd_servers' Performance Statistics",
+ "titleSize": "h5"
+ }
+ ],
+ "schemaVersion": 14,
+ "style": "dark",
+ "tags": [
+ "overview"
+ ],
+ "templating": {
+ "list": [
+ {
+ "allValue": null,
+ "current": {
+ "selected": true,
+ "tags": [],
+ "text": "obj-osd-1",
+ "value": "obj-osd-1"
+ },
+ "hide": 0,
+ "includeAll": true,
+ "label": "OSD Host Name",
+ "multi": false,
+ "name": "osd_servers",
+ "options": [
+ {
+ "selected": false,
+ "text": "All",
+ "value": "$__all"
+ },
+ {
+ "selected": true,
+ "text": "obj-osd-1",
+ "value": "obj-osd-1"
+ },
+ {
+ "selected": false,
+ "text": "obj-osd-2",
+ "value": "obj-osd-2"
+ },
+ {
+ "selected": false,
+ "text": "obj-osd-3",
+ "value": "obj-osd-3"
+ }
+ ],
+ "query": "obj-osd-1,obj-osd-2,obj-osd-3",
+ "type": "custom"
+ },
+ {
+ "allValue": null,
+ "current": {
+ "selected": true,
+ "text": "storage.lab",
+ "value": "storage.lab"
+ },
+ "hide": 2,
+ "includeAll": false,
+ "label": null,
+ "multi": false,
+ "name": "domain",
+ "options": [
+ {
+ "selected": true,
+ "text": "storage.lab",
+ "value": "storage.lab"
+ }
+ ],
+ "query": "storage.lab",
+ "type": "custom"
+ },
+ {
+ "allValue": null,
+ "current": {
+ "selected": true,
+ "text": "ceph",
+ "value": "ceph"
+ },
+ "datasource": "Local",
+ "hide": 2,
+ "includeAll": false,
+ "label": null,
+ "multi": false,
+ "name": "cluster_name",
+ "options": [],
+ "query": "collectd.*.$domain.cephmetrics.gauge.*",
+ "refresh": 1,
+ "regex": "",
+ "sort": 0,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ },
+ {
+ "allValue": null,
+ "current": {
+ "text": "All",
+ "value": [
+ "$__all"
+ ]
+ },
+ "datasource": "Local",
+ "hide": 0,
+ "includeAll": true,
+ "label": "Disk Name",
+ "multi": true,
+ "name": "device_id",
+ "options": [],
+ "query": "collectd.$osd_servers.$domain.cephmetrics.gauge.$cluster_name.osd.*",
+ "refresh": 1,
+ "regex": "(?!ceph_version|num_osds|\\d).*",
+ "sort": 0,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ },
+ {
+ "allValue": null,
+ "current": {
+ "selected": true,
+ "text": "60",
+ "value": "60"
+ },
+ "hide": 2,
+ "includeAll": false,
+ "label": null,
+ "multi": false,
+ "name": "max_devices",
+ "options": [
+ {
+ "selected": true,
+ "text": "60",
+ "value": "60"
+ }
+ ],
+ "query": "60",
+ "type": "custom"
+ }
+ ]
+ },
+ "time": {
+ "from": "now-1h",
+ "to": "now"
+ },
+ "timepicker": {
+ "refresh_intervals": [
+ "5s",
+ "10s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ],
+ "time_options": [
+ "5m",
+ "15m",
+ "1h",
+ "6h",
+ "12h",
+ "24h",
+ "2d",
+ "7d",
+ "30d"
+ ]
+ },
+ "timezone": "browser",
+ "title": "OSD Node Detail",
+ "version": 3
+ },
+ "meta": {
+ "canEdit": true,
+ "canSave": true,
+ "canStar": true,
+ "created": "2017-10-11T02:45:34Z",
+ "createdBy": "admin@localhost",
+ "expires": "0001-01-01T00:00:00Z",
+ "slug": "osd-node-detail",
+ "type": "db",
+ "updated": "2017-10-11T03:21:03Z",
+ "updatedBy": "admin@localhost",
+ "version": 3
+ }
+}
--- /dev/null
+{
+ "annotations": {
+ "list": [
+ {
+ "builtIn": 1,
+ "datasource": "-- Grafana --",
+ "enable": true,
+ "hide": true,
+ "iconColor": "rgba(0, 211, 255, 1)",
+ "name": "Annotations & Alerts",
+ "type": "dashboard"
+ }
+ ]
+ },
+ "editable": false,
+ "gnetId": null,
+ "graphTooltip": 0,
+ "id": null,
+ "links": [],
+ "panels": [
+ {
+ "collapsed": false,
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 0
+ },
+ "id": 11,
+ "panels": [],
+ "repeat": null,
+ "title": "Active Alert List",
+ "type": "row"
+ },
+ {
+ "gridPos": {
+ "h": 7,
+ "w": 24,
+ "x": 0,
+ "y": 1
+ },
+ "id": 1,
+ "limit": "20",
+ "links": [],
+ "onlyAlertsOnDashboard": true,
+ "show": "current",
+ "sortOrder": 3,
+ "stateFilter": [
+ "alerting"
+ ],
+ "title": "Active Ceph Alert List",
+ "type": "alertlist"
+ },
+ {
+ "collapsed": false,
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 8
+ },
+ "id": 12,
+ "panels": [],
+ "repeat": null,
+ "title": "Health Checks",
+ "type": "row"
+ },
+ {
+ "alert": {
+ "conditions": [
+ {
+ "evaluator": {
+ "params": [
+ 0
+ ],
+ "type": "gt"
+ },
+ "operator": {
+ "type": "and"
+ },
+ "query": {
+ "params": [
+ "A",
+ "1m",
+ "now"
+ ]
+ },
+ "reducer": {
+ "params": [],
+ "type": "max"
+ },
+ "type": "query"
+ }
+ ],
+ "executionErrorState": "alerting",
+ "frequency": "10s",
+ "handler": 1,
+ "name": "Overall Ceph Health alert",
+ "noDataState": "no_data",
+ "notifications": [
+ {
+ "id": 1
+ }
+ ]
+ },
+ "aliasColors": {
+ "Ceph Health": "#890F02",
+ "Ceph Health (0:OK, 4:Warning,8:Error)": "#DEDAF7",
+ "ceph health": "#890F02"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "description": "The chart plots the clusters health, over time. Health is depicted as a integer; 0, 1 or 2 where 0 is OK, 1 is WARN and 2 represents an ERROR state.",
+ "fill": 1,
+ "gridPos": {
+ "h": 7,
+ "w": 4,
+ "x": 0,
+ "y": 9
+ },
+ "hideTimeOverride": false,
+ "id": 2,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 2,
+ "links": [],
+ "maxDataPoints": "360",
+ "minSpan": 4,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": true,
+ "targets": [
+ {
+ "expr": "ceph_health_status",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Ceph Health",
+ "refId": "A",
+ "step": 20,
+ "textEditor": true
+ }
+ ],
+ "thresholds": [
+ {
+ "colorMode": "critical",
+ "fill": true,
+ "line": true,
+ "op": "gt",
+ "value": 0
+ }
+ ],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Overall Ceph Health",
+ "tooltip": {
+ "shared": false,
+ "sort": 1,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "",
+ "logBase": 1,
+ "max": "2",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "alert": {
+ "conditions": [
+ {
+ "evaluator": {
+ "params": [
+ 0
+ ],
+ "type": "gt"
+ },
+ "operator": {
+ "type": "and"
+ },
+ "query": {
+ "params": [
+ "A",
+ "1m",
+ "now"
+ ]
+ },
+ "reducer": {
+ "params": [],
+ "type": "max"
+ },
+ "type": "query"
+ }
+ ],
+ "executionErrorState": "alerting",
+ "frequency": "60s",
+ "handler": 1,
+ "name": "Ceph Error State alert",
+ "noDataState": "no_data",
+ "notifications": [
+ {
+ "id": 1
+ }
+ ]
+ },
+ "aliasColors": {
+ "Ceph Health": "#890F02",
+ "Ceph Health (0:OK, 4:Warning,8:Error)": "#DEDAF7",
+ "ceph health": "#890F02"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "description": "The chart plots the error state of cluster, over time. The state is depicted as a boolean 0 or 1 where 0 is False and 1 is True.",
+ "fill": 1,
+ "gridPos": {
+ "h": 7,
+ "w": 4,
+ "x": 4,
+ "y": 9
+ },
+ "hideTimeOverride": false,
+ "id": 17,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 2,
+ "links": [],
+ "maxDataPoints": "360",
+ "minSpan": 4,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": true,
+ "targets": [
+ {
+ "expr": "ceph_health_status > bool 1",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Error State",
+ "refId": "A",
+ "step": 20,
+ "textEditor": true
+ }
+ ],
+ "thresholds": [
+ {
+ "colorMode": "critical",
+ "fill": true,
+ "line": true,
+ "op": "gt",
+ "value": 0
+ }
+ ],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Ceph Error State",
+ "tooltip": {
+ "shared": false,
+ "sort": 1,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "decimals": 0,
+ "format": "short",
+ "label": "",
+ "logBase": 1,
+ "max": "1",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "alert": {
+ "conditions": [
+ {
+ "evaluator": {
+ "params": [
+ 0
+ ],
+ "type": "gt"
+ },
+ "operator": {
+ "type": "and"
+ },
+ "query": {
+ "params": [
+ "A",
+ "1m",
+ "now"
+ ]
+ },
+ "reducer": {
+ "params": [],
+ "type": "max"
+ },
+ "type": "query"
+ }
+ ],
+ "executionErrorState": "alerting",
+ "frequency": "60s",
+ "handler": 1,
+ "name": "Disks Near Full alert",
+ "noDataState": "ok",
+ "notifications": [
+ {
+ "id": 1
+ }
+ ]
+ },
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "description": "This shows how many disks are at or above 80% full. Performance may degrade beyond this threshold on filestore (XFS) backed OSD's.",
+ "fill": 1,
+ "gridPos": {
+ "h": 7,
+ "w": 4,
+ "x": 8,
+ "y": 9
+ },
+ "id": 3,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 4,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "count((ceph_osd_stat_bytes_used / ceph_osd_stat_bytes) * 100 > 85)",
+ "format": "time_series",
+ "hide": false,
+ "instant": false,
+ "intervalFactor": 1,
+ "legendFormat": "",
+ "refId": "A",
+ "step": 40,
+ "textEditor": true
+ }
+ ],
+ "thresholds": [
+ {
+ "colorMode": "critical",
+ "fill": true,
+ "line": true,
+ "op": "gt",
+ "value": 0
+ }
+ ],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Disks Near Full",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "alert": {
+ "conditions": [
+ {
+ "evaluator": {
+ "params": [
+ 0
+ ],
+ "type": "gt"
+ },
+ "operator": {
+ "type": "and"
+ },
+ "query": {
+ "params": [
+ "A",
+ "30s",
+ "now"
+ ]
+ },
+ "reducer": {
+ "params": [],
+ "type": "max"
+ },
+ "type": "query"
+ }
+ ],
+ "executionErrorState": "alerting",
+ "frequency": "10s",
+ "handler": 1,
+ "name": "OSDs Down alert",
+ "noDataState": "ok",
+ "notifications": [
+ {
+ "id": 1
+ }
+ ]
+ },
+ "aliasColors": {},
+ "bars": true,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "description": "Count of OSDs currently in a DOWN state",
+ "fill": 2,
+ "gridPos": {
+ "h": 7,
+ "w": 4,
+ "x": 12,
+ "y": 9
+ },
+ "hideTimeOverride": true,
+ "id": 4,
+ "legend": {
+ "alignAsTable": false,
+ "avg": false,
+ "current": false,
+ "hideZero": false,
+ "max": false,
+ "min": false,
+ "rightSide": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": false,
+ "linewidth": 2,
+ "links": [],
+ "minSpan": 4,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": true,
+ "targets": [
+ {
+ "expr": "count(ceph_osd_metadata) - count(ceph_osd_up > 0.5)",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 2,
+ "legendFormat": "down",
+ "refId": "A",
+ "step": 4,
+ "textEditor": true
+ }
+ ],
+ "thresholds": [
+ {
+ "colorMode": "critical",
+ "fill": true,
+ "line": true,
+ "op": "gt",
+ "value": 0
+ }
+ ],
+ "timeFrom": "5m",
+ "timeShift": null,
+ "title": "OSDs Down",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "alert": {
+ "conditions": [
+ {
+ "evaluator": {
+ "params": [
+ 0
+ ],
+ "type": "gt"
+ },
+ "operator": {
+ "type": "and"
+ },
+ "query": {
+ "params": [
+ "A",
+ "30s",
+ "now"
+ ]
+ },
+ "reducer": {
+ "params": [],
+ "type": "last"
+ },
+ "type": "query"
+ }
+ ],
+ "executionErrorState": "alerting",
+ "frequency": "30s",
+ "handler": 1,
+ "name": "OSDs Hosts Down alert",
+ "noDataState": "ok",
+ "notifications": [
+ {
+ "id": 1
+ }
+ ]
+ },
+ "aliasColors": {},
+ "bars": true,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "description": "Count of OSD Hosts that have all daemons down",
+ "fill": 2,
+ "gridPos": {
+ "h": 7,
+ "w": 4,
+ "x": 16,
+ "y": 9
+ },
+ "hideTimeOverride": true,
+ "id": 14,
+ "legend": {
+ "alignAsTable": false,
+ "avg": false,
+ "current": false,
+ "hideZero": false,
+ "max": false,
+ "min": false,
+ "rightSide": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": false,
+ "linewidth": 2,
+ "links": [],
+ "minSpan": 4,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": true,
+ "targets": [
+ {
+ "expr": "count(\n (count by(instance) (ceph_disk_occupation * \n on(ceph_daemon) group_right(instance) ceph_osd_up == 0) - \n count by(instance) (ceph_disk_occupation)) == 0)",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 2,
+ "legendFormat": "down",
+ "refId": "A",
+ "step": 4,
+ "textEditor": true
+ }
+ ],
+ "thresholds": [
+ {
+ "colorMode": "critical",
+ "fill": true,
+ "line": true,
+ "op": "gt",
+ "value": 0
+ }
+ ],
+ "timeFrom": "5m",
+ "timeShift": null,
+ "title": "OSDs Hosts Down",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "alert": {
+ "conditions": [
+ {
+ "evaluator": {
+ "params": [
+ 0
+ ],
+ "type": "gt"
+ },
+ "operator": {
+ "type": "and"
+ },
+ "query": {
+ "params": [
+ "A",
+ "1m",
+ "now"
+ ]
+ },
+ "reducer": {
+ "params": [],
+ "type": "last"
+ },
+ "type": "query"
+ }
+ ],
+ "executionErrorState": "alerting",
+ "frequency": "60s",
+ "handler": 1,
+ "name": "PG's Stuck alert",
+ "noDataState": "ok",
+ "notifications": [
+ {
+ "id": 1
+ }
+ ]
+ },
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "description": "This chart shows whether there are pg's in a stuck state, that need manual intervention to resolve.",
+ "fill": 2,
+ "gridPos": {
+ "h": 7,
+ "w": 4,
+ "x": 0,
+ "y": 16
+ },
+ "hideTimeOverride": true,
+ "id": 6,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 2,
+ "links": [],
+ "minSpan": 4,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "max(ceph_osd_numpg) - scalar(ceph_pg_active)",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "# pg's stuck inactive",
+ "refId": "A",
+ "step": 240,
+ "textEditor": true
+ }
+ ],
+ "thresholds": [
+ {
+ "colorMode": "critical",
+ "fill": true,
+ "line": true,
+ "op": "gt",
+ "value": 0
+ }
+ ],
+ "timeFrom": "6h",
+ "timeShift": null,
+ "title": "PG's Stuck",
+ "tooltip": {
+ "shared": false,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": [
+ "total"
+ ]
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "alert": {
+ "conditions": [
+ {
+ "evaluator": {
+ "params": [
+ 0
+ ],
+ "type": "lt"
+ },
+ "operator": {
+ "type": "and"
+ },
+ "query": {
+ "params": [
+ "A",
+ "5m",
+ "now"
+ ]
+ },
+ "reducer": {
+ "params": [],
+ "type": "min"
+ },
+ "type": "query"
+ }
+ ],
+ "executionErrorState": "alerting",
+ "frequency": "60s",
+ "handler": 1,
+ "name": "OSD Host Loss Check alert",
+ "noDataState": "no_data",
+ "notifications": [
+ {
+ "id": 1
+ }
+ ]
+ },
+ "aliasColors": {
+ "Largest OSD Host": "#890F02"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "description": "This graph checks the cluster @ 90% full is enough to support the loss of the largest OSD host",
+ "fill": 1,
+ "gridPos": {
+ "h": 7,
+ "w": 4,
+ "x": 4,
+ "y": 16
+ },
+ "id": 7,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 4,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "max(\n sum(ceph_osd_stat_bytes - ceph_osd_stat_bytes_used)\n) * 0.9 -\nmax(\n sum by (instance) (\n ceph_osd_stat_bytes + on (ceph_daemon) group_left (instance) (ceph_disk_occupation*0)\n )\n)",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 2,
+ "refId": "A",
+ "step": 40,
+ "textEditor": true
+ }
+ ],
+ "thresholds": [
+ {
+ "colorMode": "critical",
+ "fill": true,
+ "line": true,
+ "op": "lt",
+ "value": 0
+ }
+ ],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "OSD Host Loss Check",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "decbytes",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "alert": {
+ "conditions": [
+ {
+ "evaluator": {
+ "params": [
+ 1000
+ ],
+ "type": "gt"
+ },
+ "operator": {
+ "type": "and"
+ },
+ "query": {
+ "params": [
+ "A",
+ "1m",
+ "now"
+ ]
+ },
+ "reducer": {
+ "params": [],
+ "type": "max"
+ },
+ "type": "query"
+ }
+ ],
+ "executionErrorState": "alerting",
+ "frequency": "30s",
+ "handler": 1,
+ "name": "Slow OSD responses alert",
+ "noDataState": "ok",
+ "notifications": [
+ {
+ "id": 1
+ }
+ ]
+ },
+ "aliasColors": {
+ "Largest OSD Host": "#890F02"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "description": "Graph checking for OSD Latencies that are above 1s.",
+ "fill": 1,
+ "gridPos": {
+ "h": 7,
+ "w": 4,
+ "x": 8,
+ "y": 16
+ },
+ "hideTimeOverride": true,
+ "id": 8,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxDataPoints": "",
+ "minSpan": 4,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "(\n (\n irate(node_disk_read_time_ms[5m]) / clamp_min(irate(node_disk_reads_completed[5m]), 0.001) +\n irate(node_disk_write_time_ms[5m]) / clamp_min(irate(node_disk_writes_completed[5m]), 0.001)\n ) and on (instance, device) ceph_disk_occupation\n) >= 1000",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "{{instance}}.{{device}}",
+ "refId": "A",
+ "step": 40,
+ "textEditor": true
+ }
+ ],
+ "thresholds": [
+ {
+ "colorMode": "critical",
+ "fill": true,
+ "line": true,
+ "op": "gt",
+ "value": 1000
+ }
+ ],
+ "timeFrom": "1h",
+ "timeShift": null,
+ "title": "Slow OSD responses",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "none",
+ "label": "ms",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "alert": {
+ "conditions": [
+ {
+ "evaluator": {
+ "params": [
+ 10
+ ],
+ "type": "gt"
+ },
+ "operator": {
+ "type": "and"
+ },
+ "query": {
+ "params": [
+ "A",
+ "5m",
+ "now"
+ ]
+ },
+ "reducer": {
+ "params": [],
+ "type": "max"
+ },
+ "type": "query"
+ }
+ ],
+ "executionErrorState": "alerting",
+ "frequency": "30s",
+ "handler": 1,
+ "name": "Network Errors alert",
+ "noDataState": "no_data",
+ "notifications": [
+ {
+ "id": 1
+ }
+ ]
+ },
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "description": "Checks all interfaces for dropped/error packets, and alerts if more than 10 are seen in a 5m interval",
+ "fill": 1,
+ "gridPos": {
+ "h": 7,
+ "w": 4,
+ "x": 12,
+ "y": 16
+ },
+ "id": 9,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 4,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "sum by (instance, device) (\n irate(node_network_receive_drop{device=~\"(eth|en|bond|ib|mlx|p).*\"}[5m]) +\n irate(node_network_receive_errs{device=~\"(eth|en|bond|ib|mlx|p).*\"}[5m]) +\n irate(node_network_transmit_drop{device=~\"(eth|en|bond|ib|mlx|p).*\"}[5m]) +\n irate(node_network_transmit_errs{device=~\"(eth|en|bond|ib|mlx|p).*\"}[5m])\n) > 0",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "{{instance}} / {{device}}",
+ "refId": "A",
+ "step": 40,
+ "textEditor": true
+ }
+ ],
+ "thresholds": [
+ {
+ "colorMode": "critical",
+ "fill": true,
+ "line": true,
+ "op": "gt",
+ "value": 10
+ }
+ ],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Network Packet Drops/Errors",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "none",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "alert": {
+ "conditions": [
+ {
+ "evaluator": {
+ "params": [
+ 85
+ ],
+ "type": "gt"
+ },
+ "operator": {
+ "type": "and"
+ },
+ "query": {
+ "params": [
+ "A",
+ "5m",
+ "now"
+ ]
+ },
+ "reducer": {
+ "params": [],
+ "type": "avg"
+ },
+ "type": "query"
+ }
+ ],
+ "executionErrorState": "alerting",
+ "frequency": "60s",
+ "handler": 1,
+ "name": "Pool Capacity alert",
+ "noDataState": "no_data",
+ "notifications": [
+ {
+ "id": 1
+ }
+ ]
+ },
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 5,
+ "gridPos": {
+ "h": 7,
+ "w": 4,
+ "x": 16,
+ "y": 16
+ },
+ "id": 10,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 2,
+ "links": [],
+ "minSpan": 4,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "repeat": null,
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "ceph_pool_bytes_used / (ceph_pool_bytes_used + ceph_pool_max_avail) * 100 + on (pool_id) group_left (name) (ceph_pool_metadata*0)",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "{{name}}",
+ "refId": "A",
+ "step": 40,
+ "textEditor": true
+ }
+ ],
+ "thresholds": [
+ {
+ "colorMode": "critical",
+ "fill": true,
+ "line": true,
+ "op": "gt",
+ "value": 85
+ }
+ ],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Pool Capacity",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "percent",
+ "label": null,
+ "logBase": 1,
+ "max": "100",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "alert": {
+ "conditions": [
+ {
+ "evaluator": {
+ "params": [
+ 0
+ ],
+ "type": "gt"
+ },
+ "operator": {
+ "type": "and"
+ },
+ "query": {
+ "params": [
+ "A",
+ "10s",
+ "now"
+ ]
+ },
+ "reducer": {
+ "params": [],
+ "type": "last"
+ },
+ "type": "query"
+ }
+ ],
+ "executionErrorState": "alerting",
+ "frequency": "30s",
+ "handler": 1,
+ "name": "MONs Down alert",
+ "noDataState": "ok",
+ "notifications": [
+ {
+ "id": 1
+ }
+ ]
+ },
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "description": "Count of MONs currently not in quorum/down",
+ "fill": 2,
+ "gridPos": {
+ "h": 7,
+ "w": 4,
+ "x": 0,
+ "y": 23
+ },
+ "hideTimeOverride": true,
+ "id": 13,
+ "legend": {
+ "alignAsTable": false,
+ "avg": false,
+ "current": false,
+ "hideZero": false,
+ "max": false,
+ "min": false,
+ "rightSide": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 2,
+ "links": [],
+ "minSpan": 4,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": true,
+ "targets": [
+ {
+ "expr": "count(ceph_mon_quorum_status != 1)",
+ "format": "time_series",
+ "hide": false,
+ "instant": false,
+ "intervalFactor": 1,
+ "legendFormat": "down",
+ "refId": "A",
+ "step": 4,
+ "textEditor": true
+ }
+ ],
+ "thresholds": [
+ {
+ "colorMode": "critical",
+ "fill": true,
+ "line": true,
+ "op": "gt",
+ "value": 0
+ }
+ ],
+ "timeFrom": "5m",
+ "timeShift": null,
+ "title": "MONs Down",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": "7",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "alert": {
+ "conditions": [
+ {
+ "evaluator": {
+ "params": [
+ 85
+ ],
+ "type": "gt"
+ },
+ "operator": {
+ "type": "and"
+ },
+ "query": {
+ "params": [
+ "A",
+ "1h",
+ "now"
+ ]
+ },
+ "reducer": {
+ "params": [],
+ "type": "avg"
+ },
+ "type": "query"
+ }
+ ],
+ "executionErrorState": "alerting",
+ "frequency": "60s",
+ "handler": 1,
+ "name": "Cluster Capacity alert",
+ "noDataState": "no_data",
+ "notifications": [
+ {
+ "id": 1
+ }
+ ]
+ },
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "description": "This trigger raises a notification if the raw used crosses the 85% capacity threshold of the ceph cluster",
+ "fill": 1,
+ "gridPos": {
+ "h": 7,
+ "w": 4,
+ "x": 4,
+ "y": 23
+ },
+ "id": 5,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 4,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "sum(ceph_osd_stat_bytes_used) / sum(ceph_osd_stat_bytes) * 100 ",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 2,
+ "legendFormat": "Raw Capacity Used %",
+ "refId": "A",
+ "step": 40,
+ "textEditor": true
+ }
+ ],
+ "thresholds": [
+ {
+ "colorMode": "critical",
+ "fill": true,
+ "line": true,
+ "op": "gt",
+ "value": 85
+ }
+ ],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Cluster Capacity",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "percent",
+ "label": "",
+ "logBase": 1,
+ "max": "100",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "alert": {
+ "conditions": [
+ {
+ "evaluator": {
+ "params": [
+ 0
+ ],
+ "type": "gt"
+ },
+ "operator": {
+ "type": "and"
+ },
+ "query": {
+ "params": [
+ "A",
+ "1m",
+ "now"
+ ]
+ },
+ "reducer": {
+ "params": [],
+ "type": "last"
+ },
+ "type": "query"
+ }
+ ],
+ "executionErrorState": "alerting",
+ "frequency": "60s",
+ "handler": 1,
+ "name": "OSDs with High PG Count",
+ "noDataState": "ok",
+ "notifications": [
+ {
+ "id": 1
+ }
+ ]
+ },
+ "aliasColors": {},
+ "bars": true,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "description": "Shows the number of PGs that have a pg count > 275.",
+ "fill": 1,
+ "gridPos": {
+ "h": 7,
+ "w": 4,
+ "x": 8,
+ "y": 23
+ },
+ "id": 16,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": false,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "count(ceph_osd_numpg > 275)",
+ "format": "time_series",
+ "instant": true,
+ "intervalFactor": 1,
+ "refId": "A"
+ }
+ ],
+ "thresholds": [
+ {
+ "colorMode": "critical",
+ "fill": true,
+ "line": true,
+ "op": "gt",
+ "value": 0
+ }
+ ],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "OSDs with High PG Count",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "decimals": 0,
+ "format": "short",
+ "label": "#NUM OSDs with high PG Count",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ }
+ ],
+ "refresh": "15s",
+ "schemaVersion": 16,
+ "style": "dark",
+ "tags": [],
+ "templating": {
+ "list": []
+ },
+ "time": {
+ "from": "now-1h",
+ "to": "now"
+ },
+ "timepicker": {
+ "refresh_intervals": [
+ "5s",
+ "10s",
+ "15s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ],
+ "time_options": [
+ "5m",
+ "15m",
+ "1h",
+ "6h",
+ "12h",
+ "24h",
+ "2d",
+ "7d",
+ "30d"
+ ]
+ },
+ "timezone": "browser",
+ "title": "Alert Status",
+ "version": 17
+}
--- /dev/null
+{
+ "__requires": [
+ {
+ "type": "panel",
+ "id": "alertlist",
+ "name": "Alert List",
+ "version": "5.0.0"
+ },
+ {
+ "type": "grafana",
+ "id": "grafana",
+ "name": "Grafana",
+ "version": "5.0.4"
+ },
+ {
+ "type": "panel",
+ "id": "grafana-piechart-panel",
+ "name": "Pie Chart",
+ "version": "1.3.0"
+ },
+ {
+ "type": "panel",
+ "id": "graph",
+ "name": "Graph",
+ "version": "5.0.0"
+ },
+ {
+ "type": "datasource",
+ "id": "prometheus",
+ "name": "Local",
+ "version": "5.0.0"
+ },
+ {
+ "type": "panel",
+ "id": "singlestat",
+ "name": "Singlestat",
+ "version": "5.0.0"
+ },
+ {
+ "type": "panel",
+ "id": "vonage-status-panel",
+ "name": "Status Panel",
+ "version": "1.0.8"
+ }
+ ],
+ "annotations": {
+ "list": [
+ {
+ "builtIn": 1,
+ "datasource": "-- Grafana --",
+ "enable": true,
+ "hide": true,
+ "iconColor": "rgba(0, 211, 255, 1)",
+ "limit": 100,
+ "name": "Annotations & Alerts",
+ "showIn": 0,
+ "type": "dashboard"
+ }
+ ]
+ },
+ "editable": false,
+ "gnetId": null,
+ "graphTooltip": 0,
+ "id": null,
+ "iteration": 1526962541471,
+ "links": [
+ {
+ "asDropdown": true,
+ "icon": "external link",
+ "includeVars": true,
+ "keepTime": true,
+ "tags": [
+ "overview"
+ ],
+ "targetBlank": true,
+ "title": "Shortcuts",
+ "type": "dashboards"
+ }
+ ],
+ "panels": [
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": null,
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 2,
+ "w": 2,
+ "x": 0,
+ "y": 0
+ },
+ "height": "50px",
+ "id": 1,
+ "interval": null,
+ "links": [
+ {
+ "dashUri": "db/ceph-cluster",
+ "dashboard": "Ceph Cluster",
+ "includeVars": true,
+ "keepTime": true,
+ "targetBlank": true,
+ "title": "Ceph Cluster",
+ "type": "dashboard"
+ }
+ ],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "10%",
+ "prefix": "",
+ "prefixFontSize": "10%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "refId": "A"
+ }
+ ],
+ "thresholds": "",
+ "title": "",
+ "transparent": true,
+ "type": "singlestat",
+ "valueFontSize": "35%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "Cluster",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": null,
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 2,
+ "w": 2,
+ "x": 2,
+ "y": 0
+ },
+ "height": "50px",
+ "id": 2,
+ "interval": null,
+ "links": [
+ {
+ "dashUri": "db/ceph-pools",
+ "dashboard": "Ceph Pools",
+ "includeVars": true,
+ "keepTime": true,
+ "targetBlank": true,
+ "title": "Ceph Pools",
+ "type": "dashboard"
+ }
+ ],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "10%",
+ "prefix": "",
+ "prefixFontSize": "10%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "refId": "A"
+ }
+ ],
+ "thresholds": "",
+ "title": "",
+ "transparent": true,
+ "type": "singlestat",
+ "valueFontSize": "35%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "Pools",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": null,
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 2,
+ "w": 2,
+ "x": 4,
+ "y": 0
+ },
+ "height": "50px",
+ "id": 3,
+ "interval": null,
+ "links": [
+ {
+ "dashUri": "db/ceph-osd-information",
+ "dashboard": "Ceph OSD Information",
+ "includeVars": true,
+ "keepTime": true,
+ "targetBlank": true,
+ "title": "Ceph OSD Information",
+ "type": "dashboard"
+ }
+ ],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "10%",
+ "prefix": "",
+ "prefixFontSize": "10%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "refId": "A"
+ }
+ ],
+ "thresholds": "",
+ "title": "",
+ "transparent": true,
+ "type": "singlestat",
+ "valueFontSize": "35%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "OSDs",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": null,
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 2,
+ "w": 2,
+ "x": 6,
+ "y": 0
+ },
+ "height": "50px",
+ "id": 40,
+ "interval": null,
+ "links": [
+ {
+ "dashUri": "db/ceph-rgw-workload",
+ "dashboard": "Ceph RGW Workload",
+ "includeVars": false,
+ "keepTime": true,
+ "targetBlank": true,
+ "title": "Ceph RGW Workload",
+ "type": "dashboard"
+ }
+ ],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "10%",
+ "prefix": "",
+ "prefixFontSize": "10%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "refId": "A"
+ }
+ ],
+ "thresholds": "",
+ "title": "",
+ "transparent": true,
+ "type": "singlestat",
+ "valueFontSize": "35%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "S3/Swift",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": null,
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 2,
+ "w": 2,
+ "x": 8,
+ "y": 0
+ },
+ "height": "50px",
+ "id": 5,
+ "interval": null,
+ "links": [
+ {
+ "dashUri": "db/ceph-backend-storage",
+ "dashboard": "Ceph Backend Storage",
+ "includeVars": true,
+ "keepTime": true,
+ "targetBlank": true,
+ "title": "OSD Host Performance",
+ "type": "dashboard"
+ }
+ ],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "10%",
+ "prefix": "",
+ "prefixFontSize": "10%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "refId": "A"
+ }
+ ],
+ "thresholds": "",
+ "title": "",
+ "transparent": true,
+ "type": "singlestat",
+ "valueFontSize": "35%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "OSD Hosts",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": null,
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 2,
+ "w": 2,
+ "x": 10,
+ "y": 0
+ },
+ "height": "50px",
+ "id": 6,
+ "interval": null,
+ "links": [
+ {
+ "dashUri": "db/network-usage-by-server",
+ "dashboard": "Network Usage by Server",
+ "includeVars": true,
+ "keepTime": true,
+ "targetBlank": true,
+ "title": "Network Usage by Server",
+ "type": "dashboard"
+ }
+ ],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "10%",
+ "prefix": "",
+ "prefixFontSize": "10%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "refId": "A"
+ }
+ ],
+ "thresholds": "",
+ "title": "",
+ "transparent": true,
+ "type": "singlestat",
+ "valueFontSize": "35%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "Network",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "gridPos": {
+ "h": 4,
+ "w": 6,
+ "x": 18,
+ "y": 0
+ },
+ "id": 8,
+ "limit": 10,
+ "links": [
+ {
+ "dashUri": "db/alert-status",
+ "dashboard": "Alert Status",
+ "targetBlank": true,
+ "title": "Alert Status",
+ "type": "dashboard"
+ }
+ ],
+ "minSpan": 4,
+ "onlyAlertsOnDashboard": false,
+ "show": "current",
+ "sortOrder": 3,
+ "stateFilter": [
+ "alerting"
+ ],
+ "title": "Active Alerts",
+ "type": "alertlist"
+ },
+ {
+ "collapsed": false,
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 4
+ },
+ "id": 35,
+ "panels": [],
+ "repeat": null,
+ "title": "At a Glance",
+ "type": "row"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": true,
+ "colorValue": false,
+ "colors": [
+ "rgba(1, 167, 1, 1)",
+ "rgba(255,165,0, 1)",
+ "rgba(255, 0, 0, 1)"
+ ],
+ "datasource": null,
+ "description": "Shows the overall health of the ceph cluster",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 6,
+ "w": 2,
+ "x": 0,
+ "y": 5
+ },
+ "hideTimeOverride": true,
+ "id": 9,
+ "interval": null,
+ "links": [
+ {
+ "dashUri": "db/ceph-health",
+ "dashboard": "Ceph Health",
+ "includeVars": true,
+ "keepTime": false,
+ "targetBlank": true,
+ "title": "Ceph Health",
+ "type": "dashboard"
+ }
+ ],
+ "mappingType": 2,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": "",
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "0",
+ "text": "OK",
+ "to": "0"
+ },
+ {
+ "from": "1",
+ "text": "WARN",
+ "to": "1"
+ },
+ {
+ "from": "2",
+ "text": "ERROR",
+ "to": "2"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "ceph_health_status",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "refId": "A",
+ "textEditor": true
+ }
+ ],
+ "thresholds": "1,2",
+ "timeFrom": "1m",
+ "timeShift": null,
+ "title": "Health",
+ "type": "singlestat",
+ "valueFontSize": "50%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "OK",
+ "value": "0"
+ },
+ {
+ "op": "=",
+ "text": "WARN",
+ "value": "1"
+ },
+ {
+ "op": "=",
+ "text": "ERROR",
+ "value": "2"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "clusterName": "MONs",
+ "colorMode": "Panel",
+ "colors": {
+ "crit": "rgba(245, 54, 54, 0.9)",
+ "disable": "rgba(128, 128, 128, 0.9)",
+ "ok": "rgb(1,167,1)",
+ "warn": "rgba(237, 129, 40, 0.9)"
+ },
+ "cornerRadius": 0,
+ "datasource": null,
+ "displayName": "MONs",
+ "flipCard": false,
+ "flipTime": 5,
+ "fontFormat": "Regular",
+ "gridPos": {
+ "h": 6,
+ "w": 2,
+ "x": 2,
+ "y": 5
+ },
+ "hideTimeOverride": true,
+ "id": 10,
+ "isAutoScrollOnOverflow": false,
+ "isGrayOnNoData": true,
+ "isHideAlertsOnDisable": false,
+ "isIgnoreOKColors": false,
+ "links": [],
+ "minSpan": 2,
+ "namePrefix": "",
+ "targets": [
+ {
+ "aggregation": "Last",
+ "alias": "total",
+ "displayType": "Regular",
+ "expr": "count(ceph_mon_quorum_status)",
+ "format": "time_series",
+ "instant": true,
+ "intervalFactor": 1,
+ "legendFormat": "total",
+ "refId": "D",
+ "textEditor": true,
+ "valueHandler": "Text Only"
+ },
+ {
+ "aggregation": "Last",
+ "alias": "quorum",
+ "displayAliasType": "Always",
+ "displayType": "Regular",
+ "displayValueWithAlias": "When Alias Displayed",
+ "expr": "count(ceph_mon_quorum_status == 1)",
+ "format": "time_series",
+ "instant": true,
+ "intervalFactor": 1,
+ "legendFormat": "quorum",
+ "refId": "E",
+ "textEditor": true,
+ "valueHandler": "String Threshold",
+ "warn": "1"
+ },
+ {
+ "aggregation": "Last",
+ "alias": "down",
+ "crit": 2,
+ "decimals": 2,
+ "displayAliasType": "Always",
+ "displayType": "Regular",
+ "displayValueWithAlias": "When Alias Displayed",
+ "expr": "count(ceph_mon_quorum_status != 1)",
+ "format": "time_series",
+ "hide": false,
+ "instant": true,
+ "intervalFactor": 1,
+ "legendFormat": "down",
+ "refId": "A",
+ "textEditor": true,
+ "units": "none",
+ "valueHandler": "Number Threshold",
+ "warn": 1
+ }
+ ],
+ "timeFrom": "1m",
+ "timeShift": null,
+ "title": "",
+ "type": "vonage-status-panel"
+ },
+ {
+ "clusterName": "OSDs",
+ "colorMode": "Panel",
+ "colors": {
+ "crit": "rgba(245, 54, 54, 0.9)",
+ "disable": "rgba(128, 128, 128, 0.9)",
+ "ok": "rgb(1,167,1)",
+ "warn": "rgba(237, 129, 40, 0.9)"
+ },
+ "cornerRadius": 0,
+ "datasource": null,
+ "displayName": "OSDs",
+ "flipCard": false,
+ "flipTime": 5,
+ "fontFormat": "Regular",
+ "gridPos": {
+ "h": 6,
+ "w": 2,
+ "x": 4,
+ "y": 5
+ },
+ "hideTimeOverride": true,
+ "id": 11,
+ "isAutoScrollOnOverflow": false,
+ "isGrayOnNoData": false,
+ "isHideAlertsOnDisable": false,
+ "isIgnoreOKColors": false,
+ "links": [
+ {
+ "dashUri": "db/ceph-osd-information",
+ "dashboard": "Ceph OSD Information",
+ "targetBlank": true,
+ "title": "Ceph OSD Information",
+ "type": "dashboard"
+ }
+ ],
+ "minSpan": 2,
+ "namePrefix": "",
+ "targets": [
+ {
+ "aggregation": "Last",
+ "alias": "total",
+ "displayType": "Regular",
+ "expr": "count(ceph_osd_up)",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 2,
+ "legendFormat": "total",
+ "refId": "E",
+ "textEditor": true,
+ "valueHandler": "Text Only"
+ },
+ {
+ "aggregation": "Last",
+ "alias": "in",
+ "displayType": "Regular",
+ "expr": "count(ceph_osd_up == 1)",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 2,
+ "legendFormat": "up",
+ "refId": "F",
+ "textEditor": true,
+ "valueHandler": "Text Only"
+ },
+ {
+ "aggregation": "Last",
+ "alias": "up",
+ "displayType": "Regular",
+ "expr": "count(ceph_osd_in == 1)",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 2,
+ "legendFormat": "in",
+ "refId": "A",
+ "textEditor": true,
+ "valueHandler": "Text Only"
+ },
+ {
+ "aggregation": "Last",
+ "alias": "out",
+ "displayType": "Regular",
+ "expr": "count(ceph_osd_in == 0)",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "out",
+ "refId": "C",
+ "textEditor": true,
+ "valueHandler": "Text Only"
+ },
+ {
+ "aggregation": "Last",
+ "alias": "down",
+ "crit": 5,
+ "decimals": 2,
+ "displayAliasType": "Always",
+ "displayType": "Regular",
+ "displayValueWithAlias": "When Alias Displayed",
+ "expr": "count(ceph_osd_up == 0)",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "down",
+ "refId": "B",
+ "textEditor": true,
+ "units": "none",
+ "valueHandler": "Number Threshold",
+ "warn": 1
+ }
+ ],
+ "timeFrom": "1m",
+ "timeShift": null,
+ "title": "",
+ "type": "vonage-status-panel"
+ },
+ {
+ "clusterName": "OSD Hosts",
+ "colorMode": "Panel",
+ "colors": {
+ "crit": "rgba(245, 54, 54, 0.9)",
+ "disable": "rgba(128, 128, 128, 0.9)",
+ "ok": "rgb(1,167,1)",
+ "warn": "rgba(237, 129, 40, 0.9)"
+ },
+ "cornerRadius": 0,
+ "datasource": null,
+ "displayName": "OSD Hosts",
+ "flipCard": false,
+ "flipTime": 5,
+ "fontFormat": "Regular",
+ "gridPos": {
+ "h": 6,
+ "w": 2,
+ "x": 6,
+ "y": 5
+ },
+ "hideTimeOverride": true,
+ "id": 12,
+ "isAutoScrollOnOverflow": false,
+ "isGrayOnNoData": false,
+ "isHideAlertsOnDisable": false,
+ "isIgnoreOKColors": false,
+ "links": [
+ {
+ "dashUri": "db/ceph-health",
+ "dashboard": "Ceph Health",
+ "targetBlank": true,
+ "title": "Ceph Health",
+ "type": "dashboard"
+ }
+ ],
+ "minSpan": 2,
+ "targets": [
+ {
+ "aggregation": "Last",
+ "alias": "total",
+ "displayType": "Regular",
+ "expr": "count(\n count(\n ceph_disk_occupation\n ) by (instance)\n)",
+ "format": "time_series",
+ "instant": true,
+ "intervalFactor": 1,
+ "legendFormat": "total",
+ "refId": "A",
+ "textEditor": true,
+ "valueHandler": "Text Only"
+ },
+ {
+ "aggregation": "Last",
+ "alias": "up",
+ "displayType": "Regular",
+ "expr": "count(\n count(\n ceph_disk_occupation\n ) by (instance)) -\ncount(\n (count by(instance) (ceph_disk_occupation * \n on(ceph_daemon) group_right(instance) ceph_osd_up == 0) - \n count by(instance) (ceph_disk_occupation)) == 0)",
+ "format": "time_series",
+ "instant": true,
+ "intervalFactor": 1,
+ "legendFormat": "up",
+ "refId": "B",
+ "textEditor": true,
+ "valueHandler": "Text Only"
+ },
+ {
+ "aggregation": "Last",
+ "alias": "down",
+ "crit": 2,
+ "decimals": 2,
+ "displayAliasType": "Always",
+ "displayType": "Regular",
+ "displayValueWithAlias": "When Alias Displayed",
+ "expr": "count(\n (count by(instance) (ceph_disk_occupation * \n on(ceph_daemon) group_right(instance) ceph_osd_up == 0) - \n count by(instance) (ceph_disk_occupation)) == 0)",
+ "format": "time_series",
+ "hide": false,
+ "instant": true,
+ "intervalFactor": 1,
+ "legendFormat": "down",
+ "refId": "C",
+ "textEditor": true,
+ "units": "none",
+ "url": "dashboard/db/ceph-health",
+ "valueHandler": "Number Threshold",
+ "warn": 1
+ }
+ ],
+ "timeFrom": "30s",
+ "timeShift": null,
+ "title": "",
+ "type": "vonage-status-panel"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "#299c46",
+ "rgba(237, 129, 40, 0.89)",
+ "#d44a3a"
+ ],
+ "datasource": null,
+ "decimals": 0,
+ "description": "Number of RGW daemons active",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 6,
+ "w": 2,
+ "x": 8,
+ "y": 5
+ },
+ "id": 39,
+ "interval": null,
+ "links": [
+ {
+ "dashUri": "db/ceph-rgw-workload",
+ "dashboard": "Ceph RGW Workload",
+ "targetBlank": true,
+ "title": "Ceph RGW Workload",
+ "type": "dashboard"
+ }
+ ],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "count(ceph_rgw_metadata)",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "refId": "A"
+ }
+ ],
+ "thresholds": "",
+ "title": "RGWs",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "#299c46",
+ "rgba(237, 129, 40, 0.89)",
+ "#d44a3a"
+ ],
+ "datasource": null,
+ "decimals": 0,
+ "description": "Number of MDS daemons active",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 6,
+ "w": 2,
+ "x": 10,
+ "y": 5
+ },
+ "id": 41,
+ "interval": null,
+ "links": [
+ {
+ "dashUri": "db/mds-performance",
+ "dashboard": "MDS Performance",
+ "targetBlank": true,
+ "title": "MDS Performance",
+ "type": "dashboard"
+ }
+ ],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "count(ceph_mds_metadata)",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "refId": "A"
+ }
+ ],
+ "thresholds": "",
+ "title": "MDS",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(1, 167, 1, 1)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "datasource": null,
+ "decimals": 0,
+ "format": "short",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": true,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 6,
+ "w": 4,
+ "x": 12,
+ "y": 5
+ },
+ "hideTimeOverride": true,
+ "id": 15,
+ "interval": null,
+ "links": [
+ {
+ "dashUri": "db/ceph-cluster",
+ "dashboard": "Ceph Cluster",
+ "params": "panelId=3&fullscreen&orgId=1",
+ "targetBlank": true,
+ "title": "Cluster Capacity Information",
+ "type": "dashboard"
+ }
+ ],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 4,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "%",
+ "postfixFontSize": "40%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "sum(ceph_osd_stat_bytes_used) / sum(ceph_osd_stat_bytes) * 100",
+ "format": "time_series",
+ "hide": false,
+ "instant": true,
+ "intervalFactor": 2,
+ "refId": "A",
+ "textEditor": true
+ }
+ ],
+ "thresholds": "70,90",
+ "timeFrom": "1m",
+ "timeShift": null,
+ "title": "Capacity Utilization",
+ "type": "singlestat",
+ "valueFontSize": "70%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": null,
+ "decimals": 1,
+ "description": "Shows the growth rate based on osd usage over the past $growth_window.",
+ "format": "bytes",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 6,
+ "w": 2,
+ "x": 16,
+ "y": 5
+ },
+ "id": 16,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "topk(1, ceph_cluster_total_used_bytes offset 1d) - ignoring (instance,job) topk(1, ceph_cluster_total_used_bytes offset 7d)",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "refId": "A"
+ }
+ ],
+ "thresholds": "",
+ "title": "$growth_window Growth Rate",
+ "type": "singlestat",
+ "valueFontSize": "70%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": null,
+ "decimals": 0,
+ "description": "Shows the estimated number of weeks left, based on consumption over the past $growth_window.",
+ "format": "locale",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 6,
+ "w": 2,
+ "x": 18,
+ "y": 5
+ },
+ "id": 17,
+ "interval": null,
+ "links": [],
+ "mappingType": 2,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ },
+ {
+ "from": "-99999999999999999999999",
+ "text": "No Growth",
+ "to": "0"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "(ceph_cluster_total_bytes - ceph_cluster_total_used_bytes) /\n scalar(topk(1, ceph_cluster_total_used_bytes offset 1d) - ignoring (instance,job) topk(1, ceph_cluster_total_used_bytes offset 7d))\n",
+ "format": "time_series",
+ "hide": false,
+ "instant": true,
+ "intervalFactor": 1,
+ "refId": "A",
+ "textEditor": true
+ }
+ ],
+ "thresholds": "",
+ "title": "Weeks Remaining",
+ "type": "singlestat",
+ "valueFontSize": "70%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "aliasColors": {
+ "Unknown": "#bf1b00",
+ "active + clean": "#01a701",
+ "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_pg_active_clean": "#01a701",
+ "collectd.obj-mon-1.storage.lab.cephmetrics.gauge.ceph.mon.num_pg_peering": "#ffa500",
+ "peering": "#0A50A1"
+ },
+ "breakPoint": "50%",
+ "cacheTimeout": null,
+ "combine": {
+ "label": "Others",
+ "threshold": ""
+ },
+ "datasource": null,
+ "fontSize": "100%",
+ "format": "none",
+ "gridPos": {
+ "h": 6,
+ "w": 4,
+ "x": 20,
+ "y": 5
+ },
+ "height": "",
+ "hideTimeOverride": true,
+ "id": 18,
+ "interval": null,
+ "legend": {
+ "percentage": false,
+ "show": true,
+ "values": true
+ },
+ "legendType": "Under graph",
+ "links": [
+ {
+ "dashUri": "db/ceph-cluster",
+ "dashboard": "Ceph Cluster",
+ "includeVars": false,
+ "keepTime": false,
+ "targetBlank": true,
+ "title": "Ceph Cluster Information",
+ "type": "dashboard"
+ }
+ ],
+ "maxDataPoints": "1",
+ "minSpan": 4,
+ "nullPointMode": "connected",
+ "pieType": "pie",
+ "strokeWidth": "",
+ "targets": [
+ {
+ "expr": "ceph_pg_active",
+ "format": "time_series",
+ "hide": false,
+ "instant": true,
+ "intervalFactor": 1,
+ "legendFormat": "Active",
+ "refId": "B",
+ "textEditor": true
+ },
+ {
+ "expr": "ceph_pg_degraded",
+ "format": "time_series",
+ "hide": false,
+ "instant": true,
+ "intervalFactor": 1,
+ "legendFormat": "Degraded",
+ "refId": "C",
+ "textEditor": true
+ },
+ {
+ "expr": "ceph_pg_peering",
+ "format": "time_series",
+ "hide": false,
+ "instant": true,
+ "intervalFactor": 1,
+ "legendFormat": "Peering",
+ "refId": "D",
+ "textEditor": true
+ },
+ {
+ "expr": "ceph_pg_unknown",
+ "format": "time_series",
+ "instant": true,
+ "intervalFactor": 1,
+ "legendFormat": "Unknown",
+ "refId": "E"
+ }
+ ],
+ "timeFrom": "1m",
+ "timeShift": null,
+ "title": "Placement Group Status",
+ "type": "grafana-piechart-panel",
+ "valueName": "current"
+ },
+ {
+ "collapsed": false,
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 11
+ },
+ "id": 36,
+ "panels": [],
+ "repeat": null,
+ "title": "Performance",
+ "type": "row"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(251,251,251, 0.97)",
+ "rgba(255,165,0, 0.89)",
+ "rgba(255, 0, 0, 1)"
+ ],
+ "datasource": null,
+ "decimals": 1,
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 6,
+ "w": 4,
+ "x": 0,
+ "y": 12
+ },
+ "id": 20,
+ "interval": null,
+ "links": [
+ {
+ "dashUri": "db/ceph-pools",
+ "dashboard": "Ceph Pools",
+ "includeVars": true,
+ "keepTime": true,
+ "targetBlank": true,
+ "title": "Ceph Pools",
+ "type": "dashboard"
+ }
+ ],
+ "mappingType": 2,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": "90",
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "/s",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": true
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "sum(irate(ceph_osd_recovery_ops[1m]))",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "refId": "A",
+ "textEditor": true
+ }
+ ],
+ "thresholds": "1,2",
+ "title": "Recovery/Backfill Ops",
+ "type": "singlestat",
+ "valueFontSize": "50%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(251,251,251, 0.97)",
+ "rgba(255,0,0,1)",
+ "rgba(255, 0, 0, 1)"
+ ],
+ "datasource": null,
+ "description": "This panel indicate whether scrub/deep scrub is running within the cluster. NB. If either of these features are turned off, the cluster will enter a WARN state. Click on the panel or the link below to look at cluster information in more detail",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 6,
+ "w": 2,
+ "x": 4,
+ "y": 12
+ },
+ "id": 19,
+ "interval": null,
+ "links": [
+ {
+ "dashUri": "db/ceph-cluster",
+ "dashboard": "Ceph Cluster",
+ "includeVars": false,
+ "keepTime": false,
+ "targetBlank": true,
+ "title": "Ceph Cluster",
+ "type": "dashboard"
+ }
+ ],
+ "mappingType": 2,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": "",
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "0",
+ "text": "INACTIVE",
+ "to": "0"
+ },
+ {
+ "from": "1",
+ "text": "ACTIVE",
+ "to": "99999"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "ceph_pg_scrubbing{job=\"ceph\"}",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 2,
+ "refId": "A",
+ "textEditor": true
+ }
+ ],
+ "thresholds": "1",
+ "title": "Scrub",
+ "type": "singlestat",
+ "valueFontSize": "50%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "INACTIVE",
+ "value": "0"
+ },
+ {
+ "op": "=",
+ "text": "ACTIVE",
+ "value": "1"
+ },
+ {
+ "op": "=",
+ "text": "DISABLED",
+ "value": "2"
+ },
+ {
+ "op": "=",
+ "text": "",
+ "value": ""
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": null,
+ "decimals": 0,
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 6,
+ "w": 4,
+ "x": 6,
+ "y": 12
+ },
+ "id": 21,
+ "interval": null,
+ "links": [
+ {
+ "dashUri": "db/ceph-pools",
+ "dashboard": "Ceph Pools",
+ "includeVars": true,
+ "keepTime": true,
+ "targetBlank": true,
+ "title": "Ceph Pools",
+ "type": "dashboard"
+ }
+ ],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": "90",
+ "minSpan": 4,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": true
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "sum(\n rate(ceph_pool_wr[$__interval])\n)\n+ \nsum(\n rate(ceph_pool_rd[$__interval])\n)",
+ "format": "time_series",
+ "groupBy": [],
+ "hide": false,
+ "intervalFactor": 1,
+ "legendFormat": "IOPS",
+ "policy": "default",
+ "rawQuery": false,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "textEditor": true
+ }
+ ],
+ "thresholds": "",
+ "title": "Client IOPS",
+ "type": "singlestat",
+ "valueFontSize": "100%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": null,
+ "decimals": 1,
+ "format": "decbytes",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 6,
+ "w": 4,
+ "x": 10,
+ "y": 12
+ },
+ "id": 22,
+ "interval": null,
+ "links": [
+ {
+ "dashUri": "db/ceph-pools",
+ "dashboard": "Ceph Pools",
+ "includeVars": true,
+ "keepTime": true,
+ "targetBlank": true,
+ "title": "Ceph Pools",
+ "type": "dashboard"
+ }
+ ],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": "90",
+ "minSpan": 4,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "/s",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": true
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "sum(rate(ceph_pool_wr_bytes[$__interval]) + rate(ceph_pool_rd_bytes[$__interval]))",
+ "format": "time_series",
+ "groupBy": [],
+ "hide": false,
+ "intervalFactor": 1,
+ "policy": "default",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "textEditor": true
+ }
+ ],
+ "thresholds": "",
+ "title": "Client Throughput",
+ "type": "singlestat",
+ "valueFontSize": "70%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": null,
+ "decimals": 0,
+ "format": "short",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 6,
+ "w": 2,
+ "x": 14,
+ "y": 12
+ },
+ "id": 23,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "count(ceph_pool_metadata)",
+ "format": "time_series",
+ "groupBy": [],
+ "intervalFactor": 2,
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "textEditor": true
+ }
+ ],
+ "thresholds": "",
+ "title": "Pools",
+ "type": "singlestat",
+ "valueFontSize": "70%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "aliasColors": {
+ "Reads": "#01a701",
+ "Writes": "#82B5D8"
+ },
+ "breakPoint": "50%",
+ "cacheTimeout": null,
+ "combine": {
+ "label": "Others",
+ "threshold": 0
+ },
+ "datasource": null,
+ "description": "Shows the read/write threshold of client IOPS serviced by the ceph cluster",
+ "fontSize": "80%",
+ "format": "none",
+ "gridPos": {
+ "h": 6,
+ "w": 4,
+ "x": 16,
+ "y": 12
+ },
+ "height": "230",
+ "id": 25,
+ "interval": null,
+ "legend": {
+ "percentage": false,
+ "show": false,
+ "values": false
+ },
+ "legendType": "Under graph",
+ "links": [],
+ "maxDataPoints": "90",
+ "minSpan": 4,
+ "nullPointMode": "connected",
+ "pieType": "pie",
+ "strokeWidth": 1,
+ "targets": [
+ {
+ "expr": "round(sum(irate(ceph_pool_rd[30s])))",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "reads",
+ "refId": "A",
+ "textEditor": true
+ },
+ {
+ "expr": "round(sum(irate(ceph_pool_wr[30s])))",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "writes",
+ "refId": "B",
+ "textEditor": true
+ }
+ ],
+ "title": "Client Read/Write Ratio",
+ "type": "grafana-piechart-panel",
+ "valueName": "current"
+ },
+ {
+ "aliasColors": {
+ "95%ile Commit Latency": "#447EBC",
+ "Apply Latency Max": "#890F02",
+ "Commit Latency": "#447EBC",
+ "apply": "#508642",
+ "commit": "#0a50a1"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "description": "Shows the OSD apply and commit latency at the $percentile%ile across the cluster over the past 15 minutes",
+ "fill": 0,
+ "gridPos": {
+ "h": 6,
+ "w": 4,
+ "x": 20,
+ "y": 12
+ },
+ "hideTimeOverride": true,
+ "id": 26,
+ "legend": {
+ "alignAsTable": false,
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "rightSide": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 2,
+ "links": [
+ {
+ "dashUri": "db/ceph-osd-information",
+ "dashboard": "Ceph OSD Information",
+ "includeVars": true,
+ "keepTime": true,
+ "targetBlank": true,
+ "title": "Ceph OSD Information",
+ "type": "dashboard"
+ }
+ ],
+ "minSpan": 4,
+ "nullPointMode": "null as zero",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "quantile($percentile / 100, ceph_osd_commit_latency_ms)",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "commit",
+ "refId": "A",
+ "textEditor": true
+ },
+ {
+ "expr": "quantile($percentile / 100, ceph_osd_apply_latency_ms)",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "apply",
+ "refId": "B",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": "15m",
+ "timeShift": null,
+ "title": "OSD Apply vs Commit Latency",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": false,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "ms",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "datasource": null,
+ "decimals": 0,
+ "description": "CPU usage is presented based on the $percentile%ile across all OSD hosts",
+ "format": "short",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 6,
+ "w": 4,
+ "x": 0,
+ "y": 18
+ },
+ "id": 27,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": "90",
+ "minSpan": 4,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": " %",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": true
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "quantile(\n $percentile / 100, (\n avg (\n sum (\n irate(node_cpu{mode=~\"(system|user|irq|nice)\", instance=~'[[osd_servers_raw]].*'}[1m]))\n by (instance,cpu)\n ) by (instance)\n ) * 100\n)",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 1,
+ "refId": "A",
+ "textEditor": true
+ }
+ ],
+ "thresholds": "70,90",
+ "title": "OSD Hosts CPU Busy",
+ "type": "singlestat",
+ "valueFontSize": "100%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": null,
+ "decimals": 0,
+ "description": "RAM Usage shows the $percentile%ile of RAM used across all OSD hosts",
+ "format": "short",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 6,
+ "w": 2,
+ "x": 4,
+ "y": 18
+ },
+ "id": 31,
+ "interval": null,
+ "links": [
+ {
+ "dashUri": "db/ceph-backend-storage",
+ "dashboard": "Ceph Backend Storage",
+ "includeVars": true,
+ "keepTime": true,
+ "targetBlank": true,
+ "title": "Ceph OSD Host Performance",
+ "type": "dashboard"
+ }
+ ],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": "",
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": " %",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(46, 161, 15, 0)",
+ "full": false,
+ "lineColor": "rgb(164, 139, 4)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "quantile(\n $percentile/100, \n (\n node_memory_MemTotal{job='node'} - node_memory_MemFree{job='node'} - node_memory_Buffers{job='node'} - node_memory_Cached{job='node'}\n ) / node_memory_MemTotal{job='node'} * 100\n)",
+ "format": "time_series",
+ "groupBy": [],
+ "hide": false,
+ "intervalFactor": 2,
+ "policy": "default",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "textEditor": true
+ }
+ ],
+ "thresholds": "",
+ "title": "RAM Util.",
+ "type": "singlestat",
+ "valueFontSize": "70%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": null,
+ "decimals": 0,
+ "description": "Total IOPS from all OSDs in the cluster",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 6,
+ "w": 4,
+ "x": 6,
+ "y": 18
+ },
+ "id": 28,
+ "interval": null,
+ "links": [
+ {
+ "dashUri": "db/ceph-backend-storage",
+ "dashboard": "Ceph Backend Storage",
+ "includeVars": true,
+ "keepTime": true,
+ "targetBlank": true,
+ "title": "Ceph OSD Host Performance",
+ "type": "dashboard"
+ }
+ ],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": "90",
+ "minSpan": 4,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": true
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "sum(\n sum(\n rate(\n node_disk_reads_completed[$__interval]\n )\n ) by (instance,device)\n + ignoring(ceph_daemon,job) group_right(instance) ceph_disk_occupation\n)\n+\nsum(\n sum(\n rate(\n node_disk_writes_completed[$__interval]\n )\n ) by (instance,device)\n + ignoring(ceph_daemon,job) group_right(instance) ceph_disk_occupation\n)",
+ "format": "time_series",
+ "groupBy": [],
+ "hide": false,
+ "intervalFactor": 1,
+ "policy": "default",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "textEditor": true
+ }
+ ],
+ "thresholds": "",
+ "title": "Disk IOPS",
+ "type": "singlestat",
+ "valueFontSize": "100%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": null,
+ "decimals": 1,
+ "format": "decbytes",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 6,
+ "w": 4,
+ "x": 10,
+ "y": 18
+ },
+ "id": 29,
+ "interval": null,
+ "links": [
+ {
+ "dashUri": "db/ceph-backend-storage",
+ "dashboard": "Ceph Backend Storage",
+ "includeVars": true,
+ "keepTime": true,
+ "targetBlank": true,
+ "title": "Ceph OSD Host Performance",
+ "type": "dashboard"
+ }
+ ],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": "90",
+ "minSpan": 4,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "/s",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": true
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "# should only include OSD hosts\nsum(\n sum(\n rate(\n node_disk_bytes_read[$__interval]\n )\n ) by (instance,device)\n + ignoring(ceph_daemon,job) group_right(instance) ceph_disk_occupation\n)\n+\nsum(\n sum(\n rate(\n node_disk_bytes_written[$__interval]\n )\n ) by (instance,device)\n + ignoring(ceph_daemon,job) group_right(instance) ceph_disk_occupation\n)",
+ "format": "time_series",
+ "groupBy": [],
+ "hide": false,
+ "intervalFactor": 1,
+ "policy": "default",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "textEditor": true
+ },
+ {
+ "expr": "# will include non-OSD hosts\nsum(\n rate(\n node_disk_bytes_read[$__interval]\n ) + \n rate(\n node_disk_bytes_written[$__interval]\n )\n)",
+ "format": "time_series",
+ "groupBy": [],
+ "hide": true,
+ "intervalFactor": 1,
+ "policy": "default",
+ "rawQuery": true,
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "tags": [],
+ "textEditor": true
+ }
+ ],
+ "thresholds": "",
+ "title": "Disk Throughput",
+ "type": "singlestat",
+ "valueFontSize": "70%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": null,
+ "decimals": 0,
+ "description": "The count of the number of disks in the cluster that are over $disk_full_threshold% full.",
+ "format": "short",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 6,
+ "w": 2,
+ "x": 14,
+ "y": 18
+ },
+ "id": 30,
+ "interval": null,
+ "links": [
+ {
+ "dashUri": "db/ceph-backend-storage",
+ "dashboard": "Ceph Backend Storage",
+ "includeVars": true,
+ "keepTime": true,
+ "targetBlank": true,
+ "title": "Ceph OSD Host Performance",
+ "type": "dashboard"
+ }
+ ],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "count(\n (ceph_osd_stat_bytes_used / ceph_osd_stat_bytes) > ($disk_full_threshold / 100)\n)",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "refId": "A",
+ "textEditor": true
+ }
+ ],
+ "thresholds": "",
+ "title": "Nearly Full Disks",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "0",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(1, 167, 1,1)",
+ "rgba(255,165,0,1)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "datasource": null,
+ "decimals": 0,
+ "description": "This panel shows the 5th %ile disk latency, indicating that 95% of the OSDs are delivering this latency or higher",
+ "format": "short",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 6,
+ "w": 4,
+ "x": 16,
+ "y": 18
+ },
+ "id": 32,
+ "interval": null,
+ "links": [
+ {
+ "dashUri": "db/latency-by-server",
+ "dashboard": "Latency by Server",
+ "includeVars": true,
+ "targetBlank": true,
+ "title": "Latency by Server",
+ "type": "dashboard"
+ }
+ ],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": "90",
+ "minSpan": 4,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": " ms",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": true
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "quantile(\n 5 / 100,\n (irate(node_disk_read_time_ms[1m]) + irate(node_disk_write_time_ms[1m]) / \n (irate(node_disk_reads_completed[1m]) + irate(node_disk_writes_completed[1m])) \n +\n ignoring(ceph_daemon,job) ceph_disk_occupation))",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 1,
+ "refId": "C"
+ },
+ {
+ "expr": "max(\n irate(node_disk_read_time_ms[30s]) / irate(node_disk_reads_completed[30s])\n +\n irate(node_disk_write_time_ms[30s]) / irate(node_disk_writes_completed[30s])\n + ignoring(ceph_daemon,job) ceph_disk_occupation\n)",
+ "format": "time_series",
+ "hide": true,
+ "intervalFactor": 2,
+ "refId": "B"
+ },
+ {
+ "expr": "sum(\n (irate(node_disk_read_time_ms[1m]) + irate(node_disk_write_time_ms[1m]) / \n (irate(node_disk_reads_completed[1m]) + irate(node_disk_writes_completed[1m])) \n +\n ignoring(ceph_daemon,job) ceph_disk_occupation)) / count(ceph_osd_up)",
+ "format": "time_series",
+ "hide": true,
+ "intervalFactor": 1,
+ "refId": "A"
+ }
+ ],
+ "thresholds": "20,60",
+ "title": "Disk Latency",
+ "type": "singlestat",
+ "valueFontSize": "100%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "0",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "aliasColors": {
+ "average": "#0a50a1",
+ "average %util": "#1f78c1"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "description": "Chart shows the disk utilization over the past 15 mins expressed as an average across all OSDs, and at the $percentile%ile.",
+ "fill": 1,
+ "gridPos": {
+ "h": 6,
+ "w": 4,
+ "x": 20,
+ "y": 18
+ },
+ "hideTimeOverride": true,
+ "id": 33,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 2,
+ "links": [
+ {
+ "dashUri": "db/disk-busy-by-server",
+ "dashboard": "Disk Busy by Server",
+ "includeVars": true,
+ "targetBlank": true,
+ "title": "Disk Busy by Server",
+ "type": "dashboard"
+ }
+ ],
+ "minSpan": 4,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "alias": "95%ile",
+ "fill": 0
+ }
+ ],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "avg (\n max by (device) (\n irate(node_disk_io_time_ms[1m]) \n and on (instance, device) ceph_disk_occupation\n ) / 10\n)",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "average",
+ "refId": "A",
+ "textEditor": false
+ },
+ {
+ "expr": "quantile(\n $percentile/100, \n (\n max by (device) (\n irate(node_disk_io_time_ms[1m]) \n and on (instance, device) ceph_disk_occupation\n ) / 10\n )\n)",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "$percentile%ile",
+ "refId": "B"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": "15m",
+ "timeShift": null,
+ "title": "Disk Utilization",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "percent",
+ "label": "",
+ "logBase": 1,
+ "max": "100",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "refresh": "15s",
+ "schemaVersion": 16,
+ "style": "dark",
+ "tags": [
+ "overview"
+ ],
+ "templating": {
+ "list": [
+ {
+ "allValue": null,
+ "current": {
+ "selected": true,
+ "text": "95",
+ "value": "95"
+ },
+ "hide": 0,
+ "includeAll": false,
+ "label": "Percentile",
+ "multi": false,
+ "name": "percentile",
+ "options": [
+ {
+ "selected": false,
+ "text": "80",
+ "value": "80"
+ },
+ {
+ "selected": false,
+ "text": "85",
+ "value": "85"
+ },
+ {
+ "selected": false,
+ "text": "90",
+ "value": "90"
+ },
+ {
+ "selected": true,
+ "text": "95",
+ "value": "95"
+ },
+ {
+ "selected": false,
+ "text": "98",
+ "value": "98"
+ }
+ ],
+ "query": "80,85,90,95,98",
+ "type": "custom"
+ },
+ {
+ "allValue": null,
+ "current": {
+ "text": "85",
+ "value": "85"
+ },
+ "hide": 2,
+ "includeAll": false,
+ "label": null,
+ "multi": false,
+ "name": "disk_full_threshold",
+ "options": [
+ {
+ "selected": true,
+ "text": "85",
+ "value": "85"
+ }
+ ],
+ "query": "85",
+ "type": "custom"
+ },
+ {
+ "allValue": null,
+ "current": {
+ "text": "7d",
+ "value": "7d"
+ },
+ "hide": 2,
+ "includeAll": false,
+ "label": null,
+ "multi": false,
+ "name": "growth_window",
+ "options": [
+ {
+ "selected": true,
+ "text": "7d",
+ "value": "7d"
+ }
+ ],
+ "query": "7d",
+ "type": "custom"
+ },
+ {
+ "allValue": "",
+ "current": {},
+ "datasource": null,
+ "hide": 2,
+ "includeAll": true,
+ "label": "OSD Host",
+ "multi": false,
+ "name": "osd_servers",
+ "options": [],
+ "query": "label_values(ceph_disk_occupation, instance)",
+ "refresh": 1,
+ "regex": "([^.]*).*",
+ "sort": 1,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ },
+ {
+ "allValue": "",
+ "current": {},
+ "datasource": null,
+ "hide": 2,
+ "includeAll": true,
+ "label": "OSD Host",
+ "multi": false,
+ "name": "osd_servers_raw",
+ "options": [],
+ "query": "label_values(ceph_disk_occupation, instance)",
+ "refresh": 1,
+ "regex": "",
+ "sort": 1,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ }
+ ]
+ },
+ "time": {
+ "from": "now-1h",
+ "to": "now"
+ },
+ "timepicker": {
+ "refresh_intervals": [
+ "5s",
+ "10s",
+ "15s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ],
+ "time_options": [
+ "5m",
+ "15m",
+ "1h",
+ "6h",
+ "12h",
+ "24h",
+ "2d",
+ "7d",
+ "30d"
+ ]
+ },
+ "timezone": "browser",
+ "title": "Ceph - At A Glance",
+ "version": 43
+}
--- /dev/null
+{
+ "__requires": [
+ {
+ "type": "grafana",
+ "id": "grafana",
+ "name": "Grafana",
+ "version": "5.0.4"
+ },
+ {
+ "type": "datasource",
+ "id": "prometheus",
+ "name": "Local",
+ "version": "5.0.0"
+ },
+ {
+ "type": "panel",
+ "id": "singlestat",
+ "name": "Singlestat",
+ "version": "5.0.0"
+ },
+ {
+ "type": "panel",
+ "id": "table",
+ "name": "Table",
+ "version": "5.0.0"
+ }
+ ],
+ "annotations": {
+ "list": [
+ {
+ "builtIn": 1,
+ "datasource": "-- Grafana --",
+ "enable": true,
+ "hide": true,
+ "iconColor": "rgba(0, 211, 255, 1)",
+ "name": "Annotations & Alerts",
+ "type": "dashboard"
+ }
+ ]
+ },
+ "editable": false,
+ "gnetId": null,
+ "graphTooltip": 0,
+ "id": null,
+ "iteration": 1525149605368,
+ "links": [
+ {
+ "asDropdown": true,
+ "icon": "external link",
+ "includeVars": true,
+ "keepTime": true,
+ "tags": [
+ "overview"
+ ],
+ "targetBlank": true,
+ "title": "Shortcuts",
+ "type": "dashboards"
+ }
+ ],
+ "panels": [
+ {
+ "collapsed": false,
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 0
+ },
+ "id": 13,
+ "panels": [],
+ "repeat": null,
+ "title": "Disk/OSD Host Summary",
+ "type": "row"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": null,
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 7,
+ "w": 2,
+ "x": 0,
+ "y": 1
+ },
+ "id": 1,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "count(ceph_osd_up < 0.5)",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "refId": "A",
+ "step": 60
+ }
+ ],
+ "thresholds": "",
+ "title": "OSDs down",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "0",
+ "value": "null"
+ }
+ ],
+ "valueName": "avg"
+ },
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "datasource": null,
+ "fontSize": "100%",
+ "gridPos": {
+ "h": 7,
+ "w": 4,
+ "x": 2,
+ "y": 1
+ },
+ "id": 2,
+ "links": [],
+ "minSpan": 4,
+ "pageSize": null,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": 0,
+ "desc": true
+ },
+ "styles": [
+ {
+ "alias": "Time",
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Time",
+ "type": "date"
+ },
+ {
+ "alias": "% Full",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 0,
+ "pattern": "Host and Disk",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ },
+ {
+ "alias": "% Full",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 0,
+ "pattern": "Current",
+ "thresholds": [],
+ "type": "number",
+ "unit": "none"
+ },
+ {
+ "alias": "OSD Id",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "Metric",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ },
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 2,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "expr": "ceph_osd_stat_bytes_used / ceph_osd_stat_bytes * 100 > $disk_full_threshold",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "{{ceph_daemon}}",
+ "refId": "A",
+ "step": 40,
+ "textEditor": true
+ }
+ ],
+ "title": "Disks Near Full",
+ "transform": "timeseries_aggregations",
+ "type": "table"
+ },
+ {
+ "columns": [],
+ "datasource": null,
+ "fontSize": "100%",
+ "gridPos": {
+ "h": 7,
+ "w": 12,
+ "x": 6,
+ "y": 1
+ },
+ "id": 17,
+ "links": [],
+ "pageSize": null,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": 1,
+ "desc": false
+ },
+ "styles": [
+ {
+ "alias": "Time",
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Time",
+ "type": "hidden"
+ },
+ {
+ "alias": "OSD Host",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "instance",
+ "thresholds": [],
+ "type": "string",
+ "unit": "short"
+ },
+ {
+ "alias": "Total Capacity",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 1,
+ "pattern": "Value #A",
+ "thresholds": [],
+ "type": "number",
+ "unit": "bytes"
+ },
+ {
+ "alias": "# Drives",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 0,
+ "pattern": "Value #B",
+ "thresholds": [],
+ "type": "number",
+ "unit": "none"
+ },
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 2,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "hidden",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "expr": "sum by (instance) (\n ceph_disk_occupation{instance=~\"($osd_servers)\"}*0 + on (ceph_daemon) group_right(instance) ceph_osd_stat_bytes\n)",
+ "format": "table",
+ "instant": true,
+ "intervalFactor": 1,
+ "refId": "A"
+ },
+ {
+ "expr": "count by (instance) (\n ceph_disk_occupation{instance=~\"($osd_servers)\"}\n)",
+ "format": "table",
+ "instant": true,
+ "intervalFactor": 1,
+ "refId": "B"
+ }
+ ],
+ "title": "OSD Host Capacity Summary",
+ "transform": "table",
+ "type": "table"
+ },
+ {
+ "collapsed": true,
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 8
+ },
+ "id": 14,
+ "panels": [
+ {
+ "cards": {
+ "cardPadding": null,
+ "cardRound": null
+ },
+ "color": {
+ "cardColor": "#b4ff00",
+ "colorScale": "sqrt",
+ "colorScheme": "interpolateRdYlGn",
+ "exponent": 0.5,
+ "mode": "spectrum"
+ },
+ "dataFormat": "timeseries",
+ "datasource": null,
+ "description": "The heatmap categorizes disk utilization into discrete buckets (e.g util 0-5) and shows the frequency of the number of disks that fall within that range as a color. The color chosen depends on the number of disks in the 'bucket', ranging from green (low) to red (high). Hover over a colored block to show the number of disks at a given util% for that time interval (20secs).",
+ "gridPos": {
+ "h": 8,
+ "w": 12,
+ "x": 0,
+ "y": 9
+ },
+ "heatmap": {},
+ "highlightCards": true,
+ "id": 5,
+ "legend": {
+ "show": false
+ },
+ "links": [],
+ "minSpan": 12,
+ "targets": [
+ {
+ "expr": "irate(node_disk_io_time_ms{instance=~\"[[osd_servers]]\"}[1m]) / 10 and on (instance, device) ceph_disk_occupation",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "refId": "A",
+ "step": 10,
+ "textEditor": true
+ }
+ ],
+ "title": "Disk Drive Utilization Heatmap - $osd_servers",
+ "tooltip": {
+ "show": true,
+ "showHistogram": false
+ },
+ "type": "heatmap",
+ "xAxis": {
+ "show": true
+ },
+ "xBucketNumber": 180,
+ "xBucketSize": "",
+ "yAxis": {
+ "decimals": null,
+ "format": "short",
+ "logBase": 1,
+ "max": "100",
+ "min": "0",
+ "show": true,
+ "splitFactor": null
+ },
+ "yBucketNumber": null,
+ "yBucketSize": 5
+ },
+ {
+ "aliasColors": {
+ "Read Throughput": "#629E51",
+ "Write Throughput": "#E0752D"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "gridPos": {
+ "h": 8,
+ "w": 12,
+ "x": 12,
+ "y": 9
+ },
+ "id": 6,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 12,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "sum(\n irate(node_disk_bytes_read{instance=~\"($osd_servers)\"}[5m]) and on (instance, device) ceph_disk_occupation\n)",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Read throughtput",
+ "refId": "A",
+ "step": 10,
+ "textEditor": true
+ },
+ {
+ "expr": "sum(\n irate(node_disk_bytes_written{instance=~\"($osd_servers)\"}[5m]) and on (instance, device) ceph_disk_occupation\n)",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Write throughtput",
+ "refId": "B",
+ "step": 10,
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Disk Throughput - $osd_servers",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "decbytes",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {
+ "Read Latency": "#629E51",
+ "Write Latency": "#E0752D"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "gridPos": {
+ "h": 8,
+ "w": 12,
+ "x": 0,
+ "y": 17
+ },
+ "id": 7,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [
+ {
+ "dashUri": "db/latency-by-server",
+ "dashboard": "Latency by Server",
+ "includeVars": true,
+ "keepTime": true,
+ "targetBlank": true,
+ "title": "Latency by Server",
+ "type": "dashboard"
+ }
+ ],
+ "minSpan": 12,
+ "nullPointMode": "null as zero",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "quantile($percentile/100.0, (\n irate(node_disk_read_time_ms[5m]) / clamp_min(irate(node_disk_reads_completed[5m]), 0.001)\n and on (instance, device) ceph_disk_occupation{instance=~\"($osd_servers)\"}\n))",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Read latency",
+ "refId": "A",
+ "step": 10,
+ "textEditor": true
+ },
+ {
+ "expr": "quantile($percentile/100.0, (\n irate(node_disk_write_time_ms[5m]) / clamp_min(irate(node_disk_writes_completed[5m]), 0.001)\n and on (instance, device) ceph_disk_occupation{instance=~\"($osd_servers)\"}\n))",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Write latency",
+ "refId": "B",
+ "step": 10
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Disk Latency - $osd_servers OSDs @ $percentile%ile",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "ms",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {
+ "disk busy %": "#3F6833"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "gridPos": {
+ "h": 8,
+ "w": 12,
+ "x": 12,
+ "y": 17
+ },
+ "id": 8,
+ "legend": {
+ "avg": false,
+ "current": true,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [
+ {
+ "dashUri": "db/disk-busy-by-server",
+ "dashboard": "Disk Busy by Server",
+ "includeVars": true,
+ "keepTime": true,
+ "targetBlank": true,
+ "title": "Disk Busy by Server",
+ "type": "dashboard"
+ }
+ ],
+ "minSpan": 12,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "quantile($percentile/100, (\n max by (device) (\n irate(node_disk_io_time_ms[5m]) and on (instance, device) ceph_disk_occupation{instance=~\"($osd_servers)\"}\n ) / 10\n))",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "disk busy %",
+ "refId": "A",
+ "step": 10,
+ "textEditor": true
+ }
+ ],
+ "thresholds": [
+ {
+ "colorMode": "custom",
+ "fill": false,
+ "line": true,
+ "lineColor": "rgba(178, 0, 0, 0.29)",
+ "op": "gt",
+ "value": 80
+ }
+ ],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Disk Utilization - $osd_servers OSDs at $percentile%ile",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "",
+ "logBase": 1,
+ "max": "100",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "aliasColors": {
+ "IOPS/spindle": "#3F6833"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "gridPos": {
+ "h": 8,
+ "w": 12,
+ "x": 0,
+ "y": 25
+ },
+ "id": 9,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 12,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "quantile($percentile/100.0, (\n avg by (device) (\n irate(node_disk_reads_completed[5m]) and on (instance, device) ceph_disk_occupation{instance=~\"($osd_servers)\"}\n ) +\n avg by (device) (\n irate(node_disk_writes_completed[5m]) and on (instance, device) ceph_disk_occupation{instance=~\"($osd_servers)\"}\n )\n))",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "IOPS/spindle",
+ "refId": "A",
+ "step": 10,
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "IOPS per Disk @ $percentile%ile - $osd_servers OSDs",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {
+ "IOPS": "#3F6833"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "gridPos": {
+ "h": 8,
+ "w": 12,
+ "x": 12,
+ "y": 25
+ },
+ "id": 10,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [
+ {
+ "dashUri": "db/iops-by-server",
+ "dashboard": "IOPS by Server",
+ "includeVars": true,
+ "keepTime": true,
+ "targetBlank": true,
+ "title": "IOPS by Server",
+ "type": "dashboard"
+ }
+ ],
+ "minSpan": 12,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "quantile($percentile/100.0, (\n sum(\n irate(node_disk_reads_completed[5m]) and on (instance, device) ceph_disk_occupation{instance=~\"($osd_servers)\"}\n ) +\n sum(\n irate(node_disk_writes_completed[5m]) and on (instance, device) ceph_disk_occupation{instance=~\"($osd_servers)\"}\n )\n))",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "refId": "A",
+ "step": 10,
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Total Disk IOPS - $osd_servers OSDs",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "title": "Disk/OSD Load Summary",
+ "type": "row"
+ },
+ {
+ "collapsed": true,
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 9
+ },
+ "id": 15,
+ "panels": [
+ {
+ "aliasColors": {
+ "CPU Busy": "#447EBC",
+ "CPU Busy @ 95%ile": "#890F02",
+ "Cluster-wide CPU Busy @ 95%ile": "#890F02",
+ "Max CPU Busy": "#BF1B00",
+ "Max CPU Busy - all OSD Hosts": "#BF1B00"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 3,
+ "gridPos": {
+ "h": 7,
+ "w": 12,
+ "x": 0,
+ "y": 10
+ },
+ "id": 11,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 12,
+ "nullPointMode": "null as zero",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "alias": "Cluster-wide CPU Busy @ 95%ile",
+ "fill": 0
+ }
+ ],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "quantile($percentile / 100.0, (\n sum by (instance) (\n irate(node_cpu{mode=~\"(irq|nice|system|user)\"}[5m])\n ) / sum by (instance) (\n irate(node_cpu[5m])\n )\n) * 100)",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Cluster-wide CPU Busy @ $percentile%ile",
+ "refId": "A",
+ "step": 10,
+ "textEditor": true
+ },
+ {
+ "expr": "avg(\n sum by (instance) (\n irate(node_cpu{instance=~\"($osd_servers)\", mode=~\"(irq|nice|system|user)\"}[5m])\n ) / sum by (instance) (\n irate(node_cpu{instance=~\"($osd_servers)\"}[5m])\n )\n) * 100",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 2,
+ "legendFormat": "Average OSD Host(s) CPU Busy",
+ "refId": "B",
+ "step": 10,
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "CPU Utilization - $osd_servers",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "",
+ "logBase": 1,
+ "max": "100",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {
+ "Network load (rx+tx)": "#3F6833"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "gridPos": {
+ "h": 7,
+ "w": 12,
+ "x": 12,
+ "y": 10
+ },
+ "id": 12,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [
+ {
+ "dashUri": "db/network-usage-by-server",
+ "dashboard": "Network Usage by Server",
+ "includeVars": true,
+ "keepTime": true,
+ "targetBlank": true,
+ "title": "Network Usage by Server",
+ "type": "dashboard"
+ }
+ ],
+ "minSpan": 12,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "sum (irate(node_network_receive_bytes{instance=~\"($osd_servers)\", device=~\"(eth|en|bond|ib|mlx|p).*\"}[5m])) + \nsum (irate(node_network_transmit_bytes{instance=~\"($osd_servers)\", device=~\"(eth|en|bond|ib|mlx|p).*\"}[5m]))",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 2,
+ "legendFormat": "Network load (rx+tx)",
+ "refId": "A",
+ "step": 10
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Network Load - $osd_servers",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "title": "OSD Host CPU and Network Load",
+ "type": "row"
+ }
+ ],
+ "refresh": "10s",
+ "schemaVersion": 16,
+ "style": "dark",
+ "tags": [],
+ "templating": {
+ "list": [
+ {
+ "allValue": null,
+ "current": {
+ "selected": true,
+ "text": "95",
+ "value": "95"
+ },
+ "hide": 0,
+ "includeAll": false,
+ "label": "Percentile",
+ "multi": false,
+ "name": "percentile",
+ "options": [
+ {
+ "selected": false,
+ "text": "80",
+ "value": "80"
+ },
+ {
+ "selected": false,
+ "text": "85",
+ "value": "85"
+ },
+ {
+ "selected": false,
+ "text": "90",
+ "value": "90"
+ },
+ {
+ "selected": true,
+ "text": "95",
+ "value": "95"
+ },
+ {
+ "selected": false,
+ "text": "98",
+ "value": "98"
+ }
+ ],
+ "query": "80,85,90,95,98",
+ "type": "custom"
+ },
+ {
+ "allValue": null,
+ "current": {},
+ "datasource": null,
+ "hide": 0,
+ "includeAll": true,
+ "label": "OSD Hostname",
+ "multi": true,
+ "name": "osd_servers",
+ "options": [],
+ "query": "ceph_disk_occupation",
+ "refresh": 1,
+ "regex": "/instance=\"([^\"]*)\"/",
+ "sort": 3,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ },
+ {
+ "allValue": null,
+ "current": {
+ "selected": true,
+ "text": "85",
+ "value": "85"
+ },
+ "hide": 2,
+ "includeAll": false,
+ "label": null,
+ "multi": false,
+ "name": "disk_full_threshold",
+ "options": [
+ {
+ "selected": true,
+ "text": "85",
+ "value": "85"
+ }
+ ],
+ "query": "85",
+ "type": "custom"
+ }
+ ]
+ },
+ "time": {
+ "from": "now-1h",
+ "to": "now"
+ },
+ "timepicker": {
+ "refresh_intervals": [
+ "5s",
+ "10s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ],
+ "time_options": [
+ "5m",
+ "15m",
+ "1h",
+ "6h",
+ "12h",
+ "24h",
+ "2d",
+ "7d",
+ "30d"
+ ]
+ },
+ "timezone": "browser",
+ "title": "Ceph Backend Storage",
+ "version": 14
+}
--- /dev/null
+{
+ "__requires": [
+ {
+ "type": "grafana",
+ "id": "grafana",
+ "name": "Grafana",
+ "version": "5.0.4"
+ },
+ {
+ "type": "datasource",
+ "id": "prometheus",
+ "name": "Local",
+ "version": "5.0.0"
+ },
+ {
+ "type": "panel",
+ "id": "singlestat",
+ "name": "Singlestat",
+ "version": "5.0.0"
+ },
+ {
+ "type": "panel",
+ "id": "text",
+ "name": "Text",
+ "version": "5.0.0"
+ }
+ ],
+ "annotations": {
+ "list": [
+ {
+ "builtIn": 1,
+ "datasource": "-- Grafana --",
+ "enable": true,
+ "hide": true,
+ "iconColor": "rgba(0, 211, 255, 1)",
+ "name": "Annotations & Alerts",
+ "type": "dashboard"
+ }
+ ]
+ },
+ "editable": false,
+ "gnetId": null,
+ "graphTooltip": 0,
+ "id": null,
+ "links": [
+ {
+ "asDropdown": true,
+ "icon": "external link",
+ "includeVars": true,
+ "keepTime": true,
+ "tags": [
+ "overview"
+ ],
+ "targetBlank": true,
+ "title": "Shortcuts",
+ "type": "dashboards"
+ }
+ ],
+ "panels": [
+ {
+ "collapsed": false,
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 0
+ },
+ "id": 29,
+ "panels": [],
+ "repeat": null,
+ "title": "Cluster Configuration",
+ "type": "row"
+ },
+ {
+ "content": "",
+ "gridPos": {
+ "h": 3,
+ "w": 2,
+ "x": 0,
+ "y": 1
+ },
+ "id": 1,
+ "links": [],
+ "minSpan": 2,
+ "mode": "markdown",
+ "title": "",
+ "transparent": true,
+ "type": "text"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": null,
+ "decimals": 0,
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 2,
+ "x": 2,
+ "y": 1
+ },
+ "id": 2,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "count(ceph_mon_metadata)",
+ "format": "time_series",
+ "groupBy": [],
+ "instant": true,
+ "intervalFactor": 1,
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "step": 60,
+ "tags": [],
+ "textEditor": true
+ }
+ ],
+ "thresholds": "",
+ "title": "MONs",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": null,
+ "decimals": 0,
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 2,
+ "x": 4,
+ "y": 1
+ },
+ "id": 3,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": "",
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "count(sum by (instance) (ceph_disk_occupation))",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "refId": "A",
+ "step": 60,
+ "textEditor": true
+ }
+ ],
+ "thresholds": "",
+ "title": "OSD Hosts",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": null,
+ "decimals": 0,
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 2,
+ "x": 6,
+ "y": 1
+ },
+ "id": 4,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "count(ceph_mds_metadata)",
+ "format": "time_series",
+ "groupBy": [],
+ "instant": true,
+ "intervalFactor": 1,
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "step": 60,
+ "tags": [],
+ "textEditor": true
+ }
+ ],
+ "thresholds": "",
+ "title": "MDS",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": null,
+ "decimals": 0,
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 2,
+ "x": 8,
+ "y": 1
+ },
+ "id": 5,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": "",
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "count(ceph_rgw_metadata)",
+ "format": "time_series",
+ "instant": true,
+ "intervalFactor": 1,
+ "refId": "A",
+ "textEditor": true
+ }
+ ],
+ "thresholds": "",
+ "title": "RGW Hosts",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "0",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": null,
+ "decimals": 0,
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 2,
+ "x": 10,
+ "y": 1
+ },
+ "id": 6,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": "",
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "max(ceph_iscsi_gateway_tpg_total)",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "refId": "A",
+ "textEditor": true
+ }
+ ],
+ "thresholds": "",
+ "title": "iSCSI Hosts",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": null,
+ "decimals": 0,
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 4,
+ "x": 12,
+ "y": 1
+ },
+ "id": 7,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 4,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "count(max by (ceph_daemon) (ceph_osd_metadata))",
+ "format": "time_series",
+ "groupBy": [],
+ "intervalFactor": 2,
+ "legendFormat": "",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "step": 60,
+ "tags": [],
+ "textEditor": true
+ }
+ ],
+ "thresholds": "",
+ "title": "OSDs",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": null,
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 2,
+ "x": 16,
+ "y": 1
+ },
+ "id": 8,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "count(ceph_pool_metadata)",
+ "format": "time_series",
+ "groupBy": [],
+ "intervalFactor": 2,
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "step": 60,
+ "tags": [],
+ "textEditor": true
+ }
+ ],
+ "thresholds": "",
+ "title": "Pools",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": null,
+ "decimals": 1,
+ "format": "bytes",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 4,
+ "x": 18,
+ "y": 1
+ },
+ "id": 9,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 4,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "ceph_cluster_total_bytes - ceph_cluster_total_used_bytes",
+ "format": "time_series",
+ "instant": true,
+ "intervalFactor": 1,
+ "refId": "A",
+ "step": 60,
+ "textEditor": true
+ }
+ ],
+ "thresholds": "",
+ "title": "Unused Capacity",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "collapsed": false,
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 4
+ },
+ "id": 30,
+ "panels": [],
+ "repeat": null,
+ "title": "Cluster Flags",
+ "type": "row"
+ },
+ {
+ "content": "",
+ "gridPos": {
+ "h": 3,
+ "w": 4,
+ "x": 0,
+ "y": 5
+ },
+ "id": 10,
+ "links": [],
+ "minSpan": 4,
+ "mode": "markdown",
+ "title": "",
+ "transparent": true,
+ "type": "text"
+ },
+ {
+ "content": "<h2 style=\"text-align: center;\">Cluster Flags:</h2>",
+ "gridPos": {
+ "h": 3,
+ "w": 2,
+ "x": 4,
+ "y": 5
+ },
+ "height": "95",
+ "id": 11,
+ "links": [],
+ "minSpan": 2,
+ "mode": "html",
+ "title": "",
+ "transparent": true,
+ "type": "text"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": true,
+ "colorValue": false,
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "datasource": null,
+ "description": "Scrub activity takes place daily basis across the OSD's and performs object size and attribute checks. Scrub activity can be controlled with the \"ceph osd scrub\" command.",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 2,
+ "x": 6,
+ "y": 5
+ },
+ "height": "95",
+ "hideTimeOverride": true,
+ "id": 12,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": "",
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "2*scalar(ceph_osd_flag_noscrub) + scalar(ceph_pg_scrubbing >bool 0)",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "refId": "A",
+ "step": 2,
+ "textEditor": true
+ }
+ ],
+ "thresholds": "1,2",
+ "timeFrom": "1m",
+ "timeShift": null,
+ "title": "SCRUB",
+ "type": "singlestat",
+ "valueFontSize": "40%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ },
+ {
+ "op": "=",
+ "text": "ENABLED",
+ "value": "0"
+ },
+ {
+ "op": "=",
+ "text": "ACTIVE",
+ "value": "1"
+ },
+ {
+ "op": "=",
+ "text": "DISABLED",
+ "value": "2"
+ },
+ {
+ "op": "=",
+ "text": "DISABLED",
+ "value": "3"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": true,
+ "colorValue": false,
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "datasource": null,
+ "description": "Deep scrub acts on the objects within placement groups (PGs). Objects are read, and checksum's compared to protect against silent bit-rot events. Although a weekly activity, in large clusters is normal to see deep-scrub active on a daily basis. Scrub activity can be controlled with the \"ceph osd scrub\" command.",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 2,
+ "x": 8,
+ "y": 5
+ },
+ "height": "95",
+ "hideTimeOverride": true,
+ "id": 13,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": "",
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "2*scalar(ceph_osd_flag_nodeep_scrub) + scalar(ceph_pg_deep >bool 0)",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "refId": "A",
+ "step": 2,
+ "textEditor": true
+ }
+ ],
+ "thresholds": "1,2",
+ "timeFrom": "1m",
+ "title": "DEEP",
+ "type": "singlestat",
+ "valueFontSize": "40%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ },
+ {
+ "op": "=",
+ "text": "ENABLED",
+ "value": "0"
+ },
+ {
+ "op": "=",
+ "text": "ACTIVE",
+ "value": "1"
+ },
+ {
+ "op": "=",
+ "text": "DISABLED",
+ "value": "2"
+ },
+ {
+ "op": "=",
+ "text": "DISABLED",
+ "value": "3"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": true,
+ "colorValue": false,
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "datasource": null,
+ "description": "With the recovery flag enabled, disruption in the cluster will result in data being recreated to freespace within the cluster to honor the pool's protection schema. Under some circumstances, you may use the norecover flag to prevent automatic recovery.",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 2,
+ "x": 10,
+ "y": 5
+ },
+ "height": "95",
+ "hideTimeOverride": true,
+ "id": 14,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": "",
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "2*scalar(ceph_osd_flag_norecover) + scalar(ceph_pg_recovering >bool 0)",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "refId": "A",
+ "step": 2,
+ "textEditor": true
+ }
+ ],
+ "thresholds": "1,2",
+ "timeFrom": "1m",
+ "title": "RECOVERY",
+ "type": "singlestat",
+ "valueFontSize": "40%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ },
+ {
+ "op": "=",
+ "text": "ENABLED",
+ "value": "0"
+ },
+ {
+ "op": "=",
+ "text": "ACTIVE",
+ "value": "1"
+ },
+ {
+ "op": "=",
+ "text": "DISABLED",
+ "value": "2"
+ },
+ {
+ "op": "=",
+ "text": "DISABLED",
+ "value": "3"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": true,
+ "colorValue": false,
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "datasource": null,
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 2,
+ "x": 12,
+ "y": 5
+ },
+ "height": "95",
+ "hideTimeOverride": true,
+ "id": 15,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": "",
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "2*scalar(ceph_osd_flag_nobackfill) + scalar(ceph_pg_backfilling >bool 0)",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "refId": "A",
+ "step": 2,
+ "textEditor": true
+ },
+ {
+ "expr": "",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "refId": "B"
+ }
+ ],
+ "thresholds": "1,2",
+ "timeFrom": "1m",
+ "title": "BACKFILL",
+ "type": "singlestat",
+ "valueFontSize": "40%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ },
+ {
+ "op": "=",
+ "text": "ENABLED",
+ "value": "0"
+ },
+ {
+ "op": "=",
+ "text": "ACTIVE",
+ "value": "1"
+ },
+ {
+ "op": "=",
+ "text": "DISABLED",
+ "value": "2"
+ },
+ {
+ "op": "=",
+ "text": "DISABLED",
+ "value": "3"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": true,
+ "colorValue": false,
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "datasource": null,
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 2,
+ "x": 14,
+ "y": 5
+ },
+ "height": "95",
+ "hideTimeOverride": true,
+ "id": 16,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": "",
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "2*scalar(ceph_osd_flag_norebalance)",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "refId": "A",
+ "step": 2,
+ "textEditor": true
+ }
+ ],
+ "thresholds": "1,2",
+ "timeFrom": "1m",
+ "title": "REBALANCE",
+ "type": "singlestat",
+ "valueFontSize": "40%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ },
+ {
+ "op": "=",
+ "text": "ENABLED",
+ "value": "0"
+ },
+ {
+ "op": "=",
+ "text": "ACTIVE",
+ "value": "1"
+ },
+ {
+ "op": "=",
+ "text": "DISABLED",
+ "value": "2"
+ },
+ {
+ "op": "=",
+ "text": "DISABLED",
+ "value": "3"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": true,
+ "colorValue": false,
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "datasource": null,
+ "description": "The OUT flag setting allows the mon's to mark OSD's as out of the configuration when they stop sending hearbeats to the mon's. By marking them OUT, recovery takes place. However, for planned maintenance you can set the cluster to noout to disable this behavior.",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 2,
+ "x": 16,
+ "y": 5
+ },
+ "height": "95",
+ "hideTimeOverride": true,
+ "id": 17,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": "",
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "2*scalar(ceph_osd_flag_noout)",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "refId": "A",
+ "step": 2,
+ "textEditor": true
+ }
+ ],
+ "thresholds": "1,2",
+ "timeFrom": "1m",
+ "title": "OUT",
+ "type": "singlestat",
+ "valueFontSize": "40%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ },
+ {
+ "op": "=",
+ "text": "ENABLED",
+ "value": "0"
+ },
+ {
+ "op": "=",
+ "text": "ACTIVE",
+ "value": "1"
+ },
+ {
+ "op": "=",
+ "text": "DISABLED",
+ "value": "2"
+ },
+ {
+ "op": "=",
+ "text": "DISABLED",
+ "value": "3"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": true,
+ "colorValue": false,
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "datasource": null,
+ "description": "The down feature allows OSD's to mark their peers as DOWN when they are not reachable. However, if there is a poor network or planned outages, you may want to set this flag to nodown to prevent OSD's flapping between up/down states",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 2,
+ "x": 18,
+ "y": 5
+ },
+ "height": "95",
+ "hideTimeOverride": true,
+ "id": 18,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": "",
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "2*scalar(ceph_osd_flag_nodown) + scalar(ceph_pg_down >bool 0)",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "refId": "A",
+ "step": 2,
+ "textEditor": true
+ }
+ ],
+ "thresholds": "1,2",
+ "timeFrom": "1m",
+ "title": "DOWN",
+ "type": "singlestat",
+ "valueFontSize": "40%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ },
+ {
+ "op": "=",
+ "text": "ENABLED",
+ "value": "0"
+ },
+ {
+ "op": "=",
+ "text": "ACTIVE",
+ "value": "1"
+ },
+ {
+ "op": "=",
+ "text": "DISABLED",
+ "value": "2"
+ },
+ {
+ "op": "=",
+ "text": "DISABLED",
+ "value": "3"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "collapsed": true,
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 8
+ },
+ "id": 31,
+ "panels": [
+ {
+ "aliasColors": {
+ "Raw": "#3F6833",
+ "Used": "#E0752D"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "description": "Shows the Capacity within the cluster over the past 7 days",
+ "fill": 1,
+ "gridPos": {
+ "h": 7,
+ "w": 8,
+ "x": 0,
+ "y": 9
+ },
+ "hideTimeOverride": true,
+ "id": 19,
+ "legend": {
+ "avg": false,
+ "current": true,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 12,
+ "nullPointMode": "connected",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "Used",
+ "expr": "scalar(ceph_cluster_total_used_bytes)",
+ "format": "time_series",
+ "groupBy": [],
+ "intervalFactor": 2,
+ "legendFormat": "Used",
+ "policy": "default",
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "step": 3600,
+ "tags": [],
+ "textEditor": true
+ },
+ {
+ "alias": "Raw Capacity",
+ "expr": "scalar(ceph_cluster_total_bytes)",
+ "format": "time_series",
+ "groupBy": [],
+ "intervalFactor": 2,
+ "legendFormat": "Raw",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "step": 3600,
+ "tags": [],
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": "7d",
+ "timeShift": null,
+ "title": "Cluster Capacity - Past 7 Days",
+ "tooltip": {
+ "shared": true,
+ "sort": 1,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "aliasColors": {
+ "Raw": "#3F6833",
+ "Used": "#E0752D"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "decimals": 2,
+ "description": "Shows the Capacity within each pool over the past 7 days",
+ "fill": 1,
+ "gridPos": {
+ "h": 7,
+ "w": 8,
+ "x": 8,
+ "y": 9
+ },
+ "hideTimeOverride": true,
+ "id": 20,
+ "legend": {
+ "alignAsTable": false,
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 12,
+ "nullPointMode": "connected",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "Used",
+ "expr": "max by (name) (\n ceph_pool_bytes_used / (ceph_pool_bytes_used + ceph_pool_max_avail) * 100 + on (pool_id) group_left (name) ceph_pool_metadata\n)",
+ "format": "time_series",
+ "groupBy": [],
+ "intervalFactor": 2,
+ "legendFormat": "{{name}}",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "step": 3600,
+ "tags": [],
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": "7d",
+ "timeShift": null,
+ "title": "Pool Capacity - Past 7 Days",
+ "tooltip": {
+ "shared": true,
+ "sort": 2,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "percent",
+ "label": "",
+ "logBase": 1,
+ "max": "100",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "aliasColors": {
+ "Raw": "#3F6833",
+ "Used": "#E0752D"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "decimals": 2,
+ "description": "Shows the Capacity within the cluster over the past 7 days",
+ "fill": 1,
+ "gridPos": {
+ "h": 7,
+ "w": 8,
+ "x": 16,
+ "y": 9
+ },
+ "hideTimeOverride": true,
+ "id": 21,
+ "legend": {
+ "avg": false,
+ "current": true,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 12,
+ "nullPointMode": "connected",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "Used",
+ "expr": "scalar(ceph_cluster_total_objects)",
+ "format": "time_series",
+ "groupBy": [],
+ "intervalFactor": 2,
+ "legendFormat": "RADOS Objects",
+ "policy": "default",
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ }
+ ]
+ ],
+ "step": 3600,
+ "tags": [],
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": "7d",
+ "timeShift": null,
+ "title": "RADOS Object History - Past 7 Days",
+ "tooltip": {
+ "shared": true,
+ "sort": 1,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "RADOS Object Count",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": true,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "description": "Each bar indicates the number of OSD's that have a PG count in a specific range as shown on the x axis.",
+ "fill": 1,
+ "gridPos": {
+ "h": 8,
+ "w": 12,
+ "x": 0,
+ "y": 16
+ },
+ "id": 37,
+ "legend": {
+ "alignAsTable": false,
+ "avg": false,
+ "current": false,
+ "hideEmpty": false,
+ "hideZero": false,
+ "max": false,
+ "min": false,
+ "rightSide": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": false,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "ceph_osd_numpg\n",
+ "format": "time_series",
+ "instant": true,
+ "intervalFactor": 1,
+ "legendFormat": "PGs per OSD",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Distribution of PGs per OSD",
+ "tooltip": {
+ "shared": false,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": 20,
+ "mode": "histogram",
+ "name": null,
+ "show": true,
+ "values": [
+ "total"
+ ]
+ },
+ "yaxes": [
+ {
+ "decimals": 0,
+ "format": "short",
+ "label": "# of OSDs",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "columns": [],
+ "datasource": null,
+ "description": "This table shows all OSDs sorted by their PG Count. The PG count is color coded.",
+ "fontSize": "100%",
+ "gridPos": {
+ "h": 8,
+ "w": 12,
+ "x": 12,
+ "y": 16
+ },
+ "id": 35,
+ "links": [],
+ "pageSize": null,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": 5,
+ "desc": true
+ },
+ "styles": [
+ {
+ "alias": "OSD",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "ceph_daemon",
+ "thresholds": [],
+ "type": "string",
+ "unit": "short"
+ },
+ {
+ "alias": "Device",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "device",
+ "thresholds": [],
+ "type": "string",
+ "unit": "short"
+ },
+ {
+ "alias": "Host",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "instance",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ },
+ {
+ "alias": "# PGs",
+ "colorMode": "value",
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 0,
+ "pattern": "Value",
+ "thresholds": [
+ "200",
+ "250"
+ ],
+ "type": "number",
+ "unit": "none"
+ },
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 2,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "hidden",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "expr": "ceph_osd_numpg * on(ceph_daemon) group_left(instance,device) ceph_disk_occupation",
+ "format": "table",
+ "instant": true,
+ "intervalFactor": 1,
+ "refId": "A"
+ }
+ ],
+ "title": "OSDs by PG Counts",
+ "transform": "table",
+ "type": "table"
+ }
+ ],
+ "repeat": null,
+ "title": "Cluster Capacity",
+ "type": "row"
+ },
+ {
+ "collapsed": true,
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 9
+ },
+ "id": 32,
+ "panels": [
+ {
+ "columns": [],
+ "datasource": "Local",
+ "fontSize": "100%",
+ "gridPos": {
+ "h": 7,
+ "w": 4,
+ "x": 0,
+ "y": 10
+ },
+ "hideTimeOverride": true,
+ "id": 22,
+ "links": [],
+ "minSpan": 4,
+ "pageSize": 10,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": 0,
+ "desc": true
+ },
+ "styles": [
+ {
+ "alias": "Host",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "ceph_daemon",
+ "thresholds": [],
+ "type": "string",
+ "unit": "short"
+ },
+ {
+ "alias": "Version",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "short_vers",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ },
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 2,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "hidden",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "expr": "label_replace(ceph_mon_metadata,\"short_vers\",\"$1\",\"ceph_version\",\"ceph version(.*) (.*) (.*) (.*)\")",
+ "format": "table",
+ "hide": false,
+ "instant": true,
+ "intervalFactor": 1,
+ "legendFormat": "",
+ "refId": "D"
+ }
+ ],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "MONs",
+ "transform": "table",
+ "type": "table"
+ },
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "datasource": null,
+ "fontSize": "100%",
+ "gridPos": {
+ "h": 7,
+ "w": 4,
+ "x": 4,
+ "y": 10
+ },
+ "hideTimeOverride": true,
+ "id": 24,
+ "links": [],
+ "minSpan": 4,
+ "pageSize": 10,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": 6,
+ "desc": false
+ },
+ "styles": [
+ {
+ "alias": "OSD",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 0,
+ "pattern": "ceph_daemon",
+ "thresholds": [],
+ "type": "number",
+ "unit": "none"
+ },
+ {
+ "alias": "Version",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "short_vers",
+ "thresholds": [],
+ "type": "string",
+ "unit": "short"
+ },
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 2,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "hidden",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "expr": "label_replace(ceph_osd_metadata,\"short_vers\",\"$1\",\"ceph_version\",\"ceph version(.*) (.*) (.*) (.*)\")",
+ "format": "table",
+ "instant": true,
+ "intervalFactor": 1,
+ "legendFormat": "{{id}} - {{short_vers}}",
+ "refId": "A"
+ }
+ ],
+ "timeFrom": "2m",
+ "timeShift": null,
+ "title": "OSDs",
+ "transform": "table",
+ "type": "table"
+ },
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "datasource": null,
+ "fontSize": "100%",
+ "gridPos": {
+ "h": 7,
+ "w": 4,
+ "x": 8,
+ "y": 10
+ },
+ "hideTimeOverride": true,
+ "id": 26,
+ "links": [],
+ "minSpan": 4,
+ "pageSize": 10,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": 0,
+ "desc": true
+ },
+ "styles": [
+ {
+ "alias": "RGW Host",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "ceph_daemon",
+ "thresholds": [],
+ "type": "string",
+ "unit": "short"
+ },
+ {
+ "alias": "Version",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "short_vers",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ },
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 2,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "hidden",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "expr": "label_replace(ceph_rgw_metadata,\"short_vers\",\"$1\",\"ceph_version\",\"ceph version(.*) (.*) (.*) (.*)\")",
+ "format": "table",
+ "instant": true,
+ "intervalFactor": 1,
+ "legendFormat": "",
+ "refId": "A",
+ "textEditor": true
+ }
+ ],
+ "timeFrom": "2m",
+ "title": "RGWs",
+ "transform": "table",
+ "type": "table"
+ },
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "datasource": null,
+ "fontSize": "100%",
+ "gridPos": {
+ "h": 7,
+ "w": 4,
+ "x": 12,
+ "y": 10
+ },
+ "hideTimeOverride": true,
+ "id": 33,
+ "links": [],
+ "minSpan": 4,
+ "pageSize": 10,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": 0,
+ "desc": true
+ },
+ "styles": [
+ {
+ "alias": "MDS Host",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "ceph_daemon",
+ "thresholds": [],
+ "type": "string",
+ "unit": "short"
+ },
+ {
+ "alias": "Version",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "short_vers",
+ "thresholds": [],
+ "type": "string",
+ "unit": "short"
+ },
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 2,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "hidden",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "expr": "label_replace(ceph_mds_metadata,\"short_vers\",\"$1\",\"ceph_version\",\"ceph version(.*) (.*) (.*) (.*)\")",
+ "format": "table",
+ "instant": true,
+ "intervalFactor": 1,
+ "legendFormat": "{{id}} - {{short_vers}}",
+ "refId": "A",
+ "textEditor": true
+ }
+ ],
+ "timeFrom": "2m",
+ "title": "MDSs",
+ "transform": "table",
+ "type": "table"
+ },
+ {
+ "content": "",
+ "gridPos": {
+ "h": 7,
+ "w": 2,
+ "x": 16,
+ "y": 10
+ },
+ "id": 27,
+ "links": [],
+ "minSpan": 2,
+ "mode": "markdown",
+ "title": "",
+ "transparent": true,
+ "type": "text"
+ }
+ ],
+ "repeat": null,
+ "title": "Ceph Daemon Version Information",
+ "type": "row"
+ }
+ ],
+ "refresh": false,
+ "schemaVersion": 16,
+ "style": "dark",
+ "tags": [
+ "overview"
+ ],
+ "templating": {
+ "list": []
+ },
+ "time": {
+ "from": "now-1h",
+ "to": "now"
+ },
+ "timepicker": {
+ "refresh_intervals": [
+ "5s",
+ "10s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ],
+ "time_options": [
+ "5m",
+ "15m",
+ "1h",
+ "6h",
+ "12h",
+ "24h",
+ "2d",
+ "7d",
+ "30d"
+ ]
+ },
+ "timezone": "browser",
+ "title": "Ceph Cluster",
+ "version": 12
+}
--- /dev/null
+{
+ "__requires": [
+ {
+ "type": "grafana",
+ "id": "grafana",
+ "name": "Grafana",
+ "version": "5.0.4"
+ },
+ {
+ "type": "datasource",
+ "id": "prometheus",
+ "name": "Local",
+ "version": "5.0.0"
+ },
+ {
+ "type": "panel",
+ "id": "singlestat",
+ "name": "Singlestat",
+ "version": "5.0.0"
+ }
+ ],
+ "annotations": {
+ "list": [
+ {
+ "builtIn": 1,
+ "datasource": "-- Grafana --",
+ "enable": true,
+ "hide": true,
+ "iconColor": "rgba(0, 211, 255, 1)",
+ "name": "Annotations & Alerts",
+ "type": "dashboard"
+ }
+ ]
+ },
+ "editable": false,
+ "gnetId": null,
+ "graphTooltip": 0,
+ "id": null,
+ "iteration": 1526964924155,
+ "links": [
+ {
+ "asDropdown": true,
+ "icon": "external link",
+ "includeVars": true,
+ "keepTime": true,
+ "tags": [
+ "overview"
+ ],
+ "targetBlank": true,
+ "title": "Shortcuts",
+ "type": "dashboards"
+ }
+ ],
+ "panels": [
+ {
+ "cacheTimeout": null,
+ "colorBackground": true,
+ "colorValue": false,
+ "colors": [
+ "rgba(1, 167, 1, 1)",
+ "rgba(255,165,0, 1)",
+ "rgba(255, 0, 0, 1)"
+ ],
+ "datasource": null,
+ "description": "Shows the overall health of the ceph cluster.",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 24,
+ "x": 0,
+ "y": 0
+ },
+ "height": "70",
+ "hideTimeOverride": true,
+ "id": 1,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": "",
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "0",
+ "text": "HEALTH OK",
+ "to": "0"
+ },
+ {
+ "from": "1",
+ "text": "HEALTH WARNING",
+ "to": "1"
+ },
+ {
+ "from": "2",
+ "text": "HEALTH ERROR",
+ "to": "2"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "ceph_health_status",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "refId": "A",
+ "step": 2,
+ "textEditor": true
+ }
+ ],
+ "thresholds": "1,2",
+ "timeFrom": "1m",
+ "timeShift": null,
+ "title": "",
+ "type": "singlestat",
+ "valueFontSize": "50%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "HEALTH OK",
+ "value": "0"
+ },
+ {
+ "op": "=",
+ "text": "HEALTH WARN",
+ "value": "1"
+ },
+ {
+ "op": "=",
+ "text": "HEALTH ERROR",
+ "value": "2"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "collapsed": true,
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 3
+ },
+ "id": 22,
+ "panels": [
+ {
+ "aliasColors": {
+ "Ceph Health": "#0a50a1"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "description": "The chart plots the clusters health, over time. The colored bands show 3 distinct areas; green (OK), yellow(WARN) and red(ERROR). The plot line in blue is this clusters current health, so you can see over time how long the cluster spends in an OK, WARN or ERROR state",
+ "fill": 0,
+ "gridPos": {
+ "h": 9,
+ "w": 24,
+ "x": 0,
+ "y": 4
+ },
+ "height": "350",
+ "hideTimeOverride": true,
+ "id": 2,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 2,
+ "links": [],
+ "maxDataPoints": "",
+ "minSpan": 6,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": true,
+ "targets": [
+ {
+ "expr": "ceph_health_status ",
+ "format": "time_series",
+ "instant": false,
+ "intervalFactor": 2,
+ "legendFormat": "Ceph Health",
+ "refId": "A",
+ "step": 600,
+ "textEditor": true
+ }
+ ],
+ "thresholds": [
+ {
+ "colorMode": "custom",
+ "fill": true,
+ "fillColor": "#9ac48a",
+ "line": false,
+ "op": "lt",
+ "value": 0.1
+ },
+ {
+ "colorMode": "custom",
+ "fill": true,
+ "fillColor": "rgba(244, 213, 152, 0.58)",
+ "line": false,
+ "op": "lt",
+ "value": 1.1
+ },
+ {
+ "colorMode": "custom",
+ "fill": true,
+ "fillColor": "rgba(163, 0, 0, 0.3)",
+ "line": false,
+ "op": "gt",
+ "value": 1.1
+ }
+ ],
+ "timeFrom": "3d",
+ "timeShift": null,
+ "title": "Health History - Last 3 days",
+ "tooltip": {
+ "shared": false,
+ "sort": 1,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "",
+ "logBase": 1,
+ "max": "3",
+ "min": "-0.5",
+ "show": false
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "title": "Cluster Health History",
+ "type": "row"
+ },
+ {
+ "collapsed": true,
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 4
+ },
+ "id": 23,
+ "panels": [
+ {
+ "content": "<h2 style=\"text-align: center;\">MONs</h2>",
+ "gridPos": {
+ "h": 5,
+ "w": 2,
+ "x": 0,
+ "y": 5
+ },
+ "id": 6,
+ "links": [],
+ "minSpan": 2,
+ "mode": "html",
+ "title": "",
+ "transparent": true,
+ "type": "text"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": true,
+ "colorValue": false,
+ "colors": [
+ "#d44a3a",
+ "rgba(237, 129, 40, 0.89)",
+ "#299c46"
+ ],
+ "datasource": null,
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 2,
+ "w": 3,
+ "x": 2,
+ "y": 5
+ },
+ "id": 28,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "repeat": "mon_servers",
+ "repeatDirection": "v",
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "label_replace(ceph_mon_quorum_status{ceph_daemon=~\"[[mon_servers]]\"},\"mon_host\",\"$2\",\"ceph_daemon\",\"(.*)_(.*)\")",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "",
+ "refId": "A"
+ }
+ ],
+ "thresholds": "0.5,1",
+ "title": "$mon_servers",
+ "type": "singlestat",
+ "valueFontSize": "50%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ },
+ {
+ "op": "=",
+ "text": "OK",
+ "value": "1"
+ },
+ {
+ "op": "=",
+ "text": "DOWN",
+ "value": "0"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "content": "<h2 style=\"text-align: center;\">Cluster Flags:</h2>",
+ "description": "Show cluster flags that determine automatic maintenance and recovery operations",
+ "gridPos": {
+ "h": 3,
+ "w": 2,
+ "x": 8,
+ "y": 5
+ },
+ "id": 31,
+ "links": [],
+ "minSpan": 2,
+ "mode": "html",
+ "title": "",
+ "transparent": true,
+ "type": "text"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": true,
+ "colorValue": false,
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "datasource": null,
+ "description": "Scrub activity takes place daily basis across the OSD's and performs object size and attribute checks. Scrub activity can be controlled with the \"ceph osd scrub\" command.",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 2,
+ "x": 10,
+ "y": 5
+ },
+ "height": "95",
+ "hideTimeOverride": true,
+ "id": 7,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": "",
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "2*scalar(ceph_osd_flag_noscrub) + scalar(ceph_pg_scrubbing >bool 0)",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "refId": "A",
+ "step": 2,
+ "textEditor": true
+ }
+ ],
+ "thresholds": "1,2",
+ "timeFrom": "1m",
+ "title": "SCRUB",
+ "type": "singlestat",
+ "valueFontSize": "40%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ },
+ {
+ "op": "=",
+ "text": "ENABLED",
+ "value": "0"
+ },
+ {
+ "op": "=",
+ "text": "ACTIVE",
+ "value": "1"
+ },
+ {
+ "op": "=",
+ "text": "DISABLED",
+ "value": "2"
+ },
+ {
+ "op": "=",
+ "text": "DISABLED",
+ "value": "3"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": true,
+ "colorValue": false,
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "datasource": null,
+ "description": "Deep scrub acts on the objects within placement groups (PGs). Objects are read, and checksum's compared to protect against silent bit-rot events. Although a weekly activity, in large clusters is normal to see deep-scrub active on a daily basis. Scrub activity can be controlled with the \"ceph osd scrub\" command.",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 2,
+ "x": 12,
+ "y": 5
+ },
+ "height": "95",
+ "hideTimeOverride": true,
+ "id": 8,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": "",
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "2*scalar(ceph_osd_flag_nodeep_scrub) + scalar(ceph_pg_deep >bool 0)",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "refId": "A",
+ "step": 2,
+ "textEditor": true
+ }
+ ],
+ "thresholds": "1,2",
+ "timeFrom": "1m",
+ "title": "DEEP",
+ "type": "singlestat",
+ "valueFontSize": "40%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ },
+ {
+ "op": "=",
+ "text": "ENABLED",
+ "value": "0"
+ },
+ {
+ "op": "=",
+ "text": "ACTIVE",
+ "value": "1"
+ },
+ {
+ "op": "=",
+ "text": "DISABLED",
+ "value": "2"
+ },
+ {
+ "op": "=",
+ "text": "DISABLED",
+ "value": "3"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": true,
+ "colorValue": false,
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "datasource": null,
+ "description": "The OUT flag setting allows the mon's to mark OSD's as out of the configuration when they stop sending hearbeats to the mon's. By marking them OUT, recovery takes place. However, for planned maintenance you can set the cluster to noout to disable this behavior.",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 2,
+ "x": 14,
+ "y": 5
+ },
+ "height": "95",
+ "hideTimeOverride": true,
+ "id": 12,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": "",
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "2*scalar(ceph_osd_flag_noout)",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "refId": "A",
+ "step": 2,
+ "textEditor": true
+ }
+ ],
+ "thresholds": "1,2",
+ "timeFrom": "1m",
+ "timeShift": null,
+ "title": "OUT",
+ "type": "singlestat",
+ "valueFontSize": "40%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ },
+ {
+ "op": "=",
+ "text": "ENABLED",
+ "value": "0"
+ },
+ {
+ "op": "=",
+ "text": "ACTIVE",
+ "value": "1"
+ },
+ {
+ "op": "=",
+ "text": "DISABLED",
+ "value": "2"
+ },
+ {
+ "op": "=",
+ "text": "DISABLED",
+ "value": "3"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": true,
+ "colorValue": false,
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "datasource": null,
+ "description": "The down feature allows OSD's to mark their peers as DOWN when they are not reachable. However, if there is a poor network or planned outages, you may want to set this flag to nodown to prevent OSD's flapping between up/down states",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 2,
+ "x": 16,
+ "y": 5
+ },
+ "height": "95",
+ "hideTimeOverride": true,
+ "id": 13,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": "",
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "2*scalar(ceph_osd_flag_nodown) + scalar(ceph_pg_down >bool 0)",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "refId": "A",
+ "step": 2,
+ "textEditor": true
+ }
+ ],
+ "thresholds": "1,2",
+ "timeFrom": "1m",
+ "timeShift": null,
+ "title": "DOWN",
+ "type": "singlestat",
+ "valueFontSize": "40%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ },
+ {
+ "op": "=",
+ "text": "ENABLED",
+ "value": "0"
+ },
+ {
+ "op": "=",
+ "text": "ACTIVE",
+ "value": "1"
+ },
+ {
+ "op": "=",
+ "text": "DISABLED",
+ "value": "2"
+ },
+ {
+ "op": "=",
+ "text": "DISABLED",
+ "value": "3"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": true,
+ "colorValue": false,
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "datasource": null,
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 2,
+ "x": 18,
+ "y": 5
+ },
+ "height": "95",
+ "hideTimeOverride": true,
+ "id": 34,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": "",
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "2*scalar(ceph_osd_flag_nobackfill) + scalar(ceph_pg_backfilling >bool 0)",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "refId": "A",
+ "step": 2,
+ "textEditor": true
+ },
+ {
+ "expr": "",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "refId": "B"
+ }
+ ],
+ "thresholds": "1,2",
+ "timeFrom": "1m",
+ "title": "BACKFILL",
+ "type": "singlestat",
+ "valueFontSize": "40%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ },
+ {
+ "op": "=",
+ "text": "ENABLED",
+ "value": "0"
+ },
+ {
+ "op": "=",
+ "text": "ACTIVE",
+ "value": "1"
+ },
+ {
+ "op": "=",
+ "text": "DISABLED",
+ "value": "2"
+ },
+ {
+ "op": "=",
+ "text": "DISABLED",
+ "value": "3"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": true,
+ "colorValue": false,
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "datasource": null,
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 2,
+ "x": 20,
+ "y": 5
+ },
+ "height": "95",
+ "hideTimeOverride": true,
+ "id": 11,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": "",
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "2*scalar(ceph_osd_flag_norebalance)",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "refId": "A",
+ "step": 2,
+ "textEditor": true
+ }
+ ],
+ "thresholds": "1,2",
+ "timeFrom": "1m",
+ "title": "REBALANCE",
+ "type": "singlestat",
+ "valueFontSize": "40%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ },
+ {
+ "op": "=",
+ "text": "ENABLED",
+ "value": "0"
+ },
+ {
+ "op": "=",
+ "text": "ACTIVE",
+ "value": "1"
+ },
+ {
+ "op": "=",
+ "text": "DISABLED",
+ "value": "2"
+ },
+ {
+ "op": "=",
+ "text": "DISABLED",
+ "value": "3"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": true,
+ "colorValue": false,
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "datasource": null,
+ "description": "With the recovery flag enabled, disruption in the cluster will result in data being recreated to freespace within the cluster to honor the pool's protection schema. Under some circumstances, you may use the norecover flag to prevent automatic recovery.",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 2,
+ "x": 22,
+ "y": 5
+ },
+ "height": "95",
+ "hideTimeOverride": true,
+ "id": 9,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": "",
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "2*scalar(ceph_osd_flag_norecover) + scalar(ceph_pg_recovering >bool 0)",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "refId": "A",
+ "step": 2,
+ "textEditor": true
+ }
+ ],
+ "thresholds": "1,2",
+ "timeFrom": "1m",
+ "title": "RECOVERY",
+ "type": "singlestat",
+ "valueFontSize": "40%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ },
+ {
+ "op": "=",
+ "text": "ENABLED",
+ "value": "0"
+ },
+ {
+ "op": "=",
+ "text": "ACTIVE",
+ "value": "1"
+ },
+ {
+ "op": "=",
+ "text": "DISABLED",
+ "value": "2"
+ },
+ {
+ "op": "=",
+ "text": "DISABLED",
+ "value": "3"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": true,
+ "colorValue": false,
+ "colors": [
+ "#d44a3a",
+ "rgba(237, 129, 40, 0.89)",
+ "#299c46"
+ ],
+ "datasource": null,
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 2,
+ "w": 3,
+ "x": 2,
+ "y": 7
+ },
+ "id": 69,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "repeat": null,
+ "repeatDirection": "v",
+ "repeatIteration": 1526963039202,
+ "repeatPanelId": 28,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "label_replace(ceph_mon_quorum_status{ceph_daemon=~\"[[mon_servers]]\"},\"mon_host\",\"$2\",\"ceph_daemon\",\"(.*)_(.*)\")",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "",
+ "refId": "A"
+ }
+ ],
+ "thresholds": "0.5,1",
+ "title": "$mon_servers",
+ "type": "singlestat",
+ "valueFontSize": "50%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ },
+ {
+ "op": "=",
+ "text": "OK",
+ "value": "1"
+ },
+ {
+ "op": "=",
+ "text": "DOWN",
+ "value": "0"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "content": "<h2 style=\"text-align: center;\">OSD<br>Hosts<br>Down</h2>",
+ "description": "Shows which OSD hosts have all defined osd daemons in a down state",
+ "gridPos": {
+ "h": 4,
+ "w": 2,
+ "x": 8,
+ "y": 8
+ },
+ "id": 54,
+ "links": [],
+ "minSpan": 2,
+ "mode": "html",
+ "title": "",
+ "transparent": true,
+ "type": "text"
+ },
+ {
+ "columns": [],
+ "datasource": null,
+ "fontSize": "100%",
+ "gridPos": {
+ "h": 4,
+ "w": 10,
+ "x": 10,
+ "y": 8
+ },
+ "id": 58,
+ "links": [],
+ "pageSize": null,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": 2,
+ "desc": false
+ },
+ "styles": [
+ {
+ "alias": "Hostname",
+ "colorMode": "row",
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "instance",
+ "thresholds": [
+ ""
+ ],
+ "type": "string",
+ "unit": "short"
+ },
+ {
+ "alias": "OSDs Active",
+ "colorMode": "row",
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 0,
+ "pattern": "Value",
+ "thresholds": [
+ "1"
+ ],
+ "type": "hidden",
+ "unit": "none"
+ },
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "hidden",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "expr": "(count by(instance) (ceph_disk_occupation * on(ceph_daemon) group_right(instance) ceph_osd_up == 0) - count by(instance) (ceph_disk_occupation))",
+ "format": "table",
+ "hide": false,
+ "instant": true,
+ "intervalFactor": 1,
+ "legendFormat": "",
+ "refId": "A"
+ }
+ ],
+ "title": "",
+ "transform": "table",
+ "transparent": false,
+ "type": "table"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": true,
+ "colorValue": false,
+ "colors": [
+ "#d44a3a",
+ "rgba(237, 129, 40, 0.89)",
+ "#299c46"
+ ],
+ "datasource": null,
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 2,
+ "w": 3,
+ "x": 2,
+ "y": 9
+ },
+ "id": 70,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "repeat": null,
+ "repeatDirection": "v",
+ "repeatIteration": 1526963039202,
+ "repeatPanelId": 28,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "label_replace(ceph_mon_quorum_status{ceph_daemon=~\"[[mon_servers]]\"},\"mon_host\",\"$2\",\"ceph_daemon\",\"(.*)_(.*)\")",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "",
+ "refId": "A"
+ }
+ ],
+ "thresholds": "0.5,1",
+ "title": "$mon_servers",
+ "type": "singlestat",
+ "valueFontSize": "50%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ },
+ {
+ "op": "=",
+ "text": "OK",
+ "value": "1"
+ },
+ {
+ "op": "=",
+ "text": "DOWN",
+ "value": "0"
+ }
+ ],
+ "valueName": "current"
+ }
+ ],
+ "repeat": null,
+ "title": "Cluster State",
+ "type": "row"
+ },
+ {
+ "collapsed": true,
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 5
+ },
+ "id": 64,
+ "panels": [
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "datasource": null,
+ "filterNull": false,
+ "fontSize": "100%",
+ "gridPos": {
+ "h": 7,
+ "w": 5,
+ "x": 0,
+ "y": 6
+ },
+ "id": 18,
+ "links": [],
+ "minSpan": 6,
+ "pageSize": null,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": null,
+ "desc": false
+ },
+ "styles": [
+ {
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Time",
+ "type": "date"
+ },
+ {
+ "alias": "Object State",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "Metric",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ },
+ {
+ "alias": "Count",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 0,
+ "pattern": "Current",
+ "thresholds": [],
+ "type": "number",
+ "unit": "none"
+ },
+ {
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 0,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "number",
+ "unit": "none"
+ }
+ ],
+ "targets": [
+ {
+ "alias": "Objects",
+ "expr": "ceph_cluster_total_objects",
+ "format": "time_series",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "intervalFactor": 1,
+ "legendFormat": "Total Objects",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "step": 20,
+ "tags": [],
+ "textEditor": true
+ },
+ {
+ "expr": "",
+ "format": "table",
+ "intervalFactor": 1,
+ "legendFormat": "Objects misplaced",
+ "refId": "B"
+ },
+ {
+ "expr": "",
+ "format": "table",
+ "intervalFactor": 1,
+ "legendFormat": "Objects degraded",
+ "refId": "C"
+ },
+ {
+ "expr": "",
+ "format": "table",
+ "intervalFactor": 1,
+ "legendFormat": "Objects unfound",
+ "refId": "D"
+ }
+ ],
+ "title": "Object Summary",
+ "transform": "timeseries_aggregations",
+ "type": "table"
+ },
+ {
+ "columns": [
+ {
+ "text": "Avg",
+ "value": "avg"
+ }
+ ],
+ "datasource": null,
+ "filterNull": false,
+ "fontSize": "100%",
+ "gridPos": {
+ "h": 7,
+ "w": 5,
+ "x": 5,
+ "y": 6
+ },
+ "id": 20,
+ "links": [],
+ "minSpan": 6,
+ "pageSize": null,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": null,
+ "desc": false
+ },
+ "styles": [
+ {
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Time",
+ "type": "date"
+ },
+ {
+ "alias": "PG State",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "Metric",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ },
+ {
+ "alias": "Count",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 0,
+ "pattern": "Current",
+ "thresholds": [],
+ "type": "number",
+ "unit": "none"
+ },
+ {
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 0,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "number",
+ "unit": "none"
+ }
+ ],
+ "targets": [
+ {
+ "expr": "ceph_pg_total",
+ "format": "time_series",
+ "instant": true,
+ "intervalFactor": 1,
+ "legendFormat": "PGs",
+ "refId": "A",
+ "step": 20
+ },
+ {
+ "expr": "ceph_pg_active",
+ "format": "time_series",
+ "hide": false,
+ "instant": true,
+ "intervalFactor": 1,
+ "legendFormat": "PGs Active",
+ "refId": "B",
+ "step": 20
+ },
+ {
+ "expr": "ceph_pg_clean",
+ "format": "time_series",
+ "hide": false,
+ "instant": true,
+ "intervalFactor": 1,
+ "legendFormat": "PGs Active+clean",
+ "refId": "C",
+ "step": 20
+ },
+ {
+ "expr": "ceph_pg_peering",
+ "format": "time_series",
+ "hide": false,
+ "instant": true,
+ "intervalFactor": 1,
+ "legendFormat": "PGs Peering",
+ "refId": "D",
+ "step": 20
+ },
+ {
+ "expr": "ceph_pg_unknown",
+ "format": "time_series",
+ "hide": false,
+ "instant": true,
+ "intervalFactor": 1,
+ "legendFormat": "PG's Unknown",
+ "refId": "E"
+ }
+ ],
+ "title": "PG Summary",
+ "transform": "timeseries_aggregations",
+ "type": "table"
+ }
+ ],
+ "title": "RADOS Information",
+ "type": "row"
+ },
+ {
+ "collapsed": true,
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 6
+ },
+ "id": 24,
+ "panels": [
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "datasource": null,
+ "fontSize": "100%",
+ "gridPos": {
+ "h": 7,
+ "w": 3,
+ "x": 0,
+ "y": 14
+ },
+ "id": 14,
+ "links": [],
+ "minSpan": 2,
+ "pageSize": null,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": 0,
+ "desc": true
+ },
+ "styles": [
+ {
+ "alias": "Time",
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Time",
+ "type": "date"
+ },
+ {
+ "alias": "% Full",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 0,
+ "pattern": "Current",
+ "thresholds": [],
+ "type": "hidden",
+ "unit": "none"
+ },
+ {
+ "alias": "Host.OSD Id",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "Metric",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ },
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 2,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "expr": "ceph_osd_stat_bytes_used / ceph_osd_stat_bytes * 100 > $disk_full_threshold",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "{{ceph_daemon}}",
+ "refId": "A",
+ "step": 60,
+ "textEditor": true
+ }
+ ],
+ "title": "Disks Near Full",
+ "transform": "timeseries_aggregations",
+ "type": "table"
+ },
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "datasource": null,
+ "fontSize": "100%",
+ "gridPos": {
+ "h": 7,
+ "w": 6,
+ "x": 3,
+ "y": 14
+ },
+ "hideTimeOverride": true,
+ "id": 15,
+ "links": [],
+ "minSpan": 2,
+ "pageSize": 100,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": 1,
+ "desc": false
+ },
+ "styles": [
+ {
+ "alias": "OSD ID",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 0,
+ "pattern": "_id",
+ "thresholds": [],
+ "type": "number",
+ "unit": "none"
+ },
+ {
+ "alias": "Hostname",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "osd_host",
+ "thresholds": [],
+ "type": "string",
+ "unit": "short"
+ },
+ {
+ "alias": "Device",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "device",
+ "thresholds": [],
+ "type": "string",
+ "unit": "short"
+ },
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "hidden",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "expr": "label_replace(ceph_osd_up,\"_id\",\"$1\",\"ceph_daemon\",\"osd.(.*)\") * on(ceph_daemon) \n group_left(osd_host,device) label_replace(ceph_disk_occupation,\"osd_host\",\"$1\",\"instance\",\"(.+?)\\\\.(.*)\") < 0.5",
+ "format": "table",
+ "hide": false,
+ "instant": true,
+ "intervalFactor": 2,
+ "legendFormat": "",
+ "refId": "B",
+ "step": 2,
+ "textEditor": true
+ }
+ ],
+ "timeFrom": "1m",
+ "timeShift": null,
+ "title": "OSD's Down",
+ "transform": "table",
+ "type": "table"
+ },
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "datasource": null,
+ "fontSize": "100%",
+ "gridPos": {
+ "h": 7,
+ "w": 6,
+ "x": 9,
+ "y": 14
+ },
+ "hideTimeOverride": true,
+ "id": 16,
+ "links": [],
+ "minSpan": 2,
+ "pageSize": null,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": 1,
+ "desc": false
+ },
+ "styles": [
+ {
+ "alias": "OSD ID",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "_id",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ },
+ {
+ "alias": "Hostname",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "osd_host",
+ "thresholds": [],
+ "type": "string",
+ "unit": "short"
+ },
+ {
+ "alias": "Device",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "device",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ },
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "hidden",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "expr": "label_replace(ceph_osd_in,\"_id\",\"$1\",\"ceph_daemon\",\"osd.(.*)\") * on(ceph_daemon) \n group_left(osd_host,device) label_replace(ceph_disk_occupation,\"osd_host\",\"$1\",\"instance\",\"(.+?)\\\\.(.*)\") < 0.5",
+ "format": "table",
+ "hide": false,
+ "instant": true,
+ "intervalFactor": 1,
+ "refId": "B"
+ }
+ ],
+ "timeFrom": "5m",
+ "timeShift": null,
+ "title": "OSDs Out",
+ "transform": "table",
+ "type": "table"
+ },
+ {
+ "columns": [],
+ "datasource": null,
+ "description": "This table shows all OSDs with > 275 PG's",
+ "fontSize": "100%",
+ "gridPos": {
+ "h": 7,
+ "w": 9,
+ "x": 15,
+ "y": 14
+ },
+ "id": 68,
+ "links": [],
+ "pageSize": null,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": 5,
+ "desc": true
+ },
+ "styles": [
+ {
+ "alias": "OSD",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "ceph_daemon",
+ "thresholds": [],
+ "type": "string",
+ "unit": "short"
+ },
+ {
+ "alias": "Device",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "device",
+ "thresholds": [],
+ "type": "string",
+ "unit": "short"
+ },
+ {
+ "alias": "Host",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "instance",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ },
+ {
+ "alias": "# PGs",
+ "colorMode": "row",
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 0,
+ "pattern": "Value",
+ "thresholds": [
+ "200",
+ "250"
+ ],
+ "type": "number",
+ "unit": "none"
+ },
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 2,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "hidden",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "expr": "(ceph_osd_numpg > 275) * on(ceph_daemon) group_left(instance,device) ceph_disk_occupation",
+ "format": "table",
+ "instant": true,
+ "intervalFactor": 1,
+ "refId": "A"
+ }
+ ],
+ "title": "OSDs with High PG Counts",
+ "transform": "table",
+ "type": "table"
+ },
+ {
+ "content": "",
+ "gridPos": {
+ "h": 7,
+ "w": 2,
+ "x": 6,
+ "y": 21
+ },
+ "id": 17,
+ "links": [],
+ "minSpan": 2,
+ "mode": "html",
+ "title": "",
+ "transparent": true,
+ "type": "text"
+ },
+ {
+ "content": "",
+ "gridPos": {
+ "h": 7,
+ "w": 2,
+ "x": 16,
+ "y": 21
+ },
+ "id": 19,
+ "links": [],
+ "minSpan": 2,
+ "mode": "markdown",
+ "title": "",
+ "transparent": true,
+ "type": "text"
+ }
+ ],
+ "repeat": null,
+ "title": "Storage Information",
+ "type": "row"
+ }
+ ],
+ "refresh": "10s",
+ "schemaVersion": 16,
+ "style": "dark",
+ "tags": [
+ "overview"
+ ],
+ "templating": {
+ "list": [
+ {
+ "allValue": null,
+ "current": {},
+ "datasource": null,
+ "hide": 2,
+ "includeAll": false,
+ "label": null,
+ "multi": false,
+ "name": "osd_servers",
+ "options": [],
+ "query": "ceph_disk_occupation",
+ "refresh": 1,
+ "regex": "/instance=\"([^\"]*)\"/",
+ "sort": 3,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ },
+ {
+ "allValue": null,
+ "current": {
+ "selected": true,
+ "text": "85",
+ "value": "85"
+ },
+ "hide": 2,
+ "includeAll": false,
+ "label": null,
+ "multi": false,
+ "name": "disk_full_threshold",
+ "options": [
+ {
+ "selected": true,
+ "text": "85",
+ "value": "85"
+ }
+ ],
+ "query": "85",
+ "type": "custom"
+ },
+ {
+ "allValue": null,
+ "current": {},
+ "datasource": null,
+ "hide": 2,
+ "includeAll": true,
+ "label": null,
+ "multi": false,
+ "name": "mon_servers",
+ "options": [],
+ "query": "label_values(ceph_mon_quorum_status, ceph_daemon)",
+ "refresh": 1,
+ "regex": "",
+ "sort": 1,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ }
+ ]
+ },
+ "time": {
+ "from": "now-1h",
+ "to": "now"
+ },
+ "timepicker": {
+ "refresh_intervals": [
+ "5s",
+ "10s",
+ "15s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ],
+ "time_options": [
+ "5m",
+ "15m",
+ "1h",
+ "6h",
+ "12h",
+ "24h",
+ "2d",
+ "7d",
+ "30d"
+ ]
+ },
+ "timezone": "browser",
+ "title": "Ceph Health",
+ "version": 43
+}
--- /dev/null
+{
+ "__requires": [
+ {
+ "type": "grafana",
+ "id": "grafana",
+ "name": "Grafana",
+ "version": "5.0.0"
+ },
+ {
+ "type": "panel",
+ "id": "grafana-piechart-panel",
+ "name": "Pie Chart",
+ "version": "1.3.3"
+ },
+ {
+ "type": "datasource",
+ "id": "prometheus",
+ "name": "Local",
+ "version": "5.0.0"
+ },
+ {
+ "type": "panel",
+ "id": "singlestat",
+ "name": "Singlestat",
+ "version": "5.0.0"
+ },
+ {
+ "type": "panel",
+ "id": "table",
+ "name": "Table",
+ "version": "5.0.0"
+ }
+ ],
+ "annotations": {
+ "list": [
+ {
+ "builtIn": 1,
+ "datasource": "-- Grafana --",
+ "enable": true,
+ "hide": true,
+ "iconColor": "rgba(0, 211, 255, 1)",
+ "name": "Annotations & Alerts",
+ "type": "dashboard"
+ }
+ ]
+ },
+ "editable": false,
+ "gnetId": null,
+ "graphTooltip": 0,
+ "id": null,
+ "iteration": 1531263612973,
+ "links": [
+ {
+ "asDropdown": true,
+ "icon": "external link",
+ "tags": [
+ "overview"
+ ],
+ "title": "Shortcuts",
+ "type": "dashboards"
+ }
+ ],
+ "panels": [
+ {
+ "collapsed": false,
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 0
+ },
+ "id": 24,
+ "panels": [],
+ "repeat": null,
+ "title": "OSD Summary",
+ "type": "row"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": null,
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 6,
+ "w": 2,
+ "x": 0,
+ "y": 1
+ },
+ "hideTimeOverride": true,
+ "id": 1,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": "",
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "count(max by (ceph_daemon) (ceph_osd_metadata))",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "refId": "A",
+ "step": 2,
+ "textEditor": true
+ }
+ ],
+ "thresholds": "",
+ "timeFrom": "1m",
+ "title": "OSDs",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "avg"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": null,
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 6,
+ "w": 2,
+ "x": 2,
+ "y": 1
+ },
+ "hideTimeOverride": true,
+ "id": 2,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "count(ceph_osd_up > 0.5)",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "refId": "A",
+ "step": 2,
+ "textEditor": true
+ }
+ ],
+ "thresholds": "",
+ "timeFrom": "1m",
+ "title": "OSDs UP",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "avg"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": true,
+ "colorValue": false,
+ "colors": [
+ "rgba(251,251,251,0.97)",
+ "rgba(255,165,0, 1)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "datasource": null,
+ "decimals": 0,
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 6,
+ "w": 2,
+ "x": 4,
+ "y": 1
+ },
+ "hideTimeOverride": true,
+ "id": 3,
+ "interval": null,
+ "links": [
+ {
+ "dashUri": "db/ceph-health",
+ "dashboard": "Ceph Health",
+ "targetBlank": true,
+ "title": "Ceph Health",
+ "type": "dashboard"
+ }
+ ],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "count(ceph_osd_up < 0.5)",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "refId": "A",
+ "step": 2
+ }
+ ],
+ "thresholds": "1,3",
+ "timeFrom": "1m",
+ "title": "OSDs DOWN",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "0",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "datasource": null,
+ "fontSize": "100%",
+ "gridPos": {
+ "h": 6,
+ "w": 6,
+ "x": 6,
+ "y": 1
+ },
+ "hideTimeOverride": true,
+ "id": 5,
+ "links": [],
+ "maxDataPoints": "",
+ "minSpan": 4,
+ "pageSize": 50,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": 4,
+ "desc": false
+ },
+ "styles": [
+ {
+ "alias": "Hostname",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "instance",
+ "thresholds": [],
+ "type": "string",
+ "unit": "short"
+ },
+ {
+ "alias": "OSD",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "ceph_osd",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ },
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "device",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ },
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "Value",
+ "thresholds": [],
+ "type": "number",
+ "unit": "bytes"
+ },
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 2,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "hidden",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "expr": "sum by (instance, ceph_daemon) (\n ceph_disk_occupation*0 + on (ceph_daemon) group_right(instance,device,osd_id) ceph_osd_stat_bytes\n)",
+ "format": "time_series",
+ "hide": true,
+ "instant": true,
+ "intervalFactor": 1,
+ "legendFormat": "",
+ "refId": "A",
+ "step": 2,
+ "textEditor": true
+ },
+ {
+ "expr": "label_replace(ceph_disk_occupation,\"ceph_osd\",\"$1\",\"ceph_daemon\",\"osd.(.*)\") * on(ceph_osd) group_right(instance,device) \nlabel_replace(ceph_osd_stat_bytes{ceph_daemon=~\"osd.[[osd_id]]\"},\"ceph_osd\",\"$1\",\"ceph_daemon\",\"osd.(.*)\")",
+ "format": "table",
+ "hide": false,
+ "instant": true,
+ "intervalFactor": 1,
+ "refId": "B"
+ }
+ ],
+ "timeFrom": "1m",
+ "timeShift": null,
+ "title": "OSD Size",
+ "transform": "table",
+ "type": "table"
+ },
+ {
+ "aliasColors": {},
+ "breakPoint": "50%",
+ "cacheTimeout": null,
+ "combine": {
+ "label": "Others",
+ "threshold": 0
+ },
+ "datasource": null,
+ "fontSize": "80%",
+ "format": "none",
+ "gridPos": {
+ "h": 6,
+ "w": 4,
+ "x": 12,
+ "y": 1
+ },
+ "id": 4,
+ "interval": null,
+ "legend": {
+ "show": true,
+ "values": true
+ },
+ "legendType": "Under graph",
+ "links": [],
+ "maxDataPoints": 3,
+ "nullPointMode": "connected",
+ "pieType": "pie",
+ "strokeWidth": 1,
+ "targets": [
+ {
+ "expr": "count by(device_class) (ceph_osd_metadata)",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "{{device_class}}",
+ "refId": "A"
+ }
+ ],
+ "title": "OSD Types Summary",
+ "type": "grafana-piechart-panel",
+ "valueName": "current"
+ },
+ {
+ "aliasColors": {},
+ "breakPoint": "50%",
+ "cacheTimeout": null,
+ "combine": {
+ "label": "Others",
+ "threshold": "0.05"
+ },
+ "datasource": null,
+ "description": "The pie chart shows the various OSD sizes used within the cluster",
+ "fontSize": "80%",
+ "format": "none",
+ "gridPos": {
+ "h": 6,
+ "w": 4,
+ "x": 16,
+ "y": 1
+ },
+ "height": "220",
+ "hideTimeOverride": true,
+ "id": 27,
+ "interval": null,
+ "legend": {
+ "header": "",
+ "percentage": false,
+ "show": true,
+ "sideWidth": null,
+ "sortDesc": true,
+ "values": true
+ },
+ "legendType": "Under graph",
+ "links": [],
+ "maxDataPoints": "",
+ "minSpan": 6,
+ "nullPointMode": "connected",
+ "pieType": "pie",
+ "strokeWidth": "1",
+ "targets": [
+ {
+ "expr": "count(ceph_osd_stat_bytes < 1099511627776)",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "<1 TB",
+ "refId": "A",
+ "step": 2
+ },
+ {
+ "expr": "count(ceph_osd_stat_bytes >= 1099511627776 < 2199023255552)",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "<2 TB",
+ "refId": "B",
+ "step": 2
+ },
+ {
+ "expr": "count(ceph_osd_stat_bytes >= 2199023255552 < 3298534883328)",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "<3TB",
+ "refId": "C",
+ "step": 2
+ },
+ {
+ "expr": "count(ceph_osd_stat_bytes >= 3298534883328 < 4398046511104)",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "<4TB",
+ "refId": "D",
+ "step": 2
+ },
+ {
+ "expr": "count(ceph_osd_stat_bytes >= 4398046511104 < 6597069766656)",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "<6TB",
+ "refId": "E",
+ "step": 2
+ },
+ {
+ "expr": "count(ceph_osd_stat_bytes >= 6597069766656 < 8796093022208)",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "<8TB",
+ "refId": "F",
+ "step": 2
+ },
+ {
+ "expr": "count(ceph_osd_stat_bytes >= 8796093022208 < 10995116277760)",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "<10TB",
+ "refId": "G",
+ "step": 2
+ },
+ {
+ "expr": "count(ceph_osd_stat_bytes >= 10995116277760 < 13194139533312)",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "<12TB",
+ "refId": "H",
+ "step": 2
+ },
+ {
+ "expr": "count(ceph_osd_stat_bytes >= 13194139533312)",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "12TB+",
+ "refId": "I",
+ "step": 2
+ }
+ ],
+ "timeFrom": "2m",
+ "timeShift": null,
+ "title": "OSD Size Summary",
+ "type": "grafana-piechart-panel",
+ "valueName": "current"
+ },
+ {
+ "aliasColors": {
+ "Non-Encrypted": "#E5AC0E"
+ },
+ "breakPoint": "50%",
+ "cacheTimeout": null,
+ "combine": {
+ "label": "Others",
+ "threshold": 0
+ },
+ "datasource": null,
+ "fontSize": "80%",
+ "format": "none",
+ "gridPos": {
+ "h": 6,
+ "w": 4,
+ "x": 20,
+ "y": 1
+ },
+ "height": "200px",
+ "hideTimeOverride": true,
+ "id": 7,
+ "interval": null,
+ "legend": {
+ "percentage": false,
+ "show": true,
+ "values": true
+ },
+ "legendType": "Under graph",
+ "links": [],
+ "maxDataPoints": "1",
+ "minSpan": 4,
+ "nullPointMode": "connected",
+ "pieType": "pie",
+ "strokeWidth": 1,
+ "targets": [
+ {
+ "expr": "count(ceph_bluefs_wal_total_bytes)",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "bluestore",
+ "refId": "A",
+ "step": 240
+ },
+ {
+ "expr": "count(ceph_osd_metadata) - count(ceph_bluefs_wal_total_bytes)",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "filestore",
+ "refId": "B",
+ "step": 240
+ },
+ {
+ "expr": "absent(ceph_bluefs_wal_total_bytes)*count(ceph_osd_metadata)",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "filestore",
+ "refId": "C",
+ "step": 240
+ }
+ ],
+ "timeFrom": "2m",
+ "timeShift": null,
+ "title": "OSD Objectstore Types",
+ "type": "grafana-piechart-panel",
+ "valueName": "current"
+ },
+ {
+ "collapsed": true,
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 7
+ },
+ "id": 25,
+ "panels": [
+ {
+ "content": "<h1>Ceph Filestore I/O Process</h1>\n<p style=\"text-align: justify;\">\nA write request is first committed to a journal using direct-io (<i><b>apply</b></i>). Once this write is complete, the data is persisted to HDD by a second 'buffered' write operation (<i><b>commit</b></i>). The commit operation is basically a measure of time taken to perform a <i>syncfs</i> call to flush dirty pages to disk, and is therefore <b>not</b> a time associated with any specific client initiated operation.<p> The tables on the right show commit and apply latencies for all OSDs, or use the pull down above to focus on a specific OSD.\n",
+ "gridPos": {
+ "h": 5,
+ "w": 10,
+ "x": 0,
+ "y": 8
+ },
+ "height": "300",
+ "id": 8,
+ "links": [],
+ "minSpan": 6,
+ "mode": "html",
+ "title": "",
+ "transparent": true,
+ "type": "text"
+ },
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "datasource": "Local",
+ "description": "Filestore OSDs",
+ "fontSize": "100%",
+ "gridPos": {
+ "h": 8,
+ "w": 2,
+ "x": 10,
+ "y": 8
+ },
+ "height": "310",
+ "hideTimeOverride": true,
+ "id": 9,
+ "links": [],
+ "minSpan": 2,
+ "pageSize": 0,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": 0,
+ "desc": false
+ },
+ "styles": [
+ {
+ "alias": "Time",
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Time",
+ "type": "date"
+ },
+ {
+ "alias": "OSD ID",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "Metric",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ },
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 2,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "hidden",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "expr": "label_replace(\n ceph_disk_occupation{ceph_daemon=~\"osd.($filestore_osd_id)\"},\n \"osd_num\",\n \"$1\",\n \"ceph_daemon\",\n \"osd.(.*)\"\n)",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "{{osd_num}}",
+ "refId": "A",
+ "step": 2,
+ "textEditor": true
+ }
+ ],
+ "timeFrom": "2m",
+ "timeShift": null,
+ "title": "",
+ "transform": "timeseries_aggregations",
+ "type": "table"
+ },
+ {
+ "columns": [],
+ "datasource": "Local",
+ "description": "Apply latency covers the time taken to commit to the journal and complete the transaction",
+ "fontSize": "100%",
+ "gridPos": {
+ "h": 8,
+ "w": 5,
+ "x": 12,
+ "y": 8
+ },
+ "height": "310",
+ "hideTimeOverride": true,
+ "id": 12,
+ "links": [],
+ "minSpan": 4,
+ "pageSize": 0,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": 6,
+ "desc": true
+ },
+ "styles": [
+ {
+ "alias": "OSD ID",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "osd_num",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ },
+ {
+ "alias": "Apply Latency",
+ "colorMode": "row",
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "Value",
+ "thresholds": [
+ "50",
+ "150"
+ ],
+ "type": "number",
+ "unit": "ms"
+ },
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 2,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "hidden",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "expr": "label_replace(\n topk($max_devices,\n ceph_osd_apply_latency_ms{ceph_daemon=~\"osd.[[osd_id]]\"} + on (ceph_daemon) (ceph_filestore_journal_latency_count * 0)\n ),\n \"osd_num\",\n \"$1\",\n \"ceph_daemon\",\n \"osd.(.*)\"\n)",
+ "format": "table",
+ "instant": true,
+ "intervalFactor": 1,
+ "legendFormat": "{{ceph_daemon}}",
+ "refId": "A",
+ "textEditor": true
+ }
+ ],
+ "timeFrom": "2m",
+ "title": "",
+ "transform": "table",
+ "type": "table"
+ },
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "datasource": "Local",
+ "description": "Commit latency is the time taken for writes to be flushed to disk as part of async kernel activity",
+ "fontSize": "100%",
+ "gridPos": {
+ "h": 8,
+ "w": 5,
+ "x": 17,
+ "y": 8
+ },
+ "height": "310",
+ "hideTimeOverride": true,
+ "id": 13,
+ "links": [],
+ "minSpan": 4,
+ "pageSize": 0,
+ "scroll": false,
+ "showHeader": true,
+ "sort": {
+ "col": 6,
+ "desc": true
+ },
+ "styles": [
+ {
+ "alias": "OSD ID",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "osd_num",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ },
+ {
+ "alias": "Commit Latency",
+ "colorMode": "row",
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "Value",
+ "thresholds": [
+ "50",
+ "150"
+ ],
+ "type": "number",
+ "unit": "ms"
+ },
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 2,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "hidden",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "expr": "label_replace(\n topk($max_devices,\n ceph_osd_commit_latency_ms{ceph_daemon=~\"osd.[[osd_id]]\"} + on (ceph_daemon) (ceph_filestore_journal_latency_count * 0)\n ),\n \"osd_num\",\n \"$1\",\n \"ceph_daemon\",\n \"osd.(.*)\"\n )",
+ "format": "table",
+ "instant": true,
+ "intervalFactor": 1,
+ "legendFormat": "{{ceph_daemon}}",
+ "refId": "A",
+ "textEditor": true
+ }
+ ],
+ "timeFrom": "2m",
+ "title": "",
+ "transform": "table",
+ "type": "table"
+ },
+ {
+ "aliasColors": {
+ "95%ile Commit Latency": "#447EBC",
+ "Apply Latency Max": "#890F02"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "description": "Shows the latency for a given OSD, allowing you to compare a specific OSD against the $percentile%ile graph. Note that when the \"OSD Id\" pull-down shows **ALL**, the graph will be empty to avoid the chart being unreadable.",
+ "fill": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 12,
+ "x": 0,
+ "y": 16
+ },
+ "height": "300px",
+ "id": 14,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxDataPoints": "",
+ "minSpan": 12,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "alias": "Apply Latency Max",
+ "fill": 0
+ },
+ {
+ "alias": "95%ile Apply Latency",
+ "fill": 2
+ }
+ ],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "avg(\n ceph_osd_commit_latency_ms{ceph_daemon=~\"osd.([[osd_id]])\"} + on (ceph_daemon) (ceph_filestore_journal_latency_count * 0)\n)",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "commit",
+ "refId": "B",
+ "textEditor": true
+ },
+ {
+ "expr": "avg(\n ceph_osd_apply_latency_ms{ceph_daemon=~\"osd.([[osd_id]])\"} + on (ceph_daemon) (ceph_filestore_journal_latency_count * 0)\n)",
+ "format": "time_series",
+ "hide": false,
+ "interval": "",
+ "intervalFactor": 1,
+ "legendFormat": "apply",
+ "refId": "A",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Filestore Latency for OSD '$osd_id'",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "ms",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "fill": 1,
+ "gridPos": {
+ "h": 8,
+ "w": 12,
+ "x": 12,
+ "y": 16
+ },
+ "height": "300px",
+ "id": 15,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 12,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "quantile(\n $percentile/100,\n ceph_osd_commit_latency_ms + on (ceph_daemon) (ceph_filestore_journal_latency_count * 0)\n)",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "commit",
+ "refId": "B",
+ "textEditor": true
+ },
+ {
+ "expr": "quantile(\n $percentile/100,\n ceph_osd_apply_latency_ms + on (ceph_daemon) (ceph_filestore_journal_latency_count * 0)\n)",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "apply",
+ "refId": "A",
+ "textEditor": true
+ },
+ {
+ "expr": "quantile(\n $percentile/100,\n rate(ceph_filestore_journal_latency_sum[$__interval]) / \n (rate(ceph_filestore_journal_latency_count[$__interval]) != 0)\n)",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 2,
+ "legendFormat": "journal",
+ "refId": "C",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Filestore IO Summary - all OSD's @ $percentile%ile",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "ms",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "title": "Filestore OSD Latencies",
+ "type": "row"
+ },
+ {
+ "collapsed": true,
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 8
+ },
+ "id": 26,
+ "panels": [
+ {
+ "content": "<h1>Ceph Bluestore I/O Process</h1>\n<p style=\"text-align: justify;\">\nUnlike filestore, bluestore does not suffer from a double-write penalty (i.e write to journal then write to HDD). With bluestore, once a write is scheduled (<b>submit</b> and <b>throttle</b> latencies), it is done directly to the disk (<b>AIO wait</b>), and then the metadata relating to the object is changed (<b>kv_latency</b>). Writes are not considered complete until the kv store is updated. <p> The tables on the right focus on the top 10 Bluestore OSDs with the highest latencies.\n",
+ "gridPos": {
+ "h": 8,
+ "w": 6,
+ "x": 0,
+ "y": 9
+ },
+ "height": "300",
+ "id": 16,
+ "links": [],
+ "minSpan": 6,
+ "mode": "html",
+ "title": "",
+ "type": "text"
+ },
+ {
+ "columns": [],
+ "datasource": "Local",
+ "description": "Bluestore OSDs",
+ "fontSize": "100%",
+ "gridPos": {
+ "h": 8,
+ "w": 2,
+ "x": 6,
+ "y": 9
+ },
+ "height": "310",
+ "hideTimeOverride": true,
+ "id": 17,
+ "links": [],
+ "minSpan": 2,
+ "pageSize": null,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": 0,
+ "desc": true
+ },
+ "styles": [
+ {
+ "alias": "OSD ID",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 2,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "expr": "label_replace(\n ceph_disk_occupation{ceph_daemon=~\"osd.($bluestore_osd_id)\"},\n \"osd_num\",\n \"$1\",\n \"ceph_daemon\",\n \"osd.(.*)\"\n)",
+ "format": "time_series",
+ "instant": true,
+ "intervalFactor": 2,
+ "legendFormat": "{{osd_num}}",
+ "refId": "A",
+ "textEditor": true
+ }
+ ],
+ "timeFrom": "2m",
+ "timeShift": null,
+ "title": "",
+ "transform": "timeseries_aggregations",
+ "type": "table"
+ },
+ {
+ "columns": [],
+ "datasource": "Local",
+ "description": "Time spent preparing the request (transaction)",
+ "fontSize": "100%",
+ "gridPos": {
+ "h": 8,
+ "w": 4,
+ "x": 8,
+ "y": 9
+ },
+ "height": "310",
+ "hideTimeOverride": true,
+ "id": 18,
+ "links": [],
+ "minSpan": 4,
+ "pageSize": 0,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": null,
+ "desc": false
+ },
+ "styles": [
+ {
+ "alias": "OSD ID",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 0,
+ "pattern": "osd_num",
+ "thresholds": [],
+ "type": "string",
+ "unit": "s"
+ },
+ {
+ "alias": "Submit Latency",
+ "colorMode": "row",
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "Value",
+ "thresholds": [
+ ".001",
+ ".003"
+ ],
+ "type": "number",
+ "unit": "s"
+ },
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 2,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "hidden",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "expr": "label_replace(\n (\n topk($max_devices,\n irate(ceph_bluestore_submit_lat_sum{ceph_daemon=~\"osd.[[osd_id]]\"}[$__interval]) / \n (irate(ceph_bluestore_submit_lat_count{ceph_daemon=~\"osd.[[osd_id]]\"}[$__interval]) != 0)\n )\n ),\n \"osd_num\",\n \"$1\",\n \"ceph_daemon\",\n \"osd.(.*)\"\n)",
+ "format": "table",
+ "instant": true,
+ "intervalFactor": 2,
+ "refId": "A",
+ "textEditor": true
+ }
+ ],
+ "timeFrom": "2m",
+ "title": "",
+ "transform": "table",
+ "type": "table"
+ },
+ {
+ "columns": [],
+ "datasource": "Local",
+ "description": "Time requests wait due to throttling or busy conditions",
+ "fontSize": "100%",
+ "gridPos": {
+ "h": 8,
+ "w": 4,
+ "x": 12,
+ "y": 9
+ },
+ "height": "310",
+ "hideTimeOverride": true,
+ "id": 19,
+ "links": [],
+ "minSpan": 4,
+ "pageSize": 0,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": 4,
+ "desc": false
+ },
+ "styles": [
+ {
+ "alias": "OSD ID",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 0,
+ "pattern": "osd_num",
+ "thresholds": [],
+ "type": "string",
+ "unit": "short"
+ },
+ {
+ "alias": "Throttle Latency",
+ "colorMode": "row",
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "Value",
+ "thresholds": [
+ ".001",
+ ".003"
+ ],
+ "type": "number",
+ "unit": "s"
+ },
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 2,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "hidden",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "expr": "label_replace(\n (\n topk($max_devices,\n irate(ceph_bluestore_throttle_lat_sum{ceph_daemon=~\"osd.[[osd_id]]\"}[$__interval]) / \n (irate(ceph_bluestore_throttle_lat_count{ceph_daemon=~\"osd.[[osd_id]]\"}[$__interval]) != 0)\n )\n ),\n \"osd_num\",\n \"$1\",\n \"ceph_daemon\",\n \"osd.(.*)\"\n)",
+ "format": "table",
+ "instant": true,
+ "intervalFactor": 2,
+ "refId": "A",
+ "textEditor": true
+ }
+ ],
+ "timeFrom": "2m",
+ "title": "",
+ "transform": "table",
+ "type": "table"
+ },
+ {
+ "columns": [],
+ "datasource": "Local",
+ "description": "Time spent waiting for the physical I/O request to complete",
+ "fontSize": "100%",
+ "gridPos": {
+ "h": 8,
+ "w": 4,
+ "x": 16,
+ "y": 9
+ },
+ "height": "310",
+ "hideTimeOverride": true,
+ "id": 20,
+ "links": [],
+ "minSpan": 4,
+ "pageSize": 0,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": 5,
+ "desc": false
+ },
+ "styles": [
+ {
+ "alias": "OSD ID",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 0,
+ "pattern": "osd_num",
+ "thresholds": [],
+ "type": "string",
+ "unit": "short"
+ },
+ {
+ "alias": "AIO Wait Time",
+ "colorMode": "row",
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "Value",
+ "thresholds": [
+ ".020",
+ ".050"
+ ],
+ "type": "number",
+ "unit": "s"
+ },
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 2,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "hidden",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "expr": "label_replace(\n (\n topk($max_devices,\n irate(ceph_bluestore_state_aio_wait_lat_sum{ceph_daemon=~\"osd.[[osd_id]]\"}[$__interval]) / \n (irate(ceph_bluestore_state_aio_wait_lat_count{ceph_daemon=~\"osd.[[osd_id]]\"}[$__interval]) != 0)\n )\n ),\n \"osd_num\",\n \"$1\",\n \"ceph_daemon\",\n \"osd.(.*)\"\n)",
+ "format": "table",
+ "instant": true,
+ "intervalFactor": 2,
+ "refId": "A",
+ "textEditor": true
+ }
+ ],
+ "timeFrom": "2m",
+ "title": "",
+ "transform": "table",
+ "type": "table"
+ },
+ {
+ "columns": [],
+ "datasource": "Local",
+ "description": "Time spent waiting for rocksdb (metadata store) to commit meta data",
+ "fontSize": "100%",
+ "gridPos": {
+ "h": 8,
+ "w": 4,
+ "x": 20,
+ "y": 9
+ },
+ "height": "310",
+ "hideTimeOverride": true,
+ "id": 21,
+ "links": [],
+ "minSpan": 4,
+ "pageSize": 0,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": null,
+ "desc": false
+ },
+ "styles": [
+ {
+ "alias": "OSD ID",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "osd_num",
+ "thresholds": [],
+ "type": "string",
+ "unit": "short"
+ },
+ {
+ "alias": "KV Latency",
+ "colorMode": "row",
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "Value",
+ "thresholds": [
+ ".020",
+ ".050"
+ ],
+ "type": "number",
+ "unit": "s"
+ },
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 2,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "hidden",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "expr": "label_replace(\n (\n topk($max_devices,\n irate(ceph_bluestore_kv_lat_sum{ceph_daemon=~\"osd.[[osd_id]]\"}[$__interval]) / \n (irate(ceph_bluestore_kv_lat_count{ceph_daemon=~\"osd.[[osd_id]]\"}[$__interval]) != 0)\n )\n ),\n \"osd_num\",\n \"$1\",\n \"ceph_daemon\",\n \"osd.(.*)\"\n)",
+ "format": "table",
+ "instant": true,
+ "intervalFactor": 2,
+ "refId": "A",
+ "textEditor": true
+ }
+ ],
+ "timeFrom": "2m",
+ "title": "",
+ "transform": "table",
+ "type": "table"
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "fill": 1,
+ "gridPos": {
+ "h": 8,
+ "w": 12,
+ "x": 0,
+ "y": 17
+ },
+ "height": "300",
+ "id": 22,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 12,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "avg(\n irate(ceph_bluestore_submit_lat_sum{ceph_daemon=~\"osd.[[osd_id]]\"}[$__interval]) / \n (irate(ceph_bluestore_submit_lat_count{ceph_daemon=~\"osd.[[osd_id]]\"}[$__interval]) != 0)\n)",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 2,
+ "legendFormat": "Submit",
+ "refId": "A",
+ "textEditor": true
+ },
+ {
+ "expr": "avg(\n irate(ceph_bluestore_throttle_lat_sum{ceph_daemon=~\"osd.[[osd_id]]\"}[$__interval]) / \n (irate(ceph_bluestore_throttle_lat_count{ceph_daemon=~\"osd.[[osd_id]]\"}[$__interval]) != 0)\n)",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 2,
+ "legendFormat": "Throttle",
+ "refId": "B",
+ "textEditor": true
+ },
+ {
+ "expr": "avg(\n irate(ceph_bluestore_state_aio_wait_lat_sum{ceph_daemon=~\"osd.[[osd_id]]\"}[$__interval]) / \n (irate(ceph_bluestore_state_aio_wait_lat_count{ceph_daemon=~\"osd.[[osd_id]]\"}[$__interval]) != 0)\n)",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 2,
+ "legendFormat": "AIO Wait",
+ "refId": "C",
+ "textEditor": true
+ },
+ {
+ "expr": "avg(\n irate(ceph_bluestore_kv_lat_sum{ceph_daemon=~\"osd.[[osd_id]]\"}[$__interval]) / \n (irate(ceph_bluestore_kv_lat_count{ceph_daemon=~\"osd.[[osd_id]]\"}[$__interval]) != 0)\n)",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 2,
+ "legendFormat": "KV Latency",
+ "refId": "D",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Bluestore Latency for OSD '$osd_id'",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "s",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "description": "This charts shows the $percentile%ile latencies across all OSDs, which indicates overall performance, but does not represent any specific OSD",
+ "fill": 1,
+ "gridPos": {
+ "h": 8,
+ "w": 12,
+ "x": 12,
+ "y": 17
+ },
+ "height": "300px",
+ "id": 23,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 12,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "quantile(\n $percentile/100,\n irate(ceph_bluestore_submit_lat_sum[$__interval]) / \n (irate(ceph_bluestore_submit_lat_count[$__interval]) != 0)\n)",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Submit",
+ "refId": "A",
+ "textEditor": true
+ },
+ {
+ "expr": "quantile(\n $percentile/100,\n irate(ceph_bluestore_throttle_lat_sum[$__interval]) / \n (irate(ceph_bluestore_throttle_lat_count[$__interval]) != 0)\n)",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Throttle",
+ "refId": "B",
+ "textEditor": true
+ },
+ {
+ "expr": "quantile(\n $percentile/100,\n irate(ceph_bluestore_state_aio_wait_lat_sum[$__interval]) / \n (irate(ceph_bluestore_state_aio_wait_lat_count[$__interval]) != 0)\n)",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "AIO Wait",
+ "refId": "C",
+ "textEditor": true
+ },
+ {
+ "expr": "quantile(\n $percentile/100,\n irate(ceph_bluestore_kv_lat_sum[$__interval]) / \n (irate(ceph_bluestore_kv_lat_count[$__interval]) != 0)\n)",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "KV Latency",
+ "refId": "D",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "BlueStore IO Summary - all OSD's @ $percentile%ile",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "s",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "title": "Bluestore OSD Latencies",
+ "type": "row"
+ }
+ ],
+ "refresh": "15s",
+ "schemaVersion": 16,
+ "style": "dark",
+ "tags": [
+ "overview"
+ ],
+ "templating": {
+ "list": [
+ {
+ "allValue": null,
+ "current": {
+ "selected": true,
+ "text": "95",
+ "value": "95"
+ },
+ "hide": 0,
+ "includeAll": false,
+ "label": null,
+ "multi": false,
+ "name": "percentile",
+ "options": [
+ {
+ "selected": true,
+ "text": "95",
+ "value": "95"
+ },
+ {
+ "selected": false,
+ "text": "96",
+ "value": "96"
+ },
+ {
+ "selected": false,
+ "text": "97",
+ "value": "97"
+ },
+ {
+ "selected": false,
+ "text": "98",
+ "value": "98"
+ },
+ {
+ "selected": false,
+ "text": "99",
+ "value": "99"
+ }
+ ],
+ "query": "95,96,97,98,99",
+ "type": "custom"
+ },
+ {
+ "allValue": null,
+ "current": {
+ "selected": true,
+ "text": "10",
+ "value": "10"
+ },
+ "hide": 2,
+ "includeAll": false,
+ "label": null,
+ "multi": false,
+ "name": "max_devices",
+ "options": [
+ {
+ "selected": true,
+ "text": "10",
+ "value": "10"
+ }
+ ],
+ "query": "10",
+ "type": "custom"
+ },
+ {
+ "allValue": ".*",
+ "current": {},
+ "datasource": null,
+ "hide": 0,
+ "includeAll": true,
+ "label": "OSD Id",
+ "multi": false,
+ "name": "osd_id",
+ "options": [],
+ "query": "label_values(ceph_osd_metadata, ceph_daemon)",
+ "refresh": 1,
+ "regex": "/osd\\.(.*)/",
+ "sort": 3,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ },
+ {
+ "allValue": "",
+ "current": {},
+ "datasource": null,
+ "hide": 2,
+ "includeAll": true,
+ "label": null,
+ "multi": false,
+ "name": "bluestore_osd_id",
+ "options": [],
+ "query": "label_values(ceph_bluefs_bytes_written_wal, ceph_daemon)",
+ "refresh": 2,
+ "regex": "/osd\\.(.*)/",
+ "sort": 3,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ },
+ {
+ "allValue": "",
+ "current": {},
+ "datasource": null,
+ "hide": 2,
+ "includeAll": true,
+ "label": null,
+ "multi": false,
+ "name": "filestore_osd_id",
+ "options": [],
+ "query": "label_values(ceph_filestore_journal_latency_count, ceph_daemon)",
+ "refresh": 2,
+ "regex": "/osd\\.(.*)/",
+ "sort": 3,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ }
+ ]
+ },
+ "time": {
+ "from": "now-1h",
+ "to": "now"
+ },
+ "timepicker": {
+ "refresh_intervals": [
+ "5s",
+ "10s",
+ "15s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ],
+ "time_options": [
+ "5m",
+ "15m",
+ "1h",
+ "6h",
+ "12h",
+ "24h",
+ "2d",
+ "7d",
+ "30d"
+ ]
+ },
+ "timezone": "browser",
+ "title": "Ceph OSD Information",
+ "version": 31
+}
--- /dev/null
+{
+ "__requires": [
+ {
+ "type": "grafana",
+ "id": "grafana",
+ "name": "Grafana",
+ "version": "5.0.4"
+ },
+ {
+ "type": "panel",
+ "id": "graph",
+ "name": "Graph",
+ "version": "5.0.0"
+ },
+ {
+ "type": "datasource",
+ "id": "prometheus",
+ "name": "Local",
+ "version": "5.0.0"
+ },
+ {
+ "type": "panel",
+ "id": "table",
+ "name": "Table",
+ "version": "5.0.0"
+ }
+ ],
+ "annotations": {
+ "list": [
+ {
+ "builtIn": 1,
+ "datasource": "-- Grafana --",
+ "enable": true,
+ "hide": true,
+ "iconColor": "rgba(0, 211, 255, 1)",
+ "name": "Annotations & Alerts",
+ "type": "dashboard"
+ }
+ ]
+ },
+ "editable": false,
+ "gnetId": null,
+ "graphTooltip": 0,
+ "id": null,
+ "iteration": 1526263024209,
+ "links": [],
+ "panels": [
+ {
+ "collapsed": false,
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 0
+ },
+ "id": 14,
+ "panels": [],
+ "repeat": null,
+ "title": "Pool Overview",
+ "type": "row"
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 5,
+ "gridPos": {
+ "h": 7,
+ "w": 12,
+ "x": 0,
+ "y": 1
+ },
+ "id": 1,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 2,
+ "links": [],
+ "minSpan": 12,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "(label_replace((rate(ceph_pool_rd{pool_id=~\"[[pool_id]]\"}[1m]) + rate(ceph_pool_wr{pool_id=~\"[[pool_id]]\"}[1m])),\"id\", \"$1\", \"pool_id\", \"(.*)\") + on(pool_id) group_left(instance,name) ceph_pool_metadata{pool_id=~\"[[pool_id]]\"}) ",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 1,
+ "legendFormat": "{{name}}",
+ "refId": "F"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Client IOPS by Pool",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "none",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 5,
+ "gridPos": {
+ "h": 7,
+ "w": 12,
+ "x": 12,
+ "y": 1
+ },
+ "id": 2,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 2,
+ "links": [],
+ "minSpan": 12,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "(label_replace((rate(ceph_pool_rd_bytes{pool_id=~\"[[pool_id]]\"}[1m]) + rate(ceph_pool_wr_bytes{pool_id=~\"[[pool_id]]\"}[1m])),\"id\", \"$1\", \"pool_id\", \"(.*)\") + on(pool_id) group_left(instance,name) ceph_pool_metadata{pool_id=~\"[[pool_id]]\"}) ",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "{{name}}",
+ "refId": "A",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Client Throughput by Pool",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "decbytes",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "collapsed": false,
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 8
+ },
+ "id": 15,
+ "panels": [],
+ "repeat": null,
+ "title": "Top 5's",
+ "type": "row"
+ },
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "datasource": null,
+ "fontSize": "100%",
+ "gridPos": {
+ "h": 7,
+ "w": 8,
+ "x": 0,
+ "y": 9
+ },
+ "id": 3,
+ "links": [],
+ "minSpan": 12,
+ "pageSize": null,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": 6,
+ "desc": true
+ },
+ "styles": [
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "Time",
+ "thresholds": [],
+ "type": "hidden",
+ "unit": "short"
+ },
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "id",
+ "thresholds": [],
+ "type": "hidden",
+ "unit": "short"
+ },
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "instance",
+ "thresholds": [],
+ "type": "hidden",
+ "unit": "short"
+ },
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "job",
+ "thresholds": [],
+ "type": "hidden",
+ "unit": "short"
+ },
+ {
+ "alias": "Pool Name",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "name",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ },
+ {
+ "alias": "Pool ID",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "pool_id",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ },
+ {
+ "alias": "IOPS (R+W)",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 0,
+ "pattern": "Value",
+ "thresholds": [],
+ "type": "number",
+ "unit": "none"
+ }
+ ],
+ "targets": [
+ {
+ "expr": "topk(5,(label_replace((irate(ceph_pool_rd{pool_id=~\"[[pool_id]]\"}[1m]) + irate(ceph_pool_wr{pool_id=~\"[[pool_id]]\"}[1m])),\"id\", \"$1\", \"pool_id\", \"(.*)\") + on(pool_id) group_left(instance,name) ceph_pool_metadata{pool_id=~\"[[pool_id]]\"}) )",
+ "format": "table",
+ "instant": true,
+ "intervalFactor": 2,
+ "refId": "A",
+ "textEditor": true
+ }
+ ],
+ "title": "Top 5 Pools by Client IOPS",
+ "transform": "table",
+ "type": "table"
+ },
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "datasource": null,
+ "fontSize": "100%",
+ "gridPos": {
+ "h": 7,
+ "w": 8,
+ "x": 8,
+ "y": 9
+ },
+ "id": 4,
+ "links": [],
+ "minSpan": 12,
+ "pageSize": null,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": 6,
+ "desc": true
+ },
+ "styles": [
+ {
+ "alias": "Time",
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Time",
+ "type": "hidden"
+ },
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "id",
+ "thresholds": [],
+ "type": "hidden",
+ "unit": "short"
+ },
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "instance",
+ "thresholds": [],
+ "type": "hidden",
+ "unit": "short"
+ },
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "job",
+ "thresholds": [],
+ "type": "hidden",
+ "unit": "short"
+ },
+ {
+ "alias": "Pool Name",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "name",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ },
+ {
+ "alias": "Pool ID",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "pool_id",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ },
+ {
+ "alias": "Throughput",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "Value",
+ "thresholds": [],
+ "type": "number",
+ "unit": "decbytes"
+ }
+ ],
+ "targets": [
+ {
+ "expr": "(label_replace((irate(ceph_pool_rd_bytes{pool_id=~\"[[pool_id]]\"}[1m]) + irate(ceph_pool_wr_bytes{pool_id=~\"[[pool_id]]\"}[1m])),\"id\", \"$1\", \"pool_id\", \"(.*)\") + on(pool_id) group_left(instance,name) ceph_pool_metadata{pool_id=~\"[[pool_id]]\"}) ",
+ "format": "table",
+ "instant": true,
+ "intervalFactor": 2,
+ "refId": "A",
+ "textEditor": true
+ }
+ ],
+ "title": "Top 5 Pools by Throughput",
+ "transform": "table",
+ "type": "table"
+ },
+ {
+ "columns": [],
+ "datasource": null,
+ "fontSize": "100%",
+ "gridPos": {
+ "h": 7,
+ "w": 8,
+ "x": 16,
+ "y": 9
+ },
+ "id": 5,
+ "links": [],
+ "minSpan": 8,
+ "pageSize": null,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": 5,
+ "desc": true
+ },
+ "styles": [
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "Time",
+ "thresholds": [],
+ "type": "hidden",
+ "unit": "short"
+ },
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "instance",
+ "thresholds": [],
+ "type": "hidden",
+ "unit": "short"
+ },
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "job",
+ "thresholds": [],
+ "type": "hidden",
+ "unit": "short"
+ },
+ {
+ "alias": "Pool Name",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "name",
+ "thresholds": [],
+ "type": "string",
+ "unit": "short"
+ },
+ {
+ "alias": "Pool ID",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "pool_id",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ },
+ {
+ "alias": "Capacity Used",
+ "colorMode": "value",
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "Value",
+ "thresholds": [
+ "70",
+ "85"
+ ],
+ "type": "number",
+ "unit": "percentunit"
+ }
+ ],
+ "targets": [
+ {
+ "expr": "topk(5,((ceph_pool_bytes_used / (ceph_pool_bytes_used + ceph_pool_max_avail)) * on(pool_id) group_left(name) ceph_pool_metadata))",
+ "format": "table",
+ "hide": false,
+ "instant": true,
+ "intervalFactor": 1,
+ "legendFormat": "",
+ "refId": "D"
+ }
+ ],
+ "title": "Top 5 Pools By Capacity Used",
+ "transform": "table",
+ "type": "table"
+ },
+ {
+ "collapsed": true,
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 16
+ },
+ "id": 16,
+ "panels": [
+ {
+ "aliasColors": {
+ "read_op_per_sec": "#3F6833",
+ "write_op_per_sec": "#E5AC0E"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "gridPos": {
+ "h": 7,
+ "w": 12,
+ "x": 0,
+ "y": 17
+ },
+ "id": 6,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 12,
+ "nullPointMode": "null as zero",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "(label_replace(irate(ceph_pool_rd[1m]),\"id\",\"$1\",\"pool_id\",\"(.*)\") * on(pool_id) group_left(instance,name) ceph_pool_metadata{name=~\"[[pool_name]]\"})",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "reads",
+ "refId": "B"
+ },
+ {
+ "expr": "(label_replace(irate(ceph_pool_wr[1m]),\"id\",\"$1\",\"pool_id\",\"(.*)\") * on(pool_id) group_left(instance,name) ceph_pool_metadata{name=~\"[[pool_name]]\"})",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "writes",
+ "refId": "C"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Pool '$pool_name' Client IOPS",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {
+ "read_op_per_sec": "#3F6833",
+ "write_op_per_sec": "#E5AC0E"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "gridPos": {
+ "h": 7,
+ "w": 12,
+ "x": 12,
+ "y": 17
+ },
+ "id": 7,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 12,
+ "nullPointMode": "null as zero",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "(label_replace(irate(ceph_pool_rd_bytes[1m]),\"id\",\"$1\",\"pool_id\",\"(.*)\") + on(pool_id) group_left(instance,name) ceph_pool_metadata{name=~\"[[pool_name]]\"})",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "reads",
+ "refId": "A"
+ },
+ {
+ "expr": "(label_replace(irate(ceph_pool_wr_bytes[1m]),\"id\",\"$1\",\"pool_id\",\"(.*)\") + on(pool_id) group_left(instance,name) ceph_pool_metadata{name=~\"[[pool_name]]\"})",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "writes",
+ "refId": "C"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Pool '$pool_name' Client Throughput",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "decbytes",
+ "label": "",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ }
+ ],
+ "repeat": "pool_name",
+ "title": "Pool '$pool_name' Performance Details",
+ "type": "row"
+ }
+ ],
+ "refresh": "15s",
+ "schemaVersion": 16,
+ "style": "dark",
+ "tags": [],
+ "templating": {
+ "list": [
+ {
+ "allValue": null,
+ "current": {},
+ "datasource": null,
+ "hide": 2,
+ "includeAll": true,
+ "label": null,
+ "multi": false,
+ "name": "pool_id",
+ "options": [],
+ "query": "label_values(ceph_pool_metadata,pool_id)",
+ "refresh": 1,
+ "regex": "",
+ "sort": 1,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ },
+ {
+ "allValue": null,
+ "current": {},
+ "datasource": null,
+ "hide": 2,
+ "includeAll": true,
+ "label": "Pool Name",
+ "multi": false,
+ "name": "pool_name",
+ "options": [],
+ "query": "label_values(ceph_pool_metadata,name)",
+ "refresh": 1,
+ "regex": "",
+ "sort": 1,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ }
+ ]
+ },
+ "time": {
+ "from": "now-1h",
+ "to": "now"
+ },
+ "timepicker": {
+ "refresh_intervals": [
+ "5s",
+ "10s",
+ "15s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ],
+ "time_options": [
+ "5m",
+ "15m",
+ "1h",
+ "6h",
+ "12h",
+ "24h",
+ "2d",
+ "7d",
+ "30d"
+ ]
+ },
+ "timezone": "browser",
+ "title": "Ceph Pools",
+ "version": 16
+}
--- /dev/null
+{
+ "__requires": [
+ {
+ "type": "grafana",
+ "id": "grafana",
+ "name": "Grafana",
+ "version": "5.0.0"
+ },
+ {
+ "type": "panel",
+ "id": "graph",
+ "name": "Graph",
+ "version": "5.0.0"
+ },
+ {
+ "type": "datasource",
+ "id": "prometheus",
+ "name": "Local",
+ "version": "5.0.0"
+ },
+ {
+ "type": "panel",
+ "id": "singlestat",
+ "name": "Singlestat",
+ "version": "5.0.0"
+ }
+ ],
+ "annotations": {
+ "list": [
+ {
+ "builtIn": 1,
+ "datasource": "-- Grafana --",
+ "enable": true,
+ "hide": true,
+ "iconColor": "rgba(0, 211, 255, 1)",
+ "name": "Annotations & Alerts",
+ "type": "dashboard"
+ }
+ ]
+ },
+ "editable": false,
+ "gnetId": null,
+ "graphTooltip": 0,
+ "id": null,
+ "iteration": 1530165442642,
+ "links": [],
+ "panels": [
+ {
+ "collapsed": false,
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 0
+ },
+ "id": 2,
+ "panels": [],
+ "title": "RGW Overview - All Gateways",
+ "type": "row"
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "gridPos": {
+ "h": 7,
+ "w": 8,
+ "x": 0,
+ "y": 1
+ },
+ "id": 29,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "avg(rate(ceph_rgw_get_initial_lat_sum[30s]) / rate(ceph_rgw_get_initial_lat_count[30s]))",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "GET AVG",
+ "refId": "A"
+ },
+ {
+ "expr": "avg(rate(ceph_rgw_put_initial_lat_sum[30s]) / rate(ceph_rgw_put_initial_lat_count[30s]))",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "PUT AVG",
+ "refId": "B"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Average GET/PUT Latencies",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "s",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "gridPos": {
+ "h": 7,
+ "w": 7,
+ "x": 8,
+ "y": 1
+ },
+ "id": 4,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "sum by(rgw_host) (label_replace(rate(ceph_rgw_req[30s]), \"rgw_host\", \"$1\", \"ceph_daemon\", \"rgw.(.*)\"))",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "{{rgw_host}}",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Total Requests/sec by RGW Instance",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "decimals": 0,
+ "format": "none",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "description": "Latencies are shown stacked, without a yaxis to provide a visual indication of GET latency imbalance across RGW hosts",
+ "fill": 1,
+ "gridPos": {
+ "h": 7,
+ "w": 6,
+ "x": 15,
+ "y": 1
+ },
+ "id": 31,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "label_replace(rate(ceph_rgw_get_initial_lat_sum[30s]),\"rgw_host\",\"$1\",\"ceph_daemon\",\"rgw.(.*)\") / \nlabel_replace(rate(ceph_rgw_get_initial_lat_count[30s]),\"rgw_host\",\"$1\",\"ceph_daemon\",\"rgw.(.*)\")",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "{{rgw_host}}",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "GET Latencies by RGW Instance",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "decimals": null,
+ "format": "s",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": false
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "#299c46",
+ "rgba(237, 129, 40, 0.89)",
+ "#d44a3a"
+ ],
+ "datasource": null,
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 7,
+ "w": 3,
+ "x": 21,
+ "y": 1
+ },
+ "id": 8,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "sum(ceph_rgw_qlen)",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "refId": "A"
+ }
+ ],
+ "thresholds": "",
+ "title": "Request Queue Length",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "avg"
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "description": "Total bytes transferred in/out of all radosgw instances within the cluster",
+ "fill": 1,
+ "gridPos": {
+ "h": 6,
+ "w": 8,
+ "x": 0,
+ "y": 8
+ },
+ "id": 6,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "sum(rate(ceph_rgw_get_b[30s]))",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "GETs",
+ "refId": "A"
+ },
+ {
+ "expr": "sum(rate(ceph_rgw_put_b[30s]))",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "PUTs",
+ "refId": "B"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Bandwidth Consumed by Type",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "description": "Total bytes transferred in/out through get/put operations, by radosgw instance",
+ "fill": 1,
+ "gridPos": {
+ "h": 6,
+ "w": 7,
+ "x": 8,
+ "y": 8
+ },
+ "id": 9,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "sum by(rgw_host) (\n (label_replace(rate(ceph_rgw_get_b[30s]), \"rgw_host\",\"$1\",\"ceph_daemon\",\"rgw.(.*)\")) + \n (label_replace(rate(ceph_rgw_put_b[30s]), \"rgw_host\",\"$1\",\"ceph_daemon\",\"rgw.(.*)\"))\n)",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "{{rgw_host}}",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Bandwidth by RGW Instance",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "description": "Latencies are shown stacked, without a yaxis to provide a visual indication of PUT latency imbalance across RGW hosts",
+ "fill": 1,
+ "gridPos": {
+ "h": 6,
+ "w": 6,
+ "x": 15,
+ "y": 8
+ },
+ "id": 32,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "label_replace(rate(ceph_rgw_put_initial_lat_sum[30s]),\"rgw_host\",\"$1\",\"ceph_daemon\",\"rgw.(.*)\") / \nlabel_replace(rate(ceph_rgw_put_initial_lat_count[30s]),\"rgw_host\",\"$1\",\"ceph_daemon\",\"rgw.(.*)\")",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "{{rgw_host}}",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "PUT Latencies by RGW Instance",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "decimals": null,
+ "format": "s",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": false
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "description": "Failed HTTP Requests by RGW instance",
+ "fill": 1,
+ "gridPos": {
+ "h": 6,
+ "w": 3,
+ "x": 21,
+ "y": 8
+ },
+ "id": 41,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "label_replace(ceph_rgw_failed_req, \"rgw_host\",\"$1\",\"ceph_daemon\",\"rgw.(.*)\")",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "{{rgw_host}}",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Failed Requests",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": false,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "none",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": false
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "collapsed": true,
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 14
+ },
+ "id": 12,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "gridPos": {
+ "h": 8,
+ "w": 6,
+ "x": 0,
+ "y": 15
+ },
+ "id": 34,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "scopedVars": {
+ "rgw_servers": {
+ "selected": false,
+ "text": "rgw.rhs-srv-01",
+ "value": "rgw.rhs-srv-01"
+ }
+ },
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "rate(ceph_rgw_get_initial_lat_sum{ceph_daemon=~\"($rgw_servers)\"}[30s]) / rate(ceph_rgw_get_initial_lat_count{ceph_daemon=~\"($rgw_servers)\"}[30s])",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "GET",
+ "refId": "A"
+ },
+ {
+ "expr": "rate(ceph_rgw_put_initial_lat_sum{ceph_daemon=~\"($rgw_servers)\"}[30s]) / rate(ceph_rgw_put_initial_lat_count{ceph_daemon=~\"($rgw_servers)\"}[30s])",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "PUT",
+ "refId": "B"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "$rgw_servers GET/PUT Latencies",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "s",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "gridPos": {
+ "h": 8,
+ "w": 7,
+ "x": 6,
+ "y": 15
+ },
+ "id": 18,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "scopedVars": {
+ "rgw_servers": {
+ "selected": false,
+ "text": "rgw.rhs-srv-01",
+ "value": "rgw.rhs-srv-01"
+ }
+ },
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "rate(ceph_rgw_get_b{ceph_daemon=~\"[[rgw_servers]]\"}[30s])",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "GETs",
+ "refId": "B"
+ },
+ {
+ "expr": "rate(ceph_rgw_put_b{ceph_daemon=~\"[[rgw_servers]]\"}[30s])",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "PUTs",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Bandwidth by HTTP Operation",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "decimals": 0,
+ "format": "bytes",
+ "label": "",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "aliasColors": {
+ "GETs": "#7eb26d",
+ "Other": "#447ebc",
+ "PUTs": "#eab839",
+ "Requests": "#3f2b5b",
+ "Requests Failed": "#bf1b00"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "gridPos": {
+ "h": 8,
+ "w": 7,
+ "x": 13,
+ "y": 15
+ },
+ "id": 14,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "scopedVars": {
+ "rgw_servers": {
+ "selected": false,
+ "text": "rgw.rhs-srv-01",
+ "value": "rgw.rhs-srv-01"
+ }
+ },
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "rate(ceph_rgw_failed_req{ceph_daemon=~\"[[rgw_servers]]\"}[30s])",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "Requests Failed",
+ "refId": "B"
+ },
+ {
+ "expr": "rate(ceph_rgw_get{ceph_daemon=~\"[[rgw_servers]]\"}[30s])",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "GETs",
+ "refId": "C"
+ },
+ {
+ "expr": "rate(ceph_rgw_put{ceph_daemon=~\"[[rgw_servers]]\"}[30s])",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "PUTs",
+ "refId": "D"
+ },
+ {
+ "expr": "rate(ceph_rgw_req{ceph_daemon=~\"[[rgw_servers]]\"}[30s]) -\n (rate(ceph_rgw_get{ceph_daemon=~\"[[rgw_servers]]\"}[30s]) +\n rate(ceph_rgw_put{ceph_daemon=~\"[[rgw_servers]]\"}[30s]))",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "Other",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "HTTP Request Breakdown",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {
+ "Failures": "#bf1b00",
+ "GETs": "#7eb26d",
+ "Other (HEAD,POST,DELETE)": "#447ebc",
+ "PUTs": "#eab839"
+ },
+ "breakPoint": "50%",
+ "cacheTimeout": null,
+ "combine": {
+ "label": "Others",
+ "threshold": 0
+ },
+ "datasource": null,
+ "fontSize": "80%",
+ "format": "none",
+ "gridPos": {
+ "h": 8,
+ "w": 4,
+ "x": 20,
+ "y": 15
+ },
+ "id": 23,
+ "interval": null,
+ "legend": {
+ "show": true,
+ "values": true
+ },
+ "legendType": "Under graph",
+ "links": [],
+ "maxDataPoints": 3,
+ "nullPointMode": "connected",
+ "pieType": "pie",
+ "scopedVars": {
+ "rgw_servers": {
+ "selected": false,
+ "text": "rgw.rhs-srv-01",
+ "value": "rgw.rhs-srv-01"
+ }
+ },
+ "strokeWidth": 1,
+ "targets": [
+ {
+ "expr": "rate(ceph_rgw_failed_req{ceph_daemon=~\"[[rgw_servers]]\"}[30s])",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "Failures",
+ "refId": "A"
+ },
+ {
+ "expr": "rate(ceph_rgw_get{ceph_daemon=~\"[[rgw_servers]]\"}[30s])",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "GETs",
+ "refId": "B"
+ },
+ {
+ "expr": "rate(ceph_rgw_put{ceph_daemon=~\"[[rgw_servers]]\"}[30s])",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "PUTs",
+ "refId": "C"
+ },
+ {
+ "expr": "rate(ceph_rgw_req{ceph_daemon=~\"[[rgw_servers]]\"}[30s]) -\n (rate(ceph_rgw_get{ceph_daemon=~\"[[rgw_servers]]\"}[30s]) +\n rate(ceph_rgw_put{ceph_daemon=~\"[[rgw_servers]]\"}[30s]))",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "Other (DELETE,LIST)",
+ "refId": "D"
+ }
+ ],
+ "title": "Workload Breakdown",
+ "type": "grafana-piechart-panel",
+ "valueName": "current"
+ }
+ ],
+ "repeat": "rgw_servers",
+ "title": "RGW Host Detail : $rgw_servers",
+ "type": "row"
+ }
+ ],
+ "refresh": "15s",
+ "schemaVersion": 16,
+ "style": "dark",
+ "tags": [
+ "overview"
+ ],
+ "templating": {
+ "list": [
+ {
+ "allValue": null,
+ "current": {},
+ "datasource": null,
+ "hide": 2,
+ "includeAll": true,
+ "label": null,
+ "multi": false,
+ "name": "rgw_servers",
+ "options": [],
+ "query": "label_values(ceph_rgw_req, ceph_daemon)",
+ "refresh": 1,
+ "regex": "",
+ "sort": 1,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ }
+ ]
+ },
+ "time": {
+ "from": "now-1h",
+ "to": "now"
+ },
+ "timepicker": {
+ "refresh_intervals": [
+ "5s",
+ "10s",
+ "15s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ],
+ "time_options": [
+ "5m",
+ "15m",
+ "1h",
+ "6h",
+ "12h",
+ "24h",
+ "2d",
+ "7d",
+ "30d"
+ ]
+ },
+ "timezone": "",
+ "title": "Ceph RGW Workload",
+ "version": 26
+}
--- /dev/null
+{
+ "__inputs": [
+ {
+ "name": "DS_LOCAL_PROMETHEUS",
+ "label": "local_prometheus",
+ "description": "",
+ "type": "datasource",
+ "pluginId": "prometheus",
+ "pluginName": "Prometheus"
+ }
+ ],
+ "__requires": [
+ {
+ "type": "grafana",
+ "id": "grafana",
+ "name": "Grafana",
+ "version": "5.0.4"
+ },
+ {
+ "type": "panel",
+ "id": "graph",
+ "name": "Graph",
+ "version": "5.0.0"
+ },
+ {
+ "type": "datasource",
+ "id": "prometheus",
+ "name": "Prometheus",
+ "version": "5.0.0"
+ }
+ ],
+ "annotations": {
+ "list": [
+ {
+ "builtIn": 1,
+ "datasource": "-- Grafana --",
+ "enable": true,
+ "hide": true,
+ "iconColor": "rgba(0, 211, 255, 1)",
+ "name": "Annotations & Alerts",
+ "type": "dashboard"
+ }
+ ]
+ },
+ "editable": false,
+ "gnetId": null,
+ "graphTooltip": 0,
+ "id": null,
+ "links": [],
+ "panels": [
+ {
+ "collapsed": false,
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 0
+ },
+ "id": 9,
+ "panels": [],
+ "repeat": null,
+ "title": "CPU & RAM",
+ "type": "row"
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "gridPos": {
+ "h": 7,
+ "w": 8,
+ "x": 0,
+ "y": 1
+ },
+ "id": 1,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 8,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "100 - (avg by (instance) (irate(node_cpu{job=\"cephmetrics\",mode=\"idle\"}[5m])) * 100)",
+ "format": "time_series",
+ "instant": false,
+ "intervalFactor": 1,
+ "legendFormat": "{{Busy %}}",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Cephmetrics Host CPU Busy %",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "decimals": null,
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": "100",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "gridPos": {
+ "h": 7,
+ "w": 8,
+ "x": 8,
+ "y": 1
+ },
+ "id": 2,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 8,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "(avg by(mode) (irate(node_cpu{job=\"cephmetrics\",mode!=\"idle\"}[30s]))*100)",
+ "format": "time_series",
+ "instant": false,
+ "interval": "",
+ "intervalFactor": 1,
+ "legendFormat": "{{mode}}",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Cephmetrics Host CPU Usage Breakdown",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "decimals": null,
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": "100",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "aliasColors": {
+ "Installed": "#890f02"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "gridPos": {
+ "h": 7,
+ "w": 8,
+ "x": 16,
+ "y": 1
+ },
+ "id": 7,
+ "legend": {
+ "avg": false,
+ "current": true,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 8,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "alias": "Installed",
+ "fill": 0,
+ "linewidth": 2
+ }
+ ],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "node_memory_MemTotal{job=\"cephmetrics\"} - node_memory_MemAvailable{job=\"cephmetrics\"}",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 1,
+ "legendFormat": "Used",
+ "refId": "C"
+ },
+ {
+ "expr": "node_memory_MemTotal{job=\"cephmetrics\"} ",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "Installed",
+ "refId": "B"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": "7d",
+ "timeShift": null,
+ "title": "RAM Usage",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "collapsed": false,
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 8
+ },
+ "id": 10,
+ "panels": [],
+ "repeat": null,
+ "title": "Disk",
+ "type": "row"
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "gridPos": {
+ "h": 7,
+ "w": 8,
+ "x": 0,
+ "y": 9
+ },
+ "id": 3,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 8,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "irate(node_disk_io_time_ms{job='cephmetrics',device=~\"[h,s,v]d[a-z]\"}[1m]) / 10",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "{{device}}",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Disk Utilization",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "percent",
+ "label": "%UTIL",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "gridPos": {
+ "h": 7,
+ "w": 8,
+ "x": 8,
+ "y": 9
+ },
+ "id": 4,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 8,
+ "nullPointMode": "null as zero",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "irate(node_disk_reads_completed{job=\"cephmetrics\",device=~\"[h,s,v]d[a-z]\"}[30s]) + irate(node_disk_writes_completed{job=~\"cephmetrics\",device=~\"[h,s,v]d[a-z]\"}[30s])",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "{{device}}",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Disk IOPS",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "none",
+ "label": "IOPS",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "gridPos": {
+ "h": 7,
+ "w": 8,
+ "x": 16,
+ "y": 9
+ },
+ "id": 5,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 8,
+ "nullPointMode": "null as zero",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "irate(node_disk_bytes_read{job='cephmetrics',device=~\"[h,s,v]d[a-z]\"}[1m]) + irate(node_disk_bytes_written{job='cephmetrics',device=~\"[h,s,v]d[a-z]\"}[1m]) ",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "{{device}}",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Disk Throughput",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "label": "Throughput",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "gridPos": {
+ "h": 7,
+ "w": 8,
+ "x": 0,
+ "y": 16
+ },
+ "id": 6,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 8,
+ "nullPointMode": "null as zero",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "(irate(node_disk_write_time_ms{job='cephmetrics',device=~\"[h,s,v]d[a-z]\"}[1m]) + irate(node_disk_read_time_ms{job='cephmetrics',device=~\"[h,s,v]d[a-z]\"}[1m])) / \n(irate(node_disk_reads_completed{job='cephmetrics',device=~\"[h,s,v]d[a-z]\"}[1m]) + irate(node_disk_writes_completed{job='cephmetrics',device=~\"[h,s,v]d[a-z]\"}[1m]))",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "{{device}}",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Disk Latency",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "ms",
+ "label": "",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {
+ "Size": "#890f02"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "gridPos": {
+ "h": 7,
+ "w": 16,
+ "x": 8,
+ "y": 16
+ },
+ "id": 13,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "alias": "Size",
+ "fill": 0,
+ "linewidth": 2
+ }
+ ],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "node_filesystem_size{mountpoint='/var/lib/cephmetrics/data',fstype='xfs'} - node_filesystem_free{mountpoint='/var/lib/cephmetrics/data',fstype='xfs'}",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "Used",
+ "refId": "A"
+ },
+ {
+ "expr": "node_filesystem_size{mountpoint='/var/lib/cephmetrics/data',fstype='xfs'}",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "Size",
+ "refId": "B"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Filesystem Usage - Prometheus Growth",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "collapsed": false,
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 23
+ },
+ "id": 11,
+ "panels": [],
+ "repeat": null,
+ "title": "Network",
+ "type": "row"
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "gridPos": {
+ "h": 7,
+ "w": 24,
+ "x": 0,
+ "y": 24
+ },
+ "id": 8,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "sum(\n irate(node_network_receive_bytes{job='cephmetrics'}[1m]) \n ) by(instance)",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "Network RX",
+ "refId": "A"
+ },
+ {
+ "expr": "sum(\n irate(node_network_transmit_bytes{job='cephmetrics'}[1m]) \n ) by(instance)",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "Network TX",
+ "refId": "B"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Network Load",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "Bps",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {
+ "Size": "#890f02"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "description": "Shows data growth on '/' which includes the prometheus data. Prometheus installed 04/14, migrated to separate logical volume 04/22",
+ "fill": 1,
+ "gridPos": {
+ "h": 7,
+ "w": 16,
+ "x": 0,
+ "y": 31
+ },
+ "id": 14,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "alias": "Size",
+ "fill": 0,
+ "linewidth": 2
+ }
+ ],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "node_filesystem_size{mountpoint='/',fstype='xfs'} - node_filesystem_free{mountpoint='/',fstype='xfs'}",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "Used",
+ "refId": "A"
+ },
+ {
+ "expr": "node_filesystem_size{mountpoint='/',fstype='xfs'}",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "Size",
+ "refId": "B"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": "14d",
+ "timeShift": null,
+ "title": "Filesystem Usage - '/'",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "refresh": "15s",
+ "schemaVersion": 16,
+ "style": "dark",
+ "tags": [],
+ "templating": {
+ "list": []
+ },
+ "time": {
+ "from": "now-1h",
+ "to": "now"
+ },
+ "timepicker": {
+ "refresh_intervals": [
+ "5s",
+ "10s",
+ "15s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ],
+ "time_options": [
+ "5m",
+ "15m",
+ "1h",
+ "6h",
+ "12h",
+ "24h",
+ "2d",
+ "7d",
+ "30d"
+ ]
+ },
+ "timezone": "",
+ "title": "Cephmetrics Host Metrics",
+ "version": 13
+}
--- /dev/null
+{
+ "annotations": {
+ "list": [
+ {
+ "builtIn": 1,
+ "datasource": "-- Grafana --",
+ "enable": true,
+ "hide": true,
+ "iconColor": "rgba(0, 211, 255, 1)",
+ "name": "Annotations & Alerts",
+ "type": "dashboard"
+ }
+ ]
+ },
+ "editable": false,
+ "gnetId": null,
+ "graphTooltip": 0,
+ "hideControls": true,
+ "links": [],
+ "refresh": "15s",
+ "rows": [
+ {
+ "collapse": false,
+ "height": "250px",
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "height": "400",
+ "id": 1,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 12,
+ "nullPointMode": "connected",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "repeat": null,
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 12,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "max(label_replace((irate(node_disk_io_time_ms{device=~\"[h,s,v]d[a-z]\"}[30s]) / 10),\"host\",\"$1\",\"instance\",\"([^.]*).*\")) by(host)",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 1,
+ "legendFormat": "{{host}}",
+ "refId": "A",
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "OSD Hosts Disk Utilization Peak",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "",
+ "logBase": 1,
+ "max": "100",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": false,
+ "title": "Dashboard Row",
+ "titleSize": "h6"
+ },
+ {
+ "collapse": false,
+ "height": 250,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "id": 2,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 2,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "repeat": "osd_servers",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 2,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "quantile([[percentile]]/100,(irate(node_disk_io_time_ms{device=~\"[h,s,v]d[a-z]\",instance=~\"[[osd_servers]].*\"}[1m]) / 10))",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 1,
+ "legendFormat": "all disks busy @ $percentile%ile",
+ "refId": "B"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "$osd_servers Disk Utilization @ $percentile%ile",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": "100",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "id": 3,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 2,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "repeat": null,
+ "repeatIteration": 1519090074308,
+ "repeatPanelId": 4,
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 2,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "quantile([[percentile]]/100,(irate(node_disk_io_time_ms{device=~\"[h,s,v]d[a-z]\",instance=~\"[[osd_servers]].*\"}[1m]) / 10))",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 1,
+ "legendFormat": "all disks busy @ $percentile%ile",
+ "refId": "B"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "$osd_servers Disk Utilization @ $percentile%ile",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": "100",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "id": 4,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 2,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "repeat": null,
+ "repeatIteration": 1519090074308,
+ "repeatPanelId": 4,
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 2,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "quantile([[percentile]]/100,(irate(node_disk_io_time_ms{device=~\"[h,s,v]d[a-z]\",instance=~\"[[osd_servers]].*\"}[1m]) / 10))",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 1,
+ "legendFormat": "all disks busy @ $percentile%ile",
+ "refId": "B"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "$osd_servers Disk Utilization @ $percentile%ile",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": "100",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "id": 5,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 2,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "repeat": null,
+ "repeatIteration": 1519090074308,
+ "repeatPanelId": 4,
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 2,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "quantile([[percentile]]/100,(irate(node_disk_io_time_ms{device=~\"[h,s,v]d[a-z]\",instance=~\"[[osd_servers]].*\"}[1m]) / 10))",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 1,
+ "legendFormat": "all disks busy @ $percentile%ile",
+ "refId": "B"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "$osd_servers Disk Utilization @ $percentile%ile",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": "100",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "id": 6,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 2,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "repeat": null,
+ "repeatIteration": 1519090074308,
+ "repeatPanelId": 4,
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 2,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "quantile([[percentile]]/100,(irate(node_disk_io_time_ms{device=~\"[h,s,v]d[a-z]\",instance=~\"[[osd_servers]].*\"}[1m]) / 10))",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 1,
+ "legendFormat": "all disks busy @ $percentile%ile",
+ "refId": "B"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "$osd_servers Disk Utilization @ $percentile%ile",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": "100",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "id": 7,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 2,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "repeat": null,
+ "repeatIteration": 1519090074308,
+ "repeatPanelId": 4,
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 2,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "quantile([[percentile]]/100,(irate(node_disk_io_time_ms{device=~\"[h,s,v]d[a-z]\",instance=~\"[[osd_servers]].*\"}[1m]) / 10))",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 1,
+ "legendFormat": "all disks busy @ $percentile%ile",
+ "refId": "B"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "$osd_servers Disk Utilization @ $percentile%ile",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": "100",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "id": 8,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 2,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "repeat": null,
+ "repeatIteration": 1519090074308,
+ "repeatPanelId": 4,
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 2,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "quantile([[percentile]]/100,(irate(node_disk_io_time_ms{device=~\"[h,s,v]d[a-z]\",instance=~\"[[osd_servers]].*\"}[1m]) / 10))",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 1,
+ "legendFormat": "all disks busy @ $percentile%ile",
+ "refId": "B"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "$osd_servers Disk Utilization @ $percentile%ile",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": "100",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "id": 9,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 2,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "repeat": null,
+ "repeatIteration": 1519090074308,
+ "repeatPanelId": 4,
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 2,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "quantile([[percentile]]/100,(irate(node_disk_io_time_ms{device=~\"[h,s,v]d[a-z]\",instance=~\"[[osd_servers]].*\"}[1m]) / 10))",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 1,
+ "legendFormat": "all disks busy @ $percentile%ile",
+ "refId": "B"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "$osd_servers Disk Utilization @ $percentile%ile",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": "100",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "id": 10,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 2,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "repeat": null,
+ "repeatIteration": 1519090074308,
+ "repeatPanelId": 4,
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 2,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "quantile([[percentile]]/100,(irate(node_disk_io_time_ms{device=~\"[h,s,v]d[a-z]\",instance=~\"[[osd_servers]].*\"}[1m]) / 10))",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 1,
+ "legendFormat": "all disks busy @ $percentile%ile",
+ "refId": "B"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "$osd_servers Disk Utilization @ $percentile%ile",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": "100",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "id": 11,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 2,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "repeat": null,
+ "repeatIteration": 1519090074308,
+ "repeatPanelId": 4,
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 2,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "quantile([[percentile]]/100,(irate(node_disk_io_time_ms{device=~\"[h,s,v]d[a-z]\",instance=~\"[[osd_servers]].*\"}[1m]) / 10))",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 1,
+ "legendFormat": "all disks busy @ $percentile%ile",
+ "refId": "B"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "$osd_servers Disk Utilization @ $percentile%ile",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": "100",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "id": 12,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 2,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "repeat": null,
+ "repeatIteration": 1519090074308,
+ "repeatPanelId": 4,
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 2,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "quantile([[percentile]]/100,(irate(node_disk_io_time_ms{device=~\"[h,s,v]d[a-z]\",instance=~\"[[osd_servers]].*\"}[1m]) / 10))",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 1,
+ "legendFormat": "all disks busy @ $percentile%ile",
+ "refId": "B"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "$osd_servers Disk Utilization @ $percentile%ile",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": "100",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "id": 13,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 2,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "repeat": null,
+ "repeatIteration": 1519090074308,
+ "repeatPanelId": 4,
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 2,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "quantile([[percentile]]/100,(irate(node_disk_io_time_ms{device=~\"[h,s,v]d[a-z]\",instance=~\"[[osd_servers]].*\"}[1m]) / 10))",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 1,
+ "legendFormat": "all disks busy @ $percentile%ile",
+ "refId": "B"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "$osd_servers Disk Utilization @ $percentile%ile",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": "100",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "id": 14,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 2,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "repeat": null,
+ "repeatIteration": 1519090074308,
+ "repeatPanelId": 4,
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 2,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "quantile([[percentile]]/100,(irate(node_disk_io_time_ms{device=~\"[h,s,v]d[a-z]\",instance=~\"[[osd_servers]].*\"}[1m]) / 10))",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 1,
+ "legendFormat": "all disks busy @ $percentile%ile",
+ "refId": "B"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "$osd_servers Disk Utilization @ $percentile%ile",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": "100",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "id": 15,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 2,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "repeat": null,
+ "repeatIteration": 1519090074308,
+ "repeatPanelId": 4,
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 2,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "quantile([[percentile]]/100,(irate(node_disk_io_time_ms{device=~\"[h,s,v]d[a-z]\",instance=~\"[[osd_servers]].*\"}[1m]) / 10))",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 1,
+ "legendFormat": "all disks busy @ $percentile%ile",
+ "refId": "B"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "$osd_servers Disk Utilization @ $percentile%ile",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": "100",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "id": 16,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 2,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "repeat": null,
+ "repeatIteration": 1519090074308,
+ "repeatPanelId": 4,
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 2,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "quantile([[percentile]]/100,(irate(node_disk_io_time_ms{device=~\"[h,s,v]d[a-z]\",instance=~\"[[osd_servers]].*\"}[1m]) / 10))",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 1,
+ "legendFormat": "all disks busy @ $percentile%ile",
+ "refId": "B"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "$osd_servers Disk Utilization @ $percentile%ile",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": "100",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "id": 17,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 2,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "repeat": null,
+ "repeatIteration": 1519090074308,
+ "repeatPanelId": 4,
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 2,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "quantile([[percentile]]/100,(irate(node_disk_io_time_ms{device=~\"[h,s,v]d[a-z]\",instance=~\"[[osd_servers]].*\"}[1m]) / 10))",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 1,
+ "legendFormat": "all disks busy @ $percentile%ile",
+ "refId": "B"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "$osd_servers Disk Utilization @ $percentile%ile",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": "100",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": false,
+ "title": "Dashboard Row",
+ "titleSize": "h6"
+ },
+ {
+ "collapse": false,
+ "height": 250,
+ "panels": [],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": false,
+ "title": "Dashboard Row",
+ "titleSize": "h6"
+ }
+ ],
+ "schemaVersion": 14,
+ "style": "dark",
+ "tags": [],
+ "templating": {
+ "list": [
+ {
+ "allValue": null,
+ "current": {
+ "text": "All",
+ "value": "$__all"
+ },
+ "datasource": null,
+ "hide": 2,
+ "includeAll": true,
+ "label": null,
+ "multi": false,
+ "name": "osd_servers",
+ "options": [],
+ "query": "label_values(ceph_disk_occupation, instance)",
+ "refresh": 1,
+ "regex": "([^.]*).*",
+ "sort": 1,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ },
+ {
+ "allValue": null,
+ "current": {
+ "selected": true,
+ "text": "95",
+ "value": "95"
+ },
+ "hide": 0,
+ "includeAll": false,
+ "label": "Percentile",
+ "multi": false,
+ "name": "percentile",
+ "options": [
+ {
+ "selected": true,
+ "text": "95",
+ "value": "95"
+ },
+ {
+ "selected": false,
+ "text": "96",
+ "value": "96"
+ },
+ {
+ "selected": false,
+ "text": "97",
+ "value": "97"
+ },
+ {
+ "selected": false,
+ "text": "98",
+ "value": "98"
+ },
+ {
+ "selected": false,
+ "text": "99",
+ "value": "99"
+ }
+ ],
+ "query": "95,96,97,98,99",
+ "type": "custom"
+ }
+ ]
+ },
+ "time": {
+ "from": "now-1h",
+ "to": "now"
+ },
+ "timepicker": {
+ "refresh_intervals": [
+ "5s",
+ "10s",
+ "15s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ],
+ "time_options": [
+ "5m",
+ "15m",
+ "1h",
+ "6h",
+ "12h",
+ "24h",
+ "2d",
+ "7d",
+ "30d"
+ ]
+ },
+ "timezone": "",
+ "title": "Disk Busy By Server"
+}
--- /dev/null
+{
+ "__requires": [
+ {
+ "type": "grafana",
+ "id": "grafana",
+ "name": "Grafana",
+ "version": "4.6.3"
+ },
+ {
+ "type": "panel",
+ "id": "graph",
+ "name": "Graph",
+ "version": ""
+ },
+ {
+ "type": "datasource",
+ "id": "prometheus",
+ "name": "Local",
+ "version": "1.0.0"
+ }
+ ],
+ "annotations": {
+ "list": [
+ {
+ "builtIn": 1,
+ "datasource": "-- Grafana --",
+ "enable": true,
+ "hide": true,
+ "iconColor": "rgba(0, 211, 255, 1)",
+ "name": "Annotations & Alerts",
+ "type": "dashboard"
+ }
+ ]
+ },
+ "editable": false,
+ "gnetId": null,
+ "graphTooltip": 0,
+ "hideControls": false,
+ "id": null,
+ "links": [],
+ "refresh": "15s",
+ "rows": [
+ {
+ "collapse": false,
+ "height": "250px",
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "gridPos": {
+ "h": 10,
+ "w": 24,
+ "x": 0,
+ "y": 0
+ },
+ "height": "400",
+ "id": 1,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 12,
+ "nullPointMode": "connected",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "repeat": null,
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 12,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "label_replace(irate(node_disk_reads_completed[1m]) + irate(node_disk_writes_completed{instance=~\"[[osd_servers]].*\"}[1m]),\"host\",\"$1\",\"instance\",\"([^.]*).*\")",
+ "format": "time_series",
+ "hide": true,
+ "intervalFactor": 1,
+ "legendFormat": "{{host}}",
+ "refId": "B"
+ },
+ {
+ "expr": "sum(\n sum(\n irate(node_disk_reads_completed{job=\"node\" }[1m]) + \n irate(node_disk_writes_completed{job=\"node\"}[1m]))\n by(instance, device) + ignoring(ceph_daemon,job) group_right(instance) ceph_disk_occupation)\n by(instance)",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "{{instance}}",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Disk IOPS Across All OSD Hosts",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "none",
+ "label": "",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "All Servers by IOPS",
+ "titleSize": "h6"
+ },
+ {
+ "collapse": false,
+ "height": 250,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "id": 2,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "repeat": "osd_servers",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 4,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "sum(\n sum(\n irate(node_disk_reads_completed{instance=~\"[[osd_servers]].*\"}[1m]) + irate(node_disk_writes_completed[1m]))\n by(instance,device) +\n ignoring(ceph_daemon,job) group_right(instance) ceph_disk_occupation)\n \n \n",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Total IOPS for $osd_servers",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "none",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "IOPS Load by Server",
+ "titleSize": "h6"
+ }
+ ],
+ "schemaVersion": 14,
+ "style": "dark",
+ "tags": [],
+ "templating": {
+ "list": [
+ {
+ "allValue": "",
+ "current": {},
+ "datasource": null,
+ "hide": 2,
+ "includeAll": true,
+ "label": "OSD Host",
+ "multi": false,
+ "name": "osd_servers",
+ "options": [],
+ "query": "label_values(ceph_disk_occupation, instance)",
+ "refresh": 1,
+ "regex": "([^.]*).*",
+ "sort": 1,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ }
+ ]
+ },
+ "time": {
+ "from": "now-1h",
+ "to": "now"
+ },
+ "timepicker": {
+ "refresh_intervals": [
+ "5s",
+ "10s",
+ "15s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ],
+ "time_options": [
+ "5m",
+ "15m",
+ "1h",
+ "6h",
+ "12h",
+ "24h",
+ "2d",
+ "7d",
+ "30d"
+ ]
+ },
+ "timezone": "",
+ "title": "IOPS by Server",
+ "version": 6
+}
--- /dev/null
+{
+ "__requires": [
+ {
+ "type": "grafana",
+ "id": "grafana",
+ "name": "Grafana",
+ "version": "5.0.4"
+ },
+ {
+ "type": "panel",
+ "id": "graph",
+ "name": "Graph",
+ "version": "5.0.0"
+ },
+ {
+ "type": "datasource",
+ "id": "prometheus",
+ "name": "Local",
+ "version": "5.0.0"
+ },
+ {
+ "type": "panel",
+ "id": "table",
+ "name": "Table",
+ "version": "5.0.0"
+ }
+ ],
+ "annotations": {
+ "list": [
+ {
+ "builtIn": 1,
+ "datasource": "-- Grafana --",
+ "enable": true,
+ "hide": true,
+ "iconColor": "rgba(0, 211, 255, 1)",
+ "name": "Annotations & Alerts",
+ "type": "dashboard"
+ }
+ ]
+ },
+ "editable": false,
+ "gnetId": null,
+ "graphTooltip": 0,
+ "id": null,
+ "iteration": 1526265032109,
+ "links": [],
+ "panels": [
+ {
+ "collapsed": false,
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 0
+ },
+ "id": 28,
+ "panels": [],
+ "repeat": null,
+ "title": "Client Details for $client_iqn",
+ "type": "row"
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "gridPos": {
+ "h": 7,
+ "w": 12,
+ "x": 0,
+ "y": 1
+ },
+ "id": 20,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 12,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "round(sum by(lun_name) (irate(ceph_iscsi_lun_iops{client_iqn=~\"[[client_iqn]]\"}[30s])))",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "{{lun_name}}",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "IOPS Detail for $client_iqn",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "none",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "gridPos": {
+ "h": 7,
+ "w": 12,
+ "x": 12,
+ "y": 1
+ },
+ "id": 21,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 12,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "round(sum by(lun_name) (irate(ceph_iscsi_lun_read_bytes{client_iqn=~\"[[client_iqn]]\"}[30s])))",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "{{lun_name}}(r)",
+ "refId": "A"
+ },
+ {
+ "expr": "round(sum by(lun_name) (irate(ceph_iscsi_lun_write_bytes{client_iqn=~\"[[client_iqn]]\"}[30s])))",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "{{lun_name}}(w)",
+ "refId": "B"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Throughput for $client_iqn",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "decbytes",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "columns": [],
+ "datasource": null,
+ "fontSize": "100%",
+ "gridPos": {
+ "h": 7,
+ "w": 12,
+ "x": 0,
+ "y": 8
+ },
+ "id": 24,
+ "links": [],
+ "minSpan": 12,
+ "pageSize": null,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": 5,
+ "desc": true
+ },
+ "styles": [
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "Time",
+ "thresholds": [],
+ "type": "hidden",
+ "unit": "short"
+ },
+ {
+ "alias": "Gateway Owner",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "gw_owner",
+ "thresholds": [],
+ "type": "string",
+ "unit": "short"
+ },
+ {
+ "alias": "LUN Name (pool.image)",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "a_lun_name",
+ "thresholds": [],
+ "type": "string",
+ "unit": "short"
+ },
+ {
+ "alias": "Size",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "Value",
+ "thresholds": [],
+ "type": "number",
+ "unit": "bytes"
+ },
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "hidden",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "expr": "max(label_replace(ceph_iscsi_client_lun{client_iqn=~\"[[client_iqn]]\"},\"a_lun_name\",\"$1\", \"lun_name\",\"(.*)\")) \n by(a_lun_name,client_iqn) +\non(a_lun_name) group_right(client_iqn) \n max(label_replace(ceph_iscsi_lun_mapped,\"a_lun_name\",\"$1\",\"lun_name\",\"(.*)\")) by(a_lun_name, gw_owner) +\non(a_lun_name) group_right(client_iqn, gw_owner) \n max(label_replace(ceph_iscsi_lun_size_bytes,\"a_lun_name\",\"$1\",\"lun_name\",\"(.*)\")) by(a_lun_name)\n\n",
+ "format": "table",
+ "hide": false,
+ "instant": true,
+ "intervalFactor": 1,
+ "refId": "C"
+ }
+ ],
+ "title": "LUN Details for $client_iqn",
+ "transform": "table",
+ "type": "table"
+ }
+ ],
+ "refresh": "15s",
+ "schemaVersion": 16,
+ "style": "dark",
+ "tags": [
+ "iscsi"
+ ],
+ "templating": {
+ "list": [
+ {
+ "allValue": null,
+ "current": {},
+ "datasource": null,
+ "hide": 0,
+ "includeAll": false,
+ "label": "Client IQN",
+ "multi": false,
+ "name": "client_iqn",
+ "options": [],
+ "query": "label_values(ceph_iscsi_client_login,client_iqn)",
+ "refresh": 1,
+ "regex": "",
+ "sort": 0,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ },
+ {
+ "allValue": null,
+ "current": {},
+ "datasource": null,
+ "hide": 2,
+ "includeAll": false,
+ "label": null,
+ "multi": false,
+ "name": "gateway_iqn",
+ "options": [],
+ "query": "label_values(ceph_iscsi_gateway_tpg_total, gw_iqn)",
+ "refresh": 1,
+ "regex": "",
+ "sort": 0,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ },
+ {
+ "allValue": null,
+ "current": {
+ "text": "(eth|bon|en|ib|mlx|p)",
+ "value": "(eth|bon|en|ib|mlx|p)"
+ },
+ "hide": 2,
+ "includeAll": false,
+ "label": null,
+ "multi": false,
+ "name": "interfaces",
+ "options": [
+ {
+ "selected": true,
+ "text": "(eth|bon|en|ib|mlx|p)",
+ "value": "(eth|bon|en|ib|mlx|p)"
+ }
+ ],
+ "query": "(eth|bon|en|ib|mlx|p)",
+ "type": "custom"
+ }
+ ]
+ },
+ "time": {
+ "from": "now-1h",
+ "to": "now"
+ },
+ "timepicker": {
+ "refresh_intervals": [
+ "5s",
+ "10s",
+ "15s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ],
+ "time_options": [
+ "5m",
+ "15m",
+ "1h",
+ "6h",
+ "12h",
+ "24h",
+ "2d",
+ "7d",
+ "30d"
+ ]
+ },
+ "timezone": "",
+ "title": "iSCSI Client Details",
+ "version": 7
+}
--- /dev/null
+{
+ "__requires": [
+ {
+ "type": "grafana",
+ "id": "grafana",
+ "name": "Grafana",
+ "version": "5.0.0"
+ },
+ {
+ "type": "panel",
+ "id": "grafana-piechart-panel",
+ "name": "Pie Chart",
+ "version": "1.3.3"
+ },
+ {
+ "type": "panel",
+ "id": "graph",
+ "name": "Graph",
+ "version": "5.0.0"
+ },
+ {
+ "type": "datasource",
+ "id": "prometheus",
+ "name": "Local",
+ "version": "5.0.0"
+ },
+ {
+ "type": "panel",
+ "id": "singlestat",
+ "name": "Singlestat",
+ "version": "5.0.0"
+ },
+ {
+ "type": "panel",
+ "id": "text",
+ "name": "Text",
+ "version": "5.0.0"
+ }
+ ],
+ "annotations": {
+ "list": [
+ {
+ "builtIn": 1,
+ "datasource": "-- Grafana --",
+ "enable": true,
+ "hide": true,
+ "iconColor": "rgba(0, 211, 255, 1)",
+ "name": "Annotations & Alerts",
+ "type": "dashboard"
+ }
+ ]
+ },
+ "editable": false,
+ "gnetId": null,
+ "graphTooltip": 0,
+ "id": null,
+ "iteration": 1530144424365,
+ "links": [
+ {
+ "asDropdown": true,
+ "icon": "external link",
+ "tags": [
+ "iscsi"
+ ],
+ "targetBlank": true,
+ "title": "Clients",
+ "type": "dashboards"
+ }
+ ],
+ "panels": [
+ {
+ "collapsed": false,
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 0
+ },
+ "id": 25,
+ "panels": [],
+ "repeat": null,
+ "title": "iSCSI Gateway Group : $gateway_iqn",
+ "type": "row"
+ },
+ {
+ "content": "",
+ "gridPos": {
+ "h": 4,
+ "w": 4,
+ "x": 0,
+ "y": 1
+ },
+ "id": 8,
+ "links": [],
+ "minSpan": 4,
+ "mode": "markdown",
+ "title": "",
+ "transparent": true,
+ "type": "text"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "#299c46",
+ "rgba(237, 129, 40, 0.89)",
+ "#d44a3a"
+ ],
+ "datasource": null,
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 4,
+ "w": 2,
+ "x": 4,
+ "y": 1
+ },
+ "id": 1,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "max(ceph_iscsi_gateway_tpg_total)",
+ "format": "time_series",
+ "instant": true,
+ "intervalFactor": 1,
+ "refId": "A"
+ }
+ ],
+ "thresholds": "",
+ "title": "Gateways",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "#299c46",
+ "rgba(237, 129, 40, 0.89)",
+ "#d44a3a"
+ ],
+ "datasource": null,
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 4,
+ "w": 2,
+ "x": 6,
+ "y": 1
+ },
+ "id": 3,
+ "interval": null,
+ "links": [
+ {
+ "dashUri": "db/iscsi-client-details",
+ "dashboard": "iSCSI Client Details",
+ "targetBlank": true,
+ "title": "iSCSI Client Details",
+ "type": "dashboard"
+ }
+ ],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "max(count by(instance) (ceph_iscsi_client_login))",
+ "format": "time_series",
+ "instant": true,
+ "intervalFactor": 1,
+ "refId": "A"
+ }
+ ],
+ "thresholds": "",
+ "title": "Clients",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "#299c46",
+ "rgba(237, 129, 40, 0.89)",
+ "#d44a3a"
+ ],
+ "datasource": null,
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 4,
+ "w": 2,
+ "x": 8,
+ "y": 1
+ },
+ "id": 4,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "max(sum(ceph_iscsi_client_login) by(gw_name))",
+ "format": "time_series",
+ "instant": true,
+ "intervalFactor": 1,
+ "refId": "A"
+ }
+ ],
+ "thresholds": "",
+ "title": "Sessions",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "#299c46",
+ "rgba(237, 129, 40, 0.89)",
+ "#d44a3a"
+ ],
+ "datasource": null,
+ "decimals": 0,
+ "format": "bytes",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 4,
+ "w": 4,
+ "x": 10,
+ "y": 1
+ },
+ "id": 5,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 4,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "max(sum(ceph_iscsi_lun_size_bytes) by(gw_name))",
+ "format": "time_series",
+ "instant": true,
+ "intervalFactor": 1,
+ "refId": "A"
+ }
+ ],
+ "thresholds": "",
+ "title": "Defined Capacity",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "#299c46",
+ "rgba(237, 129, 40, 0.89)",
+ "#d44a3a"
+ ],
+ "datasource": null,
+ "decimals": 0,
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 4,
+ "w": 2,
+ "x": 14,
+ "y": 1
+ },
+ "id": 6,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "max(count by(instance) (ceph_iscsi_lun_mapped))",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "refId": "B"
+ }
+ ],
+ "thresholds": "",
+ "title": "LUNs",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "#299c46",
+ "rgba(237, 129, 40, 0.89)",
+ "#d44a3a"
+ ],
+ "datasource": null,
+ "decimals": 0,
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 4,
+ "w": 2,
+ "x": 16,
+ "y": 1
+ },
+ "id": 7,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 2,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "max(count by(instance) (ceph_iscsi_lun_mapped)) - max(count by(instance) (ceph_iscsi_lun_mapped == 1))",
+ "format": "time_series",
+ "hide": false,
+ "instant": true,
+ "intervalFactor": 2,
+ "refId": "A"
+ }
+ ],
+ "thresholds": "",
+ "title": "Unused LUNs",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "content": "",
+ "gridPos": {
+ "h": 4,
+ "w": 6,
+ "x": 18,
+ "y": 1
+ },
+ "id": 9,
+ "links": [],
+ "minSpan": 6,
+ "mode": "markdown",
+ "title": "",
+ "transparent": true,
+ "type": "text"
+ },
+ {
+ "content": "",
+ "gridPos": {
+ "h": 4,
+ "w": 2,
+ "x": 0,
+ "y": 5
+ },
+ "id": 10,
+ "links": [],
+ "minSpan": 2,
+ "mode": "markdown",
+ "title": "",
+ "transparent": true,
+ "type": "text"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "#299c46",
+ "rgba(237, 129, 40, 0.89)",
+ "#d44a3a"
+ ],
+ "datasource": null,
+ "decimals": 0,
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 5,
+ "w": 4,
+ "x": 2,
+ "y": 5
+ },
+ "height": "200",
+ "id": 11,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 4,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "sum(sum(rate(ceph_iscsi_lun_iops[30s])) by(gw_name))",
+ "format": "time_series",
+ "instant": true,
+ "intervalFactor": 2,
+ "refId": "A"
+ }
+ ],
+ "thresholds": "",
+ "title": "IOPS",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "#299c46",
+ "rgba(237, 129, 40, 0.89)",
+ "#d44a3a"
+ ],
+ "datasource": null,
+ "decimals": 1,
+ "format": "decbytes",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 5,
+ "w": 4,
+ "x": 6,
+ "y": 5
+ },
+ "height": "200",
+ "id": 12,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 4,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "/s",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "sum((sum(rate(ceph_iscsi_lun_read_bytes[30s])) by(gw_name)) + (sum(rate(ceph_iscsi_lun_write_bytes[30s])) by(gw_name)))",
+ "format": "time_series",
+ "instant": false,
+ "intervalFactor": 1,
+ "refId": "A"
+ }
+ ],
+ "thresholds": "",
+ "title": "Throughput",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "gridPos": {
+ "h": 5,
+ "w": 6,
+ "x": 10,
+ "y": 5
+ },
+ "height": "200",
+ "id": 13,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 6,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "label_replace(\n (sum(\n rate(\n node_network_transmit_bytes{job=\"node\", instance=~\"($iscsi_gws).*\"}[30s])\n ) by(instance)),\n \"gw_name\", \"$1\",\"instance\",\"([^.]*).*\")",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 1,
+ "legendFormat": "{{gw_name}}",
+ "refId": "B"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Network Load by Gateway",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "decbytes",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "breakPoint": "50%",
+ "cacheTimeout": null,
+ "combine": {
+ "label": "Others",
+ "threshold": 0
+ },
+ "datasource": null,
+ "description": "LUNs are configured with a primary path (active), and a number of secondary paths (passive). Under normal circumstances, only the active/primary path is used for I/O. This chart shows the distribution of the active paths across each of the gateways.",
+ "fontSize": "80%",
+ "format": "short",
+ "gridPos": {
+ "h": 5,
+ "w": 6,
+ "x": 16,
+ "y": 5
+ },
+ "id": 14,
+ "interval": null,
+ "legend": {
+ "show": true,
+ "values": true
+ },
+ "legendType": "Under graph",
+ "links": [],
+ "maxDataPoints": 3,
+ "minSpan": 6,
+ "nullPointMode": "connected",
+ "pieType": "pie",
+ "strokeWidth": 1,
+ "targets": [
+ {
+ "expr": "max(count(ceph_iscsi_lun_mapped) by(instance,gw_owner)) by(gw_owner)",
+ "format": "time_series",
+ "instant": true,
+ "intervalFactor": 1,
+ "legendFormat": "{{gw_owner}}",
+ "refId": "A"
+ }
+ ],
+ "title": "Active LUN Paths by Gateway",
+ "type": "grafana-piechart-panel",
+ "valueName": "current"
+ },
+ {
+ "collapsed": true,
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 10
+ },
+ "id": 26,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "fill": 1,
+ "gridPos": {
+ "h": 7,
+ "w": 12,
+ "x": 0,
+ "y": 11
+ },
+ "id": 15,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 12,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "round(\n sum by(gw_name) \n (rate(ceph_iscsi_lun_iops[30s])\n )\n)",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "{{gw_name}}",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "IOPS by Gateway",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "decimals": null,
+ "format": "none",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "gridPos": {
+ "h": 7,
+ "w": 12,
+ "x": 12,
+ "y": 11
+ },
+ "id": 16,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 12,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "round(\n sum by(gw_name) \n ((rate(ceph_iscsi_lun_read_bytes[30s])) + \n (rate(ceph_iscsi_lun_write_bytes[30s]))\n )\n )",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "{{gw_name}}",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Throughput by Gateway",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "decimals": null,
+ "format": "decbytes",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "fill": 1,
+ "gridPos": {
+ "h": 7,
+ "w": 12,
+ "x": 0,
+ "y": 18
+ },
+ "id": 22,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 12,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "100 - (avg by (gw) \n (label_replace(\n irate(node_cpu{job=\"node\",instance=~\"($iscsi_gws).*\",mode=\"idle\"}[30s]),\n \"gw\",\"$1\",\"instance\",\"([^.]*).*\")\n ) * 100)",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "{{gw}}",
+ "refId": "B"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "CPU Busy %",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": "100",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "fill": 1,
+ "gridPos": {
+ "h": 7,
+ "w": 12,
+ "x": 12,
+ "y": 18
+ },
+ "id": 23,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "label_replace(\n ((node_memory_MemTotal{job=\"node\", instance=~\"($iscsi_gws).*\"} - node_memory_MemFree) / node_memory_MemTotal) * 100, \n \"gw\", \"$1\", \"instance\",\"([^.]*).*\")",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "{{gw}}",
+ "refId": "D"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "RAM Util%",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": "100",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "title": "Gateway Load",
+ "type": "row"
+ },
+ {
+ "collapsed": true,
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 11
+ },
+ "id": 27,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "fill": 1,
+ "gridPos": {
+ "h": 7,
+ "w": 24,
+ "x": 0,
+ "y": 12
+ },
+ "id": 17,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 24,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "round(sum by(shortname) (label_replace(rate(ceph_iscsi_lun_iops[30s]),\"shortname\",\"$2\",\"client_iqn\",\"(.*):(.*)\")))",
+ "format": "time_series",
+ "instant": false,
+ "intervalFactor": 1,
+ "legendFormat": "{{shortname}}",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "IOPS by Client (R+W)",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "none",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "fill": 1,
+ "gridPos": {
+ "h": 7,
+ "w": 24,
+ "x": 0,
+ "y": 19
+ },
+ "id": 19,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 24,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "round(\n sum by(shortname) \n ((label_replace(rate(ceph_iscsi_lun_read_bytes[30s]),\"shortname\",\"$2\",\"client_iqn\",\"(.*):(.*)\")) +\n (label_replace(rate(ceph_iscsi_lun_write_bytes[30s]),\"shortname\",\"$2\",\"client_iqn\",\"(.*):(.*)\"))\n ))",
+ "format": "time_series",
+ "instant": false,
+ "intervalFactor": 1,
+ "legendFormat": "{{shortname}}",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Throughput by Client",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "decbytes",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "title": "Client Workloads",
+ "type": "row"
+ }
+ ],
+ "refresh": "15s",
+ "schemaVersion": 16,
+ "style": "dark",
+ "tags": [],
+ "templating": {
+ "list": [
+ {
+ "allValue": null,
+ "current": {},
+ "datasource": null,
+ "hide": 2,
+ "includeAll": false,
+ "label": null,
+ "multi": false,
+ "name": "gateway_iqn",
+ "options": [],
+ "query": "label_values(ceph_iscsi_gateway_tpg_total, gw_iqn)",
+ "refresh": 1,
+ "regex": "",
+ "sort": 0,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ },
+ {
+ "allValue": null,
+ "current": {
+ "text": "(eth|bon|en|ib|mlx|p)",
+ "value": "(eth|bon|en|ib|mlx|p)"
+ },
+ "hide": 2,
+ "includeAll": false,
+ "label": null,
+ "multi": false,
+ "name": "interfaces",
+ "options": [
+ {
+ "selected": true,
+ "text": "(eth|bon|en|ib|mlx|p)",
+ "value": "(eth|bon|en|ib|mlx|p)"
+ }
+ ],
+ "query": "(eth|bon|en|ib|mlx|p)",
+ "type": "custom"
+ },
+ {
+ "allValue": null,
+ "current": {},
+ "datasource": null,
+ "hide": 2,
+ "includeAll": true,
+ "label": null,
+ "multi": false,
+ "name": "iscsi_gws",
+ "options": [],
+ "query": "label_values(ceph_iscsi_scrape_duration_seconds, gw_name)",
+ "refresh": 1,
+ "regex": "",
+ "sort": 0,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ }
+ ]
+ },
+ "time": {
+ "from": "now-1h",
+ "to": "now"
+ },
+ "timepicker": {
+ "refresh_intervals": [
+ "5s",
+ "10s",
+ "15s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ],
+ "time_options": [
+ "5m",
+ "15m",
+ "1h",
+ "6h",
+ "12h",
+ "24h",
+ "2d",
+ "7d",
+ "30d"
+ ]
+ },
+ "timezone": "",
+ "title": "iSCSI Overview",
+ "version": 38
+}
--- /dev/null
+{
+ "__requires": [
+ {
+ "type": "grafana",
+ "id": "grafana",
+ "name": "Grafana",
+ "version": "5.0.4"
+ },
+ {
+ "type": "panel",
+ "id": "graph",
+ "name": "Graph",
+ "version": "5.0.0"
+ },
+ {
+ "type": "datasource",
+ "id": "prometheus",
+ "name": "Local",
+ "version": "5.0.0"
+ }
+ ],
+ "annotations": {
+ "list": [
+ {
+ "builtIn": 1,
+ "datasource": "-- Grafana --",
+ "enable": true,
+ "hide": true,
+ "iconColor": "rgba(0, 211, 255, 1)",
+ "name": "Annotations & Alerts",
+ "type": "dashboard"
+ }
+ ]
+ },
+ "editable": false,
+ "gnetId": null,
+ "graphTooltip": 0,
+ "id": null,
+ "iteration": 1524194437238,
+ "links": [],
+ "panels": [
+ {
+ "collapsed": false,
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 0
+ },
+ "id": 18,
+ "panels": [],
+ "repeat": null,
+ "title": "All OSD Hosts",
+ "type": "row"
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "gridPos": {
+ "h": 7,
+ "w": 24,
+ "x": 0,
+ "y": 1
+ },
+ "id": 1,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "max(\n (irate(node_disk_read_time_ms[30s]) + irate(node_disk_write_time_ms[30s]) / \n (irate(node_disk_reads_completed[30s]) + irate(node_disk_writes_completed[30s])) +\n ignoring(ceph_daemon,job) ceph_disk_occupation))\n by(instance)",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "{{instance}}",
+ "refId": "B"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "All OSD Hosts - Highest Latency",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "none",
+ "label": "ms",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "collapsed": false,
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 8
+ },
+ "id": 19,
+ "panels": [],
+ "repeat": null,
+ "title": "Each OSD Host's Max Disk Latency",
+ "type": "row"
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "gridPos": {
+ "h": 7,
+ "w": 4,
+ "x": 0,
+ "y": 9
+ },
+ "id": 2,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [
+ {
+ "dashUri": "db/osd-node-detail",
+ "dashboard": "OSD Node Detail",
+ "includeVars": true,
+ "targetBlank": true,
+ "title": "OSD Node Detail",
+ "type": "dashboard"
+ }
+ ],
+ "minSpan": 4,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "repeat": "osd_servers",
+ "repeatDirection": "h",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "max(label_replace((irate(node_disk_write_time_ms{instance=~\"[[osd_servers]].*\"}[30s]) + irate(node_disk_read_time_ms{instance=~\"[[osd_servers]].*\"}[30s])) / \n(irate(node_disk_writes_completed{instance=~\"[[osd_servers]].*\"}[30s]) + irate(node_disk_reads_completed{instance=~\"[[osd_servers]].*\"}[30s])),\"host\",\"$1\",\"instance\",\"([^.]*).*\")) by(host)",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 1,
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "$osd_servers Max Latency",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "none",
+ "label": "ms",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ }
+ ],
+ "refresh": "15s",
+ "schemaVersion": 16,
+ "style": "dark",
+ "tags": [],
+ "templating": {
+ "list": [
+ {
+ "allValue": null,
+ "current": {},
+ "datasource": null,
+ "hide": 2,
+ "includeAll": true,
+ "label": null,
+ "multi": false,
+ "name": "osd_servers",
+ "options": [],
+ "query": "label_values(ceph_disk_occupation, instance)",
+ "refresh": 1,
+ "regex": "([^.]*).*",
+ "sort": 1,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ }
+ ]
+ },
+ "time": {
+ "from": "now-1h",
+ "to": "now"
+ },
+ "timepicker": {
+ "refresh_intervals": [
+ "5s",
+ "10s",
+ "15s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ],
+ "time_options": [
+ "5m",
+ "15m",
+ "1h",
+ "6h",
+ "12h",
+ "24h",
+ "2d",
+ "7d",
+ "30d"
+ ]
+ },
+ "timezone": "",
+ "title": "Latency by Server",
+ "version": 12
+}
--- /dev/null
+{
+ "__requires": [
+ {
+ "type": "grafana",
+ "id": "grafana",
+ "name": "Grafana",
+ "version": "5.0.4"
+ },
+ {
+ "type": "panel",
+ "id": "graph",
+ "name": "Graph",
+ "version": "5.0.0"
+ },
+ {
+ "type": "datasource",
+ "id": "prometheus",
+ "name": "Local",
+ "version": "5.0.0"
+ },
+ {
+ "type": "panel",
+ "id": "singlestat",
+ "name": "Singlestat",
+ "version": "5.0.0"
+ }
+ ],
+ "annotations": {
+ "list": [
+ {
+ "builtIn": 1,
+ "datasource": "-- Grafana --",
+ "enable": true,
+ "hide": true,
+ "iconColor": "rgba(0, 211, 255, 1)",
+ "name": "Annotations & Alerts",
+ "type": "dashboard"
+ }
+ ]
+ },
+ "editable": false,
+ "gnetId": null,
+ "graphTooltip": 0,
+ "id": null,
+ "iteration": 1525407331553,
+ "links": [],
+ "panels": [
+ {
+ "collapsed": false,
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 0
+ },
+ "id": 8,
+ "panels": [],
+ "title": "MDS Overview",
+ "type": "row"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "#299c46",
+ "rgba(237, 129, 40, 0.89)",
+ "#d44a3a"
+ ],
+ "datasource": null,
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 5,
+ "w": 3,
+ "x": 0,
+ "y": 1
+ },
+ "id": 11,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": true
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "count(ceph_mds_metadata)",
+ "format": "time_series",
+ "instant": true,
+ "intervalFactor": 1,
+ "refId": "A"
+ }
+ ],
+ "thresholds": "",
+ "title": "Active MDS Servers",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "#299c46",
+ "rgba(237, 129, 40, 0.89)",
+ "#d44a3a"
+ ],
+ "datasource": null,
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 5,
+ "w": 3,
+ "x": 3,
+ "y": 1
+ },
+ "id": 6,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": true
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "count(ceph_fs_metadata)",
+ "format": "time_series",
+ "instant": true,
+ "intervalFactor": 1,
+ "refId": "A"
+ }
+ ],
+ "thresholds": "",
+ "title": "Filesystems",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "#299c46",
+ "rgba(237, 129, 40, 0.89)",
+ "#d44a3a"
+ ],
+ "datasource": null,
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 5,
+ "w": 3,
+ "x": 6,
+ "y": 1
+ },
+ "id": 12,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": true
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "sum(ceph_mds_sessions_sessions_open)",
+ "format": "time_series",
+ "instant": true,
+ "intervalFactor": 1,
+ "refId": "A"
+ }
+ ],
+ "thresholds": "",
+ "title": "Clients",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "collapsed": false,
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 6
+ },
+ "id": 10,
+ "panels": [],
+ "title": "MDS Performance",
+ "type": "row"
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "gridPos": {
+ "h": 9,
+ "w": 12,
+ "x": 0,
+ "y": 7
+ },
+ "id": 2,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "sum(ceph_objecter_op_r{ceph_daemon=~\"($mds_servers).*\"})",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "MDS Reads",
+ "refId": "A"
+ },
+ {
+ "expr": "sum(ceph_objecter_op_w{ceph_daemon=~\"($mds_servers).*\"})",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "MDS Writes",
+ "refId": "B"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "MDS Workload - $mds_servers",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "none",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "gridPos": {
+ "h": 9,
+ "w": 12,
+ "x": 12,
+ "y": 7
+ },
+ "id": 4,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "ceph_mds_server_handle_client_request{ceph_daemon=~\"($mds_servers).*\"}",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "{{ceph_daemon}}",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Client Request Load - $mds_servers",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "none",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ }
+ ],
+ "refresh": "15s",
+ "schemaVersion": 16,
+ "style": "dark",
+ "tags": [],
+ "templating": {
+ "list": [
+ {
+ "allValue": null,
+ "current": {},
+ "datasource": null,
+ "hide": 0,
+ "includeAll": true,
+ "label": "MDS Server",
+ "multi": false,
+ "name": "mds_servers",
+ "options": [],
+ "query": "label_values(ceph_mds_inodes, ceph_daemon)",
+ "refresh": 1,
+ "regex": "",
+ "sort": 0,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ }
+ ]
+ },
+ "time": {
+ "from": "now-1h",
+ "to": "now"
+ },
+ "timepicker": {
+ "refresh_intervals": [
+ "5s",
+ "10s",
+ "15s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ],
+ "time_options": [
+ "5m",
+ "15m",
+ "1h",
+ "6h",
+ "12h",
+ "24h",
+ "2d",
+ "7d",
+ "30d"
+ ]
+ },
+ "timezone": "",
+ "title": "MDS Performance",
+ "version": 3
+}
--- /dev/null
+{
+ "__requires": [
+ {
+ "type": "grafana",
+ "id": "grafana",
+ "name": "Grafana",
+ "version": "5.0.4"
+ },
+ {
+ "type": "panel",
+ "id": "graph",
+ "name": "Graph",
+ "version": "5.0.0"
+ },
+ {
+ "type": "datasource",
+ "id": "prometheus",
+ "name": "Local",
+ "version": "5.0.0"
+ }
+ ],
+ "annotations": {
+ "list": [
+ {
+ "builtIn": 1,
+ "datasource": "-- Grafana --",
+ "enable": true,
+ "hide": true,
+ "iconColor": "rgba(0, 211, 255, 1)",
+ "name": "Annotations & Alerts",
+ "type": "dashboard"
+ }
+ ]
+ },
+ "editable": false,
+ "gnetId": null,
+ "graphTooltip": 0,
+ "id": null,
+ "iteration": 1525134169600,
+ "links": [],
+ "panels": [
+ {
+ "collapsed": false,
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 0
+ },
+ "id": 4,
+ "panels": [],
+ "repeat": null,
+ "title": "Aggregated Network Load",
+ "type": "row"
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "gridPos": {
+ "h": 8,
+ "w": 24,
+ "x": 0,
+ "y": 1
+ },
+ "id": 1,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "sum (irate(node_network_receive_bytes{instance=~\"([[mon_servers]]).*\",device=~\"[[interfaces]].*\"}[30s])) + \nsum (irate(node_network_transmit_bytes{instance=~\"([[mon_servers]]).*\",device=~\"[[interfaces]].*\"}[30s]))",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "MONs",
+ "refId": "A"
+ },
+ {
+ "expr": "sum (irate(node_network_receive_bytes{instance=~\"[[osd_servers]].*\",device=~\"[[interfaces]].*\"}[30s])) + \nsum (irate(node_network_transmit_bytes{instance=~\"[[osd_servers]].*\",device=~\"[[interfaces]].*\"}[30s]))",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "OSDs",
+ "refId": "B"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Cluster Network Load",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "collapsed": true,
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 9
+ },
+ "id": 5,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "fill": 1,
+ "gridPos": {
+ "h": 7,
+ "w": 24,
+ "x": 0,
+ "y": 10
+ },
+ "id": 2,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "sum (irate(node_network_receive_bytes{instance=~\"([[mon_servers]]).*\", device=~\"[[interfaces]].*\"}[30s])) by (instance) + \nsum (irate(node_network_transmit_bytes{instance=~\"([[mon_servers]]).*\", device=~\"[[interfaces]].*\"}[30s])) by (instance)",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "{{instance}}",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "MON Network Load",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "title": "MON Hosts",
+ "type": "row"
+ },
+ {
+ "collapsed": true,
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 10
+ },
+ "id": 6,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "Local",
+ "fill": 1,
+ "gridPos": {
+ "h": 7,
+ "w": 24,
+ "x": 0,
+ "y": 11
+ },
+ "id": 3,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "sum \n (irate(node_network_receive_bytes{instance=~\"[[osd_servers]]\", device=~\"[[interfaces]].*\"}[30s]) + \n irate(node_network_transmit_bytes{instance=~\"[[osd_servers]]\", device=~\"[[interfaces]].*\"}[30s])) by(instance)\n",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "{{instance}}",
+ "refId": "B"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "OSD Hosts Network Load",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "title": "OSD Hosts",
+ "type": "row"
+ }
+ ],
+ "refresh": "15s",
+ "schemaVersion": 16,
+ "style": "dark",
+ "tags": [],
+ "templating": {
+ "list": [
+ {
+ "allValue": null,
+ "current": {},
+ "datasource": null,
+ "hide": 2,
+ "includeAll": true,
+ "label": null,
+ "multi": false,
+ "name": "osd_servers",
+ "options": [],
+ "query": "label_values(ceph_disk_occupation, instance)",
+ "refresh": 1,
+ "regex": "",
+ "sort": 1,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ },
+ {
+ "allValue": null,
+ "current": {},
+ "datasource": null,
+ "hide": 2,
+ "includeAll": true,
+ "label": null,
+ "multi": false,
+ "name": "only_osds",
+ "options": [],
+ "query": "label_values(ceph_server_metadata{services=\"osd\"}, hostname)",
+ "refresh": 1,
+ "regex": "",
+ "sort": 1,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ },
+ {
+ "allValue": null,
+ "current": {},
+ "datasource": null,
+ "hide": 2,
+ "includeAll": true,
+ "label": null,
+ "multi": false,
+ "name": "mon_servers",
+ "options": [],
+ "query": "label_values(ceph_mon_quorum_status, ceph_daemon)",
+ "refresh": 1,
+ "regex": "/mon.(.*)/",
+ "sort": 1,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ },
+ {
+ "allValue": null,
+ "current": {
+ "text": "(eth|en|bond|mlx|ib|p)",
+ "value": "(eth|en|bond|mlx|ib|p)"
+ },
+ "hide": 2,
+ "includeAll": false,
+ "label": null,
+ "multi": false,
+ "name": "interfaces",
+ "options": [
+ {
+ "selected": true,
+ "text": "(eth|en|bond|mlx|ib|p)",
+ "value": "(eth|en|bond|mlx|ib|p)"
+ }
+ ],
+ "query": "(eth|en|bond|mlx|ib|p)",
+ "type": "custom"
+ }
+ ]
+ },
+ "time": {
+ "from": "now-1h",
+ "to": "now"
+ },
+ "timepicker": {
+ "refresh_intervals": [
+ "5s",
+ "10s",
+ "15s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ],
+ "time_options": [
+ "5m",
+ "15m",
+ "1h",
+ "6h",
+ "12h",
+ "24h",
+ "2d",
+ "7d",
+ "30d"
+ ]
+ },
+ "timezone": "",
+ "title": "Network Usage by Server",
+ "version": 19
+}
--- /dev/null
+{
+ "__requires": [
+ {
+ "type": "grafana",
+ "id": "grafana",
+ "name": "Grafana",
+ "version": "5.0.4"
+ },
+ {
+ "type": "panel",
+ "id": "graph",
+ "name": "Graph",
+ "version": "5.0.0"
+ },
+ {
+ "type": "datasource",
+ "id": "prometheus",
+ "name": "Local",
+ "version": "5.0.0"
+ },
+ {
+ "type": "panel",
+ "id": "singlestat",
+ "name": "Singlestat",
+ "version": "5.0.0"
+ },
+ {
+ "type": "panel",
+ "id": "table",
+ "name": "Table",
+ "version": "5.0.0"
+ }
+ ],
+ "annotations": {
+ "list": [
+ {
+ "builtIn": 1,
+ "datasource": "-- Grafana --",
+ "enable": true,
+ "hide": true,
+ "iconColor": "rgba(0, 211, 255, 1)",
+ "name": "Annotations & Alerts",
+ "type": "dashboard"
+ }
+ ]
+ },
+ "editable": false,
+ "gnetId": null,
+ "graphTooltip": 0,
+ "id": null,
+ "iteration": 1544737450178,
+ "links": [
+ {
+ "asDropdown": true,
+ "icon": "external link",
+ "tags": [
+ "overview"
+ ],
+ "title": "Shortcuts",
+ "type": "dashboards"
+ }
+ ],
+ "panels": [
+ {
+ "collapsed": false,
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 0
+ },
+ "id": 11,
+ "panels": [],
+ "repeat": null,
+ "title": "'$osd_servers' OSD Overview",
+ "type": "row"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": null,
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 4,
+ "w": 4,
+ "x": 0,
+ "y": 1
+ },
+ "height": "160",
+ "id": 1,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": "",
+ "minSpan": 4,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "count(ceph_disk_occupation{device=~\"($device_id)\", instance=~\"($osd_servers).*\"})",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "refId": "A",
+ "step": 40,
+ "textEditor": true
+ }
+ ],
+ "thresholds": "",
+ "title": "OSDs",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "columns": [],
+ "datasource": null,
+ "description": "",
+ "fontSize": "100%",
+ "gridPos": {
+ "h": 8,
+ "w": 13,
+ "x": 4,
+ "y": 1
+ },
+ "height": "160",
+ "hideTimeOverride": false,
+ "id": 3,
+ "links": [],
+ "minSpan": 6,
+ "pageSize": 20,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": 1,
+ "desc": false
+ },
+ "styles": [
+ {
+ "alias": "Hostname",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "aa_hostname",
+ "thresholds": [],
+ "type": "string",
+ "unit": "short"
+ },
+ {
+ "alias": "OSD",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "ceph_daemon",
+ "thresholds": [],
+ "type": "string",
+ "unit": "short"
+ },
+ {
+ "alias": "Device",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "device",
+ "thresholds": [],
+ "type": "string",
+ "unit": "short"
+ },
+ {
+ "alias": "Device Type",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "device_class",
+ "thresholds": [],
+ "type": "string",
+ "unit": "short"
+ },
+ {
+ "alias": "Size",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "Value",
+ "thresholds": [],
+ "type": "number",
+ "unit": "bytes"
+ },
+ {
+ "alias": "Ceph Version",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "ceph_ver",
+ "thresholds": [],
+ "type": "string",
+ "unit": "short"
+ },
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "hidden",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "expr": "(label_replace(ceph_disk_occupation{instance=~\"($osd_servers).*\",device=~\"($device_id)\"},\"aa_hostname\",\"$1\",\"instance\",\"(.*)\") * \n on(ceph_daemon) group_left(aa_instance) ceph_osd_stat_bytes) *\n on(ceph_daemon) group_left(ceph_ver, device_class) label_replace(ceph_osd_metadata,\"ceph_ver\",\"$1\",\"ceph_version\",\"ceph version (.*) (.*) (.*) (.*)\") ",
+ "format": "table",
+ "hide": false,
+ "instant": true,
+ "intervalFactor": 1,
+ "refId": "C"
+ }
+ ],
+ "timeFrom": null,
+ "title": "Host OSD Breakdown",
+ "transform": "table",
+ "type": "table"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": null,
+ "decimals": 0,
+ "description": "Each OSD consists of a Journal/WAL partition and a data partition. The RAW Capacity shown is the sum of the data partitions across all OSDs on the selected OSD hosts.",
+ "format": "bytes",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 4,
+ "w": 4,
+ "x": 0,
+ "y": 5
+ },
+ "height": "160",
+ "id": 2,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": "",
+ "minSpan": 4,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "sum(ceph_osd_stat_bytes and on (ceph_daemon) ceph_disk_occupation{device=~\"($device_id)\", instance=~\"($osd_servers).*\"})",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "refId": "A",
+ "step": 40,
+ "textEditor": true
+ }
+ ],
+ "thresholds": "",
+ "title": "Raw Capacity",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "collapsed": false,
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 9
+ },
+ "id": 12,
+ "panels": [],
+ "repeat": null,
+ "title": "'$osd_servers' Performance Statistics",
+ "type": "row"
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "gridPos": {
+ "h": 7,
+ "w": 12,
+ "x": 0,
+ "y": 10
+ },
+ "id": 5,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 12,
+ "nullPointMode": "connected",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "max by (device) (\n irate(node_disk_io_time_ms[5m]) and on (instance, device) ceph_disk_occupation{instance=~\"($osd_servers).*\", device=~\"($device_id)\"}\n) / 10",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 1,
+ "legendFormat": "{{device}}",
+ "refId": "A",
+ "step": 10,
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "$osd_servers Disk utilisation",
+ "tooltip": {
+ "shared": true,
+ "sort": 2,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "%Util",
+ "logBase": 1,
+ "max": "100",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "gridPos": {
+ "h": 7,
+ "w": 12,
+ "x": 12,
+ "y": 10
+ },
+ "id": 6,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 12,
+ "nullPointMode": "connected",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "max by (device) ((\n irate(node_disk_reads_completed{device=~\"($device_id)\", instance=~\"($osd_servers).*\"}[5m]) +\n irate(node_disk_writes_completed{device=~\"($device_id)\", instance=~\"($osd_servers).*\"}[5m])\n) and on (instance, device) ceph_disk_occupation{instance=~\"($osd_servers).*\", device=~\"($device_id)\"})",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "{{device}}",
+ "refId": "A",
+ "step": 10,
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "$osd_servers Disk IOPS",
+ "tooltip": {
+ "shared": true,
+ "sort": 2,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "IOPS",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "gridPos": {
+ "h": 7,
+ "w": 12,
+ "x": 0,
+ "y": 17
+ },
+ "id": 7,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 12,
+ "nullPointMode": "null as zero",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "max by (device) ((\n irate(node_disk_write_time_ms{device=~ \"($device_id)\", instance=~\"($osd_servers).*\"}[5m])\n /\n clamp_min(irate(node_disk_writes_completed{device=~ \"($device_id)\", instance=~\"($osd_servers).*\"}[5m]), 0.001)\n+\n irate(node_disk_read_time_ms{device=~ \"($device_id)\", instance=~\"($osd_servers).*\"}[5m])\n /\n clamp_min(irate(node_disk_reads_completed{device=~ \"($device_id)\", instance=~\"($osd_servers).*\"}[5m]), 0.001)\n) and on (instance, device) ceph_disk_occupation{instance=~\"($osd_servers).*\", device=~\"($device_id)\"})",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 1,
+ "legendFormat": "{{device}}",
+ "refId": "A",
+ "step": 10,
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "$osd_servers Disk Latency",
+ "tooltip": {
+ "shared": true,
+ "sort": 2,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "ms",
+ "label": "",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "gridPos": {
+ "h": 7,
+ "w": 12,
+ "x": 12,
+ "y": 17
+ },
+ "id": 8,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 12,
+ "nullPointMode": "connected",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "max by (device) ((\n irate(node_disk_bytes_read{device=~\"($device_id)\", instance=~\"($osd_servers).*\"}[5m]) + \n irate(node_disk_bytes_written{device=~\"($device_id)\", instance=~\"($osd_servers).*\"}[5m])\n) and on (instance, device) ceph_disk_occupation{instance=~\"($osd_servers).*\", device=~\"($device_id)\"})",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 1,
+ "legendFormat": "{{device}}",
+ "refId": "A",
+ "step": 10,
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "$osd_servers Throughput by Disk",
+ "tooltip": {
+ "shared": true,
+ "sort": 2,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "decbytes",
+ "label": "",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {
+ "interrupt": "#447EBC",
+ "steal": "#6D1F62",
+ "system": "#890F02",
+ "user": "#3F6833",
+ "wait": "#C15C17"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "description": "Shows the CPU breakdown. When multiple servers are selected, only the first host's cpu data is shown",
+ "fill": 3,
+ "gridPos": {
+ "h": 7,
+ "w": 8,
+ "x": 0,
+ "y": 24
+ },
+ "id": 9,
+ "legend": {
+ "alignAsTable": false,
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 12,
+ "nullPointMode": "connected",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "repeat": null,
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "sum by (mode) (\n irate(node_cpu{instance=~\"($osd_servers).*\", mode=~\"(irq|nice|softirq|steal|system|user|iowait)\"}[5m])\n) / scalar(\n sum(irate(node_cpu{instance=~\"($osd_servers).*\"}[5m]))\n) * 100",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "{{mode}}",
+ "refId": "A",
+ "step": 10,
+ "textEditor": true
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "$osd_servers CPU Utilisation",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "",
+ "logBase": 1,
+ "max": "100",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {
+ "Available": "#508642",
+ "Free": "#508642",
+ "Total": "#bf1b00",
+ "Used": "#bf1b00",
+ "total": "#bf1b00",
+ "used": "#0a50a1"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "gridPos": {
+ "h": 7,
+ "w": 8,
+ "x": 8,
+ "y": 24
+ },
+ "id": 14,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "alias": "total",
+ "color": "#bf1b00",
+ "fill": 0,
+ "linewidth": 2,
+ "stack": false
+ }
+ ],
+ "spaceLength": 10,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "sum(node_memory_MemTotal{instance=~\"[[osd_servers]].*\"}) - (\n sum(node_memory_MemFree{instance=~\"[[osd_servers]].*\"}) + \n sum(node_memory_Cached{instance=~\"[[osd_servers]].*\"}) + \n sum(node_memory_Buffers{instance=~\"[[osd_servers]].*\"}) +\n sum(node_memory_Slab{instance=~\"[[osd_servers]].*\"})\n )\n \n",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "used",
+ "refId": "D"
+ },
+ {
+ "expr": "sum(node_memory_MemFree{instance=~\"[[osd_servers]].*\"}) ",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "Free",
+ "refId": "A"
+ },
+ {
+ "expr": "sum(node_memory_Cached{instance=~\"[[osd_servers]].*\"}) + \nsum(node_memory_Buffers{instance=~\"[[osd_servers]].*\"}) +\nsum(node_memory_Slab{instance=~\"[[osd_servers]].*\"}) \n",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "buffers/cache",
+ "refId": "C"
+ },
+ {
+ "expr": "sum(node_memory_MemTotal{instance=~\"[[osd_servers]].*\"})",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 1,
+ "legendFormat": "total",
+ "refId": "B"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "RAM Usage",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "fill": 1,
+ "gridPos": {
+ "h": 7,
+ "w": 8,
+ "x": 16,
+ "y": 24
+ },
+ "id": 10,
+ "legend": {
+ "alignAsTable": false,
+ "avg": false,
+ "current": false,
+ "hideZero": true,
+ "max": false,
+ "min": false,
+ "rightSide": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "minSpan": 12,
+ "nullPointMode": "connected",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "sum by (device) (irate(node_network_receive_bytes{instance=~\"($osd_servers).*\", device=~\"(eth|en|bond|ib|mlx|p).*\"}[5m]))",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "{{device}}.rx",
+ "refId": "A",
+ "step": 10,
+ "textEditor": true
+ },
+ {
+ "expr": "sum by (device) (irate(node_network_transmit_bytes{instance=~\"($osd_servers).*\", device=~\"(eth|en|bond|ib|mlx|p).*\"}[5m]))",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "{{device}}.tx",
+ "refId": "B",
+ "step": 10
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "$osd_servers Network Load",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "decbytes",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ }
+ ],
+ "refresh": "10s",
+ "schemaVersion": 16,
+ "style": "dark",
+ "tags": [
+ "overview"
+ ],
+ "templating": {
+ "list": [
+ {
+ "allValue": null,
+ "current": {},
+ "datasource": null,
+ "hide": 0,
+ "includeAll": true,
+ "label": "OSD Host Name",
+ "multi": false,
+ "name": "osd_servers",
+ "options": [],
+ "query": "label_values(ceph_disk_occupation, instance)",
+ "refresh": 1,
+ "regex": "([^.]*).*",
+ "sort": 3,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ },
+ {
+ "allValue": null,
+ "current": {},
+ "datasource": null,
+ "hide": 0,
+ "includeAll": true,
+ "label": "Disk Name",
+ "multi": true,
+ "name": "device_id",
+ "options": [],
+ "query": "ceph_disk_occupation",
+ "refresh": 1,
+ "regex": "/device=\"([^\"]*)\"/",
+ "sort": 0,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ },
+ {
+ "allValue": null,
+ "current": {
+ "selected": true,
+ "text": "60",
+ "value": "60"
+ },
+ "hide": 2,
+ "includeAll": false,
+ "label": null,
+ "multi": false,
+ "name": "max_devices",
+ "options": [
+ {
+ "selected": true,
+ "text": "60",
+ "value": "60"
+ }
+ ],
+ "query": "60",
+ "type": "custom"
+ }
+ ]
+ },
+ "time": {
+ "from": "now-1h",
+ "to": "now"
+ },
+ "timepicker": {
+ "refresh_intervals": [
+ "5s",
+ "10s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ],
+ "time_options": [
+ "5m",
+ "15m",
+ "1h",
+ "6h",
+ "12h",
+ "24h",
+ "2d",
+ "7d",
+ "30d"
+ ]
+ },
+ "timezone": "browser",
+ "title": "OSD Node Detail",
+ "version": 16
+}
--- /dev/null
+import pytest
+
+from .util import TestDashboards, get_dashboards
+
+
+def walk(obj, callback, parent_key=None, path=None):
+ if path is None:
+ path = '.'
+ if isinstance(obj, dict):
+ for key, value in obj.items():
+ walk(
+ value,
+ callback,
+ parent_key=key,
+ path='{}["{}"]'.format(path, key),
+ )
+ elif isinstance(obj, list):
+ for i in range(len(obj)):
+ walk(
+ obj[i],
+ callback,
+ parent_key=parent_key,
+ path='{}[{}]'.format(path, i),
+ )
+ else:
+ callback(obj, parent_key, path)
+
+
+class TestMgrDashboards(TestDashboards):
+ dashboards = get_dashboards()
+
+ @pytest.mark.parametrize("name", dashboards.keys())
+ def test_type(self, name):
+ assert name
+ obj = self.dashboards[name]
+ assert type(obj) is dict
+
+ @pytest.mark.parametrize("name", dashboards.keys())
+ def test_no_collectd(self, name):
+ def test(item, pkey, path):
+ if type(item) in (basestring, unicode):
+ assert 'collectd' not in item
+ walk(self.dashboards[name], test)
+
+ @pytest.mark.parametrize("name", dashboards.keys())
+ def test_no_ds_local(self, name):
+ def test(item, pkey, path):
+ if type(item) in (basestring, unicode):
+ assert '${DS_LOCAL}' not in item
+ walk(self.dashboards[name], test)
+
+ @pytest.mark.parametrize("name", dashboards.keys())
+ def test_no_influxdb_dstype(self, name):
+ def test(item, pkey, path):
+ if pkey == 'dsType' and type(item) in (basestring, unicode):
+ assert 'influxdb' not in item
+ walk(self.dashboards[name], test)
+
+ @pytest.mark.parametrize("name", dashboards.keys())
+ def test_no_influxdb_query(self, name):
+ def test(item, pkey, path):
+ if pkey == 'query':
+ assert 'SELECT' not in item
+ assert 'FROM' not in item
+ assert 'WHERE' not in item
+ walk(self.dashboards[name], test)
--- /dev/null
+../../tests/util.py
\ No newline at end of file
--- /dev/null
+import os
+import json
+
+
+def get_dashboards():
+ dashboards = dict()
+ db_dir = os.path.realpath(
+ os.path.join(
+ os.path.dirname(__file__),
+ '..',
+ )
+ )
+ for item in os.listdir(db_dir):
+ if item.endswith('.json'):
+ db_path = os.path.join(
+ os.path.dirname(__file__),
+ '..',
+ item,
+ )
+ dashboards[item] = json.loads(
+ open(db_path).read()
+ )
+ return dashboards
+
+
+class TestDashboards(object):
+ dashboards = None
--- /dev/null
+version: '2'
+
+services:
+ grafana:
+ image: docker.io/grafana/grafana:latest
+ container_name: grafana
+ ports:
+ - "3000:3000"
+ volumes:
+ - /opt/docker/grafana/etc:/etc/grafana:Z
+ - /opt/docker/grafana/data:/var/lib/grafana:Z
+ depends_on:
+ - graphite
+ graphite:
+ image: docker.io/abezhenar/graphite-centos7
+ container_name: graphite
+ ports:
+ - "80:80"
+ - "2003:2003"
+ - "2004:2004"
+ - "7002:7002"
+ volumes:
+ - /opt/docker/graphite:/var/lib/graphite/storage/whisper:Z
--- /dev/null
+# Hostname "obj-mon-1.storage.lab"
+BaseDir "/var/lib/collectd"
+PluginDir "/usr/lib64/collectd"
+
+TypesDB "/usr/share/collectd/types.db"
+
+Interval 10
+Timeout 5
+ReadThreads 5
+
+<LoadPlugin python>
+ Globals true
+</LoadPlugin>
+
+LoadPlugin "threshold"
+LoadPlugin "aggregation"
+
+Include "/etc/collectd.d/*.conf"
--- /dev/null
+LoadPlugin "python"
+
+<Plugin python>
+ ModulePath "/usr/lib64/collectd/cephmetrics"
+ LogTraces true
+ Import "cephmetrics"
+ <Module cephmetrics>
+ ClusterName "ceph"
+ </Module>
+</Plugin>
--- /dev/null
+LoadPlugin cpu
+
+<Plugin cpu>
+ ValuesPercentage true
+ ReportByCpu false
+</Plugin>
+
+<Plugin "threshold">
+ <Plugin "cpu">
+ <Type "percent">
+ Instance user
+ FailureMax 90
+ WarningMax 80
+ </Type>
+ </Plugin>
+</Plugin>
+
--- /dev/null
+LoadPlugin memory
+
+<Plugin "memory">
+ ValuesPercentage true
+</Plugin>
+
+<Plugin "aggregation">
+ <Aggregation>
+ Plugin "memory"
+ Type "memory"
+
+ GroupBy "Host"
+
+ CalculateSum true
+ </Aggregation>
+</Plugin>
+
+<Plugin "threshold">
+ <Plugin "memory">
+ <Type "percent">
+ Instance used
+ FailureMax 90
+ WarningMax 80
+ </Type>
+ </Plugin>
+</Plugin>
--- /dev/null
+LoadPlugin interface
--- /dev/null
+LoadPlugin "write_graphite"
+<Plugin write_graphite>
+ <Node "ceph_grafana">
+ Host "graphite.storage.lab"
+ Port "2003"
+ Protocol "tcp"
+# ReconnectInterval 0
+ LogSendErrors true
+ Prefix "collectd."
+# Postfix "collectd"
+ StoreRates true
+ AlwaysAppendDS false
+ EscapeCharacter "_"
+ PreserveSeparator true
+ SeparateInstances true
+# DropDuplicateFields true
+ </Node>
+</Plugin>
+
--- /dev/null
+[server]
+root_url = %(protocol)s://%(domain)s:%(http_port)s/
+
+[users]
+default_theme = light
--- /dev/null
+From ae1da1bb2db973756ffeb838861649fcd97d5975 Mon Sep 17 00:00:00 2001
+From: Boris Ranto <branto@redhat.com>
+Date: Tue, 9 Jul 2019 20:39:07 +0200
+Subject: [PATCH] ansible: Disable devel_mode
+
+Signed-off-by: Boris Ranto <branto@redhat.com>
+---
+ ansible/roles/cephmetrics-common/tasks/merge_vars.yml | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/ansible/roles/cephmetrics-common/tasks/merge_vars.yml b/ansible/roles/cephmetrics-common/tasks/merge_vars.yml
+index acfdde0..2f8a979 100644
+--- a/ansible/roles/cephmetrics-common/tasks/merge_vars.yml
++++ b/ansible/roles/cephmetrics-common/tasks/merge_vars.yml
+@@ -3,3 +3,9 @@
+ set_fact: {"{{ item }}": "{% if vars[item] is not defined %}{{ defaults[item] }}{% elif vars[item] is mapping %}{{ defaults[item]|combine(vars[item]|default({})) }}{% else %}{{ vars[item] }}{% endif %}"} # noqa 204
+ with_items: "{{ defaults.keys() }}"
+ no_log: true
++
++- name: Make sure devel_mode is not on
++ assert:
++ that:
++ - devel_mode == False
++ msg: "Devel mode is not supported in the downstream builds"
+--
+2.20.1
+
--- /dev/null
+policy_module(cephmetrics, 1.1.0)
+
+require {
+ type bin_t;
+ type collectd_t;
+ type ceph_t;
+ type ceph_exec_t;
+ type ceph_var_run_t;
+ type ceph_var_lib_t;
+ type fixed_disk_device_t;
+ type tmp_t;
+ class unix_stream_socket connectto;
+ class dir read;
+ class file getattr;
+ class capability2 block_suspend;
+ class lnk_file read;
+ class unix_stream_socket connectto;
+ class dir { read write };
+ class capability2 block_suspend;
+ class file { getattr execute execute_no_trans open read write };
+}
+
+#============= collectd_t ==============
+
+allow collectd_t bin_t:file { execute execute_no_trans };
+#!!!! This avc can be allowed using the boolean 'daemons_enable_cluster_mode'
+allow collectd_t ceph_t:unix_stream_socket connectto;
+allow collectd_t ceph_exec_t:file { execute execute_no_trans open read };
+allow collectd_t ceph_var_run_t:dir read;
+allow collectd_t ceph_var_lib_t:dir read;
+allow collectd_t ceph_var_lib_t:file { getattr open read };
+allow collectd_t ceph_var_lib_t:lnk_file { getattr open read };
+allow collectd_t fixed_disk_device_t:blk_file getattr;
+allow collectd_t self:capability2 block_suspend;
+allow collectd_t var_log_t:dir { add_name write };
+allow collectd_t var_log_t:file create;
+corecmd_exec_shell(collectd_t)
+files_list_tmp(collectd_t)
+libs_exec_ldconfig(collectd_t)
+libs_manage_lib_dirs(collectd_t)
+libs_manage_lib_files(collectd_t)
+logging_write_generic_logs(collectd_t)
--- /dev/null
+{
+ "name":"Local",
+ "type":"graphite",
+ "url":"http://192.168.1.52",
+ "access":"proxy",
+ "basicAuth":false,
+ "isDefault":true
+}
--- /dev/null
+#!/usr/bin/env python
+
+from collectors.osd import OSDs
+from collectors.common import flatten_dict
+
+import time
+
+def main():
+ o = OSDs('ceph')
+ ctr = 0
+ while ctr < 30:
+
+ s = o.get_stats()
+ print(s)
+ print(flatten_dict(s))
+
+ time.sleep(1)
+ ctr += 1
+
+if __name__ == "__main__":
+ main()
--- /dev/null
+[tox]
+skipsdist = True
+envlist=ansible-lint,ansible-syntax,flake8,dashboards
+
+[testenv:ansible-lint]
+install_command = pip install --upgrade {opts} {packages}
+deps=
+ ansible-lint
+commands=ansible-lint -x ANSIBLE0010,ANSIBLE0012,ANSIBLE0017,701 ansible/playbook.yml
+
+[testenv:ansible-syntax]
+install_command = pip install --upgrade {opts} {packages}
+deps=
+ ansible
+changedir=ansible
+commands=
+ ansible-playbook -i '127.0.0.1,' playbook.yml --syntax-check -vv
+
+[testenv:flake8]
+install_command = pip install --upgrade {opts} {packages}
+deps=
+ flake8
+commands=flake8 --select=F,E9 {posargs:*.py collectors tests}
+
+# Integration tests must operate against a live deployment. To run, simply:
+# tox -e integration /path/to/inventory
+# NOTE: A current limitation of these tests is that they assume that defaults
+# were used for things like ports, usernames, etc. They do, however,
+# support devel_mode=True/False.
+[testenv:integration]
+install_command = pip install --upgrade {opts} {packages}
+deps=
+ ansible
+ pytest
+ pytest-xdist
+ testinfra
+changedir=ansible
+commands=
+ py.test -v -n auto --connection=ansible --ansible-inventory {posargs} ./roles/
+
+[testenv:dashboards]
+install_command = pip install --upgrade {opts} {packages}
+deps=
+ pytest
+changedir=dashboards
+commands=
+ py.test -v ./