Releases: cloudflare/alertmanager2es
Releases · cloudflare/alertmanager2es
v0.1.0
0.0.2
Initial release
Send AlertManager notifications to Elasticsearch Add a new service, `alertmanager2es`, which receives [HTTP webhook notifications][] from [AlertManager][] and inserts them into an [Elasticsearch][] index for searching and analysis. Notifications are received on the `/webhook` endpoint. Prometheus metrics are exposed on `/metrics`. Note that this service will not capture silenced or inhibited alerts currently. I used a custom type for `groupKey` so that the `groupKey` field can be marshalled into JSON as a string, since Elasticsearch does not currently support unsigned integers: https://github.com/elastic/elasticsearch/issues/13951 I tested extensively to try to map the integer to a string using Elasticsearch's mappings, which I succeeded in doing, however Kibana then failed to display the documents because Elasticsearch's highlighting could not handle the unsigned integer stored in `_source`: RemoteTransportException[[Eternal Brain][172.17.0.2:9300][indices:data/read/search[phase/query+fetch]]]; nested: FetchPhaseExecutionException[Fetch Failed [Failed to highlight field [alerts.labels.decoded_pem_md5]]]; nested: IllegalStateException[No matching token for number_type [BIG_INTEGER]]; Caused by: FetchPhaseExecutionException[Fetch Failed [Failed to highlight field [alerts.labels.decoded_pem_md5]]]; nested: IllegalStateException[No matching token for number_type [BIG_INTEGER]]; at org.elasticsearch.search.highlight.PlainHighlighter.highlight(PlainHighlighter.java:123) at org.elasticsearch.search.highlight.HighlightPhase.hitExecute(HighlightPhase.java:140) at org.elasticsearch.search.fetch.FetchPhase.execute(FetchPhase.java:188) at org.elasticsearch.search.SearchService.executeFetchPhase(SearchService.java:490) at org.elasticsearch.search.action.SearchServiceTransportAction$SearchQueryFetchTransportHandler.messageReceived(SearchServiceTransportAction.java:392) at org.elasticsearch.search.action.SearchServiceTransportAction$SearchQueryFetchTransportHandler.messageReceived(SearchServiceTransportAction.java:389) at org.elasticsearch.transport.TransportRequestHandler.messageReceived(TransportRequestHandler.java:33) at org.elasticsearch.transport.RequestHandlerRegistry.processMessageReceived(RequestHandlerRegistry.java:77) at org.elasticsearch.transport.TransportService$4.doRun(TransportService.java:376) at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) The dependencies for this code are vendored using gvt. [AlertManager]: https://github.com/prometheus/alertmanager [Elasticsearch]: https://www.elastic.co/products/elasticsearch [HTTP webhook]: https://prometheus.io/docs/alerting/configuration/#webhook-receiver-<webhook_config>