{ "ID": "", "Name": "Zenoss.core", "Version": "6.2.1", "Description": "Zenoss Core", "Services": [ { "Name": "Zenoss.core", "Title": "zproxy", "Version": "6.2.1", "Command": "/bin/supervisord -n -c /etc/zproxy/zproxy_supervisor.conf", "Description": "Zenoss Core", "Environment": null, "Tags": [ "daemon" ], "ImageID": "zenoss/core_6.2:6.2.1_1", "Instances": { "Min": 1, "Max": 0, "Default": 0 }, "ChangeOptions": null, "Launch": "auto", "HostPolicy": "", "Hostname": "", "Privileged": false, "ConfigFiles": { "/etc/zproxy/zproxy_supervisor.conf": { "Filename": "/etc/zproxy/zproxy_supervisor.conf", "Owner": "zenoss:zenoss", "Permissions": "644", "Content": "[supervisord]\nnodaemon=true\nlogfile = /opt/zenoss/log/zproxy_supervisord.log\n\n[unix_http_server]\nfile=/tmp/supervisor.sock\n\n[supervisorctl]\nserverurl=unix:///tmp/supervisor.sock ; use a unix:// URL for a unix socket\n\n[rpcinterface:supervisor]\nsupervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface\n\n[program:redis]\ncommand=redis-server /etc/redis.conf\nautorestart=true\nautostart=true\nstartsecs=5\npriority=1\n\n[program:zproxy]\ncommand=/opt/zenoss/zproxy/sbin/zproxy start\ndirectory=/opt/zenoss\nautorestart=true\nautostart=true\nstartsecs=5\npriority=1\n\n[program:zproxy_metrics]\ncommand=/usr/bin/python /opt/zenoss/bin/metrics/zenossStatsView.py\nautorestart=true\nautostart=true\nstartsecs=5\n\n; logging\nredirect_stderr=true\nstdout_logfile_maxbytes=10MB\nstdout_logfile_backups=10\nstdout_logfile=/opt/zenoss/log/%(program_name)s.log\n" }, "/opt/zenoss/zproxy/conf/zproxy-nginx.conf": { "Filename": "/opt/zenoss/zproxy/conf/zproxy-nginx.conf", "Owner": "zenoss:zenoss", "Permissions": "644", "Content": "##############################################################################\n#\n# Copyright (C) Zenoss, Inc. 2013, all rights reserved.\n#\n# This content is made available according to terms specified in\n# License.zenoss under the directory where your Zenoss product is installed.\n#\n##############################################################################\n\nworker_processes 2;\nerror_log /opt/zenoss/zproxy/logs/error.log error;\ndaemon off;\n\nuser zenoss;\n\nevents {\n worker_connections 1024;\n}\n\nhttp {\n\n access_log off;\n error_log /opt/zenoss/zproxy/logs/error.log error;\n\n lua_package_path \"./lib/lua/5.1/?.lua;;\";\n lua_package_cpath \"./lib/?.so;./lib/lua/5.1/?.so;;\";\n # Backend servers that did not respond\n lua_shared_dict deads 10m;\n\n proxy_set_header Host $http_host;\n proxy_set_header X-Forwarded-Port $server_port;\n proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n proxy_set_header X-Forwarded-Proto $scheme;\n proxy_set_header X-Forwarded-Protocol $scheme;\n proxy_set_header X-Real-IP $remote_addr;\n\n # Force cookies to HTTPOnly\n proxy_cookie_path / \"/; HttpOnly\";\n\n proxy_read_timeout 600;\n proxy_connect_timeout 10;\n\n proxy_temp_path /opt/zenoss/var/zproxy/proxy_temp;\n client_body_temp_path /opt/zenoss/var/zproxy/client_body_temp;\n\n gzip on;\n gzip_comp_level 9;\n gzip_proxied any;\n gzip_min_length 1000;\n gzip_buffers 4 32k;\n gzip_types text/css text/plain application/atom+xml application/x-javascript application/javascript text/javascript;\n gzip_disable msie6;\n gzip_vary on;\n\n resolver 8.8.8.8;\n\n # this is needed to send the correct content type for things like css\n include mime.types;\n\n upstream zopes {\n least_conn;\n include zope-upstreams.conf;\n keepalive 64;\n }\n\n pagespeed ListOutstandingUrlsOnError on;\n pagespeed RewriteDeadlinePerFlushMs 100;\n pagespeed RateLimitBackgroundFetches off;\n pagespeed FileCachePath /opt/zenoss/var/zproxy/ngx_pagespeed_cache;\n pagespeed ImageMaxRewritesAtOnce -1;\n\n server {\n\n listen 8080;\n set $myhost $http_host;\n\n pagespeed on;\n pagespeed RewriteLevel CoreFilters;\n pagespeed EnableFilters add_instrumentation,move_css_above_scripts,move_css_to_head,rewrite_style_attributes,in_place_optimize_for_browser,dedup_inlined_images,prioritize_critical_css;\n pagespeed RespectXForwardedProto on;\n pagespeed AvoidRenamingIntrospectiveJavascript off;\n pagespeed MaxCombinedJsBytes -1;\n pagespeed JsInlineMaxBytes 102400;\n pagespeed StatisticsPath \"/ngx_pagespeed_statistics\";\n pagespeed Disallow \"*/api/metrics*\";\n pagespeed Disallow \"*/api/performance*\";\n pagespeed Disallow \"*/ws/metrics*\";\n pagespeed Disallow \"*/ping/status*\";\n pagespeed Disallow \"*/static/*\";\n\n # Ensure requests for pagespeed optimized resources go to the pagespeed handler\n # and no extraneous headers get set.\n location ~ \"\\.pagespeed\\.([a-z]\\.)?[a-z]{2}\\.[^.]{10}\\.[^.]+\" {\n add_header \"\" \"\";\n }\n location ~ \"^/pagespeed_static/\" { }\n location ~ \"^/ngx_pagespeed_beacon$\" { }\n location ~ \"^/ngx_pagespeed_statistics\" {}\n\n include zope-static.conf;\n\n location / {\n proxy_pass http://zopes;\n proxy_set_header Host $myhost;\n proxy_http_version 1.1;\n add_header X-Frame-Options SAMEORIGIN;\n add_header X-XSS-Protection \"1; mode=block\";\n }\n\n location ^~ /ping/ {\n include zenoss-zapp-ping-nginx.cfg;\n proxy_no_cache 1;\n proxy_cache_bypass 1;\n proxy_set_header Host $myhost;\n proxy_method HEAD;\n }\n\n location ^~ /api/controlplane/kibana {\n set $http_ws true;\n access_by_lua_file 'conf/zenoss-require-auth.lua';\n proxy_pass http://127.0.0.1:5601;\n proxy_http_version 1.1;\n proxy_set_header Upgrade $http_upgrade;\n proxy_set_header Connection \"upgrade\";\n proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n proxy_set_header X-Forwarded-Proto $scheme;\n rewrite /api/controlplane/kibana$ / break;\n rewrite /api/controlplane/kibana/(.*)$ /$1 break;\n }\n\n # Legacy apps that don't do any auth validation\n # Should 'include zenoss-legacy-nginx.cfg;'\n\n # /api is for zapp rest APIs\n location ^~ /api/ {\n # Zapps do their own auth validation\n include zenoss-zapp-nginx.cfg;\n proxy_set_header Host $myhost;\n }\n\n # /ws is for zapp websockets\n location ^~ /ws/ {\n set $http_ws true;\n # Zapps do their own auth validation\n include zenoss-zapp-nginx.cfg;\n proxy_set_header Host $myhost;\n proxy_http_version 1.1;\n proxy_set_header Upgrade $http_upgrade;\n proxy_set_header Connection \"upgrade\";\n }\n\n # /static is for static files\n location ^~ /static/ {\n # Static data should always be allowed\n include zenoss-authenticated-nginx.cfg;\n proxy_http_version 1.1;\n }\n\n # /zauth is for authentication and authorization\n location ^~ /zauth/ {\n # ZAuth requests should always be allowed\n include zenoss-authenticated-nginx.cfg;\n proxy_set_header Host $myhost;\n proxy_http_version 1.1;\n proxy_set_header Accept-Encoding \"\";\n }\n\n }\n}\n" } }, "Context": { "ZenPack.Default.RAMCommitment": "256M", "ZenPack.Default.WorkerArgs": "", "centralquery.ratecutoff": -1, "global.conf.amqpadminport": "55672", "global.conf.amqpadminusessl": "0", "global.conf.amqphost": "127.0.0.1", "global.conf.amqppassword": "zenoss", "global.conf.amqpport": "5672", "global.conf.amqpuser": "zenoss", "global.conf.amqpusessl": "0", "global.conf.amqpvhost": "/zenoss", "global.conf.zauth-password": "MY_PASSWORD", "global.conf.zauth-username": "zenoss_system", "global.conf.zep-admin-password": "", "global.conf.zep-admin-user": "root", "global.conf.zep-db": "zenoss_zep", "global.conf.zep-db-type": "mysql", "global.conf.zep-host": "127.0.0.1", "global.conf.zep-password": "zenoss", "global.conf.zep-port": "3306", "global.conf.zep-uri": "http://127.0.0.1:8084", "global.conf.zep-user": "zenoss", "global.conf.zodb-admin-password": "", "global.conf.zodb-admin-user": "root", "global.conf.zodb-cache-max-object-size": "1048576", "global.conf.zodb-cacheservers": "127.0.0.1:11211", "global.conf.zodb-cachesize": "1000", "global.conf.zodb-db": "zodb", "global.conf.zodb-db-type": "mysql", "global.conf.zodb-host": "127.0.0.1 ", "global.conf.zodb-password": "zenoss", "global.conf.zodb-port": "3306", "global.conf.zodb-user": "zenoss", "tsd.storage.enable_compaction": "False" }, "Endpoints": [ { "Name": "zproxy", "Purpose": "export", "Protocol": "tcp", "PortNumber": 8080, "PortTemplate": "", "VirtualAddress": "", "Application": "zproxy", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": [ { "Name": "zenoss5", "Enabled": true }, { "Name": "zenoss", "Enabled": false } ], "PortList": null }, { "Name": "zope", "Purpose": "import_all", "Protocol": "tcp", "PortNumber": 9080, "PortTemplate": "", "VirtualAddress": "", "Application": "zope", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "metric_consumer", "Purpose": "import", "Protocol": "tcp", "PortNumber": 8443, "PortTemplate": "", "VirtualAddress": "", "Application": "metric_consumer", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "zauth", "Purpose": "import", "Protocol": "tcp", "PortNumber": 9180, "PortTemplate": "", "VirtualAddress": "", "Application": "zauth", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "central_query", "Purpose": "import", "Protocol": "tcp", "PortNumber": 8888, "PortTemplate": "", "VirtualAddress": "", "Application": "central_query", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null } ], "Services": [ { "Name": "Infrastructure", "Title": "", "Version": "", "Command": "", "Description": "", "Environment": null, "Tags": [ "zenoss-infrastructure" ], "ImageID": "", "Instances": { "Min": 0, "Max": 0, "Default": 0 }, "ChangeOptions": null, "Launch": "auto", "HostPolicy": "", "Hostname": "", "Privileged": false, "ConfigFiles": {}, "Context": null, "Endpoints": null, "Services": [ { "Name": "memcached-session", "Title": "", "Version": "", "Command": "${ZENHOME:-/opt/zenoss}/bin/zenmemcached", "Description": "Dedicated memcached instance for zope sessions", "Environment": null, "Tags": [ "daemon" ], "ImageID": "zenoss/core_6.2:6.2.1_1", "Instances": { "Min": 1, "Max": 0, "Default": 0 }, "ChangeOptions": null, "Launch": "auto", "HostPolicy": "", "Hostname": "", "Privileged": false, "ConfigFiles": { "/etc/sysconfig/memcached": { "Filename": "/etc/sysconfig/memcached", "Owner": "root:root", "Permissions": "0644", "Content": "PORT=\"11211\"\nUSER=\"nobody\"\nMAXCONN=\"1024\"\nCACHESIZE=\"{{percentScale .RAMCommitment 0.9 | bytesToMB}}\"\n{{ $size := (getContext . \"global.conf.zodb-cache-max-object-size\") }}\nOPTIONS=\"-v -R 4096 -I {{if $size}} {{$size}} {{else}} 1048576 {{end}}\"\n" } }, "Context": null, "Endpoints": [ { "Name": "memcached-session", "Purpose": "export", "Protocol": "tcp", "PortNumber": 11211, "PortTemplate": "", "VirtualAddress": "", "Application": "memcached-session", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null } ], "Services": [], "LogFilters": null, "Volumes": null, "LogConfigs": null, "Snapshot": { "Pause": "", "Resume": "" }, "RAMCommitment": "1G", "CPUCommitment": 1, "DisableShell": false, "Runs": null, "Commands": null, "Actions": null, "HealthChecks": { "answering": { "Script": "{ echo stats; sleep 1; } | nc 127.0.0.1 11211 | grep -q uptime", "Timeout": 0, "Interval": 5, "Tolerance": 0 } }, "Prereqs": null, "MonitoringProfile": { "MetricConfigs": null, "GraphConfigs": null, "ThresholdConfigs": null }, "MemoryLimit": 0, "CPUShares": 0, "PIDFile": "", "StartLevel": 1, "EmergencyShutdownLevel": 0 }, { "Name": "opentsdb", "Title": "", "Version": "", "Command": "/bin/sh -c \"{{ if eq .InstanceID 0 }} export CREATE_TABLES=1;{{ end }} /opt/opentsdb/start-opentsdb.sh {{with $zks := (child (child (parent .) \"HBase\") \"ZooKeeper\").Instances }}{{ range (each $zks) }}localhost:{{plus 2181 .}}{{if ne (plus 1 .) $zks}},{{end}}{{end}}{{end}}\"", "Description": "OpenTSDB server", "Environment": [ "TSDB_JAVA_MEM_MB=-Xmx{{bytesToMB .RAMCommitment}}m" ], "Tags": [ "daemon" ], "ImageID": "zenoss/opentsdb:24.0.8", "Instances": { "Min": 1, "Max": 0, "Default": 0 }, "ChangeOptions": null, "Launch": "auto", "HostPolicy": "", "Hostname": "", "Privileged": false, "ConfigFiles": { "/opt/opentsdb/src/logback.xml": { "Filename": "/opt/opentsdb/src/logback.xml", "Owner": "root:root", "Permissions": "0644", "Content": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n\u003cconfiguration\u003e\n \u003c!--\u003cjmxConfigurator/\u003e--\u003e\n \u003cappender name=\"STDOUT\" class=\"ch.qos.logback.core.ConsoleAppender\"\u003e\n \u003cencoder\u003e\n \u003cpattern\u003e\n %date{ISO8601} %-5level [%thread] %logger{0}: %msg%n\n \u003c/pattern\u003e\n \u003c/encoder\u003e\n \u003c/appender\u003e\n\n \u003c!-- This appender is responsible for the /logs endpoint. It maintains MaxSize\n lines of the log file in memory. If you don't need the endpoint, disable\n this appender (by removing the line \"\u003cappender-ref ref=\"CYCLIC\"/\u003e\" in\n the \"root\" section below) to save some cycles and memory. --\u003e\n \u003cappender name=\"CYCLIC\" class=\"ch.qos.logback.core.read.CyclicBufferAppender\"\u003e\n \u003cMaxSize\u003e1024\u003c/MaxSize\u003e\n \u003c/appender\u003e\n\n \u003c!-- Appender to write OpenTSDB data to a set of rotating log files --\u003e\n \u003cappender name=\"FILE\" class=\"ch.qos.logback.core.rolling.RollingFileAppender\"\u003e\n \u003cfile\u003e/var/log/opentsdb/opentsdb.log\u003c/file\u003e\n \u003cappend\u003etrue\u003c/append\u003e\n\n \u003crollingPolicy class=\"ch.qos.logback.core.rolling.FixedWindowRollingPolicy\"\u003e\n \u003cfileNamePattern\u003e/var/log/opentsdb/opentsdb.log.%i\u003c/fileNamePattern\u003e\n \u003cminIndex\u003e1\u003c/minIndex\u003e\n \u003cmaxIndex\u003e3\u003c/maxIndex\u003e\n \u003c/rollingPolicy\u003e\n\n \u003ctriggeringPolicy class=\"ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy\"\u003e\n \u003cmaxFileSize\u003e128MB\u003c/maxFileSize\u003e\n \u003c/triggeringPolicy\u003e\n\n \u003cencoder\u003e\n \u003cpattern\u003e%date{ISO8601} %-5level [%thread] %logger{0}: %msg%n\u003c/pattern\u003e\n \u003c/encoder\u003e\n \u003c/appender\u003e\n\n \u003c!-- Appender for writing full and completed queries to a log file. To use it, make\n sure to set the \"level\" to \"INFO\" in QueryLog below. --\u003e\n \u003cappender name=\"QUERY_LOG\" class=\"ch.qos.logback.core.rolling.RollingFileAppender\"\u003e\n \u003cfile\u003e/var/log/opentsdb/queries.log\u003c/file\u003e\n \u003cappend\u003etrue\u003c/append\u003e\n\n \u003crollingPolicy class=\"ch.qos.logback.core.rolling.FixedWindowRollingPolicy\"\u003e\n \u003cfileNamePattern\u003e/var/log/opentsdb/queries.log.%i\u003c/fileNamePattern\u003e\n \u003cminIndex\u003e1\u003c/minIndex\u003e\n \u003cmaxIndex\u003e4\u003c/maxIndex\u003e\n \u003c/rollingPolicy\u003e\n\n \u003ctriggeringPolicy class=\"ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy\"\u003e\n \u003cmaxFileSize\u003e128MB\u003c/maxFileSize\u003e\n \u003c/triggeringPolicy\u003e\n \u003cencoder\u003e\n \u003cpattern\u003e%date{ISO8601} %-5level [%thread] %logger{0}: %msg%n\u003c/pattern\u003e\n \u003c/encoder\u003e\n \u003c/appender\u003e\n\n \u003c!-- Per class logger levels --\u003e\n \u003clogger name=\"QueryLog\" level=\"OFF\" additivity=\"false\"\u003e\n \u003cappender-ref ref=\"QUERY_LOG\"/\u003e\n \u003c/logger\u003e\n \u003clogger name=\"org.apache.zookeeper\" level=\"INFO\"/\u003e\n \u003c!-- ZEN-26681 --\u003e\n \u003clogger name=\"org.hbase.async\" level=\"WARN\"/\u003e\n \u003clogger name=\"com.stumbleupon.async\" level=\"WARN\"/\u003e\n\n \u003c!-- Fallthrough root logger and router --\u003e\n \u003croot level=\"INFO\"\u003e\n \u003cappender-ref ref=\"STDOUT\"/\u003e\n \u003cappender-ref ref=\"CYCLIC\"/\u003e\n \u003cappender-ref ref=\"FILE\"/\u003e\n \u003c/root\u003e\n\u003c/configuration\u003e\n" }, "/opt/zenoss/etc/opentsdb/opentsdb.conf": { "Filename": "/opt/zenoss/etc/opentsdb/opentsdb.conf", "Owner": "root:root", "Permissions": "0644", "Content": "tsd.core.auto_create_metrics = True\ntsd.core.uid.random_metrics = True\ntsd.storage.hbase.data_table = {{(parent (parent .)).ID}}-tsdb\ntsd.storage.hbase.uid_table = {{(parent (parent .)).ID}}-tsdb-uid\ntsd.storage.hbase.meta_table = {{(parent (parent .)).ID}}-tsdb-meta\ntsd.storage.hbase.tree_table = {{(parent (parent .)).ID}}-tsdb-tree\ntsd.storage.fix_duplicates = True\ntsd.http.cachedir = /tmp/tsd\ntsd.http.staticroot = /opt/opentsdb/build/staticroot\ntsd.network.port = 4242\ntsd.storage.hbase.zk_quorum = {{with $zks := (child (child (parent .) \"HBase\") \"ZooKeeper\").Instances }}{{ range (each $zks) }}127.0.0.1:{{plus 2181 .}}{{if ne (plus 1 .) $zks}},{{end}}{{end}}{{end}}\ntsd.storage.enable_compaction = {{(getContext . \"tsd.storage.enable_compaction\")}}\ntsd.query.skip_unresolved_tagvs = True\n" } }, "Context": null, "Endpoints": [ { "Name": "opentsdb-reader", "Purpose": "export", "Protocol": "tcp", "PortNumber": 4242, "PortTemplate": "", "VirtualAddress": "", "Application": "opentsdb-reader", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": [ { "Name": "opentsdb", "Enabled": false } ], "PortList": null }, { "Name": "opentsdb-writer", "Purpose": "export", "Protocol": "tcp", "PortNumber": 4242, "PortTemplate": "", "VirtualAddress": "", "Application": "opentsdb-writer", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "zookeeper-client", "Purpose": "import_all", "Protocol": "tcp", "PortNumber": 2181, "PortTemplate": "", "VirtualAddress": "", "Application": "zookeeper-client", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "hbase-master", "Purpose": "import", "Protocol": "", "PortNumber": 0, "PortTemplate": "", "VirtualAddress": "", "Application": "hbase-master-.*", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "hbase-regionserver", "Purpose": "import_all", "Protocol": "tcp", "PortNumber": 60200, "PortTemplate": "", "VirtualAddress": "", "Application": "hbase-regionserver", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null } ], "Services": [], "LogFilters": null, "Volumes": null, "LogConfigs": [ { "Path": "/var/log/opentsdb/opentsdb.log", "Type": "opentsdb-reader", "Filters": [ "hbasedaemon" ], "LogTags": null, "IsAudit": false } ], "Snapshot": { "Pause": "", "Resume": "" }, "RAMCommitment": "256M", "CPUCommitment": 1, "DisableShell": false, "Runs": null, "Commands": null, "Actions": null, "HealthChecks": { "answering": { "Script": "wget --timeout=3 --tries=1 -q -O - http://localhost:4242/api/stats", "Timeout": 0, "Interval": 30, "Tolerance": 0 }, "hbase_answering": { "Script": "curl -A 'HMaster rest_answering healthcheck' -o /dev/null -f -s http://localhost:61000/status/cluster", "Timeout": 0, "Interval": 10, "Tolerance": 0 } }, "Prereqs": [ { "Name": "HBase Regionservers up", "Script": "{{with $rss := (child (child (parent .) \"HBase\") \"RegionServer\").Instances }}wget -q -O- http://localhost:61000/status/cluster | grep '{{$rss}} live servers'{{end}}" } ], "MonitoringProfile": { "MetricConfigs": null, "GraphConfigs": null, "ThresholdConfigs": null }, "MemoryLimit": 0, "CPUShares": 0, "PIDFile": "", "StartLevel": 3, "EmergencyShutdownLevel": 0 }, { "Name": "redis", "Title": "", "Version": "", "Command": "/usr/bin/redis-server /etc/redis.conf", "Description": "Redis server", "Environment": null, "Tags": [ "daemon" ], "ImageID": "zenoss/core_6.2:6.2.1_1", "Instances": { "Min": 1, "Max": 0, "Default": 0 }, "ChangeOptions": null, "Launch": "auto", "HostPolicy": "", "Hostname": "", "Privileged": false, "ConfigFiles": { "/etc/redis.conf": { "Filename": "/etc/redis.conf", "Owner": "", "Permissions": "", "Content": "# Redis configuration file example\n\n# Note on units: when memory size is needed, it is possible to specify\n# it in the usual form of 1k 5GB 4M and so forth:\n#\n# 1k =\u003e 1000 bytes\n# 1kb =\u003e 1024 bytes\n# 1m =\u003e 1000000 bytes\n# 1mb =\u003e 1024*1024 bytes\n# 1g =\u003e 1000000000 bytes\n# 1gb =\u003e 1024*1024*1024 bytes\n#\n# units are case insensitive so 1GB 1Gb 1gB are all the same.\n\n# By default Redis does not run as a daemon. Use 'yes' if you need it.\n# Note that Redis will write a pid file in /var/run/redis.pid when daemonized.\ndaemonize no\n\n# When running daemonized, Redis writes a pid file in /var/run/redis.pid by\n# default. You can specify a custom pid file location here.\npidfile /var/run/redis/redis.pid\n\n# Accept connections on the specified port, default is 6379.\n# If port 0 is specified Redis will not listen on a TCP socket.\nport 6379\n\n# If you want you can bind a single interface, if the bind option is not\n# specified all the interfaces will listen for incoming connections.\n#\n# comment out bind as workaround for ZEN-10504\nbind 0.0.0.0\n\n# Specify the path for the unix socket that will be used to listen for\n# incoming connections. There is no default, so Redis will not listen\n# on a unix socket when not specified.\n#\n# unixsocket /tmp/redis.sock\n# unixsocketperm 755\n\n# Close the connection after a client is idle for N seconds (0 to disable)\ntimeout 0\n\n# TCP keepalive.\n#\n# If non-zero, use SO_KEEPALIVE to send TCP ACKs to clients in absence\n# of communication. This is useful for two reasons:\n#\n# 1) Detect dead peers.\n# 2) Take the connection alive from the point of view of network\n# equipment in the middle.\n#\n# On Linux, the specified value (in seconds) is the period used to send ACKs.\n# Note that to close the connection the double of the time is needed.\n# On other kernels the period depends on the kernel configuration.\n#\n# A reasonable value for this option is 60 seconds.\ntcp-keepalive 0\n\n# Specify the server verbosity level.\n# This can be one of:\n# debug (a lot of information, useful for development/testing)\n# verbose (many rarely useful info, but not a mess like the debug level)\n# notice (moderately verbose, what you want in production probably)\n# warning (only very important / critical messages are logged)\nloglevel notice\n\n# Specify the log file name. Also 'stdout' can be used to force\n# Redis to log on the standard output. Note that if you use standard\n# output for logging but daemonize, logs will be sent to /dev/null\nlogfile /var/log/redis/redis.log\n\n# To enable logging to the system logger, just set 'syslog-enabled' to yes,\n# and optionally update the other syslog parameters to suit your needs.\n# syslog-enabled no\n\n# Specify the syslog identity.\n# syslog-ident redis\n\n# Specify the syslog facility. Must be USER or between LOCAL0-LOCAL7.\n# syslog-facility local0\n\n# Set the number of databases. The default database is DB 0, you can select\n# a different one on a per-connection basis using SELECT \u003cdbid\u003e where\n# dbid is a number between 0 and 'databases'-1\ndatabases 16\n\n################################ SNAPSHOTTING #################################\n#\n# Save the DB on disk:\n#\n# save \u003cseconds\u003e \u003cchanges\u003e\n#\n# Will save the DB if both the given number of seconds and the given\n# number of write operations against the DB occurred.\n#\n# In the example below the behaviour will be to save:\n# after 900 sec (15 min) if at least 1 key changed\n# after 300 sec (5 min) if at least 10 keys changed\n# after 60 sec if at least 10000 keys changed\n#\n# Note: you can disable saving at all commenting all the \"save\" lines.\n#\n# It is also possible to remove all the previously configured save\n# points by adding a save directive with a single empty string argument\n# like in the following example:\n#\n# save \"\"\n\nsave 900 1\nsave 300 10\nsave 60 10000\n\n# By default Redis will stop accepting writes if RDB snapshots are enabled\n# (at least one save point) and the latest background save failed.\n# This will make the user aware (in an hard way) that data is not persisting\n# on disk properly, otherwise chances are that no one will notice and some\n# distater will happen.\n#\n# If the background saving process will start working again Redis will\n# automatically allow writes again.\n#\n# However if you have setup your proper monitoring of the Redis server\n# and persistence, you may want to disable this feature so that Redis will\n# continue to work as usually even if there are problems with disk,\n# permissions, and so forth.\nstop-writes-on-bgsave-error yes\n\n# Compress string objects using LZF when dump .rdb databases?\n# For default that's set to 'yes' as it's almost always a win.\n# If you want to save some CPU in the saving child set it to 'no' but\n# the dataset will likely be bigger if you have compressible values or keys.\nrdbcompression yes\n\n# Since version 5 of RDB a CRC64 checksum is placed at the end of the file.\n# This makes the format more resistant to corruption but there is a performance\n# hit to pay (around 10%) when saving and loading RDB files, so you can disable it\n# for maximum performances.\n#\n# RDB files created with checksum disabled have a checksum of zero that will\n# tell the loading code to skip the check.\nrdbchecksum yes\n\n# The filename where to dump the DB\ndbfilename dump.rdb\n\n# The working directory.\n#\n# The DB will be written inside this directory, with the filename specified\n# above using the 'dbfilename' configuration directive.\n# \n# The Append Only File will also be created inside this directory.\n# \n# Note that you must specify a directory here, not a file name.\ndir /var/lib/redis/\n\n################################# REPLICATION #################################\n\n# Master-Slave replication. Use slaveof to make a Redis instance a copy of\n# another Redis server. Note that the configuration is local to the slave\n# so for example it is possible to configure the slave to save the DB with a\n# different interval, or to listen to another port, and so on.\n#\n# slaveof \u003cmasterip\u003e \u003cmasterport\u003e\n\n# If the master is password protected (using the \"requirepass\" configuration\n# directive below) it is possible to tell the slave to authenticate before\n# starting the replication synchronization process, otherwise the master will\n# refuse the slave request.\n#\n# masterauth \u003cmaster-password\u003e\n\n# When a slave loses its connection with the master, or when the replication\n# is still in progress, the slave can act in two different ways:\n#\n# 1) if slave-serve-stale-data is set to 'yes' (the default) the slave will\n# still reply to client requests, possibly with out of date data, or the\n# data set may just be empty if this is the first synchronization.\n#\n# 2) if slave-serve-stale-data is set to 'no' the slave will reply with\n# an error \"SYNC with master in progress\" to all the kind of commands\n# but to INFO and SLAVEOF.\n#\nslave-serve-stale-data yes\n\n# You can configure a slave instance to accept writes or not. Writing against\n# a slave instance may be useful to store some ephemeral data (because data\n# written on a slave will be easily deleted after resync with the master) but\n# may also cause problems if clients are writing to it because of a\n# misconfiguration.\n#\n# Since Redis 2.6 by default slaves are read-only.\n#\n# Note: read only slaves are not designed to be exposed to untrusted clients\n# on the internet. It's just a protection layer against misuse of the instance.\n# Still a read only slave exports by default all the administrative commands\n# such as CONFIG, DEBUG, and so forth. To a limited extend you can improve\n# security of read only slaves using 'rename-command' to shadow all the\n# administrative / dangerous commands.\nslave-read-only yes\n\n# Slaves send PINGs to server in a predefined interval. It's possible to change\n# this interval with the repl_ping_slave_period option. The default value is 10\n# seconds.\n#\n# repl-ping-slave-period 10\n\n# The following option sets a timeout for both Bulk transfer I/O timeout and\n# master data or ping response timeout. The default value is 60 seconds.\n#\n# It is important to make sure that this value is greater than the value\n# specified for repl-ping-slave-period otherwise a timeout will be detected\n# every time there is low traffic between the master and the slave.\n#\n# repl-timeout 60\n\n# Disable TCP_NODELAY on the slave socket after SYNC?\n#\n# If you select \"yes\" Redis will use a smaller number of TCP packets and\n# less bandwidth to send data to slaves. But this can add a delay for\n# the data to appear on the slave side, up to 40 milliseconds with\n# Linux kernels using a default configuration.\n#\n# If you select \"no\" the delay for data to appear on the slave side will\n# be reduced but more bandwidth will be used for replication.\n#\n# By default we optimize for low latency, but in very high traffic conditions\n# or when the master and slaves are many hops away, turning this to \"yes\" may\n# be a good idea.\nrepl-disable-tcp-nodelay no\n\n# The slave priority is an integer number published by Redis in the INFO output.\n# It is used by Redis Sentinel in order to select a slave to promote into a\n# master if the master is no longer working correctly.\n#\n# A slave with a low priority number is considered better for promotion, so\n# for instance if there are three slaves with priority 10, 100, 25 Sentinel will\n# pick the one wtih priority 10, that is the lowest.\n#\n# However a special priority of 0 marks the slave as not able to perform the\n# role of master, so a slave with priority of 0 will never be selected by\n# Redis Sentinel for promotion.\n#\n# By default the priority is 100.\nslave-priority 100\n\n################################## SECURITY ###################################\n\n# Require clients to issue AUTH \u003cPASSWORD\u003e before processing any other\n# commands. This might be useful in environments in which you do not trust\n# others with access to the host running redis-server.\n#\n# This should stay commented out for backward compatibility and because most\n# people do not need auth (e.g. they run their own servers).\n# \n# Warning: since Redis is pretty fast an outside user can try up to\n# 150k passwords per second against a good box. This means that you should\n# use a very strong password otherwise it will be very easy to break.\n#\n# requirepass foobared\n\n# Command renaming.\n#\n# It is possible to change the name of dangerous commands in a shared\n# environment. For instance the CONFIG command may be renamed into something\n# hard to guess so that it will still be available for internal-use tools\n# but not available for general clients.\n#\n# Example:\n#\n# rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52\n#\n# It is also possible to completely kill a command by renaming it into\n# an empty string:\n#\n# rename-command CONFIG \"\"\n#\n# Please note that changing the name of commands that are logged into the\n# AOF file or transmitted to slaves may cause problems.\n\n################################### LIMITS ####################################\n\n# Set the max number of connected clients at the same time. By default\n# this limit is set to 10000 clients, however if the Redis server is not\n# able to configure the process file limit to allow for the specified limit\n# the max number of allowed clients is set to the current file limit\n# minus 32 (as Redis reserves a few file descriptors for internal uses).\n#\n# Once the limit is reached Redis will close all the new connections sending\n# an error 'max number of clients reached'.\n#\n# maxclients 10000\n\n# Don't use more memory than the specified amount of bytes.\n# When the memory limit is reached Redis will try to remove keys\n# accordingly to the eviction policy selected (see maxmemmory-policy).\n#\n# If Redis can't remove keys according to the policy, or if the policy is\n# set to 'noeviction', Redis will start to reply with errors to commands\n# that would use more memory, like SET, LPUSH, and so on, and will continue\n# to reply to read-only commands like GET.\n#\n# This option is usually useful when using Redis as an LRU cache, or to set\n# an hard memory limit for an instance (using the 'noeviction' policy).\n#\n# WARNING: If you have slaves attached to an instance with maxmemory on,\n# the size of the output buffers needed to feed the slaves are subtracted\n# from the used memory count, so that network problems / resyncs will\n# not trigger a loop where keys are evicted, and in turn the output\n# buffer of slaves is full with DELs of keys evicted triggering the deletion\n# of more keys, and so forth until the database is completely emptied.\n#\n# In short... if you have slaves attached it is suggested that you set a lower\n# limit for maxmemory so that there is some free RAM on the system for slave\n# output buffers (but this is not needed if the policy is 'noeviction').\n#\nmaxmemory 1gb\n\n# MAXMEMORY POLICY: how Redis will select what to remove when maxmemory\n# is reached. You can select among five behaviors:\n# \n# volatile-lru -\u003e remove the key with an expire set using an LRU algorithm\n# allkeys-lru -\u003e remove any key accordingly to the LRU algorithm\n# volatile-random -\u003e remove a random key with an expire set\n# allkeys-random -\u003e remove a random key, any key\n# volatile-ttl -\u003e remove the key with the nearest expire time (minor TTL)\n# noeviction -\u003e don't expire at all, just return an error on write operations\n# \n# Note: with any of the above policies, Redis will return an error on write\n# operations, when there are not suitable keys for eviction.\n#\n# At the date of writing this commands are: set setnx setex append\n# incr decr rpush lpush rpushx lpushx linsert lset rpoplpush sadd\n# sinter sinterstore sunion sunionstore sdiff sdiffstore zadd zincrby\n# zunionstore zinterstore hset hsetnx hmset hincrby incrby decrby\n# getset mset msetnx exec sort\n#\n# The default is:\n#\n# maxmemory-policy volatile-lru\n\n# LRU and minimal TTL algorithms are not precise algorithms but approximated\n# algorithms (in order to save memory), so you can select as well the sample\n# size to check. For instance for default Redis will check three keys and\n# pick the one that was used less recently, you can change the sample size\n# using the following configuration directive.\n#\n# maxmemory-samples 3\n\n############################## APPEND ONLY MODE ###############################\n\n# By default Redis asynchronously dumps the dataset on disk. This mode is\n# good enough in many applications, but an issue with the Redis process or\n# a power outage may result into a few minutes of writes lost (depending on\n# the configured save points).\n#\n# The Append Only File is an alternative persistence mode that provides\n# much better durability. For instance using the default data fsync policy\n# (see later in the config file) Redis can lose just one second of writes in a\n# dramatic event like a server power outage, or a single write if something\n# wrong with the Redis process itself happens, but the operating system is\n# still running correctly.\n#\n# AOF and RDB persistence can be enabled at the same time without problems.\n# If the AOF is enabled on startup Redis will load the AOF, that is the file\n# with the better durability guarantees.\n#\n# Please check http://redis.io/topics/persistence for more information.\n\nappendonly no\n\n# The name of the append only file (default: \"appendonly.aof\")\n# appendfilename appendonly.aof\n\n# The fsync() call tells the Operating System to actually write data on disk\n# instead to wait for more data in the output buffer. Some OS will really flush \n# data on disk, some other OS will just try to do it ASAP.\n#\n# Redis supports three different modes:\n#\n# no: don't fsync, just let the OS flush the data when it wants. Faster.\n# always: fsync after every write to the append only log . Slow, Safest.\n# everysec: fsync only one time every second. Compromise.\n#\n# The default is \"everysec\", as that's usually the right compromise between\n# speed and data safety. It's up to you to understand if you can relax this to\n# \"no\" that will let the operating system flush the output buffer when\n# it wants, for better performances (but if you can live with the idea of\n# some data loss consider the default persistence mode that's snapshotting),\n# or on the contrary, use \"always\" that's very slow but a bit safer than\n# everysec.\n#\n# More details please check the following article:\n# http://antirez.com/post/redis-persistence-demystified.html\n#\n# If unsure, use \"everysec\".\n\n# appendfsync always\nappendfsync everysec\n# appendfsync no\n\n# When the AOF fsync policy is set to always or everysec, and a background\n# saving process (a background save or AOF log background rewriting) is\n# performing a lot of I/O against the disk, in some Linux configurations\n# Redis may block too long on the fsync() call. Note that there is no fix for\n# this currently, as even performing fsync in a different thread will block\n# our synchronous write(2) call.\n#\n# In order to mitigate this problem it's possible to use the following option\n# that will prevent fsync() from being called in the main process while a\n# BGSAVE or BGREWRITEAOF is in progress.\n#\n# This means that while another child is saving, the durability of Redis is\n# the same as \"appendfsync none\". In practical terms, this means that it is\n# possible to lose up to 30 seconds of log in the worst scenario (with the\n# default Linux settings).\n# \n# If you have latency problems turn this to \"yes\". Otherwise leave it as\n# \"no\" that is the safest pick from the point of view of durability.\nno-appendfsync-on-rewrite no\n\n# Automatic rewrite of the append only file.\n# Redis is able to automatically rewrite the log file implicitly calling\n# BGREWRITEAOF when the AOF log size grows by the specified percentage.\n# \n# This is how it works: Redis remembers the size of the AOF file after the\n# latest rewrite (if no rewrite has happened since the restart, the size of\n# the AOF at startup is used).\n#\n# This base size is compared to the current size. If the current size is\n# bigger than the specified percentage, the rewrite is triggered. Also\n# you need to specify a minimal size for the AOF file to be rewritten, this\n# is useful to avoid rewriting the AOF file even if the percentage increase\n# is reached but it is still pretty small.\n#\n# Specify a percentage of zero in order to disable the automatic AOF\n# rewrite feature.\n\nauto-aof-rewrite-percentage 100\nauto-aof-rewrite-min-size 64mb\n\n################################ LUA SCRIPTING ###############################\n\n# Max execution time of a Lua script in milliseconds.\n#\n# If the maximum execution time is reached Redis will log that a script is\n# still in execution after the maximum allowed time and will start to\n# reply to queries with an error.\n#\n# When a long running script exceed the maximum execution time only the\n# SCRIPT KILL and SHUTDOWN NOSAVE commands are available. The first can be\n# used to stop a script that did not yet called write commands. The second\n# is the only way to shut down the server in the case a write commands was\n# already issue by the script but the user don't want to wait for the natural\n# termination of the script.\n#\n# Set it to 0 or a negative value for unlimited execution without warnings.\nlua-time-limit 5000\n\n################################## SLOW LOG ###################################\n\n# The Redis Slow Log is a system to log queries that exceeded a specified\n# execution time. The execution time does not include the I/O operations\n# like talking with the client, sending the reply and so forth,\n# but just the time needed to actually execute the command (this is the only\n# stage of command execution where the thread is blocked and can not serve\n# other requests in the meantime).\n# \n# You can configure the slow log with two parameters: one tells Redis\n# what is the execution time, in microseconds, to exceed in order for the\n# command to get logged, and the other parameter is the length of the\n# slow log. When a new command is logged the oldest one is removed from the\n# queue of logged commands.\n\n# The following time is expressed in microseconds, so 1000000 is equivalent\n# to one second. Note that a negative number disables the slow log, while\n# a value of zero forces the logging of every command.\nslowlog-log-slower-than 10000\n\n# There is no limit to this length. Just be aware that it will consume memory.\n# You can reclaim memory used by the slow log with SLOWLOG RESET.\nslowlog-max-len 128\n\n############################### ADVANCED CONFIG ###############################\n\n# Hashes are encoded using a memory efficient data structure when they have a\n# small number of entries, and the biggest entry does not exceed a given\n# threshold. These thresholds can be configured using the following directives.\nhash-max-ziplist-entries 512\nhash-max-ziplist-value 64\n\n# Similarly to hashes, small lists are also encoded in a special way in order\n# to save a lot of space. The special representation is only used when\n# you are under the following limits:\nlist-max-ziplist-entries 512\nlist-max-ziplist-value 64\n\n# Sets have a special encoding in just one case: when a set is composed\n# of just strings that happens to be integers in radix 10 in the range\n# of 64 bit signed integers.\n# The following configuration setting sets the limit in the size of the\n# set in order to use this special memory saving encoding.\nset-max-intset-entries 512\n\n# Similarly to hashes and lists, sorted sets are also specially encoded in\n# order to save a lot of space. This encoding is only used when the length and\n# elements of a sorted set are below the following limits:\nzset-max-ziplist-entries 128\nzset-max-ziplist-value 64\n\n# Active rehashing uses 1 millisecond every 100 milliseconds of CPU time in\n# order to help rehashing the main Redis hash table (the one mapping top-level\n# keys to values). The hash table implementation Redis uses (see dict.c)\n# performs a lazy rehashing: the more operation you run into an hash table\n# that is rehashing, the more rehashing \"steps\" are performed, so if the\n# server is idle the rehashing is never complete and some more memory is used\n# by the hash table.\n# \n# The default is to use this millisecond 10 times every second in order to\n# active rehashing the main dictionaries, freeing memory when possible.\n#\n# If unsure:\n# use \"activerehashing no\" if you have hard latency requirements and it is\n# not a good thing in your environment that Redis can reply form time to time\n# to queries with 2 milliseconds delay.\n#\n# use \"activerehashing yes\" if you don't have such hard requirements but\n# want to free memory asap when possible.\nactiverehashing yes\n\n# The client output buffer limits can be used to force disconnection of clients\n# that are not reading data from the server fast enough for some reason (a\n# common reason is that a Pub/Sub client can't consume messages as fast as the\n# publisher can produce them).\n#\n# The limit can be set differently for the three different classes of clients:\n#\n# normal -\u003e normal clients\n# slave -\u003e slave clients and MONITOR clients\n# pubsub -\u003e clients subcribed to at least one pubsub channel or pattern\n#\n# The syntax of every client-output-buffer-limit directive is the following:\n#\n# client-output-buffer-limit \u003cclass\u003e \u003chard limit\u003e \u003csoft limit\u003e \u003csoft seconds\u003e\n#\n# A client is immediately disconnected once the hard limit is reached, or if\n# the soft limit is reached and remains reached for the specified number of\n# seconds (continuously).\n# So for instance if the hard limit is 32 megabytes and the soft limit is\n# 16 megabytes / 10 seconds, the client will get disconnected immediately\n# if the size of the output buffers reach 32 megabytes, but will also get\n# disconnected if the client reaches 16 megabytes and continuously overcomes\n# the limit for 10 seconds.\n#\n# By default normal clients are not limited because they don't receive data\n# without asking (in a push way), but just after a request, so only\n# asynchronous clients may create a scenario where data is requested faster\n# than it can read.\n#\n# Instead there is a default limit for pubsub and slave clients, since\n# subscribers and slaves receive data in a push fashion.\n#\n# Both the hard or the soft limit can be disabled by setting them to zero.\nclient-output-buffer-limit normal 0 0 0\nclient-output-buffer-limit slave 256mb 64mb 60\nclient-output-buffer-limit pubsub 32mb 8mb 60\n\n# Redis calls an internal function to perform many background tasks, like\n# closing connections of clients in timeot, purging expired keys that are\n# never requested, and so forth.\n#\n# Not all tasks are perforemd with the same frequency, but Redis checks for\n# tasks to perform accordingly to the specified \"hz\" value.\n#\n# By default \"hz\" is set to 10. Raising the value will use more CPU when\n# Redis is idle, but at the same time will make Redis more responsive when\n# there are many keys expiring at the same time, and timeouts may be\n# handled with more precision.\n#\n# The range is between 1 and 500, however a value over 100 is usually not\n# a good idea. Most users should use the default of 10 and raise this up to\n# 100 only in environments where very low latency is required.\nhz 10\n\n# When a child rewrites the AOF file, if the following option is enabled\n# the file will be fsync-ed every 32 MB of data generated. This is useful\n# in order to commit the file to the disk more incrementally and avoid\n# big latency spikes.\naof-rewrite-incremental-fsync yes\n\n################################## INCLUDES ###################################\n\n# Include one or more other config files here. This is useful if you\n# have a standard template that goes to all Redis server but also need\n# to customize a few per-server settings. Include files can include\n# other files, so use this wisely.\n#\n# include /path/to/local.conf\n# include /path/to/other.conf\n" } }, "Context": null, "Endpoints": [ { "Name": "redis", "Purpose": "export", "Protocol": "tcp", "PortNumber": 6379, "PortTemplate": "", "VirtualAddress": "", "Application": "redis", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null } ], "Services": [], "LogFilters": null, "Volumes": [ { "Owner": "root:root", "Permission": "0755", "ResourcePath": "redis", "ContainerPath": "/var/lib/redis", "Type": "", "InitContainerPath": "", "ExcludeFromBackups": false } ], "LogConfigs": [ { "Path": "/var/log/redis/redis.log", "Type": "redis", "Filters": [ "redis" ], "LogTags": null, "IsAudit": false } ], "Snapshot": { "Pause": "", "Resume": "" }, "RAMCommitment": "256M", "CPUCommitment": 1, "DisableShell": false, "Runs": null, "Commands": null, "Actions": null, "HealthChecks": { "metrics": { "Script": "/opt/zenoss/bin/healthchecks/redis/metrics", "Timeout": 0, "Interval": 15, "Tolerance": 0 } }, "Prereqs": null, "MonitoringProfile": { "MetricConfigs": [ { "ID": "redis", "Name": "redis internal metrics", "Description": "redis internal metrics", "Query": { "RequestURI": "", "Method": "", "Headers": null, "Data": "" }, "Metrics": [ { "ID": "redis.total_commands_processed", "Name": "Total Commands", "Description": "Number of commands processed by redis.", "Counter": true, "ResetValue": 0, "Unit": "Count", "BuiltIn": false } ] } ], "GraphConfigs": [ { "id": "totalcommands", "name": "Total Commands", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "Commands/s", "description": "Number of commands per second", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Data Points", "metric": "redis.total_commands_processed", "metricSource": "redis", "id": "total_commands_processed", "name": "Total Commands", "rate": true, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 } ], "ThresholdConfigs": null }, "MemoryLimit": 0, "CPUShares": 0, "PIDFile": "", "StartLevel": 1, "EmergencyShutdownLevel": 2 }, { "Name": "HBase", "Title": "", "Version": "", "Command": "", "Description": "HBase Cluster", "Environment": null, "Tags": null, "ImageID": "", "Instances": { "Min": 0, "Max": 0, "Default": 0 }, "ChangeOptions": null, "Launch": "auto", "HostPolicy": "", "Hostname": "", "Privileged": false, "ConfigFiles": {}, "Context": null, "Endpoints": null, "Services": [ { "Name": "HMaster", "Title": "", "Version": "", "Command": "/usr/bin/run-hbase-master.sh /etc/hbase-site.xml", "Description": "Master Server for HBase", "Environment": null, "Tags": [ "daemon" ], "ImageID": "zenoss/hbase:24.0.8", "Instances": { "Min": 1, "Max": 0, "Default": 0 }, "ChangeOptions": null, "Launch": "auto", "HostPolicy": "", "Hostname": "localhost", "Privileged": true, "ConfigFiles": { "/etc/hbase-env.sh": { "Filename": "/etc/hbase-env.sh", "Owner": "hbase:hbase", "Permissions": "0775", "Content": "export HBASE_MANAGES_ZK=false\nexport HBASE_HEAPSIZE={{percentScale (bytesToMB .RAMCommitment) 0.9}}\n" }, "/etc/hbase-site.xml": { "Filename": "/etc/hbase-site.xml", "Owner": "hbase:hbase", "Permissions": "0664", "Content": "\u003cconfiguration\u003e\n \u003cproperty\u003e\n \u003cname\u003ehbase.rootdir\u003c/name\u003e\n \u003cvalue\u003efile:///var/hbase\u003c/value\u003e\n \u003c/property\u003e\n \u003cproperty\u003e\n \u003cname\u003ehbase.cluster.distributed\u003c/name\u003e\n \u003cvalue\u003etrue\u003c/value\u003e\n \u003c/property\u003e\n \u003cproperty\u003e\n \u003cname\u003ehbase.zookeeper.quorum\u003c/name\u003e\n \u003cvalue\u003ezk1\u003c/value\u003e\n \u003c/property\u003e\n\u003c/configuration\u003e\n" }, "/opt/hbase/conf/hadoop-metrics2-hbase.properties": { "Filename": "/opt/hbase/conf/hadoop-metrics2-hbase.properties", "Owner": "", "Permissions": "", "Content": "# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements. See the NOTICE file\n# distributed with this work for additional information\n# regarding copyright ownership. The ASF licenses this file\n# to you under the Apache License, Version 2.0 (the\n# \"License\"); you may not use this file except in compliance\n# with the License. You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# syntax: [prefix].[source|sink].[instance].[options]\n# See javadoc of package-info.java for org.apache.hadoop.metrics2 for details\n\n# sampling period\n*.period=15\n\n# Below are some examples of sinks that could be used\n# to monitor different hbase daemons.\n\nhbase.sink.file-all.class=com.zenoss.hadoop.metrics.ControlCenterSink\nhbase.sink.file-all.includedMetrics=Log\\\\w*,\\\\w*RegionServers,hbase\\.regionserver\\.\\\\w*,storeFile\\\\w*\nhbase.sink.file-all.metricsPrefix=zenoss.hbase.\n# hbase.sink.file0.class=org.apache.hadoop.metrics2.sink.FileSink\n# hbase.sink.file0.context=hmaster\n# hbase.sink.file0.filename=master.metrics\n\n# hbase.sink.file1.class=org.apache.hadoop.metrics2.sink.FileSink\n# hbase.sink.file1.context=thrift-one\n# hbase.sink.file1.filename=thrift-one.metrics\n\n# hbase.sink.file2.class=org.apache.hadoop.metrics2.sink.FileSink\n# hbase.sink.file2.context=thrift-two\n# hbase.sink.file2.filename=thrift-one.metrics\n\n# hbase.sink.file3.class=org.apache.hadoop.metrics2.sink.FileSink\n# hbase.sink.file3.context=rest\n# hbase.sink.file3.filename=rest.metrics\n" } }, "Context": null, "Endpoints": [ { "Name": "hbase-master-1", "Purpose": "export", "Protocol": "tcp", "PortNumber": 60000, "PortTemplate": "", "VirtualAddress": "", "Application": "hbase-master-1", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "hbase-master-rest", "Purpose": "export", "Protocol": "tcp", "PortNumber": 61000, "PortTemplate": "", "VirtualAddress": "", "Application": "hbase-master-rest", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "hbase-masterinfo-1", "Purpose": "export", "Protocol": "tcp", "PortNumber": 60010, "PortTemplate": "", "VirtualAddress": "", "Application": "hbase-masterinfo-1", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": [ { "Name": "hbase", "Enabled": false } ], "PortList": null }, { "Name": "hbase-regionserver", "Purpose": "import_all", "Protocol": "tcp", "PortNumber": 60200, "PortTemplate": "", "VirtualAddress": "", "Application": "hbase-regionserver", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "zookeeper-client", "Purpose": "import_all", "Protocol": "tcp", "PortNumber": 2181, "PortTemplate": "", "VirtualAddress": "zk{{ plus 1 .InstanceID }}:2181", "Application": "zookeeper-client", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null } ], "Services": [], "LogFilters": null, "Volumes": [ { "Owner": "hbase:hbase", "Permission": "0755", "ResourcePath": "hbase-master", "ContainerPath": "/var/hbase", "Type": "", "InitContainerPath": "", "ExcludeFromBackups": false } ], "LogConfigs": [ { "Path": "/opt/hbase/logs/hbase-master.log", "Type": "hbase", "Filters": [ "hbasedaemon" ], "LogTags": null, "IsAudit": false } ], "Snapshot": { "Pause": "", "Resume": "" }, "RAMCommitment": "1G", "CPUCommitment": 1, "DisableShell": false, "Runs": null, "Commands": null, "Actions": null, "HealthChecks": { "cluster_healthy": { "Script": "curl -A 'HMaster cluster_healthy healthcheck' -f -s http://127.0.0.1:61000/status/cluster | grep -q '0 dead'", "Timeout": 0, "Interval": 10, "Tolerance": 0 }, "rest_answering": { "Script": "curl -A 'HMaster rest_answering healthcheck' -o /dev/null -f -s http://127.0.0.1:61000/status/cluster", "Timeout": 0, "Interval": 10, "Tolerance": 0 } }, "Prereqs": [ { "Name": "All ZooKeepers up", "Script": "{{with $zks := (child (parent .) \"ZooKeeper\").Instances }}{{ range (each $zks) }}{ echo ruok; sleep 1; } | nc zk{{plus 1 .}} 2181 | grep imok {{if ne (plus 1 .) $zks}}\u0026\u0026 {{end}}{{end}}{{end}}" } ], "MonitoringProfile": { "MetricConfigs": [ { "ID": "HMaster", "Name": "HMaster internal metrics", "Description": "HMaster internal metrics", "Query": { "RequestURI": "", "Method": "", "Headers": null, "Data": "" }, "Metrics": [ { "ID": "LogFatal", "Name": "Total number of fatal log events", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "LogError", "Name": "Total number of error log events", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "LogWarn", "Name": "Total number of warn log events", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "numRegionServers", "Name": "Total number of live regions servers", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "numDeadRegionServers", "Name": "Total number of dead regions servers", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false } ] } ], "GraphConfigs": [ { "id": "logStats", "name": "Log Stats", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": 0, "maxy": null, "yAxisLabel": "events", "description": "Log Stats", "range": { "start": "", "end": "0s-ago" }, "datapoints": [ { "aggregator": "zimsum", "color": "", "expression": "", "fill": false, "format": "", "legend": "Total number of fatal log events", "metric": "LogFatal", "metricSource": "Hmaster", "id": "LogFatal", "name": "Total number of fatal log events", "rate": false, "rateOptions": { "counter": true, "counterMax": null, "resetThreshold": 1048576 }, "type": "line" }, { "aggregator": "zimsum", "color": "", "expression": "", "fill": false, "format": "", "legend": "Total number of error log events", "metric": "LogError", "metricSource": "Hmaster", "id": "LogError", "name": "Total number of error log events", "rate": false, "rateOptions": { "counter": true, "counterMax": null, "resetThreshold": 1048576 }, "type": "line" }, { "aggregator": "zimsum", "color": "", "expression": "", "fill": false, "format": "", "legend": "Total number of warn log events", "metric": "LogWarn", "metricSource": "Hmaster", "id": "LogWarn", "name": "Total number of warn log events", "rate": false, "rateOptions": { "counter": true, "counterMax": null, "resetThreshold": 1048576 }, "type": "line" } ], "builtin": false, "units": "", "base": 0 }, { "id": "regionServers", "name": "Region Servers", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": 0, "maxy": null, "yAxisLabel": "servers", "description": "Region Servers", "range": { "start": "", "end": "0s-ago" }, "datapoints": [ { "aggregator": "zimsum", "color": "", "expression": "", "fill": true, "format": "", "legend": "Total number of live regions servers", "metric": "numRegionServers", "metricSource": "Hmaster", "id": "numRegionServers", "name": "Total number of live regions servers", "rate": false, "rateOptions": { "counter": true, "counterMax": null, "resetThreshold": 1048576 }, "type": "line" }, { "aggregator": "zimsum", "color": "", "expression": "", "fill": true, "format": "", "legend": "Total number of dead regions servers", "metric": "numDeadRegionServers", "metricSource": "Hmaster", "id": "numDeadRegionServers", "name": "Total number of dead regions servers", "rate": false, "rateOptions": { "counter": true, "counterMax": null, "resetThreshold": 1048576 }, "type": "line" } ], "builtin": false, "units": "", "base": 0 } ], "ThresholdConfigs": null }, "MemoryLimit": 0, "CPUShares": 0, "PIDFile": "", "StartLevel": 1, "EmergencyShutdownLevel": 0 }, { "Name": "RegionServer", "Title": "", "Version": "", "Command": "/usr/bin/run-hbase-regionserver.sh /etc/hbase-site.xml $CONTROLPLANE_INSTANCE_ID", "Description": "Region Server for HBase", "Environment": null, "Tags": [ "daemon" ], "ImageID": "zenoss/hbase:24.0.8", "Instances": { "Min": 1, "Max": 0, "Default": 0 }, "ChangeOptions": null, "Launch": "auto", "HostPolicy": "PREFER_SEPARATE", "Hostname": "localhost", "Privileged": true, "ConfigFiles": { "/etc/hbase-env.sh": { "Filename": "/etc/hbase-env.sh", "Owner": "hbase:hbase", "Permissions": "0775", "Content": "export HBASE_MANAGES_ZK=false\nexport HBASE_HEAPSIZE={{percentScale (bytesToMB .RAMCommitment) 0.9}}\n" }, "/etc/hbase-site.xml": { "Filename": "/etc/hbase-site.xml", "Owner": "hbase:hbase", "Permissions": "0664", "Content": "\u003cconfiguration\u003e\n \u003cproperty\u003e\n \u003cname\u003ehbase.rootdir\u003c/name\u003e\n \u003cvalue\u003efile:///var/hbase\u003c/value\u003e\n \u003c/property\u003e\n \u003cproperty\u003e\n \u003cname\u003ehbase.cluster.distributed\u003c/name\u003e\n \u003cvalue\u003etrue\u003c/value\u003e\n \u003c/property\u003e\n \u003cproperty\u003e\n \u003cname\u003ehbase.zookeeper.quorum\u003c/name\u003e\n \u003cvalue\u003e{{ with $zks := (child (parent .) \"ZooKeeper\").Instances }}{{range (each $zks) }}zk{{plus 1 .}}{{if ne (plus 1 .) $zks}},{{end}}{{end}}{{end}}\u003c/value\u003e\n \u003c/property\u003e\n\u003c/configuration\u003e" }, "/opt/hbase/conf/hadoop-metrics2-hbase.properties": { "Filename": "/opt/hbase/conf/hadoop-metrics2-hbase.properties", "Owner": "", "Permissions": "", "Content": "# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements. See the NOTICE file\n# distributed with this work for additional information\n# regarding copyright ownership. The ASF licenses this file\n# to you under the Apache License, Version 2.0 (the\n# \"License\"); you may not use this file except in compliance\n# with the License. You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# syntax: [prefix].[source|sink].[instance].[options]\n# See javadoc of package-info.java for org.apache.hadoop.metrics2 for details\n\n# sampling period\n*.period=15\n\n# Below are some examples of sinks that could be used\n# to monitor different hbase daemons.\n\nhbase.sink.file-all.class=com.zenoss.hadoop.metrics.ControlCenterSink\nhbase.sink.file-all.includedMetrics=numCallsInGeneralQueue,numCallsIn\\\\w*Queue,\\\\w*QueueLength,\\\\w*Count,\\\\w+RequestCount,storeFile\\\\w*\nhbase.sink.file-all.metricsPrefix=zenoss.hbase.\n# hbase.sink.file0.class=org.apache.hadoop.metrics2.sink.FileSink\n# hbase.sink.file0.context=hmaster\n# hbase.sink.file0.filename=master.metrics\n\n# hbase.sink.file1.class=org.apache.hadoop.metrics2.sink.FileSink\n# hbase.sink.file1.context=thrift-one\n# hbase.sink.file1.filename=thrift-one.metrics\n\n# hbase.sink.file2.class=org.apache.hadoop.metrics2.sink.FileSink\n# hbase.sink.file2.context=thrift-two\n# hbase.sink.file2.filename=thrift-one.metrics\n\n# hbase.sink.file3.class=org.apache.hadoop.metrics2.sink.FileSink\n# hbase.sink.file3.context=rest\n# hbase.sink.file3.filename=rest.metrics\n" } }, "Context": null, "Endpoints": [ { "Name": "hbase-master", "Purpose": "import", "Protocol": "", "PortNumber": 0, "PortTemplate": "", "VirtualAddress": "", "Application": "hbase-master-.*", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "hbase-regionserver", "Purpose": "export", "Protocol": "tcp", "PortNumber": 60200, "PortTemplate": "{{ plus 60200 .InstanceID }}", "VirtualAddress": "", "Application": "hbase-regionserver", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "hbase-regionservers", "Purpose": "import_all", "Protocol": "tcp", "PortNumber": 60200, "PortTemplate": "", "VirtualAddress": "", "Application": "hbase-regionserver", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "hbase-regionserverinfo", "Purpose": "export", "Protocol": "tcp", "PortNumber": 60300, "PortTemplate": "{{ plus 60300 .InstanceID }}", "VirtualAddress": "", "Application": "hbase-regionserverinfo", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "zookeeper-client", "Purpose": "import_all", "Protocol": "tcp", "PortNumber": 2181, "PortTemplate": "", "VirtualAddress": "zk{{ plus 1 .InstanceID }}:2181", "Application": "zookeeper-client", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null } ], "Services": [], "LogFilters": null, "Volumes": [ { "Owner": "hbase:hbase", "Permission": "0755", "ResourcePath": "hbase-master", "ContainerPath": "/var/hbase", "Type": "", "InitContainerPath": "", "ExcludeFromBackups": false } ], "LogConfigs": [ { "Path": "/opt/hbase/logs/hbase-regionserver.log", "Type": "hbase", "Filters": [ "hbasedaemon" ], "LogTags": null, "IsAudit": false } ], "Snapshot": { "Pause": "", "Resume": "" }, "RAMCommitment": "1G", "CPUCommitment": 1, "DisableShell": false, "Runs": null, "Commands": null, "Actions": null, "HealthChecks": { "answering": { "Script": "echo | nc localhost {{ plus 60200 .InstanceID }}", "Timeout": 0, "Interval": 10, "Tolerance": 0 }, "cluster_member": { "Script": "curl -A 'RegionServer cluster_member healthcheck' http://localhost:61000/status/cluster | grep -q 'localhost:{{ plus 60200 .InstanceID }}'", "Timeout": 0, "Interval": 10, "Tolerance": 0 } }, "Prereqs": [], "MonitoringProfile": { "MetricConfigs": [ { "ID": "RegionServer", "Name": "RegionServer internal metrics", "Description": "RegionServer internal metrics", "Query": { "RequestURI": "", "Method": "", "Headers": null, "Data": "" }, "Metrics": [ { "ID": "numCallsInGeneralQueue", "Name": "Current depth of the User Requests", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "numCallsInPriorityQueue", "Name": "Current depth of the Internal Housekeeping Requests queue", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "flushQueueLength", "Name": "Current depth of the memstore flush queue", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "compactionQueueLength", "Name": "Current depth of the compaction request queue", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "slowAppendCount", "Name": "The number of slow append operations", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "slowDeleteCount", "Name": "The number of slow delete operations", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "slowGetCount", "Name": "The number of slow get operations", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "slowIncrementCount", "Name": "The number of slow increment operations", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "totalRequestCount", "Name": "Total request rate", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "readRequestCount", "Name": "Read request rate", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "writeRequestCount", "Name": "Write request rate", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false } ] } ], "GraphConfigs": [ { "id": "QueueLength", "name": "Queue Length", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": 0, "maxy": null, "yAxisLabel": "Blocks of items", "description": "Queue Length", "range": { "start": "", "end": "0s-ago" }, "datapoints": [ { "aggregator": "zimsum", "color": "", "expression": "", "fill": false, "format": "", "legend": "Current depth of the User Requests", "metric": "numCallsInGeneralQueue", "metricSource": "RegionServer", "id": "numCallsInGeneralQueue", "name": "Current depth of the User Requests", "rate": false, "rateOptions": { "counter": true, "counterMax": null, "resetThreshold": 1048576 }, "type": "line" }, { "aggregator": "zimsum", "color": "", "expression": "", "fill": false, "format": "", "legend": "Current depth of the Internal Housekeeping Requests queue", "metric": "numCallsInPriorityQueue", "metricSource": "RegionServer", "id": "numCallsInPriorityQueue", "name": "Current depth of the Internal Housekeeping Requests queue", "rate": false, "rateOptions": { "counter": true, "counterMax": null, "resetThreshold": 1048576 }, "type": "line" }, { "aggregator": "zimsum", "color": "", "expression": "", "fill": false, "format": "", "legend": "Current depth of the memstore flush queue", "metric": "flushQueueLength", "metricSource": "RegionServer", "id": "flushQueueLength", "name": "Current depth of the memstore flush queue", "rate": false, "rateOptions": { "counter": true, "counterMax": null, "resetThreshold": 1048576 }, "type": "line" }, { "aggregator": "zimsum", "color": "", "expression": "", "fill": false, "format": "", "legend": "Current depth of the compaction request queue", "metric": "compactionQueueLength", "metricSource": "RegionServer", "id": "compactionQueueLength", "name": "Current depth of the compaction request queue", "rate": false, "rateOptions": { "counter": true, "counterMax": null, "resetThreshold": 1048576 }, "type": "line" } ], "builtin": false, "units": "", "base": 0 }, { "id": "slowOps", "name": "Slow Operations", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": 0, "maxy": null, "yAxisLabel": "Operations", "description": "Slow Operations", "range": { "start": "", "end": "0s-ago" }, "datapoints": [ { "aggregator": "zimsum", "color": "", "expression": "", "fill": false, "format": "", "legend": "The number of slow append operations", "metric": "slowAppendCount", "metricSource": "RegionServer", "id": "slowAppendCount", "name": "The number of slow append operations", "rate": false, "rateOptions": null, "type": "line" }, { "aggregator": "zimsum", "color": "", "expression": "", "fill": false, "format": "", "legend": "The number of slow delete operations", "metric": "slowDeleteCount", "metricSource": "RegionServer", "id": "slowDeleteCount", "name": "The number of slow delete operations", "rate": false, "rateOptions": null, "type": "line" }, { "aggregator": "zimsum", "color": "", "expression": "", "fill": false, "format": "", "legend": "The number of slow get operations", "metric": "slowGetCount", "metricSource": "RegionServer", "id": "slowGetCount", "name": "The number of slow get operations", "rate": false, "rateOptions": null, "type": "line" }, { "aggregator": "zimsum", "color": "", "expression": "", "fill": false, "format": "", "legend": "The number of slow increment operations", "metric": "slowIncrementCount", "metricSource": "RegionServer", "id": "slowIncrementCount", "name": "The number of slow increment operations", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 }, { "id": "opcounts", "name": "Operations", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": 0, "maxy": null, "yAxisLabel": "Operations", "description": "Operations", "range": { "start": "", "end": "0s-ago" }, "datapoints": [ { "aggregator": "zimsum", "color": "", "expression": "", "fill": true, "format": "", "legend": "Total request rate", "metric": "totalRequestCount", "metricSource": "RegionServer", "id": "totalRequestCount", "name": "Total request rate", "rate": true, "rateOptions": null, "type": "line" }, { "aggregator": "zimsum", "color": "", "expression": "", "fill": true, "format": "", "legend": "Read request rate", "metric": "readRequestCount", "metricSource": "RegionServer", "id": "readRequestCount", "name": "Read request rate", "rate": true, "rateOptions": null, "type": "line" }, { "aggregator": "zimsum", "color": "", "expression": "", "fill": true, "format": "", "legend": "Write request rate", "metric": "writeRequestCount", "metricSource": "RegionServer", "id": "writeRequestCount", "name": "Write request rate", "rate": true, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 } ], "ThresholdConfigs": null }, "MemoryLimit": 0, "CPUShares": 0, "PIDFile": "", "StartLevel": 2, "EmergencyShutdownLevel": 1 }, { "Name": "ZooKeeper", "Title": "", "Version": "", "Command": "/usr/bin/run-zk.sh /etc/zookeeper.cfg", "Description": "Centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services", "Environment": null, "Tags": [ "daemon" ], "ImageID": "zenoss/hbase:24.0.8", "Instances": { "Min": 1, "Max": 1, "Default": 0 }, "ChangeOptions": null, "Launch": "auto", "HostPolicy": "PREFER_SEPARATE", "Hostname": "zk{{ plus 1 .InstanceID }}", "Privileged": true, "ConfigFiles": { "/etc/zookeeper.cfg": { "Filename": "/etc/zookeeper.cfg", "Owner": "zookeeper:zookeeper", "Permissions": "0664", "Content": "tickTime=2000\ndataDir=/var/lib/zookeeper\nclientPort={{plus 2181 .InstanceID}}\ninitLimit=5\nsyncLimit=2\n{{range $i, $n := (each .Instances)}}\nserver.{{plus 1 $n}}=127.0.0.1:{{plus $n 2888}}:{{plus $n 3888}}{{ end }}\nautopurge.snapRetainCount=3\nautopurge.purgeInterval=1" }, "/var/lib/zookeeper/myid": { "Filename": "/var/lib/zookeeper/myid", "Owner": "zookeeper:zookeeper", "Permissions": "0664", "Content": "{{ plus 1 .InstanceID }}" } }, "Context": null, "Endpoints": [ { "Name": "zookeeper-client", "Purpose": "export", "Protocol": "tcp", "PortNumber": 2181, "PortTemplate": "{{ plus .InstanceID 2181}}", "VirtualAddress": "", "Application": "zookeeper-client", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "zookeeper-quorum", "Purpose": "export", "Protocol": "tcp", "PortNumber": 2888, "PortTemplate": "{{ plus .InstanceID 2888}}", "VirtualAddress": "", "Application": "zookeeper-quorum", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "zookeeper-leader", "Purpose": "export", "Protocol": "tcp", "PortNumber": 3888, "PortTemplate": "{{ plus .InstanceID 3888}}", "VirtualAddress": "", "Application": "zookeeper-leader", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "zookeeper-clients", "Purpose": "import_all", "Protocol": "tcp", "PortNumber": 2181, "PortTemplate": "", "VirtualAddress": "", "Application": "zookeeper-client", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "zookeeper-quora", "Purpose": "import_all", "Protocol": "tcp", "PortNumber": 2888, "PortTemplate": "", "VirtualAddress": "", "Application": "zookeeper-quorum", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "zookeeper-leaders", "Purpose": "import_all", "Protocol": "tcp", "PortNumber": 3888, "PortTemplate": "", "VirtualAddress": "", "Application": "zookeeper-leader", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null } ], "Services": [], "LogFilters": null, "Volumes": [ { "Owner": "zookeeper:zookeeper", "Permission": "0755", "ResourcePath": "hbase-zookeeper-{{ plus 1 .InstanceID }}", "ContainerPath": "/var/lib/zookeeper/version-2", "Type": "", "InitContainerPath": "", "ExcludeFromBackups": false } ], "LogConfigs": [ { "Path": "/var/log/zookeeper/zookeeper.log", "Type": "hbase", "Filters": [ "zookeeper" ], "LogTags": null, "IsAudit": false } ], "Snapshot": { "Pause": "", "Resume": "" }, "RAMCommitment": "256M", "CPUCommitment": 1, "DisableShell": false, "Runs": null, "Commands": null, "Actions": null, "HealthChecks": { "answering": { "Script": "{ echo stats; sleep 1; } | nc 127.0.0.1 {{ plus 2181 .InstanceID }} | grep -q Zookeeper", "Timeout": 0, "Interval": 5, "Tolerance": 0 } }, "Prereqs": null, "MonitoringProfile": { "MetricConfigs": null, "GraphConfigs": null, "ThresholdConfigs": null }, "MemoryLimit": 0, "CPUShares": 0, "PIDFile": "", "StartLevel": 1, "EmergencyShutdownLevel": 3 } ], "LogFilters": null, "Volumes": null, "LogConfigs": null, "Snapshot": { "Pause": "", "Resume": "" }, "RAMCommitment": "", "CPUCommitment": 0, "DisableShell": false, "Runs": null, "Commands": null, "Actions": null, "HealthChecks": null, "Prereqs": null, "MonitoringProfile": { "MetricConfigs": null, "GraphConfigs": null, "ThresholdConfigs": null }, "MemoryLimit": 0, "CPUShares": 0, "PIDFile": "", "StartLevel": 0, "EmergencyShutdownLevel": 0 }, { "Name": "RabbitMQ", "Title": "", "Version": "", "Command": "/bin/supervisord -n -c /etc/rabbitmq/rabbit_supervisor.conf", "Description": "RabbitMQ server", "Environment": null, "Tags": [ "daemon" ], "ImageID": "zenoss/core_6.2:6.2.1_1", "Instances": { "Min": 1, "Max": 1, "Default": 0 }, "ChangeOptions": null, "Launch": "auto", "HostPolicy": "", "Hostname": "rbt{{.InstanceID}}", "Privileged": true, "ConfigFiles": { "/etc/rabbitmq/rabbit_supervisor.conf": { "Filename": "/etc/rabbitmq/rabbit_supervisor.conf", "Owner": "root:root", "Permissions": "0664", "Content": "[supervisord]\nnodaemon=true\nlogfile = /opt/zenoss/log/rabbitmq_supervisord.log\n\n[unix_http_server]\nfile=/tmp/supervisor.sock\n\n[supervisorctl]\nserverurl=unix:///tmp/supervisor.sock ; use a unix:// URL for a unix socket\n\n[rpcinterface:supervisor]\nsupervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface\n\n[program:rabbitmq]\ncommand=/usr/sbin/rabbitmq-server\nautorestart=true\nautostart=true\nstartsecs=5\npriority=1\n\n[program:rabbitmq_metrics]\ncommand=/usr/bin/python /opt/zenoss/bin/metrics/rabbitstats.py\nautorestart=true\nautostart=true\nstartsecs=5\n\n; logging\nredirect_stderr=true\nstdout_logfile_maxbytes=10MB\nstdout_logfile_backups=10\nstdout_logfile=/opt/zenoss/log/%(program_name)s.log\n" }, "/etc/rabbitmq/rabbitmq-env.conf": { "Filename": "/etc/rabbitmq/rabbitmq-env.conf", "Owner": "root:root", "Permissions": "0664", "Content": "NODENAME=rabbit@rbt{{.InstanceID}}\nNODE_IP_ADDRESS=0.0.0.0\nRABBITMQ_MNESIA_BASE=/var/lib/rabbitmq/mnesia{{if ne .InstanceID 0}}-node{{end}}\n" }, "/etc/rabbitmq/rabbitmq.config": { "Filename": "/etc/rabbitmq/rabbitmq.config", "Owner": "root:root", "Permissions": "0664", "Content": "[\n {rabbit, [\n {log_levels, [{connection, error}]},\n {cluster_nodes, {[{{with $rabbits := .Instances}}{{range (each $rabbits) }}'rabbit@rbt{{.}}'{{if ne (plus 1 .) $rabbits}},{{end}}{{end}}{{end}}], disc}}\n ]},\n {kernel, [\n {inet_dist_listen_max, 44001},\n {inet_dist_listen_min, 44001}\n ]}\n].\n" }, "/opt/zenoss/etc/global.conf": { "Filename": "/opt/zenoss/etc/global.conf", "Owner": "zenoss:zenoss", "Permissions": "660", "Content": "# Generated by serviced\n{{range $k,$v:=contextFilter . \"global.conf.\"}}{{$k}} {{$v}}\n{{end}}" } }, "Context": null, "Endpoints": [ { "Name": "rabbitmq admin", "Purpose": "export", "Protocol": "tcp", "PortNumber": 15672, "PortTemplate": "", "VirtualAddress": "", "Application": "rabbitmq_admin", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": [ { "Name": "rabbitmq", "Enabled": true } ], "PortList": null }, { "Name": "rabbitmq", "Purpose": "export", "Protocol": "tcp", "PortNumber": 5672, "PortTemplate": "", "VirtualAddress": "", "Application": "rabbitmq", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "rabbitmq_epmd", "Purpose": "export", "Protocol": "tcp", "PortNumber": 4369, "PortTemplate": "", "VirtualAddress": "", "Application": "rabbitmq_epmd", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "rabbitmq_inet_dist", "Purpose": "export", "Protocol": "tcp", "PortNumber": 44001, "PortTemplate": "", "VirtualAddress": "", "Application": "rabbitmq_inet_dist", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "rabbitmq_epmds", "Purpose": "import_all", "Protocol": "tcp", "PortNumber": 4369, "PortTemplate": "{{plus .InstanceID 14369}}", "VirtualAddress": "rbt{{.InstanceID}}:4369", "Application": "rabbitmq_epmd", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "rabbitmq_inet_dists", "Purpose": "import_all", "Protocol": "tcp", "PortNumber": 44001, "PortTemplate": "{{plus .InstanceID 49001}}", "VirtualAddress": "rbt{{.InstanceID}}:44001", "Application": "rabbitmq_inet_dist", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "rabbitmqs", "Purpose": "import_all", "Protocol": "tcp", "PortNumber": 5672, "PortTemplate": "{{plus .InstanceID 35672}}", "VirtualAddress": "rbt{{.InstanceID}}:5672", "Application": "rabbitmq", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null } ], "Services": [], "LogFilters": null, "Volumes": [ { "Owner": "rabbitmq:rabbitmq", "Permission": "0750", "ResourcePath": "rabbitmq/{{.InstanceID}}", "ContainerPath": "/var/lib/rabbitmq", "Type": "", "InitContainerPath": "", "ExcludeFromBackups": false } ], "LogConfigs": [ { "Path": "/var/log/rabbitmq/rabbit@rbt[0-9]*.log", "Type": "rabbitmq", "Filters": [ "rabbitmq" ], "LogTags": null, "IsAudit": false }, { "Path": "/var/log/rabbitmq/rabbit@rbt[0-9]*-sasl.log", "Type": "rabbitmq_sasl", "Filters": [ "rabbitmq" ], "LogTags": null, "IsAudit": false } ], "Snapshot": { "Pause": "PAUSE_CHECK_TIMEOUT=60 ${ZENHOME:-/opt/zenoss}/bin/quiesce-rabbitmq.sh pause", "Resume": "${ZENHOME:-/opt/zenoss}/bin/quiesce-rabbitmq.sh resume" }, "RAMCommitment": "256M", "CPUCommitment": 1, "DisableShell": false, "Runs": null, "Commands": null, "Actions": null, "HealthChecks": { "admin": { "Script": "curl -A 'RabbitMQ admin healthcheck' -s -u {{(getContext . \"global.conf.amqpuser\")}}:{{(getContext . \"global.conf.amqppassword\")}} http://localhost:15672/api/vhosts | grep -q /zenoss", "Timeout": 0, "Interval": 10, "Tolerance": 0 }, "publishing": { "Script": "curl -A 'RabbitMQ publishing healthcheck' -s -u {{(getContext . \"global.conf.amqpuser\")}}:{{(getContext . \"global.conf.amqppassword\")}} http://localhost:15672/api/aliveness-test/%2Fzenoss | grep -q '{\"status\":\"ok\"}'", "Timeout": 0, "Interval": 10, "Tolerance": 0 }, "user": { "Script": "/opt/zenoss/bin/healthchecks/RabbitMQ/user {{(getContext . \"global.conf.amqpuser\")}} {{(getContext . \"global.conf.amqppassword\")}}", "Timeout": 0, "Interval": 15, "Tolerance": 0 } }, "Prereqs": [ { "Name": "Cluster Leader Start", "Script": "[ $(hostname) == 'rbt0' ] || rabbitmqctl -n rabbit@rbt0 status | grep nodedown || sleep 5" } ], "MonitoringProfile": { "MetricConfigs": null, "GraphConfigs": null, "ThresholdConfigs": null }, "MemoryLimit": 0, "CPUShares": 0, "PIDFile": "", "StartLevel": 1, "EmergencyShutdownLevel": 2 }, { "Name": "Solr", "Title": "", "Version": "", "Command": "/bin/supervisord -n -c /opt/solr/zenoss/etc/supervisor.conf", "Description": "Solr Cloud", "Environment": null, "Tags": [ "daemon" ], "ImageID": "zenoss/core_6.2:6.2.1_1", "Instances": { "Min": 1, "Max": 1, "Default": 1 }, "ChangeOptions": null, "Launch": "auto", "HostPolicy": "", "Hostname": "", "Privileged": false, "ConfigFiles": { "/opt/solr/server/solr/configsets/zenoss_model/conf/solrconfig.xml": { "Filename": "/opt/solr/server/solr/configsets/zenoss_model/conf/solrconfig.xml", "Owner": "root:root", "Permissions": "0664", "Content": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\" ?\u003e\n\u003c!--\n Licensed to the Apache Software Foundation (ASF) under one or more\n contributor license agreements. See the NOTICE file distributed with\n this work for additional information regarding copyright ownership.\n The ASF licenses this file to You under the Apache License, Version 2.0\n (the \"License\"); you may not use this file except in compliance with\n the License. You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n--\u003e\n\n\u003c!-- \n For more details about configurations options that may appear in\n this file, see http://wiki.apache.org/solr/SolrConfigXml. \n--\u003e\n\u003cconfig\u003e\n \u003c!-- In all configuration below, a prefix of \"solr.\" for class names\n is an alias that causes solr to search appropriate packages,\n including org.apache.solr.(search|update|request|core|analysis)\n\n You may also specify a fully qualified Java classname if you\n have your own custom plugins.\n --\u003e\n\n \u003c!-- Controls what version of Lucene various components of Solr\n adhere to. Generally, you want to use the latest version to\n get all bug fixes and improvements. It is highly recommended\n that you fully re-index after changing this setting as it can\n affect both how text is indexed and queried.\n --\u003e\n \u003cluceneMatchVersion\u003e6.5.0\u003c/luceneMatchVersion\u003e\n\n \u003c!-- Data Directory\n\n Used to specify an alternate directory to hold all index data\n other than the default ./data under the Solr home. If\n replication is in use, this should match the replication\n configuration.\n --\u003e\n \u003cdataDir\u003e${solr.data.dir:}\u003c/dataDir\u003e\n\n\n \u003c!-- The DirectoryFactory to use for indexes.\n \n solr.StandardDirectoryFactory is filesystem\n based and tries to pick the best implementation for the current\n JVM and platform. solr.NRTCachingDirectoryFactory, the default,\n wraps solr.StandardDirectoryFactory and caches small files in memory\n for better NRT performance.\n\n One can force a particular implementation via solr.MMapDirectoryFactory,\n solr.NIOFSDirectoryFactory, or solr.SimpleFSDirectoryFactory.\n\n solr.RAMDirectoryFactory is memory based, not\n persistent, and doesn't work with replication.\n --\u003e\n \u003cdirectoryFactory name=\"DirectoryFactory\" \n class=\"${solr.directoryFactory:solr.NRTCachingDirectoryFactory}\"\u003e\n \u003c/directoryFactory\u003e \n\n \u003c!-- The CodecFactory for defining the format of the inverted index.\n The default implementation is SchemaCodecFactory, which is the official Lucene\n index format, but hooks into the schema to provide per-field customization of\n the postings lists and per-document values in the fieldType element\n (postingsFormat/docValuesFormat). Note that most of the alternative implementations\n are experimental, so if you choose to customize the index format, it's a good\n idea to convert back to the official format e.g. via IndexWriter.addIndexes(IndexReader)\n before upgrading to a newer version to avoid unnecessary reindexing.\n --\u003e\n \u003ccodecFactory class=\"solr.SchemaCodecFactory\"/\u003e\n\n \u003cschemaFactory class=\"ClassicIndexSchemaFactory\"/\u003e\n\n \u003c!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n Index Config - These settings control low-level behavior of indexing\n Most example settings here show the default value, but are commented\n out, to more easily see where customizations have been made.\n \n Note: This replaces \u003cindexDefaults\u003e and \u003cmainIndex\u003e from older versions\n ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --\u003e\n \u003cindexConfig\u003e\n\n \u003c!-- LockFactory \n\n This option specifies which Lucene LockFactory implementation\n to use.\n \n single = SingleInstanceLockFactory - suggested for a\n read-only index or when there is no possibility of\n another process trying to modify the index.\n native = NativeFSLockFactory - uses OS native file locking.\n Do not use when multiple solr webapps in the same\n JVM are attempting to share a single index.\n simple = SimpleFSLockFactory - uses a plain file for locking\n\n Defaults: 'native' is default for Solr3.6 and later, otherwise\n 'simple' is the default\n\n More details on the nuances of each LockFactory...\n http://wiki.apache.org/lucene-java/AvailableLockFactories\n --\u003e\n \u003clockType\u003e${solr.lock.type:native}\u003c/lockType\u003e\n\n \u003c!-- Lucene Infostream\n \n To aid in advanced debugging, Lucene provides an \"InfoStream\"\n of detailed information when indexing.\n\n Setting the value to true will instruct the underlying Lucene\n IndexWriter to write its info stream to solr's log. By default,\n this is enabled here, and controlled through log4j.properties.\n --\u003e\n \u003cinfoStream\u003etrue\u003c/infoStream\u003e\n \u003c/indexConfig\u003e\n\n\n \u003c!-- JMX\n \n This example enables JMX if and only if an existing MBeanServer\n is found, use this if you want to configure JMX through JVM\n parameters. Remove this to disable exposing Solr configuration\n and statistics to JMX.\n\n For more details see http://wiki.apache.org/solr/SolrJmx\n --\u003e\n \u003cjmx /\u003e\n \u003c!-- If you want to connect to a particular server, specify the\n agentId \n --\u003e\n \u003c!-- \u003cjmx agentId=\"myAgent\" /\u003e --\u003e\n \u003c!-- If you want to start a new MBeanServer, specify the serviceUrl --\u003e\n \u003c!-- \u003cjmx serviceUrl=\"service:jmx:rmi:///jndi/rmi://localhost:9999/solr\"/\u003e\n --\u003e\n\n \u003c!-- The default high-performance update handler --\u003e\n \u003cupdateHandler class=\"solr.DirectUpdateHandler2\"\u003e\n\n \u003c!-- Enables a transaction log, used for real-time get, durability, and\n and solr cloud replica recovery. The log can grow as big as\n uncommitted changes to the index, so use of a hard autoCommit\n is recommended (see below).\n \"dir\" - the target directory for transaction logs, defaults to the\n solr data directory. --\u003e \n \u003cupdateLog\u003e\n \u003cstr name=\"dir\"\u003e${solr.ulog.dir:}\u003c/str\u003e\n \u003c/updateLog\u003e\n \n \u003c!-- AutoCommit\n\n Perform a hard commit automatically under certain conditions.\n Instead of enabling autoCommit, consider using \"commitWithin\"\n when adding documents. \n\n http://wiki.apache.org/solr/UpdateXmlMessages\n\n maxDocs - Maximum number of documents to add since the last\n commit before automatically triggering a new commit.\n\n maxTime - Maximum amount of time in ms that is allowed to pass\n since a document was added before automatically\n triggering a new commit. \n openSearcher - if false, the commit causes recent index changes\n to be flushed to stable storage, but does not cause a new\n searcher to be opened to make those changes visible.\n\n If the updateLog is enabled, then it's highly recommended to\n have some sort of hard autoCommit to limit the log size.\n --\u003e\n \u003cautoCommit\u003e \n \u003cmaxTime\u003e${solr.autoCommit.maxTime:15000}\u003c/maxTime\u003e \n \u003copenSearcher\u003efalse\u003c/openSearcher\u003e \n \u003c/autoCommit\u003e\n\n \u003c!-- softAutoCommit is like autoCommit except it causes a\n 'soft' commit which only ensures that changes are visible\n but does not ensure that data is synced to disk. This is\n faster and more near-realtime friendly than a hard commit.\n --\u003e\n \u003cautoSoftCommit\u003e \n \u003cmaxTime\u003e${solr.autoSoftCommit.maxTime:-1}\u003c/maxTime\u003e \n \u003c/autoSoftCommit\u003e\n\n \u003c/updateHandler\u003e\n \n \u003c!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n Query section - these settings control query time things like caches\n ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --\u003e\n \u003cquery\u003e\n \u003c!-- Max Boolean Clauses\n\n Maximum number of clauses in each BooleanQuery, an exception\n is thrown if exceeded.\n\n ** WARNING **\n \n This option actually modifies a global Lucene property that\n will affect all SolrCores. If multiple solrconfig.xml files\n disagree on this property, the value at any given moment will\n be based on the last SolrCore to be initialized.\n \n --\u003e\n \u003cmaxBooleanClauses\u003e20000\u003c/maxBooleanClauses\u003e\n\n\n \u003c!-- Solr Internal Query Caches\n\n There are two implementations of cache available for Solr,\n LRUCache, based on a synchronized LinkedHashMap, and\n FastLRUCache, based on a ConcurrentHashMap. \n\n FastLRUCache has faster gets and slower puts in single\n threaded operation and thus is generally faster than LRUCache\n when the hit ratio of the cache is high (\u003e 75%), and may be\n faster under other scenarios on multi-cpu systems.\n --\u003e\n\n \u003c!-- Filter Cache\n\n Cache used by SolrIndexSearcher for filters (DocSets),\n unordered sets of *all* documents that match a query. When a\n new searcher is opened, its caches may be prepopulated or\n \"autowarmed\" using data from caches in the old searcher.\n autowarmCount is the number of items to prepopulate. For\n LRUCache, the autowarmed items will be the most recently\n accessed items.\n\n Parameters:\n class - the SolrCache implementation LRUCache or\n (LRUCache or FastLRUCache)\n size - the maximum number of entries in the cache\n initialSize - the initial capacity (number of entries) of\n the cache. (see java.util.HashMap)\n autowarmCount - the number of entries to prepopulate from\n and old cache. \n --\u003e\n \u003cfilterCache class=\"solr.FastLRUCache\"\n size=\"512\"\n initialSize=\"512\"\n autowarmCount=\"0\"/\u003e\n\n \u003c!-- Query Result Cache\n \n Caches results of searches - ordered lists of document ids\n (DocList) based on a query, a sort, and the range of documents requested. \n --\u003e\n \u003cqueryResultCache class=\"solr.LRUCache\"\n size=\"512\"\n initialSize=\"512\"\n autowarmCount=\"0\"/\u003e\n \n \u003c!-- Document Cache\n\n Caches Lucene Document objects (the stored fields for each\n document). Since Lucene internal document ids are transient,\n this cache will not be autowarmed. \n --\u003e\n \u003cdocumentCache class=\"solr.LRUCache\"\n size=\"512\"\n initialSize=\"512\"\n autowarmCount=\"0\"/\u003e\n \n \u003c!-- custom cache currently used by block join --\u003e \n \u003ccache name=\"perSegFilter\"\n class=\"solr.search.LRUCache\"\n size=\"10\"\n initialSize=\"0\"\n autowarmCount=\"10\"\n regenerator=\"solr.NoOpRegenerator\" /\u003e\n\n \u003c!-- Lazy Field Loading\n\n If true, stored fields that are not requested will be loaded\n lazily. This can result in a significant speed improvement\n if the usual case is to not load all stored fields,\n especially if the skipped fields are large compressed text\n fields.\n --\u003e\n \u003cenableLazyFieldLoading\u003etrue\u003c/enableLazyFieldLoading\u003e\n\n \u003c!-- Result Window Size\n\n An optimization for use with the queryResultCache. When a search\n is requested, a superset of the requested number of document ids\n are collected. For example, if a search for a particular query\n requests matching documents 10 through 19, and queryWindowSize is 50,\n then documents 0 through 49 will be collected and cached. Any further\n requests in that range can be satisfied via the cache. \n --\u003e\n \u003cqueryResultWindowSize\u003e20\u003c/queryResultWindowSize\u003e\n\n \u003c!-- Maximum number of documents to cache for any entry in the\n queryResultCache. \n --\u003e\n \u003cqueryResultMaxDocsCached\u003e200\u003c/queryResultMaxDocsCached\u003e\n\n \u003c!-- Use Cold Searcher\n\n If a search request comes in and there is no current\n registered searcher, then immediately register the still\n warming searcher and use it. If \"false\" then all requests\n will block until the first searcher is done warming.\n --\u003e\n \u003cuseColdSearcher\u003efalse\u003c/useColdSearcher\u003e\n\n \u003c!-- Max Warming Searchers\n \n Maximum number of searchers that may be warming in the\n background concurrently. An error is returned if this limit\n is exceeded.\n\n Recommend values of 1-2 for read-only slaves, higher for\n masters w/o cache warming.\n --\u003e\n \u003cmaxWarmingSearchers\u003e2\u003c/maxWarmingSearchers\u003e\n\n \u003c/query\u003e\n\n\n \u003c!-- Request Dispatcher\n\n This section contains instructions for how the SolrDispatchFilter\n should behave when processing requests for this SolrCore.\n\n handleSelect is a legacy option that affects the behavior of requests\n such as /select?qt=XXX\n\n handleSelect=\"true\" will cause the SolrDispatchFilter to process\n the request and dispatch the query to a handler specified by the \n \"qt\" param, assuming \"/select\" isn't already registered.\n\n handleSelect=\"false\" will cause the SolrDispatchFilter to\n ignore \"/select\" requests, resulting in a 404 unless a handler\n is explicitly registered with the name \"/select\"\n\n handleSelect=\"true\" is not recommended for new users, but is the default\n for backwards compatibility\n --\u003e\n \u003crequestDispatcher handleSelect=\"false\" \u003e\n \u003c!-- Request Parsing\n\n These settings indicate how Solr Requests may be parsed, and\n what restrictions may be placed on the ContentStreams from\n those requests\n\n enableRemoteStreaming - enables use of the stream.file\n and stream.url parameters for specifying remote streams.\n\n multipartUploadLimitInKB - specifies the max size (in KiB) of\n Multipart File Uploads that Solr will allow in a Request.\n \n formdataUploadLimitInKB - specifies the max size (in KiB) of\n form data (application/x-www-form-urlencoded) sent via\n POST. You can use POST to pass request parameters not\n fitting into the URL.\n \n addHttpRequestToContext - if set to true, it will instruct\n the requestParsers to include the original HttpServletRequest\n object in the context map of the SolrQueryRequest under the \n key \"httpRequest\". It will not be used by any of the existing\n Solr components, but may be useful when developing custom \n plugins.\n \n *** WARNING ***\n The settings below authorize Solr to fetch remote files, You\n should make sure your system has some authentication before\n using enableRemoteStreaming=\"true\"\n\n --\u003e \n \u003crequestParsers enableRemoteStreaming=\"true\" \n multipartUploadLimitInKB=\"2048000\"\n formdataUploadLimitInKB=\"2048\"\n addHttpRequestToContext=\"false\"/\u003e\n\n \u003c!-- HTTP Caching\n\n Set HTTP caching related parameters (for proxy caches and clients).\n\n The options below instruct Solr not to output any HTTP Caching\n related headers\n --\u003e\n \u003chttpCaching never304=\"true\" /\u003e\n\n \u003c/requestDispatcher\u003e\n\n \u003c!-- Request Handlers \n\n http://wiki.apache.org/solr/SolrRequestHandler\n\n Incoming queries will be dispatched to a specific handler by name\n based on the path specified in the request.\n\n Legacy behavior: If the request path uses \"/select\" but no Request\n Handler has that name, and if handleSelect=\"true\" has been specified in\n the requestDispatcher, then the Request Handler is dispatched based on\n the qt parameter. Handlers without a leading '/' are accessed this way\n like so: http://host/app/[core/]select?qt=name If no qt is\n given, then the requestHandler that declares default=\"true\" will be\n used or the one named \"standard\".\n\n If a Request Handler is declared with startup=\"lazy\", then it will\n not be initialized until the first request that uses it.\n\n --\u003e\n \u003c!-- SearchHandler\n\n http://wiki.apache.org/solr/SearchHandler\n\n For processing Search Queries, the primary Request Handler\n provided with Solr is \"SearchHandler\" It delegates to a sequent\n of SearchComponents (see below) and supports distributed\n queries across multiple shards\n --\u003e\n \u003crequestHandler name=\"/select\" class=\"solr.SearchHandler\"\u003e\n \u003c!-- default values for query parameters can be specified, these\n will be overridden by parameters in the request\n --\u003e\n \u003clst name=\"defaults\"\u003e\n \u003cstr name=\"echoParams\"\u003eexplicit\u003c/str\u003e\n \u003cint name=\"rows\"\u003e10\u003c/int\u003e\n \u003c/lst\u003e\n\n \u003c/requestHandler\u003e\n\n \u003c!-- A request handler that returns indented JSON by default --\u003e\n \u003crequestHandler name=\"/query\" class=\"solr.SearchHandler\"\u003e\n \u003clst name=\"defaults\"\u003e\n \u003cstr name=\"echoParams\"\u003eexplicit\u003c/str\u003e\n \u003cstr name=\"wt\"\u003ejson\u003c/str\u003e\n \u003cstr name=\"indent\"\u003etrue\u003c/str\u003e\n \u003cstr name=\"df\"\u003etext\u003c/str\u003e\n \u003c/lst\u003e\n \u003c/requestHandler\u003e\n\n \u003c!--\n The export request handler is used to export full sorted result sets.\n Do not change these defaults.\n --\u003e\n \u003crequestHandler name=\"/export\" class=\"solr.SearchHandler\"\u003e\n \u003clst name=\"invariants\"\u003e\n \u003cstr name=\"rq\"\u003e{!xport}\u003c/str\u003e\n \u003cstr name=\"wt\"\u003exsort\u003c/str\u003e\n \u003cstr name=\"distrib\"\u003efalse\u003c/str\u003e\n \u003c/lst\u003e\n\n \u003carr name=\"components\"\u003e\n \u003cstr\u003equery\u003c/str\u003e\n \u003c/arr\u003e\n \u003c/requestHandler\u003e\n\n\n \u003cinitParams path=\"/update/**,/query,/select,/tvrh,/elevate,/spell\"\u003e\n \u003clst name=\"defaults\"\u003e\n \u003cstr name=\"df\"\u003etext\u003c/str\u003e\n \u003c/lst\u003e\n \u003c/initParams\u003e\n\n \u003c!-- Field Analysis Request Handler\n\n RequestHandler that provides much the same functionality as\n analysis.jsp. Provides the ability to specify multiple field\n types and field names in the same request and outputs\n index-time and query-time analysis for each of them.\n\n Request parameters are:\n analysis.fieldname - field name whose analyzers are to be used\n\n analysis.fieldtype - field type whose analyzers are to be used\n analysis.fieldvalue - text for index-time analysis\n q (or analysis.q) - text for query time analysis\n analysis.showmatch (true|false) - When set to true and when\n query analysis is performed, the produced tokens of the\n field value analysis will be marked as \"matched\" for every\n token that is produces by the query analysis\n --\u003e\n \u003crequestHandler name=\"/analysis/field\" \n startup=\"lazy\"\n class=\"solr.FieldAnalysisRequestHandler\" /\u003e\n\n\n \u003c!-- Document Analysis Handler\n\n http://wiki.apache.org/solr/AnalysisRequestHandler\n\n An analysis handler that provides a breakdown of the analysis\n process of provided documents. This handler expects a (single)\n content stream with the following format:\n\n \u003cdocs\u003e\n \u003cdoc\u003e\n \u003cfield name=\"id\"\u003e1\u003c/field\u003e\n \u003cfield name=\"name\"\u003eThe Name\u003c/field\u003e\n \u003cfield name=\"text\"\u003eThe Text Value\u003c/field\u003e\n \u003c/doc\u003e\n \u003cdoc\u003e...\u003c/doc\u003e\n \u003cdoc\u003e...\u003c/doc\u003e\n ...\n \u003c/docs\u003e\n\n Note: Each document must contain a field which serves as the\n unique key. This key is used in the returned response to associate\n an analysis breakdown to the analyzed document.\n\n Like the FieldAnalysisRequestHandler, this handler also supports\n query analysis by sending either an \"analysis.query\" or \"q\"\n request parameter that holds the query text to be analyzed. It\n also supports the \"analysis.showmatch\" parameter which when set to\n true, all field tokens that match the query tokens will be marked\n as a \"match\". \n --\u003e\n \u003crequestHandler name=\"/analysis/document\" \n class=\"solr.DocumentAnalysisRequestHandler\" \n startup=\"lazy\" /\u003e\n\n \u003c!-- Echo the request contents back to the client --\u003e\n \u003crequestHandler name=\"/debug/dump\" class=\"solr.DumpRequestHandler\" \u003e\n \u003clst name=\"defaults\"\u003e\n \u003cstr name=\"echoParams\"\u003eexplicit\u003c/str\u003e \n \u003cstr name=\"echoHandler\"\u003etrue\u003c/str\u003e\n \u003c/lst\u003e\n \u003c/requestHandler\u003e\n \n\n\n \u003c!-- Search Components\n\n Search components are registered to SolrCore and used by \n instances of SearchHandler (which can access them by name)\n \n By default, the following components are available:\n \n \u003csearchComponent name=\"query\" class=\"solr.QueryComponent\" /\u003e\n \u003csearchComponent name=\"facet\" class=\"solr.FacetComponent\" /\u003e\n \u003csearchComponent name=\"mlt\" class=\"solr.MoreLikeThisComponent\" /\u003e\n \u003csearchComponent name=\"highlight\" class=\"solr.HighlightComponent\" /\u003e\n \u003csearchComponent name=\"stats\" class=\"solr.StatsComponent\" /\u003e\n \u003csearchComponent name=\"debug\" class=\"solr.DebugComponent\" /\u003e\n \n --\u003e\n\n \u003c!-- Terms Component\n\n http://wiki.apache.org/solr/TermsComponent\n\n A component to return terms and document frequency of those\n terms\n --\u003e\n \u003csearchComponent name=\"terms\" class=\"solr.TermsComponent\"/\u003e\n\n \u003c!-- A request handler for demonstrating the terms component --\u003e\n \u003crequestHandler name=\"/terms\" class=\"solr.SearchHandler\" startup=\"lazy\"\u003e\n \u003clst name=\"defaults\"\u003e\n \u003cbool name=\"terms\"\u003etrue\u003c/bool\u003e\n \u003cbool name=\"distrib\"\u003efalse\u003c/bool\u003e\n \u003c/lst\u003e \n \u003carr name=\"components\"\u003e\n \u003cstr\u003eterms\u003c/str\u003e\n \u003c/arr\u003e\n \u003c/requestHandler\u003e\n\n \u003c!-- Request handler for health checks; does a simplistic query --\u003e\n \u003crequestHandler name=\"/ping\" class=\"solr.PingRequestHandler\"\u003e\n \u003clst name=\"invariants\"\u003e\n \u003cstr name=\"q\"\u003esolrpingquery\u003c/str\u003e\n \u003c/lst\u003e\n \u003clst name=\"defaults\"\u003e\n \u003cstr name=\"echoParams\"\u003eall\u003c/str\u003e\n \u003cstr name=\"df\"\u003eid\u003c/str\u003e\n \u003c/lst\u003e\n \u003c/requestHandler\u003e\n\n \u003c!-- Legacy config for the admin interface --\u003e\n \u003cadmin\u003e\n \u003cdefaultQuery\u003e*:*\u003c/defaultQuery\u003e\n \u003c/admin\u003e\n\n\u003c/config\u003e\n" }, "/opt/solr/server/solr/solr.xml": { "Filename": "/opt/solr/server/solr/solr.xml", "Owner": "root:root", "Permissions": "0664", "Content": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\" ?\u003e\n\u003c!--\n Licensed to the Apache Software Foundation (ASF) under one or more\n contributor license agreements. See the NOTICE file distributed with\n this work for additional information regarding copyright ownership.\n The ASF licenses this file to You under the Apache License, Version 2.0\n (the \"License\"); you may not use this file except in compliance with\n the License. You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n--\u003e\n\n\u003c!--\n This is an example of a simple \"solr.xml\" file for configuring one or \n more Solr Cores, as well as allowing Cores to be added, removed, and \n reloaded via HTTP requests.\n\n More information about options available in this configuration file, \n and Solr Core administration can be found online:\n http://wiki.apache.org/solr/CoreAdmin\n--\u003e\n\n\u003csolr\u003e\n\n \u003csolrcloud\u003e\n\n \u003cstr name=\"host\"\u003e${host:}\u003c/str\u003e\n \u003cint name=\"hostPort\"\u003e${jetty.port:8983}\u003c/int\u003e\n \u003cstr name=\"hostContext\"\u003e${hostContext:solr}\u003c/str\u003e\n\n \u003cbool name=\"genericCoreNodeNames\"\u003e${genericCoreNodeNames:true}\u003c/bool\u003e\n\n \u003cint name=\"zkClientTimeout\"\u003e${zkClientTimeout:30000}\u003c/int\u003e\n \u003cint name=\"distribUpdateSoTimeout\"\u003e${distribUpdateSoTimeout:600000}\u003c/int\u003e\n \u003cint name=\"distribUpdateConnTimeout\"\u003e${distribUpdateConnTimeout:60000}\u003c/int\u003e\n\n \u003c/solrcloud\u003e\n\n \u003cshardHandlerFactory name=\"shardHandlerFactory\" class=\"HttpShardHandlerFactory\"\u003e\n \u003cint name=\"socketTimeout\"\u003e${socketTimeout:600000}\u003c/int\u003e\n \u003cint name=\"connTimeout\"\u003e${connTimeout:60000}\u003c/int\u003e\n \u003c/shardHandlerFactory\u003e\n\n\u003c/solr\u003e\n" }, "/opt/solr/zenoss/etc/solr.in.sh": { "Filename": "/opt/solr/zenoss/etc/solr.in.sh", "Owner": "root:root", "Permissions": "0664", "Content": "# This file is injected by ControlCenter with container-specific parameters\n# ZK_HOST={{with $zks := (child (child (parent .) \"HBase\") \"ZooKeeper\").Instances }}{{range (each $zks)}}127.0.0.1:{{plus 2181 .}}{{if ne (plus 1 .) $zks}},{{end}}{{end}}{{end}}/solr\nSOLR_JAVA_MEM=\"-Xmx{{.RAMCommitment}}\"\n\n" }, "/opt/solr/zenoss/etc/supervisor.conf": { "Filename": "/opt/solr/zenoss/etc/supervisor.conf", "Owner": "root:root", "Permissions": "0664", "Content": "[supervisord]\nnodaemon=true\nlogfile = /opt/zenoss/log/solr_supervisord.log\n\n[unix_http_server]\nfile=/tmp/supervisor.sock\n\n[supervisorctl]\nserverurl=unix:///tmp/supervisor.sock ; use a unix:// URL for a unix socket\n\n[rpcinterface:supervisor]\nsupervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface\n\n[program:solr]\ncommand=setuser zenoss /opt/solr/zenoss/bin/start-solr -cloud -Dbootstrap_confdir=/opt/solr/server/solr/configsets/zenoss_model/conf -Dcollection.configName=zenoss_model -Dsolr.jetty.request.header.size=1000000\nautorestart=true\nautostart=true\nstartsecs=5\npriority=1\n\n[program:solr_metrics]\ncommand=/usr/bin/python /opt/zenoss/bin/metrics/solrstats.py\nautorestart=true\nautostart=true\nstartsecs=5\n\n; logging\nredirect_stderr=true\nstdout_logfile_maxbytes=10MB\nstdout_logfile_backups=10\nstdout_logfile=/opt/zenoss/log/%(program_name)s.log\n" } }, "Context": null, "Endpoints": [ { "Name": "solr", "Purpose": "export", "Protocol": "tcp", "PortNumber": 8983, "PortTemplate": "", "VirtualAddress": "", "Application": "zodb_solr", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": [ { "Name": "solr", "Enabled": false } ], "PortList": null } ], "Services": [], "LogFilters": null, "Volumes": [ { "Owner": "zenoss:zenoss", "Permission": "0750", "ResourcePath": "solr-logs-{{.InstanceID}}", "ContainerPath": "/opt/solr/server/logs", "Type": "", "InitContainerPath": "", "ExcludeFromBackups": false }, { "Owner": "zenoss:zenoss", "Permission": "0750", "ResourcePath": "solr-{{.InstanceID}}", "ContainerPath": "/var/solr/data", "Type": "", "InitContainerPath": "", "ExcludeFromBackups": false } ], "LogConfigs": [ { "Path": "/var/solr/logs/solr.log", "Type": "solr", "Filters": [ "solr" ], "LogTags": null, "IsAudit": false } ], "Snapshot": { "Pause": "", "Resume": "" }, "RAMCommitment": "1G", "CPUCommitment": 2, "DisableShell": false, "Runs": null, "Commands": null, "Actions": null, "HealthChecks": { "answering": { "Script": "curl -A 'Solr answering healthcheck' -s http://localhost:8983/solr/zenoss_model/admin/ping?wt=json | grep -q '\"status\":\"OK\"'", "Timeout": 0, "Interval": 10, "Tolerance": 0 }, "embedded_zk_answering": { "Script": "{ echo stats; sleep 1; } | nc 127.0.0.1 9983 | grep -q Zookeeper", "Timeout": 0, "Interval": 10, "Tolerance": 0 }, "zk_connected": { "Script": "curl -A 'Solr zk_connected healthcheck' -s http://localhost:8983/solr/zenoss_model/admin/ping?wt=json | grep -q '\"zkConnected\":true'", "Timeout": 0, "Interval": 10, "Tolerance": 0 } }, "Prereqs": [], "MonitoringProfile": { "MetricConfigs": null, "GraphConfigs": null, "ThresholdConfigs": null }, "MemoryLimit": 0, "CPUShares": 0, "PIDFile": "", "StartLevel": 1, "EmergencyShutdownLevel": 1 }, { "Name": "mariadb", "Title": "", "Version": "", "Command": "/usr/bin/mysqld_safe", "Description": "MariaDB database server", "Environment": null, "Tags": [ "daemon" ], "ImageID": "zenoss/core_6.2:6.2.1_1", "Instances": { "Min": 1, "Max": 0, "Default": 0 }, "ChangeOptions": null, "Launch": "auto", "HostPolicy": "", "Hostname": "", "Privileged": false, "ConfigFiles": { "/etc/my.cnf": { "Filename": "/etc/my.cnf", "Owner": "", "Permissions": "", "Content": "#---------------------------------------------------------------------------\n# Zenoss DataStore Configuration\n#---------------------------------------------------------------------------\n[mysqld]\ninnodb_file_per_table\nskip_external_locking\nskip-host-cache\nskip-name-resolve\nlog_error=/var/log/mysqld.log\n\n# Buffer pool instances should equal number of cores (subtract 1 for VMs) \n# Buffer pool size should be at least 1G per instance per MySQL documentation \ninnodb_buffer_pool_instances = 3 \ninnodb_buffer_pool_size = {{percentScale .RAMCommitment 0.8}} \n\n# TODO: Log file size should be 25% of of buffer pool size, but this cannot be\n# easily adjusted after image creation time.\ninnodb_log_file_size = 200M\ninnodb_additional_mem_pool_size = 32M\ninnodb_log_buffer_size = 8M\ninnodb_flush_method = O_DIRECT\ninnodb_flush_log_at_trx_commit = 2\n\n# In previous releases of MySQL, this was recommended to be set to 2 times the\n# number of CPUs, however the default and recommended option in 5.5 is to not\n# set a bound on the thread pool size.\ninnodb_thread_concurrency = 0\n\n# Setting this setting to 0 is recommended in virtualized environments. If\n# not running virtualized, a higher value can result in improved database\n# performance; the default value 6 is used if this setting is commented out.\ninnodb_spin_wait_delay = 0\n\n# In large installs, there were a significant number of mutex waits on the \n# adaptive hash index, and this needed to be disabled.\n#innodb_adaptive_hash_index = OFF\n\n# Use the Barracuda file format which enables support for dynamic and \n# compressed row formats.\ninnodb_file_format = Barracuda\n\n# Enable the thread pool - recommended on 5.5.16 and later.\nthread_pool_size = 32\n\n# Disable the query cache - it provides negligible performance improvements\n# and leads to significant thread contention under load.\nquery_cache_size = 0\nquery_cache_type = OFF\n\nmax_allowed_packet = 64M\nwait_timeout = 7200\n\n# Enable dedicated purge thread. (default is 0)\ninnodb_purge_threads = 1\n\n# Introduce operation lag to allow purge operations. (default is 0)\ninnodb_max_purge_lag = 0\n\n# Increase number of connections + open file handles\nmax_connections = 500\n\n[mysql]\nmax_allowed_packet = 64M\n\n[mysqldump]\nmax_allowed_packet = 64M\n" } }, "Context": null, "Endpoints": [ { "Name": "mariadb", "Purpose": "export", "Protocol": "tcp", "PortNumber": 3306, "PortTemplate": "", "VirtualAddress": "", "Application": "zodb_mariadb", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null } ], "Services": [], "LogFilters": null, "Volumes": [ { "Owner": "mysql:mysql", "Permission": "0755", "ResourcePath": "mariadb", "ContainerPath": "/var/lib/mysql", "Type": "", "InitContainerPath": "", "ExcludeFromBackups": false } ], "LogConfigs": [ { "Path": "/var/log/mysqld.log", "Type": "mariadb", "Filters": [ "mariadb" ], "LogTags": null, "IsAudit": false } ], "Snapshot": { "Pause": "PAUSE_CHECK_TIMEOUT=60 LOCK_HOLD_DURATION=600 ${ZENHOME:-/opt/zenoss}/bin/quiesce-mariadb.sh pause", "Resume": "${ZENHOME:-/opt/zenoss}/bin/quiesce-mariadb.sh resume" }, "RAMCommitment": "1G", "CPUCommitment": 2, "DisableShell": false, "Runs": null, "Commands": {}, "Actions": null, "HealthChecks": { "answering": { "Script": "mysql --protocol TCP -u{{(getContext . \"global.conf.zodb-admin-user\")}} -h{{(getContext . \"global.conf.zodb-host\")}} -P{{(getContext . \"global.conf.zodb-port\")}} -p{{getContext . \"global.conf.zodb-admin-password\"}} -e 'select 1' \u003e /dev/null", "Timeout": 0, "Interval": 5, "Tolerance": 0 } }, "Prereqs": null, "MonitoringProfile": { "MetricConfigs": null, "GraphConfigs": null, "ThresholdConfigs": null }, "MemoryLimit": 0, "CPUShares": 0, "PIDFile": "exec echo /var/lib/mysql/$(hostname).pid", "StartLevel": 1, "EmergencyShutdownLevel": 1 }, { "Name": "memcached", "Title": "", "Version": "", "Command": "${ZENHOME:-/opt/zenoss}/bin/zenmemcached", "Description": "Free \u0026 open source, high-performance, distributed memory object caching system", "Environment": null, "Tags": [ "daemon" ], "ImageID": "zenoss/core_6.2:6.2.1_1", "Instances": { "Min": 1, "Max": 0, "Default": 0 }, "ChangeOptions": null, "Launch": "auto", "HostPolicy": "", "Hostname": "", "Privileged": false, "ConfigFiles": { "/etc/sysconfig/memcached": { "Filename": "/etc/sysconfig/memcached", "Owner": "root:root", "Permissions": "0644", "Content": "PORT=\"11211\"\nUSER=\"nobody\"\nMAXCONN=\"1024\"\nCACHESIZE=\"{{percentScale .RAMCommitment 0.9 | bytesToMB}}\"\n{{ $size := (getContext . \"global.conf.zodb-cache-max-object-size\") }}\nOPTIONS=\"-v -R 4096 -I {{if $size}} {{$size}} {{else}} 1048576 {{end}}\"\n" } }, "Context": null, "Endpoints": [ { "Name": "memcached", "Purpose": "export", "Protocol": "tcp", "PortNumber": 11211, "PortTemplate": "", "VirtualAddress": "", "Application": "memcached", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null } ], "Services": [], "LogFilters": null, "Volumes": null, "LogConfigs": null, "Snapshot": { "Pause": "", "Resume": "" }, "RAMCommitment": "1G", "CPUCommitment": 1, "DisableShell": false, "Runs": null, "Commands": null, "Actions": null, "HealthChecks": { "answering": { "Script": "{ echo stats; sleep 1; } | nc 127.0.0.1 11211 | grep -q uptime", "Timeout": 0, "Interval": 5, "Tolerance": 0 } }, "Prereqs": null, "MonitoringProfile": { "MetricConfigs": null, "GraphConfigs": null, "ThresholdConfigs": null }, "MemoryLimit": 0, "CPUShares": 0, "PIDFile": "", "StartLevel": 1, "EmergencyShutdownLevel": 0 } ], "LogFilters": null, "Volumes": null, "LogConfigs": null, "Snapshot": { "Pause": "", "Resume": "" }, "RAMCommitment": "", "CPUCommitment": 0, "DisableShell": false, "Runs": null, "Commands": null, "Actions": null, "HealthChecks": null, "Prereqs": null, "MonitoringProfile": { "MetricConfigs": null, "GraphConfigs": null, "ThresholdConfigs": null }, "MemoryLimit": 0, "CPUShares": 0, "PIDFile": "", "StartLevel": 0, "EmergencyShutdownLevel": 0 }, { "Name": "Zenoss", "Title": "", "Version": "", "Command": "", "Description": "", "Environment": null, "Tags": [ "zenoss-application" ], "ImageID": "", "Instances": { "Min": 0, "Max": 0, "Default": 0 }, "ChangeOptions": null, "Launch": "auto", "HostPolicy": "", "Hostname": "", "Privileged": false, "ConfigFiles": {}, "Context": null, "Endpoints": null, "Services": [ { "Name": "Events", "Title": "", "Version": "", "Command": "", "Description": "", "Environment": null, "Tags": [ "zenoss-events" ], "ImageID": "", "Instances": { "Min": 0, "Max": 0, "Default": 0 }, "ChangeOptions": null, "Launch": "auto", "HostPolicy": "", "Hostname": "", "Privileged": false, "ConfigFiles": {}, "Context": null, "Endpoints": null, "Services": [ { "Name": "zenactiond", "Title": "", "Version": "", "Command": "su - zenoss -c \"/opt/zenoss/bin/zenactiond run -c --logfileonly --workerid $CONTROLPLANE_INSTANCE_ID \"", "Description": "Runs background jobs such as email notification, database aging, and maintenance window processing", "Environment": null, "Tags": [ "daemon" ], "ImageID": "zenoss/core_6.2:6.2.1_1", "Instances": { "Min": 1, "Max": 0, "Default": 0 }, "ChangeOptions": null, "Launch": "auto", "HostPolicy": "", "Hostname": "", "Privileged": false, "ConfigFiles": { "/opt/zenoss/etc/global.conf": { "Filename": "/opt/zenoss/etc/global.conf", "Owner": "zenoss:zenoss", "Permissions": "660", "Content": "# Generated by serviced\n{{range $k,$v:=contextFilter . \"global.conf.\"}}{{$k}} {{$v}}\n{{end}}" }, "/opt/zenoss/etc/zenactiond.conf": { "Filename": "/opt/zenoss/etc/zenactiond.conf", "Owner": "zenoss:zenoss", "Permissions": "0664", "Content": "#\n# Configuration file for zenactiond\n#\n# To enable a particular option, uncomment the desired entry.\n#\n# Parameter Setting\n# --------- -------\n#\n# Use an alternate configuration file\n#configfile /opt/zenoss/etc/zenactiond.conf\n#\n# Generate an XML file containing command-line\n# switches., default: False\n#genxmlconfigs False\n#\n# User to become when running default:zenoss,\n# default: zenoss\n#uid zenoss\n#\n# Cycle continuously on cycleInterval\n# from Zope, default: False\n#cycle False\n#\n# Launch into the background, default: False\n#daemon False\n#\n# Log to console and log file, default: False\n#duallog False\n#\n# Log to log file and not console, default:\n# False\n#logfileonly False\n#\n# output log info in HTML table format,\n# default: False\n#weblog False\n#\n# Run under a supervisor which will restart\n# it, default: False\n#watchdog False\n#\n# The path to the watchdog reporting socket\n#watchdogPath None\n#\n# Wait seconds for initial heartbeat\n#starttimeout None\n#\n# Set listener socket options. For option\n# details: man 7 socket, default: []\n#socketOption []\n#\n# Cycle, in seconds, for maintenance tasks.\n# Default is 60., default: 60\n#maintenancecycle 60\n#\n# Max number of action commands to perform\n# concurrently (default: 10), default: 10\n#maxcommands 10\n#\n# http path to the root of the zope server\n# (default: http://localhost:8080), default:\n# http://localhost:8080\n#zopeurl http://localhost:8080\n#\n# Name of monitor instance to use for\n# heartbeat events. Default is localhost.,\n# default: localhost\n#monitor localhost\n#\n# How often to check to see if there are\n# any maintenance windows to execute,\n# default: 60\n#maintenance-window-cycletime 60\n#\n# Logging severity threshold, default: 20\n#logseverity 20\n#\n# Override the default logging path; default\n# $ZENHOME/log, default: /opt/zenoss/log\n#logpath /opt/zenoss/log\n#\n# Max size of log file in KB; default\n# 10240, default: 10240\n#maxlogsize 10240\n#\n# Max number of back up log files; default\n# 3, default: 3\n#maxbackuplogs 3\n#\n# root object for data load (i.e. /zport/dmd),\n# default: /zport/dmd\n#zodb-dataroot /zport/dmd\n#\n# in memory cachesize default: 1000, default:\n# 1000\n#zodb-cachesize 1000\n#\n# hostname of the MySQL server for ZODB,\n# default: 127.0.0.1\n#zodb-host 127.0.0.1\n#\n# port of the MySQL server for ZODB, default:\n# 3306\n#zodb-port 3306\n#\n# user of the MySQL server for ZODB, default:\n# zenoss\n#zodb-user zenoss\n#\n# password of the MySQL server for ZODB,\n# default: zenoss\n#zodb-password zenoss\n#\n# Name of database for MySQL object store,\n# default: zodb\n#zodb-db zodb\n#\n# Name of socket file for MySQL server\n# connection if host is localhost\n#zodb-socket None\n#\n# memcached servers to use for object\n# cache (eg. 127.0.0.1:11211), default:\n# 127.0.0.1:11211\n#zodb-cacheservers 127.0.0.1:11211\n#\n# Specify the number of seconds a database\n# connection will wait to acquire a database\n# 'commit' lock before failing (defaults\n# to 30 seconds if not specified)., default:\n# 30\n#zodb-commit-lock-timeout 30\n#\n# Heartbeat timeout, default: 900 sec.\n#heartbeattimeout 900\n#\n" } }, "Context": null, "Endpoints": [ { "Name": "mariadb", "Purpose": "import", "Protocol": "", "PortNumber": 0, "PortTemplate": "", "VirtualAddress": "", "Application": "zodb_.*", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "memcached", "Purpose": "import", "Protocol": "tcp", "PortNumber": 11211, "PortTemplate": "", "VirtualAddress": "", "Application": "memcached", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "redis", "Purpose": "import", "Protocol": "tcp", "PortNumber": 6379, "PortTemplate": "", "VirtualAddress": "", "Application": "redis", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "rabbitmq", "Purpose": "import", "Protocol": "", "PortNumber": 0, "PortTemplate": "", "VirtualAddress": "", "Application": "rabbitmq.*", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "zenhub_rpc", "Purpose": "import", "Protocol": "tcp", "PortNumber": 8081, "PortTemplate": "", "VirtualAddress": "", "Application": "localhost_zenhubXMLRpc", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "zep", "Purpose": "import", "Protocol": "tcp", "PortNumber": 8084, "PortTemplate": "", "VirtualAddress": "", "Application": "zep", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "controlplane_consumer", "Purpose": "import", "Protocol": "tcp", "PortNumber": 8444, "PortTemplate": "", "VirtualAddress": "", "Application": "controlplane_consumer", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null } ], "Services": [], "LogFilters": null, "Volumes": [ { "Owner": "zenoss:zenoss", "Permission": "0755", "ResourcePath": ".ssh", "ContainerPath": "/home/zenoss/.ssh", "Type": "", "InitContainerPath": "", "ExcludeFromBackups": false }, { "Owner": "zenoss:zenoss", "Permission": "0775", "ResourcePath": "var-zenpacks", "ContainerPath": "/var/zenoss", "Type": "", "InitContainerPath": "", "ExcludeFromBackups": false } ], "LogConfigs": [ { "Path": "/opt/zenoss/log/zenactiond.log", "Type": "zenactiond", "Filters": null, "LogTags": null, "IsAudit": false } ], "Snapshot": { "Pause": "", "Resume": "" }, "RAMCommitment": "256M", "CPUCommitment": 1, "DisableShell": false, "Runs": null, "Commands": null, "Actions": { "debug": "su - zenoss -c '${ZENHOME:-/opt/zenoss}/bin/{{.Name}} debug'", "stats": "su - zenoss -c '${ZENHOME:-/opt/zenoss}/bin/{{.Name}} stats'" }, "HealthChecks": { "mariadb_answering": { "Script": "/opt/zenoss/bin/healthchecks/mariadb_answering", "Timeout": 0, "Interval": 10, "Tolerance": 0 }, "rabbit_answering": { "Script": "/opt/zenoss/bin/healthchecks/rabbit_answering {{(getContext . \"global.conf.amqpuser\")}} {{(getContext . \"global.conf.amqppassword\")}}", "Timeout": 0, "Interval": 10, "Tolerance": 0 }, "redis_answering": { "Script": "/opt/zenoss/bin/healthchecks/redis_answering", "Timeout": 0, "Interval": 5, "Tolerance": 0 }, "running": { "Script": "pgrep -fu zenoss zenactiond.py \u003e /dev/null", "Timeout": 0, "Interval": 5, "Tolerance": 0 }, "solr_answering": { "Script": "curl -A 'Solr answering healthcheck' -s http://localhost:8983/solr/zenoss_model/admin/ping?wt=json | grep -q '\"status\":\"OK\"'", "Timeout": 0, "Interval": 10, "Tolerance": 0 } }, "Prereqs": [ { "Name": "MariaDB connectivity", "Script": "export TERM=xterm; mysql --host=127.0.0.1 --port=3306 -c ';' 2\u003e\u00261 | grep denied" } ], "MonitoringProfile": { "MetricConfigs": null, "GraphConfigs": null, "ThresholdConfigs": null }, "MemoryLimit": 0, "CPUShares": 0, "PIDFile": "", "StartLevel": 0, "EmergencyShutdownLevel": 0 }, { "Name": "zeneventd", "Title": "", "Version": "", "Command": "su - zenoss -c \"/usr/bin/nice -n 10 /opt/zenoss/bin/zeneventd run -c --logfileonly \"", "Description": "Performs event mappings, transformations, and other data-driven event processing tasks", "Environment": null, "Tags": [ "daemon" ], "ImageID": "zenoss/core_6.2:6.2.1_1", "Instances": { "Min": 1, "Max": 0, "Default": 0 }, "ChangeOptions": null, "Launch": "auto", "HostPolicy": "", "Hostname": "", "Privileged": false, "ConfigFiles": { "/opt/zenoss/etc/global.conf": { "Filename": "/opt/zenoss/etc/global.conf", "Owner": "zenoss:zenoss", "Permissions": "660", "Content": "# Generated by serviced\n{{range $k,$v:=contextFilter . \"global.conf.\"}}{{$k}} {{$v}}\n{{end}}" }, "/opt/zenoss/etc/zeneventd.conf": { "Filename": "/opt/zenoss/etc/zeneventd.conf", "Owner": "zenoss:zenoss", "Permissions": "0664", "Content": "#\n# Configuration file for zeneventd\n#\n# To enable a particular option, uncomment the desired entry.\n#\n# Parameter Setting\n# --------- -------\n#\n# Use an alternate configuration file\n#configfile /opt/zenoss/etc/zeneventd.conf\n#\n# Generate an XML file containing command-line\n# switches., default: False\n#genxmlconfigs False\n#\n# User to become when running default:zenoss,\n# default: zenoss\n#uid zenoss\n#\n# Cycle continuously on cycleInterval\n# from Zope, default: False\n#cycle False\n#\n# Launch into the background, default: False\n#daemon False\n#\n# Log to console and log file, default: False\n#duallog False\n#\n# Log to log file and not console, default:\n# False\n#logfileonly False\n#\n# output log info in HTML table format,\n# default: False\n#weblog False\n#\n# Run under a supervisor which will restart\n# it, default: False\n#watchdog False\n#\n# The path to the watchdog reporting socket\n#watchdogPath None\n#\n# Wait seconds for initial heartbeat\n#starttimeout None\n#\n# Set listener socket options. For option\n# details: man 7 socket, default: []\n#socketOption []\n#\n# Cycle, in seconds, for maintenance tasks.\n# Default is 60., default: 60\n#maintenancecycle 60\n#\n# Force sync() before processing every\n# event; default is to sync() no more\n# often than once every 1/2 second.,\n# default: False\n#synceveryevent False\n#\n# Sets the number of messages each worker\n# gets from the queue at any given time.\n# Default is 1. Change this only if event\n# processing is deemed slow. Note that\n# increasing the value increases the\n# probability that events will be processed\n# out of order., default: 1\n#messagesperworker 1\n#\n# Logging severity threshold, default: 20\n#logseverity 20\n#\n# Override the default logging path; default\n# $ZENHOME/log, default: /opt/zenoss/log\n#logpath /opt/zenoss/log\n#\n# Max size of log file in KB; default\n# 10240, default: 10240\n#maxlogsize 10240\n#\n# Max number of back up log files; default\n# 3, default: 3\n#maxbackuplogs 3\n#\n# root object for data load (i.e. /zport/dmd),\n# default: /zport/dmd\n#zodb-dataroot /zport/dmd\n#\n# in memory cachesize default: 1000, default:\n# 1000\n#zodb-cachesize 1000\n#\n# hostname of the MySQL server for ZODB,\n# default: 127.0.0.1\n#zodb-host 127.0.0.1\n#\n# port of the MySQL server for ZODB, default:\n# 3306\n#zodb-port 3306\n#\n# user of the MySQL server for ZODB, default:\n# zenoss\n#zodb-user zenoss\n#\n# password of the MySQL server for ZODB,\n# default: zenoss\n#zodb-password zenoss\n#\n# Name of database for MySQL object store,\n# default: zodb\n#zodb-db zodb\n#\n# Name of socket file for MySQL server\n# connection if host is localhost\n#zodb-socket None\n#\n# memcached servers to use for object\n# cache (eg. 127.0.0.1:11211), default:\n# 127.0.0.1:11211\n#zodb-cacheservers 127.0.0.1:11211\n#\n# Specify the number of seconds a database\n# connection will wait to acquire a database\n# 'commit' lock before failing (defaults\n# to 30 seconds if not specified)., default:\n# 30\n#zodb-commit-lock-timeout 30\n#\n# Heartbeat timeout, default: 900 sec.\n#heartbeattimeout 900\n#\n# Timeout(in seconds) for processing each event.\n# The timeout may be extended for a transforms using,\n# signal.alarm(\u003ctimeout seconds\u003e) in the transform.\n# default: 0 (disabled)\n#process-event-timeout 0\n#\n" } }, "Context": null, "Endpoints": [ { "Name": "mariadb", "Purpose": "import", "Protocol": "", "PortNumber": 0, "PortTemplate": "", "VirtualAddress": "", "Application": "zodb_.*", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "memcached", "Purpose": "import", "Protocol": "tcp", "PortNumber": 11211, "PortTemplate": "", "VirtualAddress": "", "Application": "memcached", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "redis", "Purpose": "import", "Protocol": "tcp", "PortNumber": 6379, "PortTemplate": "", "VirtualAddress": "", "Application": "redis", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "rabbitmq", "Purpose": "import", "Protocol": "", "PortNumber": 0, "PortTemplate": "", "VirtualAddress": "", "Application": "rabbitmq.*", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "zep", "Purpose": "import", "Protocol": "tcp", "PortNumber": 8084, "PortTemplate": "", "VirtualAddress": "", "Application": "zep", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "controlplane_consumer", "Purpose": "import", "Protocol": "tcp", "PortNumber": 8444, "PortTemplate": "", "VirtualAddress": "", "Application": "controlplane_consumer", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null } ], "Services": [], "LogFilters": null, "Volumes": [ { "Owner": "zenoss:zenoss", "Permission": "0755", "ResourcePath": ".ssh", "ContainerPath": "/home/zenoss/.ssh", "Type": "", "InitContainerPath": "", "ExcludeFromBackups": false }, { "Owner": "zenoss:zenoss", "Permission": "0775", "ResourcePath": "var-zenpacks", "ContainerPath": "/var/zenoss", "Type": "", "InitContainerPath": "", "ExcludeFromBackups": false } ], "LogConfigs": [ { "Path": "/opt/zenoss/log/zeneventd.log", "Type": "zeneventd", "Filters": [ "pythondaemon" ], "LogTags": null, "IsAudit": false } ], "Snapshot": { "Pause": "", "Resume": "" }, "RAMCommitment": "256M", "CPUCommitment": 1, "DisableShell": false, "Runs": null, "Commands": null, "Actions": { "debug": "su - zenoss -c '${ZENHOME:-/opt/zenoss}/bin/{{.Name}} debug'", "stats": "su - zenoss -c '${ZENHOME:-/opt/zenoss}/bin/{{.Name}} stats'" }, "HealthChecks": { "mariadb_answering": { "Script": "/opt/zenoss/bin/healthchecks/mariadb_answering", "Timeout": 0, "Interval": 10, "Tolerance": 0 }, "rabbit_answering": { "Script": "/opt/zenoss/bin/healthchecks/rabbit_answering {{(getContext . \"global.conf.amqpuser\")}} {{(getContext . \"global.conf.amqppassword\")}}", "Timeout": 0, "Interval": 10, "Tolerance": 0 }, "redis_answering": { "Script": "/opt/zenoss/bin/healthchecks/redis_answering", "Timeout": 0, "Interval": 5, "Tolerance": 0 }, "running": { "Script": "pgrep -fu zenoss zeneventd.py \u003e/dev/null", "Timeout": 0, "Interval": 5, "Tolerance": 0 }, "solr_answering": { "Script": "curl -A 'Solr answering healthcheck' -s http://localhost:8983/solr/zenoss_model/admin/ping?wt=json | grep -q '\"status\":\"OK\"'", "Timeout": 0, "Interval": 10, "Tolerance": 0 }, "stable_workers": { "Script": "/opt/zenoss/bin/healthchecks/zeneventd/stable_workers", "Timeout": 0, "Interval": 5, "Tolerance": 0 } }, "Prereqs": [ { "Name": "MariaDB connectivity", "Script": "su - zenoss -c '/opt/zenoss/bin/python /opt/zenoss/Products/ZenUtils/ZenDB.py --usedb zodb --execsql=\";\"'" } ], "MonitoringProfile": { "MetricConfigs": null, "GraphConfigs": null, "ThresholdConfigs": null }, "MemoryLimit": 0, "CPUShares": 0, "PIDFile": "", "StartLevel": 0, "EmergencyShutdownLevel": 0 }, { "Name": "zeneventserver", "Title": "", "Version": "", "Command": "su - zenoss -c \"export DEFAULT_ZEP_JVM_ARGS='-server -Xmx{{.RAMCommitment}}' \u0026\u0026 /opt/zenoss/bin/zeneventserver run_quiet \"", "Description": "Stores and retrieves events from its database", "Environment": null, "Tags": [ "daemon" ], "ImageID": "zenoss/core_6.2:6.2.1_1", "Instances": { "Min": 1, "Max": 1, "Default": 0 }, "ChangeOptions": null, "Launch": "auto", "HostPolicy": "", "Hostname": "", "Privileged": false, "ConfigFiles": { "/opt/zenoss/etc/global.conf": { "Filename": "/opt/zenoss/etc/global.conf", "Owner": "zenoss:zenoss", "Permissions": "660", "Content": "# Generated by serviced\n{{range $k,$v:=contextFilter . \"global.conf.\"}}{{$k}} {{$v}}\n{{end}}" }, "/opt/zenoss/etc/zeneventserver.conf": { "Filename": "/opt/zenoss/etc/zeneventserver.conf", "Owner": "zenoss:zenoss", "Permissions": "0600", "Content": "# The URI to the RabbitMQ server. This property is ignored if \n# $ZENHOME/etc/global.conf can be read in which the AMQP URI will be \n# built from the properties found in that location.\n#zep.amqp.uri=amqp://zenoss:zenoss@localhost:5672/zenoss\n\n# The maximum number of concurrent API archive requests. Zero for no limit\n#zep.archive.max_requests=0\n\n# The number of milliseconds to wait between connection retries\n#zep.amqp.retry=60000\n\n# The default maximum number of events returned in an event query\n#zep.query.limit=1000\n\n# Enable throttling zenevents consumer when\n# len(event_summary_index_queue) \u003e zep.index.throttle_threshold\n#zep.index.throttle=true\n\n# Threshold at which consumer throttling is enabled, 0 is automatically sets it to 2 * zep.index.limit\n#zep.index.throttle_threshold=100000\n\n# Number of ms for event consumer to sleep when throttling\n#zep.index.throttle_sleep=100\n\n# The maximum number of minutes a closed event may not be seen again before moving to archive.\n#zep.max_event_archive_interval_minutes=43200\n\n# JDBC Protocol\n# Loaded from global.conf zep_db_type first, then falls back to the definition in this file.\n#zep.jdbc.protocol=mysql\n\n# JDBC Hostname\n# Loaded from global.conf zep_host first, then falls back to the definition in this file.\n#zep.jdbc.hostname=localhost\n\n# JDBC Port\n# Loaded from global.conf zep_port first, then falls back to the definition in this file.\n#zep.jdbc.port=3306\n\n# JDBC Database Name\n# Loaded from global.conf zep_db first, then falls back to the definition in this file.\n#zep.jdbc.dbname=zenoss_zep\n\n# JDBC Username\n# Loaded from global.conf zep_user first, then falls back to the definition in this file.\n#zep.jdbc.username=zenoss\n\n# JDBC Password\n# Loaded from global.conf zep_password first, then falls back to the definition in this file.\n#zep.jdbc.password=zenoss\n\n# The default auto commit state of pooled connections\n#zep.jdbc.pool.default_auto_commit=false\n\n# The default read only state of pooled connections\n#zep.jdbc.pool.default_read_only=false\n\n# The default transaction isolation of pooled connections\n#zep.jdbc.pool.default_transaction_isolation=2\n\n# The maximum number of active connections in the pool\n#zep.jdbc.pool.max_active=50\n\n# The maximum number of idle connections in the pool\n#zep.jdbc.pool.max_idle=25\n\n# The minimum number of idle connections in the pool\n#zep.jdbc.pool.min_idle=3\n\n# The initial number of connections in the pool\n#zep.jdbc.pool.initial_size=3\n\n# The maximum amount of time to wait for a connection from the pool\n#zep.jdbc.pool.max_wait=-1\n\n# Whether to validate connections when borrowing from the pool\n#zep.jdbc.pool.test_on_borrow=true\n\n# Whether to validate connections when returning to the pool\n#zep.jdbc.pool.test_on_return=false\n\n# Whether to validation connections periodically while idle\n#zep.jdbc.pool.test_while_idle=false\n\n# Amount of time between idle connection validation, abandoned cleaner, and\n# idle pool resizing.\n#zep.jdbc.pool.time_between_eviction_runs_millis=5000\n\n# Amount of time before a connection is considered idle\n#zep.jdbc.pool.min_evictable_idle_time_millis=60000\n\n# Interceptors to run\n#zep.jdbc.pool.jdbc_interceptors=ConnectionState\n\n# How often to validate connections in the pool\n#zep.jdbc.pool.validation_interval=30000\n\n# Whether JMX can be used to configure the pool\n#zep.jdbc.pool.jmx_enabled=true\n\n# True if a fair queue is used by the connection pool.\n#zep.jdbc.pool.fair_queue=true\n\n# Timed out connections will get closed when this percentage of the pool is full.\n#zep.jdbc.pool.abandon_when_percentage_full=0\n\n# Time in milliseconds to keep connections alive.\n#zep.jdbc.pool.max_age=0\n\n# Set to true if ProxyConnection class should use String.equals instead of ==\n# when comparing method names.\n#zep.jdbc.pool.use_equals=true\n\n# Whether to remove abandoned connections if they exceed the\n# remove_abandoned_timeout.\n#zep.jdbc.pool.remove_abandoned=false\n\n# The amount of time (in seconds) before a connection is considered abandoned.\n#zep.jdbc.pool.remove_abandoned_timeout=60\n\n# Whether to log stack traces of abandoned connections.\n#zep.jdbc.pool.log_abandoned=false\n\n# Instead of abandoning connections, logs a warning if log_abandoned is true.\n# If this value is \u003c= 0, then no suspect checking will be performed.\n#zep.jdbc.pool.suspect_timeout=0\n\n# The default number of retries performed when a database deadlock is encountered.\n#zep.jdbc.deadlock_retries=5\n\n# The core pool size used by the primary executor service.\n# By default, this is set to the number of processors in the system.\n#zep.executor.core_pool_size=4\n\n# The maximum pool size used by the primary executor service.\n# By default, this is set to the number of processors in the system.\n#zep.executor.max_pool_size=4\n\n# The maximum number of entries waiting to execute on the executor service.\n# Changed to default of Integer.MAX_VALUE because AMQP QOS settings prevent\n# overwhelming system.\n#zep.executor.queue_capacity=2147483647\n\n# AMQP QOS prefetch_count settings for queues consumed by zeneventserver.\n# These should only need to be changed if there is significant latency\n# between the AMQP server and zeneventserver.\n#zep.queue.$ZepHeartbeats.prefetch_count=100\n#zep.queue.$ZepMigratedEventSummary.prefetch_count=100\n#zep.queue.$ZepMigratedEventArchive.prefetch_count=100\n#zep.queue.$ZepModelChange.prefetch_count=1\n#zep.queue.$ZepZenEvents.prefetch_count=100\n\n# Index Directory\n#zep.index.dir=var/zeneventserver/index\n\n# Index RAM buffer size\n#zep.index.ram_buffer_size_mb=16.0\n\n# Heartbeat check interval in seconds\n#zep.heartbeat.interval_seconds=60\n\n# Database optimization is performed on this interval (in minutes). Specify an interval \u003c= 0 to disable.\n#zep.database.optimize_minutes=720\n#zep.database.optimize_use_external_tool=true\n#zep.database.optimize_external_tool_path=/var/zenoss/percona/bin\n#zep.database.optimize_external_tool_options=\n#zep.database.optimize_elapsed_warn_threshold_seconds=120\n\n## Comma separated list of ZEP plug-ins to disable.\n#zep.plugins.disabled=\n\n## Whether to disable all external ZEP plug-ins (from ZenPacks).\n#zep.plugins.external.disabled=false\n\n## Optional configuration settings for each plug-in\n#plugin.\u003cID\u003e.\u003cNAME\u003e=\u003cVALUE\u003e\n\n## The default number of trigger rule compilations to cache.\n#plugin.TriggerPlugin.triggerRuleCacheSize=200\n\n## Partitioning parameters for partitioned tables in ZEP.\n##\n## Values are:\n##\n## partition.\u003ctable\u003e.unit = The TimeUnit of each partition.\n## partition.\u003ctable\u003e.duration = The duration of each partition.\n## partition.\u003ctable\u003e.initial_past_partitions = The initial number of partitions to create in the past.\n## partition.\u003ctable\u003e.future_partitions = The number of future partitions to maintain.\n##\n\n#partition.event_archive.unit=DAYS\n#partition.event_archive.duration=1\n# We want to configure the maximum number of initial partitions for migration.\n#partition.event_archive.initial_past_partitions=90\n#partition.event_archive.future_partitions=3\n\n#partition.event_time.unit=HOURS\n#partition.event_time.duration=1\n# We want to configure the maximum number of initial partitions for migration.\n#partition.event_time.initial_past_partitions=0\n#partition.event_time.future_partitions=2\n\n# redis connection\n#zep.redis.host=localhost\n#zep.redis.port=6379\n\n# Max number of search terms allowed in a zeneventserver query for events\n# zep.query.clause_limit=1024\n\n## The amount of time zep will cache search results from the index\n#zep.query.cache_refresh_interval=10\n#zep.query.archive_cache_refresh_interval=60\n" }, "/opt/zenoss/etc/zeneventserver/jetty/jetty.ini": { "Filename": "/opt/zenoss/etc/zeneventserver/jetty/jetty.ini", "Owner": "zenoss:zenoss", "Permissions": "0600", "Content": "#===========================================================\n# Jetty start.jar arguments\n# Each line of this file is prepended to the command line \n# arguments # of a call to:\n# java -jar start.jar [arg...]\n#===========================================================\n\n\n\n#===========================================================\n# If the arguments in this file include JVM arguments\n# (eg -Xmx512m) or JVM System properties (eg com.sun.???),\n# then these will not take affect unless the --exec \n# parameter is included or if the output from --dry-run\n# is executed like:\n# eval $(java -jar start.jar --dry-run)\n#\n# Below are some recommended options for Sun's JRE\n#-----------------------------------------------------------\n# --exec\n# -Dcom.sun.management.jmxremote\n# -Xmx2000m\n# -Xmn512m\n# -verbose:gc\n# -XX:+PrintGCDateStamps\n# -XX:+PrintGCTimeStamps\n# -XX:+PrintGCDetails\n# -XX:+PrintTenuringDistribution\n# -XX:+PrintCommandLineFlags\n# -XX:+DisableExplicitGC\n# -XX:+UseConcMarkSweepGC\n# -XX:ParallelCMSThreads=2\n# -XX:+CMSClassUnloadingEnabled \n# -XX:+UseCMSCompactAtFullCollection\n# -XX:CMSInitiatingOccupancyFraction=80\n#-----------------------------------------------------------\n\n\n#===========================================================\n# Start classpath OPTIONS.\n# These control what classes are on the classpath\n# for a full listing do\n# java -jar start.jar --list-options\n#-----------------------------------------------------------\nOPTIONS=Server\n#-----------------------------------------------------------\n\n\n#===========================================================\n# Configuration files.\n# For a full list of available configuration files do\n# java -jar start.jar --help\n#-----------------------------------------------------------\netc/zeneventserver/jetty/jetty.xml\netc/zeneventserver/jetty/jetty-deploy.xml\netc/zeneventserver/jetty/jetty-webapps.xml\n" }, "/opt/zenoss/etc/zeneventserver/jetty/start.config": { "Filename": "/opt/zenoss/etc/zeneventserver/jetty/start.config", "Owner": "zenoss:zenoss", "Permissions": "0600", "Content": "# This file controls what file are to be put on classpath or command line.\n#\n# Format is as follows:\n#\n# Each line contains entry in the format:\n#\n# SUBJECT [ [!] CONDITION [AND|OR] ]*\n# \n# where SUBJECT: \n# ends with \".class\" is the Main class to run.\n# ends with \".xml\" is a configuration file for the command line\n# ends with \"/\" is a directory from which to add all jar and zip files. \n# ends with \"/*\" is a directory from which to add all unconsidered jar and zip files.\n# ends with \"/**\" is a directory from which to recursively add all unconsidered jar and zip files.\n# Containing = are used to assign system properties.\n# Containing ~= are used to assign start properties.\n# Containing /= are used to assign a canonical path.\n# all other subjects are treated as files to be added to the classpath.\n#\n# ${name} is expanded to a start property\n# $(name) is expanded to either a start property or a system property. \n# The start property ${version} is defined as the version of the start.jar\n#\n# Files starting with \"/\" are considered absolute, all others are relative to\n# the home directory.\n#\n# CONDITION is one of:\n# always\n# never\n# available classname # true if class on classpath\n# property name # true if set as start property\n# system name # true if set as system property\n# exists file # true if file/dir exists\n# java OPERATOR version # java version compared to literal\n# nargs OPERATOR number # number of command line args compared to literal\n# OPERATOR := one of \"\u003c\",\"\u003e\",\"\u003c=\",\"\u003e=\",\"==\",\"!=\"\n#\n# CONTITIONS can be combined with AND OR or !, with AND being the assume\n# operator for a list of CONDITIONS.\n#\n# Classpath operations are evaluated on the fly, so once a class or jar is\n# added to the classpath, subsequent available conditions will see that class.\n#\n# The configuration file may be divided into sections with option names like:\n# [ssl,default]\n#\n# Clauses after a section header will only be included if they match one of the tags in the \n# options property. By default options are set to \"default,*\" or the OPTIONS property may\n# be used to pass in a list of tags, eg. :\n#\n# java -jar start.jar OPTIONS=jetty,jsp,ssl\n#\n# The tag '*' is always appended to the options, so any section with the * tag is always \n# applied.\n#\n\n# add a property defined classpath\n${path}.path property path\n\n# add a property defined library directory\n#${lib}/** exists ${lib}\n\n# Try different settings of jetty.home until the start.jar is found.\n#jetty.home=. ! exists $(jetty.home)/start.jar \n#jetty.home=.. ! exists $(jetty.home)/start.jar \n#jetty.home=jetty-distribution/src/main/resources ! exists $(jetty.home)/start.jar \n#jetty.home=../jetty-distribution/src/main/resources ! exists $(jetty.home)/start.jar \n#jetty.home=. ! exists $(jetty.home)/start.jar\n#jetty.home/=$(jetty.home) exists $(jetty.home)/start.jar\n\n# The main class to run\norg.eclipse.jetty.xml.XmlConfiguration.class\n${start.class}.class property start.class\n\n# The default configuration files\n#$(jetty.home)/etc/jetty.xml nargs == 0\n#./jetty-server/src/main/config/etc/jetty.xml nargs == 0 AND ! exists $(jetty.home)/etc/jetty.xml\n\n# Default OPTIONS if not specified on the command line\nOPTIONS~=default,* ! property OPTIONS\n\n# Add a resources directory if it is there\n#[All,resources,default]\n#$(jetty.home)/resources/\n \n# Add jetty modules\n[*]\n$(jetty.home)/lib/jetty-util-$(version).jar ! available org.eclipse.jetty.util.StringUtil\n$(jetty.home)/lib/jetty-io-$(version).jar ! available org.eclipse.jetty.io.Buffer\n\n[Server,All,xml,default]\n$(jetty.home)/lib/jetty-xml-$(version).jar ! available org.eclipse.jetty.xml.XmlParser\n \n[Server,All,server,default]\n$(jetty.home)/lib/servlet-api-2.5.jar ! available javax.servlet.ServletContext\n$(jetty.home)/lib/jetty-http-$(version).jar ! available org.eclipse.jetty.http.HttpParser\n$(jetty.home)/lib/jetty-continuation-$(version).jar ! available org.eclipse.jetty.continuation.Continuation\n$(jetty.home)/lib/jetty-server-$(version).jar ! available org.eclipse.jetty.server.Server\n \n[Server,All,security,default]\n$(jetty.home)/lib/jetty-security-$(version).jar ! available org.eclipse.jetty.security.LoginService\n \n[Server,All,servlet,default]\n$(jetty.home)/lib/servlet-api-2.5.jar ! available javax.servlet.ServletContext\n$(jetty.home)/lib/jetty-servlet-$(version).jar ! available org.eclipse.jetty.servlet.ServletHandler\n \n[Server,All,webapp,default]\n$(jetty.home)/lib/jetty-webapp-$(version).jar ! available org.eclipse.jetty.webapp.WebAppContext\n \n[Server,All,deploy,default]\n$(jetty.home)/lib/jetty-deploy-$(version).jar ! available org.eclipse.jetty.deploy.ContextDeployer\n \n[Server,All,servlets,default]\n$(jetty.home)/lib/jetty-servlets-$(version).jar ! available org.eclipse.jetty.servlets.WelcomeFilter\n\n[All,rewrite]\n$(jetty.home)/lib/jetty-rewrite-$(version).jar ! available org.eclipse.jetty.rewrite.handler.RewriteHandler\n\n[All,jmx]\n$(jetty.home)/lib/jetty-jmx-$(version).jar ! available org.eclipse.jetty.jmx.MBeanContainer\n \n[All,ajp]\n$(jetty.home)/lib/jetty-ajp-$(version).jar ! available org.eclipse.jetty.ajp.Ajp13Connection \n \n[All,plus,jndi]\n$(jetty.home)/lib/jetty-jndi-${version}.jar ! available org.eclipse.jetty.jndi.ContextFactory\n$(jetty.home)/lib/jetty-plus-${version}.jar ! available org.eclipse.jetty.plus.jndi.NamingEntry\n$(jetty.home)/lib/jndi/** exists $(jetty.home)/lib/jndi \n\n[All,annotations]\n$(jetty.home)/lib/jetty-annotations-$(version).jar ! available org.eclipse.jetty.annotations.AnnotationFinder\n$(jetty.home)/lib/annotations/** exists $(jetty.home)/lib/jndi \n \n[All,setuid]\n$(jetty.home)/lib/jetty-setuid-$(version).jar ! available org.eclipse.jetty.setuid.SetUID\n$(jetty.home)/lib/setuid/** \n \n[All,policy]\n$(jetty.home)/lib/jetty-policy-$(version).jar ! available org.eclipse.jetty.policy.JettyPolicy\n \n[All,Client,client]\n$(jetty.home)/lib/jetty-http-$(version).jar ! available org.eclipse.jetty.http.HttpParser\n$(jetty.home)/lib/jetty-client-$(version).jar ! available org.eclipse.jetty.client.HttpClient\n \n[Client]\n$(jetty.home)/lib/jetty-http-$(version).jar ! available org.eclipse.jetty.http.HttpParser\n\n[All,websocket]\n$(jetty.home)/lib/jetty-websocket-$(version).jar ! available org.eclipse.jetty.websocket.WebSocket\n \n[All,overlay,overlays]\n$(jetty.home)/lib/jetty-overlay-deployer-$(version).jar ! available org.eclipse.jetty.overlay.OverlayedAppProvider\n \n \n# Add ext if it exists\n[Server,All,default,ext] \n$(jetty.home)/lib/ext/**\n\n# Add all other sub-directories in /lib/ as options in a dynamic way\n#[All,=$(jetty.home)/lib/**] \n\n" }, "/opt/zenoss/etc/zeneventserver/logback.xml": { "Filename": "/opt/zenoss/etc/zeneventserver/logback.xml", "Owner": "zenoss:zenoss", "Permissions": "0600", "Content": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n\u003c!--\n##############################################################################\n#\n# Copyright (C) Zenoss, Inc. 2010, all rights reserved.\n# \n# This content is made available according to terms specified in\n# License.zenoss under the directory where your Zenoss product is installed.\n#\n##############################################################################\n--\u003e\n\n\n\u003cconfiguration scan=\"true\"\u003e\n \u003cstatusListener class=\"ch.qos.logback.core.status.OnConsoleStatusListener\" /\u003e\n\n \u003cif condition='isNull(\"ZENOSS_DAEMON\")'\u003e\n \u003cthen\u003e\n \u003cappender name=\"APPENDER\" class=\"ch.qos.logback.core.ConsoleAppender\"\u003e\n \u003cencoder\u003e\n \u003cpattern\u003e%date{yyyy-MM-dd'T'HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n\u003c/pattern\u003e\n \u003c/encoder\u003e\n \u003c/appender\u003e\n \u003c/then\u003e\n \u003celse\u003e\n \u003cappender name=\"APPENDER\" class=\"ch.qos.logback.core.rolling.RollingFileAppender\"\u003e\n \u003cfile\u003e${ZENHOME:-.}/log/zeneventserver.log\u003c/file\u003e\n \u003crollingPolicy class=\"ch.qos.logback.core.rolling.FixedWindowRollingPolicy\"\u003e\n \u003c!-- daily rollover --\u003e\n \u003cfileNamePattern\u003e${ZENHOME:-.}/log/zeneventserver.log.%i\u003c/fileNamePattern\u003e\n \u003c!-- keep up to 3 logs by default --\u003e\n \u003cminIndex\u003e1\u003c/minIndex\u003e\n \u003cmaxIndex\u003e3\u003c/maxIndex\u003e\n \u003c/rollingPolicy\u003e\n \u003ctriggeringPolicy class=\"ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy\"\u003e\n \u003cmaxFileSize\u003e10MB\u003c/maxFileSize\u003e\n \u003c/triggeringPolicy\u003e\n \u003cencoder\u003e\n \u003cpattern\u003e%date{yyyy-MM-dd'T'HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n\u003c/pattern\u003e\n \u003c/encoder\u003e\n \u003c/appender\u003e\n \u003c/else\u003e\n \u003c/if\u003e\n\n \u003ccontextName\u003ezeneventserver\u003c/contextName\u003e\n \u003cjmxConfigurator /\u003e\n \u003clogger name=\"org.springframework\" level=\"WARN\"/\u003e\n \u003clogger name=\"ch.qos.logback\" level=\"WARN\"/\u003e\n \u003clogger name=\"com.zenoss\" level=\"${ZENOSS_LOG_LEVEL:-INFO}\" /\u003e\n \u003clogger name=\"org.zenoss\" level=\"${ZENOSS_LOG_LEVEL:-INFO}\" /\u003e\n \u003croot level=\"INFO\"\u003e\n \u003cappender-ref ref=\"APPENDER\"/\u003e\n \u003c/root\u003e\n\u003c/configuration\u003e\n" } }, "Context": null, "Endpoints": [ { "Name": "mariadb", "Purpose": "import", "Protocol": "", "PortNumber": 0, "PortTemplate": "", "VirtualAddress": "", "Application": "zodb_.*", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "memcached", "Purpose": "import", "Protocol": "tcp", "PortNumber": 11211, "PortTemplate": "", "VirtualAddress": "", "Application": "memcached", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "redis", "Purpose": "import", "Protocol": "tcp", "PortNumber": 6379, "PortTemplate": "", "VirtualAddress": "", "Application": "redis", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "rabbitmq", "Purpose": "import", "Protocol": "", "PortNumber": 0, "PortTemplate": "", "VirtualAddress": "", "Application": "rabbitmq.*", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "zproxy", "Purpose": "import", "Protocol": "tcp", "PortNumber": 8080, "PortTemplate": "", "VirtualAddress": "", "Application": "zproxy", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "zep", "Purpose": "export", "Protocol": "tcp", "PortNumber": 8084, "PortTemplate": "", "VirtualAddress": "", "Application": "zep", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "controlplane_consumer", "Purpose": "import", "Protocol": "tcp", "PortNumber": 8444, "PortTemplate": "", "VirtualAddress": "", "Application": "controlplane_consumer", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null } ], "Services": [], "LogFilters": null, "Volumes": [ { "Owner": "zenoss:zenoss", "Permission": "0775", "ResourcePath": "zeneventserver", "ContainerPath": "/opt/zenoss/var/zeneventserver", "Type": "", "InitContainerPath": "", "ExcludeFromBackups": false }, { "Owner": "zenoss:zenoss", "Permission": "0755", "ResourcePath": ".ssh", "ContainerPath": "/home/zenoss/.ssh", "Type": "", "InitContainerPath": "", "ExcludeFromBackups": false }, { "Owner": "zenoss:zenoss", "Permission": "0775", "ResourcePath": "var-zenpacks", "ContainerPath": "/var/zenoss", "Type": "", "InitContainerPath": "", "ExcludeFromBackups": false } ], "LogConfigs": [ { "Path": "/opt/zenoss/log/zeneventserver.log", "Type": "zeneventserver", "Filters": [ "zeneventserver" ], "LogTags": null, "IsAudit": false }, { "Path": "/opt/zenoss/log/zeneventserver-stdio.[0-9]*_[0-9]*_[0-9]*.log", "Type": "zeneventserver_stdio", "Filters": [ "zeneventserver-stdio" ], "LogTags": null, "IsAudit": false } ], "Snapshot": { "Pause": "", "Resume": "" }, "RAMCommitment": "256M", "CPUCommitment": 2, "DisableShell": false, "Runs": null, "Commands": null, "Actions": null, "HealthChecks": { "answering": { "Script": "curl -A 'zeneventserver answering healthcheck' -f -s http://localhost:8084/zeneventserver/api/1.0/heartbeats/", "Timeout": 0, "Interval": 5, "Tolerance": 0 }, "mariadb_answering": { "Script": "/opt/zenoss/bin/healthchecks/mariadb_answering", "Timeout": 0, "Interval": 10, "Tolerance": 0 }, "rabbit_answering": { "Script": "/opt/zenoss/bin/healthchecks/rabbit_answering {{(getContext . \"global.conf.amqpuser\")}} {{(getContext . \"global.conf.amqppassword\")}}", "Timeout": 0, "Interval": 10, "Tolerance": 0 }, "redis_answering": { "Script": "/opt/zenoss/bin/healthchecks/redis_answering", "Timeout": 0, "Interval": 5, "Tolerance": 0 }, "running": { "Script": "pgrep -fu zenoss java.*zeneventserver \u003e/dev/null", "Timeout": 0, "Interval": 5, "Tolerance": 0 }, "zep_answering": { "Script": "/opt/zenoss/bin/healthchecks/zep_answering", "Timeout": 0, "Interval": 10, "Tolerance": 0 } }, "Prereqs": [ { "Name": "MariaDB connectivity", "Script": "su - zenoss -c '/opt/zenoss/bin/python /opt/zenoss/Products/ZenUtils/ZenDB.py --usedb zep --execsql=\";\"'" } ], "MonitoringProfile": { "MetricConfigs": null, "GraphConfigs": null, "ThresholdConfigs": null }, "MemoryLimit": 0, "CPUShares": 0, "PIDFile": "", "StartLevel": 2, "EmergencyShutdownLevel": 2 } ], "LogFilters": null, "Volumes": null, "LogConfigs": null, "Snapshot": { "Pause": "", "Resume": "" }, "RAMCommitment": "", "CPUCommitment": 0, "DisableShell": false, "Runs": null, "Commands": null, "Actions": null, "HealthChecks": null, "Prereqs": null, "MonitoringProfile": { "MetricConfigs": null, "GraphConfigs": null, "ThresholdConfigs": null }, "MemoryLimit": 0, "CPUShares": 0, "PIDFile": "", "StartLevel": 0, "EmergencyShutdownLevel": 0 }, { "Name": "Metrics", "Title": "", "Version": "", "Command": "", "Description": "", "Environment": null, "Tags": [ "zenoss-metrics" ], "ImageID": "", "Instances": { "Min": 0, "Max": 0, "Default": 0 }, "ChangeOptions": null, "Launch": "auto", "HostPolicy": "", "Hostname": "", "Privileged": false, "ConfigFiles": {}, "Context": null, "Endpoints": null, "Services": [ { "Name": "CentralQuery", "Title": "", "Version": "", "Command": "su - zenoss -c \"cd /opt/zenoss \u0026\u0026 /bin/supervisord -n -c etc/central-query/supervisord.conf\"", "Description": "Zenoss Central Query Service and JavaScript Library", "Environment": null, "Tags": [ "daemon" ], "ImageID": "zenoss/core_6.2:6.2.1_1", "Instances": { "Min": 1, "Max": 0, "Default": 0 }, "ChangeOptions": null, "Launch": "auto", "HostPolicy": "", "Hostname": "", "Privileged": false, "ConfigFiles": { "/opt/zenoss/etc/central-query/central-query_supervisor.conf": { "Filename": "/opt/zenoss/etc/central-query/central-query_supervisor.conf", "Owner": "zenoss:zenoss", "Permissions": "0644", "Content": "[program:central-query]\ncommand=bin/central-query.sh\nautorestart=true\nautostart=true\nstartsecs=5\nenvironment=JVM_ARGS=\"-Xmx{{bytesToMB .RAMCommitment}}m\"\n\n; logging\nredirect_stderr=true\nstdout_logfile_maxbytes=10MB\nstdout_logfile_backups=2\nstdout_logfile=log/%(program_name)s.log\n" }, "/opt/zenoss/etc/central-query/configuration.yaml": { "Filename": "/opt/zenoss/etc/central-query/configuration.yaml", "Owner": "zenoss:zenoss", "Permissions": "0644", "Content": "authEnabled: true\nlogging:\n level: INFO\n loggers:\n \"org.zenoss\": INFO\nmetrics:\n defaultReturnSet: EXACT\n defaultStartTime: 1h-ago\n defaultEndTime: now\n defaultSeries: true\n openTsdbUrl: http://127.0.0.1:4242\n defaultTsdTimeZone: UTC\n connectionTimeoutMs: 20000\n sendRateOptions: false\n ignoreRateOption: true\n rateOptionCutoffTs: {{(getContext . \"centralquery.ratecutoff\")}}\n # parameters to configure connection pool for querying OpenTsdb:\n # Total connections allowed per pool\n maxTotalPoolConnections: 100\n # Max number of connections for a given route\n maxPoolConnectionsPerRoute: 100\n\n # parameters to configure thread pool for querying OpenTsdb:\n # Core number of threads in thread pool\n executorThreadPoolCoreSize: 20\n # Maximum number of threads in thread pool\n executorThreadPoolMaxSize: 250\n\nproxyConfiguration:\n hostname: 127.0.0.1\n port: 8080\nhttp:\n connectorType: nonblocking\n port: 8888\n adminPort: 58888\n ssl:\n #Example is using a java keystore in the target directory.\n keyStore: ${ssl.cert.dir}/ssl.pfx\n keyStorePassword: zapp_pass\n keyStoreType: pkcs12\n requestLog:\n console:\n enabled: false\n\nmanagedReporter:\n metricReporters:\n - {posterType: http, username: \"$env[CONTROLPLANE_CONSUMER_USERNAME]\", password: \"$env[CONTROLPLANE_CONSUMER_PASSWORD]\", urlEnvironment: \"CONTROLPLANE_CONSUMER_URL\"}\n - {posterType: http, username: \"{{(getContext . \"global.conf.zauth-username\")}}\", password: \"{{(getContext . \"global.conf.zauth-password\")}}\", protocol: http, host: localhost, port: 8080, apiPath: /api/metrics/store}\n" } }, "Context": null, "Endpoints": [ { "Name": "central_query", "Purpose": "export", "Protocol": "tcp", "PortNumber": 8888, "PortTemplate": "", "VirtualAddress": "", "Application": "central_query", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "zproxy", "Purpose": "import", "Protocol": "tcp", "PortNumber": 8080, "PortTemplate": "", "VirtualAddress": "", "Application": "zproxy", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "opentsdb-reader", "Purpose": "import", "Protocol": "tcp", "PortNumber": 4242, "PortTemplate": "", "VirtualAddress": "", "Application": "opentsdb-reader", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "opentsdb-writer", "Purpose": "import", "Protocol": "tcp", "PortNumber": 4243, "PortTemplate": "", "VirtualAddress": "", "Application": "opentsdb-writer", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null } ], "Services": [], "LogFilters": null, "Volumes": null, "LogConfigs": [ { "Path": "/opt/zenoss/log/central-query.log", "Type": "centralquery", "Filters": [ "zappdaemon" ], "LogTags": null, "IsAudit": false } ], "Snapshot": { "Pause": "", "Resume": "" }, "RAMCommitment": "1024M", "CPUCommitment": 1, "DisableShell": false, "Runs": null, "Commands": null, "Actions": { "debug": "bash -c 'curl -X POST http://localhost:58888/tasks/debugtoggle'" }, "HealthChecks": { "answering": { "Script": "curl -A 'central_query answering healthcheck' --fail --max-time 4 http://localhost:58888/healthcheck", "Timeout": 0, "Interval": 5, "Tolerance": 0 } }, "Prereqs": null, "MonitoringProfile": { "MetricConfigs": [ { "ID": "jvm.fd_usage", "Name": "JVM File Descriptor Usage", "Description": "JVM File Descriptor Usage Statistics", "Query": { "RequestURI": "", "Method": "", "Headers": null, "Data": "" }, "Metrics": [ { "ID": "jvm.fd_usage", "Name": "FD Usage Count", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false } ] }, { "ID": "jvm.thread", "Name": "JVM Thread", "Description": "JVM Thread Type Statistics", "Query": { "RequestURI": "", "Method": "", "Headers": null, "Data": "" }, "Metrics": [ { "ID": "jvm.thread_count", "Name": "JVM Thread Count", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "jvm.daemon_thread_count", "Name": "JVM Daemon Thread Count", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false } ] }, { "ID": "jvm.memory", "Name": "JVM Memory", "Description": "JVM heap vs. non-heap memory usage", "Query": { "RequestURI": "", "Method": "", "Headers": null, "Data": "" }, "Metrics": [ { "ID": "jvm.memory.heap_usage", "Name": "JVM Heap Memory Usage", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "jvm.memory.non_heap_usage", "Name": "JVM Non-Heap Memory Usage", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false } ] }, { "ID": "jvm.memory.memory_pool_usages", "Name": "JVM Memory Pool", "Description": "JVM Memory Pool Usage", "Query": { "RequestURI": "", "Method": "", "Headers": null, "Data": "" }, "Metrics": [ { "ID": "jvm.memory.memory_pool_usages.Code_Cache", "Name": "Code Cache", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "jvm.memory.memory_pool_usages.PS_Eden_Space", "Name": "Eden Space", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "jvm.memory.memory_pool_usages.PS_Old_Gen", "Name": "Old Generation", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "jvm.memory.memory_pool_usages.PS_Perm_Gen", "Name": "Permanent Generation", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "jvm.memory.memory_pool_usages.PS_Survivor_Space", "Name": "Survivor Space", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false } ] }, { "ID": "jvm.gc", "Name": "JVM Garbage Collection", "Description": "JVM Garbage Collection Statistics", "Query": { "RequestURI": "", "Method": "", "Headers": null, "Data": "" }, "Metrics": [ { "ID": "jvm.gc.PS_MarkSweep.runs", "Name": "JVM Garbage Collection MarkSweep Runs", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "jvm.gc.PS_MarkSweep.time", "Name": "JVM Garbage Collection MarkSweep Time", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "jvm.gc.PS_Scavenge.runs", "Name": "JVM Garbage Collection Scavenge Runs", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "jvm.gc.PS_Scavenge.time", "Name": "JVM Garbage Collection Scavenge Time", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false } ] }, { "ID": "jvm.threads-states", "Name": "JVM Thread States", "Description": "JVM Thread States", "Query": { "RequestURI": "", "Method": "", "Headers": null, "Data": "" }, "Metrics": [ { "ID": "jvm.thread-states.blocked", "Name": "JVM Threads in Blocked State", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "jvm.thread-states.new", "Name": "JVM Threads in New State", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "jvm.thread-states.runnable", "Name": "JVM Threads in Runnable State", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "jvm.thread-states.terminated", "Name": "JVM Threads in Terminated State", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "jvm.thread-states.timed_waiting", "Name": "JVM Threads in Timed Waiting State", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "jvm.thread-states.waiting", "Name": "JVM Threads in Waiting State", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false } ] }, { "ID": "MetricsResources.post", "Name": "MetricResources Post Statistics", "Description": "HTTP Post Statistics for the MetricsWebResource", "Query": { "RequestURI": "", "Method": "", "Headers": null, "Data": "" }, "Metrics": [ { "ID": "ZEN_INF.org.zenoss.app.metricservice.api.metric.remote.MetricResources.query.count", "Name": "MetricResource Total Post", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "ZEN_INF.org.zenoss.app.metricservice.api.metric.remote.MetricResources.query.meanRate", "Name": "MetricResource Average Response Rate", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "ZEN_INF.org.zenoss.app.metricservice.api.metric.remote.MetricResources.query.1MinuteRate", "Name": "MetricResource 1 Minute Moving Average Response Rate", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "ZEN_INF.org.zenoss.app.metricservice.api.metric.remote.MetricResources.query.5MinuteRate", "Name": "MetricResource 5 Minute Moving Average Response Rate", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "ZEN_INF.org.zenoss.app.metricservice.api.metric.remote.MetricResources.query.15MinuteRate", "Name": "MetricResource 15 Minute Moving Average Response Rate", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "ZEN_INF.org.zenoss.app.metricservice.api.metric.remote.MetricResources.query.max", "Name": "MetricResource Content-Length Max", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "ZEN_INF.org.zenoss.app.metricservice.api.metric.remote.MetricResources.query.min", "Name": "MetricResource Content-Length Max", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "ZEN_INF.org.zenoss.app.metricservice.api.metric.remote.MetricResources.query.mean", "Name": "MetricResource Content-Length Mean", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "ZEN_INF.org.zenoss.app.metricservice.api.metric.remote.MetricResources.query.median", "Name": "MetricResource Content-Length Median", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "ZEN_INF.org.zenoss.app.metricservice.api.metric.remote.MetricResources.query.stdev", "Name": "MetricResource Content-Length Stdev", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "ZEN_INF.org.zenoss.app.metricservice.api.metric.remote.MetricResources.query.75Percentile", "Name": "MetricResource Content-Length Histogram 75%", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "ZEN_INF.org.zenoss.app.metricservice.api.metric.remote.MetricResources.query.95Percentile", "Name": "MetricResource Content-Length Histogram 95%", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "ZEN_INF.org.zenoss.app.metricservice.api.metric.remote.MetricResources.query.98Percentile", "Name": "MetricResource Content-Length Histogram 98%", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "ZEN_INF.org.zenoss.app.metricservice.api.metric.remote.MetricResources.query.99Percentile", "Name": "MetricResource Content-Length Histogram 99%", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "ZEN_INF.org.zenoss.app.metricservice.api.metric.remote.MetricResources.query.999Percentile", "Name": "MetricResource Content-Length Histogram 99.9%", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false } ] } ], "GraphConfigs": [ { "id": "queryRate", "name": "Query Rate", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "Query Rate", "description": "Number of queries received per second.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "", "legend": "Queries", "metric": "ZEN_INF.org.zenoss.app.metricservice.api.metric.remote.MetricResources.query.count", "metricSource": "MetricResources.post", "id": "Queries", "name": "Queries", "rate": true, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 } ], "ThresholdConfigs": null }, "MemoryLimit": 0, "CPUShares": 0, "PIDFile": "", "StartLevel": 4, "EmergencyShutdownLevel": 0 }, { "Name": "MetricConsumer", "Title": "", "Version": "", "Command": "su - zenoss -c \"cd /opt/zenoss \u0026\u0026 /bin/supervisord -n -c etc/metric-consumer-app/supervisord.conf\"", "Description": "Pushes metric data into OpenTSDB", "Environment": null, "Tags": [ "daemon" ], "ImageID": "zenoss/core_6.2:6.2.1_1", "Instances": { "Min": 1, "Max": 0, "Default": 0 }, "ChangeOptions": null, "Launch": "auto", "HostPolicy": "", "Hostname": "", "Privileged": false, "ConfigFiles": { "/opt/zenoss/etc/metric-consumer-app/configuration.yaml": { "Filename": "/opt/zenoss/etc/metric-consumer-app/configuration.yaml", "Owner": "zenoss:zenoss", "Permissions": "0644", "Content": "authEnabled: true\n\nlogging:\n level: INFO\n\nhttp:\n port: 8443\n adminPort: 58443\n connectorType: nonblocking\n ssl:\n keyStore: etc/metric-consumer-app/cert/ssl.pfx\n keyStorePassword: zapp_pass\n keyStoreType: pkcs12\n requestLog:\n console:\n enabled: false\n\nwebSocketConfiguration:\n maxTextMessageSize: 10485760\n\nmetricService:\n jobSize: 1000\n highCollisionMark: 2000000\n maxClientWaitTime: 60000\n minTimeBetweenBroadcast: 200\n tsdbWriterThreads: 1\n maxIdleTime: 10000\n maxConnectionBackOff: 5000\n minConnectionBackOff: 100\n openTsdbClientPool:\n maxKeepAliveTime: 300000\n minTestTime: 60000\n clientBufferSize: 65536\n clients:\n - {host: localhost, port: 4242}\n\n clientFactory:\n keepAlive: true\n connectTimeout: 1000\n soTimeout: 1000\n\nmanagedReporter:\n metricReporters:\n - {posterType: http, username: \"$env[CONTROLPLANE_CONSUMER_USERNAME]\", password: \"$env[CONTROLPLANE_CONSUMER_PASSWORD]\", urlEnvironment: \"CONTROLPLANE_CONSUMER_URL\"}\n - {posterType: bean, beanName: metric-service-poster}\n\nzenossCredentials:\n username: \"{{(getContext . \"global.conf.zauth-username\")}}\"\n password: \"{{(getContext . \"global.conf.zauth-password\")}}\"\n" }, "/opt/zenoss/etc/metric-consumer-app/metric-consumer-app_supervisor.conf": { "Filename": "/opt/zenoss/etc/metric-consumer-app/metric-consumer-app_supervisor.conf", "Owner": "zenoss:zenoss", "Permissions": "0644", "Content": "[program:metric-consumer-app]\ncommand=bin/metric-consumer-app.sh\nautorestart=true\nautostart=true\nstartsecs=5\nenvironment=JVM_ARGS=\"-Xmx{{bytesToMB .RAMCommitment}}m\"\n\n; logging\nredirect_stderr=true\nstdout_logfile_maxbytes=10MB\nstdout_logfile_backups=2\nstdout_logfile=log/%(program_name)s.log\n" } }, "Context": null, "Endpoints": [ { "Name": "metric_consumer", "Purpose": "export", "Protocol": "tcp", "PortNumber": 8443, "PortTemplate": "", "VirtualAddress": "", "Application": "metric_consumer", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "zproxy", "Purpose": "import", "Protocol": "tcp", "PortNumber": 8080, "PortTemplate": "", "VirtualAddress": "", "Application": "zproxy", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "opentsdb-writer", "Purpose": "import", "Protocol": "tcp", "PortNumber": 4242, "PortTemplate": "", "VirtualAddress": "", "Application": "opentsdb-writer", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null } ], "Services": [], "LogFilters": null, "Volumes": null, "LogConfigs": [ { "Path": "/opt/zenoss/log/metric-consumer-app.log", "Type": "metricconsumer", "Filters": [ "zappdaemon" ], "LogTags": null, "IsAudit": false } ], "Snapshot": { "Pause": "", "Resume": "" }, "RAMCommitment": "256M", "CPUCommitment": 1, "DisableShell": false, "Runs": null, "Commands": null, "Actions": { "debug": "bash -c 'curl -X POST http://localhost:58443/tasks/debugtoggle'" }, "HealthChecks": { "listening": { "Script": "nmap -oG - -Pn -sS -p 8443 127.0.0.1 | grep -q 8443/open", "Timeout": 0, "Interval": 10, "Tolerance": 0 }, "stats_listening": { "Script": "curl -A 'metric_consumer stats_listening healthcheck' -s http://localhost:58443/metrics | grep -q org.zenoss.app.consumer.metric.impl.MetricsQueue", "Timeout": 0, "Interval": 5, "Tolerance": 0 } }, "Prereqs": null, "MonitoringProfile": { "MetricConfigs": [ { "ID": "jvm.fd_usage", "Name": "JVM File Descriptor Usage", "Description": "JVM File Descriptor Usage Statistics", "Query": { "RequestURI": "", "Method": "", "Headers": null, "Data": "" }, "Metrics": [ { "ID": "jvm.fd_usage", "Name": "FD Usage Count", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false } ] }, { "ID": "jvm.thread", "Name": "JVM Thread", "Description": "JVM Thread Type Statistics", "Query": { "RequestURI": "", "Method": "", "Headers": null, "Data": "" }, "Metrics": [ { "ID": "jvm.thread_count", "Name": "JVM Thread Count", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "jvm.daemon_thread_count", "Name": "JVM Daemon Thread Count", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false } ] }, { "ID": "jvm.memory", "Name": "JVM Memory", "Description": "JVM heap vs. non-heap memory usage", "Query": { "RequestURI": "", "Method": "", "Headers": null, "Data": "" }, "Metrics": [ { "ID": "jvm.memory.heap_usage", "Name": "JVM Heap Memory Usage", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "jvm.memory.non_heap_usage", "Name": "JVM Non-Heap Memory Usage", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false } ] }, { "ID": "jvm.memory.memory_pool_usages", "Name": "JVM Memory Pool", "Description": "JVM Memory Pool Usage", "Query": { "RequestURI": "", "Method": "", "Headers": null, "Data": "" }, "Metrics": [ { "ID": "jvm.memory.memory_pool_usages.Code_Cache", "Name": "Code Cache", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "jvm.memory.memory_pool_usages.PS_Eden_Space", "Name": "Eden Space", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "jvm.memory.memory_pool_usages.PS_Old_Gen", "Name": "Old Generation", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "jvm.memory.memory_pool_usages.PS_Perm_Gen", "Name": "Permanent Generation", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "jvm.memory.memory_pool_usages.PS_Survivor_Space", "Name": "Survivor Space", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false } ] }, { "ID": "jvm.gc", "Name": "JVM Garbage Collection", "Description": "JVM Garbage Collection Statistics", "Query": { "RequestURI": "", "Method": "", "Headers": null, "Data": "" }, "Metrics": [ { "ID": "jvm.gc.PS_MarkSweep.runs", "Name": "JVM Garbage Collection MarkSweep Runs", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "jvm.gc.PS_MarkSweep.time", "Name": "JVM Garbage Collection MarkSweep Time", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "jvm.gc.PS_Scavenge.runs", "Name": "JVM Garbage Collection Scavenge Runs", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "jvm.gc.PS_Scavenge.time", "Name": "JVM Garbage Collection Scavenge Time", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false } ] }, { "ID": "jvm.threads-states", "Name": "JVM Thread States", "Description": "JVM Thread States", "Query": { "RequestURI": "", "Method": "", "Headers": null, "Data": "" }, "Metrics": [ { "ID": "jvm.thread-states.blocked", "Name": "JVM Threads in Blocked State", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "jvm.thread-states.new", "Name": "JVM Threads in New State", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "jvm.thread-states.runnable", "Name": "JVM Threads in Runnable State", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "jvm.thread-states.terminated", "Name": "JVM Threads in Terminated State", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "jvm.thread-states.timed_waiting", "Name": "JVM Threads in Timed Waiting State", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "jvm.thread-states.waiting", "Name": "JVM Threads in Waiting State", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false } ] }, { "ID": "MetricsQueue.totalIncoming", "Name": "Total Incoming Metrics", "Description": "Total Incoming Metric Statistics", "Query": { "RequestURI": "", "Method": "", "Headers": null, "Data": "" }, "Metrics": [ { "ID": "ZEN_INF.org.zenoss.app.consumer.metric.impl.MetricsQueue.totalIncoming.count", "Name": "MetricsQueue Total Incoming Count", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "ZEN_INF.org.zenoss.app.consumer.metric.impl.MetricsQueue.totalIncoming.meanRate", "Name": "MetricsQueue Total Incoming Mean Rate", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "ZEN_INF.org.zenoss.app.consumer.metric.impl.MetricsQueue.totalIncoming.1MinuteRate", "Name": "MetricsQueue Total Incoming 1 Minute Rate", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "ZEN_INF.org.zenoss.app.consumer.metric.impl.MetricsQueue.totalIncoming.5MinuteRate", "Name": "MetricsQueue Total Incoming 5 Minute Rate", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "ZEN_INF.org.zenoss.app.consumer.metric.impl.MetricsQueue.totalIncoming.15MinuteRate", "Name": "MetricsQueue Total Incoming 15 MinuteRate", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false } ] }, { "ID": "MetricsQueue.totalOutgoing", "Name": "Total Incoming Metrics", "Description": "Total Incoming Metric Statistics", "Query": { "RequestURI": "", "Method": "", "Headers": null, "Data": "" }, "Metrics": [ { "ID": "ZEN_INF.org.zenoss.app.consumer.metric.impl.MetricsQueue.totalOutgoing.count", "Name": "MetricsQueue Total Incoming Count", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "ZEN_INF.org.zenoss.app.consumer.metric.impl.MetricsQueue.totalOutgoing.meanRate", "Name": "MetricsQueue Total Incoming Mean Rate", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "ZEN_INF.org.zenoss.app.consumer.metric.impl.MetricsQueue.totalOutgoing.1MinuteRate", "Name": "MetricsQueue Total Incoming 1 Minute Rate", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "ZEN_INF.org.zenoss.app.consumer.metric.impl.MetricsQueue.totalOutgoing.5MinuteRate", "Name": "MetricsQueue Total Incoming 5 Minute Rate", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "ZEN_INF.org.zenoss.app.consumer.metric.impl.MetricsQueue.totalOutgoing.15MinuteRate", "Name": "MetricsQueue Total Incoming 15 MinuteRate", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false } ] }, { "ID": "MetricsQueue.totalErrors", "Name": "Total Errors", "Description": "Total Errors", "Query": { "RequestURI": "", "Method": "", "Headers": null, "Data": "" }, "Metrics": [ { "ID": "ZEN_INF.org.zenoss.app.consumer.metric.impl.MetricsQueue.totalErrors.count", "Name": "MetricsQueue Total Errors Count", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false } ] }, { "ID": "MetricsQueue.inFlight", "Name": "Queued Metrics", "Description": "Queued Metric Count", "Query": { "RequestURI": "", "Method": "", "Headers": null, "Data": "" }, "Metrics": [ { "ID": "ZEN_INF.org.zenoss.app.consumer.metric.impl.MetricsQueue.totalInFlight.count", "Name": "MetricsQueue Queued Metric couint", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false } ] }, { "ID": "MetricsWebResource.post", "Name": "MetricsWebResource Post Statistics", "Description": "HTTP Post Statistics for the MetricsWebResource", "Query": { "RequestURI": "", "Method": "", "Headers": null, "Data": "" }, "Metrics": [ { "ID": "ZEN_INF.org.zenoss.app.consumer.metric.remote.MetricWebResource.post.count", "Name": "MetricWebResource Total Post", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "ZEN_INF.org.zenoss.app.consumer.metric.remote.MetricWebResource.post.meanRate", "Name": "MetricWebResource Average Response Rate", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "ZEN_INF.org.zenoss.app.consumer.metric.remote.MetricWebResource.post.1MinuteRate", "Name": "MetricWebResource 1 Minute Moving Average Response Rate", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "ZEN_INF.org.zenoss.app.consumer.metric.remote.MetricWebResource.post.5MinuteRate", "Name": "MetricWebResource 5 Minute Moving Average Response Rate", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "ZEN_INF.org.zenoss.app.consumer.metric.remote.MetricWebResource.post.15MinuteRate", "Name": "MetricWebResource 15 Minute Moving Average Response Rate", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "ZEN_INF.org.zenoss.app.consumer.metric.remote.MetricWebResource.post.max", "Name": "MetricWebResource Content-Length Max", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "ZEN_INF.org.zenoss.app.consumer.metric.remote.MetricWebResource.post.mean", "Name": "MetricWebResource Content-Length Mean", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "ZEN_INF.org.zenoss.app.consumer.metric.remote.MetricWebResource.post.median", "Name": "MetricWebResource Content-Length Median", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "ZEN_INF.org.zenoss.app.consumer.metric.remote.MetricWebResource.post.75Percentile", "Name": "MetricWebResource Content-Length Histogram 75%", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "ZEN_INF.org.zenoss.app.consumer.metric.remote.MetricWebResource.post.95Percentile", "Name": "MetricWebResource Content-Length Histogram 95%", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "ZEN_INF.org.zenoss.app.consumer.metric.remote.MetricWebResource.post.98Percentile", "Name": "MetricWebResource Content-Length Histogram 98%", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "ZEN_INF.org.zenoss.app.consumer.metric.remote.MetricWebResource.post.99Percentile", "Name": "MetricWebResource Content-Length Histogram 99%", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false }, { "ID": "ZEN_INF.org.zenoss.app.consumer.metric.remote.MetricWebResource.post.999Percentile", "Name": "MetricWebResource Content-Length Histogram 99.9%", "Description": "", "Counter": false, "ResetValue": 0, "Unit": "", "BuiltIn": false } ] } ], "GraphConfigs": [ { "id": "queuedMetrics", "name": "Queued Metrics", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "Queued Metrics", "description": "Queued Metric Count", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "", "legend": "queued", "metric": "ZEN_INF.org.zenoss.app.consumer.metric.impl.MetricsQueue.totalInFlight.count", "metricSource": "MetricsQueue.inFlight", "id": "queued", "name": "queued", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 }, { "id": "dataPoints", "name": "Data Points", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "Data Points", "description": "Number of datapoints received / transmitted per second.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "", "legend": "outgoing", "metric": "ZEN_INF.org.zenoss.app.consumer.metric.impl.MetricsQueue.totalOutgoing.count", "metricSource": "MetricsQueue.totalOutgoing", "id": "outgoing", "name": "outgoing", "rate": true, "rateOptions": null, "type": "line" }, { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "", "legend": "incoming", "metric": "ZEN_INF.org.zenoss.app.consumer.metric.impl.MetricsQueue.totalIncoming.count", "metricSource": "MetricsQueue.totalIncoming", "id": "incoming", "name": "incoming", "rate": true, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 } ], "ThresholdConfigs": null }, "MemoryLimit": 0, "CPUShares": 0, "PIDFile": "", "StartLevel": 4, "EmergencyShutdownLevel": 0 }, { "Name": "MetricShipper", "Title": "", "Version": "", "Command": "su - zenoss -c \"cd /opt/zenoss \u0026\u0026 /bin/supervisord -n -c etc/metricshipper/supervisord.conf\"", "Description": "Pushes metric data to a MetricConsumer", "Environment": null, "Tags": [ "daemon" ], "ImageID": "zenoss/core_6.2:6.2.1_1", "Instances": { "Min": 1, "Max": 0, "Default": 0 }, "ChangeOptions": null, "Launch": "auto", "HostPolicy": "", "Hostname": "", "Privileged": false, "ConfigFiles": { "/opt/zenoss/etc/metricshipper/metricshipper.yaml": { "Filename": "/opt/zenoss/etc/metricshipper/metricshipper.yaml", "Owner": "zenoss:zenoss", "Permissions": "0644", "Content": "# Redis URL to subscribe to, of the format:\n#\n# redis://HOST:PORT/DATABASE/KEY\n#\n# Where KEY is the key of the list containing metrics. This must match whatever\n# is specified on the publishing side (i.e., in the collector daemon).\n#\n#redisurl: redis://localhost:6379/0/metrics2\n\n# WebSocket URL of consumer to publish to.\n#\n#consumerurl: ws://localhost:8080/ws/metrics/store\n\n# Username to use when connecting to the consumer\n#\n\nusername: {{(contextFilter . \"global.conf.zauth-\").username}}\n\n# Password to use when connecting to the consumer\n#\n\npassword: {{(contextFilter . \"global.conf.zauth-\").password}}\n\n# Number of simultaneous readers from Redis.\n#\n#readers: 2\n\n# Number of simultaneous writers to the consumer.\n#\n#writers: 1\n\n# Maximum number of messages to keep in the internal buffer.\n#\n#maxbuffersize: 1024\n\n# Maximum number of messages to send to the consumer in a single batch.\n# This should be smaller than the setting for maxbuffersize.\n#\n#maxbatchsize: 64\n\n# Maximum time in seconds to wait for messages from the internal buffer to\n# be ready before sending a batch to the consumer.\n#\n#batchtimeout: 0.1\n\n# Rolling time period in seconds to consider slow-down messages from the\n# consumer.\n#\n#backoffwindow: 60\n\n# Maximum age in seconds of websocket connections before they are closed and\n# reopened. Set to 0 to disable autoclosing connections.\n#\n#maxconnectionage: 600\n\n# Encoding to use for published metrics (\"binary\" or \"json\"). Default is\n# binary.\n#\n#encoding: binary\n\n# Maximum number of slow-down messages to consider for exponential backoff.\n#\n#maxbackoffsteps: 1200\n\n# Maximum number of milliseconds to wait before sending each batch of metrics.\n#\n#maxbackoffdelay: 10000\n\n# Number of processors to use.\n#\n#cpus: 4\n\n# Total retry attempts, zero for infinity\n#\n#retryconnection: 0\n\n# Timeout between connection retry attempts in seconds\n#\n#retryconnectiontimeout: 1\n" } }, "Context": null, "Endpoints": [ { "Name": "redis", "Purpose": "import", "Protocol": "tcp", "PortNumber": 6379, "PortTemplate": "", "VirtualAddress": "", "Application": "redis", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "zproxy", "Purpose": "import", "Protocol": "tcp", "PortNumber": 8080, "PortTemplate": "", "VirtualAddress": "", "Application": "zproxy", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null } ], "Services": [], "LogFilters": null, "Volumes": null, "LogConfigs": [ { "Path": "/opt/zenoss/log/metricshipper.log", "Type": "metricshipper", "Filters": [ "glog" ], "LogTags": null, "IsAudit": false } ], "Snapshot": { "Pause": "", "Resume": "" }, "RAMCommitment": "256M", "CPUCommitment": 1, "DisableShell": false, "Runs": null, "Commands": null, "Actions": null, "HealthChecks": { "redis_answering": { "Script": "/opt/zenoss/bin/healthchecks/redis_answering", "Timeout": 0, "Interval": 5, "Tolerance": 0 }, "running": { "Script": "pgrep -u zenoss metricshipper", "Timeout": 0, "Interval": 5, "Tolerance": 0 }, "store_answering": { "Script": "/opt/zenoss/bin/healthchecks/MetricShipper/store_answering", "Timeout": 0, "Interval": 10, "Tolerance": 0 }, "websocket_opened": { "Script": "/opt/zenoss/bin/healthchecks/MetricShipper/websocket_opened", "Timeout": 0, "Interval": 10, "Tolerance": 0 } }, "Prereqs": null, "MonitoringProfile": { "MetricConfigs": [ { "ID": "metricshipper", "Name": "Metric Shipper metrics", "Description": "Metric Shipper metrics", "Query": { "RequestURI": "", "Method": "", "Headers": null, "Data": "" }, "Metrics": [ { "ID": "ZEN_INF.org.zenoss.app.metricshipper.totalIncoming.count", "Name": "incoming", "Description": "rate of incoming metrics", "Counter": true, "ResetValue": 0, "Unit": "metrics/second", "BuiltIn": false }, { "ID": "ZEN_INF.org.zenoss.app.metricshipper.totalOutgoing.count", "Name": "outgoing", "Description": "rate of outgoing metrics", "Counter": true, "ResetValue": 0, "Unit": "metrics/second", "BuiltIn": false }, { "ID": "ZEN_INF.org.zenoss.app.metricshipper.txBytes.count", "Name": "txBytes", "Description": "rate of outgoing bytes on websocket", "Counter": true, "ResetValue": 0, "Unit": "metrics/second", "BuiltIn": false } ] } ], "GraphConfigs": [ { "id": "websocketThroughput", "name": "Websocket Throughput", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "Throughput", "description": "Websocket throughput.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "", "legend": "tx", "metric": "ZEN_INF.org.zenoss.app.metricshipper.txBytes.count", "metricSource": "metricshipper", "id": "txBytes", "name": "tx", "rate": true, "rateOptions": { "counter": true, "counterMax": null, "resetThreshold": null }, "type": "line" } ], "builtin": false, "units": "", "base": 0 }, { "id": "dataPoints", "name": "Data Points", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "Data Points", "description": "Number of datapoints received / transmitted per second.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "", "legend": "outgoing", "metric": "ZEN_INF.org.zenoss.app.metricshipper.totalOutgoing.count", "metricSource": "metricshipper", "id": "outgoing", "name": "outgoing", "rate": true, "rateOptions": { "counter": true, "counterMax": null, "resetThreshold": null }, "type": "line" }, { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "", "legend": "incoming", "metric": "ZEN_INF.org.zenoss.app.metricshipper.totalIncoming.count", "metricSource": "metricshipper", "id": "incoming", "name": "incoming", "rate": true, "rateOptions": { "counter": true, "counterMax": null, "resetThreshold": null }, "type": "line" } ], "builtin": false, "units": "", "base": 0 } ], "ThresholdConfigs": null }, "MemoryLimit": 0, "CPUShares": 0, "PIDFile": "", "StartLevel": 0, "EmergencyShutdownLevel": 0 } ], "LogFilters": null, "Volumes": null, "LogConfigs": null, "Snapshot": { "Pause": "", "Resume": "" }, "RAMCommitment": "", "CPUCommitment": 0, "DisableShell": false, "Runs": null, "Commands": null, "Actions": null, "HealthChecks": null, "Prereqs": null, "MonitoringProfile": { "MetricConfigs": null, "GraphConfigs": null, "ThresholdConfigs": null }, "MemoryLimit": 0, "CPUShares": 0, "PIDFile": "", "StartLevel": 0, "EmergencyShutdownLevel": 0 }, { "Name": "User Interface", "Title": "", "Version": "", "Command": "", "Description": "", "Environment": null, "Tags": [ "zenoss-ui" ], "ImageID": "", "Instances": { "Min": 0, "Max": 0, "Default": 0 }, "ChangeOptions": null, "Launch": "auto", "HostPolicy": "", "Hostname": "", "Privileged": false, "ConfigFiles": {}, "Context": null, "Endpoints": null, "Services": [ { "Name": "Zope", "Title": "", "Version": "", "Command": "su - zenoss -c \"/opt/zenoss/bin/runzope\" ", "Description": "Zope server", "Environment": null, "Tags": [ "daemon" ], "ImageID": "zenoss/core_6.2:6.2.1_1", "Instances": { "Min": 1, "Max": 0, "Default": 0 }, "ChangeOptions": null, "Launch": "auto", "HostPolicy": "", "Hostname": "", "Privileged": false, "ConfigFiles": { "/opt/zenoss/etc/global.conf": { "Filename": "/opt/zenoss/etc/global.conf", "Owner": "zenoss:zenoss", "Permissions": "660", "Content": "# Generated by serviced\n{{range $k,$v:=contextFilter . \"global.conf.\"}}{{$k}} {{$v}}\n{{end}}" }, "/opt/zenoss/etc/zodb_db_main.conf": { "Filename": "/opt/zenoss/etc/zodb_db_main.conf", "Owner": "zenoss:zenoss", "Permissions": "0664", "Content": "\u003cmysql\u003e\n host {{getContext . \"global.conf.zodb-host\"}}\n port {{getContext . \"global.conf.zodb-port\"}}\n user {{getContext . \"global.conf.zodb-user\"}}\n passwd {{getContext . \"global.conf.zodb-password\"}}\n db {{getContext . \"global.conf.zodb-db\"}}\n\u003c/mysql\u003e\n" }, "/opt/zenoss/etc/zodb_db_session.conf": { "Filename": "/opt/zenoss/etc/zodb_db_session.conf", "Owner": "zenoss:zenoss", "Permissions": "0664", "Content": "\u003cmysql\u003e\n host {{getContext . \"global.conf.zodb-host\"}}\n port {{getContext . \"global.conf.zodb-port\"}}\n user {{getContext . \"global.conf.zodb-user\"}}\n passwd {{getContext . \"global.conf.zodb-password\"}}\n db zodb_session\n\u003c/mysql\u003e\n" }, "/opt/zenoss/etc/zope.conf": { "Filename": "/opt/zenoss/etc/zope.conf", "Owner": "zenoss:zenoss", "Permissions": "660", "Content": "# This is the proposed version for SC / Zope 2.12.1\n\n###############################################################################\n# Welcome to Zope 2.\n###############################################################################\n#\n# This is the Zope configuration file. The Zope configuration file\n# shows what the default configuration directives are, and show\n# examples for each directive. To declare a directive, make sure that\n# you add it to a line that does not begin with '#'. Note that comments\n# are only allowed at the beginning of a line: you may not add comments\n# after directive text on the same line.\n#\n# Note for Developers\n# ===================\n#\n# This file is *not* auto-generated. If you create a new directive you\n# very likely want to include an example of how to use the new\n# directive in this file.\n#\n# You shouldn't modify 'zope.conf.in' to change\n# configuration. Instead, you should make a copy into 'zope.conf' and\n# modify that to avoid checking in changes to this file by mistake.\n\n# ZConfig \"defines\" used for later textual substitution\n\n%define INSTANCE /opt/zenoss\n\n# this needs to match the encoding in the sitecustomize.py file\n# in $ZENHOME/lib/python\ndefault-zpublisher-encoding utf-8\n\n# Directive: instancehome\n#\n# Description:\n# The path to the data files, local product files, import directory,\n# and Extensions directory used by Zope.\n#\n# Required (no default)\n#\n# Example:\n#\n# instancehome /home/chrism/projects/sessions\n\ninstancehome $INSTANCE\n\n# Directive: clienthome\n#\n# Description:\n# The directory in which a running Zope's process identifier files are\n# placed.\n#\n# Default: $INSTANCE/var\n#\n# Example:\n#\n# clienthome /home/chrism/projects/sessions/var\n\n\n# Directive: path\n#\n# Description:\n# Name of a directory which should be inserted into the\n# the beginning of Python's module search path. This directive\n# may be specified as many times as needed to insert additional\n# directories. The set of directories specified is inserted into the\n# beginning of the module search path in the order which they are specified\n# here. Note that the processing of this directive may happen too late\n# under some circumstances; it is recommended that you use the PYTHONPATH\n# environment variable if using this directive doesn't work for you.\n#\n# Default: $INSTANCE/lib/python\n#\n# Example:\n#\n# path $INSTANCE/mypymodules\n\n\n# Directive: products\n#\n# Description:\n# Name of a directory that contains additional Product packages. This\n# directive may be used as many times as needed to add additional\n# collections of products. Each directory identified will be\n# added to the __path__ of the Products package. All Products are\n# initialized in ascending alphabetical order by product name. If\n# two products with the same name exist in two Products directories,\n# the order in which the packages appear here defines the load\n# order. The master Products directory exists in Zope's software home,\n# and cannot be removed from the products path (and should not be added\n# to it here).\n#\n# Default: $INSTANCE/Products\n#\n# Example:\n#\n# products /home/chrism/projects/myproducts\n\n\n# Directive: environment\n#\n# Description:\n# A section which can be used to define arbitrary key-value pairs\n# for use as environment variables during Zope's run cycle. It\n# is not recommended to set system-related environment variables such as\n# PYTHONPATH within this section.\n#\n# Default: unset\n#\n# Example:\n#\n# \u003cenvironment\u003e\n# MY_PRODUCT_ENVVAR foobar\n# \u003c/environment\u003e\n\n# Directive: debug-mode\n#\n# Description:\n# A switch which controls several aspects of Zope operation useful for\n# developing under Zope. When debug mode is on:\n#\n# - The process will not detach from the controlling terminal\n#\n# - Errors in product initialization will cause startup to fail\n# (instead of writing error messages to the event log file).\n#\n# - Filesystem-based scripts such as skins, PageTemplateFiles, and\n# DTMLFiles can be edited while the server is running and the server\n# will detect these changes in real time. When this switch is\n# off, you must restart the server to see the changes.\n#\n# Setting this to 'off' when Zope is in a production environment is\n# encouraged, as it speeds execution (sometimes dramatically).\n#\n# Default: off\n#\n# Example:\n#\n# debug-mode on\n\n\n# Directive: effective-user\n#\n# Description:\n# If you intend to run Zope as the \"root\" user, you must supply this\n# directive with an effective username or userid number to which Zope\n# will 'suid' after the server ports are bound. This directive only\n# has effect under UNIX and if Zope is started as the root user.\n#\n# Default: unset\n#\n# Example:\n#\neffective-user zenoss\n\n\n# Directive: enable-product-installation\n#\n# Description:\n# If this directive is turned on, Zope performs 'product installation'\n# (the registration of Python modules in various Products directories)\n# at startup. Turning this off can speed Zope/ZEO startup time,\n# but it can also cause your Control_Panel Product list to become\n# desynchronized with the contents of your Products\n# directories. NOTE: Zope *must* be started at least once with\n# this directive set to \"on\" or you will receive an error. If using ZEO,\n# at least one ZEO client must be run with this directive set to \"on\"\n# once, the others can have it turned off.\n# NOTE: If your main storage is mounted read-only,\n# you must set this directive to \"off\".\n#\n# Default: on\n#\n# Example:\n#\nenable-product-installation off\n\n# Directive: locale\n#\n# Description:\n# Enable locale (internationalization) support by supplying a locale\n# name to be used. See your operating system documentation for locale\n# information specific to your system. If your Python module does not\n# support the locale module, or if the requested locale is not\n# supported by your system, an error will be raised and Zope will not\n# start.\n#\n# Default: unset\n#\n# Example:\n#\n# locale fr_FR\n\n\n# Directive: datetime-format\n#\n# Description:\n# Set this variable either to \"us\" or \"international\" to force the\n# DateTime module to parse date strings either with\n# month-before-days-before-year (\"us\") or\n# days-before-month-before-year (\"international\"). The default\n# behaviour of DateTime (when this setting is left unset) is to\n# parse dates as US dates.\n#\n# Default: us\n#\n# Example:\n#\n# datetime-format international\n\n\n# Directive: zserver-threads\n#\n# Description:\n# Specify the number of threads that Zope's ZServer web server will use\n# to service requests. The default is 4.\n#\n# Default: 4\n#\n# Example:\n#\n# zserver-threads 10\n\n\n# Directive: python-check-interval\n#\n# Description:\n# Specify an integer representing the Python interpreter \"check\n# interval\" This interval determines how often the interpreter checks\n# for periodic things such as thread switches and signal handlers. The\n# Zope default is 500, but you may want to experiment with other values\n# in order to attempt to increae performance in your particular\n# environment.\n#\n# Default: 500\n#\n# Example:\n#\n# python-check-interval 1000\n\n\n# Directive: zserver-read-only-mode\n#\n# Description:\n# If this directive is set to 'on', it will cause Zope to inhibit the\n# creation of log files and pid files. Access and event log files will\n# be presented on standard output. Setting this directive 'on' causes\n# pcgi, fastcgi, and daemon-related directives to have no effect.\n#\n# Default: off\n#\n# Example:\n#\n# zserver-read-only-mode on\n\n\n# Directive: pid-filename\n#\n# Description:\n# The path to the file in which the Zope process id(s) will be written.\n# This defaults to client-home/Z2.pid.\n#\n# Default: CLIENT_HOME/Z2.pid\n#\n# Example:\n#\n# pid-filename /home/chrism/projects/sessions/var/Z2.pid\n\n\n# Directive: lock-filename\n#\n# Description:\n# The path to a \"lock file\" which will be locked by Zope while it's\n# running. This file is used by zopectl.py to determine if Zope is\n# currently running. This defaults to CLIENT_HOME/Z2.lock.\n#\n# Default: CLIENT_HOME/Z2.lock\n#\n# Example:\n#\n# lock-filename /home/chrism/projects/sessions/var/Z2.lock\n\n\n# Directive: mime-types\n#\n# Description:\n# Tells Zope about additional mime.types files that should be\n# loaded. The files have the same format as the mime.types file\n# distributed with Apache. The \"mime-types\" setting may be given\n# more than once in the configuration file.\n#\n# Example:\n#\n# mime-types $INSTANCE/etc/mime.types\n\n\n# Directive: structured-text-header-level\n#\n# Description:\n# Set the default starting HTML header level for structured text\n# documents. The default is 3, which implies that top-level headers\n# will be created with an \u003cH3\u003e tag.\n#\n# Default: 3\n#\n# Example:\n#\n# structured-text-header-level 1\n\n# Directive: rest-input-encoding\n#\n# Description:\n# Specifies the input encoding of re-StructuredText documents\n# (e.g. 'utf-8', 'iso-8859-15' or any other valid encoding recognized\n# by Python). The default is your Python's default encoding.\n#\n# Default: unset (uses system default)\n#\n# Example:\n#\n# rest-input-encoding iso-8859-15\n\n# Directive: rest-output-encoding\n#\n# Description:\n# Specifies the output encoding of re-StructuredText documents\n# (e.g. 'utf-8', 'iso-8859-15' or any other valid encoding recognized\n# by Python). The default is your Python's default encoding.\n#\n# Default: unset (uses system default)\n#\n# Example:\n#\n# rest-output-encoding iso-8859-15\n\n# Directive: rest-header-level\n#\n# Description:\n# Set the default starting HTML header level for restructured text\n# documents. The default is 3, which implies that top-level headers\n# will be created with an \u003cH3\u003e tag.\n#\n# Default: 3\n#\n# Example:\n#\n# rest-header-level 2\n\n# Directive: rest-language-code\n#\n# Description:\n# Language code used for some internal translations inside of the docutils\n# package and for DTD bibliographic elements mapping. See\n# lib/python/docutils/languages/ for a list of supported language codes.\n#\n# Default: en\n#\n# Example:\n#\n# rest-language-code de\n\n# Directive: cgi-environment\n#\n# Description:\n# A section which allows a user to define arbitrary key-value pairs for\n# use as the initial CGI environment variables. This is useful\n# when you want to proxy requests from another web server to Zserver,\n# and would like Zserver's CGI environment to reflect the CGI\n# environment of the other web server.\n#\n# Default: unset\n#\n# Example:\n#\n# \u003ccgi-environment\u003e\n# HTTPS_SERVER Foobar Server 1.0\n# HTTPS_PORT 443\n# \u003c/cgi-environment\u003e\n\n\u003ccgi-environment\u003e\n HTTPS ON\n\u003c/cgi-environment\u003e\n\n\n# Directive: dns-server\n#\n# Description:\n# Specify the IP address of your DNS server in order to cause resolved\n# hostnames to be written to Zope's access log. By default, Zope will\n# not resolve hostnames unless this is set.\n#\n# Default: unset\n#\n# Example:\n#\n# dns-server 127.0.0.1\n\n\n# Directive: ip-address\n#\n# Description:\n# The default IP address on which Zope's various server protocol\n# implementations will listen for requests. If this is unset, Zope\n# will listen on all IP addresses supported by the machine. This\n# directive can be overridden on a per-server basis in the servers\n# section.\n#\n# Default: unset\n#\n# Example:\n#\n# ip-address 127.0.0.1\n\n\n# Directive: http-realm\n#\n# Description:\n# The HTTP \"Realm\" header value sent by this Zope instance. This value\n# often shows up in basic authentication dialogs.\n#\n# Default: Zope\n#\n# Example:\n#\n# http-realm Slipknot\n\n\n# Directive: cgi-maxlen\n#\n# Description:\n# Set this value to limit the amount of form data being processed\n# by Zope to prevent DoS attacks.\n#\n# Default: 0 (= no restrictions)\n#\n# Example:\n#\n# cgi-maxlen 10000\n\n\n# Directive: http-header-max-length\n#\n# Description:\n# Maximum number of bytes allowed within a HTTP request header. The request\n# is discarded and considered as a DoS attack if the header size exceeds\n# this limit.\n#\n# Default: 8192\n#\n# Example:\n#\n# http-header-max-length 16384\n\n# Directive: enable-ms-author-via\n#\n# Description:\n# Set this directive to 'true' to enable the \"MS-Author-Via\" header\n# in response to an OPTIONS WebDAV request. Early versions of\n# Microsoft Web Folders and Microsoft Office require this header to\n# be present to be able to connect to Zope via WebDAV.\n#\n# This is disabled by default since it makes a lot of standards-compliant\n# things unhappy AND it tricks Microsoft Office into trying to edit Office\n# files stored in Zope via WebDAV even when the user isn't allowed to edit\n# them and is only trying to download them.\n#\n# Check this collector entry for more information:\n# http://www.zope.org/Collectors/Zope/1441\n#\n# Recent versions of Microsoft Web Folders, updated after January\n# 2005, do not require this header anymore, and instead require a\n# \"Public\" header to be present in reply to the OPTIONS WebDAV\n# request.\n# (http://www.redmountainsw.com/wordpress/archives/webfolders-zope)\n#\n# To get a recent Microsoft Web Folders implementation, refer to\n# Microsoft KB Article 907306.\n# (Software Update for Web Folders: May 18, 2007).\n#\n# Default: off\n#\n# Example:\n#\n# enable-ms-author-via on\n\n# Directive: enable-ms-public-header\n#\n# Description:\n# Set this directive to 'on' to enable sending the \"Public\" header\n# in response to an WebDAV OPTIONS request.\n#\n# Though recent WebDAV drafts mention this header, the original\n# WebDAV RFC did not mention it as part of the standard. Very few\n# web servers out there include this header in their replies, most\n# notably IIS and Netscape Enterprise 3.6.\n#\n# Since many best practices documents out in the web mention\n# turning off this header with the subject of \"Mask Your Web Server\n# For Enhanced Security\", this setting is off by\n# default. Presumably malicious people might take the presence of\n# this header as indication of an IIS Web Server and try to attack\n# your site, so be careful when turning it on.\n#\n# Recent versions of Microsoft Web Folders, updated after January\n# 2005, *do* require this header to be present in reply to the\n# OPTIONS WebDAV request.\n# (http://www.redmountainsw.com/wordpress/archives/webfolders-zope)\n#\n# To get a recent Microsoft Web Folders implementation, refer to\n# Microsoft KB Article 907306.\n# (Software Update for Web Folders: May 18, 2007).\n#\n# Default: off\n#\n# Example:\n#\n# enable-ms-public-header on\n\n# Directive: automatically-quote-dtml-request-data\n#\n# Description:\n# Set this directive to 'off' in order to disable the autoquoting of\n# implicitly retrieved REQUEST data by DTML code which contains a '\u003c'\n# when used in \u003cdtml-var\u003e construction. When this directive is 'on',\n# all data implicitly retrieved from the REQUEST in DTML (as opposed to\n# addressing REQUEST.somevarname directly) that contains a '\u003c' will be\n# HTML-quoted when interpolated via a \u003cdtml-var\u003e or \u0026dtml- construct. This\n# mitigates the possibility that DTML programmers will leave their\n# sites open to a \"client-side trojan\" attack.\n#\n# Default: on\n#\n# Example:\n#\n# automatically-quote-dtml-request-data on\n\n# Directive: trusted-proxy\n#\n# Description:\n# Define one or more 'trusted-proxies' directives, each of which is a\n# hostname or an IP address. The set of definitions comprises a list\n# of front-end proxies that are trusted to supply an accurate\n# X-Forwarded-For header to Zope. If a connection comes from\n# a trusted proxy, Zope will trust any X-Forwarded header to contain\n# the user's real IP address for the purposes of address-based\n# authentication restriction.\n#\n# Default: unset\n#\n# Example:\n#\n# trusted-proxy www.example.com\n# trusted-proxy 192.168.1.1\n\n# Directive: publisher-profile-file\n#\n# Description:\n# Names a file on the filesystem which causes Zope's Python\n# profiling capabilities to be enabled. For more information, see\n# the Debug Information - \u003e Profiling tab of Zope's Control_Panel\n# via the Zope Management Interface. IMPORTANT: setting this\n# filename will cause Zope code to be executed much more slowly\n# than normal. This should not be enabled in production.\n#\n# Default: unset\n#\n# Example:\n#\n# publisher-profile-file $INSTANCE/var/profile.dat\n\n\n# Directive: security-policy-implementation\n#\n# Description:\n# The default Zope security machinery is implemented in C. Change\n# this to \"python\" to use the Python version of the Zope security\n# machinery. This setting may impact performance but is useful\n# for debugging purposes. See also the \"verbose-security\" option\n# below.\n#\n# Default: C\n#\n# Example:\n#\n# security-policy-implementation python\n\n# Directive: skip-authentication-checking\n#\n# Description:\n# Set this directive to 'on' to cause Zope to skip checks related\n# to authentication, for servers which serve only anonymous content.\n# Only works if security-policy-implementation is 'C'.\n#\n# Default: off\n#\n# Example:\n#\n# skip-authentication-checking on\n\n\n# Directive: skip-ownership-checking\n#\n# Description:\n# Set this directive to 'on' to cause Zope to ignore ownership checking\n# when attempting to execute \"through the web\" code. By default, this\n# directive is on in order to prevent 'trojan horse' security problems\n# whereby a user with less privilege can cause a user with more\n# privilege to execute dangerous code.\n#\n# Default: off\n#\n# Example:\n#\n# skip-ownership-checking on\n\n\n# Directive: verbose-security\n#\n# Description:\n# By default, Zope reports authorization failures in a terse manner in\n# order to avoid revealing unnecessary information. This option\n# modifies the Zope security policy to report more information about\n# the reason for authorization failures. It's designed for debugging.\n# If you enable this option, you must also set the\n# 'security-policy-implementation' to 'python'.\n#\n# Default: off\n#\n# Example:\n#\n# security-policy-implementation python\n# verbose-security on\n\n\n# Directive: maximum-number-of-session-objects\n#\n# Description:\n# An integer value representing the number of items to use as a\n# \"maximum number of subobjects\" value of the\n# '/temp_folder/session_data' transient object container.\n#\n# Default: 1000\n#\n# Example:\n#\nmaximum-number-of-session-objects 100000\n\n\n# Directive: session-add-notify-script-path\n#\n# Description:\n# An optional fill Zope path name of a callable object to be set as the\n# \"script to call on object addition\" of the sessioN_data transient\n# object container created in the /temp_folder folder at startup.\n#\n# Default: unset\n#\n# Example:\n#\n# session-add-notify-script-path /scripts/add_notifier\n\n\n# Directive: session-delete-notify-script-path\n#\n# Description:\n# An optional fill Zope path name of a callable object to be set as the\n# \"script to call on object deletion\" of the sessioN_data transient\n# object container created in the /temp_folder folder at startup.\n#\n# Default: unset\n#\n# Example:\n#\n# session-delete-notify-script-path /scripts/del_notifier\n\n\n# Directive: session-timeout-minutes\n#\n# Description:\n# An integer value representing the number of minutes to be used as the\n# \"data object timeout\" of the '/temp_folder/session_data' transient\n# object container.\n#\n# Default: 20\n#\n# Example:\n#\n# session-timeout-minutes 30\n\n\n# Directive: session-resolution-seconds\n#\n# Description:\n# An integer value representing the number of seconds to be used as the\n# \"timeout resolution\" of the '/temp_folder/session_data' transient\n# object container.\n#\n# Default: 20\n#\n# Example:\n#\n# session-resolution-seconds 60\n\n\n# Directive: suppress-all-access-rules\n#\n# Description:\n# If this directive is set to on, no access rules in your Zope site\n# will be executed. This is useful if you \"lock yourself out\" of a\n# particular part of your site by setting an improper access rule.\n#\n# Default: off\n#\n# Example:\n#\n# suppress-all-access-rules on\n\n\n# Directive: suppress-all-site-roots\n#\n# Description:\n# If this directive is set to on, no site roots in your Zope site will\n# be effective. This is useful if you \"lock yourself out\" of a\n# particular part of your site by setting an improper site root.\n#\n# Default: off\n#\n# Example:\n#\n# suppress-all-site-roots on\n\n\n# Directive: database-quota-size\n#\n# Description:\n# Set this directive to an integer in bytes in order to place a hard\n# limit on the size which the default FileStorage-backed Zope database\n# can grow. Additions to the database will not be permitted once this\n# filesize is exceeded.\n#\n# Default: unset\n#\n# Example:\n#\n# database-quota-size 1000000\n\n\n# Directive: zeo-client-name\n#\n# Description:\n# If you want a persistent ZEO client cache which retains cache\n# contents across ClientStorage restarts, you need to define a\n# zeo-client-name. If you use ZEO and you don't set a\n# zeo-client-name, the client cache is stored in temporary files\n# which are removed when the ClientStorage shuts down. The value\n# of zeo-client-name is used to uniquely identify the local cache\n# files created if this Zope is a ZEO client.\n#\n# Default: unset\n#\n# Example:\n#\n# zeo-client-name zeo1\n\n\n# Directives: logger\n#\n# Description:\n# This area should define one or more \"logger\" sections of the\n# names \"access\", \"event\", and \"trace\". The \"access\" logger logs\n# Zope server access. The \"event\" logger logs Zope event\n# information. The \"trace\" logger logs detailed server request\n# information (for debugging purposes only). Each logger section\n# may contain a \"level\" name/value pair which indicates the level\n# of logging detail to capture for this logger. The default level\n# is INFO. Level may be any of \"CRITICAL\", 'ERROR\", WARN\", \"INFO\",\n# \"DEBUG\", and \"ALL\". Each logger section may additionally contain\n# one or more \"handler\" sections which indicates a types of log\n# \"handlers\" (file, syslog, NT event log, etc) to be used for the\n# logger being defined. There are 5 types of handlers: logfile,\n# syslog, win32-eventlog, http-handler, email-notifier. Each\n# handler type has its own set of allowable subkeys which define\n# aspects of the handler. All handler sections also allow for the\n# specification of a \"format\" (the log message format string), a\n# \"dateformat\" (the log message format for date strings), and a\n# \"level\", which has the same semantics of the overall logger\n# level but overrides the logger's level for the handler it's\n# defined upon. XXXX much more detail necessary here\n#\n# Default:\n#\n# The access log will log to the file \u003cinstancehome\u003e/log/Z2.log at\n# level INFO, the event log will log to the file\n# \u003cinstancehome\u003e/log/event.log at level INFO, and the trace log\n# will not be written anywhere.\n\n\u003ceventlog\u003e\n level info\n \u003clogfile\u003e\n path $INSTANCE/log/event.log\n level info\n \u003c/logfile\u003e\n\u003c/eventlog\u003e\n\n\u003clogger access\u003e\n level WARN\n \u003clogfile\u003e\n path $INSTANCE/log/Z2.log\n format %(message)s\n \u003c/logfile\u003e\n\u003c/logger\u003e\n\n# \u003clogger trace\u003e\n# level WARN\n# \u003clogfile\u003e\n# path $INSTANCE/log/trace.log\n# format %(message)s\n# \u003c/logfile\u003e\n# \u003c/logger\u003e\n\n\n# Directive: conflict-error-log-level\n#\n# Description:\n# Specifies at which level conflict errors are logged. Conflict\n# errors, when occuring in small numbers, are a normal part of the\n# Zope optimistic transaction conflict resolution algorithms. They\n# are retried automatically a few times, and are therefore usually\n# not visible by the user. You can specify 'notset' if you don't\n# want them logged, or use any other logger level (see above).\n#\n# Default: info\n#\n# Example:\n#\n# conflict-error-log-level blather\n\n\n# Directive: warnfilter\n#\n# Description:\n# A section that allows you to define a warning filter.\n# The following keys are valid within a warnfilter section:\n#\n# action: one of the following strings:\n#\n# \"error\" turn matching warnings into exceptions\n# \"ignore\" never print matching warnings\n# \"always\" always print matching warnings\n# \"default\" print the first occurrence of matching warnings\n# for each location where the warning is issued\n# \"module\" print the first occurrence of matching warnings\n# for each module where the warning is issued\n# \"once\" print only the first occurrence of matching\n# warnings, regardless of location\n#\n# message: a string containing a regular expression that the\n# warning message must match (the match is compiled to\n# always be case-insensitive)\n#\n# category: a Python dotted-path classname (must be a subclass of\n# Warning) of which the warning category must be a subclass in\n# order to match\n#\n# module: a string containing a regular expression that the\n# module name must match (the match is compiled to be\n# case-sensitive)\n#\n# lineno: an integer that the line number where the warning\n# occurred must match, or 0 to match all line numbers\n#\n# All keys within a warnfilter section are optional. More than\n# one warnfilter section may be specified.\n#\n# Default: unset\n#\n# Example:\n#\n# \u003cwarnfilter\u003e\n# action ignore\n# category exceptions.DeprecationWarning\n# \u003c/warnfilter\u003e\n\n\n# Directive: max-listen-sockets\n#\n# Description:\n# The maximum number of sockets that ZServer will attempt to open\n# in order to service incoming connections.\n#\n# Default: 1000\n#\n# Example:\n#\n# max-listen-sockets 500\n\n\n# Directives: port-base\n#\n# Description:\n# Offset applied to the port numbers used for ZServer\n# configurations. For example, if the http-server port is 8080 and\n# the port-base is 1000, the HTTP server will listen on port 9080.\n# This makes it easy to change the complete set of ports used by a\n# Zope server process\n#\n# Default:\n#\n# 0\n#\n# Example:\n#\n# port-base 1000\n\n\n# Directive: large-file-threshold\n#\n# Description:\n# Requests bigger than this size get saved into a temporary file\n# instead of being read completely into memory.\n#\n# Default: 512K\n#\n# Example:\n#\n# large-file-threshold 1Mb\n\n# Directive: default-zpublisher-encoding\n#\n# Description:\n# This controls what character set is used to encode unicode\n# data that reaches ZPublisher without any other specified encoding.\n#\n# Default: iso-8859-15\n#\n# Example:\n#\n# default-zpublisher-encoding utf-8\nconflict-error-log-level debug\n\n# Directives: servers\n#\n# Description:\n# A set of sections which allow the specification of Zope's various\n# ZServer servers. 8 different server types may be defined:\n# http-server, ftp-server, webdav-source-server, persistent-cgi,\n# fast-cgi, monitor-server, icp-server, and clock-server. If no servers\n# are defined, the default servers are used.\n#\n# Ports may be specified using the 'address' directive either in simple\n# form (80) or in complex form including hostname 127.0.0.1:80. If the\n# hostname is \"left off\", the default-ip-address is used as the hostname.\n#\n# Port numbers are offset by the setting of port-base.\n#\n# To run the monitor-server an emergency user must be defined\n# (through an 'access' file).\n#\n# Default:\n#\n# An HTTP server starts on port 8080.\n\n\u003chttp-server\u003e\n # valid keys are \"address\" and \"force-connection-close\"\n address 9080\n\n # force-connection-close on\n #\n # You can also use the WSGI interface between ZServer and ZPublisher:\n # use-wsgi on\n #\n # To defer the opening of the HTTP socket until the end of the\n # startup phase:\n # fast-listen off\n\u003c/http-server\u003e\n\n# Examples:\n#\n# \u003cftp-server\u003e\n# # valid key is \"address\"\n# address 8021\n# \u003c/ftp-server\u003e\n#\n# \u003cwebdav-source-server\u003e\n# # valid keys are \"address\" and \"force-connection-close\"\n# address 1980\n# force-connection-close off\n# \u003c/webdav-source-server\u003e\n#\n# \u003cpersistent-cgi\u003e\n# # valid key is \"path\"\n# path somefile\n# \u003c/persistent-cgi\u003e\n#\n# \u003cfast-cgi\u003e\n# # valid key is \"address\"; the address may be hostname:port, port,\n# # or a path for a Unix-domain socket\n# address somefile\n# \u003c/fast-cgi\u003e\n#\n# \u003cmonitor-server\u003e\n# # valid keys are \"address\"\n# address 8099\n# \u003c/monitor-server\u003e\n#\n# \u003cicp-server\u003e\n# # valid key is \"address\"\n# address 888\n# \u003c/icp-server\u003e\n#\n# \u003cclock-server\u003e\n# # starts a clock which calls /foo/bar every 30 seconds\n# method /foo/bar\n# period 30\n# user admin\n# password 123\n# \u003c/clock-server\u003e\n\n# Database (zodb_db) section\n#\n# Description:\n# A database section allows the definition of custom database and\n# storage types. More than one zodb_db section can be defined.\n#\n# Default: unset.\n# IMPORTANT: At least one database with a mount-point of \"/\"\n# must be specified for Zope to start properly.\n\n#\u003czodb_db main\u003e\n# # Main FileStorage database\n# \u003cfilestorage\u003e\n# # See .../ZODB/component.xml for directives (sectiontype\n# # \"filestorage\").\n# path $INSTANCE/var/Data.fs\n# \u003c/filestorage\u003e\n# mount-point /\n#\u003c/zodb_db\u003e\n\n\u003czodb_db temporary\u003e\n # Session database storage\n mount-point /temp_folder\n %import relstorage\n \u003crelstorage\u003e\n keep-history false\n %include zodb_db_session.conf\n \u003c/relstorage\u003e\n\u003c/zodb_db\u003e\n\n# Other storage examples\n#\n# ZEO client storage:\n#\n\u003czodb_db main\u003e\n mount-point /\n # ZODB cache, in number of objects\n cache-size 100000\n %import relstorage\n \u003crelstorage\u003e\n # Comment these out to stop using memcached\n cache-servers 127.0.0.1:11211\n cache-module-name memcache\n\n # RelStorage caches pickled objects in memory, similar to a ZEO\n # cache. This cache is shared between threads. This parameter\n # configures the approximate maximum amount of memory the cache\n # should consume, in megabytes. It defaults to 10.\n cache-local-mb {{percentScale .RAMCommitment 0.5 | bytesToMB}}\n\n keep-history false\n %include zodb_db_main.conf\n \u003c/relstorage\u003e\n\u003c/zodb_db\u003e\n\n# Product configuration (product-config) section(s)\n#\n# Description:\n# Add-on products may need to allow the user to specify policy /\n# configuration. Such policies may be expressed as a set of\n# name-value pairs, grouped into a named section (there may\n# be many such sections, typically one per product).\n# These sections will be captured in an attribute, 'product_config'\n# of the top-level config object, under the key corresponding to\n# the section name. E.g., the sample section below would be\n# parsed into a dict, {'bar': 'baz'}, available as\n# config.product_config['foo']\n#\n# Products may also register their own section types, extending\n#\n#\n# Example:\n#\n# 1. Simple \"bag of strings\" section:\n#\n# \u003cproduct-config foo\u003e\n# bar baz\n# \u003c/product-config\u003e\n#\n# 2. Custom section type\n#\n# Products/Foo/component.xml:\n#\n# \u003ccomponent\u003e\n# \u003cdescription\u003e\n# Some product-specific hackery.\n# \u003c/description\u003e\n# \u003csectiontype name=\"myproduct\" implements=\"zope.product.base\"\u003e\n# \u003cdescription\u003e\n# Product-specific configuration.\n# \u003c/description\u003e\n# \u003ckey name=\"foo\" /\u003e\n# \u003c/sectiontype\u003e\n# \u003c/component\u003e\n#\n# In zope.conf:\n#\n# %import Products.Foo\n#\n# \u003cmyproduct bar\u003e\n# foo qux\n# \u003c/myproduct\u003e\n\u003cproduct-config beaker\u003e\n cache.type ext:memcached\n cache.url 127.0.0.1:11211\n cache.data_dir /tmp/cache/data\n cache.lock_dir /tmp/cache/lock\n cache.regions short, long\n cache.short.expire 60\n cache.long.expire 3600\n\n session.type ext:memcached\n session.url 127.0.0.1:11212\n session.data_dir /tmp/sessions/data\n session.lock_dir /tmp/sessions/lock\n session.key beaker.session\n session.secret supersecret\n session.secure True\n\u003c/product-config\u003e\n" } }, "Context": null, "Endpoints": [ { "Name": "zenhub", "Purpose": "import", "Protocol": "tcp", "PortNumber": 8789, "PortTemplate": "", "VirtualAddress": "", "Application": "localhost_zenhubPB", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "mariadb", "Purpose": "import", "Protocol": "", "PortNumber": 0, "PortTemplate": "", "VirtualAddress": "", "Application": "zodb_.*", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "memcached", "Purpose": "import", "Protocol": "tcp", "PortNumber": 11211, "PortTemplate": "", "VirtualAddress": "", "Application": "memcached", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "memcached-session", "Purpose": "import", "Protocol": "tcp", "PortNumber": 11212, "PortTemplate": "", "VirtualAddress": "", "Application": "memcached-session", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "redis", "Purpose": "import", "Protocol": "tcp", "PortNumber": 6379, "PortTemplate": "", "VirtualAddress": "", "Application": "redis", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "rabbitmq", "Purpose": "import", "Protocol": "", "PortNumber": 0, "PortTemplate": "", "VirtualAddress": "", "Application": "rabbitmq.*", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "zproxy", "Purpose": "import", "Protocol": "tcp", "PortNumber": 8080, "PortTemplate": "", "VirtualAddress": "", "Application": "zproxy", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "zep", "Purpose": "import", "Protocol": "tcp", "PortNumber": 8084, "PortTemplate": "", "VirtualAddress": "", "Application": "zep", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "zope", "Purpose": "export", "Protocol": "tcp", "PortNumber": 9080, "PortTemplate": "", "VirtualAddress": "", "Application": "zope", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "zauth", "Purpose": "export", "Protocol": "tcp", "PortNumber": 9080, "PortTemplate": "", "VirtualAddress": "", "Application": "zauth", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "controlplane_consumer", "Purpose": "import", "Protocol": "tcp", "PortNumber": 8444, "PortTemplate": "", "VirtualAddress": "", "Application": "controlplane_consumer", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null } ], "Services": [], "LogFilters": null, "Volumes": [ { "Owner": "zenoss:zenoss", "Permission": "0755", "ResourcePath": "zenoss-custom-patches-pc", "ContainerPath": "/opt/zenoss/.pc", "Type": "", "InitContainerPath": "", "ExcludeFromBackups": false }, { "Owner": "zenoss:zenoss", "Permission": "0755", "ResourcePath": "zenoss-custom-patches", "ContainerPath": "/opt/zenoss/patches", "Type": "", "InitContainerPath": "", "ExcludeFromBackups": false }, { "Owner": "zenoss:zenoss", "Permission": "0755", "ResourcePath": "zenjobs", "ContainerPath": "/opt/zenoss/log/jobs", "Type": "", "InitContainerPath": "", "ExcludeFromBackups": false }, { "Owner": "zenoss:zenoss", "Permission": "0775", "ResourcePath": "zenoss-var-ext", "ContainerPath": "/opt/zenoss/var/ext", "Type": "", "InitContainerPath": "", "ExcludeFromBackups": false }, { "Owner": "zenoss:zenoss", "Permission": "0775", "ResourcePath": "zenoss-export", "ContainerPath": "/opt/zenoss/export", "Type": "", "InitContainerPath": "", "ExcludeFromBackups": false }, { "Owner": "zenoss:zenoss", "Permission": "0775", "ResourcePath": "zenpack-backup", "ContainerPath": "/opt/zenoss/.ZenPacks", "Type": "", "InitContainerPath": "", "ExcludeFromBackups": false }, { "Owner": "zenoss:zenoss", "Permission": "0755", "ResourcePath": ".ssh", "ContainerPath": "/home/zenoss/.ssh", "Type": "", "InitContainerPath": "", "ExcludeFromBackups": false }, { "Owner": "zenoss:zenoss", "Permission": "0775", "ResourcePath": "var-zenpacks", "ContainerPath": "/var/zenoss", "Type": "", "InitContainerPath": "", "ExcludeFromBackups": false } ], "LogConfigs": [ { "Path": "/opt/zenoss/log/event.log", "Type": "zope_eventlog", "Filters": [ "zope", "pythondaemon" ], "LogTags": null, "IsAudit": false }, { "Path": "/opt/zenoss/log/Z2.log", "Type": "zope_access_logs", "Filters": [ "z2_access_logs" ], "LogTags": null, "IsAudit": false }, { "Path": "/opt/zenoss/log/audit.log", "Type": "zenossaudit", "Filters": [ "supervisord" ], "LogTags": null, "IsAudit": true }, { "Path": "/opt/zenoss/log/toolbox/zodbscan.log", "Type": "toolbox_zodbscan_logs", "Filters": [ "pythondaemon" ], "LogTags": null, "IsAudit": false }, { "Path": "/opt/zenoss/log/toolbox/zennetworkclean.log", "Type": "toolbox_zennetworkclean_logs", "Filters": [ "pythondaemon" ], "LogTags": null, "IsAudit": false }, { "Path": "/opt/zenoss/log/toolbox/zenindextool.log", "Type": "toolbox_zenindextool_logs", "Filters": [ "pythondaemon" ], "LogTags": null, "IsAudit": false }, { "Path": "/opt/zenoss/log/toolbox/zencheckdbstats.log", "Type": "toolbox_zencheckdbstats_logs", "Filters": [ "pythondaemon" ], "LogTags": null, "IsAudit": false }, { "Path": "/opt/zenoss/log/toolbox/zencatalogscan.log", "Type": "toolbox_zencatalogscan_logs", "Filters": [ "pythondaemon" ], "LogTags": null, "IsAudit": false }, { "Path": "/opt/zenoss/log/toolbox/findposkeyerror.log", "Type": "toolbox_findposkeyerror_logs", "Filters": [ "pythondaemon" ], "LogTags": null, "IsAudit": false }, { "Path": "/opt/zenoss/log/toolbox/zenrelationscan.log", "Type": "toolbox_zenrelationscan_logs", "Filters": [ "pythondaemon" ], "LogTags": null, "IsAudit": false } ], "Snapshot": { "Pause": "", "Resume": "" }, "RAMCommitment": "256M", "CPUCommitment": 1, "DisableShell": false, "Runs": null, "Commands": { "apply-custom-patches": { "Command": "${ZENHOME:-/opt/zenoss}/bin/zenrun patch.sh applyPatches", "Description": "Apply custom patches to the service using an installed Quilt", "CommitOnSuccess": true }, "help": { "Command": "${ZENHOME:-/opt/zenoss}/bin/zenrun help.sh", "Description": "Display this help message", "CommitOnSuccess": false }, "install-percona": { "Command": "${ZENHOME:-/opt/zenoss}/bin/zenrun percona.sh install", "Description": "Install Percona tools", "CommitOnSuccess": true }, "install-quilt": { "Command": "${ZENHOME:-/opt/zenoss}/bin/zenrun quilt.sh install", "Description": "Install patching tool Quilt", "CommitOnSuccess": false }, "reportmail": { "Command": "${ZENHOME:-/opt/zenoss}/bin/zenrun reportmail.sh", "Description": "Generate and email a report", "CommitOnSuccess": false }, "upgrade": { "Command": "${ZENHOME:-/opt/zenoss}/bin/zenrun upgrade.sh doUpgrade", "Description": "Upgrade a Zenoss installation", "CommitOnSuccess": true }, "zendmd": { "Command": "${ZENHOME:-/opt/zenoss}/bin/zenrun zendmd", "Description": "Start an interactive zendmd session", "CommitOnSuccess": false }, "zenmib": { "Command": "${ZENHOME:-/opt/zenoss}/bin/zenrun zenmib.sh", "Description": "Load, convert, and import MIB files into the Zenoss DMD.", "CommitOnSuccess": true }, "zenossdbpack": { "Command": "${ZENHOME:-/opt/zenoss}/bin/zenrun zenossdbpack", "Description": "Run ZODB storage packing tool", "CommitOnSuccess": false }, "zenpack": { "Command": "${ZENHOME:-/opt/zenoss}/bin/zenrun zenpack.sh --service-id={{.ID}}", "Description": "Check information on available Zenpacks", "CommitOnSuccess": false }, "zenpack-manager": { "Command": "${ZENHOME:-/opt/zenoss}/bin/zenrun zenpack-manager.sh --service-id={{.ID}}", "Description": "Install, create, link, or destroy Zenpacks", "CommitOnSuccess": true } }, "Actions": null, "HealthChecks": { "answering": { "Script": "curl -A 'Zope answering healthcheck' --retry 3 --max-time 2 -s http://localhost:9080/zport/ruok | grep -q imok", "Timeout": 0, "Interval": 15, "Tolerance": 0 }, "mariadb_answering": { "Script": "/opt/zenoss/bin/healthchecks/mariadb_answering", "Timeout": 0, "Interval": 10, "Tolerance": 0 }, "memcached_answering": { "Script": "/opt/zenoss/bin/healthchecks/memcached_answering", "Timeout": 0, "Interval": 10, "Tolerance": 0 }, "memcached_session_answering": { "Script": "/opt/zenoss/bin/healthchecks/memcached_session_answering", "Timeout": 0, "Interval": 10, "Tolerance": 0 }, "rabbit_answering": { "Script": "/opt/zenoss/bin/healthchecks/rabbit_answering {{(getContext . \"global.conf.amqpuser\")}} {{(getContext . \"global.conf.amqppassword\")}}", "Timeout": 0, "Interval": 10, "Tolerance": 0 }, "redis_answering": { "Script": "/opt/zenoss/bin/healthchecks/redis_answering", "Timeout": 0, "Interval": 10, "Tolerance": 0 }, "running": { "Script": "pgrep -fu zenoss runzope \u003e/dev/null", "Timeout": 0, "Interval": 5, "Tolerance": 0 }, "solr_answering": { "Script": "curl -A 'Solr answering healthcheck' -s http://localhost:8983/solr/zenoss_model/admin/ping?wt=json | grep -q '\"status\":\"OK\"'", "Timeout": 0, "Interval": 10, "Tolerance": 0 }, "zep_answering": { "Script": "/opt/zenoss/bin/healthchecks/zep_answering", "Timeout": 0, "Interval": 10, "Tolerance": 0 } }, "Prereqs": [ { "Name": "MariaDB connectivity", "Script": "su - zenoss -c '/opt/zenoss/bin/python /opt/zenoss/Products/ZenUtils/ZenDB.py --usedb zodb --execsql=\";\"'" } ], "MonitoringProfile": { "MetricConfigs": null, "GraphConfigs": null, "ThresholdConfigs": null }, "MemoryLimit": 0, "CPUShares": 0, "PIDFile": "", "StartLevel": 0, "EmergencyShutdownLevel": 0 }, { "Name": "zenjobs", "Title": "", "Version": "", "Command": "su - zenoss -c \"/opt/zenoss/bin/zenjobs run --logfileonly \"", "Description": "Performs tasks in its queue as scheduled", "Environment": null, "Tags": [ "daemon" ], "ImageID": "zenoss/core_6.2:6.2.1_1", "Instances": { "Min": 1, "Max": 0, "Default": 0 }, "ChangeOptions": null, "Launch": "auto", "HostPolicy": "", "Hostname": "", "Privileged": false, "ConfigFiles": { "/opt/zenoss/etc/global.conf": { "Filename": "/opt/zenoss/etc/global.conf", "Owner": "zenoss:zenoss", "Permissions": "660", "Content": "# Generated by serviced\n{{range $k,$v:=contextFilter . \"global.conf.\"}}{{$k}} {{$v}}\n{{end}}" }, "/opt/zenoss/etc/zenjobs.conf": { "Filename": "/opt/zenoss/etc/zenjobs.conf", "Owner": "zenoss:zenoss", "Permissions": "0664", "Content": "#\n# Configuration file for zenjobs\n#\n# To enable a particular option, uncomment the desired entry.\n#\n# Parameter Setting\n# --------- -------\n#\n# Use an alternate configuration file\n#configfile /opt/zenoss/etc/zenjobs.conf\n#\n# Generate an XML file containing command-line\n# switches., default: False\n#genxmlconfigs False\n#\n# User to become when running default:zenoss,\n# default: zenoss\n#uid zenoss\n#\n# Cycle continuously on cycleInterval\n# from Zope, default: False\n#cycle False\n#\n# Launch into the background, default: False\n#daemon False\n#\n# Log to console and log file, default: False\n#duallog False\n#\n# Log to log file and not console, default:\n# False\n#logfileonly False\n#\n# output log info in HTML table format,\n# default: False\n#weblog False\n#\n# Run under a supervisor which will restart\n# it, default: False\n#watchdog False\n#\n# The path to the watchdog reporting socket\n#watchdogPath None\n#\n# Wait seconds for initial heartbeat\n#starttimeout None\n#\n# Set listener socket options. For option\n# details: man 7 socket, default: []\n#socketOption []\n#\n# Directory in which to store individual\n# job log files, default: /opt/zenoss/log/jobs\n#job-log-path /opt/zenoss/log/jobs\n#\n# Number of jobs a worker process runs\n# before it shuts down, default: 1\n#max-jobs-per-worker 1\n#\n# Number of jobs to process concurrently,\n# default: 2\n#concurrent-jobs 2\n#\n# Logging severity threshold, default: 20\n#logseverity 20\n#\n# Override the default logging path; default\n# $ZENHOME/log, default: /opt/zenoss/log\n#logpath /opt/zenoss/log\n#\n# Max size of log file in KB; default\n# 10240, default: 10240\n#maxlogsize 10240\n#\n# Max number of back up log files; default\n# 3, default: 3\n#maxbackuplogs 3\n#\n# root object for data load (i.e. /zport/dmd),\n# default: /zport/dmd\n#zodb-dataroot /zport/dmd\n#\n# in memory cachesize default: 1000, default:\n# 1000\n#zodb-cachesize 1000\n#\n# hostname of the MySQL server for ZODB,\n# default: 127.0.0.1\n#zodb-host 127.0.0.1\n#\n# port of the MySQL server for ZODB, default:\n# 3306\n#zodb-port 3306\n#\n# user of the MySQL server for ZODB, default:\n# zenoss\n#zodb-user zenoss\n#\n# password of the MySQL server for ZODB,\n# default: zenoss\n#zodb-password zenoss\n#\n# Name of database for MySQL object store,\n# default: zodb\n#zodb-db zodb\n#\n# Name of socket file for MySQL server\n# connection if host is localhost\n#zodb-socket None\n#\n# memcached servers to use for object\n# cache (eg. 127.0.0.1:11211), default:\n# 127.0.0.1:11211\n#zodb-cacheservers 127.0.0.1:11211\n#\n# Specify the number of seconds a database\n# connection will wait to acquire a database\n# 'commit' lock before failing (defaults\n# to 30 seconds if not specified)., default:\n# 30\n#zodb-commit-lock-timeout 30\n#\n" } }, "Context": null, "Endpoints": [ { "Name": "zenhub", "Purpose": "import", "Protocol": "tcp", "PortNumber": 8789, "PortTemplate": "", "VirtualAddress": "", "Application": "localhost_zenhubPB", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "mariadb", "Purpose": "import", "Protocol": "", "PortNumber": 0, "PortTemplate": "", "VirtualAddress": "", "Application": "zodb_.*", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "memcached", "Purpose": "import", "Protocol": "tcp", "PortNumber": 11211, "PortTemplate": "", "VirtualAddress": "", "Application": "memcached", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "redis", "Purpose": "import", "Protocol": "tcp", "PortNumber": 6379, "PortTemplate": "", "VirtualAddress": "", "Application": "redis", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "rabbitmq", "Purpose": "import", "Protocol": "", "PortNumber": 0, "PortTemplate": "", "VirtualAddress": "", "Application": "rabbitmq.*", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "controlplane_consumer", "Purpose": "import", "Protocol": "tcp", "PortNumber": 8444, "PortTemplate": "", "VirtualAddress": "", "Application": "controlplane_consumer", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "zep", "Purpose": "import", "Protocol": "tcp", "PortNumber": 8084, "PortTemplate": "", "VirtualAddress": "", "Application": "zep", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "zproxy", "Purpose": "import", "Protocol": "tcp", "PortNumber": 8080, "PortTemplate": "", "VirtualAddress": "", "Application": "zproxy", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null } ], "Services": [], "LogFilters": null, "Volumes": [ { "Owner": "zenoss:zenoss", "Permission": "0755", "ResourcePath": "zenjobs", "ContainerPath": "/opt/zenoss/log/jobs", "Type": "", "InitContainerPath": "", "ExcludeFromBackups": false }, { "Owner": "zenoss:zenoss", "Permission": "0775", "ResourcePath": "zenoss-var-ext", "ContainerPath": "/opt/zenoss/var/ext", "Type": "", "InitContainerPath": "", "ExcludeFromBackups": false }, { "Owner": "zenoss:zenoss", "Permission": "0755", "ResourcePath": ".ssh", "ContainerPath": "/home/zenoss/.ssh", "Type": "", "InitContainerPath": "", "ExcludeFromBackups": false }, { "Owner": "zenoss:zenoss", "Permission": "0775", "ResourcePath": "var-zenpacks", "ContainerPath": "/var/zenoss", "Type": "", "InitContainerPath": "", "ExcludeFromBackups": false } ], "LogConfigs": [ { "Path": "/opt/zenoss/log/zenjobs.log", "Type": "zenjobs", "Filters": [ "pythondaemon" ], "LogTags": null, "IsAudit": false } ], "Snapshot": { "Pause": "", "Resume": "" }, "RAMCommitment": "256M", "CPUCommitment": 1, "DisableShell": false, "Runs": null, "Commands": null, "Actions": { "debug": "su - zenoss -c '${ZENHOME:-/opt/zenoss}/bin/{{.Name}} debug'", "stats": "su - zenoss -c '${ZENHOME:-/opt/zenoss}/bin/{{.Name}} stats'" }, "HealthChecks": { "mariadb_answering": { "Script": "/opt/zenoss/bin/healthchecks/mariadb_answering", "Timeout": 0, "Interval": 10, "Tolerance": 0 }, "rabbit_answering": { "Script": "/opt/zenoss/bin/healthchecks/rabbit_answering {{(getContext . \"global.conf.amqpuser\")}} {{(getContext . \"global.conf.amqppassword\")}}", "Timeout": 0, "Interval": 10, "Tolerance": 0 }, "redis_answering": { "Script": "/opt/zenoss/bin/healthchecks/redis_answering", "Timeout": 0, "Interval": 5, "Tolerance": 0 }, "running": { "Script": "pgrep -fu zenoss zenjobs.py \u003e /dev/null", "Timeout": 0, "Interval": 5, "Tolerance": 0 }, "solr_answering": { "Script": "curl -A 'Solr answering healthcheck' -s http://localhost:8983/solr/zenoss_model/admin/ping?wt=json | grep -q '\"status\":\"OK\"'", "Timeout": 0, "Interval": 10, "Tolerance": 0 }, "stable_workers": { "Script": "/opt/zenoss/bin/healthchecks/zenjobs/stable_workers", "Timeout": 0, "Interval": 5, "Tolerance": 0 } }, "Prereqs": [ { "Name": "MariaDB connectivity", "Script": "su - zenoss -c '/opt/zenoss/bin/python /opt/zenoss/Products/ZenUtils/ZenDB.py --usedb zodb --execsql=\";\"'" } ], "MonitoringProfile": { "MetricConfigs": null, "GraphConfigs": null, "ThresholdConfigs": null }, "MemoryLimit": 0, "CPUShares": 0, "PIDFile": "", "StartLevel": 0, "EmergencyShutdownLevel": 0 } ], "LogFilters": null, "Volumes": null, "LogConfigs": null, "Snapshot": { "Pause": "", "Resume": "" }, "RAMCommitment": "", "CPUCommitment": 0, "DisableShell": false, "Runs": null, "Commands": null, "Actions": null, "HealthChecks": null, "Prereqs": null, "MonitoringProfile": { "MetricConfigs": null, "GraphConfigs": null, "ThresholdConfigs": null }, "MemoryLimit": 0, "CPUShares": 0, "PIDFile": "", "StartLevel": 0, "EmergencyShutdownLevel": 0 }, { "Name": "Collection", "Title": "", "Version": "", "Command": "", "Description": "", "Environment": null, "Tags": [ "zenoss-collection" ], "ImageID": "", "Instances": { "Min": 0, "Max": 0, "Default": 0 }, "ChangeOptions": null, "Launch": "auto", "HostPolicy": "", "Hostname": "", "Privileged": false, "ConfigFiles": {}, "Context": null, "Endpoints": null, "Services": [ { "Name": "localhost", "Title": "", "Version": "", "Command": "", "Description": "Localhost application", "Environment": null, "Tags": [ "hub" ], "ImageID": "", "Instances": { "Min": 0, "Max": 0, "Default": 0 }, "ChangeOptions": null, "Launch": "auto", "HostPolicy": "", "Hostname": "", "Privileged": false, "ConfigFiles": {}, "Context": null, "Endpoints": [], "Services": [ { "Name": "localhost", "Title": "", "Version": "", "Command": "", "Description": "Localhost collector", "Environment": null, "Tags": [ "collector" ], "ImageID": "", "Instances": { "Min": 0, "Max": 0, "Default": 0 }, "ChangeOptions": null, "Launch": "auto", "HostPolicy": "", "Hostname": "", "Privileged": false, "ConfigFiles": {}, "Context": null, "Endpoints": [], "Services": [ { "Name": "MetricShipper", "Title": "", "Version": "", "Command": "su - zenoss -c \"cd /opt/zenoss \u0026\u0026 /bin/supervisord -n -c etc/metricshipper/supervisord.conf\"", "Description": "Pushes metric data to a MetricConsumer", "Environment": null, "Tags": [ "daemon", "collector" ], "ImageID": "zenoss/core_6.2:6.2.1_1", "Instances": { "Min": 1, "Max": 0, "Default": 0 }, "ChangeOptions": null, "Launch": "auto", "HostPolicy": "", "Hostname": "", "Privileged": false, "ConfigFiles": { "/opt/zenoss/etc/metricshipper/metricshipper.yaml": { "Filename": "/opt/zenoss/etc/metricshipper/metricshipper.yaml", "Owner": "zenoss:zenoss", "Permissions": "0644", "Content": "# Redis URL to subscribe to, of the format:\n#\n# redis://HOST:PORT/DATABASE/KEY\n#\n# Where KEY is the key of the list containing metrics. This must match whatever\n# is specified on the publishing side (i.e., in the collector daemon).\n#\n#redisurl: redis://localhost:6379/0/metrics2\n\n# WebSocket URL of consumer to publish to.\n#\n#consumerurl: ws://localhost:8080/ws/metrics/store\n\n# Username to use when connecting to the consumer\n#\n\nusername: {{(contextFilter . \"global.conf.zauth-\").username}}\n\n# Password to use when connecting to the consumer\n#\n\npassword: {{(contextFilter . \"global.conf.zauth-\").password}}\n\n# Number of simultaneous readers from Redis.\n#\n#readers: 2\n\n# Number of simultaneous writers to the consumer.\n#\n#writers: 1\n\n# Maximum number of messages to keep in the internal buffer.\n#\n#maxbuffersize: 1024\n\n# Maximum number of messages to send to the consumer in a single batch.\n# This should be smaller than the setting for maxbuffersize.\n#\n#maxbatchsize: 64\n\n# Maximum time in seconds to wait for messages from the internal buffer to\n# be ready before sending a batch to the consumer.\n#\n#batchtimeout: 0.1\n\n# Rolling time period in seconds to consider slow-down messages from the\n# consumer.\n#\n#backoffwindow: 60\n\n# Maximum age in seconds of websocket connections before they are closed and\n# reopened. Set to 0 to disable autoclosing connections.\n#\n#maxconnectionage: 600\n\n# Encoding to use for published metrics (\"binary\" or \"json\"). Default is\n# binary.\n#\n#encoding: binary\n\n# Maximum number of slow-down messages to consider for exponential backoff.\n#\n#maxbackoffsteps: 1200\n\n# Maximum number of milliseconds to wait before sending each batch of metrics.\n#\n#maxbackoffdelay: 10000\n\n# Number of processors to use.\n#\n#cpus: 4\n\n# Total retry attempts, zero for infinity\n#\n#retryconnection: 0\n\n# Timeout between connection retry attempts in seconds\n#\n#retryconnectiontimeout: 1\n" } }, "Context": null, "Endpoints": [ { "Name": "CollectorRedis", "Purpose": "import_all", "Protocol": "tcp", "PortNumber": 6379, "PortTemplate": "", "VirtualAddress": "", "Application": "{{(parent .).Name}}_redis", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "zproxy", "Purpose": "import", "Protocol": "tcp", "PortNumber": 8080, "PortTemplate": "", "VirtualAddress": "", "Application": "zproxy", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null } ], "Services": [], "LogFilters": null, "Volumes": null, "LogConfigs": [ { "Path": "/opt/zenoss/log/metricshipper.log", "Type": "metricshipper", "Filters": [ "glog" ], "LogTags": [ { "Name": "monitor", "Value": "{{(parent .).Name}}" } ], "IsAudit": false } ], "Snapshot": { "Pause": "", "Resume": "" }, "RAMCommitment": "256M", "CPUCommitment": 1, "DisableShell": false, "Runs": null, "Commands": null, "Actions": null, "HealthChecks": { "redis_answering": { "Script": "/opt/zenoss/bin/healthchecks/redis_answering", "Timeout": 0, "Interval": 5, "Tolerance": 0 }, "running": { "Script": "pgrep -u zenoss metricshipper", "Timeout": 0, "Interval": 5, "Tolerance": 0 }, "store_answering": { "Script": "/opt/zenoss/bin/healthchecks/MetricShipper/store_answering", "Timeout": 0, "Interval": 10, "Tolerance": 0 } }, "Prereqs": null, "MonitoringProfile": { "MetricConfigs": [ { "ID": "metricshipper", "Name": "Metric Shipper metrics", "Description": "Metric Shipper metrics", "Query": { "RequestURI": "", "Method": "", "Headers": null, "Data": "" }, "Metrics": [ { "ID": "ZEN_INF.org.zenoss.app.metricshipper.totalIncoming.count", "Name": "incoming", "Description": "rate of incoming metrics", "Counter": true, "ResetValue": 0, "Unit": "metrics/second", "BuiltIn": false }, { "ID": "ZEN_INF.org.zenoss.app.metricshipper.totalOutgoing.count", "Name": "outgoing", "Description": "rate of outgoing metrics", "Counter": true, "ResetValue": 0, "Unit": "metrics/second", "BuiltIn": false }, { "ID": "ZEN_INF.org.zenoss.app.metricshipper.txBytes.count", "Name": "txBytes", "Description": "rate of outgoing bytes on websocket", "Counter": true, "ResetValue": 0, "Unit": "metrics/second", "BuiltIn": false } ] } ], "GraphConfigs": [ { "id": "websocketThroughput", "name": "Websocket Throughput", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "Throughput", "description": "Websocket throughput.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "", "legend": "tx", "metric": "ZEN_INF.org.zenoss.app.metricshipper.txBytes.count", "metricSource": "metricshipper", "id": "txBytes", "name": "tx", "rate": true, "rateOptions": { "counter": true, "counterMax": null, "resetThreshold": null }, "type": "line" } ], "builtin": false, "units": "", "base": 0 }, { "id": "dataPoints", "name": "Data Points", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "Data Points", "description": "Number of datapoints received / transmitted per second.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "", "legend": "outgoing", "metric": "ZEN_INF.org.zenoss.app.metricshipper.totalOutgoing.count", "metricSource": "metricshipper", "id": "outgoing", "name": "outgoing", "rate": true, "rateOptions": { "counter": true, "counterMax": null, "resetThreshold": null }, "type": "line" }, { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "", "legend": "incoming", "metric": "ZEN_INF.org.zenoss.app.metricshipper.totalIncoming.count", "metricSource": "metricshipper", "id": "incoming", "name": "incoming", "rate": true, "rateOptions": { "counter": true, "counterMax": null, "resetThreshold": null }, "type": "line" } ], "builtin": false, "units": "", "base": 0 } ], "ThresholdConfigs": null }, "MemoryLimit": 0, "CPUShares": 0, "PIDFile": "", "StartLevel": 0, "EmergencyShutdownLevel": 0 }, { "Name": "zenpython", "Title": "", "Version": "", "Command": "su - zenoss -c \"/opt/zenoss/bin/zenpython run -c --logfileonly --monitor {{(parent .).Name}} \"", "Description": "Adds a \"Python\" data source type for asynchronous collection using a custom Python module", "Environment": null, "Tags": [ "ZenPacks.zenoss.PythonCollector", "daemon", "collector" ], "ImageID": "zenoss/core_6.2:6.2.1_1", "Instances": { "Min": 1, "Max": 1, "Default": 0 }, "ChangeOptions": null, "Launch": "auto", "HostPolicy": "", "Hostname": "", "Privileged": false, "ConfigFiles": { "/opt/zenoss/etc/global.conf": { "Filename": "/opt/zenoss/etc/global.conf", "Owner": "zenoss:zenoss", "Permissions": "660", "Content": "# Generated by serviced\n{{range $k,$v:=contextFilter . \"global.conf.\"}}{{$k}} {{$v}}\n{{end}}" }, "/opt/zenoss/etc/zenpython.conf": { "Filename": "/opt/zenoss/etc/zenpython.conf", "Owner": "zenoss:zenoss", "Permissions": "0664", "Content": "#\n# Configuration file for zenpython\n#\n# To enable a particular option, uncomment the desired entry.\n#\n# Parameter Setting\n# --------- -------\n#\n# Host of zenhub daemon. Default is localhost.,\n# default: localhost\n#hubhost localhost\n#\n# Port zenhub listens on.Default is 8789.,\n# default: 8789\n#hubport 8789\n#\n# Username for zenhub login. Default is\n# admin., default: admin\n#hubusername admin\n#\n# Password for zenhub login. Default is\n# zenoss., default: zenoss\n#hubpassword zenoss\n#\n# Name of monitor instance to use for\n# configuration. Default is localhost.,\n# default: localhost\n#monitor localhost\n#\n# Initial time to wait for a ZenHub connection,\n# default: 30\n#initialHubTimeout 30\n#\n# Send clear events even when the most\n# recent event was also a clear event.,\n# default: False\n#allowduplicateclears False\n#\n# Send a clear event every [DUPLICATECLEARINTEVAL]\n# events., default: 0\n#duplicateclearinterval 0\n#\n# Seconds between attempts to flush events\n# to ZenHub., default: 5.0\n#eventflushseconds 5.0\n#\n# Number of events to send to ZenHubat\n# one time, default: 50\n#eventflushchunksize 50\n#\n# Maximum number of events to queue, default:\n# 5000\n#maxqueuelen 5000\n#\n# The size, in percent, of the event queue\n# when event pushback starts, default: 0.75\n#queuehighwatermark 0.75\n#\n# How often to ping zenhub, default: 30\n#zenhubpinginterval 30\n#\n# Disable event de-duplication, default: True\n#disable-event-deduplication True\n#\n# redis connection string: redis://[hostname]:[port]/[db],\n# default: %default, default:\n# redis://localhost:6379/0\n#redis-url redis://localhost:6379/0\n#\n# Number of metrics to buffer if redis\n# goes down, default: 65536\n#metricBufferSize 65536\n#\n# redis channel to which metrics are published,\n# default: metrics\n#metricsChannel metrics\n#\n# Max Number of metrics to allow in redis,\n# default: 864000000\n#maxOutstandingMetrics 864000000\n#\n# Use an alternate configuration file\n#configfile /opt/zenoss/etc/zenpython.conf\n#\n# Generate an XML file containing command-line\n# switches., default: False\n#genxmlconfigs False\n#\n# User to become when running default:zenoss,\n# default: zenoss\n#uid zenoss\n#\n# Cycle continuously on cycleInterval\n# from Zope, default: False\n#cycle False\n#\n# Launch into the background, default: False\n#daemon False\n#\n# Log to console and log file, default: False\n#duallog False\n#\n# Log to log file and not console, default:\n# False\n#logfileonly False\n#\n# output log info in HTML table format,\n# default: False\n#weblog False\n#\n# Run under a supervisor which will restart\n# it, default: False\n#watchdog False\n#\n# The path to the watchdog reporting socket\n#watchdogPath None\n#\n# Wait seconds for initial heartbeat\n#starttimeout None\n#\n# Set listener socket options. For option\n# details: man 7 socket, default: []\n#socketOption []\n#\n# Specify a device ID to monitor\n#device \n#\n# Max number of tasks to run at once,\n# default %default, default: 500\n#maxparallel 500\n#\n# How often to logs statistics of current\n# tasks, value in seconds; very verbose,\n# default: 0\n#logTaskStats 0\n#\n# How often to write internal statistics\n# value in seconds, default: 60\n#writeStatistics 60\n#\n# Max number of device configurations\n# to load at once, default %default (0\n# == all devices), default: 25\n#configsipsize 25\n#\n# Delay in seconds between device configurations\n# loading, default %default, default: 1\n#configsipdelay 1\n#\n# Logging severity threshold, default: 20\n#logseverity 20\n#\n# Override the default logging path; default\n# $ZENHOME/log, default: /opt/zenoss/log\n#logpath /opt/zenoss/log\n#\n# Max size of log file in KB; default\n# 10240, default: 10240\n#maxlogsize 10240\n#\n# Max number of back up log files; default\n# 3, default: 3\n#maxbackuplogs 3\n#\n# Heartbeat timeout, default: 900 sec.\n#heartbeattimeout 900\n#" } }, "Context": null, "Endpoints": [ { "Name": "zenhub", "Purpose": "import", "Protocol": "tcp", "PortNumber": 8789, "PortTemplate": "", "VirtualAddress": "", "Application": "{{(parent (parent .)).Name}}_zenhubPB", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "CollectorRedis", "Purpose": "import_all", "Protocol": "tcp", "PortNumber": 6379, "PortTemplate": "", "VirtualAddress": "", "Application": "{{(parent .).Name}}_redis", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "zproxy", "Purpose": "import", "Protocol": "tcp", "PortNumber": 8080, "PortTemplate": "", "VirtualAddress": "", "Application": "zproxy", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "controlplane_consumer", "Purpose": "import", "Protocol": "tcp", "PortNumber": 8444, "PortTemplate": "", "VirtualAddress": "", "Application": "controlplane_consumer", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "rabbitmq", "Purpose": "import", "Protocol": "tcp", "PortNumber": 5672, "PortTemplate": "", "VirtualAddress": "", "Application": "rabbitmq", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null } ], "Services": [], "LogFilters": null, "Volumes": [ { "Owner": "zenoss:zenoss", "Permission": "0755", "ResourcePath": ".ssh", "ContainerPath": "/home/zenoss/.ssh", "Type": "", "InitContainerPath": "", "ExcludeFromBackups": false }, { "Owner": "zenoss:zenoss", "Permission": "0775", "ResourcePath": "var-zenpacks", "ContainerPath": "/var/zenoss", "Type": "", "InitContainerPath": "", "ExcludeFromBackups": false } ], "LogConfigs": [ { "Path": "/opt/zenoss/log/zenpython.log", "Type": "zenpython", "Filters": [ "pythondaemon" ], "LogTags": [ { "Name": "monitor", "Value": "{{(parent .).Name}}" } ], "IsAudit": false } ], "Snapshot": { "Pause": "", "Resume": "" }, "RAMCommitment": "256M", "CPUCommitment": 1, "DisableShell": false, "Runs": null, "Commands": null, "Actions": { "debug": "su - zenoss -c '${ZENHOME:-/opt/zenoss}/bin/{{.Name}} debug'", "stats": "su - zenoss -c '${ZENHOME:-/opt/zenoss}/bin/{{.Name}} stats'" }, "HealthChecks": { "central_query_answering": { "Script": "/opt/zenoss/bin/healthchecks/query_answering", "Timeout": 0, "Interval": 10, "Tolerance": 0 }, "redis_answering": { "Script": "/opt/zenoss/bin/healthchecks/redis_answering", "Timeout": 0, "Interval": 5, "Tolerance": 0 }, "running": { "Script": "pgrep -fu zenoss zenpython.py \u003e /dev/null", "Timeout": 0, "Interval": 5, "Tolerance": 0 }, "zenhub_answering": { "Script": "/opt/zenoss/bin/healthchecks/zenhub_answering", "Timeout": 0, "Interval": 10, "Tolerance": 0 } }, "Prereqs": null, "MonitoringProfile": { "MetricConfigs": [ { "ID": "zenpython", "Name": "zenpython internal metrics", "Description": "zenpython internal metrics", "Query": { "RequestURI": "", "Method": "", "Headers": null, "Data": "" }, "Metrics": [ { "ID": "dataPoints", "Name": "Datapoints", "Description": "Number of datapoints collected.", "Counter": false, "ResetValue": 0, "Unit": "Points", "BuiltIn": false }, { "ID": "devices", "Name": "Devices", "Description": "Number of devices.", "Counter": false, "ResetValue": 0, "Unit": "Count", "BuiltIn": false }, { "ID": "eventCount", "Name": "Event Count", "Description": "Total number of events.", "Counter": false, "ResetValue": 0, "Unit": "Events", "BuiltIn": false }, { "ID": "eventQueueLength", "Name": "Event Queue Length", "Description": "The number of events pending to be flushed from a daemon's memory queue.", "Counter": false, "ResetValue": 0, "Unit": "Events", "BuiltIn": false }, { "ID": "missedRuns", "Name": "Missed Runs", "Description": "Number of missed runs of tasks running on daemon.", "Counter": false, "ResetValue": 0, "Unit": "Runs", "BuiltIn": false }, { "ID": "queuedTasks", "Name": "Queued Tasks", "Description": "Number of tasks scheduled to be run, but are not running yet.", "Counter": false, "ResetValue": 0, "Unit": "Tasks", "BuiltIn": false }, { "ID": "runningTasks", "Name": "Running Tasks", "Description": "Number of currently running tasks.", "Counter": false, "ResetValue": 0, "Unit": "Tasks", "BuiltIn": false }, { "ID": "taskCount", "Name": "Task Count", "Description": "Total number of tasks.", "Counter": false, "ResetValue": 0, "Unit": "Tasks", "BuiltIn": false } ] } ], "GraphConfigs": [ { "id": "dataPoints", "name": "Data Points", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "Data Points", "description": "Number of datapoints collected.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Data Points", "metric": "dataPoints", "metricSource": "zenpython", "id": "dataPoints", "name": "Data Points", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 }, { "id": "devices", "name": "Devices", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "Devices", "description": "Number of devices.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Devices", "metric": "devices", "metricSource": "zenpython", "id": "devices", "name": "Devices", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 }, { "id": "eventCount", "name": "Event Count", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "Event Count", "description": "Total number of events.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Event Count", "metric": "eventCount", "metricSource": "zenpython", "id": "eventCount", "name": "Event Count", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 }, { "id": "eventQueueLength", "name": "Event Queue Length", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "Event Queue Length", "description": "The number of events pending to be flushed from a daemon's memory queue.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Event Queue Length", "metric": "eventQueueLength", "metricSource": "zenpython", "id": "eventQueueLength", "name": "Event Queue Length", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 }, { "id": "missedRuns", "name": "Missed Runs", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "Missed Runs", "description": "Number of missed runs of tasks running on daemon.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Missed Runs", "metric": "missedRuns", "metricSource": "zenpython", "id": "missedRuns", "name": "Missed Runs", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 }, { "id": "tasks", "name": "Tasks", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "", "description": "Number of queued, running, and total tasks.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Queued Tasks", "metric": "queuedTasks", "metricSource": "zenpython", "id": "queuedTasks", "name": "Queued Tasks", "rate": false, "rateOptions": null, "type": "line" }, { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Running Tasks", "metric": "runningTasks", "metricSource": "zenpython", "id": "runningTasks", "name": "Running Tasks", "rate": false, "rateOptions": null, "type": "line" }, { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Task Count", "metric": "taskCount", "metricSource": "zenpython", "id": "taskCount", "name": "Task Count", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 } ], "ThresholdConfigs": [ { "ID": "missedRuns.high", "Name": "Missed Runs High", "Type": "MinMax", "Description": "High number of missed runs", "AppliedTo": 0, "MetricSource": "zenpython", "DataPoints": [ "missedRuns" ], "Threshold": { "Max": "5", "Min": "" }, "EventTags": { "EventClass": "/App/Zenoss", "Explanation": "This service is missing runs", "Resolution": "Add more collectors", "Severity": 3 } } ] }, "MemoryLimit": 0, "CPUShares": 0, "PIDFile": "", "StartLevel": 0, "EmergencyShutdownLevel": 0 }, { "Name": "zenstatus", "Title": "", "Version": "", "Command": "su - zenoss -c \"/opt/zenoss/bin/zenstatus run -c --logfileonly --monitor {{(parent .).Name}} \"", "Description": "Checks the status of Zenoss daemons on localhost", "Environment": null, "Tags": [ "daemon", "collector" ], "ImageID": "zenoss/core_6.2:6.2.1_1", "Instances": { "Min": 1, "Max": 1, "Default": 0 }, "ChangeOptions": null, "Launch": "auto", "HostPolicy": "", "Hostname": "", "Privileged": false, "ConfigFiles": { "/opt/zenoss/etc/global.conf": { "Filename": "/opt/zenoss/etc/global.conf", "Owner": "zenoss:zenoss", "Permissions": "660", "Content": "# Generated by serviced\n{{range $k,$v:=contextFilter . \"global.conf.\"}}{{$k}} {{$v}}\n{{end}}" }, "/opt/zenoss/etc/zenstatus.conf": { "Filename": "/opt/zenoss/etc/zenstatus.conf", "Owner": "zenoss:zenoss", "Permissions": "0664", "Content": "#\n# Configuration file for zenstatus\n#\n# To enable a particular option, uncomment the desired entry.\n#\n# Parameter Setting\n# --------- -------\n#\n# Host of zenhub daemon. Default is localhost.,\n# default: localhost\n#hubhost localhost\n#\n# Port zenhub listens on.Default is 8789.,\n# default: 8789\n#hubport 8789\n#\n# Username for zenhub login. Default is\n# admin., default: admin\n#hubusername admin\n#\n# Password for zenhub login. Default is\n# zenoss., default: zenoss\n#hubpassword zenoss\n#\n# Name of monitor instance to use for\n# configuration. Default is localhost.,\n# default: localhost\n#monitor localhost\n#\n# Initial time to wait for a ZenHub connection,\n# default: 30\n#initialHubTimeout 30\n#\n# Send clear events even when the most\n# recent event was also a clear event.,\n# default: False\n#allowduplicateclears False\n#\n# Send a clear event every [DUPLICATECLEARINTEVAL]\n# events., default: 0\n#duplicateclearinterval 0\n#\n# Seconds between attempts to flush events\n# to ZenHub., default: 5.0\n#eventflushseconds 5.0\n#\n# Number of events to send to ZenHubat\n# one time, default: 50\n#eventflushchunksize 50\n#\n# Maximum number of events to queue, default:\n# 5000\n#maxqueuelen 5000\n#\n# The size, in percent, of the event queue\n# when event pushback starts, default: 0.75\n#queuehighwatermark 0.75\n#\n# How often to ping zenhub, default: 30\n#zenhubpinginterval 30\n#\n# Disable event de-duplication, default: True\n#disable-event-deduplication True\n#\n# redis connection string: redis://[hostname]:[port]/[db],\n# default: %default, default:\n# redis://localhost:6379/0\n#redis-url redis://localhost:6379/0\n#\n# Number of metrics to buffer if redis\n# goes down, default: 65536\n#metricBufferSize 65536\n#\n# redis channel to which metrics are published,\n# default: metrics\n#metricsChannel metrics\n#\n# Max Number of metrics to allow in redis,\n# default: 864000000\n#maxOutstandingMetrics 864000000\n#\n# Use an alternate configuration file\n#configfile /opt/zenoss/etc/zenstatus.conf\n#\n# Generate an XML file containing command-line\n# switches., default: False\n#genxmlconfigs False\n#\n# User to become when running default:zenoss,\n# default: zenoss\n#uid zenoss\n#\n# Cycle continuously on cycleInterval\n# from Zope, default: False\n#cycle False\n#\n# Launch into the background, default: False\n#daemon False\n#\n# Log to console and log file, default: False\n#duallog False\n#\n# Log to log file and not console, default:\n# False\n#logfileonly False\n#\n# output log info in HTML table format,\n# default: False\n#weblog False\n#\n# Run under a supervisor which will restart\n# it, default: False\n#watchdog False\n#\n# The path to the watchdog reporting socket\n#watchdogPath None\n#\n# Wait seconds for initial heartbeat\n#starttimeout None\n#\n# Set listener socket options. For option\n# details: man 7 socket, default: []\n#socketOption []\n#\n# Specify a device ID to monitor\n#device \n#\n# Max number of tasks to run at once,\n# default %default, default: 500\n#maxparallel 500\n#\n# How often to logs statistics of current\n# tasks, value in seconds; very verbose,\n# default: 0\n#logTaskStats 0\n#\n# How often to write internal statistics\n# value in seconds, default: 60\n#writeStatistics 60\n#\n# Max number of device configurations\n# to load at once, default %default (0\n# == all devices), default: 25\n#configsipsize 25\n#\n# Delay in seconds between device configurations\n# loading, default %default, default: 1\n#configsipdelay 1\n#\n# Logging severity threshold, default: 20\n#logseverity 20\n#\n# Override the default logging path; default\n# $ZENHOME/log, default: /opt/zenoss/log\n#logpath /opt/zenoss/log\n#\n# Max size of log file in KB; default\n# 10240, default: 10240\n#maxlogsize 10240\n#\n# Max number of back up log files; default\n# 3, default: 3\n#maxbackuplogs 3\n#\n# Disable ping perspective, default: True\n#disable-ping-perspective True\n#\n# Heartbeat timeout, default: 900 sec.\n#heartbeattimeout 900\n#" } }, "Context": null, "Endpoints": [ { "Name": "zproxy", "Purpose": "import", "Protocol": "tcp", "PortNumber": 8080, "PortTemplate": "", "VirtualAddress": "", "Application": "zproxy", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "zenhub", "Purpose": "import", "Protocol": "tcp", "PortNumber": 8789, "PortTemplate": "", "VirtualAddress": "", "Application": "{{(parent (parent .)).Name}}_zenhubPB", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "CollectorRedis", "Purpose": "import_all", "Protocol": "tcp", "PortNumber": 6379, "PortTemplate": "", "VirtualAddress": "", "Application": "{{(parent .).Name}}_redis", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "controlplane_consumer", "Purpose": "import", "Protocol": "tcp", "PortNumber": 8444, "PortTemplate": "", "VirtualAddress": "", "Application": "controlplane_consumer", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null } ], "Services": [], "LogFilters": null, "Volumes": [ { "Owner": "zenoss:zenoss", "Permission": "0755", "ResourcePath": ".ssh", "ContainerPath": "/home/zenoss/.ssh", "Type": "", "InitContainerPath": "", "ExcludeFromBackups": false }, { "Owner": "zenoss:zenoss", "Permission": "0775", "ResourcePath": "var-zenpacks", "ContainerPath": "/var/zenoss", "Type": "", "InitContainerPath": "", "ExcludeFromBackups": false } ], "LogConfigs": [ { "Path": "/opt/zenoss/log/zenstatus.log", "Type": "zenstatus", "Filters": [ "pythondaemon" ], "LogTags": [ { "Name": "monitor", "Value": "{{(parent .).Name}}" } ], "IsAudit": false } ], "Snapshot": { "Pause": "", "Resume": "" }, "RAMCommitment": "256M", "CPUCommitment": 1, "DisableShell": false, "Runs": null, "Commands": null, "Actions": { "debug": "su - zenoss -c '${ZENHOME:-/opt/zenoss}/bin/{{.Name}} debug'", "stats": "su - zenoss -c '${ZENHOME:-/opt/zenoss}/bin/{{.Name}} stats'" }, "HealthChecks": { "redis_answering": { "Script": "/opt/zenoss/bin/healthchecks/redis_answering", "Timeout": 0, "Interval": 5, "Tolerance": 0 }, "running": { "Script": "pgrep -fu zenoss zenstatus.py \u003e /dev/null", "Timeout": 0, "Interval": 5, "Tolerance": 0 }, "zenhub_answering": { "Script": "/opt/zenoss/bin/healthchecks/zenhub_answering", "Timeout": 0, "Interval": 10, "Tolerance": 0 } }, "Prereqs": null, "MonitoringProfile": { "MetricConfigs": [ { "ID": "zenstatus", "Name": "zenstatus internal metrics", "Description": "zenstatus internal metrics", "Query": { "RequestURI": "", "Method": "", "Headers": null, "Data": "" }, "Metrics": [ { "ID": "dataPoints", "Name": "Datapoints", "Description": "Number of datapoints collected.", "Counter": false, "ResetValue": 0, "Unit": "Points", "BuiltIn": false }, { "ID": "devices", "Name": "Devices", "Description": "Number of devices.", "Counter": false, "ResetValue": 0, "Unit": "Count", "BuiltIn": false }, { "ID": "eventCount", "Name": "Event Count", "Description": "Total number of events.", "Counter": false, "ResetValue": 0, "Unit": "Events", "BuiltIn": false }, { "ID": "eventQueueLength", "Name": "Event Queue Length", "Description": "The number of events pending to be flushed from a daemon's memory queue.", "Counter": false, "ResetValue": 0, "Unit": "Events", "BuiltIn": false }, { "ID": "missedRuns", "Name": "Missed Runs", "Description": "Number of missed runs of tasks running on daemon.", "Counter": false, "ResetValue": 0, "Unit": "Runs", "BuiltIn": false }, { "ID": "queuedTasks", "Name": "Queued Tasks", "Description": "Number of tasks scheduled to be run, but are not running yet.", "Counter": false, "ResetValue": 0, "Unit": "Tasks", "BuiltIn": false }, { "ID": "runningTasks", "Name": "Running Tasks", "Description": "Number of currently running tasks.", "Counter": false, "ResetValue": 0, "Unit": "Tasks", "BuiltIn": false }, { "ID": "taskCount", "Name": "Task Count", "Description": "Total number of tasks.", "Counter": false, "ResetValue": 0, "Unit": "Tasks", "BuiltIn": false } ] } ], "GraphConfigs": [ { "id": "dataPoints", "name": "Data Points", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "Data Points", "description": "Number of datapoints collected.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Data Points", "metric": "dataPoints", "metricSource": "zenstatus", "id": "dataPoints", "name": "Data Points", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 }, { "id": "devices", "name": "Devices", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "Devices", "description": "Number of devices.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Devices", "metric": "devices", "metricSource": "zenstatus", "id": "devices", "name": "Devices", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 }, { "id": "eventCount", "name": "Event Count", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "Event Count", "description": "Total number of events.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Event Count", "metric": "eventCount", "metricSource": "zenstatus", "id": "eventCount", "name": "Event Count", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 }, { "id": "eventQueueLength", "name": "Event Queue Length", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "Event Queue Length", "description": "The number of events pending to be flushed from a daemon's memory queue.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Event Queue Length", "metric": "eventQueueLength", "metricSource": "zenstatus", "id": "eventQueueLength", "name": "Event Queue Length", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 }, { "id": "missedRuns", "name": "Missed Runs", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "Missed Runs", "description": "Number of missed runs of tasks running on daemon.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Missed Runs", "metric": "missedRuns", "metricSource": "zenstatus", "id": "missedRuns", "name": "Missed Runs", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 }, { "id": "tasks", "name": "Tasks", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "", "description": "Number of queued, running, and total tasks.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Queued Tasks", "metric": "queuedTasks", "metricSource": "zenstatus", "id": "queuedTasks", "name": "Queued Tasks", "rate": false, "rateOptions": null, "type": "line" }, { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Running Tasks", "metric": "runningTasks", "metricSource": "zenstatus", "id": "runningTasks", "name": "Running Tasks", "rate": false, "rateOptions": null, "type": "line" }, { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Task Count", "metric": "taskCount", "metricSource": "zenstatus", "id": "taskCount", "name": "Task Count", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 } ], "ThresholdConfigs": [ { "ID": "missedRuns.high", "Name": "Missed Runs High", "Type": "MinMax", "Description": "High number of missed runs", "AppliedTo": 0, "MetricSource": "zenstatus", "DataPoints": [ "missedRuns" ], "Threshold": { "Max": "5", "Min": "" }, "EventTags": { "EventClass": "/App/Zenoss", "Explanation": "This service is missing runs", "Resolution": "Add more collectors", "Severity": 3 } } ] }, "MemoryLimit": 0, "CPUShares": 0, "PIDFile": "", "StartLevel": 0, "EmergencyShutdownLevel": 0 }, { "Name": "zentrap", "Title": "", "Version": "", "Command": "su - zenoss -c \"/opt/zenoss/bin/zentrap run -c --logfileonly --monitor {{(parent .).Name}} \"", "Description": "Collects and parses SNMP traps, resolves OIDs into MIB names, and then forwards the traps to zenhub for additional processing", "Environment": null, "Tags": [ "daemon", "collector" ], "ImageID": "zenoss/core_6.2:6.2.1_1", "Instances": { "Min": 1, "Max": 1, "Default": 0 }, "ChangeOptions": null, "Launch": "auto", "HostPolicy": "", "Hostname": "", "Privileged": false, "ConfigFiles": { "/opt/zenoss/etc/global.conf": { "Filename": "/opt/zenoss/etc/global.conf", "Owner": "zenoss:zenoss", "Permissions": "660", "Content": "# Generated by serviced\n{{range $k,$v:=contextFilter . \"global.conf.\"}}{{$k}} {{$v}}\n{{end}}" }, "/opt/zenoss/etc/zentrap.conf": { "Filename": "/opt/zenoss/etc/zentrap.conf", "Owner": "zenoss:zenoss", "Permissions": "0664", "Content": "#\n# Configuration file for zentrap\n#\n# To enable a particular option, uncomment the desired entry.\n#\n# Parameter Setting\n# --------- -------\n#\n# Host of zenhub daemon. Default is localhost.,\n# default: localhost\n#hubhost localhost\n#\n# Port zenhub listens on.Default is 8789.,\n# default: 8789\n#hubport 8789\n#\n# Username for zenhub login. Default is\n# admin., default: admin\n#hubusername admin\n#\n# Password for zenhub login. Default is\n# zenoss., default: zenoss\n#hubpassword zenoss\n#\n# Name of monitor instance to use for\n# configuration. Default is localhost.,\n# default: localhost\n#monitor localhost\n#\n# Initial time to wait for a ZenHub connection,\n# default: 30\n#initialHubTimeout 30\n#\n# Send clear events even when the most\n# recent event was also a clear event.,\n# default: False\n#allowduplicateclears False\n#\n# Send a clear event every [DUPLICATECLEARINTEVAL]\n# events., default: 0\n#duplicateclearinterval 0\n#\n# Seconds between attempts to flush events\n# to ZenHub., default: 5.0\n#eventflushseconds 5.0\n#\n# Number of events to send to ZenHubat\n# one time, default: 50\n#eventflushchunksize 50\n#\n# Maximum number of events to queue, default:\n# 5000\n#maxqueuelen 5000\n#\n# The size, in percent, of the event queue\n# when event pushback starts, default: 0.75\n#queuehighwatermark 0.75\n#\n# How often to ping zenhub, default: 30\n#zenhubpinginterval 30\n#\n# Disable event de-duplication, default: True\n#disable-event-deduplication True\n#\n# redis connection string: redis://[hostname]:[port]/[db],\n# default: %default, default:\n# redis://localhost:6379/0\n#redis-url redis://localhost:6379/0\n#\n# Number of metrics to buffer if redis\n# goes down, default: 65536\n#metricBufferSize 65536\n#\n# redis channel to which metrics are published,\n# default: metrics\n#metricsChannel metrics\n#\n# Max Number of metrics to allow in redis,\n# default: 864000000\n#maxOutstandingMetrics 864000000\n#\n# Use an alternate configuration file\n#configfile /opt/zenoss/etc/zentrap.conf\n#\n# Generate an XML file containing command-line\n# switches., default: False\n#genxmlconfigs False\n#\n# User to become when running default:zenoss,\n# default: zenoss\n#uid zenoss\n#\n# Cycle continuously on cycleInterval\n# from Zope, default: False\n#cycle False\n#\n# Launch into the background, default: False\n#daemon False\n#\n# Log to console and log file, default: False\n#duallog False\n#\n# Log to log file and not console, default:\n# False\n#logfileonly False\n#\n# output log info in HTML table format,\n# default: False\n#weblog False\n#\n# Run under a supervisor which will restart\n# it, default: False\n#watchdog False\n#\n# The path to the watchdog reporting socket\n#watchdogPath None\n#\n# Wait seconds for initial heartbeat\n#starttimeout None\n#\n# Set listener socket options. For option\n# details: man 7 socket, default: []\n#socketOption []\n#\n# Specify a device ID to monitor\n#device\n#\n# Max number of tasks to run at once,\n# default %default, default: 500\n#maxparallel 500\n#\n# How often to logs statistics of current\n# tasks, value in seconds; very verbose,\n# default: 0\n#logTaskStats 0\n#\n# How often to write internal statistics\n# value in seconds, default: 60\n#writeStatistics 60\n#\n# Listen for SNMP traps on this port rather\n# than the default, default: 162\n#trapport 162\n#\n# Read from an existing connection rather\n# than opening a new port.\n#useFileDescriptor None\n#\n# Directory and filename to use as a template\n# to store captured raw trap packets.\n#captureFilePrefix None\n#\n# Capture all packets., default: False\n#captureAll False\n#\n# Comma-separated list of IP addresses\n# to capture.\n#captureIps\n#\n# Filename prefix containing captured\n# packet data. Can specify more than\n# once., default: []\n#replayFilePrefix []\n#\n# The name of the file used to filter traps. If no file specified\n# no traps are filtered. See zentrap.filter.conf for a description\n# of the filter formats.\n#\n#trapFilterFile zentrap.filter.conf\n#\n# Logging severity threshold, default: 20\n#logseverity 20\n#\n# Override the default logging path; default\n# $ZENHOME/log, default: /opt/zenoss/log\n#logpath /opt/zenoss/log\n#\n# Max size of log file in KB; default\n# 10240, default: 10240\n#maxlogsize 10240\n#\n# Max number of back up log files; default\n# 3, default: 3\n#maxbackuplogs 3\n#\n# Disable ping perspective, default: True\n#disable-ping-perspective True\n#\n# Heartbeat timeout, default: 900 sec.\n#heartbeattimeout 900\n#" }, "/opt/zenoss/etc/zentrap.filter.conf": { "Filename": "/opt/zenoss/etc/zentrap.filter.conf", "Owner": "zenoss:zenoss", "Permissions": "0664", "Content": "#\n# SNMP Trap Filter Definitions\n#\n# This file defines optional filters which zentrap applies to incoming traps.\n# The filters defined in this file are only applied if the 'trapFilterFile'\n# parameter in zentrap.conf specifies this file; e.g.\n# trapFilterFile zentrap.filter.conf\n#\n# Each line defines a single filter definition to either include or exclude\n# a particular trap. Lines beginning with \"#\" and blank lines are ignored.\n# The order of the definitions does not matter, but duplicates are not allowed.\n# The filtering logic matches each incoming trap to the most specific filter\n# definition. It then either includes or excludes that trap based on the filter\n# definition.\n#\n# If no valid filters are found (for instance everything is commented\n# out), then no traps are filtered.\n#\n# zentrap will exit on the first syntax error - check the zentrap log for\n# details about the specific error.\n#\n# At a high level, the generic syntax for each filter definition is:\n# ACTION SNMP_VERSION MATCHING_RULE\n# where:\n# ACTION is the filter action; must be one of \"include\" or \"exclude\"\n# SNMP_VERSION identifies the SNMP version; must be one of \"v1\" and \"v2\"\n# MATCHING_RULE is the matching rule for trap (varies by SNMP version)\n#\n# Valid definitions for SNMP V1 traps have one of the following formats:\n# include|exclude v1 TRAP_TYPE\n# include|exclude v1 GLOBBED_OID\n# include|exclude v1 OID *|SPECIFIC_TRAP\n# where:\n# TRAP_TYPE is a generic trap type in the range [0-5]\n# GLOBBED_OID is an OID ending with \".*\"\n# OID is a valid OID\n# SPECIFIC_TRAP is any specific trap type (any non-negative integer)\n# Note that the last two cases are used for enterprise-specific traps (i.e.\n# where the generic trap type is 6).\n#\n# Valid filter definitions for SNMP V2 traps have one of the following formats:\n# include|exclude v2 OID\n# include|exclude v2 GLOBBED_OID\n# where\n# OID is an valid OID\n# GLOBBED_OID is an OID ending with \".*\"\n#\n\n# Include all generic SNMP V1 Traps 0-5\ninclude v1 0\ninclude v1 1\ninclude v1 2\ninclude v1 3\ninclude v1 4\ninclude v1 5\n\n# Include all enterprise-specific SNMP V1 traps\ninclude v1 *\n\n# Include all SNMP V2 traps\ninclude v2 *\n" } }, "Context": null, "Endpoints": [ { "Name": "zproxy", "Purpose": "import", "Protocol": "tcp", "PortNumber": 8080, "PortTemplate": "", "VirtualAddress": "", "Application": "zproxy", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "zenhub", "Purpose": "import", "Protocol": "tcp", "PortNumber": 8789, "PortTemplate": "", "VirtualAddress": "", "Application": "{{(parent (parent .)).Name}}_zenhubPB", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "CollectorRedis", "Purpose": "import_all", "Protocol": "tcp", "PortNumber": 6379, "PortTemplate": "", "VirtualAddress": "", "Application": "{{(parent .).Name}}_redis", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "controlplane_consumer", "Purpose": "import", "Protocol": "tcp", "PortNumber": 8444, "PortTemplate": "", "VirtualAddress": "", "Application": "controlplane_consumer", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "zentrap", "Purpose": "export", "Protocol": "udp", "PortNumber": 162, "PortTemplate": "", "VirtualAddress": "", "Application": "{{(parent .).Name}}_snmp_trap", "ApplicationTemplate": "", "AddressConfig": { "Port": 162, "Protocol": "udp" }, "VHosts": null, "VHostList": null, "PortList": null } ], "Services": [], "LogFilters": null, "Volumes": [ { "Owner": "zenoss:zenoss", "Permission": "0755", "ResourcePath": ".ssh", "ContainerPath": "/home/zenoss/.ssh", "Type": "", "InitContainerPath": "", "ExcludeFromBackups": false }, { "Owner": "zenoss:zenoss", "Permission": "0775", "ResourcePath": "var-zenpacks", "ContainerPath": "/var/zenoss", "Type": "", "InitContainerPath": "", "ExcludeFromBackups": false } ], "LogConfigs": [ { "Path": "/opt/zenoss/log/zentrap.log", "Type": "zentrap", "Filters": [ "pythondaemon" ], "LogTags": [ { "Name": "monitor", "Value": "{{(parent .).Name}}" } ], "IsAudit": false } ], "Snapshot": { "Pause": "", "Resume": "" }, "RAMCommitment": "256M", "CPUCommitment": 1, "DisableShell": false, "Runs": null, "Commands": null, "Actions": { "debug": "su - zenoss -c '${ZENHOME:-/opt/zenoss}/bin/{{.Name}} debug'", "stats": "su - zenoss -c '${ZENHOME:-/opt/zenoss}/bin/{{.Name}} stats'" }, "HealthChecks": { "listening": { "Script": "nmap -oG - -Pn -sU -p 162 127.0.0.1 | grep -q 'Ports: 162'", "Timeout": 0, "Interval": 10, "Tolerance": 0 }, "redis_answering": { "Script": "/opt/zenoss/bin/healthchecks/redis_answering", "Timeout": 0, "Interval": 5, "Tolerance": 0 }, "running": { "Script": "pgrep -fu zenoss zentrap.py \u003e /dev/null", "Timeout": 0, "Interval": 5, "Tolerance": 0 }, "zenhub_answering": { "Script": "/opt/zenoss/bin/healthchecks/zenhub_answering", "Timeout": 0, "Interval": 10, "Tolerance": 0 } }, "Prereqs": null, "MonitoringProfile": { "MetricConfigs": [ { "ID": "zentrap", "Name": "zentrap internal metrics", "Description": "zentrap internal metrics", "Query": { "RequestURI": "", "Method": "", "Headers": null, "Data": "" }, "Metrics": [ { "ID": "dataPoints", "Name": "Datapoints", "Description": "Number of datapoints collected.", "Counter": false, "ResetValue": 0, "Unit": "Points", "BuiltIn": false }, { "ID": "devices", "Name": "Devices", "Description": "Number of devices.", "Counter": false, "ResetValue": 0, "Unit": "Count", "BuiltIn": false }, { "ID": "eventCount", "Name": "Event Count", "Description": "Total number of events.", "Counter": false, "ResetValue": 0, "Unit": "Events", "BuiltIn": false }, { "ID": "eventQueueLength", "Name": "Event Queue Length", "Description": "The number of events pending to be flushed from a daemon's memory queue.", "Counter": false, "ResetValue": 0, "Unit": "Events", "BuiltIn": false }, { "ID": "missedRuns", "Name": "Missed Runs", "Description": "Number of missed runs of tasks running on daemon.", "Counter": false, "ResetValue": 0, "Unit": "Runs", "BuiltIn": false }, { "ID": "queuedTasks", "Name": "Queued Tasks", "Description": "Number of tasks scheduled to be run, but are not running yet.", "Counter": false, "ResetValue": 0, "Unit": "Tasks", "BuiltIn": false }, { "ID": "runningTasks", "Name": "Running Tasks", "Description": "Number of currently running tasks.", "Counter": false, "ResetValue": 0, "Unit": "Tasks", "BuiltIn": false }, { "ID": "taskCount", "Name": "Task Count", "Description": "Total number of tasks.", "Counter": false, "ResetValue": 0, "Unit": "Tasks", "BuiltIn": false }, { "ID": "events", "Name": "Events", "Description": "", "Counter": true, "ResetValue": 0, "Unit": "Events", "BuiltIn": false } ] } ], "GraphConfigs": [ { "id": "dataPoints", "name": "Data Points", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "Data Points", "description": "Number of datapoints collected.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Data Points", "metric": "dataPoints", "metricSource": "zentrap", "id": "dataPoints", "name": "Data Points", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 }, { "id": "devices", "name": "Devices", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "Devices", "description": "Number of devices.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Devices", "metric": "devices", "metricSource": "zentrap", "id": "devices", "name": "Devices", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 }, { "id": "events", "name": "Events", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "Events", "description": "Events", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Queued", "metric": "events", "metricSource": "zentrap", "id": "events", "name": "Events", "rate": true, "rateOptions": null, "type": "line" }, { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Events", "metric": "eventCount", "metricSource": "zentrap", "id": "eventCount", "name": "Event Count", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 }, { "id": "eventQueueLength", "name": "Event Queue Length", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "Event Queue Length", "description": "The number of events pending to be flushed from a daemon's memory queue.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Event Queue Length", "metric": "eventQueueLength", "metricSource": "zentrap", "id": "eventQueueLength", "name": "Event Queue Length", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 }, { "id": "missedRuns", "name": "Missed Runs", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "Missed Runs", "description": "Number of missed runs of tasks running on daemon.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Missed Runs", "metric": "missedRuns", "metricSource": "zentrap", "id": "missedRuns", "name": "Missed Runs", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 }, { "id": "tasks", "name": "Tasks", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "", "description": "Number of queued, running, and total tasks.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Queued Tasks", "metric": "queuedTasks", "metricSource": "zentrap", "id": "queuedTasks", "name": "Queued Tasks", "rate": false, "rateOptions": null, "type": "line" }, { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Running Tasks", "metric": "runningTasks", "metricSource": "zentrap", "id": "runningTasks", "name": "Running Tasks", "rate": false, "rateOptions": null, "type": "line" }, { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Task Count", "metric": "taskCount", "metricSource": "zentrap", "id": "taskCount", "name": "Task Count", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 } ], "ThresholdConfigs": [ { "ID": "missedRuns.high", "Name": "Missed Runs High", "Type": "MinMax", "Description": "High number of missed runs", "AppliedTo": 0, "MetricSource": "zentrap", "DataPoints": [ "missedRuns" ], "Threshold": { "Max": "5", "Min": "" }, "EventTags": { "EventClass": "/App/Zenoss", "Explanation": "This service is missing runs", "Resolution": "Add more collectors", "Severity": 3 } } ] }, "MemoryLimit": 0, "CPUShares": 0, "PIDFile": "", "StartLevel": 0, "EmergencyShutdownLevel": 0 }, { "Name": "zminion", "Title": "", "Version": "", "Command": "su - zenoss -c \"/bin/supervisord -n -c /opt/zenoss/etc/zminion/supervisord.conf\"", "Description": "Performs distributed bash executions", "Environment": null, "Tags": [ "daemon", "collector" ], "ImageID": "zenoss/core_6.2:6.2.1_1", "Instances": { "Min": 1, "Max": 1, "Default": 0 }, "ChangeOptions": null, "Launch": "auto", "HostPolicy": "", "Hostname": "", "Privileged": false, "ConfigFiles": { "/opt/zenoss/etc/zminion/supervisord.conf": { "Filename": "/opt/zenoss/etc/zminion/supervisord.conf", "Owner": "", "Permissions": "", "Content": "[supervisord]\nnodaemon=true\nlogfile = /opt/zenoss/log/supervisord.log\n\n[unix_http_server]\nfile=/tmp/supervisor.sock\n\n[supervisorctl]\nserverurl=unix:///tmp/supervisor.sock ; use a unix:// URL for a unix socket\n\n[rpcinterface:supervisor]\nsupervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface\n\n[include]\nfiles = zminion_supervisor.conf\n" }, "/opt/zenoss/etc/zminion/zminion_supervisor.conf": { "Filename": "/opt/zenoss/etc/zminion/zminion_supervisor.conf", "Owner": "", "Permissions": "", "Content": "[program:zminion]\ncommand=/opt/zenoss/bin/zminion --minion-name zminion_{{(parent .).Name}} serve\nautorestart=true\nautostart=true\nstartsecs=5\n\n; logging\nredirect_stderr=true\nstdout_logfile_maxbytes=10MB\nstdout_logfile_backups=10\nstdout_logfile=/opt/zenoss/log/%(program_name)s.log\n" } }, "Context": null, "Endpoints": [ { "Name": "zproxy", "Purpose": "import", "Protocol": "tcp", "PortNumber": 8080, "PortTemplate": "", "VirtualAddress": "", "Application": "zproxy", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "zenhub", "Purpose": "import", "Protocol": "tcp", "PortNumber": 8789, "PortTemplate": "", "VirtualAddress": "", "Application": "{{(parent (parent .)).Name}}_zenhubPB", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "redis", "Purpose": "import", "Protocol": "tcp", "PortNumber": 6379, "PortTemplate": "", "VirtualAddress": "", "Application": "redis", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "controlplane_consumer", "Purpose": "import", "Protocol": "tcp", "PortNumber": 8444, "PortTemplate": "", "VirtualAddress": "", "Application": "controlplane_consumer", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null } ], "Services": [], "LogFilters": null, "Volumes": [ { "Owner": "zenoss:zenoss", "Permission": "0755", "ResourcePath": ".ssh", "ContainerPath": "/home/zenoss/.ssh", "Type": "", "InitContainerPath": "", "ExcludeFromBackups": false }, { "Owner": "zenoss:zenoss", "Permission": "0775", "ResourcePath": "var-zenpacks", "ContainerPath": "/var/zenoss", "Type": "", "InitContainerPath": "", "ExcludeFromBackups": false } ], "LogConfigs": [ { "Path": "/opt/zenoss/log/zminion.log", "Type": "zminion", "Filters": [ "glog" ], "LogTags": [ { "Name": "monitor", "Value": "{{(parent .).Name}}" } ], "IsAudit": false } ], "Snapshot": { "Pause": "", "Resume": "" }, "RAMCommitment": "256M", "CPUCommitment": 1, "DisableShell": false, "Runs": null, "Commands": null, "Actions": null, "HealthChecks": { "redis_answering": { "Script": "/opt/zenoss/bin/healthchecks/redis_answering", "Timeout": 0, "Interval": 5, "Tolerance": 0 } }, "Prereqs": null, "MonitoringProfile": { "MetricConfigs": null, "GraphConfigs": null, "ThresholdConfigs": null }, "MemoryLimit": 0, "CPUShares": 0, "PIDFile": "", "StartLevel": 0, "EmergencyShutdownLevel": 0 }, { "Name": "zenmail", "Title": "", "Version": "", "Command": "su - zenoss -c \"/opt/zenoss/bin/zenmail run -c --logfileonly --monitor {{(parent .).Name}} \"", "Description": "Collector daemon that listens on SMTP and converts email messages into events", "Environment": null, "Tags": [ "ZenPacks.zenoss.ZenMail", "daemon", "collector" ], "ImageID": "zenoss/core_6.2:6.2.1_1", "Instances": { "Min": 0, "Max": 1, "Default": 1 }, "ChangeOptions": [], "Launch": "manual", "HostPolicy": "", "Hostname": "", "Privileged": false, "ConfigFiles": { "/opt/zenoss/etc/global.conf": { "Filename": "/opt/zenoss/etc/global.conf", "Owner": "zenoss:zenoss", "Permissions": "660", "Content": "# Generated by serviced\n{{range $k,$v:=contextFilter . \"global.conf.\"}}{{$k}} {{$v}}\n{{end}}" }, "/opt/zenoss/etc/zenmail.conf": { "Filename": "/opt/zenoss/etc/zenmail.conf", "Owner": "zenoss:zenoss", "Permissions": "0664", "Content": "#\n# Configuration file for zenmail\n#\n# To enable a particular option, uncomment the desired entry.\n#\n# Parameter Setting\n# --------- -------\n#\n# Host of zenhub daemon. Default is localhost.,\n# default: localhost\n#hubhost localhost\n#\n# Port zenhub listens on.Default is 8789.,\n# default: 8789\n#hubport 8789\n#\n# Username for zenhub login. Default is\n# admin., default: admin\n#hubusername admin\n#\n# Password for zenhub login. Default is\n# zenoss., default: zenoss\n#hubpassword zenoss\n#\n# Name of monitor instance to use for\n# configuration. Default is localhost.,\n# default: localhost\n#monitor localhost\n#\n# Initial time to wait for a ZenHub connection,\n# default: 30\n#initialHubTimeout 30\n#\n# Send clear events even when the most\n# recent event was also a clear event.,\n# default: False\n#allowduplicateclears False\n#\n# Send a clear event every [DUPLICATECLEARINTEVAL]\n# events., default: 0\n#duplicateclearinterval 0\n#\n# Seconds between attempts to flush events\n# to ZenHub., default: 5.0\n#eventflushseconds 5.0\n#\n# Number of events to send to ZenHubat\n# one time, default: 50\n#eventflushchunksize 50\n#\n# Maximum number of events to queue, default:\n# 5000\n#maxqueuelen 5000\n#\n# The size, in percent, of the event queue\n# when event pushback starts, default: 0.75\n#queuehighwatermark 0.75\n#\n# How often to ping zenhub, default: 30\n#zenhubpinginterval 30\n#\n# Disable event de-duplication, default: True\n#disable-event-deduplication True\n#\n# redis connection string: redis://[hostname]:[port]/[db],\n# default: %default, default:\n# redis://localhost:6379/0\n#redis-url redis://localhost:6379/0\n#\n# Number of metrics to buffer if redis\n# goes down, default: 65536\n#metricBufferSize 65536\n#\n# redis channel to which metrics are published,\n# default: metrics\n#metricsChannel metrics\n#\n# Max Number of metrics to allow in redis,\n# default: 864000000\n#maxOutstandingMetrics 864000000\n#\n# Use an alternate configuration file\n#configfile /opt/zenoss/etc/zenmail.conf\n#\n# Generate an XML file containing command-line\n# switches., default: False\n#genxmlconfigs False\n#\n# User to become when running default:zenoss,\n# default: zenoss\n#uid zenoss\n#\n# Cycle continuously on cycleInterval\n# from Zope, default: False\n#cycle False\n#\n# Launch into the background, default: False\n#daemon False\n#\n# Log to console and log file, default: False\n#duallog False\n#\n# Log to log file and not console, default:\n# False\n#logfileonly False\n#\n# output log info in HTML table format,\n# default: False\n#weblog False\n#\n# Run under a supervisor which will restart\n# it, default: False\n#watchdog False\n#\n# The path to the watchdog reporting socket\n#watchdogPath None\n#\n# Wait seconds for initial heartbeat\n#starttimeout None\n#\n# Set listener socket options. For option\n# details: man 7 socket, default: []\n#socketOption []\n#\n# Specify a device ID to monitor\n#device \n#\n# Max number of tasks to run at once,\n# default %default, default: 500\n#maxparallel 500\n#\n# How often to logs statistics of current\n# tasks, value in seconds; very verbose,\n# default: 0\n#logTaskStats 0\n#\n# How often to write internal statistics\n# value in seconds, default: 60\n#writeStatistics 60\n#\n# File descriptor to use for listening,\n# default: -1\n#useFileDescriptor -1\n#\n# Alternative listen port to use (default\n# %default), default: 25\n# Note: If you change this, you will need to edit this service to match using:\n# $ serviced service edit zenmail\nlistenPort 50025\n#\n# Severity for events created, default: 2\n#eventseverity 2\n#\n# IP address to listen on. Default is 0.0.0.0\n#listenip \n#\n# Logging severity threshold, default: 20\n#logseverity 20\n#\n# Override the default logging path; default\n# $ZENHOME/log, default: /opt/zenoss/log\n#logpath /opt/zenoss/log\n#\n# Max size of log file in KB; default\n# 10240, default: 10240\n#maxlogsize 10240\n#\n# Max number of back up log files; default\n# 3, default: 3\n#maxbackuplogs 3\n#\n# Disable ping perspective, default: True\n#disable-ping-perspective True\n#\n# Heartbeat timeout, default: 900 sec.\n#heartbeattimeout 900\n#" } }, "Context": null, "Endpoints": [ { "Name": "zenhub", "Purpose": "import", "Protocol": "tcp", "PortNumber": 8789, "PortTemplate": "", "VirtualAddress": "", "Application": "{{(parent (parent .)).Name}}_zenhubPB", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "controlplane_consumer", "Purpose": "import", "Protocol": "tcp", "PortNumber": 8444, "PortTemplate": "", "VirtualAddress": "", "Application": "controlplane_consumer", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "CollectorRedis", "Purpose": "import_all", "Protocol": "tcp", "PortNumber": 6379, "PortTemplate": "", "VirtualAddress": "", "Application": "{{(parent .).Name}}_redis", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "zenmail_smtp", "Purpose": "export", "Protocol": "tcp", "PortNumber": 50025, "PortTemplate": "", "VirtualAddress": "", "Application": "{{(parent .).Name}}_zenmail", "ApplicationTemplate": "", "AddressConfig": { "Port": 25, "Protocol": "tcp" }, "VHosts": null, "VHostList": null, "PortList": null } ], "Services": [], "LogFilters": null, "Volumes": [ { "Owner": "zenoss:zenoss", "Permission": "0775", "ResourcePath": "var-zenpacks", "ContainerPath": "/var/zenoss", "Type": "", "InitContainerPath": "", "ExcludeFromBackups": false } ], "LogConfigs": [ { "Path": "/opt/zenoss/log/zenmail.log", "Type": "zenmail", "Filters": [ "zenmaildaemon" ], "LogTags": [ { "Name": "monitor", "Value": "{{(parent .).Name}}" } ], "IsAudit": false }, { "Path": "/opt/zenoss/log/audit.log", "Type": "zenossaudit", "Filters": [ "supervisord" ], "LogTags": null, "IsAudit": true } ], "Snapshot": { "Pause": "", "Resume": "" }, "RAMCommitment": "1G", "CPUCommitment": 1, "DisableShell": false, "Runs": null, "Commands": null, "Actions": { "debug": "su - zenoss -c '${ZENHOME:-/opt/zenoss}/bin/{{.Name}} debug'", "stats": "su - zenoss -c '${ZENHOME:-/opt/zenoss}/bin/{{.Name}} stats'" }, "HealthChecks": { "running": { "Script": "pgrep -fu zenoss zenmail.py \u003e /dev/null", "Timeout": 0, "Interval": 5, "Tolerance": 0 }, "service_ready": { "Script": "echo 'QUIT' | nc -w 10 -C 127.0.0.1 50025 | grep -q '^220 '", "Timeout": 0, "Interval": 10, "Tolerance": 0 }, "zenhub_answering": { "Script": "/opt/zenoss/bin/healthchecks/zenhub_answering", "Timeout": 0, "Interval": 10, "Tolerance": 0 } }, "Prereqs": null, "MonitoringProfile": { "MetricConfigs": [ { "ID": "zenmail", "Name": "zenmail internal metrics", "Description": "zenmail internal metrics", "Query": { "RequestURI": "", "Method": "", "Headers": null, "Data": "" }, "Metrics": [ { "ID": "eventCount", "Name": "Event Count", "Description": "Total number of events.", "Counter": false, "ResetValue": 0, "Unit": "Events", "BuiltIn": false }, { "ID": "eventQueueLength", "Name": "Event Queue Length", "Description": "The number of events pending to be flushed from a daemon's memory queue.", "Counter": false, "ResetValue": 0, "Unit": "Events", "BuiltIn": false }, { "ID": "missedRuns", "Name": "Missed Runs", "Description": "Number of missed runs of tasks running on daemon.", "Counter": false, "ResetValue": 0, "Unit": "Runs", "BuiltIn": false }, { "ID": "queuedTasks", "Name": "Queued Tasks", "Description": "Number of tasks scheduled to be run, but are not running yet.", "Counter": false, "ResetValue": 0, "Unit": "Tasks", "BuiltIn": false }, { "ID": "runningTasks", "Name": "Running Tasks", "Description": "Number of currently running tasks.", "Counter": false, "ResetValue": 0, "Unit": "Tasks", "BuiltIn": false }, { "ID": "taskCount", "Name": "Task Count", "Description": "Total number of tasks.", "Counter": false, "ResetValue": 0, "Unit": "Tasks", "BuiltIn": false } ] } ], "GraphConfigs": [ { "id": "eventCount", "name": "Event Count", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "Event Count", "description": "Total number of events.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Event Count", "metric": "eventCount", "metricSource": "zenmail", "id": "eventCount", "name": "Event Count", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 }, { "id": "eventQueueLength", "name": "Event Queue Length", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "Event Queue Length", "description": "The number of events pending to be flushed from a daemon's memory queue.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Event Queue Length", "metric": "eventQueueLength", "metricSource": "zenmail", "id": "eventQueueLength", "name": "Event Queue Length", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 }, { "id": "missedRuns", "name": "Missed Runs", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "Missed Runs", "description": "Number of missed runs of tasks running on daemon.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Missed Runs", "metric": "missedRuns", "metricSource": "zenmail", "id": "missedRuns", "name": "Missed Runs", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 }, { "id": "tasks", "name": "Tasks", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "", "description": "Number of queued, running, and total tasks.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Queued Tasks", "metric": "queuedTasks", "metricSource": "zenmail", "id": "queuedTasks", "name": "Queued Tasks", "rate": false, "rateOptions": null, "type": "line" }, { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Running Tasks", "metric": "runningTasks", "metricSource": "zenmail", "id": "runningTasks", "name": "Running Tasks", "rate": false, "rateOptions": null, "type": "line" }, { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Task Count", "metric": "taskCount", "metricSource": "zenmail", "id": "taskCount", "name": "Task Count", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 } ], "ThresholdConfigs": [ { "ID": "missedRuns.high", "Name": "Missed Runs High", "Type": "MinMax", "Description": "High number of missed runs", "AppliedTo": 0, "MetricSource": "zenmail", "DataPoints": [ "missedRuns" ], "Threshold": { "Max": "5", "Min": "" }, "EventTags": { "EventClass": "/App/Zenoss", "Explanation": "This service is missing runs", "Resolution": "Add more collectors", "Severity": 3 } } ] }, "MemoryLimit": 0, "CPUShares": 0, "PIDFile": "", "StartLevel": 0, "EmergencyShutdownLevel": 0 }, { "Name": "zenmodeler", "Title": "", "Version": "", "Command": "su - zenoss -c \"/opt/zenoss/bin/zenmodeler run -c --logfileonly --monitor {{(parent .).Name}} \"", "Description": "Configuration collection and configuration daemon, used for high-performance, automated model population", "Environment": null, "Tags": [ "daemon", "collector" ], "ImageID": "zenoss/core_6.2:6.2.1_1", "Instances": { "Min": 1, "Max": 1, "Default": 0 }, "ChangeOptions": null, "Launch": "auto", "HostPolicy": "", "Hostname": "", "Privileged": false, "ConfigFiles": { "/opt/zenoss/etc/global.conf": { "Filename": "/opt/zenoss/etc/global.conf", "Owner": "zenoss:zenoss", "Permissions": "660", "Content": "# Generated by serviced\n{{range $k,$v:=contextFilter . \"global.conf.\"}}{{$k}} {{$v}}\n{{end}}" }, "/opt/zenoss/etc/zenmodeler.conf": { "Filename": "/opt/zenoss/etc/zenmodeler.conf", "Owner": "zenoss:zenoss", "Permissions": "0664", "Content": "#\n# Configuration file for zenmodeler\n#\n# To enable a particular option, uncomment the desired entry.\n#\n# Parameter Setting\n# --------- -------\n#\n# Host of zenhub daemon. Default is localhost.,\n# default: localhost\n#hubhost localhost\n#\n# Port zenhub listens on.Default is 8789.,\n# default: 8789\n#hubport 8789\n#\n# Username for zenhub login. Default is\n# admin., default: admin\n#hubusername admin\n#\n# Password for zenhub login. Default is\n# zenoss., default: zenoss\n#hubpassword zenoss\n#\n# Name of monitor instance to use for\n# configuration. Default is localhost.,\n# default: localhost\n#monitor localhost\n#\n# Initial time to wait for a ZenHub connection,\n# default: 30\n#initialHubTimeout 30\n#\n# Send clear events even when the most\n# recent event was also a clear event.,\n# default: False\n#allowduplicateclears False\n#\n# Send a clear event every [DUPLICATECLEARINTEVAL]\n# events., default: 0\n#duplicateclearinterval 0\n#\n# Seconds between attempts to flush events\n# to ZenHub., default: 5.0\n#eventflushseconds 5.0\n#\n# Number of events to send to ZenHubat\n# one time, default: 50\n#eventflushchunksize 50\n#\n# Maximum number of events to queue, default:\n# 5000\n#maxqueuelen 5000\n#\n# The size, in percent, of the event queue\n# when event pushback starts, default: 0.75\n#queuehighwatermark 0.75\n#\n# How often to ping zenhub, default: 30\n#zenhubpinginterval 30\n#\n# Disable event de-duplication, default: True\n#disable-event-deduplication True\n#\n# redis connection string: redis://[hostname]:[port]/[db],\n# default: %default, default:\n# redis://localhost:6379/0\n#redis-url redis://localhost:6379/0\n#\n# Number of metrics to buffer if redis\n# goes down, default: 65536\n#metricBufferSize 65536\n#\n# redis channel to which metrics are published,\n# default: metrics\n#metricsChannel metrics\n#\n# Max Number of metrics to allow in redis,\n# default: 864000000\n#maxOutstandingMetrics 864000000\n#\n# Use an alternate configuration file\n#configfile /opt/zenoss/etc/zenmodeler.conf\n#\n# Generate an XML file containing command-line\n# switches., default: False\n#genxmlconfigs False\n#\n# User to become when running default:zenoss,\n# default: zenoss\n#uid zenoss\n#\n# Cycle continuously on cycleInterval\n# from Zope, default: False\n#cycle False\n#\n# Launch into the background, default: False\n#daemon False\n#\n# Log to console and log file, default: False\n#duallog False\n#\n# Log to log file and not console, default:\n# False\n#logfileonly False\n#\n# output log info in HTML table format,\n# default: False\n#weblog False\n#\n# Run under a supervisor which will restart\n# it, default: False\n#watchdog False\n#\n# The path to the watchdog reporting socket\n#watchdogPath None\n#\n# Wait seconds for initial heartbeat\n#starttimeout None\n#\n# Set listener socket options. For option\n# details: man 7 socket, default: []\n#socketOption []\n#\n# Don't fork threads for processing, default:\n# False\n#debug False\n#\n# Do not execute WMI plugins, default: True\n#nowmi True\n#\n# Number of devices to collect from in\n# parallel, default: 1\n#parallel 1\n#\n# Run collection every x minutes\n#cycletime None\n#\n# Modeler plugins to ignore. Takes a regular\n# expression\n#ignore \n#\n# Modeler plugins to use. Takes a regular\n# expression\n#collect \n#\n# Start class path for collection\n# ie /NetworkDevices\n#path None\n#\n# Fully qualified device name ie\n# www.confmon.com\n#device None\n#\n# Start string in cron(8) format\n#startat None\n#\n# Do not collect from devices whose collect\n# date is within this many minutes, default: 0\n#collage 0\n#\n# Number of times to try to write if a\n# read conflict is found, default: 2\n#writetries 2\n#\n# Force collection of config data (deprecated),\n# default: True\n#force True\n#\n# Time to wait for connection failures\n# when port scanning, default: 5\n#portscantimeout 5\n#\n# Start daemon now, do not sleep before\n# starting, default: False\n#now False\n#\n# If an snmp connection fails try and\n# rediscover it's connection info, default:\n# False\n#communities False\n#\n# Don't model if the device is ping or\n# snmp down, default: False\n#checkstatus False\n#\n# Save raw results for replay purposes\n# in /tmp, default: False\n#save_raw_results False\n#\n# Save modeler plugin outputs for replay\n# purposes in /tmp, default: False\n#save_processed_results False\n#\n# Login username, default: zenoss\n#user zenoss\n#\n# Login password\n#password \n#\n# Number of times to attempt to login,\n# default: 1\n#loginTries 1\n#\n# Timeout period (secs) to find login\n# expect statments, default: 10\n#loginTimeout 10\n#\n# Timeout period (secs) after issuing\n# a command, default: 10\n#commandTimeout 10\n#\n# Path to use when looking for SSH keys,\n# default: ~/.ssh/id_dsa\n#keyPath ~/.ssh/id_dsa\n#\n# Allowable number of concurrent SSH sessions,\n# default: 10\n#concurrentSessions 10\n#\n# Path to use when looking for commands,\n# default: []\n#searchPath []\n#\n# How to check if a command is available\n# or not, default: test -f %s\n#existenceTest test -f %s\n#\n# Timeout when discovering prompt, default: 10\n#promptTimeout 10\n#\n# Python regular expression that will\n# find the login prompt, default: ogin:.$\n#loginRegex ogin:.$\n#\n# Python regex that will find the password\n# prompt, default: assword:\n#passwordRegex assword:\n#\n# Enter 'enable' mode on a Cisco device,\n# default: False\n#enable False\n#\n# Python regex that will find the enable\n# prompt, default: assword:\n#enableRegex assword:\n#\n# Enable password\n#enablePassword \n#\n# Enter 'send terminal length 0' on a\n# Cisco device, default: False\n#termlen False\n#\n# Logging severity threshold, default: 20\n#logseverity 20\n#\n# Override the default logging path; default\n# $ZENHOME/log, default: /opt/zenoss/log\n#logpath /opt/zenoss/log\n#\n# Max size of log file in KB; default\n# 10240, default: 10240\n#maxlogsize 10240\n#\n# Max number of back up log files; default\n# 3, default: 3\n#maxbackuplogs 3\n#\n# Heartbeat timeout, default: 900 sec.\n#heartbeattimeout 900\n#" } }, "Context": null, "Endpoints": [ { "Name": "zproxy", "Purpose": "import", "Protocol": "tcp", "PortNumber": 8080, "PortTemplate": "", "VirtualAddress": "", "Application": "zproxy", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "zenhub", "Purpose": "import", "Protocol": "tcp", "PortNumber": 8789, "PortTemplate": "", "VirtualAddress": "", "Application": "{{(parent (parent .)).Name}}_zenhubPB", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "CollectorRedis", "Purpose": "import_all", "Protocol": "tcp", "PortNumber": 6379, "PortTemplate": "", "VirtualAddress": "", "Application": "{{(parent .).Name}}_redis", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "controlplane_consumer", "Purpose": "import", "Protocol": "tcp", "PortNumber": 8444, "PortTemplate": "", "VirtualAddress": "", "Application": "controlplane_consumer", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null } ], "Services": [], "LogFilters": null, "Volumes": [ { "Owner": "zenoss:zenoss", "Permission": "0755", "ResourcePath": ".ssh", "ContainerPath": "/home/zenoss/.ssh", "Type": "", "InitContainerPath": "", "ExcludeFromBackups": false }, { "Owner": "zenoss:zenoss", "Permission": "0775", "ResourcePath": "var-zenpacks", "ContainerPath": "/var/zenoss", "Type": "", "InitContainerPath": "", "ExcludeFromBackups": false } ], "LogConfigs": [ { "Path": "/opt/zenoss/log/zenmodeler.log", "Type": "zenmodeler", "Filters": [ "pythondaemon" ], "LogTags": [ { "Name": "monitor", "Value": "{{(parent .).Name}}" } ], "IsAudit": false } ], "Snapshot": { "Pause": "", "Resume": "" }, "RAMCommitment": "256M", "CPUCommitment": 1, "DisableShell": false, "Runs": null, "Commands": null, "Actions": { "debug": "su - zenoss -c '${ZENHOME:-/opt/zenoss}/bin/{{.Name}} debug'", "stats": "su - zenoss -c '${ZENHOME:-/opt/zenoss}/bin/{{.Name}} stats'" }, "HealthChecks": { "redis_answering": { "Script": "/opt/zenoss/bin/healthchecks/redis_answering", "Timeout": 0, "Interval": 5, "Tolerance": 0 }, "running": { "Script": "pgrep -fu zenoss zenmodeler.py \u003e /dev/null", "Timeout": 0, "Interval": 5, "Tolerance": 0 }, "zenhub_answering": { "Script": "/opt/zenoss/bin/healthchecks/zenhub_answering", "Timeout": 0, "Interval": 10, "Tolerance": 0 } }, "Prereqs": null, "MonitoringProfile": { "MetricConfigs": [ { "ID": "zenmodeler", "Name": "zenmodeler internal metrics", "Description": "zenmodeler internal metrics", "Query": { "RequestURI": "", "Method": "", "Headers": null, "Data": "" }, "Metrics": [ { "ID": "cycleTime", "Name": "Cycle Time", "Description": "Daemon collection interval", "Counter": false, "ResetValue": 0, "Unit": "Time", "BuiltIn": false }, { "ID": "modeledDevices", "Name": "Modeled Devices", "Description": "Number of devices since daemon startup.", "Counter": true, "ResetValue": 0, "Unit": "Devices", "BuiltIn": false }, { "ID": "modeledDevicesCount", "Name": "Modeled Devices Count", "Description": "Number of devices currently modeled.", "Counter": false, "ResetValue": 0, "Unit": "Devices", "BuiltIn": false } ] } ], "GraphConfigs": [ { "id": "cycleTime", "name": "Cycle Time", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "Cycle Time", "description": "Daemon collection interval.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Cycle Time", "metric": "cycleTime", "metricSource": "zenmodeler", "id": "cycleTime", "name": "Cycle Time", "rate": true, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 }, { "id": "modeledDevices", "name": "Modeled Devices", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "Modeled Devices", "description": "Number of devices since daemon startup.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Modeled Devices", "metric": "modeledDevices", "metricSource": "zenmodeler", "id": "modeledDevices", "name": "Modeled Devices", "rate": true, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 }, { "id": "modeledDevicesCount", "name": "Modeled Devices Count", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "Modeled Devices Count", "description": "Number of devices currently modeled.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Modeled Devices Count", "metric": "modeledDevicesCount", "metricSource": "zenmodeler", "id": "modeledDevicesCount", "name": "Modeled Devices Count", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 } ], "ThresholdConfigs": null }, "MemoryLimit": 0, "CPUShares": 0, "PIDFile": "", "StartLevel": 0, "EmergencyShutdownLevel": 0 }, { "Name": "zenperfsnmp", "Title": "", "Version": "", "Command": "su - zenoss -c \"/opt/zenoss/bin/zenperfsnmp run -c --logfileonly --monitor {{(parent .).Name}} \"", "Description": "Performs high-performance, asynchronous SNMP performance collection and stores it locally to the collector", "Environment": null, "Tags": [ "daemon", "collector" ], "ImageID": "zenoss/core_6.2:6.2.1_1", "Instances": { "Min": 1, "Max": 1, "Default": 0 }, "ChangeOptions": null, "Launch": "auto", "HostPolicy": "", "Hostname": "", "Privileged": false, "ConfigFiles": { "/opt/zenoss/etc/global.conf": { "Filename": "/opt/zenoss/etc/global.conf", "Owner": "zenoss:zenoss", "Permissions": "660", "Content": "# Generated by serviced\n{{range $k,$v:=contextFilter . \"global.conf.\"}}{{$k}} {{$v}}\n{{end}}" }, "/opt/zenoss/etc/zenperfsnmp.conf": { "Filename": "/opt/zenoss/etc/zenperfsnmp.conf", "Owner": "zenoss:zenoss", "Permissions": "0664", "Content": "#\n# Configuration file for zenperfsnmp\n#\n# To enable a particular option, uncomment the desired entry.\n#\n# Parameter Setting\n# --------- -------\n#\n# Host of zenhub daemon. Default is localhost.,\n# default: localhost\n#hubhost localhost\n#\n# Port zenhub listens on.Default is 8789.,\n# default: 8789\n#hubport 8789\n#\n# Username for zenhub login. Default is\n# admin., default: admin\n#hubusername admin\n#\n# Password for zenhub login. Default is\n# zenoss., default: zenoss\n#hubpassword zenoss\n#\n# Name of monitor instance to use for\n# configuration. Default is localhost.,\n# default: localhost\n#monitor localhost\n#\n# Initial time to wait for a ZenHub connection,\n# default: 30\n#initialHubTimeout 30\n#\n# Send clear events even when the most\n# recent event was also a clear event.,\n# default: False\n#allowduplicateclears False\n#\n# Send a clear event every [DUPLICATECLEARINTEVAL]\n# events., default: 0\n#duplicateclearinterval 0\n#\n# Seconds between attempts to flush events\n# to ZenHub., default: 5.0\n#eventflushseconds 5.0\n#\n# Number of events to send to ZenHubat\n# one time, default: 50\n#eventflushchunksize 50\n#\n# Maximum number of events to queue, default:\n# 5000\n#maxqueuelen 5000\n#\n# The size, in percent, of the event queue\n# when event pushback starts, default: 0.75\n#queuehighwatermark 0.75\n#\n# How often to ping zenhub, default: 30\n#zenhubpinginterval 30\n#\n# Disable event de-duplication, default: True\n#disable-event-deduplication True\n#\n# redis connection string: redis://[hostname]:[port]/[db],\n# default: %default, default:\n# redis://localhost:6379/0\n#redis-url redis://localhost:6379/0\n#\n# Number of metrics to buffer if redis\n# goes down, default: 65536\n#metricBufferSize 65536\n#\n# redis channel to which metrics are published,\n# default: metrics\n#metricsChannel metrics\n#\n# Max Number of metrics to allow in redis,\n# default: 864000000\n#maxOutstandingMetrics 864000000\n#\n# Use an alternate configuration file\n#configfile /opt/zenoss/etc/zenperfsnmp.conf\n#\n# Generate an XML file containing command-line\n# switches., default: False\n#genxmlconfigs False\n#\n# User to become when running default:zenoss,\n# default: zenoss\n#uid zenoss\n#\n# Cycle continuously on cycleInterval\n# from Zope, default: False\n#cycle False\n#\n# Launch into the background, default: False\n#daemon False\n#\n# Log to console and log file, default: False\n#duallog False\n#\n# Log to log file and not console, default:\n# False\n#logfileonly False\n#\n# output log info in HTML table format,\n# default: False\n#weblog False\n#\n# Run under a supervisor which will restart\n# it, default: False\n#watchdog False\n#\n# The path to the watchdog reporting socket\n#watchdogPath None\n#\n# Wait seconds for initial heartbeat\n#starttimeout None\n#\n# Set listener socket options. For option\n# details: man 7 socket, default: []\n#socketOption []\n#\n# Specify a device ID to monitor\n#device \n#\n# Max number of tasks to run at once,\n# default %default, default: 500\n#maxparallel 500\n#\n# How often to logs statistics of current\n# tasks, value in seconds; very verbose,\n# default: 0\n#logTaskStats 0\n#\n# How often to write internal statistics\n# value in seconds, default: 60\n#writeStatistics 60\n#\n# Max number of device configurations\n# to load at once, default %default (0\n# == all devices), default: 25\n#configsipsize 25\n#\n# Delay in seconds between device configurations\n# loading, default %default, default: 1\n#configsipdelay 1\n#\n# Show the raw RRD values. For debugging\n# purposes only., default: False\n#showrawresults False\n#\n# Deprecated since 4.1.1. No longer used,\n# default: 20\n#maxbackoffminutes 20\n#\n# How many attempts per cycle should be\n# made to get data for an OID from a\n# non-responsive device. Minimum of 2,\n# default: 2\n#triespercycle 2\n#\n# How many consecutive time outs per cycle\n# before stopping attempts to collect,\n# default: 3\n#maxtimeouts 3\n#\n# Logging severity threshold, default: 20\n#logseverity 20\n#\n# Override the default logging path; default\n# $ZENHOME/log, default: /opt/zenoss/log\n#logpath /opt/zenoss/log\n#\n# Max size of log file in KB; default\n# 10240, default: 10240\n#maxlogsize 10240\n#\n# Max number of back up log files; default\n# 3, default: 3\n#maxbackuplogs 3\n#\n# Disable ping perspective, default: True\n#disable-ping-perspective True\n#\n# Heartbeat timeout, default: 900 sec.\n#heartbeattimeout 900\n#" } }, "Context": null, "Endpoints": [ { "Name": "zproxy", "Purpose": "import", "Protocol": "tcp", "PortNumber": 8080, "PortTemplate": "", "VirtualAddress": "", "Application": "zproxy", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "zenhub", "Purpose": "import", "Protocol": "tcp", "PortNumber": 8789, "PortTemplate": "", "VirtualAddress": "", "Application": "{{(parent (parent .)).Name}}_zenhubPB", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "CollectorRedis", "Purpose": "import_all", "Protocol": "tcp", "PortNumber": 6379, "PortTemplate": "", "VirtualAddress": "", "Application": "{{(parent .).Name}}_redis", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "controlplane_consumer", "Purpose": "import", "Protocol": "tcp", "PortNumber": 8444, "PortTemplate": "", "VirtualAddress": "", "Application": "controlplane_consumer", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null } ], "Services": [], "LogFilters": null, "Volumes": [ { "Owner": "zenoss:zenoss", "Permission": "0755", "ResourcePath": ".ssh", "ContainerPath": "/home/zenoss/.ssh", "Type": "", "InitContainerPath": "", "ExcludeFromBackups": false }, { "Owner": "zenoss:zenoss", "Permission": "0775", "ResourcePath": "var-zenpacks", "ContainerPath": "/var/zenoss", "Type": "", "InitContainerPath": "", "ExcludeFromBackups": false } ], "LogConfigs": [ { "Path": "/opt/zenoss/log/zenperfsnmp.log", "Type": "zenperfsnmp", "Filters": [ "pythondaemon" ], "LogTags": [ { "Name": "monitor", "Value": "{{(parent .).Name}}" } ], "IsAudit": false } ], "Snapshot": { "Pause": "", "Resume": "" }, "RAMCommitment": "256M", "CPUCommitment": 1, "DisableShell": false, "Runs": null, "Commands": null, "Actions": { "debug": "su - zenoss -c '${ZENHOME:-/opt/zenoss}/bin/{{.Name}} debug'", "stats": "su - zenoss -c '${ZENHOME:-/opt/zenoss}/bin/{{.Name}} stats'" }, "HealthChecks": { "redis_answering": { "Script": "/opt/zenoss/bin/healthchecks/redis_answering", "Timeout": 0, "Interval": 5, "Tolerance": 0 }, "running": { "Script": "pgrep -fu zenoss zenperfsnmp.py \u003e /dev/null", "Timeout": 0, "Interval": 5, "Tolerance": 0 }, "zenhub_answering": { "Script": "/opt/zenoss/bin/healthchecks/zenhub_answering", "Timeout": 0, "Interval": 10, "Tolerance": 0 } }, "Prereqs": null, "MonitoringProfile": { "MetricConfigs": [ { "ID": "zenperfsnmp", "Name": "zenperfsnmp internal metrics", "Description": "zenperfsnmp internal metrics", "Query": { "RequestURI": "", "Method": "", "Headers": null, "Data": "" }, "Metrics": [ { "ID": "dataPoints", "Name": "Datapoints", "Description": "Number of datapoints collected.", "Counter": false, "ResetValue": 0, "Unit": "Points", "BuiltIn": false }, { "ID": "devices", "Name": "Devices", "Description": "Number of devices.", "Counter": false, "ResetValue": 0, "Unit": "Count", "BuiltIn": false }, { "ID": "eventCount", "Name": "Event Count", "Description": "Total number of events.", "Counter": false, "ResetValue": 0, "Unit": "Events", "BuiltIn": false }, { "ID": "eventQueueLength", "Name": "Event Queue Length", "Description": "The number of events pending to be flushed from a daemon's memory queue.", "Counter": false, "ResetValue": 0, "Unit": "Events", "BuiltIn": false }, { "ID": "missedRuns", "Name": "Missed Runs", "Description": "Number of missed runs of tasks running on daemon.", "Counter": false, "ResetValue": 0, "Unit": "Runs", "BuiltIn": false }, { "ID": "queuedTasks", "Name": "Queued Tasks", "Description": "Number of tasks scheduled to be run, but are not running yet.", "Counter": false, "ResetValue": 0, "Unit": "Tasks", "BuiltIn": false }, { "ID": "runningTasks", "Name": "Running Tasks", "Description": "Number of currently running tasks.", "Counter": false, "ResetValue": 0, "Unit": "Tasks", "BuiltIn": false }, { "ID": "taskCount", "Name": "Task Count", "Description": "Total number of tasks.", "Counter": false, "ResetValue": 0, "Unit": "Tasks", "BuiltIn": false } ] } ], "GraphConfigs": [ { "id": "dataPoints", "name": "Data Points", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "Data Points", "description": "Number of datapoints collected.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Data Points", "metric": "dataPoints", "metricSource": "zenperfsnmp", "id": "dataPoints", "name": "Data Points", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 }, { "id": "devices", "name": "Devices", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "Devices", "description": "Number of devices.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Devices", "metric": "devices", "metricSource": "zenperfsnmp", "id": "devices", "name": "Devices", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 }, { "id": "eventCount", "name": "Event Count", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "Event Count", "description": "Total number of events.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Event Count", "metric": "eventCount", "metricSource": "zenperfsnmp", "id": "eventCount", "name": "Event Count", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 }, { "id": "eventQueueLength", "name": "Event Queue Length", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "Event Queue Length", "description": "The number of events pending to be flushed from a daemon's memory queue.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Event Queue Length", "metric": "eventQueueLength", "metricSource": "zenperfsnmp", "id": "eventQueueLength", "name": "Event Queue Length", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 }, { "id": "missedRuns", "name": "Missed Runs", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "Missed Runs", "description": "Number of missed runs of tasks running on daemon.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Missed Runs", "metric": "missedRuns", "metricSource": "zenperfsnmp", "id": "missedRuns", "name": "Missed Runs", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 }, { "id": "tasks", "name": "Tasks", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "", "description": "Number of queued, running, and total tasks.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Queued Tasks", "metric": "queuedTasks", "metricSource": "zenperfsnmp", "id": "queuedTasks", "name": "Queued Tasks", "rate": false, "rateOptions": null, "type": "line" }, { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Running Tasks", "metric": "runningTasks", "metricSource": "zenperfsnmp", "id": "runningTasks", "name": "Running Tasks", "rate": false, "rateOptions": null, "type": "line" }, { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Task Count", "metric": "taskCount", "metricSource": "zenperfsnmp", "id": "taskCount", "name": "Task Count", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 } ], "ThresholdConfigs": [ { "ID": "missedRuns.high", "Name": "Missed Runs High", "Type": "MinMax", "Description": "High number of missed runs", "AppliedTo": 0, "MetricSource": "zenperfsnmp", "DataPoints": [ "missedRuns" ], "Threshold": { "Max": "5", "Min": "" }, "EventTags": { "EventClass": "/App/Zenoss", "Explanation": "This service is missing runs", "Resolution": "Add more collectors", "Severity": 3 } } ] }, "MemoryLimit": 0, "CPUShares": 0, "PIDFile": "", "StartLevel": 0, "EmergencyShutdownLevel": 0 }, { "Name": "zenpop3", "Title": "", "Version": "", "Command": "su - zenoss -c \"/opt/zenoss/bin/zenpop3 run -c --logfileonly --monitor {{(parent .).Name}} \"", "Description": "Collector daemon that converts email messages obtained from POP3 accounts into events", "Environment": null, "Tags": [ "ZenPacks.zenoss.ZenPOP3", "daemon", "collector" ], "ImageID": "zenoss/core_6.2:6.2.1_1", "Instances": { "Min": 0, "Max": 1, "Default": 1 }, "ChangeOptions": [], "Launch": "manual", "HostPolicy": "", "Hostname": "", "Privileged": false, "ConfigFiles": { "/opt/zenoss/etc/global.conf": { "Filename": "/opt/zenoss/etc/global.conf", "Owner": "zenoss:zenoss", "Permissions": "660", "Content": "# Generated by serviced\n{{range $k,$v:=contextFilter . \"global.conf.\"}}{{$k}} {{$v}}\n{{end}}" }, "/opt/zenoss/etc/zenpop3.conf": { "Filename": "/opt/zenoss/etc/zenpop3.conf", "Owner": "zenoss:zenoss", "Permissions": "0664", "Content": "#\n# Configuration file for zenpop3\n#\n# To enable a particular option, uncomment the desired entry.\n#\n# Parameter Setting\n# --------- -------\n#\n# Host of zenhub daemon. Default is localhost.,\n# default: localhost\n#hubhost localhost\n#\n# Port zenhub listens on.Default is 8789.,\n# default: 8789\n#hubport 8789\n#\n# Username for zenhub login. Default is\n# admin., default: admin\n#hubusername admin\n#\n# Password for zenhub login. Default is\n# zenoss., default: zenoss\n#hubpassword zenoss\n#\n# Name of monitor instance to use for\n# configuration. Default is localhost.,\n# default: localhost\n#monitor localhost\n#\n# Initial time to wait for a ZenHub connection,\n# default: 30\n#initialHubTimeout 30\n#\n# Send clear events even when the most\n# recent event was also a clear event.,\n# default: False\n#allowduplicateclears False\n#\n# Send a clear event every [DUPLICATECLEARINTEVAL]\n# events., default: 0\n#duplicateclearinterval 0\n#\n# Seconds between attempts to flush events\n# to ZenHub., default: 5.0\n#eventflushseconds 5.0\n#\n# Number of events to send to ZenHubat\n# one time, default: 50\n#eventflushchunksize 50\n#\n# Maximum number of events to queue, default:\n# 5000\n#maxqueuelen 5000\n#\n# The size, in percent, of the event queue\n# when event pushback starts, default: 0.75\n#queuehighwatermark 0.75\n#\n# How often to ping zenhub, default: 30\n#zenhubpinginterval 30\n#\n# Disable event de-duplication, default: True\n#disable-event-deduplication True\n#\n# redis connection string: redis://[hostname]:[port]/[db],\n# default: %default, default:\n# redis://localhost:6379/0\n#redis-url redis://localhost:6379/0\n#\n# Number of metrics to buffer if redis\n# goes down, default: 65536\n#metricBufferSize 65536\n#\n# redis channel to which metrics are published,\n# default: metrics\n#metricsChannel metrics\n#\n# Max Number of metrics to allow in redis,\n# default: 864000000\n#maxOutstandingMetrics 864000000\n#\n# Use an alternate configuration file\n#configfile /opt/zenoss/etc/zenpop3.conf\n#\n# Generate an XML file containing command-line\n# switches., default: False\n#genxmlconfigs False\n#\n# User to become when running default:zenoss,\n# default: zenoss\n#uid zenoss\n#\n# Cycle continuously on cycleInterval\n# from Zope, default: False\n#cycle False\n#\n# Launch into the background, default: False\n#daemon False\n#\n# Log to console and log file, default: False\n#duallog False\n#\n# output log info in HTML table format,\n# default: False\n#weblog False\n#\n# Run under a supervisor which will restart\n# it, default: False\n#watchdog False\n#\n# The path to the watchdog reporting socket\n#watchdogPath None\n#\n# Wait seconds for initial heartbeat\n#starttimeout None\n#\n# Set listener socket options. For option\n# details: man 7 socket, default: []\n#socketOption []\n#\n# Specify a device ID to monitor\n#device \n#\n# Max number of tasks to run at once,\n# default %default, default: 500\n#maxparallel 500\n#\n# How often to logs statistics of current\n# tasks, value in seconds; very verbose,\n# default: 0\n#logTaskStats 0\n#\n# How often to write internal statistics\n# value in seconds, default: 60\n#writeStatistics 60\n#\n# Use SSL when connecting to POP server,\n# default: False\n#usessl False\n#\n# Leave messages on POP server, default: False\n#nodelete False\n#\n# POP server from which emails are to\n# be read, default: pop.zenoss.com\n#pophost pop.zenoss.com\n#\n# POP port from which emails are to be\n# read, default: 110\n#popport 110\n#\n# POP user, default: zenoss\n#popuser zenoss\n#\n# POP password, default: zenoss\n#poppass zenoss\n#\n# Frequency (in seconds) to poll the POP\n# server, default: 60\n#cycletime 60\n#\n# Severity for events created, default: 2\n#eventseverity 2\n#\n# Logging severity threshold, default: 20\n#logseverity 20\n#\n# Override the default logging path; default\n# $ZENHOME/log, default: /opt/zenoss/log\n#logpath /opt/zenoss/log\n#\n# Max size of log file in KB; default\n# 10240, default: 10240\n#maxlogsize 10240\n#\n# Max number of back up log files; default\n# 3, default: 3\n#maxbackuplogs 3\n#\n# Disable ping perspective, default: True\n#disable-ping-perspective True\n#\n# Heartbeat timeout, default: 900 sec.\n#heartbeattimeout 900\n#" } }, "Context": null, "Endpoints": [ { "Name": "zenhub", "Purpose": "import", "Protocol": "tcp", "PortNumber": 8789, "PortTemplate": "", "VirtualAddress": "", "Application": "{{(parent (parent .)).Name}}_zenhubPB", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "controlplane_consumer", "Purpose": "import", "Protocol": "tcp", "PortNumber": 8444, "PortTemplate": "", "VirtualAddress": "", "Application": "controlplane_consumer", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "CollectorRedis", "Purpose": "import_all", "Protocol": "tcp", "PortNumber": 6379, "PortTemplate": "", "VirtualAddress": "", "Application": "{{(parent .).Name}}_redis", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "zenpop3", "Purpose": "export", "Protocol": "tcp", "PortNumber": 110, "PortTemplate": "", "VirtualAddress": "", "Application": "{{(parent .).Name}}_zenpop3", "ApplicationTemplate": "", "AddressConfig": { "Port": 110, "Protocol": "tcp" }, "VHosts": null, "VHostList": null, "PortList": null } ], "Services": [], "LogFilters": null, "Volumes": [ { "Owner": "zenoss:zenoss", "Permission": "0775", "ResourcePath": "var-zenpacks", "ContainerPath": "/var/zenoss", "Type": "", "InitContainerPath": "", "ExcludeFromBackups": false } ], "LogConfigs": [ { "Path": "/opt/zenoss/log/zenpop3.log", "Type": "zenpop3", "Filters": [ "zenpop3daemon" ], "LogTags": [ { "Name": "monitor", "Value": "{{(parent .).Name}}" } ], "IsAudit": false }, { "Path": "/opt/zenoss/log/audit.log", "Type": "zenossaudit", "Filters": [ "supervisord" ], "LogTags": null, "IsAudit": true } ], "Snapshot": { "Pause": "", "Resume": "" }, "RAMCommitment": "1G", "CPUCommitment": 1, "DisableShell": false, "Runs": null, "Commands": null, "Actions": { "debug": "su - zenoss -c '${ZENHOME:-/opt/zenoss}/bin/{{.Name}} debug'", "stats": "su - zenoss -c '${ZENHOME:-/opt/zenoss}/bin/{{.Name}} stats'" }, "HealthChecks": { "running": { "Script": "pgrep -fu zenoss zenpop3.py \u003e /dev/null", "Timeout": 0, "Interval": 5, "Tolerance": 0 }, "zenhub_answering": { "Script": "/opt/zenoss/bin/healthchecks/zenhub_answering", "Timeout": 0, "Interval": 10, "Tolerance": 0 } }, "Prereqs": null, "MonitoringProfile": { "MetricConfigs": [ { "ID": "zenpop3", "Name": "zenpop3 internal metrics", "Description": "zenpop3 internal metrics", "Query": { "RequestURI": "", "Method": "", "Headers": null, "Data": "" }, "Metrics": [ { "ID": "eventCount", "Name": "Event Count", "Description": "Total number of events.", "Counter": false, "ResetValue": 0, "Unit": "Events", "BuiltIn": false }, { "ID": "eventQueueLength", "Name": "Event Queue Length", "Description": "The number of events pending to be flushed from a daemon's memory queue.", "Counter": false, "ResetValue": 0, "Unit": "Events", "BuiltIn": false }, { "ID": "missedRuns", "Name": "Missed Runs", "Description": "Number of missed runs of tasks running on daemon.", "Counter": false, "ResetValue": 0, "Unit": "Runs", "BuiltIn": false }, { "ID": "queuedTasks", "Name": "Queued Tasks", "Description": "Number of tasks scheduled to be run, but are not running yet.", "Counter": false, "ResetValue": 0, "Unit": "Tasks", "BuiltIn": false }, { "ID": "runningTasks", "Name": "Running Tasks", "Description": "Number of currently running tasks.", "Counter": false, "ResetValue": 0, "Unit": "Tasks", "BuiltIn": false }, { "ID": "taskCount", "Name": "Task Count", "Description": "Total number of tasks.", "Counter": false, "ResetValue": 0, "Unit": "Tasks", "BuiltIn": false } ] } ], "GraphConfigs": [ { "id": "eventCount", "name": "Event Count", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "Event Count", "description": "Total number of events.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Event Count", "metric": "eventCount", "metricSource": "zenpop3", "id": "eventCount", "name": "Event Count", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 }, { "id": "eventQueueLength", "name": "Event Queue Length", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "Event Queue Length", "description": "The number of events pending to be flushed from a daemon's memory queue.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Event Queue Length", "metric": "eventQueueLength", "metricSource": "zenpop3", "id": "eventQueueLength", "name": "Event Queue Length", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 }, { "id": "missedRuns", "name": "Missed Runs", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "Missed Runs", "description": "Number of missed runs of tasks running on daemon.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Missed Runs", "metric": "missedRuns", "metricSource": "zenpop3", "id": "missedRuns", "name": "Missed Runs", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 }, { "id": "tasks", "name": "Tasks", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "", "description": "Number of queued, running, and total tasks.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Queued Tasks", "metric": "queuedTasks", "metricSource": "zenpop3", "id": "queuedTasks", "name": "Queued Tasks", "rate": false, "rateOptions": null, "type": "line" }, { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Running Tasks", "metric": "runningTasks", "metricSource": "zenpop3", "id": "runningTasks", "name": "Running Tasks", "rate": false, "rateOptions": null, "type": "line" }, { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Task Count", "metric": "taskCount", "metricSource": "zenpop3", "id": "taskCount", "name": "Task Count", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 } ], "ThresholdConfigs": [ { "ID": "missedRuns.high", "Name": "Missed Runs High", "Type": "MinMax", "Description": "High number of missed runs", "AppliedTo": 0, "MetricSource": "zenpop3", "DataPoints": [ "missedRuns" ], "Threshold": { "Max": "5", "Min": "" }, "EventTags": { "EventClass": "/App/Zenoss", "Explanation": "This service is missing runs", "Resolution": "Add more collectors", "Severity": 3 } } ] }, "MemoryLimit": 0, "CPUShares": 0, "PIDFile": "", "StartLevel": 0, "EmergencyShutdownLevel": 0 }, { "Name": "zenprocess", "Title": "", "Version": "", "Command": "su - zenoss -c \"/opt/zenoss/bin/zenprocess run -c --logfileonly --monitor {{(parent .).Name}} \"", "Description": "Checks for the existence of monitored processes by using SNMP host resources' MIB, logging their CPU and memory utilization", "Environment": null, "Tags": [ "daemon", "collector" ], "ImageID": "zenoss/core_6.2:6.2.1_1", "Instances": { "Min": 1, "Max": 1, "Default": 0 }, "ChangeOptions": null, "Launch": "auto", "HostPolicy": "", "Hostname": "", "Privileged": false, "ConfigFiles": { "/opt/zenoss/etc/global.conf": { "Filename": "/opt/zenoss/etc/global.conf", "Owner": "zenoss:zenoss", "Permissions": "660", "Content": "# Generated by serviced\n{{range $k,$v:=contextFilter . \"global.conf.\"}}{{$k}} {{$v}}\n{{end}}" }, "/opt/zenoss/etc/zenprocess.conf": { "Filename": "/opt/zenoss/etc/zenprocess.conf", "Owner": "zenoss:zenoss", "Permissions": "0664", "Content": "#\n# Configuration file for zenprocess\n#\n# To enable a particular option, uncomment the desired entry.\n#\n# Parameter Setting\n# --------- -------\n#\n# Host of zenhub daemon. Default is localhost.,\n# default: localhost\n#hubhost localhost\n#\n# Port zenhub listens on.Default is 8789.,\n# default: 8789\n#hubport 8789\n#\n# Username for zenhub login. Default is\n# admin., default: admin\n#hubusername admin\n#\n# Password for zenhub login. Default is\n# zenoss., default: zenoss\n#hubpassword zenoss\n#\n# Name of monitor instance to use for\n# configuration. Default is localhost.,\n# default: localhost\n#monitor localhost\n#\n# Initial time to wait for a ZenHub connection,\n# default: 30\n#initialHubTimeout 30\n#\n# Send clear events even when the most\n# recent event was also a clear event.,\n# default: False\n#allowduplicateclears False\n#\n# Send a clear event every [DUPLICATECLEARINTEVAL]\n# events., default: 0\n#duplicateclearinterval 0\n#\n# Seconds between attempts to flush events\n# to ZenHub., default: 5.0\n#eventflushseconds 5.0\n#\n# Number of events to send to ZenHubat\n# one time, default: 50\n#eventflushchunksize 50\n#\n# Maximum number of events to queue, default:\n# 5000\n#maxqueuelen 5000\n#\n# The size, in percent, of the event queue\n# when event pushback starts, default: 0.75\n#queuehighwatermark 0.75\n#\n# How often to ping zenhub, default: 30\n#zenhubpinginterval 30\n#\n# Disable event de-duplication, default: True\n#disable-event-deduplication True\n#\n# redis connection string: redis://[hostname]:[port]/[db],\n# default: %default, default:\n# redis://localhost:6379/0\n#redis-url redis://localhost:6379/0\n#\n# Number of metrics to buffer if redis\n# goes down, default: 65536\n#metricBufferSize 65536\n#\n# redis channel to which metrics are published,\n# default: metrics\n#metricsChannel metrics\n#\n# Max Number of metrics to allow in redis,\n# default: 864000000\n#maxOutstandingMetrics 864000000\n#\n# Use an alternate configuration file\n#configfile /opt/zenoss/etc/zenprocess.conf\n#\n# Generate an XML file containing command-line\n# switches., default: False\n#genxmlconfigs False\n#\n# User to become when running default:zenoss,\n# default: zenoss\n#uid zenoss\n#\n# Cycle continuously on cycleInterval\n# from Zope, default: False\n#cycle False\n#\n# Launch into the background, default: False\n#daemon False\n#\n# Log to console and log file, default: False\n#duallog False\n#\n# Log to log file and not console, default:\n# False\n#logfileonly False\n#\n# output log info in HTML table format,\n# default: False\n#weblog False\n#\n# Run under a supervisor which will restart\n# it, default: False\n#watchdog False\n#\n# The path to the watchdog reporting socket\n#watchdogPath None\n#\n# Wait seconds for initial heartbeat\n#starttimeout None\n#\n# Set listener socket options. For option\n# details: man 7 socket, default: []\n#socketOption []\n#\n# Specify a device ID to monitor\n#device \n#\n# Max number of tasks to run at once,\n# default %default, default: 500\n#maxparallel 500\n#\n# How often to logs statistics of current\n# tasks, value in seconds; very verbose,\n# default: 0\n#logTaskStats 0\n#\n# How often to write internal statistics\n# value in seconds, default: 60\n#writeStatistics 60\n#\n# Max number of device configurations\n# to load at once, default %default (0\n# == all devices), default: 25\n#configsipsize 25\n#\n# Delay in seconds between device configurations\n# loading, default %default, default: 1\n#configsipdelay 1\n#\n# Show the list of processes found.For\n# debugging purposes only., default: False\n#showprocs False\n#\n# Show the raw SNMP processes data returned\n# from the device. For debugging purposes\n# only., default: False\n#showrawtables False\n#\n# Directory and filename to use as a template\n# to store SNMP results from device.\n#captureFilePrefix \n#\n# Logging severity threshold, default: 20\n#logseverity 20\n#\n# Override the default logging path; default\n# $ZENHOME/log, default: /opt/zenoss/log\n#logpath /opt/zenoss/log\n#\n# Max size of log file in KB; default\n# 10240, default: 10240\n#maxlogsize 10240\n#\n# Max number of back up log files; default\n# 3, default: 3\n#maxbackuplogs 3\n#\n# Disable ping perspective, default: True\n#disable-ping-perspective True\n#\n# Heartbeat timeout, default: 900 sec.\n#heartbeattimeout 900\n#" } }, "Context": null, "Endpoints": [ { "Name": "zproxy", "Purpose": "import", "Protocol": "tcp", "PortNumber": 8080, "PortTemplate": "", "VirtualAddress": "", "Application": "zproxy", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "zenhub", "Purpose": "import", "Protocol": "tcp", "PortNumber": 8789, "PortTemplate": "", "VirtualAddress": "", "Application": "{{(parent (parent .)).Name}}_zenhubPB", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "CollectorRedis", "Purpose": "import_all", "Protocol": "tcp", "PortNumber": 6379, "PortTemplate": "", "VirtualAddress": "", "Application": "{{(parent .).Name}}_redis", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "controlplane_consumer", "Purpose": "import", "Protocol": "tcp", "PortNumber": 8444, "PortTemplate": "", "VirtualAddress": "", "Application": "controlplane_consumer", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null } ], "Services": [], "LogFilters": null, "Volumes": [ { "Owner": "zenoss:zenoss", "Permission": "0755", "ResourcePath": ".ssh", "ContainerPath": "/home/zenoss/.ssh", "Type": "", "InitContainerPath": "", "ExcludeFromBackups": false }, { "Owner": "zenoss:zenoss", "Permission": "0775", "ResourcePath": "var-zenpacks", "ContainerPath": "/var/zenoss", "Type": "", "InitContainerPath": "", "ExcludeFromBackups": false } ], "LogConfigs": [ { "Path": "/opt/zenoss/log/zenprocess.log", "Type": "zenprocess", "Filters": [ "pythondaemon" ], "LogTags": [ { "Name": "monitor", "Value": "{{(parent .).Name}}" } ], "IsAudit": false } ], "Snapshot": { "Pause": "", "Resume": "" }, "RAMCommitment": "256M", "CPUCommitment": 1, "DisableShell": false, "Runs": null, "Commands": null, "Actions": { "debug": "su - zenoss -c '${ZENHOME:-/opt/zenoss}/bin/{{.Name}} debug'", "stats": "su - zenoss -c '${ZENHOME:-/opt/zenoss}/bin/{{.Name}} stats'" }, "HealthChecks": { "redis_answering": { "Script": "/opt/zenoss/bin/healthchecks/redis_answering", "Timeout": 0, "Interval": 5, "Tolerance": 0 }, "running": { "Script": "pgrep -fu zenoss zenprocess.py \u003e /dev/null", "Timeout": 0, "Interval": 5, "Tolerance": 0 }, "zenhub_answering": { "Script": "/opt/zenoss/bin/healthchecks/zenhub_answering", "Timeout": 0, "Interval": 10, "Tolerance": 0 } }, "Prereqs": null, "MonitoringProfile": { "MetricConfigs": [ { "ID": "zenprocess", "Name": "zenprocess internal metrics", "Description": "zenprocess internal metrics", "Query": { "RequestURI": "", "Method": "", "Headers": null, "Data": "" }, "Metrics": [ { "ID": "dataPoints", "Name": "Datapoints", "Description": "Number of datapoints collected.", "Counter": false, "ResetValue": 0, "Unit": "Points", "BuiltIn": false }, { "ID": "devices", "Name": "Devices", "Description": "Number of devices.", "Counter": false, "ResetValue": 0, "Unit": "Count", "BuiltIn": false }, { "ID": "eventCount", "Name": "Event Count", "Description": "Total number of events.", "Counter": false, "ResetValue": 0, "Unit": "Events", "BuiltIn": false }, { "ID": "eventQueueLength", "Name": "Event Queue Length", "Description": "The number of events pending to be flushed from a daemon's memory queue.", "Counter": false, "ResetValue": 0, "Unit": "Events", "BuiltIn": false }, { "ID": "missedRuns", "Name": "Missed Runs", "Description": "Number of missed runs of tasks running on daemon.", "Counter": false, "ResetValue": 0, "Unit": "Runs", "BuiltIn": false }, { "ID": "queuedTasks", "Name": "Queued Tasks", "Description": "Number of tasks scheduled to be run, but are not running yet.", "Counter": false, "ResetValue": 0, "Unit": "Tasks", "BuiltIn": false }, { "ID": "runningTasks", "Name": "Running Tasks", "Description": "Number of currently running tasks.", "Counter": false, "ResetValue": 0, "Unit": "Tasks", "BuiltIn": false }, { "ID": "taskCount", "Name": "Task Count", "Description": "Total number of tasks.", "Counter": false, "ResetValue": 0, "Unit": "Tasks", "BuiltIn": false } ] } ], "GraphConfigs": [ { "id": "dataPoints", "name": "Data Points", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "Data Points", "description": "Number of datapoints collected.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Data Points", "metric": "dataPoints", "metricSource": "zenprocess", "id": "dataPoints", "name": "Data Points", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 }, { "id": "devices", "name": "Devices", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "Devices", "description": "Number of devices.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Devices", "metric": "devices", "metricSource": "zenprocess", "id": "devices", "name": "Devices", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 }, { "id": "eventCount", "name": "Event Count", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "Event Count", "description": "Total number of events.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Event Count", "metric": "eventCount", "metricSource": "zenprocess", "id": "eventCount", "name": "Event Count", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 }, { "id": "eventQueueLength", "name": "Event Queue Length", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "Event Queue Length", "description": "The number of events pending to be flushed from a daemon's memory queue.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Event Queue Length", "metric": "eventQueueLength", "metricSource": "zenprocess", "id": "eventQueueLength", "name": "Event Queue Length", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 }, { "id": "missedRuns", "name": "Missed Runs", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "Missed Runs", "description": "Number of missed runs of tasks running on daemon.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Missed Runs", "metric": "missedRuns", "metricSource": "zenprocess", "id": "missedRuns", "name": "Missed Runs", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 }, { "id": "tasks", "name": "Tasks", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "", "description": "Number of queued, running, and total tasks.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Queued Tasks", "metric": "queuedTasks", "metricSource": "zenprocess", "id": "queuedTasks", "name": "Queued Tasks", "rate": false, "rateOptions": null, "type": "line" }, { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Running Tasks", "metric": "runningTasks", "metricSource": "zenprocess", "id": "runningTasks", "name": "Running Tasks", "rate": false, "rateOptions": null, "type": "line" }, { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Task Count", "metric": "taskCount", "metricSource": "zenprocess", "id": "taskCount", "name": "Task Count", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 } ], "ThresholdConfigs": [ { "ID": "missedRuns.high", "Name": "Missed Runs High", "Type": "MinMax", "Description": "High number of missed runs", "AppliedTo": 0, "MetricSource": "zenprocess", "DataPoints": [ "missedRuns" ], "Threshold": { "Max": "5", "Min": "" }, "EventTags": { "EventClass": "/App/Zenoss", "Explanation": "This service is missing runs", "Resolution": "Add more collectors", "Severity": 3 } } ] }, "MemoryLimit": 0, "CPUShares": 0, "PIDFile": "", "StartLevel": 0, "EmergencyShutdownLevel": 0 }, { "Name": "collectorredis", "Title": "", "Version": "", "Command": "{{ if ne .InstanceID 0 }} /bin/sed -i 's/# slaveof \u003cmasterip\u003e \u003cmasterport\u003e/slaveof rd1 6379/' /etc/redis.conf \u0026 {{ end }} /usr/bin/redis-server /etc/redis.conf", "Description": "Redis server", "Environment": null, "Tags": [ "daemon", "collector" ], "ImageID": "zenoss/core_6.2:6.2.1_1", "Instances": { "Min": 1, "Max": 0, "Default": 0 }, "ChangeOptions": [ "restartAllOnInstanceZeroDown" ], "Launch": "auto", "HostPolicy": "REQUIRE_SEPARATE", "Hostname": "", "Privileged": true, "ConfigFiles": { "/etc/redis.conf": { "Filename": "/etc/redis.conf", "Owner": "", "Permissions": "", "Content": "# Redis configuration file example\n\n# Note on units: when memory size is needed, it is possible to specify\n# it in the usual form of 1k 5GB 4M and so forth:\n#\n# 1k =\u003e 1000 bytes\n# 1kb =\u003e 1024 bytes\n# 1m =\u003e 1000000 bytes\n# 1mb =\u003e 1024*1024 bytes\n# 1g =\u003e 1000000000 bytes\n# 1gb =\u003e 1024*1024*1024 bytes\n#\n# units are case insensitive so 1GB 1Gb 1gB are all the same.\n\n# By default Redis does not run as a daemon. Use 'yes' if you need it.\n# Note that Redis will write a pid file in /var/run/redis.pid when daemonized.\ndaemonize no\n\n# When running daemonized, Redis writes a pid file in /var/run/redis.pid by\n# default. You can specify a custom pid file location here.\npidfile /var/run/redis/redis.pid\n\n# Accept connections on the specified port, default is 6379.\n# If port 0 is specified Redis will not listen on a TCP socket.\nport 6379\n\n# If you want you can bind a single interface, if the bind option is not\n# specified all the interfaces will listen for incoming connections.\n#\n# comment out bind as workaround for ZEN-10504\nbind 0.0.0.0\n\n# Specify the path for the unix socket that will be used to listen for\n# incoming connections. There is no default, so Redis will not listen\n# on a unix socket when not specified.\n#\n# unixsocket /tmp/redis.sock\n# unixsocketperm 755\n\n# Close the connection after a client is idle for N seconds (0 to disable)\ntimeout 0\n\n# TCP keepalive.\n#\n# If non-zero, use SO_KEEPALIVE to send TCP ACKs to clients in absence\n# of communication. This is useful for two reasons:\n#\n# 1) Detect dead peers.\n# 2) Take the connection alive from the point of view of network\n# equipment in the middle.\n#\n# On Linux, the specified value (in seconds) is the period used to send ACKs.\n# Note that to close the connection the double of the time is needed.\n# On other kernels the period depends on the kernel configuration.\n#\n# A reasonable value for this option is 60 seconds.\ntcp-keepalive 0\n\n# Specify the server verbosity level.\n# This can be one of:\n# debug (a lot of information, useful for development/testing)\n# verbose (many rarely useful info, but not a mess like the debug level)\n# notice (moderately verbose, what you want in production probably)\n# warning (only very important / critical messages are logged)\nloglevel notice\n\n# Specify the log file name. Also 'stdout' can be used to force\n# Redis to log on the standard output. Note that if you use standard\n# output for logging but daemonize, logs will be sent to /dev/null\nlogfile /var/log/redis/redis.log\n\n# To enable logging to the system logger, just set 'syslog-enabled' to yes,\n# and optionally update the other syslog parameters to suit your needs.\n# syslog-enabled no\n\n# Specify the syslog identity.\n# syslog-ident redis\n\n# Specify the syslog facility. Must be USER or between LOCAL0-LOCAL7.\n# syslog-facility local0\n\n# Set the number of databases. The default database is DB 0, you can select\n# a different one on a per-connection basis using SELECT \u003cdbid\u003e where\n# dbid is a number between 0 and 'databases'-1\ndatabases 16\n\n################################ SNAPSHOTTING #################################\n#\n# Save the DB on disk:\n#\n# save \u003cseconds\u003e \u003cchanges\u003e\n#\n# Will save the DB if both the given number of seconds and the given\n# number of write operations against the DB occurred.\n#\n# In the example below the behaviour will be to save:\n# after 900 sec (15 min) if at least 1 key changed\n# after 300 sec (5 min) if at least 10 keys changed\n# after 60 sec if at least 10000 keys changed\n#\n# Note: you can disable saving at all commenting all the \"save\" lines.\n#\n# It is also possible to remove all the previously configured save\n# points by adding a save directive with a single empty string argument\n# like in the following example:\n#\n# save \"\"\n\nsave 900 1\nsave 300 10\nsave 60 10000\n\n# By default Redis will stop accepting writes if RDB snapshots are enabled\n# (at least one save point) and the latest background save failed.\n# This will make the user aware (in an hard way) that data is not persisting\n# on disk properly, otherwise chances are that no one will notice and some\n# distater will happen.\n#\n# If the background saving process will start working again Redis will\n# automatically allow writes again.\n#\n# However if you have setup your proper monitoring of the Redis server\n# and persistence, you may want to disable this feature so that Redis will\n# continue to work as usually even if there are problems with disk,\n# permissions, and so forth.\nstop-writes-on-bgsave-error yes\n\n# Compress string objects using LZF when dump .rdb databases?\n# For default that's set to 'yes' as it's almost always a win.\n# If you want to save some CPU in the saving child set it to 'no' but\n# the dataset will likely be bigger if you have compressible values or keys.\nrdbcompression yes\n\n# Since version 5 of RDB a CRC64 checksum is placed at the end of the file.\n# This makes the format more resistant to corruption but there is a performance\n# hit to pay (around 10%) when saving and loading RDB files, so you can disable it\n# for maximum performances.\n#\n# RDB files created with checksum disabled have a checksum of zero that will\n# tell the loading code to skip the check.\nrdbchecksum yes\n\n# The filename where to dump the DB\ndbfilename dump.rdb\n\n# The working directory.\n#\n# The DB will be written inside this directory, with the filename specified\n# above using the 'dbfilename' configuration directive.\n# \n# The Append Only File will also be created inside this directory.\n# \n# Note that you must specify a directory here, not a file name.\ndir /var/lib/redis/\n\n################################# REPLICATION #################################\n\n# Master-Slave replication. Use slaveof to make a Redis instance a copy of\n# another Redis server. Note that the configuration is local to the slave\n# so for example it is possible to configure the slave to save the DB with a\n# different interval, or to listen to another port, and so on.\n#\n# slaveof \u003cmasterip\u003e \u003cmasterport\u003e\n\n# If the master is password protected (using the \"requirepass\" configuration\n# directive below) it is possible to tell the slave to authenticate before\n# starting the replication synchronization process, otherwise the master will\n# refuse the slave request.\n#\n# masterauth \u003cmaster-password\u003e\n\n# When a slave loses its connection with the master, or when the replication\n# is still in progress, the slave can act in two different ways:\n#\n# 1) if slave-serve-stale-data is set to 'yes' (the default) the slave will\n# still reply to client requests, possibly with out of date data, or the\n# data set may just be empty if this is the first synchronization.\n#\n# 2) if slave-serve-stale-data is set to 'no' the slave will reply with\n# an error \"SYNC with master in progress\" to all the kind of commands\n# but to INFO and SLAVEOF.\n#\nslave-serve-stale-data yes\n\n# You can configure a slave instance to accept writes or not. Writing against\n# a slave instance may be useful to store some ephemeral data (because data\n# written on a slave will be easily deleted after resync with the master) but\n# may also cause problems if clients are writing to it because of a\n# misconfiguration.\n#\n# Since Redis 2.6 by default slaves are read-only.\n#\n# Note: read only slaves are not designed to be exposed to untrusted clients\n# on the internet. It's just a protection layer against misuse of the instance.\n# Still a read only slave exports by default all the administrative commands\n# such as CONFIG, DEBUG, and so forth. To a limited extend you can improve\n# security of read only slaves using 'rename-command' to shadow all the\n# administrative / dangerous commands.\nslave-read-only yes\n\n# Slaves send PINGs to server in a predefined interval. It's possible to change\n# this interval with the repl_ping_slave_period option. The default value is 10\n# seconds.\n#\n# repl-ping-slave-period 10\n\n# The following option sets a timeout for both Bulk transfer I/O timeout and\n# master data or ping response timeout. The default value is 60 seconds.\n#\n# It is important to make sure that this value is greater than the value\n# specified for repl-ping-slave-period otherwise a timeout will be detected\n# every time there is low traffic between the master and the slave.\n#\n# repl-timeout 60\n\n# Disable TCP_NODELAY on the slave socket after SYNC?\n#\n# If you select \"yes\" Redis will use a smaller number of TCP packets and\n# less bandwidth to send data to slaves. But this can add a delay for\n# the data to appear on the slave side, up to 40 milliseconds with\n# Linux kernels using a default configuration.\n#\n# If you select \"no\" the delay for data to appear on the slave side will\n# be reduced but more bandwidth will be used for replication.\n#\n# By default we optimize for low latency, but in very high traffic conditions\n# or when the master and slaves are many hops away, turning this to \"yes\" may\n# be a good idea.\nrepl-disable-tcp-nodelay no\n\n# The slave priority is an integer number published by Redis in the INFO output.\n# It is used by Redis Sentinel in order to select a slave to promote into a\n# master if the master is no longer working correctly.\n#\n# A slave with a low priority number is considered better for promotion, so\n# for instance if there are three slaves with priority 10, 100, 25 Sentinel will\n# pick the one wtih priority 10, that is the lowest.\n#\n# However a special priority of 0 marks the slave as not able to perform the\n# role of master, so a slave with priority of 0 will never be selected by\n# Redis Sentinel for promotion.\n#\n# By default the priority is 100.\nslave-priority 100\n\n################################## SECURITY ###################################\n\n# Require clients to issue AUTH \u003cPASSWORD\u003e before processing any other\n# commands. This might be useful in environments in which you do not trust\n# others with access to the host running redis-server.\n#\n# This should stay commented out for backward compatibility and because most\n# people do not need auth (e.g. they run their own servers).\n# \n# Warning: since Redis is pretty fast an outside user can try up to\n# 150k passwords per second against a good box. This means that you should\n# use a very strong password otherwise it will be very easy to break.\n#\n# requirepass foobared\n\n# Command renaming.\n#\n# It is possible to change the name of dangerous commands in a shared\n# environment. For instance the CONFIG command may be renamed into something\n# hard to guess so that it will still be available for internal-use tools\n# but not available for general clients.\n#\n# Example:\n#\n# rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52\n#\n# It is also possible to completely kill a command by renaming it into\n# an empty string:\n#\n# rename-command CONFIG \"\"\n#\n# Please note that changing the name of commands that are logged into the\n# AOF file or transmitted to slaves may cause problems.\n\n################################### LIMITS ####################################\n\n# Set the max number of connected clients at the same time. By default\n# this limit is set to 10000 clients, however if the Redis server is not\n# able to configure the process file limit to allow for the specified limit\n# the max number of allowed clients is set to the current file limit\n# minus 32 (as Redis reserves a few file descriptors for internal uses).\n#\n# Once the limit is reached Redis will close all the new connections sending\n# an error 'max number of clients reached'.\n#\n# maxclients 10000\n\n# Don't use more memory than the specified amount of bytes.\n# When the memory limit is reached Redis will try to remove keys\n# accordingly to the eviction policy selected (see maxmemmory-policy).\n#\n# If Redis can't remove keys according to the policy, or if the policy is\n# set to 'noeviction', Redis will start to reply with errors to commands\n# that would use more memory, like SET, LPUSH, and so on, and will continue\n# to reply to read-only commands like GET.\n#\n# This option is usually useful when using Redis as an LRU cache, or to set\n# an hard memory limit for an instance (using the 'noeviction' policy).\n#\n# WARNING: If you have slaves attached to an instance with maxmemory on,\n# the size of the output buffers needed to feed the slaves are subtracted\n# from the used memory count, so that network problems / resyncs will\n# not trigger a loop where keys are evicted, and in turn the output\n# buffer of slaves is full with DELs of keys evicted triggering the deletion\n# of more keys, and so forth until the database is completely emptied.\n#\n# In short... if you have slaves attached it is suggested that you set a lower\n# limit for maxmemory so that there is some free RAM on the system for slave\n# output buffers (but this is not needed if the policy is 'noeviction').\n#\nmaxmemory {{bytesToMB .RAMCommitment}}mb\n\n# MAXMEMORY POLICY: how Redis will select what to remove when maxmemory\n# is reached. You can select among five behaviors:\n# \n# volatile-lru -\u003e remove the key with an expire set using an LRU algorithm\n# allkeys-lru -\u003e remove any key accordingly to the LRU algorithm\n# volatile-random -\u003e remove a random key with an expire set\n# allkeys-random -\u003e remove a random key, any key\n# volatile-ttl -\u003e remove the key with the nearest expire time (minor TTL)\n# noeviction -\u003e don't expire at all, just return an error on write operations\n# \n# Note: with any of the above policies, Redis will return an error on write\n# operations, when there are not suitable keys for eviction.\n#\n# At the date of writing this commands are: set setnx setex append\n# incr decr rpush lpush rpushx lpushx linsert lset rpoplpush sadd\n# sinter sinterstore sunion sunionstore sdiff sdiffstore zadd zincrby\n# zunionstore zinterstore hset hsetnx hmset hincrby incrby decrby\n# getset mset msetnx exec sort\n#\n# The default is:\n#\n# maxmemory-policy volatile-lru\n\n# LRU and minimal TTL algorithms are not precise algorithms but approximated\n# algorithms (in order to save memory), so you can select as well the sample\n# size to check. For instance for default Redis will check three keys and\n# pick the one that was used less recently, you can change the sample size\n# using the following configuration directive.\n#\n# maxmemory-samples 3\n\n############################## APPEND ONLY MODE ###############################\n\n# By default Redis asynchronously dumps the dataset on disk. This mode is\n# good enough in many applications, but an issue with the Redis process or\n# a power outage may result into a few minutes of writes lost (depending on\n# the configured save points).\n#\n# The Append Only File is an alternative persistence mode that provides\n# much better durability. For instance using the default data fsync policy\n# (see later in the config file) Redis can lose just one second of writes in a\n# dramatic event like a server power outage, or a single write if something\n# wrong with the Redis process itself happens, but the operating system is\n# still running correctly.\n#\n# AOF and RDB persistence can be enabled at the same time without problems.\n# If the AOF is enabled on startup Redis will load the AOF, that is the file\n# with the better durability guarantees.\n#\n# Please check http://redis.io/topics/persistence for more information.\n\nappendonly no\n\n# The name of the append only file (default: \"appendonly.aof\")\n# appendfilename appendonly.aof\n\n# The fsync() call tells the Operating System to actually write data on disk\n# instead to wait for more data in the output buffer. Some OS will really flush \n# data on disk, some other OS will just try to do it ASAP.\n#\n# Redis supports three different modes:\n#\n# no: don't fsync, just let the OS flush the data when it wants. Faster.\n# always: fsync after every write to the append only log . Slow, Safest.\n# everysec: fsync only one time every second. Compromise.\n#\n# The default is \"everysec\", as that's usually the right compromise between\n# speed and data safety. It's up to you to understand if you can relax this to\n# \"no\" that will let the operating system flush the output buffer when\n# it wants, for better performances (but if you can live with the idea of\n# some data loss consider the default persistence mode that's snapshotting),\n# or on the contrary, use \"always\" that's very slow but a bit safer than\n# everysec.\n#\n# More details please check the following article:\n# http://antirez.com/post/redis-persistence-demystified.html\n#\n# If unsure, use \"everysec\".\n\n# appendfsync always\nappendfsync everysec\n# appendfsync no\n\n# When the AOF fsync policy is set to always or everysec, and a background\n# saving process (a background save or AOF log background rewriting) is\n# performing a lot of I/O against the disk, in some Linux configurations\n# Redis may block too long on the fsync() call. Note that there is no fix for\n# this currently, as even performing fsync in a different thread will block\n# our synchronous write(2) call.\n#\n# In order to mitigate this problem it's possible to use the following option\n# that will prevent fsync() from being called in the main process while a\n# BGSAVE or BGREWRITEAOF is in progress.\n#\n# This means that while another child is saving, the durability of Redis is\n# the same as \"appendfsync none\". In practical terms, this means that it is\n# possible to lose up to 30 seconds of log in the worst scenario (with the\n# default Linux settings).\n# \n# If you have latency problems turn this to \"yes\". Otherwise leave it as\n# \"no\" that is the safest pick from the point of view of durability.\nno-appendfsync-on-rewrite no\n\n# Automatic rewrite of the append only file.\n# Redis is able to automatically rewrite the log file implicitly calling\n# BGREWRITEAOF when the AOF log size grows by the specified percentage.\n# \n# This is how it works: Redis remembers the size of the AOF file after the\n# latest rewrite (if no rewrite has happened since the restart, the size of\n# the AOF at startup is used).\n#\n# This base size is compared to the current size. If the current size is\n# bigger than the specified percentage, the rewrite is triggered. Also\n# you need to specify a minimal size for the AOF file to be rewritten, this\n# is useful to avoid rewriting the AOF file even if the percentage increase\n# is reached but it is still pretty small.\n#\n# Specify a percentage of zero in order to disable the automatic AOF\n# rewrite feature.\n\nauto-aof-rewrite-percentage 100\nauto-aof-rewrite-min-size 64mb\n\n################################ LUA SCRIPTING ###############################\n\n# Max execution time of a Lua script in milliseconds.\n#\n# If the maximum execution time is reached Redis will log that a script is\n# still in execution after the maximum allowed time and will start to\n# reply to queries with an error.\n#\n# When a long running script exceed the maximum execution time only the\n# SCRIPT KILL and SHUTDOWN NOSAVE commands are available. The first can be\n# used to stop a script that did not yet called write commands. The second\n# is the only way to shut down the server in the case a write commands was\n# already issue by the script but the user don't want to wait for the natural\n# termination of the script.\n#\n# Set it to 0 or a negative value for unlimited execution without warnings.\nlua-time-limit 5000\n\n################################## SLOW LOG ###################################\n\n# The Redis Slow Log is a system to log queries that exceeded a specified\n# execution time. The execution time does not include the I/O operations\n# like talking with the client, sending the reply and so forth,\n# but just the time needed to actually execute the command (this is the only\n# stage of command execution where the thread is blocked and can not serve\n# other requests in the meantime).\n# \n# You can configure the slow log with two parameters: one tells Redis\n# what is the execution time, in microseconds, to exceed in order for the\n# command to get logged, and the other parameter is the length of the\n# slow log. When a new command is logged the oldest one is removed from the\n# queue of logged commands.\n\n# The following time is expressed in microseconds, so 1000000 is equivalent\n# to one second. Note that a negative number disables the slow log, while\n# a value of zero forces the logging of every command.\nslowlog-log-slower-than 10000\n\n# There is no limit to this length. Just be aware that it will consume memory.\n# You can reclaim memory used by the slow log with SLOWLOG RESET.\nslowlog-max-len 128\n\n############################### ADVANCED CONFIG ###############################\n\n# Hashes are encoded using a memory efficient data structure when they have a\n# small number of entries, and the biggest entry does not exceed a given\n# threshold. These thresholds can be configured using the following directives.\nhash-max-ziplist-entries 512\nhash-max-ziplist-value 64\n\n# Similarly to hashes, small lists are also encoded in a special way in order\n# to save a lot of space. The special representation is only used when\n# you are under the following limits:\nlist-max-ziplist-entries 512\nlist-max-ziplist-value 64\n\n# Sets have a special encoding in just one case: when a set is composed\n# of just strings that happens to be integers in radix 10 in the range\n# of 64 bit signed integers.\n# The following configuration setting sets the limit in the size of the\n# set in order to use this special memory saving encoding.\nset-max-intset-entries 512\n\n# Similarly to hashes and lists, sorted sets are also specially encoded in\n# order to save a lot of space. This encoding is only used when the length and\n# elements of a sorted set are below the following limits:\nzset-max-ziplist-entries 128\nzset-max-ziplist-value 64\n\n# Active rehashing uses 1 millisecond every 100 milliseconds of CPU time in\n# order to help rehashing the main Redis hash table (the one mapping top-level\n# keys to values). The hash table implementation Redis uses (see dict.c)\n# performs a lazy rehashing: the more operation you run into an hash table\n# that is rehashing, the more rehashing \"steps\" are performed, so if the\n# server is idle the rehashing is never complete and some more memory is used\n# by the hash table.\n# \n# The default is to use this millisecond 10 times every second in order to\n# active rehashing the main dictionaries, freeing memory when possible.\n#\n# If unsure:\n# use \"activerehashing no\" if you have hard latency requirements and it is\n# not a good thing in your environment that Redis can reply form time to time\n# to queries with 2 milliseconds delay.\n#\n# use \"activerehashing yes\" if you don't have such hard requirements but\n# want to free memory asap when possible.\nactiverehashing yes\n\n# The client output buffer limits can be used to force disconnection of clients\n# that are not reading data from the server fast enough for some reason (a\n# common reason is that a Pub/Sub client can't consume messages as fast as the\n# publisher can produce them).\n#\n# The limit can be set differently for the three different classes of clients:\n#\n# normal -\u003e normal clients\n# slave -\u003e slave clients and MONITOR clients\n# pubsub -\u003e clients subcribed to at least one pubsub channel or pattern\n#\n# The syntax of every client-output-buffer-limit directive is the following:\n#\n# client-output-buffer-limit \u003cclass\u003e \u003chard limit\u003e \u003csoft limit\u003e \u003csoft seconds\u003e\n#\n# A client is immediately disconnected once the hard limit is reached, or if\n# the soft limit is reached and remains reached for the specified number of\n# seconds (continuously).\n# So for instance if the hard limit is 32 megabytes and the soft limit is\n# 16 megabytes / 10 seconds, the client will get disconnected immediately\n# if the size of the output buffers reach 32 megabytes, but will also get\n# disconnected if the client reaches 16 megabytes and continuously overcomes\n# the limit for 10 seconds.\n#\n# By default normal clients are not limited because they don't receive data\n# without asking (in a push way), but just after a request, so only\n# asynchronous clients may create a scenario where data is requested faster\n# than it can read.\n#\n# Instead there is a default limit for pubsub and slave clients, since\n# subscribers and slaves receive data in a push fashion.\n#\n# Both the hard or the soft limit can be disabled by setting them to zero.\nclient-output-buffer-limit normal 0 0 0\nclient-output-buffer-limit slave 256mb 64mb 60\nclient-output-buffer-limit pubsub 32mb 8mb 60\n\n# Redis calls an internal function to perform many background tasks, like\n# closing connections of clients in timeot, purging expired keys that are\n# never requested, and so forth.\n#\n# Not all tasks are perforemd with the same frequency, but Redis checks for\n# tasks to perform accordingly to the specified \"hz\" value.\n#\n# By default \"hz\" is set to 10. Raising the value will use more CPU when\n# Redis is idle, but at the same time will make Redis more responsive when\n# there are many keys expiring at the same time, and timeouts may be\n# handled with more precision.\n#\n# The range is between 1 and 500, however a value over 100 is usually not\n# a good idea. Most users should use the default of 10 and raise this up to\n# 100 only in environments where very low latency is required.\nhz 10\n\n# When a child rewrites the AOF file, if the following option is enabled\n# the file will be fsync-ed every 32 MB of data generated. This is useful\n# in order to commit the file to the disk more incrementally and avoid\n# big latency spikes.\naof-rewrite-incremental-fsync yes\n\n################################## INCLUDES ###################################\n\n# Include one or more other config files here. This is useful if you\n# have a standard template that goes to all Redis server but also need\n# to customize a few per-server settings. Include files can include\n# other files, so use this wisely.\n#\n# include /path/to/local.conf\n# include /path/to/other.conf\n" } }, "Context": null, "Endpoints": [ { "Name": "CollectorRedises", "Purpose": "import_all", "Protocol": "tcp", "PortNumber": 16379, "PortTemplate": "", "VirtualAddress": "rd{{ plus 1 .InstanceID }}:6379", "Application": "localhost_redis", "ApplicationTemplate": "{{(parent .).Name}}_redis", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "zproxy", "Purpose": "import", "Protocol": "tcp", "PortNumber": 8080, "PortTemplate": "", "VirtualAddress": "", "Application": "zproxy", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "CollectorRedis", "Purpose": "export", "Protocol": "tcp", "PortNumber": 6379, "PortTemplate": "", "VirtualAddress": "", "Application": "{{(parent .).Name}}_redis", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null } ], "Services": [], "LogFilters": null, "Volumes": [ { "Owner": "root:root", "Permission": "0755", "ResourcePath": "{{(parent (parent .)).Name}}/{{(parent .).Name}}_collectorredis", "ContainerPath": "/var/lib/redis", "Type": "", "InitContainerPath": "", "ExcludeFromBackups": false } ], "LogConfigs": [ { "Path": "/var/log/redis/redis.log", "Type": "redis", "Filters": [ "redis" ], "LogTags": null, "IsAudit": false } ], "Snapshot": { "Pause": "", "Resume": "" }, "RAMCommitment": "1G", "CPUCommitment": 1, "DisableShell": false, "Runs": null, "Commands": null, "Actions": null, "HealthChecks": { "metrics": { "Script": "/opt/zenoss/bin/healthchecks/collectorredis/metrics", "Timeout": 0, "Interval": 15, "Tolerance": 0 } }, "Prereqs": null, "MonitoringProfile": { "MetricConfigs": [ { "ID": "redis", "Name": "redis internal metrics", "Description": "redis internal metrics", "Query": { "RequestURI": "", "Method": "", "Headers": null, "Data": "" }, "Metrics": [ { "ID": "redis.total_commands_processed", "Name": "Total Commands", "Description": "Number of commands processed by redis.", "Counter": true, "ResetValue": 0, "Unit": "Count", "BuiltIn": false }, { "ID": "redis.metricsLength", "Name": "Metrics Queue Length", "Description": "Number of metrics awaiting processing", "Counter": false, "ResetValue": 0, "Unit": "Count", "BuiltIn": false } ] } ], "GraphConfigs": [ { "id": "metricqueue", "name": "Metric Queue Length", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "Metrics", "description": "Number of metrics awaiting processing", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "sum", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Metrics", "metric": "redis.metricsLength", "metricSource": "redis", "id": "metricsLength", "name": "Metric Queue Length", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 }, { "id": "totalcommands", "name": "Total Commands", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "Commands/s", "description": "Number of commands per second", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Data Points", "metric": "redis.total_commands_processed", "metricSource": "redis", "id": "total_commands_processed", "name": "Total Commands", "rate": true, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 } ], "ThresholdConfigs": null }, "MemoryLimit": 0, "CPUShares": 0, "PIDFile": "", "StartLevel": 0, "EmergencyShutdownLevel": 2 }, { "Name": "zencommand", "Title": "", "Version": "", "Command": "su - zenoss -c \"/opt/zenoss/bin/zencommand run -c --logfileonly --monitor {{(parent .).Name}} \"", "Description": "Run plugins locally and remotely by using a native SSH transport", "Environment": null, "Tags": [ "daemon", "collector" ], "ImageID": "zenoss/core_6.2:6.2.1_1", "Instances": { "Min": 1, "Max": 1, "Default": 0 }, "ChangeOptions": null, "Launch": "auto", "HostPolicy": "", "Hostname": "", "Privileged": false, "ConfigFiles": { "/opt/zenoss/etc/global.conf": { "Filename": "/opt/zenoss/etc/global.conf", "Owner": "zenoss:zenoss", "Permissions": "660", "Content": "# Generated by serviced\n{{range $k,$v:=contextFilter . \"global.conf.\"}}{{$k}} {{$v}}\n{{end}}" }, "/opt/zenoss/etc/zencommand.conf": { "Filename": "/opt/zenoss/etc/zencommand.conf", "Owner": "zenoss:zenoss", "Permissions": "0664", "Content": "#\n# Configuration file for zencommand\n#\n# To enable a particular option, uncomment the desired entry.\n#\n# Parameter Setting\n# --------- -------\n#\n# Host of zenhub daemon. Default is localhost.,\n# default: localhost\n#hubhost localhost\n#\n# Port zenhub listens on.Default is 8789.,\n# default: 8789\n#hubport 8789\n#\n# Username for zenhub login. Default is\n# admin., default: admin\n#hubusername admin\n#\n# Password for zenhub login. Default is\n# zenoss., default: zenoss\n#hubpassword zenoss\n#\n# Name of monitor instance to use for\n# configuration. Default is localhost.,\n# default: localhost\n#monitor localhost\n#\n# Initial time to wait for a ZenHub connection,\n# default: 30\n#initialHubTimeout 30\n#\n# Send clear events even when the most\n# recent event was also a clear event.,\n# default: False\n#allowduplicateclears False\n#\n# Send a clear event every [DUPLICATECLEARINTEVAL]\n# events., default: 0\n#duplicateclearinterval 0\n#\n# Seconds between attempts to flush events\n# to ZenHub., default: 5.0\n#eventflushseconds 5.0\n#\n# Number of events to send to ZenHubat\n# one time, default: 50\n#eventflushchunksize 50\n#\n# Maximum number of events to queue, default:\n# 5000\n#maxqueuelen 5000\n#\n# The size, in percent, of the event queue\n# when event pushback starts, default: 0.75\n#queuehighwatermark 0.75\n#\n# How often to ping zenhub, default: 30\n#zenhubpinginterval 30\n#\n# Disable event de-duplication, default: True\n#disable-event-deduplication True\n#\n# redis connection string: redis://[hostname]:[port]/[db],\n# default: %default, default:\n# redis://localhost:6379/0\n#redis-url redis://localhost:6379/0\n#\n# Number of metrics to buffer if redis\n# goes down, default: 65536\n#metricBufferSize 65536\n#\n# redis channel to which metrics are published,\n# default: metrics\n#metricsChannel metrics\n#\n# Max Number of metrics to allow in redis,\n# default: 864000000\n#maxOutstandingMetrics 864000000\n#\n# Use an alternate configuration file\n#configfile /opt/zenoss/etc/zencommand.conf\n#\n# Generate an XML file containing command-line\n# switches., default: False\n#genxmlconfigs False\n#\n# User to become when running default:zenoss,\n# default: zenoss\n#uid zenoss\n#\n# Cycle continuously on cycleInterval\n# from Zope, default: False\n#cycle False\n#\n# Launch into the background, default: False\n#daemon False\n#\n# Log to console and log file, default: False\n#duallog False\n#\n# Log to log file and not console, default:\n# False\n#logfileonly False\n#\n# output log info in HTML table format,\n# default: False\n#weblog False\n#\n# Run under a supervisor which will restart\n# it, default: False\n#watchdog False\n#\n# The path to the watchdog reporting socket\n#watchdogPath None\n#\n# Wait seconds for initial heartbeat\n#starttimeout None\n#\n# Set listener socket options. For option\n# details: man 7 socket, default: []\n#socketOption []\n#\n# Specify a device ID to monitor\n#device \n#\n# Max number of tasks to run at once,\n# default %default, default: 50\n#maxparallel 50\n#\n# How often to logs statistics of current\n# tasks, value in seconds; very verbose,\n# default: 0\n#logTaskStats 0\n#\n# How often to write internal statistics\n# value in seconds, default: 60\n#writeStatistics 60\n#\n# Max number of device configurations\n# to load at once, default %default (0\n# == all devices), default: 25\n#configsipsize 25\n#\n# Delay in seconds between device configurations\n# loading, default %default, default: 1\n#configsipdelay 1\n#\n# Show the raw RRD values. For debugging\n# purposes only., default: False\n#showrawresults False\n#\n# When a device fails to respond, increase\n# the time to check on the device until\n# this limit., default: 20\n#maxbackoffminutes 20\n#\n# Display the entire command and command-line\n# arguments, including any passwords.,\n# default: False\n#showfullcommand False\n#\n# Logging severity threshold, default: 20\n#logseverity 20\n#\n# Override the default logging path; default\n# $ZENHOME/log, default: /opt/zenoss/log\n#logpath /opt/zenoss/log\n#\n# Max size of log file in KB; default\n# 10240, default: 10240\n#maxlogsize 10240\n#\n# Max number of back up log files; default\n# 3, default: 3\n#maxbackuplogs 3\n#\n# Disable ping perspective, default: True\n#disable-ping-perspective True\n#\n# Heartbeat timeout, default: 900 sec.\n#heartbeattimeout 900\n#" } }, "Context": null, "Endpoints": [ { "Name": "zproxy", "Purpose": "import", "Protocol": "tcp", "PortNumber": 8080, "PortTemplate": "", "VirtualAddress": "", "Application": "zproxy", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "zenhub", "Purpose": "import", "Protocol": "tcp", "PortNumber": 8789, "PortTemplate": "", "VirtualAddress": "", "Application": "{{(parent (parent .)).Name}}_zenhubPB", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "CollectorRedis", "Purpose": "import_all", "Protocol": "tcp", "PortNumber": 6379, "PortTemplate": "", "VirtualAddress": "", "Application": "{{(parent .).Name}}_redis", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "controlplane_consumer", "Purpose": "import", "Protocol": "tcp", "PortNumber": 8444, "PortTemplate": "", "VirtualAddress": "", "Application": "controlplane_consumer", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null } ], "Services": [], "LogFilters": null, "Volumes": [ { "Owner": "zenoss:zenoss", "Permission": "0755", "ResourcePath": ".ssh", "ContainerPath": "/home/zenoss/.ssh", "Type": "", "InitContainerPath": "", "ExcludeFromBackups": false }, { "Owner": "zenoss:zenoss", "Permission": "0775", "ResourcePath": "var-zenpacks", "ContainerPath": "/var/zenoss", "Type": "", "InitContainerPath": "", "ExcludeFromBackups": false } ], "LogConfigs": [ { "Path": "/opt/zenoss/log/zencommand.log", "Type": "zencommand", "Filters": [ "pythondaemon" ], "LogTags": [ { "Name": "monitor", "Value": "{{(parent .).Name}}" } ], "IsAudit": false } ], "Snapshot": { "Pause": "", "Resume": "" }, "RAMCommitment": "256M", "CPUCommitment": 1, "DisableShell": false, "Runs": null, "Commands": null, "Actions": { "debug": "su - zenoss -c '${ZENHOME:-/opt/zenoss}/bin/{{.Name}} debug'", "stats": "su - zenoss -c '${ZENHOME:-/opt/zenoss}/bin/{{.Name}} stats'" }, "HealthChecks": { "redis_answering": { "Script": "/opt/zenoss/bin/healthchecks/redis_answering", "Timeout": 0, "Interval": 5, "Tolerance": 0 }, "running": { "Script": "pgrep -fu zenoss zencommand.py \u003e /dev/null", "Timeout": 0, "Interval": 5, "Tolerance": 0 }, "zenhub_answering": { "Script": "/opt/zenoss/bin/healthchecks/zenhub_answering", "Timeout": 0, "Interval": 10, "Tolerance": 0 } }, "Prereqs": null, "MonitoringProfile": { "MetricConfigs": [ { "ID": "zencommand", "Name": "zencommand internal metrics", "Description": "zencommand internal metrics", "Query": { "RequestURI": "", "Method": "", "Headers": null, "Data": "" }, "Metrics": [ { "ID": "dataPoints", "Name": "Datapoints", "Description": "Number of datapoints collected.", "Counter": false, "ResetValue": 0, "Unit": "Points", "BuiltIn": false }, { "ID": "devices", "Name": "Devices", "Description": "Number of devices.", "Counter": false, "ResetValue": 0, "Unit": "Count", "BuiltIn": false }, { "ID": "eventCount", "Name": "Event Count", "Description": "Total number of events.", "Counter": false, "ResetValue": 0, "Unit": "Events", "BuiltIn": false }, { "ID": "eventQueueLength", "Name": "Event Queue Length", "Description": "The number of events pending to be flushed from a daemon's memory queue.", "Counter": false, "ResetValue": 0, "Unit": "Events", "BuiltIn": false }, { "ID": "missedRuns", "Name": "Missed Runs", "Description": "Number of missed runs of tasks running on daemon.", "Counter": false, "ResetValue": 0, "Unit": "Runs", "BuiltIn": false }, { "ID": "queuedTasks", "Name": "Queued Tasks", "Description": "Number of tasks scheduled to be run, but are not running yet.", "Counter": false, "ResetValue": 0, "Unit": "Tasks", "BuiltIn": false }, { "ID": "runningTasks", "Name": "Running Tasks", "Description": "Number of currently running tasks.", "Counter": false, "ResetValue": 0, "Unit": "Tasks", "BuiltIn": false }, { "ID": "taskCount", "Name": "Task Count", "Description": "Total number of tasks.", "Counter": false, "ResetValue": 0, "Unit": "Tasks", "BuiltIn": false } ] } ], "GraphConfigs": [ { "id": "dataPoints", "name": "Data Points", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "Data Points", "description": "Number of datapoints collected.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Data Points", "metric": "dataPoints", "metricSource": "zencommand", "id": "dataPoints", "name": "Data Points", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 }, { "id": "devices", "name": "Devices", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "Devices", "description": "Number of devices.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Devices", "metric": "devices", "metricSource": "zencommand", "id": "devices", "name": "Devices", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 }, { "id": "eventCount", "name": "Event Count", "footer": false, "format": "%.3f", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "Event Count", "description": "Total number of events.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%.3f", "legend": "Event Count", "metric": "eventCount", "metricSource": "zencommand", "id": "eventCount", "name": "Event Count", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 }, { "id": "eventQueueLength", "name": "Event Queue Length", "footer": false, "format": "%.3f", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "Event Queue Length", "description": "The number of events pending to be flushed from a daemon's memory queue.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%.3f", "legend": "Event Queue Length", "metric": "eventQueueLength", "metricSource": "zencommand", "id": "eventQueueLength", "name": "Event Queue Length", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 }, { "id": "missedRuns", "name": "Missed Runs", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "Missed Runs", "description": "Number of missed runs of tasks running on daemon.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Missed Runs", "metric": "missedRuns", "metricSource": "zencommand", "id": "missedRuns", "name": "Missed Runs", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 }, { "id": "tasks", "name": "Tasks", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "", "description": "Number of queued, running, and total tasks.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Queued Tasks", "metric": "queuedTasks", "metricSource": "zencommand", "id": "queuedTasks", "name": "Queued Tasks", "rate": false, "rateOptions": null, "type": "line" }, { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Running Tasks", "metric": "runningTasks", "metricSource": "zencommand", "id": "runningTasks", "name": "Running Tasks", "rate": false, "rateOptions": null, "type": "line" }, { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Task Count", "metric": "taskCount", "metricSource": "zencommand", "id": "taskCount", "name": "Task Count", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 } ], "ThresholdConfigs": [ { "ID": "missedRuns.high", "Name": "Missed Runs High", "Type": "MinMax", "Description": "High number of missed runs", "AppliedTo": 0, "MetricSource": "zencommand", "DataPoints": [ "missedRuns" ], "Threshold": { "Max": "5", "Min": "" }, "EventTags": { "EventClass": "/App/Zenoss", "Explanation": "This service is missing runs", "Resolution": "Add more collectors", "Severity": 3 } } ] }, "MemoryLimit": 0, "CPUShares": 0, "PIDFile": "", "StartLevel": 0, "EmergencyShutdownLevel": 0 }, { "Name": "zenping", "Title": "", "Version": "", "Command": "su - zenoss -c \"/opt/zenoss/bin/zenping run -c --logfileonly --monitor {{(parent .).Name}} \"", "Description": "Performs high-performance, asynchronous testing of ICMP status", "Environment": null, "Tags": [ "daemon", "collector" ], "ImageID": "zenoss/core_6.2:6.2.1_1", "Instances": { "Min": 1, "Max": 1, "Default": 0 }, "ChangeOptions": null, "Launch": "auto", "HostPolicy": "", "Hostname": "", "Privileged": false, "ConfigFiles": { "/opt/zenoss/etc/global.conf": { "Filename": "/opt/zenoss/etc/global.conf", "Owner": "zenoss:zenoss", "Permissions": "660", "Content": "# Generated by serviced\n{{range $k,$v:=contextFilter . \"global.conf.\"}}{{$k}} {{$v}}\n{{end}}" }, "/opt/zenoss/etc/zenping.conf": { "Filename": "/opt/zenoss/etc/zenping.conf", "Owner": "zenoss:zenoss", "Permissions": "0664", "Content": "#\n# Configuration file for zenping\n#\n# To enable a particular option, uncomment the desired entry.\n#\n# Parameter Setting\n# --------- -------\n#\n# Host of zenhub daemon. Default is localhost.,\n# default: localhost\n#hubhost localhost\n#\n# Port zenhub listens on.Default is 8789.,\n# default: 8789\n#hubport 8789\n#\n# Username for zenhub login. Default is\n# admin., default: admin\n#hubusername admin\n#\n# Password for zenhub login. Default is\n# zenoss., default: zenoss\n#hubpassword zenoss\n#\n# Name of monitor instance to use for\n# configuration. Default is localhost.,\n# default: localhost\n#monitor localhost\n#\n# Initial time to wait for a ZenHub connection,\n# default: 30\n#initialHubTimeout 30\n#\n# Send clear events even when the most\n# recent event was also a clear event.,\n# default: False\n#allowduplicateclears False\n#\n# Send a clear event every [DUPLICATECLEARINTEVAL]\n# events., default: 0\n#duplicateclearinterval 0\n#\n# Seconds between attempts to flush events\n# to ZenHub., default: 5.0\n#eventflushseconds 5.0\n#\n# Number of events to send to ZenHubat\n# one time, default: 50\n#eventflushchunksize 50\n#\n# Maximum number of events to queue, default:\n# 5000\n#maxqueuelen 5000\n#\n# The size, in percent, of the event queue\n# when event pushback starts, default: 0.75\n#queuehighwatermark 0.75\n#\n# How often to ping zenhub, default: 30\n#zenhubpinginterval 30\n#\n# Disable event de-duplication, default: True\n#disable-event-deduplication True\n#\n# redis connection string: redis://[hostname]:[port]/[db],\n# default: %default, default:\n# redis://localhost:6379/0\n#redis-url redis://localhost:6379/0\n#\n# Number of metrics to buffer if redis\n# goes down, default: 65536\n#metricBufferSize 65536\n#\n# redis channel to which metrics are published,\n# default: metrics\n#metricsChannel metrics\n#\n# Max Number of metrics to allow in redis,\n# default: 864000000\n#maxOutstandingMetrics 864000000\n#\n# Use an alternate configuration file\n#configfile /opt/zenoss/etc/zenping.conf\n#\n# Generate an XML file containing command-line\n# switches., default: False\n#genxmlconfigs False\n#\n# User to become when running default:zenoss,\n# default: zenoss\n#uid zenoss\n#\n# Cycle continuously on cycleInterval\n# from Zope, default: False\n#cycle False\n#\n# Launch into the background, default: False\n#daemon False\n#\n# Log to console and log file, default: False\n#duallog False\n#\n# Log to log file and not console, default:\n# False\n#logfileonly False\n#\n# output log info in HTML table format,\n# default: False\n#weblog False\n#\n# Run under a supervisor which will restart\n# it, default: False\n#watchdog False\n#\n# The path to the watchdog reporting socket\n#watchdogPath None\n#\n# Wait seconds for initial heartbeat\n#starttimeout None\n#\n# Set listener socket options. For option\n# details: man 7 socket, default: []\n#socketOption []\n#\n# Specify a device ID to monitor\n#device \n#\n# Max number of tasks to run at once,\n# default %default, default: 500\n#maxparallel 500\n#\n# How often to logs statistics of current\n# tasks, value in seconds; very verbose,\n# default: 0\n#logTaskStats 0\n#\n# How often to write internal statistics\n# value in seconds, default: 60\n#writeStatistics 60\n#\n# Max number of device configurations\n# to load at once, default %default (0\n# == all devices), default: 25\n#configsipsize 25\n#\n# Delay in seconds between device configurations\n# loading, default %default, default: 1\n#configsipdelay 1\n#\n# Disable the correlator., default: True\n#disable-correlator True\n#\n# Traceroute every N ping intervals; default\n# is 5, traceroute every time a ping\n# is performed., default: 5\n#traceroute-interval 5\n#\n# Length of datapacket for zenping to\n# use (default: %default), default: 0\n#data-length 0\n#\n# Delay down events until more than this\n# many ping downs are collected in a\n# row. Default is 0 (no delay)., default: 0\n#delay-count 0\n#\n# Use ip's connected to a device for ping\n# correlation (default: %default), default:\n# disabled\n#connected-ips disabled\n#\n# ping backend to use (nmap, ping) default:\n# %default, default: nmap\n#ping-backend nmap\n#\n# Correlationbackend to use (simple, distributed)\n# default: %default, default: distributed\n#correlation-backend distributed\n#\n# Suppress ping downs using interfaces\n# on a device whose IPs may not be monitored,\n# default: False\n#connected-ip-suppress False\n#\n# Logging severity threshold, default: 20\n#logseverity 20\n#\n# Override the default logging path; default\n# $ZENHOME/log, default: /opt/zenoss/log\n#logpath /opt/zenoss/log\n#\n# Max size of log file in KB; default\n# 10240, default: 10240\n#maxlogsize 10240\n#\n# Max number of back up log files; default\n# 3, default: 3\n#maxbackuplogs 3\n#\n# Disable ping perspective, default: True\n#disable-ping-perspective True\n#\n# Heartbeat timeout, default: 900 sec.\n#heartbeattimeout 900\n#" } }, "Context": null, "Endpoints": [ { "Name": "zproxy", "Purpose": "import", "Protocol": "tcp", "PortNumber": 8080, "PortTemplate": "", "VirtualAddress": "", "Application": "zproxy", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "zenhub", "Purpose": "import", "Protocol": "tcp", "PortNumber": 8789, "PortTemplate": "", "VirtualAddress": "", "Application": "{{(parent (parent .)).Name}}_zenhubPB", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "CollectorRedis", "Purpose": "import_all", "Protocol": "tcp", "PortNumber": 6379, "PortTemplate": "", "VirtualAddress": "", "Application": "{{(parent .).Name}}_redis", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "controlplane_consumer", "Purpose": "import", "Protocol": "tcp", "PortNumber": 8444, "PortTemplate": "", "VirtualAddress": "", "Application": "controlplane_consumer", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null } ], "Services": [], "LogFilters": null, "Volumes": [ { "Owner": "zenoss:zenoss", "Permission": "0755", "ResourcePath": ".ssh", "ContainerPath": "/home/zenoss/.ssh", "Type": "", "InitContainerPath": "", "ExcludeFromBackups": false }, { "Owner": "zenoss:zenoss", "Permission": "0775", "ResourcePath": "var-zenpacks", "ContainerPath": "/var/zenoss", "Type": "", "InitContainerPath": "", "ExcludeFromBackups": false } ], "LogConfigs": [ { "Path": "/opt/zenoss/log/zenping.log", "Type": "zenping", "Filters": [ "pythondaemon" ], "LogTags": [ { "Name": "monitor", "Value": "{{(parent .).Name}}" } ], "IsAudit": false } ], "Snapshot": { "Pause": "", "Resume": "" }, "RAMCommitment": "256M", "CPUCommitment": 1, "DisableShell": false, "Runs": null, "Commands": null, "Actions": { "debug": "su - zenoss -c '${ZENHOME:-/opt/zenoss}/bin/{{.Name}} debug'", "stats": "su - zenoss -c '${ZENHOME:-/opt/zenoss}/bin/{{.Name}} stats'" }, "HealthChecks": { "redis_answering": { "Script": "/opt/zenoss/bin/healthchecks/redis_answering", "Timeout": 0, "Interval": 5, "Tolerance": 0 }, "running": { "Script": "pgrep -fu zenoss zenping.py \u003e /dev/null", "Timeout": 0, "Interval": 5, "Tolerance": 0 }, "zenhub_answering": { "Script": "/opt/zenoss/bin/healthchecks/zenhub_answering", "Timeout": 0, "Interval": 10, "Tolerance": 0 } }, "Prereqs": null, "MonitoringProfile": { "MetricConfigs": [ { "ID": "zenping", "Name": "zenping internal metrics", "Description": "zenping internal metrics", "Query": { "RequestURI": "", "Method": "", "Headers": null, "Data": "" }, "Metrics": [ { "ID": "dataPoints", "Name": "Datapoints", "Description": "Number of datapoints collected.", "Counter": false, "ResetValue": 0, "Unit": "Points", "BuiltIn": false }, { "ID": "devices", "Name": "Devices", "Description": "Number of devices.", "Counter": false, "ResetValue": 0, "Unit": "Count", "BuiltIn": false }, { "ID": "eventCount", "Name": "Event Count", "Description": "Total number of events.", "Counter": false, "ResetValue": 0, "Unit": "Events", "BuiltIn": false }, { "ID": "eventQueueLength", "Name": "Event Queue Length", "Description": "The number of events pending to be flushed from a daemon's memory queue.", "Counter": false, "ResetValue": 0, "Unit": "Events", "BuiltIn": false }, { "ID": "missedRuns", "Name": "Missed Runs", "Description": "Number of missed runs of tasks running on daemon.", "Counter": false, "ResetValue": 0, "Unit": "Runs", "BuiltIn": false }, { "ID": "queuedTasks", "Name": "Queued Tasks", "Description": "Number of tasks scheduled to be run, but are not running yet.", "Counter": false, "ResetValue": 0, "Unit": "Tasks", "BuiltIn": false }, { "ID": "runningTasks", "Name": "Running Tasks", "Description": "Number of currently running tasks.", "Counter": false, "ResetValue": 0, "Unit": "Tasks", "BuiltIn": false }, { "ID": "taskCount", "Name": "Task Count", "Description": "Total number of tasks.", "Counter": false, "ResetValue": 0, "Unit": "Tasks", "BuiltIn": false } ] } ], "GraphConfigs": [ { "id": "dataPoints", "name": "Data Points", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "Data Points", "description": "Number of datapoints collected.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Data Points", "metric": "dataPoints", "metricSource": "zenping", "id": "dataPoints", "name": "Data Points", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 }, { "id": "devices", "name": "Devices", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "Devices", "description": "Number of devices.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Devices", "metric": "devices", "metricSource": "zenping", "id": "devices", "name": "Devices", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 }, { "id": "eventCount", "name": "Event Count", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "Event Count", "description": "Total number of events.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Event Count", "metric": "eventCount", "metricSource": "zenping", "id": "eventCount", "name": "Event Count", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 }, { "id": "eventQueueLength", "name": "Event Queue Length", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "Event Queue Length", "description": "The number of events pending to be flushed from a daemon's memory queue.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Event Queue Length", "metric": "eventQueueLength", "metricSource": "zenping", "id": "eventQueueLength", "name": "Event Queue Length", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 }, { "id": "missedRuns", "name": "Missed Runs", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "Missed Runs", "description": "Number of missed runs of tasks running on daemon.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Missed Runs", "metric": "missedRuns", "metricSource": "zenping", "id": "missedRuns", "name": "Missed Runs", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 }, { "id": "tasks", "name": "Tasks", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "", "description": "Number of queued, running, and total tasks.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Queued Tasks", "metric": "queuedTasks", "metricSource": "zenping", "id": "queuedTasks", "name": "Queued Tasks", "rate": false, "rateOptions": null, "type": "line" }, { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Running Tasks", "metric": "runningTasks", "metricSource": "zenping", "id": "runningTasks", "name": "Running Tasks", "rate": false, "rateOptions": null, "type": "line" }, { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Task Count", "metric": "taskCount", "metricSource": "zenping", "id": "taskCount", "name": "Task Count", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 } ], "ThresholdConfigs": [ { "ID": "missedRuns.high", "Name": "Missed Runs High", "Type": "MinMax", "Description": "High number of missed runs", "AppliedTo": 0, "MetricSource": "zenping", "DataPoints": [ "missedRuns" ], "Threshold": { "Max": "5", "Min": "" }, "EventTags": { "EventClass": "/App/Zenoss", "Explanation": "This service is missing runs", "Resolution": "Add more collectors", "Severity": 3 } } ] }, "MemoryLimit": 0, "CPUShares": 0, "PIDFile": "", "StartLevel": 0, "EmergencyShutdownLevel": 0 }, { "Name": "zensyslog", "Title": "", "Version": "", "Command": "su - zenoss -c \"/opt/zenoss/bin/zensyslog run -c --logfileonly --monitor {{(parent .).Name}} \"", "Description": "Collects and classifies syslog events", "Environment": null, "Tags": [ "daemon", "collector" ], "ImageID": "zenoss/core_6.2:6.2.1_1", "Instances": { "Min": 1, "Max": 1, "Default": 0 }, "ChangeOptions": null, "Launch": "auto", "HostPolicy": "", "Hostname": "", "Privileged": false, "ConfigFiles": { "/opt/zenoss/etc/global.conf": { "Filename": "/opt/zenoss/etc/global.conf", "Owner": "zenoss:zenoss", "Permissions": "660", "Content": "# Generated by serviced\n{{range $k,$v:=contextFilter . \"global.conf.\"}}{{$k}} {{$v}}\n{{end}}" }, "/opt/zenoss/etc/zensyslog.conf": { "Filename": "/opt/zenoss/etc/zensyslog.conf", "Owner": "zenoss:zenoss", "Permissions": "0664", "Content": "#\n# Configuration file for zensyslog\n#\n# To enable a particular option, uncomment the desired entry.\n#\n# Parameter Setting\n# --------- -------\n#\n# Host of zenhub daemon. Default is localhost.,\n# default: localhost\n#hubhost localhost\n#\n# Port zenhub listens on.Default is 8789.,\n# default: 8789\n#hubport 8789\n#\n# Username for zenhub login. Default is\n# admin., default: admin\n#hubusername admin\n#\n# Password for zenhub login. Default is\n# zenoss., default: zenoss\n#hubpassword zenoss\n#\n# Name of monitor instance to use for\n# configuration. Default is localhost.,\n# default: localhost\n#monitor localhost\n#\n# Initial time to wait for a ZenHub connection,\n# default: 30\n#initialHubTimeout 30\n#\n# Send clear events even when the most\n# recent event was also a clear event.,\n# default: False\n#allowduplicateclears False\n#\n# Send a clear event every [DUPLICATECLEARINTEVAL]\n# events., default: 0\n#duplicateclearinterval 0\n#\n# Seconds between attempts to flush events\n# to ZenHub., default: 5.0\n#eventflushseconds 5.0\n#\n# Number of events to send to ZenHubat\n# one time, default: 50\n#eventflushchunksize 50\n#\n# Maximum number of events to queue, default:\n# 5000\n#maxqueuelen 5000\n#\n# The size, in percent, of the event queue\n# when event pushback starts, default: 0.75\n#queuehighwatermark 0.75\n#\n# How often to ping zenhub, default: 30\n#zenhubpinginterval 30\n#\n# Disable event de-duplication, default: True\n#disable-event-deduplication True\n#\n# redis connection string: redis://[hostname]:[port]/[db],\n# default: %default, default:\n# redis://localhost:6379/0\n#redis-url redis://localhost:6379/0\n#\n# Number of metrics to buffer if redis\n# goes down, default: 65536\n#metricBufferSize 65536\n#\n# redis channel to which metrics are published,\n# default: metrics\n#metricsChannel metrics\n#\n# Max Number of metrics to allow in redis,\n# default: 864000000\n#maxOutstandingMetrics 864000000\n#\n# Use an alternate configuration file\n#configfile /opt/zenoss/etc/zensyslog.conf\n#\n# Generate an XML file containing command-line\n# switches., default: False\n#genxmlconfigs False\n#\n# User to become when running default:zenoss,\n# default: zenoss\n#uid zenoss\n#\n# Cycle continuously on cycleInterval\n# from Zope, default: False\n#cycle False\n#\n# Launch into the background, default: False\n#daemon False\n#\n# Log to console and log file, default: False\n#duallog False\n#\n# Log to log file and not console, default:\n# False\n#logfileonly False\n#\n# output log info in HTML table format,\n# default: False\n#weblog False\n#\n# Run under a supervisor which will restart\n# it, default: False\n#watchdog False\n#\n# The path to the watchdog reporting socket\n#watchdogPath None\n#\n# Wait seconds for initial heartbeat\n#starttimeout None\n#\n# Set listener socket options. For option\n# details: man 7 socket, default: []\n#socketOption []\n#\n# Specify a device ID to monitor\n#device \n#\n# Max number of tasks to run at once,\n# default %default, default: 500\n#maxparallel 500\n#\n# How often to logs statistics of current\n# tasks, value in seconds; very verbose,\n# default: 0\n#logTaskStats 0\n#\n# How often to write internal statistics\n# value in seconds, default: 60\n#writeStatistics 60\n#\n# Try to parse the hostname part of a\n# syslog HEADER, default: False\n#parsehost False\n#\n# Print statistics to log every 2 secs,\n# default: False\n#stats False\n#\n# Log the original message, default: False\n#logorig False\n#\n# Human-readable (/var/log/messages) or\n# raw (wire), default: human\n#logformat human\n#\n# Minimum priority message that zensyslog\n# will accept, default: 6\n#minpriority 6\n#\n# Port number to use for syslog events,\n# default: 514\n#syslogport 514\n#\n# IP address to listen on. Default is\n# %default, default: 0.0.0.0\n#listenip 0.0.0.0\n#\n# Read from an existing connection rather\n# opening a new port.\n#useFileDescriptor None\n#\n# Don't convert the remote device's IP\n# address to a hostname., default: False\n#noreverseLookup False\n#\n# Logging severity threshold, default: 20\n#logseverity 20\n#\n# Override the default logging path; default\n# $ZENHOME/log, default: /opt/zenoss/log\n#logpath /opt/zenoss/log\n#\n# Max size of log file in KB; default\n# 10240, default: 10240\n#maxlogsize 10240\n#\n# Max number of back up log files; default\n# 3, default: 3\n#maxbackuplogs 3\n#\n# Disable ping perspective, default: True\n#disable-ping-perspective True\n#\n# Heartbeat timeout, default: 900 sec.\n#heartbeattimeout 900\n#" } }, "Context": null, "Endpoints": [ { "Name": "zproxy", "Purpose": "import", "Protocol": "tcp", "PortNumber": 8080, "PortTemplate": "", "VirtualAddress": "", "Application": "zproxy", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "zenhub", "Purpose": "import", "Protocol": "tcp", "PortNumber": 8789, "PortTemplate": "", "VirtualAddress": "", "Application": "{{(parent (parent .)).Name}}_zenhubPB", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "CollectorRedis", "Purpose": "import_all", "Protocol": "tcp", "PortNumber": 6379, "PortTemplate": "", "VirtualAddress": "", "Application": "{{(parent .).Name}}_redis", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "controlplane_consumer", "Purpose": "import", "Protocol": "tcp", "PortNumber": 8444, "PortTemplate": "", "VirtualAddress": "", "Application": "controlplane_consumer", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "syslog", "Purpose": "export", "Protocol": "udp", "PortNumber": 514, "PortTemplate": "", "VirtualAddress": "", "Application": "{{(parent .).Name}}_syslog", "ApplicationTemplate": "", "AddressConfig": { "Port": 514, "Protocol": "udp" }, "VHosts": null, "VHostList": null, "PortList": null } ], "Services": [], "LogFilters": null, "Volumes": [ { "Owner": "zenoss:zenoss", "Permission": "0755", "ResourcePath": ".ssh", "ContainerPath": "/home/zenoss/.ssh", "Type": "", "InitContainerPath": "", "ExcludeFromBackups": false }, { "Owner": "zenoss:zenoss", "Permission": "0775", "ResourcePath": "var-zenpacks", "ContainerPath": "/var/zenoss", "Type": "", "InitContainerPath": "", "ExcludeFromBackups": false } ], "LogConfigs": [ { "Path": "/opt/zenoss/log/zensyslog.log", "Type": "zensyslog", "Filters": [ "pythondaemon" ], "LogTags": [ { "Name": "monitor", "Value": "{{(parent .).Name}}" } ], "IsAudit": false } ], "Snapshot": { "Pause": "", "Resume": "" }, "RAMCommitment": "256M", "CPUCommitment": 1, "DisableShell": false, "Runs": null, "Commands": null, "Actions": { "debug": "su - zenoss -c '${ZENHOME:-/opt/zenoss}/bin/{{.Name}} debug'", "stats": "su - zenoss -c '${ZENHOME:-/opt/zenoss}/bin/{{.Name}} stats'" }, "HealthChecks": { "listening": { "Script": "nmap -oG - -Pn -sU -p 514 127.0.0.1 | grep -q 'Ports: 514'", "Timeout": 0, "Interval": 10, "Tolerance": 0 }, "redis_answering": { "Script": "/opt/zenoss/bin/healthchecks/redis_answering", "Timeout": 0, "Interval": 5, "Tolerance": 0 }, "running": { "Script": "pgrep -fu zenoss zensyslog.py \u003e /dev/null", "Timeout": 0, "Interval": 5, "Tolerance": 0 }, "zenhub_answering": { "Script": "/opt/zenoss/bin/healthchecks/zenhub_answering", "Timeout": 0, "Interval": 10, "Tolerance": 0 } }, "Prereqs": null, "MonitoringProfile": { "MetricConfigs": [ { "ID": "zensyslog", "Name": "zensyslog internal metrics", "Description": "zensyslog internal metrics", "Query": { "RequestURI": "", "Method": "", "Headers": null, "Data": "" }, "Metrics": [ { "ID": "dataPoints", "Name": "Datapoints", "Description": "Number of datapoints collected.", "Counter": false, "ResetValue": 0, "Unit": "Points", "BuiltIn": false }, { "ID": "devices", "Name": "Devices", "Description": "Number of devices.", "Counter": false, "ResetValue": 0, "Unit": "Count", "BuiltIn": false }, { "ID": "eventCount", "Name": "Event Count", "Description": "Total number of events.", "Counter": false, "ResetValue": 0, "Unit": "Events", "BuiltIn": false }, { "ID": "eventQueueLength", "Name": "Event Queue Length", "Description": "The number of events pending to be flushed from a daemon's memory queue.", "Counter": false, "ResetValue": 0, "Unit": "Events", "BuiltIn": false }, { "ID": "missedRuns", "Name": "Missed Runs", "Description": "Number of missed runs of tasks running on daemon.", "Counter": false, "ResetValue": 0, "Unit": "Runs", "BuiltIn": false }, { "ID": "queuedTasks", "Name": "Queued Tasks", "Description": "Number of tasks scheduled to be run, but are not running yet.", "Counter": false, "ResetValue": 0, "Unit": "Tasks", "BuiltIn": false }, { "ID": "runningTasks", "Name": "Running Tasks", "Description": "Number of currently running tasks.", "Counter": false, "ResetValue": 0, "Unit": "Tasks", "BuiltIn": false }, { "ID": "taskCount", "Name": "Task Count", "Description": "Total number of tasks.", "Counter": false, "ResetValue": 0, "Unit": "Tasks", "BuiltIn": false }, { "ID": "events", "Name": "Events", "Description": "", "Counter": true, "ResetValue": 0, "Unit": "Events", "BuiltIn": false } ] } ], "GraphConfigs": [ { "id": "dataPoints", "name": "Data Points", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "Data Points", "description": "Number of datapoints collected.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Data Points", "metric": "dataPoints", "metricSource": "zensyslog", "id": "dataPoints", "name": "Data Points", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 }, { "id": "devices", "name": "Devices", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "Devices", "description": "Number of devices.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Devices", "metric": "devices", "metricSource": "zensyslog", "id": "devices", "name": "Devices", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 }, { "id": "events", "name": "Events", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "Events", "description": "Events", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Queued", "metric": "events", "metricSource": "zensyslog", "id": "events", "name": "Events", "rate": true, "rateOptions": null, "type": "line" }, { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Events", "metric": "eventCount", "metricSource": "zensyslog", "id": "eventCount", "name": "Event Count", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 }, { "id": "eventQueueLength", "name": "Event Queue Length", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "Event Queue Length", "description": "The number of events pending to be flushed from a daemon's memory queue.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Event Queue Length", "metric": "eventQueueLength", "metricSource": "zensyslog", "id": "eventQueueLength", "name": "Event Queue Length", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 }, { "id": "missedRuns", "name": "Missed Runs", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "Missed Runs", "description": "Number of missed runs of tasks running on daemon.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Missed Runs", "metric": "missedRuns", "metricSource": "zensyslog", "id": "missedRuns", "name": "Missed Runs", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 }, { "id": "tasks", "name": "Tasks", "footer": false, "format": "", "returnset": "EXACT", "type": "line", "tags": null, "miny": null, "maxy": null, "yAxisLabel": "", "description": "Number of queued, running, and total tasks.", "range": { "start": "1h-ago", "end": "0s-ago" }, "datapoints": [ { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Queued Tasks", "metric": "queuedTasks", "metricSource": "zensyslog", "id": "queuedTasks", "name": "Queued Tasks", "rate": false, "rateOptions": null, "type": "line" }, { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Running Tasks", "metric": "runningTasks", "metricSource": "zensyslog", "id": "runningTasks", "name": "Running Tasks", "rate": false, "rateOptions": null, "type": "line" }, { "aggregator": "avg", "color": "", "expression": "", "fill": false, "format": "%d", "legend": "Task Count", "metric": "taskCount", "metricSource": "zensyslog", "id": "taskCount", "name": "Task Count", "rate": false, "rateOptions": null, "type": "line" } ], "builtin": false, "units": "", "base": 0 } ], "ThresholdConfigs": [ { "ID": "missedRuns.high", "Name": "Missed Runs High", "Type": "MinMax", "Description": "High number of missed runs", "AppliedTo": 0, "MetricSource": "zensyslog", "DataPoints": [ "missedRuns" ], "Threshold": { "Max": "5", "Min": "" }, "EventTags": { "EventClass": "/App/Zenoss", "Explanation": "This service is missing runs", "Resolution": "Add more collectors", "Severity": 3 } } ] }, "MemoryLimit": 0, "CPUShares": 0, "PIDFile": "", "StartLevel": 0, "EmergencyShutdownLevel": 0 } ], "LogFilters": null, "Volumes": null, "LogConfigs": null, "Snapshot": { "Pause": "", "Resume": "" }, "RAMCommitment": "", "CPUCommitment": 0, "DisableShell": false, "Runs": null, "Commands": null, "Actions": null, "HealthChecks": null, "Prereqs": null, "MonitoringProfile": { "MetricConfigs": null, "GraphConfigs": null, "ThresholdConfigs": null }, "MemoryLimit": 0, "CPUShares": 0, "PIDFile": "", "StartLevel": 0, "EmergencyShutdownLevel": 0 }, { "Name": "zenhub", "Title": "", "Version": "", "Command": "su - zenoss -c \"/opt/zenoss/bin/zenhub run -c --logfileonly --monitor {{(parent .).Name}}\"", "Description": "Zenoss ZenHub", "Environment": null, "Tags": [ "daemon", "hub" ], "ImageID": "zenoss/core_6.2:6.2.1_1", "Instances": { "Min": 1, "Max": 0, "Default": 0 }, "ChangeOptions": null, "Launch": "auto", "HostPolicy": "", "Hostname": "", "Privileged": false, "ConfigFiles": { "/opt/zenoss/etc/global.conf": { "Filename": "/opt/zenoss/etc/global.conf", "Owner": "zenoss:zenoss", "Permissions": "660", "Content": "# Generated by serviced\n{{range $k,$v:=contextFilter . \"global.conf.\"}}{{$k}} {{$v}}\n{{end}}" }, "/opt/zenoss/etc/zenhub.conf": { "Filename": "/opt/zenoss/etc/zenhub.conf", "Owner": "zenoss:zenoss", "Permissions": "0664", "Content": "#\n# Configuration file for zenhub\n#\n# To enable a particular option, uncomment the desired entry.\n#\n# Parameter Setting\n# --------- -------\n#\n# Use an alternate configuration file\n#configfile /opt/zenoss/etc/zenhub.conf\n#\n# Generate an XML file containing command-line\n# switches., default: False\n#genxmlconfigs False\n#\n# User to become when running default:zenoss,\n# default: zenoss\n#uid zenoss\n#\n# Cycle continuously on cycleInterval\n# from Zope, default: False\n#cycle False\n#\n# Launch into the background, default: False\n#daemon False\n#\n# Log to console and log file, default: False\n#duallog False\n#\n# Log to log file and not console, default:\n# False\n#logfileonly False\n#\n# output log info in HTML table format,\n# default: False\n#weblog False\n#\n# Run under a supervisor which will restart\n# it, default: False\n#watchdog False\n#\n# The path to the watchdog reporting socket\n#watchdogPath None\n#\n# Wait seconds for initial heartbeat\n#starttimeout None\n#\n# Set listener socket options. For option\n# details: man 7 socket, default: []\n#socketOption []\n#\n# Port to use for XML-based Remote Procedure\n# Calls (RPC), default: 8081\n#xmlrpcport 8081\n#\n# Port to use for Twisted's pb service,\n# default: 8789\n#pbport 8789\n#\n# File where passwords are stored, default:\n# /opt/zenoss/etc/hubpasswd\n#passwd /opt/zenoss/etc/hubpasswd\n#\n# Name of the distributed monitor this\n# hub runs on, default: localhost\n#monitor localhost\n#\n# Number of worker instances to handle\n# requests, default: 2\n#workers 2\n#\n# Relative process priority for hub workers\n# (%default), default: 5\n#hubworker-priority 5\n#\n# Run higher priority jobs before lower\n# priority ones, default: False\n#prioritize False\n#\n# Allow any priority job to run on any\n# worker, default: False\n#anyworker False\n#\n# Number of worker instances to reserve\n# for handling events, default: 1\n#workers-reserved-for-events 1\n#\n# Maximum number of remote calls a worker\n# can run before restarting, default: 200\n#worker-call-limit 200\n#\n# Interval at which to poll invalidations\n# (default: %default), default: 30\n#invalidation-poll-interval 30\n#\n# URL for posting internal metrics (default:\n# %default), default:\n# http://localhost:8080/api/metrics/store\n#metrics-store-url http://localhost:8080/api/metrics/store\n#\n# Username to use when publishing to metric\n# consumer. Default is %default\n#zauth-username None\n#\n# Password to use when publishing to metric\n# consumer. Default is %default\n#zauth-password None\n#\n# Number of workers dedicated to processing\n# invalidations, default: 1\n#invalidationworkers 1\n#\n# The relative process priority of invalidation\n# workers (%default), default: 10\n#invalidationworker-priority 10\n#\n# Number of invalidations each worker\n# will deal with at a time, default: 100\n#invalidationchunksize 100\n#\n# Number of invalidations to process before\n# shutting down, default: 5000\n#invalidationlimit 5000\n#\n# Optional override of the hub's identifier\n# (defaults to 'host:port'). A 'random'\n# setting changes the identifier on every\n# startup; set in HA scenarios.\n#identifier None\n#\n# Use memcache to reduce the number of\n# collector updates, default: True\n#no-memcache True\n#\n# Minimum period to delay configuration\n# updates for batching, default: 30\n#min-update-delay-seconds 30\n#\n# Maximum period to delay configuration\n# updates, default: 300\n#max-update-delay-seconds 300\n#\n# Period to delay configuration deletions\n# for batching, default: 30\n#delete-delay-seconds 30\n#\n# The maximum number of unacknowledged\n# messages that will be delivered to\n# the invalidations consumer., default: 1000\n#invalidation-prefetch-count 1000\n#\n# Logging severity threshold, default: 20\n#logseverity 20\n#\n# Override the default logging path; default\n# $ZENHOME/log, default: /opt/zenoss/log\n#logpath /opt/zenoss/log\n#\n# Max size of log file in KB; default\n# 10240, default: 10240\n#maxlogsize 10240\n#\n# Max number of back up log files; default\n# 3, default: 3\n#maxbackuplogs 3\n#\n# root object for data load (i.e. /zport/dmd),\n# default: /zport/dmd\n#zodb-dataroot /zport/dmd\n#\n# in memory cachesize default: 1000, default:\n# 1000\n#zodb-cachesize 1000\n#\n# hostname of the MySQL server for ZODB,\n# default: 127.0.0.1\n#zodb-host 127.0.0.1\n#\n# port of the MySQL server for ZODB, default:\n# 3306\n#zodb-port 3306\n#\n# user of the MySQL server for ZODB, default:\n# zenoss\n#zodb-user zenoss\n#\n# password of the MySQL server for ZODB,\n# default: zenoss\n#zodb-password zenoss\n#\n# Name of database for MySQL object store,\n# default: zodb\n#zodb-db zodb\n#\n# Name of socket file for MySQL server\n# connection if host is localhost\n#zodb-socket None\n#\n# memcached servers to use for object\n# cache (eg. 127.0.0.1:11211), default:\n# 127.0.0.1:11211\n#zodb-cacheservers 127.0.0.1:11211\n#\n# Specify the number of seconds a database\n# connection will wait to acquire a database\n# 'commit' lock before failing (defaults\n# to 30 seconds if not specified)., default:\n# 30\n#zodb-commit-lock-timeout 30\n#\n# Heartbeat timeout, default: 900 sec.\n#heartbeattimeout 900\n#\n" } }, "Context": null, "Endpoints": [ { "Name": "mariadb", "Purpose": "import", "Protocol": "", "PortNumber": 0, "PortTemplate": "", "VirtualAddress": "", "Application": "zodb_.*", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "memcached", "Purpose": "import", "Protocol": "tcp", "PortNumber": 11211, "PortTemplate": "", "VirtualAddress": "", "Application": "memcached", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "redis", "Purpose": "import", "Protocol": "tcp", "PortNumber": 6379, "PortTemplate": "", "VirtualAddress": "", "Application": "redis", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "rabbitmq", "Purpose": "import", "Protocol": "", "PortNumber": 0, "PortTemplate": "", "VirtualAddress": "", "Application": "rabbitmq.*", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "zep", "Purpose": "import", "Protocol": "tcp", "PortNumber": 8084, "PortTemplate": "", "VirtualAddress": "", "Application": "zep", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "zenhub", "Purpose": "export", "Protocol": "tcp", "PortNumber": 8789, "PortTemplate": "", "VirtualAddress": "", "Application": "{{(parent .).Name}}_zenhubPB", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "zenhub_rpc", "Purpose": "export", "Protocol": "tcp", "PortNumber": 8081, "PortTemplate": "", "VirtualAddress": "", "Application": "{{(parent .).Name}}_zenhubXMLRpc", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "controlplane_consumer", "Purpose": "import", "Protocol": "tcp", "PortNumber": 8444, "PortTemplate": "", "VirtualAddress": "", "Application": "controlplane_consumer", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null }, { "Name": "zproxy", "Purpose": "import", "Protocol": "tcp", "PortNumber": 8080, "PortTemplate": "", "VirtualAddress": "", "Application": "zproxy", "ApplicationTemplate": "", "AddressConfig": { "Port": 0, "Protocol": "" }, "VHosts": null, "VHostList": null, "PortList": null } ], "Services": [], "LogFilters": null, "Volumes": [ { "Owner": "zenoss:zenoss", "Permission": "0755", "ResourcePath": ".ssh", "ContainerPath": "/home/zenoss/.ssh", "Type": "", "InitContainerPath": "", "ExcludeFromBackups": false }, { "Owner": "zenoss:zenoss", "Permission": "0775", "ResourcePath": "var-zenpacks", "ContainerPath": "/var/zenoss", "Type": "", "InitContainerPath": "", "ExcludeFromBackups": false } ], "LogConfigs": [ { "Path": "/opt/zenoss/log/zenhub.log", "Type": "zenhub", "Filters": null, "LogTags": null, "IsAudit": false } ], "Snapshot": { "Pause": "", "Resume": "" }, "RAMCommitment": "256M", "CPUCommitment": 1, "DisableShell": false, "Runs": null, "Commands": null, "Actions": { "debug": "su - zenoss -c '${ZENHOME:-/opt/zenoss}/bin/{{.Name}} debug'", "stats": "su - zenoss -c '${ZENHOME:-/opt/zenoss}/bin/{{.Name}} stats'" }, "HealthChecks": { "central_query_answering": { "Script": "/opt/zenoss/bin/healthchecks/query_answering", "Timeout": 0, "Interval": 10, "Tolerance": 0 }, "mariadb_answering": { "Script": "/opt/zenoss/bin/healthchecks/mariadb_answering", "Timeout": 0, "Interval": 10, "Tolerance": 0 }, "metric_consumer_answering": { "Script": "/opt/zenoss/bin/healthchecks/metrics_answering", "Timeout": 0, "Interval": 10, "Tolerance": 0 }, "rabbit_answering": { "Script": "/opt/zenoss/bin/healthchecks/rabbit_answering {{(getContext . \"global.conf.amqpuser\")}} {{(getContext . \"global.conf.amqppassword\")}}", "Timeout": 0, "Interval": 10, "Tolerance": 0 }, "redis_answering": { "Script": "/opt/zenoss/bin/healthchecks/redis_answering", "Timeout": 0, "Interval": 5, "Tolerance": 0 }, "rpc_listening": { "Script": "nmap -oG - -Pn -sS -p 8081 127.0.0.1 | grep -q 8081/open", "Timeout": 0, "Interval": 10, "Tolerance": 0 }, "running": { "Script": "pgrep -fu zenoss zenhub.py \u003e /dev/null", "Timeout": 0, "Interval": 5, "Tolerance": 0 }, "solr_answering": { "Script": "curl -A 'Solr answering healthcheck' -s http://localhost:8983/solr/zenoss_model/admin/ping?wt=json | grep -q '\"status\":\"OK\"'", "Timeout": 0, "Interval": 10, "Tolerance": 0 }, "stable_workers": { "Script": "/opt/zenoss/bin/healthchecks/zenhub/stable_workers", "Timeout": 0, "Interval": 5, "Tolerance": 0 }, "workers_running": { "Script": "pgrep -fu zenoss zenhubworker.py \u003e /dev/null", "Timeout": 0, "Interval": 5, "Tolerance": 0 }, "zep_answering": { "Script": "/opt/zenoss/bin/healthchecks/zep_answering", "Timeout": 0, "Interval": 10, "Tolerance": 0 } }, "Prereqs": [ { "Name": "MariaDB connectivity", "Script": "su - zenoss -c '/opt/zenoss/bin/python /opt/zenoss/Products/ZenUtils/ZenDB.py --usedb zodb --execsql=\";\"'" }, { "Name": "Solr answering", "Script": "curl -A 'Solr answering prereq' -s http://localhost:8983/solr/zenoss_model/admin/ping?wt=json | grep -q '\"status\":\"OK\"'" } ], "MonitoringProfile": { "MetricConfigs": null, "GraphConfigs": null, "ThresholdConfigs": null }, "MemoryLimit": 0, "CPUShares": 0, "PIDFile": "", "StartLevel": 2, "EmergencyShutdownLevel": 0 } ], "LogFilters": null, "Volumes": null, "LogConfigs": null, "Snapshot": { "Pause": "", "Resume": "" }, "RAMCommitment": "", "CPUCommitment": 0, "DisableShell": false, "Runs": null, "Commands": null, "Actions": null, "HealthChecks": null, "Prereqs": null, "MonitoringProfile": { "MetricConfigs": null, "GraphConfigs": null, "ThresholdConfigs": null }, "MemoryLimit": 0, "CPUShares": 0, "PIDFile": "", "StartLevel": 0, "EmergencyShutdownLevel": 0 } ], "LogFilters": null, "Volumes": null, "LogConfigs": null, "Snapshot": { "Pause": "", "Resume": "" }, "RAMCommitment": "", "CPUCommitment": 0, "DisableShell": false, "Runs": null, "Commands": null, "Actions": null, "HealthChecks": null, "Prereqs": null, "MonitoringProfile": { "MetricConfigs": null, "GraphConfigs": null, "ThresholdConfigs": null }, "MemoryLimit": 0, "CPUShares": 0, "PIDFile": "", "StartLevel": 0, "EmergencyShutdownLevel": 0 } ], "LogFilters": null, "Volumes": null, "LogConfigs": null, "Snapshot": { "Pause": "", "Resume": "" }, "RAMCommitment": "", "CPUCommitment": 0, "DisableShell": false, "Runs": null, "Commands": null, "Actions": null, "HealthChecks": null, "Prereqs": null, "MonitoringProfile": { "MetricConfigs": null, "GraphConfigs": null, "ThresholdConfigs": null }, "MemoryLimit": 0, "CPUShares": 0, "PIDFile": "", "StartLevel": 0, "EmergencyShutdownLevel": 0 } ], "LogFilters": { "glog": "#\n# This filter should be used for all logs produced by the glog and/or logrus libraries.\n# It is a little different from other filters because it has to juggle\n# rules for lines that might be in one of two different formats\n#\n\n# If it doesn't start with a single-char (log level) and a 2-digit month, or\n# \"time=\", then it is part of the same log message\nmultiline {\n pattern =\u003e \"^([IEWF]0?[1-9]|1[0-2] |time=)\"\n negate =\u003e true\n what =\u003e \"previous\"\n}\n\ngrok {\n # Match lines of either the glog format:\n # 'I0721 15:10:59.685251 00048 main.go:319] Serve: getConnection'\n # or the logrus format:\n # 'time=\"2017-08-17T15:55:30Z\" level=info msg=starting numprocs=4'\n match =\u003e { \"message\" =\u003e [\n \"time=\\\"%{TIMESTAMP_ISO8601:datetime}\\\" level=%{LOGLEVEL:loglevel} msg=%{GREEDYDATA:logrus_msg}\",\n \"(?\u003cloglevel\u003e[IEWF])%{MONTHNUM:month}%{MONTHDAY:day} %{TIME:time} %{NUMBER:thread} %{USER:logger}:%{INT:linenumber}\\] %{GREEDYDATA:glog_msg}\"\n ]}\n break_on_match =\u003e true\n}\n\nif [logrus_msg] {\n # normalize logrus-formatted data\n mutate {\n gsub =\u003e [\n \"loglevel\", \"info\", \"INFO\",\n \"loglevel\", \"warning\", \"WARN\",\n \"loglevel\", \"error\", \"ERROR\",\n \"loglevel\", \"debug\", \"DEBUG\",\n \"loglevel\", \"fatal\", \"FATAL\",\n \"loglevel\", \"panic\", \"FATAL\"\n ]\n gsub =\u003e [ \"datetime\", \"T\", \" \" ]\n remove_field =\u003e [ \"logrus_msg\" ]\n }\n\n date {\n match =\u003e [ \"datetime\", \"yyyy-MM-dd HH:mm:ssZ\" ]\n remove_field =\u003e [\"datetime\"]\n }\n} else {\n # normalize glog-formatted data\n mutate {\n gsub =\u003e [\n \"loglevel\", \"^I$\", \"INFO\",\n \"loglevel\", \"^W$\", \"WARN\",\n \"loglevel\", \"^E$\", \"ERROR\",\n \"loglevel\", \"^F$\", \"FATAL\"\n ]\n add_field =\u003e {\n \"datetime\" =\u003e \"%{month}-%{day} %{time}\"\n }\n remove_field =\u003e [ \"month\", \"day\", \"time\", \"glog_msg\" ]\n }\n\n date {\n match =\u003e [ \"datetime\", \"MM-dd HH:mm:ss.SSSSSS\" ]\n remove_field =\u003e [\"datetime\"]\n }\n}\n", "hbasedaemon": "#\n# This filter should be used for all HBase and OpenTsdb daemons\n#\n\n# assuming if it doesn't start with a timestamp then it is a newline\nmultiline {\n pattern =\u003e \"^%{TIMESTAMP_ISO8601} \"\n negate =\u003e true\n what =\u003e \"previous\"\n}\n\ngrok {\n break_on_match =\u003e true\n\n # Matches lines of the form:\n #\n #\n # Note that a specialized form of the USERNAME pattern is used to capture 'logger' since java logger may include \\\"/\\\" and \\\"$\\\"\n # TODO: when we upgrade to a later version of grok, we could use something like this instead:\n # pattern_definitions =\u003e { \\\"JAVA_LOGGER\\\", \\\"[a-zA-Z0-9._\\\\$\\\\-\\\\/]+\\\" }\n # match =\u003e [ \\\"message\\\", \\\"...%{JAVA_LOGGER:logger}...\\\"]\n #\n match =\u003e [ \"message\", \"%{TIMESTAMP_ISO8601:datetime}%{SPACE}%{LOGLEVEL:loglevel}%{SPACE}\\[%{GREEDYDATA:thread}\\]%{SPACE}(?\u003clogger\u003e[a-zA-Z0-9._\\$\\-\\/]+)\\:* %{GREEDYDATA:message}\" ]\n}\n\nmutate {\n # Convert \"ss,SSS\" to \"ss.SSS\" in case we hit some older/different logs\n gsub =\u003e [ \"datetime\", \"\\,\", \".\" ]\n}\n\n# This filter parses the datetime field into a time value,\n# removes the datetime field from the data, and\n# then uses the parsed value as the \\\"@timestamp\\\" for the message.\ndate {\n match =\u003e [ \"datetime\", \"yyyy-MM-dd HH:mm:ss.SSS\" ]\n remove_field =\u003e [\"datetime\"]\n}\n", "mariadb": "multiline {\n pattern =\u003e \"^(Version|InnoDB|%{YEAR}%{MONTHNUM2}%{MONTHDAY})\"\n negate =\u003e true\n what =\u003e \"previous\"\n}\n\ngrok {\n match =\u003e { \"message\" =\u003e [\n \"^%{YEAR:year}%{MONTHNUM2:month}%{MONTHDAY:day} %{TIME:time} (\\[%{WORD:loglevel}\\])?\",\n \"^(Version|InnoDB)\"\n ]}\n break_on_match =\u003e true\n}\nif ![loglevel] {\n mutate {\n add_field =\u003e {\n \"loglevel\" =\u003e \"INFO\"\n }\n }\n}\nmutate {\n gsub =\u003e [\n \"loglevel\", \"(?i)note\", \"INFO\",\n \"loglevel\", \"(?i)info\", \"INFO\",\n \"loglevel\", \"(?i)warning\", \"WARN\",\n \"loglevel\", \"(?i)error\", \"ERROR\",\n \"loglevel\", \"(?i)debug\", \"DEBUG\",\n \"loglevel\", \"(?i)fatal\", \"FATAL\",\n \"loglevel\", \"(?i)panic\", \"FATAL\"\n ]\n}\nif [year] {\n mutate {\n add_field =\u003e {\n \"datetime\" =\u003e \"20%{year}-%{month}-%{day} %{time}\"\n }\n remove_field =\u003e [ \"month\", \"day\", \"year\", \"time\" ]\n }\n date {\n match =\u003e [ \"datetime\", \"yyyy-MM-dd HH:mm:ss\" ]\n remove_field =\u003e [\"datetime\"]\n }\n}\n", "nginx_access": "# nginx access logs\n\ngrok {\n # Matches messages like: 172.17.42.1 - - 31/Aug/2017:15:49:05 +0000 \"HEAD /ping/status/performance HTTP/1.1\" 200 0 \"-\" \"Query_answering is_ready\"\n\n match =\u003e [ \"message\", \"^%{IP:client} - %{DATA:user}%{SPACE}\\[%{HTTPDATE:datetime}\\] \\\"%{WORD:method} %{DATA:request} HTTP/%{NUMBER:httpversion}\\\" %{POSINT:response} %{NUMBER:duration} %{QUOTEDSTRING:referrer} %{GREEDYDATA:agent}\" ]\n}\n\n# Elasticsearch doesn't like the format of datetime.\n# This filter parses the datetime field into a time value,\n# removes the datetime field from the data, and\n# then uses the parsed value as the \"@timestamp\" for the message.\ndate {\n match =\u003e [ \"datetime\", \"dd/MMM/YYYY:HH:mm:ss Z\" ]\n remove_field =\u003e [\"datetime\"]\n}\n\nmutate {\n gsub =\u003e [ \"referrer\", \"\\\"\", \"\" ]\n gsub =\u003e [ \"referrer\", \"\\-\", \"\" ]\n gsub =\u003e [ \"agent\", \"\\\"\", \"\" ]\n gsub =\u003e [ \"user\", \"\\-\", \"Anonymous\" ]\n}\n", "nginx_error": "# nginx error logs\n\ngrok {\n # Matches messages like the messages below:\n # 2017/08/30 20:17:37 [error] 85#0: *41 upstream prematurely closed connection while reading response header from upstream, client: 172.17.42.1, server: , request: \"HEAD /ping/status/performance HTTP/1.1\", upstream: \"http://127.0.0.1:8888/ping/status\", host: \"localhost:8080\"\n # 2017/08/31 14:58:09 [notice] 4802#0: signal process started\n # request: \"GET /ws/metrics/store HTTP/1.1\"\n # upstream: \"http://127.0.0.1:8443/ws/metrics/store\"\n\n match =\u003e { \"message\" =\u003e [\n \"^(?\u003cdatetime\u003e%{YEAR}[./-]%{MONTHNUM}[./-]%{MONTHDAY}[- ]%{TIME}) \\[%{LOGLEVEL:loglevel}\\] %{POSINT:pid}#%{NUMBER:tid}: %{DATA:message}\",\n \"request: \\\"%{WORD:method} %{URIPATH:request} %{WORD}\\/%{NUMBER}\\\"\",\n \"upstream: \\\"%{URI:upstream}\\\"\"\n ]}\n break_on_match =\u003e false\n}\n\n# Elasticsearch doesn't like the format of datetime.\n# This filter parses the datetime field into a time value,\n# removes the datetime field from the data, and\n# then uses the parsed value as the \"@timestamp\" for the message.\ndate {\n match =\u003e [ \"datetime\", \"YYYY/MM/dd HH:mm:ss\" ]\n remove_field =\u003e [\"datetime\"]\n}\n\nmutate {\n gsub =\u003e [ \"loglevel\", \"debug\", \"DEBUG\" ]\n gsub =\u003e [ \"loglevel\", \"info\", \"INFO\" ]\n gsub =\u003e [ \"loglevel\", \"notice\", \"INFO\" ]\n gsub =\u003e [ \"loglevel\", \"warn\", \"WARN\" ]\n gsub =\u003e [ \"loglevel\", \"alert\", \"WARN\" ]\n gsub =\u003e [ \"loglevel\", \"error\", \"ERROR\" ]\n gsub =\u003e [ \"loglevel\", \"crit\", \"ERROR\" ]\n gsub =\u003e [ \"loglevel\", \"emerg\", \"FATAL\" ]\n}\n", "pythondaemon": "#\n# This filter should be used for all Zenoss python daemons.\n#\n\n# assuming if it doesn't start with a number (date) then it is a newline\nmultiline {\n pattern =\u003e \"^%{TIMESTAMP_ISO8601} \"\n negate =\u003e true\n what =\u003e \"previous\"\n}\n\n# extract the timestamp, loglevel and logger from the message\ngrok {\n # Matches lines of the form: 2017-06-28 16:30:49.588 INFO zen.zencommand: Connecting to localhost:8789\n match =\u003e [ \"message\", \"%{TIMESTAMP_ISO8601:datetime} %{WORD:loglevel} %{USERNAME:logger}\\:* %{GREEDYDATA:message}\" ]\n}\n\nmutate {\n # Convert \"ss,SSS\" to \"ss.SSS\" in case we hit some older/different logs\n gsub =\u003e [ \"datetime\", \"\\,\", \".\" ]\n}\n\n# This filter parses the datetime field into a time value,\n# removes the datetime field from the data, and\n# then uses the parsed value as the \"@timestamp\" for the message.\ndate {\n match =\u003e [ \"datetime\", \"yyyy-MM-dd HH:mm:ss.SSS\" ]\n remove_field =\u003e [\"datetime\"]\n}\n", "rabbitmq": "#\n# This filter should be used for all RabbitMQ operational logs (rabbit@rbt[0-9]*.log - rabbit@rbt[0-9]*-sasl.log)\n#\n\n# If it doesn't start with a \"=\" then it is part of the same log message\nmultiline {\n pattern =\u003e \"^=\"\n negate =\u003e true\n what =\u003e \"previous\"\n}\n\ngrok {\n # Match this line of the form: \"=INFO REPORT==== 2-Aug-2017::14:30:35 ===\"\n match =\u003e { \"message\" =\u003e \"^=%{WORD:loglevel} REPORT==== %{MONTHDAY:day}-%{MONTH:month}-%{YEAR:year}::%{TIME:time} ===.*$\" }\n}\n\n# interpret message header text as \"severity\"\nmutate {\n gsub =\u003e [\n \"loglevel\", \"WARNING\", \"WARN\",\n \"loglevel\", \"CRASH\", \"ERROR\",\n \"loglevel\", \"SUPERVISOR\", \"ERROR\"\n ]\n\n add_field =\u003e {\n \"datetime\" =\u003e \"%{month}-%{day}-%{year} %{time}\"\n }\n remove_field =\u003e [ \"month\", \"day\", \"time\" ]\n}\n\n# This filter parses the datetime field into a time value,\n# removes the datetime field from the data, and\n# then uses the parsed value as the \\\"@timestamp\\\" for the message.\ndate {\n match =\u003e [ \"datetime\", \"MMM-dd-yyyy HH:mm:ss\" ]\n remove_field =\u003e [\"datetime\"]\n}\n\n", "redis": "# Any line not starting with a positive integer is a new line in a multiline message.\n\nmultiline {\n pattern =\u003e \"^%{POSINT}\"\n negate =\u003e true\n what =\u003e \"previous\"\n}\n\ngrok {\n break_on_match =\u003e true\n\n # Match messages like this:\n # 34:M 30 Aug 16:48:40.292 # Server started, Redis version 3.2.3\n\n match =\u003e [ \"message\", \"%{POSINT:pid}:(?\u003crole\u003e[XCSM]) %{DATA:datetime} (?\u003cloglevel\u003e[.\\-*#]) %{DATA:message}\" ]\n}\n\nmutate {\n gsub =\u003e [ \"role\", \"X\", \"sentinel\" ]\n gsub =\u003e [ \"role\", \"C\", \"RDB/AOF writing child\" ]\n gsub =\u003e [ \"role\", \"S\", \"slave\" ]\n gsub =\u003e [ \"role\", \"M\", \"master\" ]\n gsub =\u003e [ \"loglevel\", \"\\.\", \"DEBUG\" ]\n gsub =\u003e [ \"loglevel\", \"\\-\", \"TRACE\" ]\n gsub =\u003e [ \"loglevel\", \"\\*\", \"INFO\" ]\n gsub =\u003e [ \"loglevel\", \"#\", \"WARN\" ]\n}\n\n# This filter parses the datetime field into a time value,\n# removes the datetime field from the data, and\n# then uses the parsed value as the \"@timestamp\" for the message.\n\ndate {\n match =\u003e [ \"datetime\", \"d MMM HH:mm:ss.SSS\", \"dd MMM HH:mm:ss.SSS\" ]\n remove_field =\u003e [\"datetime\"]\n}\n", "solr": "multiline {\n pattern =\u003e \"^%{TIMESTAMP_ISO8601}\"\n negate =\u003e true\n what =\u003e \"previous\"\n}\n\ngrok {\n break_on_match =\u003e true\n\n#Match messages like this:\n#2017-08-28 16:49:40.897 INFO (coreZkRegister-1-thread-1-processing-n:172.17.0.13:8983_solr x:zenoss_model_shard1_replica1 s:shard1 c:zenoss_model r:core_node1) [c:zenoss_model s:shard1 r:core_node1 x:zenoss_model_shard1_replica1] o.a.s.c.ShardLeaderElectionContext Found all replicas participating in election, clear LIR\n\tmatch =\u003e [ \"message\", \"%{TIMESTAMP_ISO8601:datetime}%{SPACE}%{LOGLEVEL:loglevel}%{SPACE}%{SPACE}\\(%{DATA:thread}\\)%{SPACE}%{DATA:message}\" ]\n}\n\nmutate {\n # Convert \"ss,SSS\" to \"ss.SSS\" in case we hit some older/different logs\n gsub =\u003e [ \"datetime\", \"\\,\", \".\" ]\n}\n\n# This filter parses the datetime field into a time value,\n# removes the datetime field from the data, and\n# then uses the parsed value as the \\\"@timestamp\\\" for the message.\ndate {\n match =\u003e [ \"datetime\", \"yyyy-MM-dd HH:mm:ss.SSS\" ]\n remove_field =\u003e [\"datetime\"]\n}\n", "supervisord": "#\n# This filter is named supervisord, but it's actually specific to the Zenoss\n# python audit logger.\n#\n\nmultiline {\n pattern =\u003e \"^%{TIMESTAMP_ISO8601} \"\n negate =\u003e true\n what =\u003e \"previous\"\n}\n\ngrok {\n # The Zenoss audit logger allows for a wide variety of name=value pairs.\n # The list below may not be inclusive of all them, but these are at least a\n # reasonable majority.\n match =\u003e { \"message\" =\u003e [\n \"kind=%{QUOTEDSTRING:kind}\",\n \"action=%{QUOTEDSTRING:action}\",\n \"user=%{USERNAME:user}\",\n \"daemon=%{QUOTEDSTRING:daemon}\",\n \"parameters=%{QUOTEDSTRING:parameters}\",\n \"source=%{QUOTEDSTRING:source}\",\n \"process=%{QUOTEDSTRING:process}\",\n \"logname=%{USERNAME:logname}\",\n \"zenpack=%{USERNAME:zenpack}\",\n \"ipaddress=%{IP:ipaddress}\",\n \"device_name=%{QUOTEDSTRING:device_name}\",\n \"%{TIMESTAMP_ISO8601:datetime} %{WORD:loglevel} %{GREEDYDATA:message}\"\n ]}\n break_on_match =\u003e false\n}\n\nmutate {\n # remove literal 'T' from datetime to make parsing in the next step easier\n gsub =\u003e [ \"datetime\", \"T\", \" \" ]\n\n # Don't leave embeded quotes\n gsub =\u003e [ \"kind\", \"\\\"\", \"\" ]\n gsub =\u003e [ \"action\", \"\\\"\", \"\" ]\n gsub =\u003e [ \"daemon\", \"\\\"\", \"\" ]\n gsub =\u003e [ \"parameters\", \"\\\"\", \"\" ]\n gsub =\u003e [ \"source\", \"\\\"\", \"\" ]\n gsub =\u003e [ \"process\", \"\\\"\", \"\" ]\n gsub =\u003e [ \"device_name\", \"\\\"\", \"\" ]\n}\n\n# This filter parses the datetime field into a time value,\n# removes the datetime field from the data, and\n# then uses the parsed value as the \"@timestamp\" for the message.\ndate {\n match =\u003e [ \"datetime\", \"yyyy-MM-dd HH:mm:ss\" ]\n remove_field =\u003e [\"datetime\"]\n}\n", "z2_access_logs": "#\n# This filter should be used for all Zope access logs.\n# For Zope operational logs, see zope.conf.\n#\n\n# strip the brackets out of the timestamps so that it parses easier\nmutate {\n gsub =\u003e [ \"message\", \"\\[\", \"\" ]\n gsub =\u003e [ \"message\", \"\\]\", \"\" ]\n}\n\ngrok {\n # Matches messages like: 127.0.0.1 - Anonymous 10/Jul/2017:17:49:01 +0000 \"GET /zport/ruok HTTP/1.1\" 200 178 \"\" \"zenapi answering healthcheck\"\n match =\u003e [ \"message\", \"%{IP:client} - %{WORD:user}%{SPACE}%{HTTPDATE:datetime} \\\"%{WORD:method} %{DATA:request} HTTP/%{NUMBER:httpversion}\\\" %{NUMBER:response} %{NUMBER:duration} %{QUOTEDSTRING:referrer} %{GREEDYDATA:agent}\" ]\n}\n\n# Elasticsearch doesn't like the format of datetime.\n# This filter parses the datetime field into a time value,\n# removes the datetime field from the data, and\n# then uses the parsed value as the \"@timestamp\" for the message.\ndate {\n match =\u003e [ \"datetime\", \"dd/MMM/YYYY:HH:mm:ss Z\" ]\n remove_field =\u003e [\"datetime\"]\n}\n\nmutate {\n # Don't leave embeded quotes for referrer and agent fields\n gsub =\u003e [ \"referrer\", \"\\\"\", \"\" ]\n gsub =\u003e [ \"agent\", \"\\\"\", \"\" ]\n}\n", "zappdaemon": "#\n# This filter should be used for all Zenoss Java-based applications built\n# around the Zapp libary.\n#\n\n# assuming if it doesn't start with a loglevel then it is a newline\nmultiline {\n pattern =\u003e \"^%{LOGLEVEL} \"\n negate =\u003e true\n what =\u003e \"previous\"\n}\n\ngrok {\n break_on_match =\u003e true\n\n # Matches lines of the form: DEBUG [2014-01-02 11:49:24,788] org.zenoss.metrics.reporter.ZenossMetricsReporter: Posting 593 metrics\n #\n # Note that a specialized form of the USERNAME pattern is used to capture 'logger' since java logger may include \\\"/\\\" and \\\"$\\\"\n # TODO: when we upgrade to a later version of grok, we could use something like this instead:\n # pattern_definitions =\u003e { \\\"JAVA_LOGGER\\\", \\\"[a-zA-Z0-9._\\\\$\\\\-\\\\/]+\\\" }\n # match =\u003e [ \\\"message\\\", \\\"...%{JAVA_LOGGER:logger}...\\\"]\n #\n match =\u003e [ \"message\", \"%{LOGLEVEL:loglevel}%{SPACE}\\[%{TIMESTAMP_ISO8601:datetime}\\] (?\u003clogger\u003e[a-zA-Z0-9._\\$\\-\\/]+)\\:* %{GREEDYDATA:message}\" ]\n\n # An alternate match for debugging scenarios where Maven started the app\n match =\u003e [ \"message\", \"\\[%{LOGLEVEL:loglevel}\\] %{GREEDYDATA:message}\"]\n}\n\nmutate {\n # Convert \"ss,SSS\" to \"ss.SSS\" in case we hit some older/different logs\n gsub =\u003e [ \"datetime\", \"\\,\", \".\" ]\n}\n\n# This filter parses the datetime field into a time value,\n# removes the datetime field from the data, and\n# then uses the parsed value as the \\\"@timestamp\\\" for the message.\ndate {\n match =\u003e [ \"datetime\", \"yyyy-MM-dd HH:mm:ss.SSS\" ]\n remove_field =\u003e [\"datetime\"]\n}\n", "zeneventserver": "#\n# This filter should be used for zeneventserver logs.\n#\n\n# new lines start with any of these:\n# Example 1: \"2013-10-31\"\n# This one will happen but not explicitly (see below for more details)\n# Example 2: \"[INFO]\"\nmultiline {\n pattern =\u003e \"^[0-9]*-[0-9]*-[0-9]*\"\n negate =\u003e true\n what =\u003e \"previous\"\n}\n\ngrok {\n break_on_match =\u003e true\n\n # Matches lines of the form:\n # Example 1: 2013-10-31T06:52:44.215 [INDEXER_EVENT_SUMMARY] ERROR org.springframework.transaction.interceptor.TransactionInterceptor - Application exception overridden by rollback exception\n # Example 2: 2017-09-13 15:20:59.803:INFO:oejs.AbstractConnector:Started SelectChannelConnector@0.0.0.0:8084 STARTING, Started SelectChannelConnector@0.0.0.0:8084 STARTING\n # Example 3: [INFO] Recreating index for table event_archive, Recreating index for table event_archive\n #\n # Note that a specialized form of the USERNAME pattern is used to capture 'logger' since java logger may include \"/\" and \"$\"\n # TODO: when we upgrade to a later version of grok, we could use something like this instead:\n # pattern_definitions =\u003e { \"JAVA_LOGGER\", \"[a-zA-Z0-9._\\$\\-\\/]+\" }\n # match =\u003e [ \"message\", \"...%{JAVA_LOGGER:logger}...\"]\n #\n match =\u003e [ \"message\", \"%{TIMESTAMP_ISO8601:datetime} \\[%{GREEDYDATA:thread}\\] %{LOGLEVEL:loglevel}%{SPACE}(?\u003clogger\u003e[a-zA-Z0-9._\\$\\-\\/]+) - %{GREEDYDATA:message}\"]\n\n # The following catches messages from some of the jars in zeneventserver which log with a slightly different format\n match =\u003e [ \"message\", \"%{TIMESTAMP_ISO8601:datetime}\\:%{LOGLEVEL:loglevel}\\:(?\u003clogger\u003e[a-zA-Z0-9._\\$\\-\\/]+)\\:%{GREEDYDATA:message}\"]\n\n # An alternate match for debugging scenarios where Maven started the app\n match =\u003e [ \"message\", \"\\[%{LOGLEVEL:loglevel}\\] %{GREEDYDATA:message}\"]\n}\n\n# Only mutate datetime if we actually have a datetime field.\nif [datetime] {\n mutate {\n # remove literal 'T' from datetime to make parsing in the next step easier\n gsub =\u003e [ \"datetime\", \"T\", \" \" ]\n }\n\n # This filter parses the datetime field into a time value,\n # removes the datetime field from the data, and\n # then uses the parsed value as the \"@timestamp\" for the message.\n date {\n match =\u003e [ \"datetime\", \"yyyy-MM-dd HH:mm:ss.SSS\" ]\n remove_field =\u003e [\"datetime\"]\n }\n}\n", "zeneventserver-stdio": "#\n# This filter should be used for zeneventserver-stdio logs.\n#\n\n# New lines start with a date.\n# (We get some messages from stdout logback that are timestamp. This will roll those up under the last valid line.)\nmultiline {\n pattern =\u003e \"^\\s|[0-9]*-[0-9]*-[0-9]*\"\n negate =\u003e true\n what =\u003e \"previous\"\n}\n\ngrok {\n # Matches: [2017-07-06 17:16:23.807:INFO:zeneventserver:Initializing Spring root WebApplicationContex]\n match =\u003e { \"message\" =\u003e \"^%{YEAR:year}-%{MONTHNUM:month}-%{MONTHDAY:day} %{TIME:time}.%{INT:milliseconds}:%{WORD:loglevel}\" }\n}\n\n# form the full datetime.\nmutate {\n add_field =\u003e {\n \"datetime\" =\u003e \"%{year}-%{month}-%{day} %{time}.%{milliseconds}\"\n }\n\n remove_field =\u003e [ \"year\", \"month\", \"day\", \"time\", \"milliseconds\" ]\n}\n\n# This filter parses the datetime field into a time value,\n# removes the datetime field from the data, and\n# then uses the parsed value as the \"@timestamp\" for the message.\ndate {\n match =\u003e [ \"datetime\", \"yyyy-MM-dd HH:mm:ss.SSS\" ]\n remove_field =\u003e [ \"datetime\" ]\n}\n", "zookeeper": "#\n# This filter should be used for zookeeper logs.\n#\n\n# New lines start with a date. All other lines are rolled into the previous line.\nmultiline {\n pattern =\u003e \"^%{YEAR}-%{MONTHNUM}-%{MONTHDAY}\"\n negate =\u003e true\n what =\u003e \"previous\"\n}\n\ngrok {\n # Matches: [2017-08-24 13:20:37,311 [myid:] - INFO [main:ZooKeeperServer@726] - tickTime set to 2000]\n match =\u003e { \"message\" =\u003e [\n \"^%{YEAR:year}-%{MONTHNUM:month}-%{MONTHDAY:day} %{TIME:time},%{INT:milliseconds} \\[%{DATA:myid}\\] - %{WORD:loglevel}[ ]+\\[%{DATA:thread}\\] - \",\n \"^JMX enabled by %{GREEDYDATA:header_msg}\",\n \"^Using config: %{GREEDYDATA:header_msg}\"\n ]}\n break_on_match =\u003e true\n}\n\n# Drop the two header messages completely, but keep any other messages.\nif [header_msg] {\n drop { }\n} else {\n mutate {\n add_field =\u003e {\n \"datetime\" =\u003e \"%{year}-%{month}-%{day} %{time}.%{milliseconds}\"\n }\n \n remove_field =\u003e [ \"year\", \"month\", \"day\", \"time\", \"milliseconds\", \"myid\" ]\n }\n \n # This filter parses the datetime field into a time value,\n # removes the datetime field from the data, and\n # then uses the parsed value as the \"@timestamp\" for the message.\n date {\n match =\u003e [ \"datetime\", \"yyyy-MM-dd HH:mm:ss.SSS\" ]\n remove_field =\u003e [ \"datetime\" ]\n }\n}", "zope": "#\n# This filter should be used for all Zope operational logs.\n# For Zope access logs, see z2_access_logs.conf.\n#\n\nif [message] == \"------\" {\n drop { }\n}\n\n# assuming if it doesn't start with a number (date) then it is a newline\nmultiline {\n pattern =\u003e \"^%{TIMESTAMP_ISO8601} \"\n negate =\u003e true\n what =\u003e \"previous\"\n}\n\n# extract the timestamp, loglevel and logger from the message\ngrok {\n # Matches lines of the form: 2013-10-31T06:10:54 INFO zen.zenutils.functioncache: initializing FunctionCache\n match =\u003e [ \"message\", \"%{TIMESTAMP_ISO8601:datetime} %{WORD:loglevel} %{USERNAME:logger}\\:* %{GREEDYDATA:message}\" ]\n}\n\nmutate {\n # remove literal 'T' from datetime to make parsing in the next step easier\n gsub =\u003e [ \"datetime\", \"T\", \" \" ]\n}\n\n# This filter parses the datetime field into a time value,\n# removes the datetime field from the data, and\n# then uses the parsed value as the \"@timestamp\" for the message.\ndate {\n match =\u003e [ \"datetime\", \"yyyy-MM-dd HH:mm:ss\" ]\n remove_field =\u003e [\"datetime\"]\n}\n" }, "Volumes": [ { "Owner": "zenoss:zenoss", "Permission": "0775", "ResourcePath": "zproxy", "ContainerPath": "/opt/zenoss/var/zproxy", "Type": "tmp", "InitContainerPath": "", "ExcludeFromBackups": false } ], "LogConfigs": [ { "Path": "/opt/zenoss/zproxy/logs/access.log", "Type": "zproxy", "Filters": [ "nginx_access" ], "LogTags": null, "IsAudit": false }, { "Path": "/opt/zenoss/zproxy/logs/error.log", "Type": "zproxy", "Filters": [ "nginx_error" ], "LogTags": null, "IsAudit": false } ], "Snapshot": { "Pause": "", "Resume": "" }, "RAMCommitment": "256M", "CPUCommitment": 1, "DisableShell": false, "Runs": null, "Commands": null, "Actions": null, "HealthChecks": { "answering": { "Script": "/opt/zenoss/bin/healthchecks/zproxy_answering", "Timeout": 0, "Interval": 5, "Tolerance": 0 }, "ready": { "Script": "curl -A 'Zenoss ready healthcheck' --output /dev/null --silent --write-out \"%{http_code}\" http://localhost:8080/robots.txt | grep 200 \u003e/dev/null", "Timeout": 0, "Interval": 30, "Tolerance": 0 }, "running": { "Script": "pgrep -fu zenoss nginx \u003e/dev/null", "Timeout": 0, "Interval": 5, "Tolerance": 0 } }, "Prereqs": null, "MonitoringProfile": { "MetricConfigs": null, "GraphConfigs": null, "ThresholdConfigs": null }, "MemoryLimit": 0, "CPUShares": 0, "PIDFile": "", "StartLevel": 2, "EmergencyShutdownLevel": 0 } ], "ConfigFiles": null, "ServicedVersion": { "Version": "1.4.0", "GoVersion": "go1.7.4", "Date": "Tue_Apr_04_20:05:27_UTC_2017", "Gitcommit": "988080d-dirty", "Gitbranch": "HEAD", "Buildtag": "jenkins-ControlCenter-develop-merge-rpm-build-26", "Release": "" }, "TemplateVersion": { "branch": "unknown", "commit": "unknown", "repo": "unknown", "tag": "unknown" } }