All Projects → cloudflare → Alertmanager2es

cloudflare / Alertmanager2es

Licence: apache-2.0
Receives HTTP webhook notifications from AlertManager and inserts them into an Elasticsearch index for searching and analysis

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to Alertmanager2es

Grafana
The open and composable observability and data visualization platform. Visualize metrics, logs, and traces from multiple sources like Prometheus, Loki, Elasticsearch, InfluxDB, Postgres and many more.
Stars: ✭ 45,930 (+26449.13%)
Mutual labels:  analytics, elasticsearch, monitoring, prometheus, alerting
Hastic Server
Hastic data management server for analyzing patterns and anomalies from Grafana
Stars: ✭ 292 (+68.79%)
Mutual labels:  analytics, elasticsearch, monitoring, prometheus, alerting
Netdata
Real-time performance monitoring, done right! https://www.netdata.cloud
Stars: ✭ 57,056 (+32880.35%)
Mutual labels:  analytics, monitoring, prometheus, alerting
K8s
Important production-grade Kubernetes Ops Services
Stars: ✭ 253 (+46.24%)
Mutual labels:  elasticsearch, monitoring, prometheus
Awesome Prometheus Alerts
🚨 Collection of Prometheus alerting rules
Stars: ✭ 3,323 (+1820.81%)
Mutual labels:  monitoring, prometheus, alerting
Unsee
Alert dashboard for Prometheus Alertmanager
Stars: ✭ 700 (+304.62%)
Mutual labels:  monitoring, prometheus, alerting
Prom2teams
prom2teams is an HTTP server built with Python that receives alert notifications from a previously configured Prometheus Alertmanager instance and forwards it to Microsoft Teams using defined connectors
Stars: ✭ 122 (-29.48%)
Mutual labels:  monitoring, prometheus, alerting
Example Prometheus Nodejs
Prometheus monitoring example with Node.js
Stars: ✭ 249 (+43.93%)
Mutual labels:  monitoring, prometheus, alerting
Homer7 Docker
HOMER 7 Docker Images
Stars: ✭ 47 (-72.83%)
Mutual labels:  elasticsearch, monitoring, prometheus
Graylog Plugin Metrics Reporter
Graylog Metrics Reporter Plugins
Stars: ✭ 71 (-58.96%)
Mutual labels:  elasticsearch, monitoring, prometheus
Homer App
HOMER 7.x Front-End and API Server
Stars: ✭ 88 (-49.13%)
Mutual labels:  elasticsearch, monitoring, prometheus
Awesome Monitoring
INFRASTRUCTURE、OPERATION SYSTEM and APPLICATION monitoring tools for Operations.
Stars: ✭ 356 (+105.78%)
Mutual labels:  elasticsearch, monitoring, prometheus
Karma
Alert dashboard for Prometheus Alertmanager
Stars: ✭ 1,007 (+482.08%)
Mutual labels:  monitoring, prometheus, alerting
Ciao
HTTP checks & tests (private & public) monitoring - check the status of your URL
Stars: ✭ 1,322 (+664.16%)
Mutual labels:  monitoring, prometheus, alerting
Prometheus
The Prometheus monitoring system and time series database.
Stars: ✭ 40,114 (+23087.28%)
Mutual labels:  monitoring, prometheus, alerting
Openuba
A robust, and flexible open source User & Entity Behavior Analytics (UEBA) framework used for Security Analytics. Developed with luv by Data Scientists & Security Analysts from the Cyber Security Industry. [PRE-ALPHA]
Stars: ✭ 127 (-26.59%)
Mutual labels:  analytics, elasticsearch
Rabbitmq Prometheus
A minimalistic Prometheus exporter of core RabbitMQ metrics
Stars: ✭ 124 (-28.32%)
Mutual labels:  monitoring, prometheus
Alerting Kibana Plugin
📟 Open Distro for Elasticsearch Kibana Alerting Plugin
Stars: ✭ 131 (-24.28%)
Mutual labels:  monitoring, alerting
Tenderly Cli
CLI tool for Smart Contract error tracking, monitoring and alerting.
Stars: ✭ 138 (-20.23%)
Mutual labels:  monitoring, alerting
Iopipe Js Core
Observe and develop serverless apps with confidence on AWS Lambda with Tracing, Metrics, Profiling, Monitoring, and more.
Stars: ✭ 123 (-28.9%)
Mutual labels:  analytics, monitoring

