Skip to content

Commit b50079e

Browse files
Merge pull request #324 from DaniilPoiarkov/develop
release v1.4.3
2 parents 1263c8b + ed1ed28 commit b50079e

File tree

154 files changed

+1480
-1934
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

154 files changed

+1480
-1934
lines changed

Directory.Packages.props

Lines changed: 39 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -3,74 +3,74 @@
33
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
44
</PropertyGroup>
55
<ItemGroup>
6-
<PackageVersion Include="Azure.Identity" Version="1.14.2" />
6+
<PackageVersion Include="Azure.Identity" Version="1.16.0" />
77
<PackageVersion Include="AspNetCore.HealthChecks.CosmosDb" Version="9.0.0" />
88
<PackageVersion Include="AspNetCore.HealthChecks.UI.Core" Version="9.0.0" />
99
<PackageVersion Include="AspNetCore.HealthChecks.UI.Client" Version="9.0.0" />
1010
<PackageVersion Include="Asp.Versioning.Mvc" Version="8.1.0" />
1111
<PackageVersion Include="Asp.Versioning.Mvc.ApiExplorer" Version="8.1.0" />
12-
<PackageVersion Include="Newtonsoft.Json" Version="13.0.3" />
12+
<PackageVersion Include="Newtonsoft.Json" Version="13.0.4" />
1313
<PackageVersion Include="Serilog" Version="4.3.0" />
1414
<PackageVersion Include="Serilog.AspNetCore" Version="9.0.0" />
1515
<PackageVersion Include="Serilog.Sinks.ApplicationInsights" Version="4.0.0" />
1616
<PackageVersion Include="Serilog.Sinks.Async" Version="2.1.0" />
17-
<PackageVersion Include="Polly" Version="8.6.2" />
17+
<PackageVersion Include="Polly" Version="8.6.3" />
1818
<PackageVersion Include="Polly.Contrib.WaitAndRetry" Version="1.1.1" />
1919
<PackageVersion Include="MediatR" Version="12.4.1" />
2020
<PackageVersion Include="MediatR.Contracts" Version="2.0.1" />
2121
<PackageVersion Include="Microsoft.ApplicationInsights" Version="2.23.0" />
2222
<PackageVersion Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.23.0" />
23-
<PackageVersion Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="9.0.8" />
24-
<PackageVersion Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="9.0.8" />
25-
<PackageVersion Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="9.0.8" />
26-
<PackageVersion Include="Microsoft.AspNetCore.OpenApi" Version="9.0.8" />
27-
<PackageVersion Include="Microsoft.Extensions.Configuration" Version="9.0.8" />
28-
<PackageVersion Include="Microsoft.Extensions.Configuration.Abstractions" Version="9.0.8" />
29-
<PackageVersion Include="Microsoft.Extensions.Configuration.Binder" Version="9.0.8" />
30-
<PackageVersion Include="Microsoft.Extensions.Http.Resilience" Version="9.7.0" />
31-
<PackageVersion Include="Microsoft.Extensions.Http.Polly" Version="9.0.8" />
32-
<PackageVersion Include="Microsoft.Extensions.Options" Version="9.0.8" />
33-
<PackageVersion Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="9.0.8" />
34-
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="9.0.8" />
35-
<PackageVersion Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="9.0.8" />
36-
<PackageVersion Include="Microsoft.Extensions.Localization" Version="9.0.8" />
37-
<PackageVersion Include="Microsoft.Extensions.Localization.Abstractions" Version="9.0.8" />
38-
<PackageVersion Include="Microsoft.Extensions.Hosting.Abstractions" Version="9.0.8" />
39-
<PackageVersion Include="Microsoft.Extensions.Caching.Abstractions" Version="9.0.8" />
40-
<PackageVersion Include="Microsoft.Extensions.Caching.Memory" Version="9.0.8" />
41-
<PackageVersion Include="Microsoft.Extensions.Caching.StackExchangeRedis" Version="9.0.8" />
42-
<PackageVersion Include="Microsoft.Identity.Web" Version="3.12.0" />
43-
<PackageVersion Include="Microsoft.IdentityModel.Tokens" Version="8.13.0" />
44-
<PackageVersion Include="Microsoft.Azure.Cosmos" Version="3.52.1" />
45-
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="9.0.8" />
46-
<PackageVersion Include="Microsoft.EntityFrameworkCore.Cosmos" Version="9.0.8" />
23+
<PackageVersion Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="9.0.9" />
24+
<PackageVersion Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="9.0.9" />
25+
<PackageVersion Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="9.0.9" />
26+
<PackageVersion Include="Microsoft.AspNetCore.OpenApi" Version="9.0.9" />
27+
<PackageVersion Include="Microsoft.Extensions.Configuration" Version="9.0.9" />
28+
<PackageVersion Include="Microsoft.Extensions.Configuration.Abstractions" Version="9.0.9" />
29+
<PackageVersion Include="Microsoft.Extensions.Configuration.Binder" Version="9.0.9" />
30+
<PackageVersion Include="Microsoft.Extensions.Http.Resilience" Version="9.9.0" />
31+
<PackageVersion Include="Microsoft.Extensions.Http.Polly" Version="9.0.9" />
32+
<PackageVersion Include="Microsoft.Extensions.Options" Version="9.0.9" />
33+
<PackageVersion Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="9.0.9" />
34+
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="9.0.9" />
35+
<PackageVersion Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="9.0.9" />
36+
<PackageVersion Include="Microsoft.Extensions.Localization" Version="9.0.9" />
37+
<PackageVersion Include="Microsoft.Extensions.Localization.Abstractions" Version="9.0.9" />
38+
<PackageVersion Include="Microsoft.Extensions.Hosting.Abstractions" Version="9.0.9" />
39+
<PackageVersion Include="Microsoft.Extensions.Caching.Abstractions" Version="9.0.9" />
40+
<PackageVersion Include="Microsoft.Extensions.Caching.Memory" Version="9.0.9" />
41+
<PackageVersion Include="Microsoft.Extensions.Caching.StackExchangeRedis" Version="9.0.9" />
42+
<PackageVersion Include="Microsoft.Identity.Web" Version="3.14.1" />
43+
<PackageVersion Include="Microsoft.IdentityModel.Tokens" Version="8.14.0" />
44+
<PackageVersion Include="Microsoft.Azure.Cosmos" Version="3.53.1" />
45+
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="9.0.9" />
46+
<PackageVersion Include="Microsoft.EntityFrameworkCore.Cosmos" Version="9.0.9" />
4747
<PackageVersion Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.22.1" />
48-
<PackageVersion Include="System.IdentityModel.Tokens.Jwt" Version="8.13.0" />
48+
<PackageVersion Include="System.IdentityModel.Tokens.Jwt" Version="8.14.0" />
4949
<PackageVersion Include="Quartz" Version="3.15.0" />
5050
<PackageVersion Include="Quartz.Extensions.DependencyInjection" Version="3.15.0" />
5151
<PackageVersion Include="Quartz.Extensions.Hosting" Version="3.15.0" />
52-
<PackageVersion Include="Telegram.Bot" Version="22.6.0" />
52+
<PackageVersion Include="Telegram.Bot" Version="22.7.2" />
5353
<PackageVersion Include="Scrutor" Version="6.1.0" />
54-
<PackageVersion Include="MiniExcel" Version="1.41.3" />
55-
<PackageVersion Include="ScottPlot" Version="5.0.55" />
54+
<PackageVersion Include="MiniExcel" Version="1.41.4" />
55+
<PackageVersion Include="ScottPlot" Version="5.0.56" />
5656
<PackageVersion Include="SkiaSharp.NativeAssets.Linux.NoDependencies" Version="3.116.1" />
5757
<PackageVersion Include="FluentValidation" Version="12.0.0" />
5858
<PackageVersion Include="FluentValidation.DependencyInjectionExtensions" Version="12.0.0" />
59-
<PackageVersion Include="Google.Apis.Auth" Version="1.70.0" />
59+
<PackageVersion Include="Google.Apis.Auth" Version="1.71.0" />
6060
<PackageVersion Include="Google.Apis.Sheets.v4" Version="1.70.0.3819" />
61-
<PackageVersion Include="Swashbuckle.AspNetCore" Version="9.0.3" />
61+
<PackageVersion Include="Swashbuckle.AspNetCore" Version="9.0.4" />
6262
<PackageVersion Include="xunit" Version="2.9.3" />
63-
<PackageVersion Include="xunit.runner.visualstudio" Version="3.1.3" />
63+
<PackageVersion Include="xunit.runner.visualstudio" Version="3.1.4" />
6464
<PackageVersion Include="coverlet.collector" Version="6.0.4" />
6565
<PackageVersion Include="Bogus" Version="35.6.3" />
6666
<PackageVersion Include="FluentAssertions" Version="[7.0.0]" />
6767
<PackageVersion Include="Meziantou.Xunit.ParallelTestFramework" Version="2.3.0" />
6868
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.14.1" />
6969
<PackageVersion Include="NSubstitute" Version="5.3.0" />
70-
<PackageVersion Include="Testcontainers.CosmosDb" Version="4.6.0" />
71-
<PackageVersion Include="Testcontainers.Redis" Version="4.6.0" />
72-
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Testing" Version="9.0.8" />
73-
<PackageVersion Include="ZiggyCreatures.FusionCache" Version="2.3.0" />
74-
<PackageVersion Include="ZiggyCreatures.FusionCache.Serialization.NewtonsoftJson" Version="2.3.0" />
70+
<PackageVersion Include="Testcontainers.CosmosDb" Version="4.7.0" />
71+
<PackageVersion Include="Testcontainers.Redis" Version="4.7.0" />
72+
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Testing" Version="9.0.9" />
73+
<PackageVersion Include="ZiggyCreatures.FusionCache" Version="2.4.0" />
74+
<PackageVersion Include="ZiggyCreatures.FusionCache.Serialization.NewtonsoftJson" Version="2.4.0" />
7575
</ItemGroup>
7676
</Project>

