[{"data":1,"prerenderedAt":509},["ShallowReactive",2],{"\u002Ffeatures\u002Falerting\u002Fnotifications-navigation":3,"\u002Ffeatures\u002Falerting\u002Fnotifications":134},[4,8,28,38,52,70,74,78,88,92,96,100,104,108,112,116],{"title":5,"path":6,"stem":7},"Get started","\u002Ffeatures","features\u002Findex",{"title":9,"closed":10,"path":11,"stem":12,"children":13,"page":-1},"Traces",true,"\u002Ffeatures\u002Ftraces","features\u002F01.traces\u002Findex",[14,16,20,24],{"title":15,"path":11,"stem":12},"Introduction",{"title":17,"path":18,"stem":19},"Grouping & systems","\u002Ffeatures\u002Ftraces\u002Fgrouping","features\u002F01.traces\u002Fgrouping",{"title":21,"path":22,"stem":23},"Querying spans","\u002Ffeatures\u002Ftraces\u002Fquerying-spans","features\u002F01.traces\u002Fquerying-spans",{"title":25,"path":26,"stem":27},"Querying traces","\u002Ffeatures\u002Ftraces\u002Fquerying-traces","features\u002F01.traces\u002Fquerying-traces",{"title":29,"closed":10,"path":30,"stem":31,"children":32,"page":-1},"Logs","\u002Ffeatures\u002Flogs","features\u002F02.logs\u002Findex",[33,34],{"title":15,"path":30,"stem":31},{"title":35,"path":36,"stem":37},"Grouping rules","\u002Ffeatures\u002Flogs\u002Fgrouping","features\u002F02.logs\u002Fgrouping",{"title":39,"closed":10,"path":40,"stem":41,"children":42,"page":-1},"Metrics","\u002Ffeatures\u002Fmetrics","features\u002F03.metrics\u002Findex",[43,44,48],{"title":15,"path":40,"stem":41},{"title":45,"path":46,"stem":47},"Querying","\u002Ffeatures\u002Fmetrics\u002Fquerying","features\u002F03.metrics\u002F02.querying",{"title":49,"path":50,"stem":51},"PromQL compat","\u002Ffeatures\u002Fmetrics\u002Fpromql-compat","features\u002F03.metrics\u002F03.promql-compat",{"title":53,"closed":10,"path":54,"stem":55,"children":56,"page":-1},"Alerting","\u002Ffeatures\u002Falerting","features\u002F04.alerting\u002Findex",[57,58,62,66],{"title":15,"path":54,"stem":55},{"title":59,"path":60,"stem":61},"Error monitors","\u002Ffeatures\u002Falerting\u002Ferror-monitors","features\u002F04.alerting\u002Ferror-monitors",{"title":63,"path":64,"stem":65},"Metric monitors","\u002Ffeatures\u002Falerting\u002Fmetric-monitors","features\u002F04.alerting\u002Fmetric-monitors",{"title":67,"path":68,"stem":69},"Notifications","\u002Ffeatures\u002Falerting\u002Fnotifications","features\u002F04.alerting\u002Fnotifications",{"title":71,"path":72,"stem":73},"Searching","\u002Ffeatures\u002Fsearching","features\u002F04.searching",{"title":75,"path":76,"stem":77},"Chart annotations","\u002Ffeatures\u002Fannotations","features\u002F05.annotations",{"title":79,"path":80,"stem":81,"children":82,"closed":10},"Dashboards","\u002Ffeatures\u002Fdashboards","features\u002F06.dashboards\u002F01.index",[83,84],{"title":79,"path":80,"stem":81},{"title":85,"path":86,"stem":87},"YAML Templates","\u002Ffeatures\u002Fdashboards\u002Fyaml","features\u002F06.dashboards\u002F02.yaml",{"title":89,"path":90,"stem":91},"Transformations","\u002Ffeatures\u002Ftransformations","features\u002F07.transformations",{"title":93,"path":94,"stem":95},"Service graph","\u002Ffeatures\u002Fservice-graph","features\u002F08.service-graph",{"title":97,"path":98,"stem":99},"Grafana integration","\u002Ffeatures\u002Fgrafana","features\u002F09.grafana",{"title":101,"path":102,"stem":103},"Data fixtures","\u002Ffeatures\u002Ffixtures","features\u002F10.fixtures",{"title":105,"path":106,"stem":107},"JavaScript Source Maps","\u002Ffeatures\u002Fsourcemaps","features\u002F11.sourcemaps",{"title":109,"path":110,"stem":111},"MCP Server","\u002Ffeatures\u002Fmcp","features\u002F12.mcp",{"title":113,"path":114,"stem":115},"Observability as Code","\u002Ffeatures\u002Fobservability-as-code","features\u002F13.observability-as-code",{"title":117,"closed":10,"path":118,"stem":119,"children":120,"page":133},"SSO","\u002Ffeatures\u002Fsso","features\u002Fsso",[121,125,129],{"title":122,"path":123,"stem":124},"Google","\u002Ffeatures\u002Fsso\u002Fgoogle","features\u002Fsso\u002F01.google",{"title":126,"path":127,"stem":128},"Okta","\u002Ffeatures\u002Fsso\u002Fokta","features\u002Fsso\u002F02.okta",{"title":130,"path":131,"stem":132},"Keycloak","\u002Ffeatures\u002Fsso\u002Fkeycloak","features\u002Fsso\u002F03.keycloak",false,{"page":135,"surround":504},{"id":136,"title":67,"body":137,"description":493,"extension":494,"image":495,"meta":496,"navigation":10,"path":68,"seo":502,"stem":69,"surround_disabled":133,"__hash__":503},"features\u002Ffeatures\u002F04.alerting\u002Fnotifications.md",{"type":138,"value":139,"toc":485},"minimark",[140,149,158,163,166,169,177,181,192,195,275,280,290,295,301,306,312,317,323,327,330,335,397,402,458,461,465,477],[141,142,143,144,148],"p",{},"Notification channels define where alerts are delivered and under what conditions. You can attach multiple channels to a single monitor and use condition expressions to route alerts selectively — for example, sending all alerts to a general channel but routing ",[145,146,147],"code",{},"URGENT"," monitors to PagerDuty.",[150,151,152,153],"video",{"autoPlay":10,"loop":10,"muted":10,"playsInline":10},"\n  ",[154,155],"source",{"src":156,"type":157},"\u002Ffeatures\u002Falerting\u002Falerting-notification-channels.mp4","video\u002Fmp4",[159,160,162],"h2",{"id":161},"channels","Channels",[164,165],"br",{},[167,168],"alerting-channels-grid",{},[141,170,171,172,176],{},"Create a channel via ",[173,174,175],"strong",{},"Alerting → Channels → New channel",". Select the channel type, fill in the connection details, and optionally add a routing condition to filter which alerts it receives.",[159,178,180],{"id":179},"channel-conditions","Channel conditions",[141,182,183,184,191],{},"When creating a channel, you can specify a condition expression to filter which alerts it receives. Conditions are written in the ",[185,186,190],"a",{"href":187,"rel":188},"https:\u002F\u002Fexpr-lang.org\u002Fdocs\u002Flanguage-definition",[189],"nofollow","Expr"," language.",[141,193,194],{},"In addition to Expr's built-in functions, Uptrace provides:",[196,197,198,211],"table",{},[199,200,201],"thead",{},[202,203,204,208],"tr",{},[205,206,207],"th",{},"Function",[205,209,210],{},"Returns",[212,213,214,225,235,252,262],"tbody",{},[202,215,216,222],{},[217,218,219],"td",{},[145,220,221],{},"monitorName() string",[217,223,224],{},"The monitor name.",[202,226,227,232],{},[217,228,229],{},[145,230,231],{},"alertName() string",[217,233,234],{},"The alert name.",[202,236,237,242],{},[217,238,239],{},[145,240,241],{},"alertType() string",[217,243,244,247,248,251],{},[145,245,246],{},"\"error\""," or ",[145,249,250],{},"\"metric\"",".",[202,253,254,259],{},[217,255,256],{},[145,257,258],{},"attr(key string) string",[217,260,261],{},"The value of an alert attribute.",[202,263,264,269],{},[217,265,266],{},[145,267,268],{},"hasAttr(key string) bool",[217,270,271,274],{},[145,272,273],{},"true"," if the attribute exists on the alert.",[141,276,277],{},[173,278,279],{},"Route only prod alerts to a Slack channel:",[281,282,287],"pre",{"className":283,"code":285,"language":286},[284],"language-text","attr(\"deployment_environment\") == \"prod\"\n","text",[145,288,285],{"__ignoreMap":289},"",[141,291,292],{},[173,293,294],{},"Route only prod hosts to PagerDuty:",[281,296,299],{"className":297,"code":298,"language":286},[284],"attr(\"host_name\") startsWith \"prod-\"\n",[145,300,298],{"__ignoreMap":289},[141,302,303],{},[173,304,305],{},"Route only URGENT monitors:",[281,307,310],{"className":308,"code":309,"language":286},[284],"monitorName() contains \"URGENT\"\n",[145,311,309],{"__ignoreMap":289},[141,313,314],{},[173,315,316],{},"Route all metric alerts to one channel, all error alerts to another:",[281,318,321],{"className":319,"code":320,"language":286},[284],"alertType() == \"metric\"\n",[145,322,320],{"__ignoreMap":289},[159,324,326],{"id":325},"notification-frequency","Notification frequency",[141,328,329],{},"On the first occurrence, Uptrace creates an alert and sends a notification immediately. For ongoing occurrences, Uptrace uses an adaptive interval that increases over time to reduce alert fatigue.",[141,331,332,334],{},[173,333,63],{}," — interval starts at 15 minutes and doubles every 3 notifications. Maximum is 24 hours.",[196,336,337,347],{},[199,338,339],{},[202,340,341,344],{},[205,342,343],{},"Notifications sent",[205,345,346],{},"Interval",[212,348,349,357,365,373,381,389],{},[202,350,351,354],{},[217,352,353],{},"1–3",[217,355,356],{},"15 minutes",[202,358,359,362],{},[217,360,361],{},"4–6",[217,363,364],{},"30 minutes",[202,366,367,370],{},[217,368,369],{},"7–9",[217,371,372],{},"1 hour",[202,374,375,378],{},[217,376,377],{},"10–12",[217,379,380],{},"2 hours",[202,382,383,386],{},[217,384,385],{},"...",[217,387,388],{},"doubles every 3",[202,390,391,394],{},[217,392,393],{},"max",[217,395,396],{},"24 hours",[141,398,399,401],{},[173,400,59],{}," — interval starts at 1 hour and doubles every 2 notifications. Maximum is 1 week.",[196,403,404,412],{},[199,405,406],{},[202,407,408,410],{},[205,409,343],{},[205,411,346],{},[212,413,414,421,428,436,444,451],{},[202,415,416,419],{},[217,417,418],{},"1–2",[217,420,372],{},[202,422,423,426],{},[217,424,425],{},"3–4",[217,427,380],{},[202,429,430,433],{},[217,431,432],{},"5–6",[217,434,435],{},"4 hours",[202,437,438,441],{},[217,439,440],{},"7–8",[217,442,443],{},"8 hours",[202,445,446,448],{},[217,447,385],{},[217,449,450],{},"doubles every 2",[202,452,453,455],{},[217,454,393],{},[217,456,457],{},"1 week",[141,459,460],{},"When an alert closes, Uptrace sends a recovery notification immediately. The total number of notifications is not limited — a metric monitor that never recovers will notify every 24 hours indefinitely.",[159,462,464],{"id":463},"email-notifications","Email notifications",[466,467,469],"alert",{"type":468},"info",[141,470,471,472,476],{},"Relevant for the ",[185,473,475],{"href":474},"\u002Fget\u002Fhosted","self-hosted version"," only.",[141,478,479,480,484],{},"To receive email notifications in Uptrace Community, users must have correct email addresses configured and the ",[185,481,483],{"href":482},"\u002Fget\u002Fhosted\u002Fconfig#email-configuration","mailer option"," must be enabled in the Uptrace config file.",{"title":289,"searchDepth":486,"depth":487,"links":488},4,2,[489,490,491,492],{"id":161,"depth":487,"text":162},{"id":179,"depth":487,"text":180},{"id":325,"depth":487,"text":326},{"id":463,"depth":487,"text":464},"Configure Uptrace notification channels to receive alerts via Slack, PagerDuty, Microsoft Teams, Telegram, email, webhooks, and more. Control routing with Expr conditions.","md",null,{"readingTime":497},{"text":498,"minutes":499,"time":500,"words":501},"2 min read",1.47,88200,294,{"title":67,"description":493},"jSc8CW5nqvGPhrG6pwR8864tNAM_hdmxQlZzh5Mi_bU",[505,507],{"title":63,"path":64,"stem":65,"description":506,"children":-1},"Create metric monitors in Uptrace to alert on CPU, disk, network, span latency, error rates, and log volume using YAML-defined thresholds and rolling evaluation windows.",{"title":71,"path":72,"stem":73,"description":508,"children":-1},"Search spans and logs using natural syntax with word filters, AND OR pipes, quoted phrases, and scoped field operators.",1780666755255]