diff --git a/api.example.yml b/api.example.yml index 2515760..20d8a72 100644 --- a/api.example.yml +++ b/api.example.yml @@ -13,17 +13,27 @@ redis: dbid: 0 # Redis client connection pool size connection_limit: 512 -graphite: - # If true, graphite sender will be enabled. - enabled: true - # If true, runtime stats will be captured and sent to graphite. Note: It takes to call stoptheworld() with configured "graphite.interval" to capture runtime stats (https://golang.org/src/runtime/mstats.go) - runtime_stats: false - # Graphite relay URI, format: ip:port - uri: "graphite-relay:2003" - # Moira metrics prefix. Use 'prefix: {hostname}' to use hostname autoresolver. - prefix: DevOps.moira - # Metrics sending interval - interval: 60s + # Allow reading data from slave replicas + allow_slave_reads: true + # Delete metrics older than this value from Redis + metrics_ttl: 3h +telemetry: + # Common port for all telemetry data: Prometheus scraping, pprof, etc. + listen: ":8091" + pprof: + # If true, pprof will be enabled on common telemetry port. + enabled: false + graphite: + # If true, graphite sender will be enabled. + enabled: true + # If true, runtime stats will be captured and sent to graphite. Note: It takes to call stoptheworld() with configured "graphite.interval" to capture runtime stats (https://golang.org/src/runtime/mstats.go) + runtime_stats: false + # Graphite relay URI, format: ip:port + uri: "graphite-relay:2003" + # Moira metrics prefix. Use 'prefix: {hostname}' to use hostname autoresolver. + prefix: DevOps.moira + # Metrics sending interval + interval: 60s api: # Api local network address. Default is ':8081' so api will be available at http://moira.company.com:8081/api listen: ":8081" @@ -39,6 +49,8 @@ web: - type: mail label: E-mail validation: "^.+@.+\\..+$" + - type: msteams + label: Microsoft Teams - type: pushover label: Pushover placeholder: "Pushover user key" @@ -48,8 +60,30 @@ web: placeholder: "Slack #channel or @user" - type: telegram label: Telegram - placeholder: "#channel, @username or group" - help: "### To make things work you should:\n### In personal chat:\n - start conversation with bot [@YourMoiraBot](https://t.me/YourMoiraBot);\n - execute command `/start`;\n - type your login in above field as `@login`.\n\n### In group chat:\n - invite bot [@YourMoiraBot](https://t.me/YourMoiraBot) into chat;\n - execute command `/start@YourMoiraBot`;\n - bot will send you chat name, you should type it without extra characters in above field.\n\n### In channel:\n - add bot [@YourMoiraBot](https://t.me/YourMoiraBot) into channel;\n - promote bot as channel administrator;\n - type channel name in above field as `#channel`.\n" + placeholder: "#public_channel, %private_channel, @username or group" + help: | + ### To make things work you should: + ### In personal chat: + - start conversation with bot [@YourMoiraBot](https://t.me/YourMoiraBot); + - execute command `/start`; + - type your login in above field as `@login`. + + ### In group chat: + - invite bot [@YourMoiraBot](https://t.me/YourMoiraBot) into chat; + - execute command `/start@YourMoiraBot`; + - bot will send you chat name, you should type it without extra characters in above field. + + ### In public channel: + - add bot [@YourMoiraBot](https://t.me/YourMoiraBot) into channel; + - promote bot as channel administrator; + - type channel name in above field as `#channel`. + + ### In private channel: + - add bot [@YourMoiraBot](https://t.me/YourMoiraBot) into the channel; + - promote bot as channel administrator; + - open your private channel on the [web](https://web.telegram.org/#/im); + - get channel id from URL (e.g., `https://web.telegram.org/#/im?p=c1494975744_17340166617136722341`) between `c` and `_`; + - type channel id in the above field as `%1494975744`. - type: twilio sms label: Twilio SMS validation: "^\\+79\\d{9}$" @@ -92,5 +126,7 @@ remote: # Min period to perform triggers re-check. # Note: Reducing of this value leads to increasing of CPU and memory usage values and extra load on Graphite HTTP API check_interval: 60s + # Don't fetch metrics older than this value from remote storage + metrics_ttl: 168h # Maximum timeout for HTTP-request made to Graphite HTTP API - timeout: 60s \ No newline at end of file + timeout: 60s diff --git a/checker.example.yml b/checker.example.yml index 452801a..ee86b79 100644 --- a/checker.example.yml +++ b/checker.example.yml @@ -13,17 +13,27 @@ redis: dbid: 0 # Redis client connection pool size connection_limit: 512 -graphite: - # If true, graphite sender will be enabled. - enabled: true - # If true, runtime stats will be captured and sent to graphite. Note: It takes to call stoptheworld() with configured "graphite.interval" to capture runtime stats (https://golang.org/src/runtime/mstats.go) - runtime_stats: false - # Graphite relay URI, format: ip:port - uri: "graphite-relay:2003" - # Moira metrics prefix. Use 'prefix: {hostname}' to use hostname autoresolver. - prefix: DevOps.moira - # Metrics sending interval - interval: 60s + # Allow reading data from slave replicas + allow_slave_reads: true + # Delete metrics older than this value from Redis + metrics_ttl: 3h +telemetry: + # Common port for all telemetry data: Prometheus scraping, pprof, etc. + listen: ":8091" + pprof: + # If true, pprof will be enabled on common telemetry port. + enabled: false + graphite: + # If true, graphite sender will be enabled. + enabled: true + # If true, runtime stats will be captured and sent to graphite. Note: It takes to call stoptheworld() with configured "graphite.interval" to capture runtime stats (https://golang.org/src/runtime/mstats.go) + runtime_stats: false + # Graphite relay URI, format: ip:port + uri: "graphite-relay:2003" + # Moira metrics prefix. Use 'prefix: {hostname}' to use hostname autoresolver. + prefix: DevOps.moira + # Metrics sending interval + interval: 60s checker: # Period for every trigger to perform forced check on nodata_check_interval: 60s @@ -34,8 +44,6 @@ checker: # You can change this behaviour using option below. This can reduce CPU usage on your server. # Lazy triggers checker works if lazy_triggers_check_interval > check_interval. We recommend setting it to 10m. lazy_triggers_check_interval: 10m - # Time interval to store metrics. Note: Increasing of this value leads to increasing of Redis memory consumption value - metrics_ttl: 3h # Period for every trigger to cancel forced check (greater than 'NoDataCheckInterval') if no metrics were received stop_checking_interval: 30s # Equals to the number of processor cores found on Moira host by default or when variable is defined as 0. @@ -57,6 +65,8 @@ remote: # Min period to perform triggers re-check. # Note: Reducing of this value leads to increasing of CPU and memory usage values and extra load on Graphite HTTP API check_interval: 60s + # Don't fetch metrics older than this value from remote storage + metrics_ttl: 168h # Maximum timeout for HTTP-request made to Graphite HTTP API timeout: 60s log: diff --git a/filter.example.yml b/filter.example.yml index 1926c33..16f75ff 100644 --- a/filter.example.yml +++ b/filter.example.yml @@ -13,17 +13,27 @@ redis: dbid: 0 # Redis client connection pool size connection_limit: 512 -graphite: - # If true, graphite sender will be enabled. - enabled: true - # If true, runtime stats will be captured and sent to graphite. Note: It takes to call stoptheworld() with configured "graphite.interval" to capture runtime stats (https://golang.org/src/runtime/mstats.go) - runtime_stats: false - # Graphite relay URI, format: ip:port - uri: "graphite-relay:2003" - # Moira metrics prefix. Use 'prefix: {hostname}' to use hostname autoresolver. - prefix: DevOps.moira - # Metrics sending interval - interval: 60s + # Allow reading data from slave replicas + allow_slave_reads: true + # Delete metrics older than this value from Redis + metrics_ttl: 3h +telemetry: + # Common port for all telemetry data: Prometheus scraping, pprof, etc. + listen: ":8091" + pprof: + # If true, pprof will be enabled on common telemetry port. + enabled: false + graphite: + # If true, graphite sender will be enabled. + enabled: true + # If true, runtime stats will be captured and sent to graphite. Note: It takes to call stoptheworld() with configured "graphite.interval" to capture runtime stats (https://golang.org/src/runtime/mstats.go) + runtime_stats: false + # Graphite relay URI, format: ip:port + uri: "graphite-relay:2003" + # Moira metrics prefix. Use 'prefix: {hostname}' to use hostname autoresolver. + prefix: DevOps.moira + # Metrics sending interval + interval: 60s filter: # Metrics listener uri listen: ":2003" @@ -37,6 +47,8 @@ filter: # Defines number of threads to match incoming graphite-metrics. # Equals to the number of processor cores found on Moira host by default or when variable is defined as 0. max_parallel_matches: 0 + # Period in which patterns will be reloaded from Redis + patterns_update_period: 1s log: log_file: stdout log_level: info diff --git a/notifier.example.yml b/notifier.example.yml index cc1cba4..7bfae3b 100644 --- a/notifier.example.yml +++ b/notifier.example.yml @@ -13,17 +13,34 @@ redis: dbid: 0 # Redis client connection pool size connection_limit: 512 -graphite: - # If true, graphite sender will be enabled. - enabled: true - # If true, runtime stats will be captured and sent to graphite. Note: It takes to call stoptheworld() with configured "graphite.interval" to capture runtime stats (https://golang.org/src/runtime/mstats.go) - runtime_stats: false - # Graphite relay URI, format: ip:port - uri: "graphite-relay:2003" - # Moira metrics prefix. Use 'prefix: {hostname}' to use hostname autoresolver. - prefix: DevOps.moira - # Metrics sending interval - interval: 60s + # Allow reading data from slave replicas + allow_slave_reads: true + # Delete metrics older than this value from Redis + metrics_ttl: 3h +telemetry: + # Common port for all telemetry data: Prometheus scraping, pprof, etc. + listen: ":8091" + pprof: + # If true, pprof will be enabled on common telemetry port. + enabled: false + graphite: + # If true, graphite sender will be enabled. + enabled: true + # If true, runtime stats will be captured and sent to graphite. Note: It takes to call stoptheworld() with configured "graphite.interval" to capture runtime stats (https://golang.org/src/runtime/mstats.go) + runtime_stats: false + # Graphite relay URI, format: ip:port + uri: "graphite-relay:2003" + # Moira metrics prefix. Use 'prefix: {hostname}' to use hostname autoresolver. + prefix: DevOps.moira + # Metrics sending interval + interval: 60s +image_store: + # AWS S3 bucket to store images + s3: + access_key_id: "myaccesskeyid" + access_key: "myaccesskey" + region: "eu-central-1" + bucket: "moira" notifier: # Soft timeout to start retrying to send notification after single failed attempt sender_timeout: 10s @@ -38,6 +55,9 @@ notifier: # List of senders, every element has "type" field (one of ["pushover", "slack", "mail", "telegram", "twilio sms", "twilio voice", "script"]) # Every type of sender has additional config fields senders: + - type: msteams + #the max amount of events you want to be sent to your channel, -1 for unlimited, any other positive value to limit events + max_events: -1 - type: pushover # Api token for your pushover channel, for more info see https://pushover.net/api#registration api_token: ... @@ -90,6 +110,8 @@ notifier: user: ... password: ... - type: pagerduty + # Configured image storage to store plots images + image_store: "s3" - type: opsgenie api_key: ... - type: victorops @@ -134,5 +156,7 @@ remote: # Min period to perform triggers re-check. # Note: Reducing of this value leads to increasing of CPU and memory usage values and extra load on Graphite HTTP API check_interval: 60s + # Don't fetch metrics older than this value from remote storage + metrics_ttl: 168h # Maximum timeout for HTTP-request made to Graphite HTTP API - timeout: 60s \ No newline at end of file + timeout: 60s diff --git a/requirements.txt b/requirements.txt index f22e1cb..19c1e6b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ Pillow -Sphinx<=1.6.7 +Sphinx==1.8.5 sphinx-rtd-theme sphinxcontrib-httpdomain sphinxcontrib-images diff --git a/source/_static/web-ui-example.png b/source/_static/web-ui-example.png index 1114d48..6024f0a 100644 Binary files a/source/_static/web-ui-example.png and b/source/_static/web-ui-example.png differ diff --git a/source/conf.py b/source/conf.py index 33ecd4d..fc8a5bd 100644 --- a/source/conf.py +++ b/source/conf.py @@ -74,9 +74,9 @@ # built documents. # # The short X.Y version. -version = '2.5' +version = '2.6' # The full version, including alpha/beta/rc tags. -release = '2.5.1' +release = '2.6.0' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/source/installation/configuration.rst b/source/installation/configuration.rst index 55e1975..ad36845 100644 --- a/source/installation/configuration.rst +++ b/source/installation/configuration.rst @@ -125,7 +125,7 @@ Web contact fields: .. image:: ../_static/web-ui-example.png :alt: WEB UI example - :width: 596 + :width: 575 Remote API ----------