docker/docker-compose.override.yaml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
version: '3.9'
2-
31
# Create a copy of this file in this directory
42
# Give it a name docker-compose.local.yaml
53
# It will be ignored by .gitignore

docker/docker-compose.yaml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
version: '3.9'
2-
31
services:
42
cosmosdb:
53
image: mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:latest

infrastructure/main.tf

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ module "database" {
6969
database_throughput = var.database_throughput
7070
container_throughput = var.container_throughput
7171
failover_priority = var.failover_priority
72+
ip_range_filter = var.db_ip_range_filter
7273

7374
container_names = [
7475
var.cosmos_container
@@ -111,6 +112,7 @@ module "web-app" {
111112
google_credentials = file(var.google_credentials_path)
112113
azuread_client_id = module.entraid.app_client_id
113114
tenant_id = local.tenant_id
115+
log_analytics_workspace_id = module.monitoring.log_analytics_workspace_id
114116

115117
depends_on = [
116118
azurerm_resource_group.resource_group_main,

infrastructure/modules/alerts/main.tf

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,3 +182,73 @@ resource "azurerm_monitor_scheduled_query_rules_alert" "failed_dependency_calls_
182182

183183
tags = local.tags
184184
}
185+
186+
resource "azurerm_monitor_scheduled_query_rules_alert" "failed_inbox_messages" {
187+
name = "Failed to process inbox messages"
188+
location = var.location
189+
data_source_id = var.data_source_id
190+
severity = var.severity
191+
resource_group_name = local.rg_name
192+
frequency = local.frequency
193+
time_window = local.time_window
194+
195+
query = <<-QUERY
196+
traces
197+
| where severityLevel == 3 and message contains 'Failed to process inbox message'
198+
QUERY
199+
200+
action {
201+
action_group = [
202+
azurerm_monitor_action_group.monitor_action_group.id
203+
]
204+
}
205+
206+
trigger {
207+
operator = "GreaterThanOrEqual"
208+
threshold = local.threashold
209+
}
210+
211+
tags = local.tags
212+
}
213+
214+
resource "azurerm_log_analytics_workspace" "log_analytics_workspace" {
215+
location = var.location
216+
resource_group_name = local.rg_name
217+
name = "common-alerts-log"
218+
tags = local.tags
219+
}
220+
221+
data "azurerm_monitor_diagnostic_categories" "diagnostic_categories" {
222+
resource_id = azurerm_logic_app_workflow.logic_app.id
223+
}
224+
225+
resource "azurerm_monitor_diagnostic_setting" "app_diagnostic" {
226+
name = "logic-send-tg-alert-diagnostic-logs"
227+
target_resource_id = azurerm_logic_app_workflow.logic_app.id
228+
log_analytics_workspace_id = azurerm_log_analytics_workspace.log_analytics_workspace.id
229+
230+
dynamic "enabled_log" {
231+
for_each = toset(data.azurerm_monitor_diagnostic_categories.diagnostic_categories.log_category_types)
232+
233+
content {
234+
category = enabled_log.value
235+
}
236+
}
237+
238+
dynamic "enabled_metric" {
239+
for_each = toset(data.azurerm_monitor_diagnostic_categories.diagnostic_categories.metrics)
240+
241+
content {
242+
category = enabled_metric.value
243+
}
244+
}
245+
246+
# Ignore changes to prevent configuration removal due to azurerm_monitor_diagnostic_categories behavior
247+
# Remove when issue with terraform data will be fixed.
248+
lifecycle {
249+
ignore_changes = [
250+
enabled_log,
251+
metric
252+
]
253+
}
254+
}

infrastructure/modules/database/main.tf

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
resource "azurerm_cosmosdb_account" "cosmosdb" {
2-
name = "cosmos-${var.app_name}-${var.environment}"
3-
location = var.location
4-
resource_group_name = var.resource_group_name
5-
kind = var.cosmos_kind
6-
offer_type = var.cosmos_offer_type
7-
free_tier_enabled = var.cosmos_free_tier
2+
name = "cosmos-${var.app_name}-${var.environment}"
3+
location = var.location
4+
resource_group_name = var.resource_group_name
5+
kind = var.cosmos_kind
6+
offer_type = var.cosmos_offer_type
7+
free_tier_enabled = var.cosmos_free_tier
8+
ip_range_filter = var.ip_range_filter
9+
local_authentication_disabled = true
10+
access_key_metadata_writes_enabled = false
811

912
geo_location {
1013
location = var.location
@@ -52,5 +55,4 @@ resource "azurerm_cosmosdb_sql_container" "container" {
5255
database_name = azurerm_cosmosdb_sql_database.database.name
5356
partition_key_paths = var.partition_paths
5457
partition_key_version = var.partition_key_version
55-
# throughput = var.container_throughput
5658
}

infrastructure/modules/database/variables.tf

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,3 +67,9 @@ variable "container_throughput" {
6767
description = "Container throughput"
6868
type = number
6969
}
70+
71+
variable "ip_range_filter" {
72+
description = "Allowed IP addresses"
73+
type = list(string)
74+
sensitive = true
75+
}

infrastructure/modules/monitoring/outputs.tf

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,7 @@ output "app_insights_connection_string" {
77
value = azurerm_application_insights.app_insights.connection_string
88
description = "Application insights conenction string"
99
}
10+
11+
output "log_analytics_workspace_id" {
12+
value = azurerm_log_analytics_workspace.log_analytics_workspace.id
13+
}

infrastructure/modules/webapp/main.tf

Lines changed: 44 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ resource "azurerm_linux_web_app" "app" {
1616
resource_group_name = var.resource_group_name
1717
name = "${var.app_name}-${var.environment}-app"
1818
location = var.location
19-
19+
https_only = true
2020
site_config {
2121
always_on = (
2222
var.service_plan_sku_name != "F1" &&
@@ -30,8 +30,9 @@ resource "azurerm_linux_web_app" "app" {
3030
docker_image_name = var.image_name
3131
}
3232

33-
api_definition_url = "https://${var.app_name}-${var.environment}-app.azurewebsites.net/swagger/index.html"
34-
ftps_state = "FtpsOnly"
33+
api_definition_url = "https://${var.app_name}-${var.environment}-app.azurewebsites.net/swagger/index.html"
34+
ftps_state = "FtpsOnly"
35+
minimum_tls_version = "1.3"
3536
}
3637

3738
logs {
@@ -41,6 +42,11 @@ resource "azurerm_linux_web_app" "app" {
4142
retention_in_mb = 35
4243
}
4344
}
45+
application_logs {
46+
file_system_level = "Warning"
47+
}
48+
detailed_error_messages = true
49+
failed_request_tracing = true
4450
}
4551

4652
app_settings = {
@@ -103,3 +109,38 @@ resource "azurerm_linux_web_app" "app" {
103109
]
104110
}
105111
}
112+
113+
data "azurerm_monitor_diagnostic_categories" "diagnostic_categories" {
114+
resource_id = azurerm_linux_web_app.app.id
115+
}
116+
117+
resource "azurerm_monitor_diagnostic_setting" "app_diagnostic" {
118+
name = "${var.app_name}-${var.environment}-diagnostic-logs"
119+
target_resource_id = azurerm_linux_web_app.app.id
120+
log_analytics_workspace_id = var.log_analytics_workspace_id
121+
122+
dynamic "enabled_log" {
123+
for_each = toset(data.azurerm_monitor_diagnostic_categories.diagnostic_categories.log_category_types)
124+
125+
content {
126+
category = enabled_log.value
127+
}
128+
}
129+
130+
dynamic "enabled_metric" {
131+
for_each = toset(data.azurerm_monitor_diagnostic_categories.diagnostic_categories.metrics)
132+
133+
content {
134+
category = enabled_metric.value
135+
}
136+
}
137+
138+
# Ignore changes to prevent configuration removal due to azurerm_monitor_diagnostic_categories behavior
139+
# Remove when issue with terraform data will be fixed.
140+
lifecycle {
141+
ignore_changes = [
142+
enabled_log,
143+
metric
144+
]
145+
}
146+
}

infrastructure/modules/webapp/outputs.tf

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,7 @@ output "app_principal_id" {
55
output "app_hostname" {
66
value = azurerm_linux_web_app.app.default_hostname
77
}
8+
9+
output "app_id" {
10+
value = azurerm_linux_web_app.app.id
11+
}

0 commit comments

Comments
 (0)