Alertproxy receive webhooks from Prometheus alertmanager.For each alert into webhook do build new web request with url and body based on setting templates mapped to alert object. Alertproxy forward new request.
Now all forward requests send only POST method with application/json body in UTF-8 encoding.docker run --privileged=true -e "TZ=Europe/Minsk" -h alertproxy -d -v /opt/alertproxy/logs:/app/logs -v /opt/alertproxy/cfg:/app/cfg -p 8107:8100 --name alertproxy mihalby/alertproxy:latest
Dont forget make you configs in ./cfg folder.
Download .zip from Releases unzip, change configs, make file AlertProxy as executable and run ./AlertProxy
Download archive from Releases, change configs and run exe file.
Base application config SSL - configure ssl. Now service work only with ssl. Place you pfx to ./cfg directory. You will find fake pfx file in repo ./cfg, password 123123.
example:
{
"SSL": {
"password": "123123",
"port": 8100,
"sertificateName": "aspncer.pfx"
},
"AllowedHosts": "*"
}
Targets - templates to forwards. Url and Body is mustache templates. More info about mustache. target https:/youAlertproxy:8100/alert/kafka-ms forward request to http://awx.uni.bn/api/v2/job_templates/108/launch/ ... target https:/youAlertproxy:8100/alert/tlg-itretail forward message to telegram between telegram http api.
All targets load dynamicaly, you not need restart application if targets.json is changed. example tagrets.json
{
"targets": {
"kafka-ms": {
"UrlTemplate": "http://awx.uni.bn/api/v2/job_templates/108/launch/",
"Bodytemplate": "{\"ask_inventory_on_launch\": false,\"can_start_without_user_input\": true,\"defaults\": {\"extra_vars\": \"\",\"inventory\": {\"id\": 3,\"name\": \"FirstInventory\"}},\"survey_enabled\": false,\"variables_needed_to_start\": [],\"node_templates_missing\": [],\"node_prompts_rejected\": [],\"job_template_data\": {\"id\": 108,\"description\": \"KAFKA-SERVICES-CHECK-RUN\",\"name\": \"KAFKA-SERVICES-CHECK-RUN\"}}",
"headers": {
"Accept-Encoding": "gzip,deflate",
"authorization": "Basic Yneneulewxo"
}
},
"tlg-itretail": {
"UrlTemplate": "https://api.telegram.org/botBOT-TOKEN/sendMessage",
"Bodytemplate": "{\"chat_id\": \"-CHAT-ID\", \"text\": \"{{emoji}}<b>ALERT {{status}}</b>\n<code>Instance : {{labels.instance}}\nalert name : {{labels.alertname}}\njob : {{labels.job}}</code>\", \"disable_notification\": false,\"parse_mode\":\"HTML\"}",
"headers": {
"Accept-Encoding": "gzip,deflate"
},
"firingEmoji": "\\uD83E\\uDD14",
"resolvingEmoji": "\uD83D\uDE42"
}
}
}
AlertProxy work only with basic authorization. Example user.json
[
{
"Id":1,
"FirstName":"Test",
"LastName":"User",
"Username":"test",
"Password":"test"
}
]
example:
{
"Serilog": {
"Using": [
"Serilog.Sinks.Console",
"Serilog.Sinks.File"
],
"MinimumLevel": {
"Default": "Information",
"Override": {
"Microsoft": "Information",
"System": "Information"
}
},
"Enrich": [
"WithThreadId",
"WithClientIp",
"WithClientAgent"
],
"WriteTo": [
{
"Name": "Console",
"Args": {
"outputTemplate": "{Timestamp:dd-MM-yyyy HH:mm:ss} [{Level:u3}] [{ThreadId}] [{TraceId:l}] {ClientIp} {ClientAgent} {Message}{NewLine}{Exception}"
}
},
{
"Name": "File",
"Args": {
"outputTemplate": "{Timestamp:dd-MM-yyyy HH:mm:ss} [{Level:u3}] [{ThreadId}] [{TraceId:l} {ClientIp} {ClientAgent}] {Message}{NewLine}{Exception}",
"path": "./Logs/app.log",
"rollOnFileSizeLimit": true,
"fileSizeLimitBytes": "20971520"
}
}
]
}
}
- name: 'auto-check-run-kafka-ms'
webhook_configs:
- url: 'https://YouAlertProxy:8100/alert/kafka-ms'
http_config:
basic_auth:
username: 'test'
password: 'test'
tls_config:
insecure_skip_verify: true