alertmanager2es

alertmanager2es receives HTTP webhook notifications from AlertManager and inserts them into an Elasticsearch index for searching and analysis. It runs as a daemon.

The alerts are stored in Elasticsearch as alert groups.

Rationale

It can be useful to see which alerts fired over a given time period, and perform historical analysis of when and where alerts fired. Having this data can help:

  • tune alerting rules
  • understand the impact of an incident
  • understand which alerts fired during an incident

It might have been possible to configure Alertmanager to send the alert groups to Elasticsearch directly, if not for the fact that Elasticsearch does not support unsigned integers at the time of writing. Alertmanager uses an unsigned integer for the groupKey field, which alertmanager2es converts to a string.

Limitations

  • alertmanager2es will not capture silenced or inhibited alerts; the alert notifications stored in Elasticsearch will closely resemble the notifications received by a human.
  • Kibana does not display arrays of objects well (the alert groupings use an array), so you may find some irregularities when exploring the alert data in Kibana. We have not found this to be a significant limitation, and it is possible to query alert labels stored within the array.

Prerequisites

To use alertmanager2es, you'll need:

To build alertmanager2es, you'll need:

Building

go get -u github.com/cloudflare/alertmanager2es
cd $GOPATH/src/github.com/cloudflare/alertmanager2es
make

Configuration

alertmanager2es usage

alertmanager2es is configured using commandline flags. It is assumed that alertmanager2es has unrestricted access to your Elasticsearch cluster.

alertmanager2es does not perform any user authentication.

Run ./alertmanager2es -help to view the configurable commandline flags.

Example Alertmanager configuration

Receiver configuration

- name: alertmanager2es
  webhook_configs:
    - url: https://alertmanager2es.example.com/webhook

Route configuration

By omitting a matcher, this route will match all alerts:

- receiver: alertmanager2es
  continue: true

Example Elasticsearch template

Apply this Elasticsearch template before you configure alertmanager2es to start sending data:

{
  "template": "alertmanager-2*",
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas": 1,
    "index.refresh_interval": "10s",
    "index.query.default_field": "groupLabels.alertname"
  },
  "mappings": {
    "_default_": {
      "_all": {
        "enabled": false
      },
      "properties": {
        "@timestamp": {
          "type": "date",
          "doc_values": true
        }
      },
      "dynamic_templates": [
        {
          "string_fields": {
            "match": "*",
            "match_mapping_type": "string",
            "mapping": {
              "type": "string",
              "index": "not_analyzed",
              "ignore_above": 1024,
              "doc_values": true
            }
          }
        }
      ]
    }
  }
}

We rotate our index once a month, since there's not enough data to warrant daily rotation in our case. Therefore our index name looks like:

alertmanager-200601

We anchor the template name with -2 to avoid inadvertently matching other indices, e.g. alertmanager-foo-200601. This of course assumes that you will no longer care to index your alerts in the year 3000.

Failure modes

alertmanager2es will return a HTTP 500 (Internal Server Error) if it encounters a non-2xx response from Elasticsearch. Therefore if Elasticsearch is down, alertmanager2es will respond to Alertmanager with a HTTP 500. No retries are made as Alertmanager has its own retry logic.

Both the HTTP server exposed by alertmanager2es and the HTTP client that connects to Elasticsearch have read and write timeouts of 10 seconds.

Metrics

alertmanager2es exposes Prometheus metrics on /metrics.

Example Elasticsearch queries

alerts.labels.alertname:"Disk_Likely_To_Fill_Next_4_Days"

Contributions

Pull requests, comments and suggestions are welcome.

Please see CONTRIBUTING.md for more information.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].